diff mbox series

[FFmpeg-devel] Fwd: Fate test for mxfdec.c: prefer metadata from Footer -

Message ID c2a14a2aa4c6e4c6b36c20815d35a5b1@ffastrans.com
State New
Headers show
Series [FFmpeg-devel] Fwd: Fate test for mxfdec.c: prefer metadata from Footer - | expand

Checks

Context Check Description
andriy/commit_msg_x86 warning The first line of the commit message must start with a context terminated by a colon and a space, for example "lavu/opt: " or "doc: ".
yinshiyou/configure_loongarch64 warning Failed to apply patch
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

emcodem March 13, 2023, 5:06 p.m. UTC
Am 2023-02-16 18:14, schrieb emcodem@ffastrans.com:
> Am 2023-02-12 01:25, schrieb Tomas Härdin:
>> fre 2023-02-03 klockan 14:54 +0100 skrev emcodem@ffastrans.com:
>>> Am 2021-07-03 15:13, schrieb emcodem@ffastrans.com:
>>> > Am 2021-06-28 21:58, schrieb emcodem@ffastrans.com:
>>> > > Am 2021-06-28 03:00, schrieb Marton Balint:
>>> > > > On Sun, 27 Jun 2021, emcodem@ffastrans.com wrote:
>>> > > >
>>> > > > > Am 2021-06-27 20:12, schrieb Marton Balint:
>>> > > > > > Why? I though it is enough if you store the partition
>>> > > > > > number in the
>>> > > > > > metadata set, that way you should be able to compare if the
>>> > > > > > existing
>>> > > > > > metadata set is better than the current one when adding a
>>> > > > > > new
>>> > > > > > metadata
>>> > > > > > set. Or am I missing something?
>>> > > > >
>>> > > > > OK, i just had a try on this but honestly i don't know how
>>> > > > > this
>>> > > > > could work without a very deep change of the whole mxfdec.c.
>>> > > > > The problem is that i cannot just add a field to the struct
>>> > > > > MXFMetadataSet as this points to raw data which has been read
>>> > > > > from
>>> > > > > the mxf file. I could add a field but if i initialize the
>>> > > > > value, i
>>> > > > > will automatically destroy the original raw data which was
>>> > > > > read from
>>> > > > > the mxf file.
>>> > > >
>>> > > > See the attached patch, that is what I had in mind. Or is it
>>> > > > overkill?
>>> > > > Can you test it with your dataset and see if it makes any
>>> > > > difference?
>>> > > >
>>> > > > Thanks,
>>> > > > Marton
>>> > > > _______________________________________________
>>> > > > ffmpeg-devel mailing list
>>> > > > ffmpeg-devel@ffmpeg.org
>>> > > > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>> > > >
>>> > > > To unsubscribe, visit link above, or email
>>> > > > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
>>> > >
>>> > > Tested your patch pleasure, thanks for the support! The "score
>>> > > approach" seems to work in practice exactly as my previous patch,
>>> > > the
>>> > > only thing i fear about is that it is a little harder now to
>>> > > foresee
>>> > > which metadata source is taken from a users perspective but i
>>> > > also
>>> > > think it is now more compliant than it was before.
>>> > >
>>> > > Using my test fileset which contains 4.476 mxf files (not all
>>> > > unique,
>>> > > maybe half is duplicates and most focus on xdcamhd and D10), we
>>> > > have
>>> > > 90 differences between ffprobe before your patch and after your
>>> > > patch.
>>> > > All of the differences are only in files that have openincomplete
>>> > > header. Most of the differences just changes the duration from a
>>> > > guessed one to the analyzed one:
>>> > >
>>> > > All STREAMS (NEW - OLD):
>>> > >       "duration_ts": 3000,              "duration_ts": 3099,
>>> > >       "duration": "120.000000",         "duration": "123.960000",
>>> > > FORMAT      (NEW - OLD):
>>> > >     "duration": "120.000000",           "duration": "123.969813",
>>> > >     "bit_rate": "61178142",             "bit_rate": "59219070",
>>> > >
>>> > > Exception one Op1b self contained file, where the "old" version
>>> > > did
>>> > > not spit out a "duration" value at all, so it was not even
>>> > > calculated
>>> > > from bitrate, it was just missing in the format section and set
>>> > > to 0
>>> > > in the stream section.
>>> > > Exception two, there were 4 files (3 were samples from IRT and 1
>>> > > a
>>> > > real world file from old omneon version) where the startc OLD was
>>> > > 0
>>> > > and the new one was the MP starttimecode from MP, so perfect.
>>> > > So the conclusion is that of course your version had the same
>>> > > effect
>>> > > on my testfileset than my patch version, so thats nice.
>>> > >
>>> > > Also, the FATE samples i shared will still work and can be used
>>> > > for
>>> > > this patch.
>>> > > Attached a patch for adding only the fate samples. Note that
>>> > > these
>>> > > Fate tests of course fail when the patch for mxfdec.c is not
>>> > > applied.
>>> > > https://we.tl/t-MVmyG2mZHq
>>> > >
>>> > > Thanks a lot!
>>> > > -emcodem
>>> > > _______________________________________________
>>> > > ffmpeg-devel mailing list
>>> > > ffmpeg-devel@ffmpeg.org
>>> > > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>> > >
>>> > > To unsubscribe, visit link above, or email
>>> > > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
>>> >
>>> > Unfortunately the wetransfer link for the fate samples expired, so
>>> > i
>>> > thought it might be a good idea to resend it as link to gdrive:
>>> > https://drive.google.com/file/d/1yXTdS9RfOsduzg49vBLEshdmIzdaVQfd/view?usp=sharing
>>> >
>>> > Also attached the 2 patches: 1 from cus for mxfdec.c and one from
>>> > myself for the corresponding fate samples.
>>> > After applying the mxfdec.c patch, fate will pass with the
>>> > currently
>>> > existing tests but the files in the zip must be uploaded to the
>>> > fate
>>> > suite before applying my corresponding patch of course (otherwise
>>> > the
>>> > files don't exist).
>>> >
>>> > It would be cool if someone found the time and wants to apply this.
>>> >
>>> > Thanks!
>>> > -emcodem
>>> 
>>> Hi Thomas,
>>> sorry i totally forgot about completing the fate tests for this.
>>> The needed file is meanwhile in the official fate-suite repo so this
>>> should pass the automatic fate tests.
>>> 
>>> I did add 2 different tests for the patch that Marton applied that
>>> makes
>>> the demuxer prefer closed complete footer over header.
>>> Both tests use the same file in fate-suite:
>>> omneon_8.3.0.0_xdcam_startc_footer.mxf
>>> This reference file is the shortest completely original example that
>>> i
>>> was able to produce on a real omneon broadcast server. It serves as a
>>> good reference not only for this patch.
>>> 
>>> Test 1) test if TC is preferred from footer.
>>> Test 2) test if it still works as expected when there is no footer.
>>> (more or less inverted test 1) This is done by simulating a
>>> "truncated
>>> file" using subfile protocol i chose the end of file is in the video
>>> data of the last mpeg2 frame because that is what i see mostly with
>>> truncated files in production.
>>> 
>>> Hope this can be applied now as it is.
>> 
>> Meant to reply to this earlier, but yes good samples are crucial for
>> these kinds of tests. Obviously footer metadata will tend to be the
>> most accurate and should be preferred.
>> 
>> It's getting late, hopefully I'll have some time to look at this next
>> week. There are some other things that need doing in mxfdec as well..
>> 
>> /Tomas
> 
> Let me know if you need assistence with any of the "other doings" :D

This is mostly for Tomas Härdin i guess because we have a history with 
this...
Attached a revised version of the fate tests for the "prefer metadata 
from Footer" patch.
Thanks to the guys i met on the Linux days in Chemnitz, we found and 
fixed an issue that would only occur on Mac (needed to changed quoting 
around subfile protocol to fix it). Special thanks to the great Mr. Carl 
Eugen at this point but also to Thilo who actally executed the revison 
and Alex Strasser (sorry that we didnt have the chance to say goodbye 
actually, it was great to meet you all) :D

Please let me know any doubts.

Thanks,
emcodem
diff mbox series

Patch

From ca1b565e6febe114822b3b9f7b1c8f6abded21f6 Mon Sep 17 00:00:00 2001
From: emcodem <emcodem@ffastrans.com>
Date: Sun, 12 Mar 2023 10:33:43 +0100
Subject: [PATCH] mxf Fate tests for openincomplete and truncated

---
 tests/fate/mxf.mak                        |   9 +
 tests/ref/fate/mxf-probe-xdcamhd-oit      | 452 ++++++++++++++++++++++++++++++
 tests/ref/fate/mxf-probe-xdcamhd-tcfooter | 452 ++++++++++++++++++++++++++++++
 3 files changed, 913 insertions(+)
 create mode 100644 tests/ref/fate/mxf-probe-xdcamhd-oit
 create mode 100644 tests/ref/fate/mxf-probe-xdcamhd-tcfooter

diff --git a/tests/fate/mxf.mak b/tests/fate/mxf.mak
index 8430b01..8bc6623 100644
--- a/tests/fate/mxf.mak
+++ b/tests/fate/mxf.mak
@@ -43,6 +43,15 @@  fate-mxf-probe-applehdr10: CMD = run $(PROBE_FORMAT_STREAMS_COMMAND) -i "$(SRC)"
 FATE_MXF_FFMPEG_FFPROBE-$(call REMUX, MXF, PRORES_DECODER) += fate-mxf-remux-applehdr10
 fate-mxf-remux-applehdr10: CMD = transcode mxf $(TARGET_SAMPLES)/mxf/Meridian-Apple_ProResProxy-HDR10.mxf mxf "-map 0 -c copy" "-c copy -t 0.3" "-show_entries format_tags:stream_side_data_list:stream=index,codec_name,codec_tag:stream_tags"
 
+# openincomplete Header, starttc in header 0 but Footer MP 10:11:17:21, SP 10:11:17:17
+FATE_MXF_PROBE-$(call ENCDEC2, MPEG2VIDEO, PCM_S24LE, MXF) += fate-mxf-probe-xdcamhd-tcfooter
+fate-mxf-probe-xdcamhd-tcfooter: SRC = $(TARGET_SAMPLES)/mxf/omneon_8.3.0.0_xdcam_startc_footer.mxf
+fate-mxf-probe-xdcamhd-tcfooter: CMD = run $(PROBE_FORMAT_STREAMS_COMMAND) -i "$(SRC)"
+
+FATE_MXF_PROBE-$(call ENCDEC2, MPEG2VIDEO, PCM_S24LE, MXF) += fate-mxf-probe-xdcamhd-oit
+fate-mxf-probe-xdcamhd-oit: SRC = $(TARGET_SAMPLES)/mxf/omneon_8.3.0.0_xdcam_startc_footer.mxf
+fate-mxf-probe-xdcamhd-oit: CMD = run $(PROBE_FORMAT_STREAMS_COMMAND) -i subfile,,start,0,end,5242880,,:"$(SRC)"
+
 FATE_MXF-$(call DEMMUX, MXF, MXF, MPEGVIDEO_PARSER MPEG2VIDEO_DECODER) += fate-mxf-reel_name fate-mxf-user-comments
 fate-mxf-reel_name: CMD = md5 -y -i $(TARGET_SAMPLES)/mxf/Sony-00001.mxf  -c copy -timecode 00:00:00:00 -metadata "reel_name=test_reel" -fflags +bitexact -f mxf
 fate-mxf-user-comments: CMD = md5 -y -i $(TARGET_SAMPLES)/mxf/Sony-00001.mxf -c copy -metadata "comment_test=value" -fflags +bitexact -f mxf
diff --git a/tests/ref/fate/mxf-probe-xdcamhd-oit b/tests/ref/fate/mxf-probe-xdcamhd-oit
new file mode 100644
index 0000000..fd936f3
--- /dev/null
+++ b/tests/ref/fate/mxf-probe-xdcamhd-oit
@@ -0,0 +1,452 @@ 
+[STREAM]
+index=0
+codec_name=mpeg2video
+profile=0
+codec_type=video
+codec_tag_string=[0][0][0][0]
+codec_tag=0x0000
+width=1920
+height=1080
+coded_width=0
+coded_height=0
+closed_captions=0
+film_grain=0
+has_b_frames=1
+sample_aspect_ratio=1:1
+display_aspect_ratio=16:9
+pix_fmt=yuv422p
+level=2
+color_range=tv
+color_space=bt709
+color_transfer=bt709
+color_primaries=bt709
+chroma_location=topleft
+field_order=tt
+refs=1
+id=N/A
+r_frame_rate=25/1
+avg_frame_rate=25/1
+time_base=1/25
+start_pts=0
+start_time=0.000000
+duration_ts=18
+duration=0.720000
+bit_rate=50000000
+max_bit_rate=N/A
+bits_per_raw_sample=N/A
+nb_frames=N/A
+nb_read_frames=N/A
+nb_read_packets=N/A
+extradata_size=34
+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:captions=0
+DISPOSITION:descriptions=0
+DISPOSITION:metadata=0
+DISPOSITION:dependent=0
+DISPOSITION:still_image=0
+TAG:file_package_umid=0x060A2B340101010501010D231300114B920EA7CA8BBF1B1EAC7100D028113D5C
+[SIDE_DATA]
+side_data_type=CPB properties
+max_bitrate=50000000
+min_bitrate=0
+avg_bitrate=0
+buffer_size=17825792
+vbv_delay=-1
+[/SIDE_DATA]
+[/STREAM]
+[STREAM]
+index=1
+codec_name=pcm_s24le
+profile=unknown
+codec_type=audio
+codec_tag_string=[0][0][0][0]
+codec_tag=0x0000
+sample_fmt=s32
+sample_rate=48000
+channels=1
+channel_layout=unknown
+bits_per_sample=24
+initial_padding=0
+id=N/A
+r_frame_rate=0/0
+avg_frame_rate=0/0
+time_base=1/48000
+start_pts=0
+start_time=0.000000
+duration_ts=33909
+duration=0.706437
+bit_rate=1152000
+max_bit_rate=N/A
+bits_per_raw_sample=24
+nb_frames=N/A
+nb_read_frames=N/A
+nb_read_packets=N/A
+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:captions=0
+DISPOSITION:descriptions=0
+DISPOSITION:metadata=0
+DISPOSITION:dependent=0
+DISPOSITION:still_image=0
+TAG:file_package_umid=0x060A2B340101010501010D231300114B920EA7CA8BBF1B1EAC7100D028113D5C
+[/STREAM]
+[STREAM]
+index=2
+codec_name=pcm_s24le
+profile=unknown
+codec_type=audio
+codec_tag_string=[0][0][0][0]
+codec_tag=0x0000
+sample_fmt=s32
+sample_rate=48000
+channels=1
+channel_layout=unknown
+bits_per_sample=24
+initial_padding=0
+id=N/A
+r_frame_rate=0/0
+avg_frame_rate=0/0
+time_base=1/48000
+start_pts=0
+start_time=0.000000
+duration_ts=33909
+duration=0.706437
+bit_rate=1152000
+max_bit_rate=N/A
+bits_per_raw_sample=24
+nb_frames=N/A
+nb_read_frames=N/A
+nb_read_packets=N/A
+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:captions=0
+DISPOSITION:descriptions=0
+DISPOSITION:metadata=0
+DISPOSITION:dependent=0
+DISPOSITION:still_image=0
+TAG:file_package_umid=0x060A2B340101010501010D231300114B920EA7CA8BBF1B1EAC7100D028113D5C
+[/STREAM]
+[STREAM]
+index=3
+codec_name=pcm_s24le
+profile=unknown
+codec_type=audio
+codec_tag_string=[0][0][0][0]
+codec_tag=0x0000
+sample_fmt=s32
+sample_rate=48000
+channels=1
+channel_layout=unknown
+bits_per_sample=24
+initial_padding=0
+id=N/A
+r_frame_rate=0/0
+avg_frame_rate=0/0
+time_base=1/48000
+start_pts=0
+start_time=0.000000
+duration_ts=33909
+duration=0.706437
+bit_rate=1152000
+max_bit_rate=N/A
+bits_per_raw_sample=24
+nb_frames=N/A
+nb_read_frames=N/A
+nb_read_packets=N/A
+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:captions=0
+DISPOSITION:descriptions=0
+DISPOSITION:metadata=0
+DISPOSITION:dependent=0
+DISPOSITION:still_image=0
+TAG:file_package_umid=0x060A2B340101010501010D231300114B920EA7CA8BBF1B1EAC7100D028113D5C
+[/STREAM]
+[STREAM]
+index=4
+codec_name=pcm_s24le
+profile=unknown
+codec_type=audio
+codec_tag_string=[0][0][0][0]
+codec_tag=0x0000
+sample_fmt=s32
+sample_rate=48000
+channels=1
+channel_layout=unknown
+bits_per_sample=24
+initial_padding=0
+id=N/A
+r_frame_rate=0/0
+avg_frame_rate=0/0
+time_base=1/48000
+start_pts=0
+start_time=0.000000
+duration_ts=33909
+duration=0.706437
+bit_rate=1152000
+max_bit_rate=N/A
+bits_per_raw_sample=24
+nb_frames=N/A
+nb_read_frames=N/A
+nb_read_packets=N/A
+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:captions=0
+DISPOSITION:descriptions=0
+DISPOSITION:metadata=0
+DISPOSITION:dependent=0
+DISPOSITION:still_image=0
+TAG:file_package_umid=0x060A2B340101010501010D231300114B920EA7CA8BBF1B1EAC7100D028113D5C
+[/STREAM]
+[STREAM]
+index=5
+codec_name=pcm_s24le
+profile=unknown
+codec_type=audio
+codec_tag_string=[0][0][0][0]
+codec_tag=0x0000
+sample_fmt=s32
+sample_rate=48000
+channels=1
+channel_layout=unknown
+bits_per_sample=24
+initial_padding=0
+id=N/A
+r_frame_rate=0/0
+avg_frame_rate=0/0
+time_base=1/48000
+start_pts=0
+start_time=0.000000
+duration_ts=33909
+duration=0.706437
+bit_rate=1152000
+max_bit_rate=N/A
+bits_per_raw_sample=24
+nb_frames=N/A
+nb_read_frames=N/A
+nb_read_packets=N/A
+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:captions=0
+DISPOSITION:descriptions=0
+DISPOSITION:metadata=0
+DISPOSITION:dependent=0
+DISPOSITION:still_image=0
+TAG:file_package_umid=0x060A2B340101010501010D231300114B920EA7CA8BBF1B1EAC7100D028113D5C
+[/STREAM]
+[STREAM]
+index=6
+codec_name=pcm_s24le
+profile=unknown
+codec_type=audio
+codec_tag_string=[0][0][0][0]
+codec_tag=0x0000
+sample_fmt=s32
+sample_rate=48000
+channels=1
+channel_layout=unknown
+bits_per_sample=24
+initial_padding=0
+id=N/A
+r_frame_rate=0/0
+avg_frame_rate=0/0
+time_base=1/48000
+start_pts=0
+start_time=0.000000
+duration_ts=33909
+duration=0.706437
+bit_rate=1152000
+max_bit_rate=N/A
+bits_per_raw_sample=24
+nb_frames=N/A
+nb_read_frames=N/A
+nb_read_packets=N/A
+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:captions=0
+DISPOSITION:descriptions=0
+DISPOSITION:metadata=0
+DISPOSITION:dependent=0
+DISPOSITION:still_image=0
+TAG:file_package_umid=0x060A2B340101010501010D231300114B920EA7CA8BBF1B1EAC7100D028113D5C
+[/STREAM]
+[STREAM]
+index=7
+codec_name=pcm_s24le
+profile=unknown
+codec_type=audio
+codec_tag_string=[0][0][0][0]
+codec_tag=0x0000
+sample_fmt=s32
+sample_rate=48000
+channels=1
+channel_layout=unknown
+bits_per_sample=24
+initial_padding=0
+id=N/A
+r_frame_rate=0/0
+avg_frame_rate=0/0
+time_base=1/48000
+start_pts=0
+start_time=0.000000
+duration_ts=33909
+duration=0.706437
+bit_rate=1152000
+max_bit_rate=N/A
+bits_per_raw_sample=24
+nb_frames=N/A
+nb_read_frames=N/A
+nb_read_packets=N/A
+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:captions=0
+DISPOSITION:descriptions=0
+DISPOSITION:metadata=0
+DISPOSITION:dependent=0
+DISPOSITION:still_image=0
+TAG:file_package_umid=0x060A2B340101010501010D231300114B920EA7CA8BBF1B1EAC7100D028113D5C
+[/STREAM]
+[STREAM]
+index=8
+codec_name=pcm_s24le
+profile=unknown
+codec_type=audio
+codec_tag_string=[0][0][0][0]
+codec_tag=0x0000
+sample_fmt=s32
+sample_rate=48000
+channels=1
+channel_layout=unknown
+bits_per_sample=24
+initial_padding=0
+id=N/A
+r_frame_rate=0/0
+avg_frame_rate=0/0
+time_base=1/48000
+start_pts=0
+start_time=0.000000
+duration_ts=33909
+duration=0.706437
+bit_rate=1152000
+max_bit_rate=N/A
+bits_per_raw_sample=24
+nb_frames=N/A
+nb_read_frames=N/A
+nb_read_packets=N/A
+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:captions=0
+DISPOSITION:descriptions=0
+DISPOSITION:metadata=0
+DISPOSITION:dependent=0
+DISPOSITION:still_image=0
+TAG:file_package_umid=0x060A2B340101010501010D231300114B920EA7CA8BBF1B1EAC7100D028113D5C
+[/STREAM]
+[FORMAT]
+format_name=mxf
+duration=0.720000
+bit_rate=58254222
+TAG:operational_pattern_ul=060e2b34.04010101.0d010201.01010900
+TAG:uid=6e0aa7ca-8bbf-1b1e-a5b4-00d028113d5c
+TAG:generation_uid=780aa7ca-8bbf-1b1e-93f8-00d028113d5c
+TAG:company_name=Omneon Inc.
+TAG:product_name=Omneon Media Subsystem
+TAG:modification_date=2021-05-28T08:07:48.620000Z
+TAG:product_version=8.3.0.0.release
+TAG:product_version_num=8.3.0.0.1
+TAG:application_platform=Omneon Media Api (mqx)    
+TAG:product_uid=00000000-0000-1000-8000-050e0b010602
+TAG:material_package_umid=0x060A2B340101010501010D2313009472DE0DA7CA8BBF1B1EB07100D028113D5C
+TAG:timecode=00:00:00:00
+[/FORMAT]
diff --git a/tests/ref/fate/mxf-probe-xdcamhd-tcfooter b/tests/ref/fate/mxf-probe-xdcamhd-tcfooter
new file mode 100644
index 0000000..3e9f846
--- /dev/null
+++ b/tests/ref/fate/mxf-probe-xdcamhd-tcfooter
@@ -0,0 +1,452 @@ 
+[STREAM]
+index=0
+codec_name=mpeg2video
+profile=0
+codec_type=video
+codec_tag_string=[0][0][0][0]
+codec_tag=0x0000
+width=1920
+height=1080
+coded_width=0
+coded_height=0
+closed_captions=0
+film_grain=0
+has_b_frames=1
+sample_aspect_ratio=1:1
+display_aspect_ratio=16:9
+pix_fmt=yuv422p
+level=2
+color_range=tv
+color_space=bt709
+color_transfer=bt709
+color_primaries=bt709
+chroma_location=topleft
+field_order=tt
+refs=1
+id=N/A
+r_frame_rate=25/1
+avg_frame_rate=25/1
+time_base=1/25
+start_pts=0
+start_time=0.000000
+duration_ts=13
+duration=0.520000
+bit_rate=50000000
+max_bit_rate=N/A
+bits_per_raw_sample=N/A
+nb_frames=N/A
+nb_read_frames=N/A
+nb_read_packets=N/A
+extradata_size=34
+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:captions=0
+DISPOSITION:descriptions=0
+DISPOSITION:metadata=0
+DISPOSITION:dependent=0
+DISPOSITION:still_image=0
+TAG:file_package_umid=0x060A2B340101010501010D231300114B920EA7CA8BBF1B1EAC7100D028113D5C
+[SIDE_DATA]
+side_data_type=CPB properties
+max_bitrate=50000000
+min_bitrate=0
+avg_bitrate=0
+buffer_size=17825792
+vbv_delay=-1
+[/SIDE_DATA]
+[/STREAM]
+[STREAM]
+index=1
+codec_name=pcm_s24le
+profile=unknown
+codec_type=audio
+codec_tag_string=[0][0][0][0]
+codec_tag=0x0000
+sample_fmt=s32
+sample_rate=48000
+channels=1
+channel_layout=unknown
+bits_per_sample=24
+initial_padding=0
+id=N/A
+r_frame_rate=0/0
+avg_frame_rate=0/0
+time_base=1/48000
+start_pts=0
+start_time=0.000000
+duration_ts=24960
+duration=0.520000
+bit_rate=1152000
+max_bit_rate=N/A
+bits_per_raw_sample=24
+nb_frames=N/A
+nb_read_frames=N/A
+nb_read_packets=N/A
+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:captions=0
+DISPOSITION:descriptions=0
+DISPOSITION:metadata=0
+DISPOSITION:dependent=0
+DISPOSITION:still_image=0
+TAG:file_package_umid=0x060A2B340101010501010D231300114B920EA7CA8BBF1B1EAC7100D028113D5C
+[/STREAM]
+[STREAM]
+index=2
+codec_name=pcm_s24le
+profile=unknown
+codec_type=audio
+codec_tag_string=[0][0][0][0]
+codec_tag=0x0000
+sample_fmt=s32
+sample_rate=48000
+channels=1
+channel_layout=unknown
+bits_per_sample=24
+initial_padding=0
+id=N/A
+r_frame_rate=0/0
+avg_frame_rate=0/0
+time_base=1/48000
+start_pts=0
+start_time=0.000000
+duration_ts=24960
+duration=0.520000
+bit_rate=1152000
+max_bit_rate=N/A
+bits_per_raw_sample=24
+nb_frames=N/A
+nb_read_frames=N/A
+nb_read_packets=N/A
+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:captions=0
+DISPOSITION:descriptions=0
+DISPOSITION:metadata=0
+DISPOSITION:dependent=0
+DISPOSITION:still_image=0
+TAG:file_package_umid=0x060A2B340101010501010D231300114B920EA7CA8BBF1B1EAC7100D028113D5C
+[/STREAM]
+[STREAM]
+index=3
+codec_name=pcm_s24le
+profile=unknown
+codec_type=audio
+codec_tag_string=[0][0][0][0]
+codec_tag=0x0000
+sample_fmt=s32
+sample_rate=48000
+channels=1
+channel_layout=unknown
+bits_per_sample=24
+initial_padding=0
+id=N/A
+r_frame_rate=0/0
+avg_frame_rate=0/0
+time_base=1/48000
+start_pts=0
+start_time=0.000000
+duration_ts=24960
+duration=0.520000
+bit_rate=1152000
+max_bit_rate=N/A
+bits_per_raw_sample=24
+nb_frames=N/A
+nb_read_frames=N/A
+nb_read_packets=N/A
+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:captions=0
+DISPOSITION:descriptions=0
+DISPOSITION:metadata=0
+DISPOSITION:dependent=0
+DISPOSITION:still_image=0
+TAG:file_package_umid=0x060A2B340101010501010D231300114B920EA7CA8BBF1B1EAC7100D028113D5C
+[/STREAM]
+[STREAM]
+index=4
+codec_name=pcm_s24le
+profile=unknown
+codec_type=audio
+codec_tag_string=[0][0][0][0]
+codec_tag=0x0000
+sample_fmt=s32
+sample_rate=48000
+channels=1
+channel_layout=unknown
+bits_per_sample=24
+initial_padding=0
+id=N/A
+r_frame_rate=0/0
+avg_frame_rate=0/0
+time_base=1/48000
+start_pts=0
+start_time=0.000000
+duration_ts=24960
+duration=0.520000
+bit_rate=1152000
+max_bit_rate=N/A
+bits_per_raw_sample=24
+nb_frames=N/A
+nb_read_frames=N/A
+nb_read_packets=N/A
+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:captions=0
+DISPOSITION:descriptions=0
+DISPOSITION:metadata=0
+DISPOSITION:dependent=0
+DISPOSITION:still_image=0
+TAG:file_package_umid=0x060A2B340101010501010D231300114B920EA7CA8BBF1B1EAC7100D028113D5C
+[/STREAM]
+[STREAM]
+index=5
+codec_name=pcm_s24le
+profile=unknown
+codec_type=audio
+codec_tag_string=[0][0][0][0]
+codec_tag=0x0000
+sample_fmt=s32
+sample_rate=48000
+channels=1
+channel_layout=unknown
+bits_per_sample=24
+initial_padding=0
+id=N/A
+r_frame_rate=0/0
+avg_frame_rate=0/0
+time_base=1/48000
+start_pts=0
+start_time=0.000000
+duration_ts=24960
+duration=0.520000
+bit_rate=1152000
+max_bit_rate=N/A
+bits_per_raw_sample=24
+nb_frames=N/A
+nb_read_frames=N/A
+nb_read_packets=N/A
+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:captions=0
+DISPOSITION:descriptions=0
+DISPOSITION:metadata=0
+DISPOSITION:dependent=0
+DISPOSITION:still_image=0
+TAG:file_package_umid=0x060A2B340101010501010D231300114B920EA7CA8BBF1B1EAC7100D028113D5C
+[/STREAM]
+[STREAM]
+index=6
+codec_name=pcm_s24le
+profile=unknown
+codec_type=audio
+codec_tag_string=[0][0][0][0]
+codec_tag=0x0000
+sample_fmt=s32
+sample_rate=48000
+channels=1
+channel_layout=unknown
+bits_per_sample=24
+initial_padding=0
+id=N/A
+r_frame_rate=0/0
+avg_frame_rate=0/0
+time_base=1/48000
+start_pts=0
+start_time=0.000000
+duration_ts=24960
+duration=0.520000
+bit_rate=1152000
+max_bit_rate=N/A
+bits_per_raw_sample=24
+nb_frames=N/A
+nb_read_frames=N/A
+nb_read_packets=N/A
+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:captions=0
+DISPOSITION:descriptions=0
+DISPOSITION:metadata=0
+DISPOSITION:dependent=0
+DISPOSITION:still_image=0
+TAG:file_package_umid=0x060A2B340101010501010D231300114B920EA7CA8BBF1B1EAC7100D028113D5C
+[/STREAM]
+[STREAM]
+index=7
+codec_name=pcm_s24le
+profile=unknown
+codec_type=audio
+codec_tag_string=[0][0][0][0]
+codec_tag=0x0000
+sample_fmt=s32
+sample_rate=48000
+channels=1
+channel_layout=unknown
+bits_per_sample=24
+initial_padding=0
+id=N/A
+r_frame_rate=0/0
+avg_frame_rate=0/0
+time_base=1/48000
+start_pts=0
+start_time=0.000000
+duration_ts=24960
+duration=0.520000
+bit_rate=1152000
+max_bit_rate=N/A
+bits_per_raw_sample=24
+nb_frames=N/A
+nb_read_frames=N/A
+nb_read_packets=N/A
+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:captions=0
+DISPOSITION:descriptions=0
+DISPOSITION:metadata=0
+DISPOSITION:dependent=0
+DISPOSITION:still_image=0
+TAG:file_package_umid=0x060A2B340101010501010D231300114B920EA7CA8BBF1B1EAC7100D028113D5C
+[/STREAM]
+[STREAM]
+index=8
+codec_name=pcm_s24le
+profile=unknown
+codec_type=audio
+codec_tag_string=[0][0][0][0]
+codec_tag=0x0000
+sample_fmt=s32
+sample_rate=48000
+channels=1
+channel_layout=unknown
+bits_per_sample=24
+initial_padding=0
+id=N/A
+r_frame_rate=0/0
+avg_frame_rate=0/0
+time_base=1/48000
+start_pts=0
+start_time=0.000000
+duration_ts=24960
+duration=0.520000
+bit_rate=1152000
+max_bit_rate=N/A
+bits_per_raw_sample=24
+nb_frames=N/A
+nb_read_frames=N/A
+nb_read_packets=N/A
+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:captions=0
+DISPOSITION:descriptions=0
+DISPOSITION:metadata=0
+DISPOSITION:dependent=0
+DISPOSITION:still_image=0
+TAG:file_package_umid=0x060A2B340101010501010D231300114B920EA7CA8BBF1B1EAC7100D028113D5C
+[/STREAM]
+[FORMAT]
+format_name=mxf
+duration=0.520000
+bit_rate=82212369
+TAG:operational_pattern_ul=060e2b34.04010101.0d010201.01010900
+TAG:application_platform=Omneon Media Api (mqx)    
+TAG:uid=6e0aa7ca-8bbf-1b1e-a5b4-00d028113d5c
+TAG:generation_uid=780aa7ca-8bbf-1b1e-93f8-00d028113d5c
+TAG:company_name=Omneon Inc.
+TAG:product_name=Omneon Media Subsystem
+TAG:modification_date=2021-05-28T08:07:48.620000Z
+TAG:product_version=8.3.0.0.release
+TAG:product_version_num=8.3.0.0.1
+TAG:product_uid=00000000-0000-1000-8000-050e0b010602
+TAG:material_package_umid=0x060A2B340101010501010D2313009472DE0DA7CA8BBF1B1EB07100D028113D5C
+TAG:timecode=10:11:17:21
+[/FORMAT]
-- 
1.8.3.2