gstreamer/gst
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
..
accurip gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
adpcmdec gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
adpcmenc gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
aiff gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
asfmux gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
audiobuffersplit gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
audiofxbad gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
audiolatency audiolatency: Drop incoming downstream stick events 2021-05-20 15:50:55 +09:00
audiomixmatrix gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
audiovisualizers gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
autoconvert gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
bayer gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
camerabin2 Use gst_element_request_pad_simple... 2021-05-05 06:17:14 +00:00
codecalpha alphadecodebin: Fix stall due to QoS 2021-06-14 16:33:15 -04:00
coloreffects gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
debugutils debugutils: Introduce videocodectestsink 2021-06-07 17:11:32 -04:00
dvbsubenc gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
dvbsuboverlay gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
dvdspu gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
faceoverlay gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
festival gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
fieldanalysis gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
freeverb gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
frei0r documentation: fixed a heap o' typos 2019-11-05 09:11:25 -05:00
gaudieffects gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
gdp gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
geometrictransform gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
id3tag gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
inter gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
interlace interlace: Push the reconfigure event in the right direction 2021-07-06 07:41:03 +00:00
ivfparse gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
ivtc gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
jp2kdecimator gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
jpegformat jpegparse: Don't generate timestamp for 0/1 framerates 2021-04-23 17:54:30 +00:00
librfb gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
midi gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
mpegdemux gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
mpegpsmux gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
mpegtsdemux tsdemux: Clear all streams when rewinding 2021-06-03 22:54:12 +00:00
mpegtsmux mpegtsmux: Quieten "missed PCR" warnings in VBR mode. 2021-07-15 04:46:03 +00:00
mxf mxfdemux: Refactor index table and offset handling 2021-07-21 14:33:19 +00:00
netsim gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
onvif gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
pcapparse gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
pnm gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
proxy gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
rawparse gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
removesilence gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
rist rist: Plug leak of rtcp_send_addr 2021-05-07 11:06:53 +00:00
rtmp2 rtmp2src: workaround a GLib race when destroying a GMainContext/GSource 2021-07-15 14:10:04 +10:00
rtp rtpsrc: Plug leak of rtcp_send_addr 2021-05-07 12:34:20 +00:00
sdp Use gst_element_request_pad_simple... 2021-05-05 06:17:14 +00:00
segmentclip gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
siren gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
smooth gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
speed gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
subenc gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
switchbin switchbin: When collecting srcpad caps, don't intersect with path caps. 2021-04-12 14:27:00 +00:00
timecode avwait: Don't consider it a segment change if the segment is the same except for the position 2021-06-23 16:03:38 +00:00
transcode Use gst_element_request_pad_simple... 2021-05-05 06:17:14 +00:00
videofilters gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
videoframe_audiolevel gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
videoparsers vp9parse: Skip parsing decode-only frame 2021-07-14 14:32:57 +00:00
videosignal gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
vmnc gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
y4m gst-plugins: allow per feature registration 2021-04-11 16:16:55 +00:00
meson.build Introduce CODEC Alpha plugin 2021-05-11 16:06:56 -04:00