diff options
author | Reinhard Nißl <rnissl@gmx.de> | 2011-01-20 23:38:16 +0100 |
---|---|---|
committer | Reinhard Nißl <rnissl@gmx.de> | 2011-01-20 23:38:16 +0100 |
commit | d741057648d888a9967d6b80153d026d124a76ea (patch) | |
tree | a72ecf84d2593a648201f163086a7f38c17a5821 | |
parent | ef273be4edfd6f136e864190aa096fdbb6bfa0dc (diff) | |
download | xine-lib-d741057648d888a9967d6b80153d026d124a76ea.tar.gz xine-lib-d741057648d888a9967d6b80153d026d124a76ea.tar.bz2 |
Avoid video clock errors due to decoder flush at discontinuity.
H.264 decoders store a couple of frames in their display picture buffer.
Calling flush before discontinuity my yield images with pts beyond pts
boundery and therefore cause clock errors.
Calling discontinuity before flush resets all pts to 0 before yielding
the images.
--HG--
extra : transplant_source : %9CNpV%B5%83%83%23%F5%C3%09%E43%E2%DFo.%7E%D9%C7
-rw-r--r-- | src/xine-engine/video_decoder.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/xine-engine/video_decoder.c b/src/xine-engine/video_decoder.c index f70bb82bb..984a71bf8 100644 --- a/src/xine-engine/video_decoder.c +++ b/src/xine-engine/video_decoder.c @@ -307,10 +307,10 @@ static void *video_decoder_loop (void *stream_gen) { if (stream->video_decoder_plugin) { running_ticket->acquire(running_ticket, 0); - /* it might be a long time before we get back from a discontinuity, so we better flush - * the decoder before */ - stream->video_decoder_plugin->flush (stream->video_decoder_plugin); stream->video_decoder_plugin->discontinuity (stream->video_decoder_plugin); + /* it might be a long time before we get back from a handle_video_discontinuity, + * so we better flush the decoder before */ + stream->video_decoder_plugin->flush (stream->video_decoder_plugin); running_ticket->release(running_ticket, 0); } @@ -323,10 +323,10 @@ static void *video_decoder_loop (void *stream_gen) { if (stream->video_decoder_plugin) { running_ticket->acquire(running_ticket, 0); - /* it might be a long time before we get back from a discontinuity, so we better flush - * the decoder before */ - stream->video_decoder_plugin->flush (stream->video_decoder_plugin); stream->video_decoder_plugin->discontinuity (stream->video_decoder_plugin); + /* it might be a long time before we get back from a handle_video_discontinuity, + * so we better flush the decoder before */ + stream->video_decoder_plugin->flush (stream->video_decoder_plugin); running_ticket->release(running_ticket, 0); } |