summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/combined/ffmpeg/ff_video_decoder.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/combined/ffmpeg/ff_video_decoder.c b/src/combined/ffmpeg/ff_video_decoder.c
index e328cee32..21fbcdcc0 100644
--- a/src/combined/ffmpeg/ff_video_decoder.c
+++ b/src/combined/ffmpeg/ff_video_decoder.c
@@ -2291,6 +2291,7 @@ static void ff_free_dr1_frames (ff_video_decoder_t *this, int all) {
They will only be replaced when new ones arrive, and freed on codec close.
They also have no AVCodec.flush () callback for manual freeing (that is,
avcodec_flush_buffers () does nothing).
+ Even worse: multithreading seems to always do it like that...
So lets tolerate this behaviour on plain stream seek. */
if (!all) {
it = NULL;
@@ -2299,7 +2300,7 @@ static void ff_free_dr1_frames (ff_video_decoder_t *this, int all) {
frames++;
if (!frames)
return;
- if (frames < 5) {
+ if (frames < 12) {
xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG,
"ffmpeg_video_dec: tolerating %d held DR1 frames.\n", frames);
return;