gstreamer/gst/mxf
Edward Hervey ac483b2384 mxfdemux: Refactor index table and offset handling
* Streamline offset <=> entry handling. Historically the demuxer didn't support
information from index tables and stored the discovered information in an array
per track. When index table support was added, a parallel system was setup for
that relationship. This commit unifies this into one system with the
`find_edit_entry()` and `find_entry_for_offset()` functions.

* By extension, per-track offset entry tables are only created/used if no index
table is present for those tracks.

* Use index table information as-is. The index table system from MXF is quite
complex and there are various ways to use the information contained
within. Instead of converting that information we store the data from the tables
as-is and extract the needed information when needed.

* Handle index tables without entries (i.e. all content package units are of the
same size).

* Allow collecting index table segments as we go instead of only once if a
random-index-pack is present. This also improves support of some files in
push-mode.

* When searching for keyframe entries, use the keyframe_offset if
present (speeds up searching).

* For interleaved content (i.e. several tracks in the sample essence container),
we use a system to be able to identify the position of each track in the delta
entries of index tables.

* Handle temporal offset only on tracks which *do* need it (as specified in the
delta entries of the index tables). If present, those offsets are stored in a
pre-processed table which allows computing PTS from DTS with a simple offset.

* Add a quirk for files which are known to be have wrongly stored temporal
offsets.

* Overall opens the way to handle more types of MXF files, especially those with
non-frame-wrapping.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2371>
2021-07-21 14:33:19 +00:00
..
gstmxfelement.c gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
gstmxfelements.h gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
meson.build gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
mxf.c gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
mxfaes-bwf.c mxfdemux: Take temporal reordering from the index table into account 2017-06-27 10:47:44 +03:00
mxfaes-bwf.h Fix FSF address 2012-11-04 00:09:59 +00:00
mxfalaw.c mxfdemux: Take temporal reordering from the index table into account 2017-06-27 10:47:44 +03:00
mxfalaw.h Fix FSF address 2012-11-04 00:09:59 +00:00
mxfd10.c mxfdemux: Take temporal reordering from the index table into account 2017-06-27 10:47:44 +03:00
mxfd10.h Fix FSF address 2012-11-04 00:09:59 +00:00
mxfdemux.c mxfdemux: Refactor index table and offset handling 2021-07-21 14:33:19 +00:00
mxfdemux.h mxfdemux: Refactor index table and offset handling 2021-07-21 14:33:19 +00:00
mxfdms1.c documentation: fixed a heap o' typos 2019-11-05 09:11:25 -05:00
mxfdms1.h Fix FSF address 2012-11-04 00:09:59 +00:00
mxfdv-dif.c mxfdemux: Take temporal reordering from the index table into account 2017-06-27 10:47:44 +03:00
mxfdv-dif.h Fix FSF address 2012-11-04 00:09:59 +00:00
mxfessence.c Fix FSF address 2012-11-04 00:09:59 +00:00
mxfessence.h mxfdemux: Take temporal reordering from the index table into account 2017-06-27 10:47:44 +03:00
mxfjpeg2000.c mxfdemux: Take temporal reordering from the index table into account 2017-06-27 10:47:44 +03:00
mxfjpeg2000.h Fix FSF address 2012-11-04 00:09:59 +00:00
mxfmetadata.c mxf: Demote error message when resolving valid empty reference 2021-07-21 14:33:19 +00:00
mxfmetadata.h mxfdemux: Check validity of interleaved File Package 2021-07-05 07:07:15 +00:00
mxfmpeg.c mxfdemux: Take temporal reordering from the index table into account 2017-06-27 10:47:44 +03:00
mxfmpeg.h Fix FSF address 2012-11-04 00:09:59 +00:00
mxfmux.c gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
mxfmux.h mxfmux: Write temporal offset and correct keyframe offset into index table 2017-06-27 15:04:22 +03:00
mxfprores.c mxfdemux: add support for Apple ProRes 2020-01-15 11:51:20 +00:00
mxfprores.h mxfdemux: add support for Apple ProRes 2020-01-15 11:51:20 +00:00
mxfquark.c mxf: Add support for parsing filler structural components 2012-12-05 12:24:30 +01:00
mxfquark.h mxf: Add support for parsing filler structural components 2012-12-05 12:24:30 +01:00
mxftypes.c mxfdemux: Refactor index table and offset handling 2021-07-21 14:33:19 +00:00
mxftypes.h mxfdemux: Refactor index table and offset handling 2021-07-21 14:33:19 +00:00
mxful.c mxfdemux: Handle zero-sized KLV items better and don't assert on them 2016-11-25 15:59:44 +02:00
mxful.h mxfmux: Write This Generation UID into the Identification metadata 2016-01-28 15:38:45 +01:00
mxfup.c mxfdemux: Take temporal reordering from the index table into account 2017-06-27 10:47:44 +03:00
mxfup.h Fix FSF address 2012-11-04 00:09:59 +00:00
mxfvanc.c mxfvanc: Handle empty ANC essence 2021-07-01 11:04:03 +02:00
mxfvanc.h mxfdemux/mux: Add support for CEA-708 CDP from S436 essence tracks 2020-06-25 06:59:18 +00:00
mxfvc3.c mxfdemux: Also allow picture essence element type 0x05 for VC-3 2019-08-12 18:19:46 +00:00
mxfvc3.h Fix FSF address 2012-11-04 00:09:59 +00:00