gstreamer/gst
Mart Raudsepp 67958ccce8 matroska: Provide audio lead-in for some lossy formats
Various audio formats require an audio lead-in to decode it properly.
Most parsers would take care of it, but when a container like matroska is
involved, the demuxer handles the seeking and without its own lead-in
handling would never even pass the lead-in data to the parser.
This commit provides an initial implementation of that for audio/mpeg,
audio/x-ac3 and audio/x-eac3 by calculating the worst case lead-in time
needed from known samplerate, potential lead-in frames need and the
maximum blocksize possible for the format (as we don't parse that out
exactly in matroskademux) and seeking that much earlier in case of
accurate seeks. This is especially important for NLE use-cases with GES.

If accurate seeking to a position that happens to have a video keyframe,
it'll go back to the previous keyframe than needed, but with typical
video files that's the best we can do anyway without falling back to
scanning the clusters, as typically only keyframes are indexed in
Cueing Data.
If the media doesn't have a CUE, then we bisect for the cluster to seek
to with the same modified time as well in case of accurate seeking,
ensuring sufficient lead-in. This code path is typically hit only with
(suboptimal) audio-only matroska files, e.g. when created with ffmpeg,
which doesn't add a CUE for audio-only mkv muxing.
2019-08-07 18:51:57 -04:00
..
alpha doc: Port documentation to hotdoc 2019-05-13 11:34:56 -04:00
apetag doc: Port documentation to hotdoc 2019-05-13 11:34:56 -04:00
audiofx doc: Port documentation to hotdoc 2019-05-13 11:34:56 -04:00
audioparsers audioparsers: add back segment clipping to parsers that have lost it 2019-06-24 14:40:58 +03:00
auparse doc: Port documentation to hotdoc 2019-05-13 11:34:56 -04:00
autodetect doc: remove xml from comments 2019-05-29 22:20:40 +02:00
avi doc: Port documentation to hotdoc 2019-05-13 11:34:56 -04:00
cutter doc: Port documentation to hotdoc 2019-05-13 11:34:56 -04:00
debugutils doc: Port documentation to hotdoc 2019-05-13 11:34:56 -04:00
deinterlace doc: Port documentation to hotdoc 2019-05-13 11:34:56 -04:00
dtmf doc: remove xml from comments 2019-05-29 22:20:40 +02:00
effectv doc: Port documentation to hotdoc 2019-05-13 11:34:56 -04:00
equalizer doc: Port documentation to hotdoc 2019-05-13 11:34:56 -04:00
flv flvmux: Clear new_tags if sending metadata in header 2019-06-24 17:37:51 +02:00
flx doc: Port documentation to hotdoc 2019-05-13 11:34:56 -04:00
goom doc: Fix some docstrings 2019-05-13 17:00:00 -04:00
goom2k1 doc: Port documentation to hotdoc 2019-05-13 11:34:56 -04:00
icydemux doc: Port documentation to hotdoc 2019-05-13 11:34:56 -04:00
id3demux doc: Port documentation to hotdoc 2019-05-13 11:34:56 -04:00
imagefreeze doc: Port documentation to hotdoc 2019-05-13 11:34:56 -04:00
interleave doc: Port documentation to hotdoc 2019-05-13 11:34:56 -04:00
isomp4 qtdemux: enlarge the maximal atom size 2019-08-07 02:46:20 +00:00
law doc: Port documentation to hotdoc 2019-05-13 11:34:56 -04:00
level doc: remove xml from comments 2019-05-29 22:20:40 +02:00
matroska matroska: Provide audio lead-in for some lossy formats 2019-08-07 18:51:57 -04:00
monoscope doc: Port documentation to hotdoc 2019-05-13 11:34:56 -04:00
multifile splitmuxsink: add the ability to mux auxilliary video streams 2019-07-15 11:46:36 +00:00
multipart doc: Port documentation to hotdoc 2019-05-13 11:34:56 -04:00
replaygain doc: Port documentation to hotdoc 2019-05-13 11:34:56 -04:00
rtp rtpmp4vpay: config-interval -1 send at idr 2019-08-01 14:28:04 +00:00
rtpmanager rtpsession: add support for buffer lists on the recv path 2019-08-07 15:32:30 -04:00
rtsp rtspsrc: expose and implement is-live property 2019-08-06 22:45:37 +00:00
shapewipe doc: Port documentation to hotdoc 2019-05-13 11:34:56 -04:00
smpte doc: fix element section documentations 2019-05-25 16:57:31 +02:00
spectrum doc: remove xml from comments 2019-05-29 22:20:40 +02:00
udp multiudpsink: Add missing socket.h include 2019-06-26 18:03:29 -04:00
videobox doc: Port documentation to hotdoc 2019-05-13 11:34:56 -04:00
videocrop doc: Port documentation to hotdoc 2019-05-13 11:34:56 -04:00
videofilter doc: Port documentation to hotdoc 2019-05-13 11:34:56 -04:00
videomixer videomixer: the documentation for GstVideoMixer2Pad is not exposed 2019-05-25 17:25:02 +02:00
wavenc doc: Port documentation to hotdoc 2019-05-13 11:34:56 -04:00
wavparse wavparse: Fix ignoring of last chunk in push mode 2019-08-07 12:09:46 +00:00
y4m doc: Port documentation to hotdoc 2019-05-13 11:34:56 -04:00
Makefile.am build: build plugins and examples in parallel where possible 2010-03-29 11:00:57 +01:00
meson.build meson: Add feature options for all plugins 2018-07-27 18:42:54 +05:30