This is an automated email from the git hooks/post-receive script. Git pushed a commit to branch master in repository ffmpeg.
commit 73d6d71893d5ee419b97f0f8dbeedbb8f9e76249 Author: Jun Zhao <[email protected]> AuthorDate: Fri Aug 28 10:31:54 2026 +0800 Commit: Jun Zhao <[email protected]> CommitDate: Fri Sep 11 22:31:03 2026 +0000 tests/fate: add a Matroska -stereo3d encode test Encode vsynth through mpeg4 with -stereo3d:v sbsl and check that ffprobe reports side-by-side packed Stereo 3D side data. Also check that -stereo3d overrides a stereo_mode tag on the same stream, that an explicit -metadata stereo_mode tag is honored, and that the global stereo_mode fallback still applies to the other output streams. Signed-off-by: Jun Zhao <[email protected]> --- tests/fate/matroska.mak | 58 ++++++++++++++++++++++++++++++- tests/ref/fate/matroska-stereo3d-metadata | 33 ++++++++++++++++++ tests/ref/fate/matroska-stereo3d-override | 20 +++++++++++ tests/ref/fate/matroska-stereo3d-sbs | 22 ++++++++++++ 4 files changed, 132 insertions(+), 1 deletion(-) diff --git a/tests/fate/matroska.mak b/tests/fate/matroska.mak index 6a98845ca2..07876c6964 100644 --- a/tests/fate/matroska.mak +++ b/tests/fate/matroska.mak @@ -339,8 +339,64 @@ fate-matroska-reenc-delete-metadata-filter-output: CMD = transcode matroska $(TA FATE_MATROSKA_FFMPEG_FFPROBE-$(call TRANSCODE, MPEG2VIDEO HEVC, NUT MATROSKA, SCALE_FILTER) += fate-matroska-reenc-chapter-nofilter fate-matroska-reenc-chapter-nofilter: CMD = transcode matroska $(TARGET_SAMPLES)/mkv/hdr10tags-both.mkv nut "-map 0:v:0 -vf scale=iw:ih -c:v mpeg2video -bitexact -metadata:c:0 NUMBER_OF_FRAMES=test" "-c copy -t 0.1" "-show_entries chapter_tags" "" "" "" null +# The following tests only use the generated vsynth input, so unlike the +# rest of this file they are runnable without the external samples. +FATE_MATROSKA_STEREO3D-$(call ALLYES, FILE_PROTOCOL PIPE_PROTOCOL FRAMECRC_MUXER \ + RAWVIDEO_DEMUXER RAWVIDEO_DECODER \ + MPEG4_ENCODER MATROSKA_MUXER MATROSKA_DEMUXER) \ + += fate-matroska-stereo3d-sbs +fate-matroska-stereo3d-sbs: tests/data/vsynth1.yuv +fate-matroska-stereo3d-sbs: CMD = transcode rawvideo $(TARGET_PATH)/tests/data/vsynth1.yuv matroska \ + "-c:v mpeg4 -qscale:v 10 -stereo3d:v sbsl -frames:v 2" \ + "-c:v copy" "-show_entries stream_side_data_list" "" "" "-s 352x288 -pix_fmt yuv420p" + +# The global stereo_mode fallback must keep applying to output streams that +# do not have -stereo3d. +FATE_MATROSKA_STEREO3D-$(call ALLYES, FILE_PROTOCOL RAWVIDEO_DEMUXER RAWVIDEO_DECODER \ + MPEG4_ENCODER MATROSKA_MUXER MATROSKA_DEMUXER) \ + += fate-matroska-stereo3d-override +fate-matroska-stereo3d-override: tests/data/vsynth1.yuv +fate-matroska-stereo3d-override: CMD = run_with_temp \ + "$(FFMPEG) -nostdin -nostats -bitexact -s 352x288 -pix_fmt yuv420p \ + -f rawvideo -i $(TARGET_PATH)/tests/data/vsynth1.yuv -frames:v 2 \ + -map 0:v -map 0:v -c:v mpeg4 -metadata:g stereo_mode=top_bottom \ + -stereo3d:v:0 sbsl -f matroska -y" \ + "ffprobe${PROGSUF}${EXESUF} -v error -bitexact \ + -show_entries stream=index:stream_tags=stereo_mode:stream_side_data_list \ + -of default=nw=1" mkv + +# A stereo_mode tag inherited from the input must not win over -stereo3d, +# while an explicitly requested tag still describes the layout. +FATE_MATROSKA_STEREO3D-$(call ALLYES, FILE_PROTOCOL RAWVIDEO_DEMUXER RAWVIDEO_DECODER \ + MPEG4_ENCODER MATROSKA_MUXER MATROSKA_DEMUXER) \ + += fate-matroska-stereo3d-metadata +fate-matroska-stereo3d-metadata: tests/data/vsynth1.yuv +fate-matroska-stereo3d-metadata: CMP = diff +fate-matroska-stereo3d-metadata: REF = $(SRC_PATH)/tests/ref/fate/matroska-stereo3d-metadata +fate-matroska-stereo3d-metadata: CMD = tmp=tests/data/fate/matroska-stereo3d-metadata.mkv; \ + out=$$tmp-out.mkv; \ + ffmpeg -bitexact -s 352x288 -pix_fmt yuv420p -f rawvideo \ + -i $(TARGET_PATH)/tests/data/vsynth1.yuv -frames:v 2 -c:v mpeg4 \ + -metadata:s:v:0 stereo_mode=top_bottom -f matroska -y $$tmp && \ + echo "option over inherited tag:" && \ + ffmpeg -y -i $$tmp -c copy -stereo3d:v:0 sbsl -f matroska -y $$out && \ + probe -v error -show_entries stream=index:stream_tags=stereo_mode:stream_side_data_list \ + -of default=nw=1 $$out && \ + echo "explicit tag:" && \ + ffmpeg -y -i $$tmp -c copy -metadata:s:v:0 stereo_mode=right_left \ + -f matroska -y $$out && \ + probe -v error -show_entries stream=index:stream_tags=stereo_mode:stream_side_data_list \ + -of default=nw=1 $$out && \ + echo "empty tag:" && \ + ffmpeg -y -i $$tmp -c copy -stereo3d:v:0 tb -metadata:s:v:0 stereo_mode= \ + -f matroska -y $$out && \ + probe -v error -show_entries stream=index:stream_tags=stereo_mode:stream_side_data_list \ + -of default=nw=1 $$out; \ + ret=$$?; rm -f $$tmp $$out; test $$ret -eq 0 + FATE_SAMPLES_AVCONV += $(FATE_MATROSKA-yes) FATE_SAMPLES_FFPROBE += $(FATE_MATROSKA_FFPROBE-yes) FATE_SAMPLES_FFMPEG_FFPROBE += $(FATE_MATROSKA_FFMPEG_FFPROBE-yes) +FATE_FFMPEG_FFPROBE += $(FATE_MATROSKA_STEREO3D-yes) -fate-matroska: $(FATE_MATROSKA-yes) $(FATE_MATROSKA_FFPROBE-yes) $(FATE_MATROSKA_FFMPEG_FFPROBE-yes) +fate-matroska: $(FATE_MATROSKA-yes) $(FATE_MATROSKA_FFPROBE-yes) $(FATE_MATROSKA_FFMPEG_FFPROBE-yes) $(FATE_MATROSKA_STEREO3D-yes) diff --git a/tests/ref/fate/matroska-stereo3d-metadata b/tests/ref/fate/matroska-stereo3d-metadata new file mode 100644 index 0000000000..58923b5c6e --- /dev/null +++ b/tests/ref/fate/matroska-stereo3d-metadata @@ -0,0 +1,33 @@ +option over inherited tag: +index=0 +TAG:stereo_mode=left_right +side_data_type=Stereo 3D +type=side by side +inverted=0 +view=packed +primary_eye=none +baseline=0 +horizontal_disparity_adjustment=0/1 +horizontal_field_of_view=0/1 +explicit tag: +index=0 +TAG:stereo_mode=right_left +side_data_type=Stereo 3D +type=side by side +inverted=1 +view=packed +primary_eye=none +baseline=0 +horizontal_disparity_adjustment=0/1 +horizontal_field_of_view=0/1 +empty tag: +index=0 +TAG:stereo_mode=top_bottom +side_data_type=Stereo 3D +type=top and bottom +inverted=0 +view=packed +primary_eye=none +baseline=0 +horizontal_disparity_adjustment=0/1 +horizontal_field_of_view=0/1 diff --git a/tests/ref/fate/matroska-stereo3d-override b/tests/ref/fate/matroska-stereo3d-override new file mode 100644 index 0000000000..04c5055785 --- /dev/null +++ b/tests/ref/fate/matroska-stereo3d-override @@ -0,0 +1,20 @@ +index=0 +TAG:stereo_mode=left_right +side_data_type=Stereo 3D +type=side by side +inverted=0 +view=packed +primary_eye=none +baseline=0 +horizontal_disparity_adjustment=0/1 +horizontal_field_of_view=0/1 +index=1 +TAG:stereo_mode=top_bottom +side_data_type=Stereo 3D +type=top and bottom +inverted=0 +view=packed +primary_eye=none +baseline=0 +horizontal_disparity_adjustment=0/1 +horizontal_field_of_view=0/1 diff --git a/tests/ref/fate/matroska-stereo3d-sbs b/tests/ref/fate/matroska-stereo3d-sbs new file mode 100644 index 0000000000..f4d5256037 --- /dev/null +++ b/tests/ref/fate/matroska-stereo3d-sbs @@ -0,0 +1,22 @@ +16938e7e91ea9492eef3654d3db9af57 *tests/data/fate/matroska-stereo3d-sbs.matroska +38205 tests/data/fate/matroska-stereo3d-sbs.matroska +#extradata 0: 30, 0x47ab0576 +#tb 0: 1/1000 +#media_type 0: video +#codec_id 0: mpeg4 +#dimensions 0: 352x288 +#sar 0: 1/1 +0, 0, 0, 40, 27837, 0xd9809b60 +0, 40, 40, 40, 9806, 0xbebc2826, F=0x0 +[STREAM] +[SIDE_DATA] +side_data_type=Stereo 3D +type=side by side +inverted=0 +view=packed +primary_eye=none +baseline=0 +horizontal_disparity_adjustment=0/1 +horizontal_field_of_view=0/1 +[/SIDE_DATA] +[/STREAM] -- To stop receiving notification emails like this one, please contact [email protected]. _______________________________________________ ffmpeg-cvslog mailing list -- [email protected] To unsubscribe send an email to [email protected]
