From mboxrd@z Thu Jan 1 00:00:00 1970 Delivery-date: Thu, 04 Dec 2025 14:18:45 +0100 Received: from metis.whiteo.stw.pengutronix.de ([2a0a:edc0:2:b01:1d::104]) by lore.white.stw.pengutronix.de with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vR9EL-007sAk-2C for lore@lore.pengutronix.de; Thu, 04 Dec 2025 14:18:45 +0100 Received: from localhost ([127.0.0.1] helo=metis.whiteo.stw.pengutronix.de) by metis.whiteo.stw.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1vR9EL-0003qQ-Gz; Thu, 04 Dec 2025 14:18:45 +0100 Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.whiteo.stw.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1vR9Ai-0007b2-8u; Thu, 04 Dec 2025 14:15:00 +0100 Received: from dude05.red.stw.pengutronix.de ([2a0a:edc0:0:1101:1d::54]) by drehscheibe.grey.stw.pengutronix.de with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vR9Ah-003xbA-2R; Thu, 04 Dec 2025 14:14:59 +0100 Received: from mol by dude05.red.stw.pengutronix.de with local (Exim 4.98.2) (envelope-from ) id 1vR9Ah-00000009DmA-2xr7; Thu, 04 Dec 2025 14:14:59 +0100 From: Michael Olbrich To: ptxdist@pengutronix.de Date: Thu, 4 Dec 2025 14:14:59 +0100 Message-ID: <20251204131459.2197872-1-m.olbrich@pengutronix.de> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251121085127.3761419-2-s.pueschel@pengutronix.de> References: <20251121085127.3761419-2-s.pueschel@pengutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: Re: [ptxdist] [APPLIED] gst-libav1: fix avvideocompare element X-BeenThere: ptxdist@pengutronix.de X-Mailman-Version: 2.1.29 Precedence: list List-Id: PTXdist Development Mailing List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: ptxdist@pengutronix.de Cc: =?UTF-8?q?Sven=20P=C3=BCschel?= Sender: "ptxdist" X-SA-Exim-Connect-IP: 127.0.0.1 X-SA-Exim-Mail-From: ptxdist-bounces@pengutronix.de X-SA-Exim-Scanned: No (on metis.whiteo.stw.pengutronix.de); SAEximRunCond expanded to false Thanks, applied as d4d23c6383582b7370acee41db94983af1149703. Michael [sent from post-receive hook] On Thu, 04 Dec 2025 14:14:59 +0100, Sven Püschel wrote: > With the update to FFmpeg 8.0 the avvideocompare element from GStreamer > doesn't emit statistics anymore. Add a patch to fix the underlying > issue of missing colorimetry information. > > Fixes: 254f9c65f4dd ("ffmpeg: version bump 7.1.1 -> 8.0") > Signed-off-by: Sven Püschel > Message-Id: <20251121085127.3761419-2-s.pueschel@pengutronix.de> > [mol: adapt to new version 1.26.8] > Signed-off-by: Michael Olbrich > > diff --git a/patches/gst-libav-1.26.8/0001-gst-libav-avvidcmp-set-colorimetry-on-AVFrame.patch b/patches/gst-libav-1.26.8/0001-gst-libav-avvidcmp-set-colorimetry-on-AVFrame.patch > new file mode 100644 > index 000000000000..1a499537d68c > --- /dev/null > +++ b/patches/gst-libav-1.26.8/0001-gst-libav-avvidcmp-set-colorimetry-on-AVFrame.patch > @@ -0,0 +1,75 @@ > +From: =?UTF-8?q?Sven=20P=C3=BCschel?= > +Date: Fri, 14 Nov 2025 10:50:51 +0100 > +Subject: [PATCH] gst-libav: avvidcmp: set colorimetry on AVFrame > +MIME-Version: 1.0 > +Content-Type: text/plain; charset=UTF-8 > +Content-Transfer-Encoding: 8bit > + > +Set the colorimetry on AVFrame based on the GstVideoFrame values. > +This properly maps potential colorimetry information to libav. > + > +Furthermore this fixes the avvideocompare element when used with > +FFmpeg 8.0. When comparing video frames FFmpeg also uses the scale > +filter. This has been reworked to use a new API [1], which checks > +that the color primaries and transfer characteristics are not set > +to RESERVED, which is the default 0 value. This causes the ff_test_fmt > +function to fail which in turn causes the avvideocompare element to fail. > + > +The implementation is copied from gst_ffmpeg_videoinfo_to_context, but > +the color range has been adopted to also map the unknown range to > +unspecified, similar to how gst_ffmpeg_videoinfo_to_context maps > +AVCOL_RANGE_UNSPECIFIED to GST_VIDEO_COLOR_RANGE_UNKNOWN. > + > +This was tested with FFmpeg 8.0 and the following sample pipeline: > + > + gst-launch-1.0 videotestsrc num-buffers=100 \ > + ! video/x-raw,format=NV12 \ > + ! videobalance brightness=0.005 hue=0.005 \ > + ! avvideocompare method=psnr stats-file=- name=cmp \ > + ! fakesink videotestsrc ! video/x-raw,format=NV12 \ > + ! cmp. > + > +Without the patch it doesn't generate any stats output and when called > +with GST_DEBUG=3 it shows the following errors for each frame: > + > + Unsupported input (Operation not supported): > + fmt:nv12 csp:gbr prim:reserved trc:reserved -> fmt:yuv420p csp:unknown prim:reserved trc:reserved > + > +[1] https://github.com/FFmpeg/FFmpeg/commit/04ce01df0bb2d66e143bcfcea439afc2a1b8d96e > + > +Upstream-Status: Submitted [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10090] > +Signed-off-by: Sven Püschel > +--- > + ext/libav/gstavvidcmp.c | 19 +++++++++++++++++++ > + 1 file changed, 19 insertions(+) > + > +diff --git a/ext/libav/gstavvidcmp.c b/ext/libav/gstavvidcmp.c > +index 9fab0238935e..a5375e081a48 100644 > +--- a/ext/libav/gstavvidcmp.c > ++++ b/ext/libav/gstavvidcmp.c > +@@ -619,6 +619,25 @@ _fill_avpicture (GstFFMpegVidCmp * self, AVFrame * picture, > + picture->width = GST_VIDEO_FRAME_WIDTH (vframe); > + picture->height = GST_VIDEO_FRAME_HEIGHT (vframe); > + picture->format = self->pixfmt; > ++ > ++ picture->color_primaries = > ++ gst_video_color_primaries_to_iso (vframe->info.colorimetry.primaries); > ++ picture->color_trc = > ++ gst_video_transfer_function_to_iso (vframe->info.colorimetry.transfer); > ++ picture->colorspace = > ++ gst_video_color_matrix_to_iso (vframe->info.colorimetry.matrix); > ++ > ++ switch (vframe->info.colorimetry.range) { > ++ case GST_VIDEO_COLOR_RANGE_0_255: > ++ picture->color_range = AVCOL_RANGE_JPEG; > ++ break; > ++ case GST_VIDEO_COLOR_RANGE_16_235: > ++ picture->color_range = AVCOL_RANGE_MPEG; > ++ break; > ++ case GST_VIDEO_COLOR_RANGE_UNKNOWN: > ++ picture->color_range = AVCOL_RANGE_UNSPECIFIED; > ++ break; > ++ } > + } > + > + static GstFlowReturn > diff --git a/patches/gst-libav-1.26.8/series b/patches/gst-libav-1.26.8/series > new file mode 100644 > index 000000000000..93a96c1414e0 > --- /dev/null > +++ b/patches/gst-libav-1.26.8/series > @@ -0,0 +1,4 @@ > +# generated by git-ptx-patches > +#tag:base --start-number 1 > +0001-gst-libav-avvidcmp-set-colorimetry-on-AVFrame.patch > +# 4a2c6890c0534fedb7f6c1a8e71acbd7 - git-ptx-patches magic