1
mirror of https://git.videolan.org/git/ffmpeg.git synced 2024-09-07 08:30:10 +02:00

qpeg: reset palette on seeks

Fixes Ticket1921

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2012-11-28 05:16:15 +01:00
parent 2754dbb6e1
commit 2c923983b6

View File

@ -301,6 +301,18 @@ static int decode_frame(AVCodecContext *avctx,
return avpkt->size;
}
static void decode_flush(AVCodecContext *avctx){
QpegContext * const a = avctx->priv_data;
int i, pal_size;
const uint8_t *pal_src;
pal_size = FFMIN(1024U, avctx->extradata_size);
pal_src = avctx->extradata + avctx->extradata_size - pal_size;
for (i=0; i<pal_size/4; i++)
a->pal[i] = 0xFFU<<24 | AV_RL32(pal_src+4*i);
}
static av_cold int decode_init(AVCodecContext *avctx){
QpegContext * const a = avctx->priv_data;
@ -309,6 +321,8 @@ static av_cold int decode_init(AVCodecContext *avctx){
a->avctx = avctx;
avctx->pix_fmt= AV_PIX_FMT_PAL8;
decode_flush(avctx);
return 0;
}
@ -333,6 +347,7 @@ AVCodec ff_qpeg_decoder = {
.init = decode_init,
.close = decode_end,
.decode = decode_frame,
.flush = decode_flush,
.capabilities = CODEC_CAP_DR1,
.long_name = NULL_IF_CONFIG_SMALL("Q-team QPEG"),
};