summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTorsten Jager <t.jager@gmx.de>2014-05-20 18:05:25 +0200
committerTorsten Jager <t.jager@gmx.de>2014-05-20 18:05:25 +0200
commit3e7a05de52af0dc72bb6716f8b452c36011d7a46 (patch)
tree569bf7a400f2cf795f92948d12d8c5596069320a /src
parent24020b6f629bd76163646c252f9d0cf61650fd63 (diff)
downloadxine-lib-3e7a05de52af0dc72bb6716f8b452c36011d7a46.tar.gz
xine-lib-3e7a05de52af0dc72bb6716f8b452c36011d7a46.tar.bz2
ff_video_decoder: fix multithreading.
Diffstat (limited to 'src')
-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;