Browse Source

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@gmail.com>
tags/n0.8
Stefano Sabatini Ronald S. Bultje 14 years ago
parent
commit
f4e043ff63
1 changed files with 3 additions and 6 deletions
  1. +3
    -6
      libavcodec/qpeg.c

+ 3
- 6
libavcodec/qpeg.c View File

@@ -259,12 +259,9 @@ static int decode_frame(AVCodecContext *avctx,
int delta; int delta;
const uint8_t *pal = av_packet_get_side_data(avpkt, AV_PKT_DATA_PALETTE, NULL); 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; return -1;
} }
outdata = a->pic.data[0]; outdata = a->pic.data[0];


Loading…
Cancel
Save