summaryrefslogtreecommitdiff
path: root/src
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
commit0192fbb6f24338b1ad48fd0a1e2bfed928656baa (patch)
treeecf124f8bb407659c77f920d4e30d194054588ef /src
parentae0af713c1bd385aa2d6aa3cbe94ae41c124b63e (diff)
downloadxine-lib-0192fbb6f24338b1ad48fd0a1e2bfed928656baa.tar.gz
xine-lib-0192fbb6f24338b1ad48fd0a1e2bfed928656baa.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.
Diffstat (limited to 'src')
-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 29bc26d69..359be22ee 100644
--- a/src/xine-engine/video_decoder.c
+++ b/src/xine-engine/video_decoder.c
@@ -308,10 +308,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);
}
@@ -324,10 +324,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);
}