Marton Balint
02935c2c93
avformat/mxfdec: support subsecond precision of decoded timestamps
...
Signed-off-by: Marton Balint <cus@passwd.hu>
2018-12-25 20:16:29 +01:00
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>
2018-12-25 20:16:29 +01:00
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>
2018-12-22 22:28:52 +01:00
Paul B Mahol
e5a0013c4a
avformat/mxfdec: fix error check in macro
...
Fixes #6750 .
2018-12-13 23:51:53 +01:00
Paul B Mahol
3981f262ac
avformat/mxfdec: fix indentation
2018-12-09 20:12:23 +01:00
Paul B Mahol
cc6208cde2
avformat/mxfdec: set codec_tag for prores codec
2018-12-07 20:08:37 +01:00
Baptiste Coudurier
ef23ed6fe9
lavf/mxfdec: demux s436m as eia608 subtitle track
2018-10-12 12:28:28 -07:00
Baptiste Coudurier
9b7ab57953
lavf/mxfenc: support creating s436m data tracks
2018-10-12 12:28:22 -07:00
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>
2018-09-05 22:41:09 +02:00
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>
2018-07-24 09:06:55 +02:00
Baptiste Coudurier
b420fead53
avformat/mxfdec: only call mxf_free_metadataset when ctx_size is != 0, otherwise ctx == mxf
2018-07-19 08:25:24 -07:00
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>
2018-07-13 22:58:40 +02:00
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>
2018-07-05 19:52:42 +02:00
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>
2018-07-04 21:52:21 +02:00
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>
2018-07-04 21:52:21 +02:00
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>
2018-07-04 21:52:21 +02:00
Marton Balint
afd09131ff
avformat/mxfdec: fix indentation and rename mxf_read_packet_old
...
Signed-off-by: Marton Balint <cus@passwd.hu>
2018-07-04 21:52:21 +02:00
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>
2018-07-04 21:52:21 +02:00
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>
2018-06-24 20:42:35 +02:00
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>
2018-06-24 20:42:35 +02:00
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>
2018-06-24 20:42:35 +02:00
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>
2018-06-24 20:42:35 +02:00
Marton Balint
ae64c68208
avformat/mxfdec: make edit_units_per_packet a track property
...
Signed-off-by: Marton Balint <cus@passwd.hu>
2018-06-24 20:42:35 +02:00
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>
2018-06-24 20:42:35 +02:00
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>
2018-06-24 20:42:35 +02:00
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>
2018-06-24 20:42:35 +02:00
Marton Balint
3cb19ba97e
avformat/mxfdec: add some essence container uls from SMPTE draft
...
Signed-off-by: Marton Balint <cus@passwd.hu>
2018-06-24 20:42:35 +02:00
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>
2018-06-24 20:42:35 +02:00
Marton Balint
bfa0b50441
avformat/mxfdec: store next_klv in KLVPacket
...
Signed-off-by: Marton Balint <cus@passwd.hu>
2018-06-24 20:42:35 +02:00
Marton Balint
2bd26dea66
avformat/mxfdec: add support for recognizing timed text streams
...
Signed-off-by: Marton Balint <cus@passwd.hu>
2018-06-08 23:21:20 +02:00
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>
2018-06-08 23:20:27 +02:00
Marton Balint
5d3f78383e
avformat/mxfdec: only disallow seek on metadata streams
...
Signed-off-by: Marton Balint <cus@passwd.hu>
2018-06-08 23:20:27 +02:00
Marton Balint
f9e77586cb
avformat/mxfdec: recognize SMPTE 436 VBI data
...
Signed-off-by: Marton Balint <cus@passwd.hu>
2018-06-08 23:20:27 +02:00
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>
2018-06-08 23:20:27 +02:00
Marton Balint
1616b1be5a
avformat/mxfdec: add some missing picture_essence_container_uls
...
Signed-off-by: Marton Balint <cus@passwd.hu>
2018-05-30 23:02:59 +02:00
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>
2018-05-30 23:02:59 +02:00
Marton Balint
f932e49aab
avformat/mxfdec: fix klv_decode_ber_length return value usage
...
Signed-off-by: Marton Balint <cus@passwd.hu>
2018-05-30 23:02:59 +02:00
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>
2018-03-09 20:37:49 +01:00
Marton Balint
90756e67a0
avformat/mxfdec: use binary search in mxf_absolute_bodysid_offset
...
Signed-off-by: Marton Balint <cus@passwd.hu>
2018-03-09 20:37:49 +01:00
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>
2018-03-09 20:37:49 +01:00
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>
2018-03-01 22:03:53 +01:00
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>
2018-03-01 22:03:53 +01:00
Marton Balint
0827c78e98
avformat/mxfdec: use body_offset of the partitions in mxf_absolute_bodysid_offset
...
Use body_offset of the partitions to search for the partition with the given
offset in the essence. This makes the function find the correct partition for
non frame-wrapped essences as well, where only the essence data is part of the
the edit unit byte count, not the KLV-s.
Signed-off-by: Marton Balint <cus@passwd.hu>
2018-03-01 22:03:53 +01:00
Marton Balint
5b36379eb6
avformat/mxfdec: set index_duration from the track using the index
...
Also use original_duration as index_duration is in edit units.
Signed-off-by: Marton Balint <cus@passwd.hu>
2018-03-01 22:03:53 +01:00
Marton Balint
c46e430c5b
avformat/mxfdec: fix sorting of index segments
...
Fixes ticket #5320 .
Signed-off-by: Marton Balint <cus@passwd.hu>
2018-03-01 22:03:53 +01:00
Marton Balint
9492bb58ee
avformat/mxfdec: use both body_sid and track_number to find the track of a packet
...
In order to do that we have to parse the EssenceContainerData and assign the
proper body_sid and index_sid to the tracks from the corresponding source
packages.
This fixes packets returned in the wrong stream for some OP1-b files.
Based on a patch by Alex Mogurenko from https://github.com/da8eat/FFmpeg
Reference: http://mogurenko.com/2018/01/02/mxf-op1b-ffmpeg-part1/
Signed-off-by: Marton Balint <cus@passwd.hu>
2018-03-01 22:03:53 +01:00
Marton Balint
9ec3e61fc3
avformat/mxfdec: use full UMID to resolve source package
...
Signed-off-by: Marton Balint <cus@passwd.hu>
2018-03-01 22:03:53 +01:00
Marton Balint
5c2fd59700
avformat/mxfdec: use the first system item if available for calculating essence_offset
...
Also add an additional system item key.
Fixes parsing of ffmpeg-bugs/trac/ticket2817/warehouse.mxf
Signed-off-by: Marton Balint <cus@passwd.hu>
2018-03-01 22:03:53 +01:00
Marton Balint
e9b0e42e77
avformat/mxfdec: fix essence_offset calculation
...
The reference point for a KAG is the first byte of the key of a Partition Pack.
Fixes ticket #2817 .
Fixes ticket #5317 .
Signed-off-by: Marton Balint <cus@passwd.hu>
2018-03-01 22:03:53 +01:00
Marton Balint
d54a04b69b
avformat/mxfdec: fix indentation
...
Signed-off-by: Marton Balint <cus@passwd.hu>
2018-03-01 22:03:53 +01:00