[FFmpeg-devel] [PATCH] fate/png: add mDCv read and write test

Andreas Rheinhardt andreas.rheinhardt at outlook.com
Mon Jul 8 20:08:18 EEST 2024


Leo Izen:
> This test confirms that we can write mDCv chunks and read them back via
> the png decoder. It uses an HEVC conformance sample with this metadata
> as the base source for the side data in the frames.
> 
> Signed-off-by: Leo Izen <leo.izen at gmail.com>
> Reported-by: Jan Ekström <jeebjp at gmail.com>
> ---
>  tests/fate/image.mak    |  5 +++++
>  tests/ref/fate/png-mdcv | 22 ++++++++++++++++++++++
>  2 files changed, 27 insertions(+)
>  create mode 100644 tests/ref/fate/png-mdcv
> 
> diff --git a/tests/fate/image.mak b/tests/fate/image.mak
> index 753936ec20..ec2375f703 100644
> --- a/tests/fate/image.mak
> +++ b/tests/fate/image.mak
> @@ -416,6 +416,11 @@ FATE_PNG_PROBE-$(call ALLYES, LCMS2) += fate-png-icc-parse
>  fate-png-icc-parse: CMD = run ffprobe$(PROGSSUF)$(EXESUF) -show_frames \
>      -flags2 icc_profiles $(TARGET_SAMPLES)/png1/lena-int_rgb24.png
>  
> +FATE_PNG_TRANSCODE-$(call TRANSCODE, PNG HEVC, IMAGE2 HEVC IMAGE_PNG_PIPE) += fate-png-mdcv

Needs scale filter and PNG decoder (and maybe also the hevc parser).
Furthermore, the HEVC in "IMAGE2 HEVC IMAGE_PNG_PIPE" is ignored (see
TRANSCODE in tests/Makefile)

> +fate-png-mdcv: CMD = transcode hevc $(TARGET_SAMPLES)/hevc/hdr10_plus_h265_sample.hevc image2 \
> +    "-sws_flags +accurate_rnd+bitexact

Aren't these flags already set generically for transcode (via $FLAGS)?

 -pix_fmt rgb24 -vf scale -c png" "" \
> +    "-show_frames -show_entries frame=side_data_list -of flat"
> +
>  FATE_PNG-$(call DEMDEC, IMAGE2, PNG) += $(FATE_PNG)
>  FATE_PNG_PROBE-$(call DEMDEC, IMAGE2, PNG) += $(FATE_PNG_PROBE)
>  FATE_IMAGE_FRAMECRC += $(FATE_PNG-yes)
> diff --git a/tests/ref/fate/png-mdcv b/tests/ref/fate/png-mdcv
> new file mode 100644
> index 0000000000..b719152557
> --- /dev/null
> +++ b/tests/ref/fate/png-mdcv
> @@ -0,0 +1,22 @@
> +fc68fe6c8c72343b96d2695f6913995b *tests/data/fate/png-mdcv.image2
> +439248 tests/data/fate/png-mdcv.image2
> +#tb 0: 1/25
> +#media_type 0: video
> +#codec_id 0: rawvideo
> +#dimensions 0: 1280x720
> +#sar 0: 0/1
> +0,          0,          0,        1,  2764800, 0x2bfc7b42
> +frames.frame.0.side_data_list.side_data.0.side_data_type="Content light level metadata"
> +frames.frame.0.side_data_list.side_data.0.max_content=1000
> +frames.frame.0.side_data_list.side_data.0.max_average=200
> +frames.frame.0.side_data_list.side_data.1.side_data_type="Mastering display metadata"
> +frames.frame.0.side_data_list.side_data.1.red_x="13250/50000"
> +frames.frame.0.side_data_list.side_data.1.red_y="7500/50000"
> +frames.frame.0.side_data_list.side_data.1.green_x="34000/50000"
> +frames.frame.0.side_data_list.side_data.1.green_y="16000/50000"
> +frames.frame.0.side_data_list.side_data.1.blue_x="2/50000"
> +frames.frame.0.side_data_list.side_data.1.blue_y="0/50000"
> +frames.frame.0.side_data_list.side_data.1.white_point_x="15635/50000"
> +frames.frame.0.side_data_list.side_data.1.white_point_y="16450/50000"
> +frames.frame.0.side_data_list.side_data.1.min_luminance="50/10000"
> +frames.frame.0.side_data_list.side_data.1.max_luminance="10000000/10000"



More information about the ffmpeg-devel mailing list