From d741057648d888a9967d6b80153d026d124a76ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Reinhard=20Ni=C3=9Fl?= Date: Thu, 20 Jan 2011 23:38:16 +0100 Subject: 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 --- src/xine-engine/video_decoder.c | 12 ++++++------ 1 file 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); } -- cgit v1.2.3