From patchwork Fri Jan 26 14:09:17 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gyan Doshi X-Patchwork-Id: 45842 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1b0f:b0:199:de12:6fa6 with SMTP id ch15csp323617pzb; Fri, 26 Jan 2024 06:09:46 -0800 (PST) X-Google-Smtp-Source: AGHT+IH2rgskSlMaESv5/PN04lv+/eqliIENZaeWlSdvt5GTYOcHBisezNhUhCtEJPoiMhJszkn/ X-Received: by 2002:a17:906:ad4:b0:a31:8944:2cf6 with SMTP id z20-20020a1709060ad400b00a3189442cf6mr1140931ejf.8.1706278186546; Fri, 26 Jan 2024 06:09:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1706278186; cv=none; d=google.com; s=arc-20160816; b=MHjBfR6p/JnPJ/wdsmHkoijIEZ+ucRYJRrMV2imQKfRlh2kjChSFT4+UIkzneP+19f re4oXUSuLe6VNMaps7T70KeSb6bLW4ZELkHTTMEiZ+KVXiwyKVpoCZV3HIGlPbAbTc+F 1R42v5DyGf/KuOH0f4UhdEMFy3MO75kwu1uZHA9TTXnZWlCEXL86uxD+40iX58ZCvFG5 hDnNtBTZEkkl3ZZVkMkv7XKNimlLfODlRYTbR9RqRyxwqswDXAyrWF0kDZdpGEJz2uaV PwFPfeKwsQ2alF9V+UiO+zygicYx76gsizURGzobQg68AlYVOSwrOufk3ziSEbgOw7EA 0ZeA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :delivered-to; bh=sQXdW35fOAMEF2ZDyjtKIWQrn88zbZlI/G9xr3F0vD4=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=u/kWNe8t/3RGb+rzYermwRH0Q7E0ypLDdj3D73YAOlvu8J1NL2E/M7MUAHZufCQ9jq UoTSA8gYg99rbFbX6iT3acBQ/cw9Canq/+JhgQcmg+aH210g4dgWmJ79wjBhePpNV+AI s9yoxWLnRI/q4xknK89N2swqChTttC1KyaEuZMXdzFAfnSdRQGLOJunZ1MDRxcsuuTPd haWMXcKyWuhS9Y39mbvS6JpxGPD0aeW0krBa4lbCOZFC4f8CvyYasXSLLijAFOwdVpuq R2nRwK70DGOxcSn3q/AEhFC7c89feKzrZn5vqkxy/YfLZq1ABC/A86KtZtBz8FvAeLvL xCyw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id lg25-20020a170906f89900b00a317bb4f005si597939ejb.661.2024.01.26.06.09.46; Fri, 26 Jan 2024 06:09:46 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 25DD668D116; Fri, 26 Jan 2024 16:09:43 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mout-p-102.mailbox.org (mout-p-102.mailbox.org [80.241.56.152]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A686368CD88 for ; Fri, 26 Jan 2024 16:09:36 +0200 (EET) Received: from smtp202.mailbox.org (smtp202.mailbox.org [IPv6:2001:67c:2050:b231:465::202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-102.mailbox.org (Postfix) with ESMTPS id 4TM01p2fDFz9sp2 for ; Fri, 26 Jan 2024 15:09:34 +0100 (CET) From: Gyan Doshi To: ffmpeg-devel@ffmpeg.org Date: Fri, 26 Jan 2024 19:39:17 +0530 Message-Id: <20240126140917.11368-1-ffmpeg@gyani.pro> MIME-Version: 1.0 X-Rspamd-Queue-Id: 4TM01p2fDFz9sp2 Subject: [FFmpeg-devel] [PATCH] avfilter/buffersrc: limit link variance logs below debug loglevel X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: Vd6AF/6WSIgk The video param change check will print loglines below debug level for each frame which is different from the inlink parameters. This can spam the console. It is now printed at warning level once for each param change else it is kept at debug level. Partially addresses #10823 --- libavfilter/buffersrc.c | 40 +++++++++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/libavfilter/buffersrc.c b/libavfilter/buffersrc.c index afe69433b2..6e450ff6b7 100644 --- a/libavfilter/buffersrc.c +++ b/libavfilter/buffersrc.c @@ -49,10 +49,10 @@ typedef struct BufferSourceContext { unsigned nb_failed_requests; /* video only */ - int w, h; - enum AVPixelFormat pix_fmt; - enum AVColorSpace color_space; - enum AVColorRange color_range; + int w, h, prev_w, prev_h; + enum AVPixelFormat pix_fmt, prev_pix_fmt; + enum AVColorSpace color_space, prev_color_space; + enum AVColorRange color_range, prev_color_range; AVRational pixel_aspect; AVBufferRef *hw_frames_ctx; @@ -66,16 +66,30 @@ typedef struct BufferSourceContext { int eof; int64_t last_pts; + int link_delta, prev_delta; } BufferSourceContext; #define CHECK_VIDEO_PARAM_CHANGE(s, c, width, height, format, csp, range, pts)\ - if (c->w != width || c->h != height || c->pix_fmt != format ||\ - c->color_space != csp || c->color_range != range) {\ - av_log(s, AV_LOG_INFO, "filter context - w: %d h: %d fmt: %d csp: %s range: %s, incoming frame - w: %d h: %d fmt: %d csp: %s range: %s pts_time: %s\n",\ + c->link_delta = c->w != width || c->h != height || c->pix_fmt != format ||\ + c->color_space != csp || c->color_range != range;\ + c->prev_delta = c->prev_w != width || c->prev_h != height || c->prev_pix_fmt != format ||\ + c->prev_color_space != csp || c->prev_color_range != range;\ + if (c->link_delta) {\ + int loglevel = c->prev_delta ? AV_LOG_WARNING : AV_LOG_DEBUG;\ + av_log(s, loglevel, "Changing video frame properties on the fly is not supported by all filters.\n");\ + av_log(s, loglevel, "filter context - w: %d h: %d fmt: %d csp: %s range: %s, incoming frame - w: %d h: %d fmt: %d csp: %s range: %s pts_time: %s\n",\ c->w, c->h, c->pix_fmt, av_color_space_name(c->color_space), av_color_range_name(c->color_range),\ width, height, format, av_color_space_name(csp), av_color_range_name(range),\ av_ts2timestr(pts, &s->outputs[0]->time_base));\ - av_log(s, AV_LOG_WARNING, "Changing video frame properties on the fly is not supported by all filters.\n");\ + }\ + if (c->prev_delta) {\ + if (!c->link_delta)\ + av_log(s, AV_LOG_VERBOSE, "video frame properties congruent with link at pts_time: %s\n", av_ts2timestr(pts, &s->outputs[0]->time_base));\ + c->prev_w = width;\ + c->prev_h = height;\ + c->prev_pix_fmt = format;\ + c->prev_color_space = csp;\ + c->prev_color_range = range;\ } #define CHECK_AUDIO_PARAM_CHANGE(s, c, srate, layout, format, pts)\ @@ -111,12 +125,12 @@ int av_buffersrc_parameters_set(AVFilterContext *ctx, AVBufferSrcParameters *par switch (ctx->filter->outputs[0].type) { case AVMEDIA_TYPE_VIDEO: if (param->format != AV_PIX_FMT_NONE) { - s->pix_fmt = param->format; + s->pix_fmt = s->prev_pix_fmt = param->format; } if (param->width > 0) - s->w = param->width; + s->w = s->prev_w = param->width; if (param->height > 0) - s->h = param->height; + s->h = s->prev_h = param->height; if (param->sample_aspect_ratio.num > 0 && param->sample_aspect_ratio.den > 0) s->pixel_aspect = param->sample_aspect_ratio; if (param->frame_rate.num > 0 && param->frame_rate.den > 0) @@ -128,9 +142,9 @@ int av_buffersrc_parameters_set(AVFilterContext *ctx, AVBufferSrcParameters *par return AVERROR(ENOMEM); } if (param->color_space != AVCOL_SPC_UNSPECIFIED) - s->color_space = param->color_space; + s->color_space = s->prev_color_space = param->color_space; if (param->color_range != AVCOL_RANGE_UNSPECIFIED) - s->color_range = param->color_range; + s->color_range = s->prev_color_range = param->color_range; break; case AVMEDIA_TYPE_AUDIO: if (param->format != AV_SAMPLE_FMT_NONE) {