[FFmpeg-cvslog] qpeg: use reget_buffer() in decode_frame()

Stefano Sabatini git at videolan.org
Thu Apr 28 04:28:30 CEST 2011


ffmpeg | branch: master | Stefano Sabatini <stefano.sabatini-lala at poste.it> | Tue Apr 26 11:51:50 2011 +0200| [f4e043ff63935a71b98a36bc98b501c36ceadb92] | committer: Ronald S. Bultje

qpeg: use reget_buffer() in decode_frame()

Decoder relies on previous frame data, so use reget_buffer().

This also set frame->reference to 3, as the frame will be requested
unmodified later so it shouldn't be modified by the application.

Fix playback of file Clock.avi.

Signed-off-by: Ronald S. Bultje <rsbultje at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=f4e043ff63935a71b98a36bc98b501c36ceadb92
---

 libavcodec/qpeg.c |    9 +++------
 1 files changed, 3 insertions(+), 6 deletions(-)

diff --git a/libavcodec/qpeg.c b/libavcodec/qpeg.c
index c96184f..5dd2a2d 100644
--- a/libavcodec/qpeg.c
+++ b/libavcodec/qpeg.c
@@ -259,12 +259,9 @@ static int decode_frame(AVCodecContext *avctx,
     int delta;
     const uint8_t *pal = av_packet_get_side_data(avpkt, AV_PKT_DATA_PALETTE, NULL);
 
-    if(p->data[0])
-        avctx->release_buffer(avctx, p);
-
-    p->reference= 0;
-    if(avctx->get_buffer(avctx, p) < 0){
-        av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
+    p->reference = 3;
+    if (avctx->reget_buffer(avctx, p) < 0) {
+        av_log(avctx, AV_LOG_ERROR, "reget_buffer() failed\n");
         return -1;
     }
     outdata = a->pic.data[0];



More information about the ffmpeg-cvslog mailing list