mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-20 21:16:24 +00:00
When seeking in pull mode without an index (because there is no index or the file is still being written to) we bisect to find the right cluster to jump to. However, it's possible the cluster we found doesn't start with a keyframe, which leads to decoding errors, so if we know that the found cluster starts with a delta frame try to scan back to previous clusters until we find one that starts with a keyframe or we are back at the beginning. Theoretically it's possible that all clusters but the first one do not start with a keyframe and the keyframes are in the middle of clusters, but this is extremely unusual, so we will cover this case with a basic sanity check. This problem is especially problematic with content recorded with dynamic GOP and FPS, where long GOP lengths and low FPS may cause a large set of clusters to lack key frames. Playback would then be started on a non-keyframe cluster, and the large number of such frames would make the content impossible to decode fo a long stretch of time. Based on patch by: Mats Lindestam <matslm@axis.com> https://bugzilla.gnome.org/show_bug.cgi?id=790696 |
||
---|---|---|
.. | ||
ebml-ids.h | ||
ebml-read.c | ||
ebml-read.h | ||
ebml-write.c | ||
ebml-write.h | ||
lzo.c | ||
lzo.h | ||
Makefile.am | ||
matroska-demux.c | ||
matroska-demux.h | ||
matroska-ids.c | ||
matroska-ids.h | ||
matroska-mux.c | ||
matroska-mux.h | ||
matroska-parse.c | ||
matroska-parse.h | ||
matroska-read-common.c | ||
matroska-read-common.h | ||
matroska.c | ||
meson.build | ||
webm-mux.c | ||
webm-mux.h |