summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReinhard Nißl <rnissl@gmx.de>2009-04-02 00:00:20 +0200
committerReinhard Nißl <rnissl@gmx.de>2009-04-02 00:00:20 +0200
commit5377b8eeefd5f28869098d70b674df663dfd807b (patch)
tree95ac949f73220abc649f4b56894c1de2d477a7a6
parent7a61cfaeba686449903c7fb6bcac28227509b71a (diff)
downloadxine-lib-5377b8eeefd5f28869098d70b674df663dfd807b.tar.gz
xine-lib-5377b8eeefd5f28869098d70b674df663dfd807b.tar.bz2
FFmpeg: add support for reordered_opaque to custom get_buffer() implementation.
After adding support for PTS reordering some time ago, any codecs using direct rendering did no longer pass PTS values to the images due to missing support for reordered_opaque in xine-lib's custom get_buffer() function. With this fix, A/V sync should now be as before or even better, due to PTS reordering (the intent of the earlier changesets).
-rw-r--r--src/combined/ffmpeg/ff_video_decoder.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/combined/ffmpeg/ff_video_decoder.c b/src/combined/ffmpeg/ff_video_decoder.c
index 88a10504b..15b9f056d 100644
--- a/src/combined/ffmpeg/ff_video_decoder.c
+++ b/src/combined/ffmpeg/ff_video_decoder.c
@@ -225,6 +225,11 @@ static int get_buffer(AVCodecContext *context, AVFrame *av_frame){
av_frame->type= FF_BUFFER_TYPE_USER;
+#ifdef AVCODEC_HAS_REORDERED_OPAQUE
+ /* take over pts for this frame to have it reordered */
+ av_frame->reordered_opaque = context->reordered_opaque;
+#endif
+
xine_list_push_back(this->dr1_frames, av_frame);
return 0;