From f4e043ff63935a71b98a36bc98b501c36ceadb92 Mon Sep 17 00:00:00 2001 From: Stefano Sabatini Date: Tue, 26 Apr 2011 11:51:50 +0200 Subject: [PATCH] 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 --- libavcodec/qpeg.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/libavcodec/qpeg.c b/libavcodec/qpeg.c index c96184ff38..5dd2a2d5ca 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];