@@ -272,6 +272,19 @@ transcode(){
run ffprobe${PROGSUF}${EXECSUF} -bitexact $ffprobe_opts $tencfile || return
}
+stream_demux(){
+ src_fmt=$1
+ srcfile=$2
+ src_opts=$3
+ enc_opts=$4
+ ffprobe_opts=$5
+ tsrcfile=$(target_path $srcfile)
+ ffmpeg $DEC_OPTS -f $src_fmt $src_opts -i $tsrcfile $ENC_OPTS $FLAGS $enc_opts \
+ -f framecrc - || return
+ test -z "$ffprobe_opts" || \
+ run ffprobe${PROGSUF}${EXECSUF} -bitexact $ffprobe_opts $tsrcfile || return
+}
+
stream_remux(){
src_fmt=$1
srcfile=$2
@@ -161,13 +161,17 @@ FATE_MOV_FFMPEG_SAMPLES-$(call FRAMEMD5, MOV, HEVC, HEVC_PARSER) \
+= fate-mov-heic-demux-still-image-multiple-items
fate-mov-heic-demux-still-image-multiple-items: CMD = framemd5 -i $(TARGET_SAMPLES)/heif-conformance/C003.heic -c:v copy -map 0
-FATE_MOV_FFMPEG_SAMPLES-$(call FRAMEMD5, MOV, HEVC, HEVC_PARSER) \
+# heic demuxing - still image with multiple items in a grid.
+FATE_MOV_FFMPEG_FFPROBE_SAMPLES-$(call DEMMUX, MOV, FRAMECRC, HEVC_DECODER HEVC_PARSER) \
+= fate-mov-heic-demux-still-image-grid
-fate-mov-heic-demux-still-image-grid: CMD = framemd5 -i $(TARGET_SAMPLES)/heif-conformance/C007.heic -c:v copy -map 0:g:0
+fate-mov-heic-demux-still-image-grid: CMD = stream_demux mov $(TARGET_SAMPLES)/heif-conformance/C007.heic "" "-c:v copy -map 0:g:0" \
+ "-show_entries stream_group=index,id,nb_streams,type:stream_group_components:stream_group_disposition:stream_group_tags:stream_group_stream=index,id:stream_group_stream_disposition"
-FATE_MOV_FFMPEG_SAMPLES-$(call FRAMEMD5, MOV, HEVC, HEVC_PARSER) \
+# heic demuxing - still image with multiple items in an overlay canvas.
+FATE_MOV_FFMPEG_FFPROBE_SAMPLES-$(call DEMMUX, MOV, FRAMECRC, HEVC_DECODER HEVC_PARSER) \
+= fate-mov-heic-demux-still-image-iovl
-fate-mov-heic-demux-still-image-iovl: CMD = framemd5 -i $(TARGET_SAMPLES)/heif-conformance/C015.heic -c:v copy -map 0:g:0
+fate-mov-heic-demux-still-image-iovl: CMD = stream_demux mov $(TARGET_SAMPLES)/heif-conformance/C015.heic "" "-c:v copy -map 0:g:0" \
+ "-show_entries stream_group=index,id,nb_streams,type:stream_group_components:stream_group_disposition:stream_group_tags:stream_group_stream=index,id:stream_group_stream_disposition"
# Resulting remux should have:
# 1. first audio stream with AV_DISPOSITION_HEARING_IMPAIRED
@@ -1,10 +1,7 @@
-#format: frame checksums
-#version: 2
-#hash: MD5
-#extradata 0, 100, 5444bf01e03182c73ae957179d560f4d
-#extradata 1, 100, 5444bf01e03182c73ae957179d560f4d
-#extradata 2, 100, 5444bf01e03182c73ae957179d560f4d
-#extradata 3, 100, 5444bf01e03182c73ae957179d560f4d
+#extradata 0: 100, 0xee3e15e9
+#extradata 1: 100, 0xee3e15e9
+#extradata 2: 100, 0xee3e15e9
+#extradata 3: 100, 0xee3e15e9
#tb 0: 1/1
#media_type 0: video
#codec_id 0: hevc
@@ -25,8 +22,149 @@
#codec_id 3: hevc
#dimensions 3: 1280x720
#sar 3: 0/1
-#stream#, dts, pts, duration, size, hash
-0, 0, 0, 1, 111554, 03ceabfab39afd2e2e796b9362111f32
-1, 0, 0, 1, 111481, e5db978adbe4de7ee50fe73abc39fcfa
-2, 0, 0, 1, 111451, 08700213113cadbb6628ecb8253c1c2a
-3, 0, 0, 1, 111353, 5de942e14c848e5e22fad5d88fb13776
+0, 0, 0, 1, 111554, 0xa0679859
+1, 0, 0, 1, 111481, 0xc5386eaf
+2, 0, 0, 1, 111451, 0xdbde88de
+3, 0, 0, 1, 111353, 0x26435c8c
+[STREAM_GROUP]
+index=0
+id=0x3f1
+nb_streams=4
+type=Tile Grid
+[COMPONENT]
+nb_tiles=4
+coded_width=2560
+coded_height=1440
+horizontal_offset=0
+vertical_offset=0
+width=2560
+height=1440
+[PIECE]
+stream_index=0
+tile_horizontal_offset=0
+tile_vertical_offset=0
+[/PIECE]
+[PIECE]
+stream_index=1
+tile_horizontal_offset=1280
+tile_vertical_offset=0
+[/PIECE]
+[PIECE]
+stream_index=2
+tile_horizontal_offset=0
+tile_vertical_offset=720
+[/PIECE]
+[PIECE]
+stream_index=3
+tile_horizontal_offset=1280
+tile_vertical_offset=720
+[/PIECE]
+[/COMPONENT]
+DISPOSITION:default=1
+DISPOSITION:dub=0
+DISPOSITION:original=0
+DISPOSITION:comment=0
+DISPOSITION:lyrics=0
+DISPOSITION:karaoke=0
+DISPOSITION:forced=0
+DISPOSITION:hearing_impaired=0
+DISPOSITION:visual_impaired=0
+DISPOSITION:clean_effects=0
+DISPOSITION:attached_pic=0
+DISPOSITION:timed_thumbnails=0
+DISPOSITION:non_diegetic=0
+DISPOSITION:captions=0
+DISPOSITION:descriptions=0
+DISPOSITION:metadata=0
+DISPOSITION:dependent=0
+DISPOSITION:still_image=0
+TAG:title=Derived image
+[STREAM]
+index=0
+id=0x3ea
+DISPOSITION:default=0
+DISPOSITION:dub=0
+DISPOSITION:original=0
+DISPOSITION:comment=0
+DISPOSITION:lyrics=0
+DISPOSITION:karaoke=0
+DISPOSITION:forced=0
+DISPOSITION:hearing_impaired=0
+DISPOSITION:visual_impaired=0
+DISPOSITION:clean_effects=0
+DISPOSITION:attached_pic=0
+DISPOSITION:timed_thumbnails=0
+DISPOSITION:non_diegetic=0
+DISPOSITION:captions=0
+DISPOSITION:descriptions=0
+DISPOSITION:metadata=0
+DISPOSITION:dependent=1
+DISPOSITION:still_image=0
+[/STREAM]
+[STREAM]
+index=1
+id=0x3ec
+DISPOSITION:default=0
+DISPOSITION:dub=0
+DISPOSITION:original=0
+DISPOSITION:comment=0
+DISPOSITION:lyrics=0
+DISPOSITION:karaoke=0
+DISPOSITION:forced=0
+DISPOSITION:hearing_impaired=0
+DISPOSITION:visual_impaired=0
+DISPOSITION:clean_effects=0
+DISPOSITION:attached_pic=0
+DISPOSITION:timed_thumbnails=0
+DISPOSITION:non_diegetic=0
+DISPOSITION:captions=0
+DISPOSITION:descriptions=0
+DISPOSITION:metadata=0
+DISPOSITION:dependent=1
+DISPOSITION:still_image=0
+[/STREAM]
+[STREAM]
+index=2
+id=0x3ee
+DISPOSITION:default=0
+DISPOSITION:dub=0
+DISPOSITION:original=0
+DISPOSITION:comment=0
+DISPOSITION:lyrics=0
+DISPOSITION:karaoke=0
+DISPOSITION:forced=0
+DISPOSITION:hearing_impaired=0
+DISPOSITION:visual_impaired=0
+DISPOSITION:clean_effects=0
+DISPOSITION:attached_pic=0
+DISPOSITION:timed_thumbnails=0
+DISPOSITION:non_diegetic=0
+DISPOSITION:captions=0
+DISPOSITION:descriptions=0
+DISPOSITION:metadata=0
+DISPOSITION:dependent=1
+DISPOSITION:still_image=0
+[/STREAM]
+[STREAM]
+index=3
+id=0x3f0
+DISPOSITION:default=0
+DISPOSITION:dub=0
+DISPOSITION:original=0
+DISPOSITION:comment=0
+DISPOSITION:lyrics=0
+DISPOSITION:karaoke=0
+DISPOSITION:forced=0
+DISPOSITION:hearing_impaired=0
+DISPOSITION:visual_impaired=0
+DISPOSITION:clean_effects=0
+DISPOSITION:attached_pic=0
+DISPOSITION:timed_thumbnails=0
+DISPOSITION:non_diegetic=0
+DISPOSITION:captions=0
+DISPOSITION:descriptions=0
+DISPOSITION:metadata=0
+DISPOSITION:dependent=1
+DISPOSITION:still_image=0
+[/STREAM]
+[/STREAM_GROUP]
@@ -1,8 +1,5 @@
-#format: frame checksums
-#version: 2
-#hash: MD5
-#extradata 0, 100, 5444bf01e03182c73ae957179d560f4d
-#extradata 1, 100, 5444bf01e03182c73ae957179d560f4d
+#extradata 0: 100, 0xee3e15e9
+#extradata 1: 100, 0xee3e15e9
#tb 0: 1/1
#media_type 0: video
#codec_id 0: hevc
@@ -13,6 +10,93 @@
#codec_id 1: hevc
#dimensions 1: 1280x720
#sar 1: 0/1
-#stream#, dts, pts, duration, size, hash
-0, 0, 0, 1, 111554, 03ceabfab39afd2e2e796b9362111f32
-1, 0, 0, 1, 112393, daa001d351c088a5bc328459e2501c95
+0, 0, 0, 1, 111554, 0xa0679859
+1, 0, 0, 1, 112393, 0xdf2b9da0
+[STREAM_GROUP]
+index=0
+id=0x3ee
+nb_streams=2
+type=Tile Grid
+[COMPONENT]
+nb_tiles=2
+coded_width=1440
+coded_height=960
+horizontal_offset=0
+vertical_offset=0
+width=1440
+height=960
+[PIECE]
+stream_index=0
+tile_horizontal_offset=0
+tile_vertical_offset=0
+[/PIECE]
+[PIECE]
+stream_index=1
+tile_horizontal_offset=160
+tile_vertical_offset=240
+[/PIECE]
+[/COMPONENT]
+DISPOSITION:default=0
+DISPOSITION:dub=0
+DISPOSITION:original=0
+DISPOSITION:comment=0
+DISPOSITION:lyrics=0
+DISPOSITION:karaoke=0
+DISPOSITION:forced=0
+DISPOSITION:hearing_impaired=0
+DISPOSITION:visual_impaired=0
+DISPOSITION:clean_effects=0
+DISPOSITION:attached_pic=0
+DISPOSITION:timed_thumbnails=0
+DISPOSITION:non_diegetic=0
+DISPOSITION:captions=0
+DISPOSITION:descriptions=0
+DISPOSITION:metadata=0
+DISPOSITION:dependent=0
+DISPOSITION:still_image=0
+TAG:title=Derived image
+[STREAM]
+index=0
+id=0x3ea
+DISPOSITION:default=1
+DISPOSITION:dub=0
+DISPOSITION:original=0
+DISPOSITION:comment=0
+DISPOSITION:lyrics=0
+DISPOSITION:karaoke=0
+DISPOSITION:forced=0
+DISPOSITION:hearing_impaired=0
+DISPOSITION:visual_impaired=0
+DISPOSITION:clean_effects=0
+DISPOSITION:attached_pic=0
+DISPOSITION:timed_thumbnails=0
+DISPOSITION:non_diegetic=0
+DISPOSITION:captions=0
+DISPOSITION:descriptions=0
+DISPOSITION:metadata=0
+DISPOSITION:dependent=0
+DISPOSITION:still_image=0
+[/STREAM]
+[STREAM]
+index=1
+id=0x3ed
+DISPOSITION:default=0
+DISPOSITION:dub=0
+DISPOSITION:original=0
+DISPOSITION:comment=0
+DISPOSITION:lyrics=0
+DISPOSITION:karaoke=0
+DISPOSITION:forced=0
+DISPOSITION:hearing_impaired=0
+DISPOSITION:visual_impaired=0
+DISPOSITION:clean_effects=0
+DISPOSITION:attached_pic=0
+DISPOSITION:timed_thumbnails=0
+DISPOSITION:non_diegetic=0
+DISPOSITION:captions=0
+DISPOSITION:descriptions=0
+DISPOSITION:metadata=0
+DISPOSITION:dependent=1
+DISPOSITION:still_image=0
+[/STREAM]
+[/STREAM_GROUP]
Signed-off-by: James Almer <jamrial@gmail.com> --- tests/fate-run.sh | 13 ++ tests/fate/mov.mak | 12 +- .../ref/fate/mov-heic-demux-still-image-grid | 162 ++++++++++++++++-- .../ref/fate/mov-heic-demux-still-image-iovl | 100 ++++++++++- 4 files changed, 263 insertions(+), 24 deletions(-)