Sebastian Dröge
efb2b6d478
qtdemux: Log cslg_shift that was determined
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1294 >
2021-11-12 17:51:04 +00:00
Sebastian Dröge
12e918428a
qtdemux: Use a composition time offset of 0 for "no decode samples" for the time being
...
This needs codec-specific handling, but using 0 instead of G_MININT32 at
least gives somewhat reasonable behaviour.
See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/883
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1294 >
2021-11-12 17:51:03 +00:00
Sebastian Dröge
ad412d257b
qtdemux: Always check ctts for unreasonably large offsets
...
If this happens then ignore the whole ctts. Previously we only did this
if the PTS/DTS shift was determined from the ctts instead of the cslg.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1294 >
2021-11-12 17:51:03 +00:00
Sebastian Dröge
a33e30cfc4
qtdemux: Only adjust segment.stop by cslg_shift if stop is not -1
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1294 >
2021-11-12 17:51:03 +00:00
Sebastian Dröge
bb5a5ae8a8
qtdemux: Handle negative composition offsets in the trun box the same way as for non-fragmented streams
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1294 >
2021-11-12 17:51:03 +00:00
Sebastian Dröge
767e8bf668
qtdemux: Parse ctts version
...
Negative composition time offsets are only allowed with version 1 of the
box, however we parse it as a signed value also for version 0 boxes as
unfortunately there are such files out there and it's unlikely to have
(valid) huge composition offsets.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1294 >
2021-11-12 17:51:03 +00:00
Sebastian Dröge
284dd5443f
qtdemux: Add support for version 1 cslg boxes
...
They use 64 bit fields instead of 32 bit.
Also parse offset as a signed integer (in both versions) and clamp it to
a positive value as negative values don't really interest us here.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1294 >
2021-11-12 17:51:03 +00:00
Sebastian Dröge
7f105a919a
qtdemux: Don't free cslg data that we don't own on corrupt files
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1294 >
2021-11-12 17:51:03 +00:00
Zhao, Gang
6cad2a7150
qtdemux: Fix can not demux Opus track made by qtmux
...
Opus stream info is read from dOps box [1]. The offset of dOps box in Opus box is different in mp4a version 1 and 0 [2]. Calculate the offset of dOps box according to mp4a version.
[1] https://opus-codec.org/docs/opus_in_isobmff.html
[2] subprojects/gst-plugins-good/gst/isomp4/atoms.c:sample_entry_mp4a_copy_data:2146
Fixed: https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/918
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1329 >
2021-11-09 17:57:49 +00:00
Jan Schmidt
f6ed40c93a
qtdemux: Fix text and closed-caption handling.
...
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1182
broke text and and closed caption extraction when introducing WebVTT
support, by making the output buffers not have timestamps any more.
Fix that by making the process functions copy buffer metadata
when generating new output buffers.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1262 >
2021-10-28 21:45:33 +11:00
Jan Schmidt
6cada5b064
qtdemux: Add support for wvtt (WebVTT) subtitles.
...
WebVTT in ISO MP4 is specified in ISO 14496-30,
and needed for DASH support. It's stored in an
mp4 specific format. To handle it compatibly,
the wvtt boxes are converted back into WebVTT text
and pushed as application/x-subtitle-vtt
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1182 >
2021-10-19 08:56:58 +00:00
Jan Schmidt
41d6f47f2b
isomp4: Split buffer process functions.
...
Split the different handling for closed captions, VobSub subpicture
and timed text samples into separate simplified process functions.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1182 >
2021-10-19 08:56:58 +00:00
Jan Schmidt
c47c6b4c2b
isomp4: Use a function pointer for buffer splitting.
...
Swap the `need_process` boolean check on qtdemux streams
for a direct function pointer to the splitting function,
so we can stop adding extra cases to the single growing
`gst_qtdemux_process_buffer()` function.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1182 >
2021-10-19 08:56:58 +00:00
Thibault Saunier
5ff769d731
Move files from gst-plugins-good into the "subprojects/gst-plugins-good/" subdir
2021-09-24 16:13:50 -03:00