[FFmpeg-cvslog] qpeg: reset palette on seeks

Michael Niedermayer git at videolan.org
Wed Nov 28 05:26:07 CET 2012


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Wed Nov 28 05:16:15 2012 +0100| [2c923983b6e545f5baae26498c73a476bc81a807] | committer: Michael Niedermayer

qpeg: reset palette on seeks

Fixes Ticket1921

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

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

 libavcodec/qpeg.c |   15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/libavcodec/qpeg.c b/libavcodec/qpeg.c
index 4d8781e..0a7c788 100644
--- a/libavcodec/qpeg.c
+++ b/libavcodec/qpeg.c
@@ -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"),
 };



More information about the ffmpeg-cvslog mailing list