summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReinhard Nißl <rnissl@gmx.de>2011-01-20 23:38:16 +0100
committerReinhard Nißl <rnissl@gmx.de>2011-01-20 23:38:16 +0100
commitd741057648d888a9967d6b80153d026d124a76ea (patch)
treea72ecf84d2593a648201f163086a7f38c17a5821
parentef273be4edfd6f136e864190aa096fdbb6bfa0dc (diff)
downloadxine-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.c12
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);
}