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]

Reply via email to