Marton Balint
3dee6c0997
avformat/mxfdec: fix and enhance RIP KLV length checks
...
KLV length is BER encoded (variable size), but the code assumed the encoding to
always use 4 bytes.
Fixes parsing Random Index Pack in samples/MXF/issue2160/PW0805A0V01.4C5B5636.EFA330.mxf.
Signed-off-by: Marton Balint <cus@passwd.hu>
6 years ago
Marton Balint
fc15e8306f
avformat/mxfdec: take into account run-in in find_partition_by_offset
...
Also rename the function to find_partition_by_absolute_offset to make it clear
offset is absolute.
Signed-off-by: Marton Balint <cus@passwd.hu>
6 years ago
Marton Balint
5b6960f955
avformat/mxfdec: guess wrapping of tracks by other tracks with the same body sid
...
This affects the following samples:
samples/ffmpeg-bugs/roundup/issue1775/av_seek_frame_failure.mxf
samples/ffmpeg-bugs/trac/ticket1957/16ch.mxf
samples/ffmpeg-bugs/trac/ticket5016/r0.mxf
samples/ffmpeg-bugs/trac/ticket5016/r1.mxf
samples/ffmpeg-bugs/trac/ticket5316/hq.MXF
samples/ffmpeg-bugs/trac/ticket5316/hqx.MXF
Some AVPacket->pos values are changed because for frame wrapped tracks we point
to the KLV offset and not the data.
Signed-off-by: Marton Balint <cus@passwd.hu>
6 years ago
Marton Balint
a5136426a7
avformat/mxfdec: rework mxf_essence_container_end
...
We find the last essence container much faster if we go through the partitions
backwards...
Signed-off-by: Marton Balint <cus@passwd.hu>
6 years ago
Marton Balint
f9840cd2b5
avformat/mxfdec: use operational_pattern_ul instead of operational_pattern for metadata
...
This makes it more consistent with other metadata keys.
Signed-off-by: Marton Balint <cus@passwd.hu>
6 years ago
Marton Balint
6ed7df5b20
avformat/mxfdec: export operational pattern UL as file metadata
...
Can be useful for API users as ffmpeg/libavformat can't properly support some
operational patterns.
Signed-off-by: Marton Balint <cus@passwd.hu>
6 years ago
Carl Eugen Hoyos
4d8875ec23
lavf: Constify the probe function argument.
...
Reviewed-by: Lauri Kasanen
Reviewed-by: Tomas Härdin
6 years ago
Matthew McKenna
f95aee2b72
Add the Canon XF-HEVC UL to the picture essence container UL list
6 years ago
Marton Balint
02935c2c93
avformat/mxfdec: support subsecond precision of decoded timestamps
...
Signed-off-by: Marton Balint <cus@passwd.hu>
6 years ago
Marton Balint
d0e43cf1a8
avformat/mxfdec: replace obsolete comment
...
We no longer use strftime directly but use av_timegm to get an int64_t timestamp.
Signed-off-by: Marton Balint <cus@passwd.hu>
6 years ago
Michael Niedermayer
8b53d1322f
avformat/mxfdec: Do not process zero modified_date timestamp.
...
This causes windows to fail as the timestamp is outside its supported range
Fixes regression & fate
Reviewed-by: Marton Balint <cus@passwd.hu>
Reviewed-by: James Almer <jamrial@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
6 years ago
Paul B Mahol
e5a0013c4a
avformat/mxfdec: fix error check in macro
...
Fixes #6750 .
6 years ago
Paul B Mahol
3981f262ac
avformat/mxfdec: fix indentation
6 years ago
Paul B Mahol
cc6208cde2
avformat/mxfdec: set codec_tag for prores codec
6 years ago
Baptiste Coudurier
ef23ed6fe9
lavf/mxfdec: demux s436m as eia608 subtitle track
6 years ago
Baptiste Coudurier
9b7ab57953
lavf/mxfenc: support creating s436m data tracks
6 years ago
Marton Balint
6aaf1b504c
avformat/mxfdec: do not use sound essence descriptor quantization bits for bits_per_coded_sample
...
It refers to the uncompressed quantization, therefore is not correct for AAC.
Also change mxf_set_pts to work based on current edit unit if
bits_per_coded_sample is not available.
Fixes error messages in the sample of ticket #7366 .
Signed-off-by: Marton Balint <cus@passwd.hu>
6 years ago
Marton Balint
a5c17cf43e
avformat/mxfdec: drop invalid index table segments when sorting them
...
This way if an index table segment is present multiple times, we can always use
the proper one instead of the invalid one.
Fixes seeking in the sample of ticket #5671 .
Signed-off-by: Marton Balint <cus@passwd.hu>
6 years ago
Baptiste Coudurier
b420fead53
avformat/mxfdec: only call mxf_free_metadataset when ctx_size is != 0, otherwise ctx == mxf
6 years ago
Marton Balint
e5ff2c0c06
avformat/mxfdec: only return stream indexes which have a corresponding track
...
Without this check some crafted files might crash because a packet might be
demuxed which have no corresponding mxf track.
Signed-off-by: Marton Balint <cus@passwd.hu>
6 years ago
Michael Niedermayer
bab0716c7f
avformat/mxfdec: Fix av_log context
...
Fixes: out of array access
Fixes: mxf-crash-1c2e59bf07a34675bfb3ada5e1ec22fa9f38f923
Found-by: Paul Ch <paulcher@icloud.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
6 years ago
Marton Balint
e37741d26a
avformat/mxfdec: add support for opAtom without index
...
Clip wrapped code is capable of doing some magic for such files.
Signed-off-by: Marton Balint <cus@passwd.hu>
6 years ago
Marton Balint
5861bc9e75
avformat/mxfdec: guess constant byte count indexes based on track duration
...
For clip wrapped essences this should work. Also, since index_edit_rate can now
be different from track edit rate, remove overriding track edit rate.
Signed-off-by: Marton Balint <cus@passwd.hu>
6 years ago
Marton Balint
c6fff3d32f
avformat/mxfdec: take into account index_edit_rate
...
Fixes samples/ffmpeg-bugs/roundup/issue591/02785736.mxf
Fixes samples/ffmpeg-bugs/trac/ticket1916/pcm_s24le_to_pcm_s16le.mxf
Signed-off-by: Marton Balint <cus@passwd.hu>
6 years ago
Marton Balint
afd09131ff
avformat/mxfdec: fix indentation and rename mxf_read_packet_old
...
Signed-off-by: Marton Balint <cus@passwd.hu>
6 years ago
Marton Balint
00a2652df3
avformat/mxfdec: add support for clip wrapped essences
...
Also use common code with opAtom.
Fixes ticket #2776 .
Partially fixes ticket #5671 .
Fixes ticket #5866 .
Signed-off-by: Marton Balint <cus@passwd.hu>
6 years ago
Marton Balint
404dc6bab5
avformat/mxfdec: avoid index_table->nb_ptses overflow in mxf_compute_ptses_fake_index
...
Signed-off-by: Marton Balint <cus@passwd.hu>
6 years ago
Marton Balint
865e0c2d66
avformat/mxfdec: compute sample_count for all streams on seek
...
sample_count will be used for per-stream current_edit_unit.
Signed-off-by: Marton Balint <cus@passwd.hu>
6 years ago
Marton Balint
e7b1a83718
avformat/mxfdec: add support for returning the partition for mxf_edit_unit_absolute_offset and mxf_absolute_bodysid_offset
...
Signed-off-by: Marton Balint <cus@passwd.hu>
6 years ago
Marton Balint
1cea0e73d2
avformat/mxfdec: make current_edit_unit a parameter of mxf_compute_samples
...
No change in functionality.
Signed-off-by: Marton Balint <cus@passwd.hu>
6 years ago
Marton Balint
ae64c68208
avformat/mxfdec: make edit_units_per_packet a track property
...
Signed-off-by: Marton Balint <cus@passwd.hu>
6 years ago
Marton Balint
f217be2cb8
avformat/mxfdec: simply use the first essence element for non frame-wrapped partition essence offset
...
Also add the canopus essence element to the list of the recognized essence
element keys.
Signed-off-by: Marton Balint <cus@passwd.hu>
6 years ago
Marton Balint
6345770eeb
avformat/mxfdec: compute both essence_offset and essence_length in mxf_compute_essence_containers
...
Also compute the correct essence_offset and essence_length for all clip wrapped
essences.
Signed-off-by: Marton Balint <cus@passwd.hu>
6 years ago
Marton Balint
459282389c
avformat/mxfdec: extend mxf_handle_missing_index_segment for all clip wrapped essences
...
Also make sure we set a valid track index sid and a valid track edit rate in
order for the index to be useful.
Signed-off-by: Marton Balint <cus@passwd.hu>
6 years ago
Marton Balint
3cb19ba97e
avformat/mxfdec: add some essence container uls from SMPTE draft
...
Signed-off-by: Marton Balint <cus@passwd.hu>
6 years ago
Marton Balint
7ec90b168b
avformat/mxfdec: add support for determining essence wrapping scheme
...
Some code is based on bmxlib-libmxf/mxf/mxf_utils.c.
Signed-off-by: Marton Balint <cus@passwd.hu>
6 years ago
Marton Balint
bfa0b50441
avformat/mxfdec: store next_klv in KLVPacket
...
Signed-off-by: Marton Balint <cus@passwd.hu>
6 years ago
Marton Balint
2bd26dea66
avformat/mxfdec: add support for recognizing timed text streams
...
Signed-off-by: Marton Balint <cus@passwd.hu>
7 years ago
Marton Balint
d48fb904fa
avformat/mxfdec: remove check for NULL MXFTrack in mxf_set_pts
...
It cannot happen for video streams.
Signed-off-by: Marton Balint <cus@passwd.hu>
7 years ago
Marton Balint
5d3f78383e
avformat/mxfdec: only disallow seek on metadata streams
...
Signed-off-by: Marton Balint <cus@passwd.hu>
7 years ago
Marton Balint
f9e77586cb
avformat/mxfdec: recognize SMPTE 436 VBI data
...
Signed-off-by: Marton Balint <cus@passwd.hu>
7 years ago
Marton Balint
183db8a80b
avformat/mxfdec: use MXFCodecUL struct to store essence description for data_essence_container_uls
...
Signed-off-by: Marton Balint <cus@passwd.hu>
7 years ago
Marton Balint
1616b1be5a
avformat/mxfdec: add some missing picture_essence_container_uls
...
Signed-off-by: Marton Balint <cus@passwd.hu>
7 years ago
Marton Balint
e7498792b6
avformat/mxfdec: use int math for sample count calculation
...
This also changes the rounding to nearest.
Signed-off-by: Marton Balint <cus@passwd.hu>
7 years ago
Marton Balint
f932e49aab
avformat/mxfdec: fix klv_decode_ber_length return value usage
...
Signed-off-by: Marton Balint <cus@passwd.hu>
7 years ago
Marton Balint
cf5ffe0183
avformat/mxfdec: do not allow more partitions than INT_MAX/2
...
Some math (e.g: partition binary search) overflows if we have that many
parititions.
Signed-off-by: Marton Balint <cus@passwd.hu>
7 years ago
Marton Balint
90756e67a0
avformat/mxfdec: use binary search in mxf_absolute_bodysid_offset
...
Signed-off-by: Marton Balint <cus@passwd.hu>
7 years ago
Marton Balint
3aaf97e773
avformat/mxfdec: fix opAtom audio demuxing
...
Consider edit rate when determining edit_units_per_packet and also make sure
that checks are done in edit rate time base and not in stream time base.
Fixes some errors reported with the sample in ticket #5863 .
Signed-off-by: Marton Balint <cus@passwd.hu>
7 years ago
Marton Balint
f50741147c
avformat/mxfdec: always use a stream which matches the first index table when seeking
...
Obviously this is still not perfect, but better then it was. Using the first
index table and mxf->current_edit_unit is still hardcoded in many places, so
this change has hopefully the less chance of breaking anything that works
now.
Signed-off-by: Marton Balint <cus@passwd.hu>
7 years ago
Marton Balint
e8e1c22f21
avformat/mxfdec: compute sample_count after seek from index for audio streams
...
This fixes audio timestamps if the audio streams are not frame wrapped with the
video.
Signed-off-by: Marton Balint <cus@passwd.hu>
7 years ago