X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fidcinvideo.c;h=b79ec93108914f25711e380a72c644c461c564f6;hb=eb6ea948ed2f86361ae0b9d8689368d466b8337f;hp=cff9ad31ac3d6c4185735cb26029d4b166235879;hpb=fb4a12cda4033f2f3d3d1039739f6e0e6f9afb82;p=ffmpeg diff --git a/libavcodec/idcinvideo.c b/libavcodec/idcinvideo.c index cff9ad31ac3..b79ec931089 100644 --- a/libavcodec/idcinvideo.c +++ b/libavcodec/idcinvideo.c @@ -49,6 +49,7 @@ #include #include "avcodec.h" +#include "decode.h" #include "internal.h" #include "libavutil/internal.h" @@ -214,8 +215,6 @@ static int idcin_decode_frame(AVCodecContext *avctx, const uint8_t *buf = avpkt->data; int buf_size = avpkt->size; IdcinContext *s = avctx->priv_data; - int pal_size; - const uint8_t *pal = av_packet_get_side_data(avpkt, AV_PKT_DATA_PALETTE, &pal_size); AVFrame *frame = data; int ret; @@ -228,12 +227,7 @@ static int idcin_decode_frame(AVCodecContext *avctx, if (idcin_decode_vlcs(s, frame)) return AVERROR_INVALIDDATA; - if (pal && pal_size == AVPALETTE_SIZE) { - frame->palette_has_changed = 1; - memcpy(s->pal, pal, AVPALETTE_SIZE); - } else if (pal) { - av_log(avctx, AV_LOG_ERROR, "Palette size %d is wrong\n", pal_size); - } + frame->palette_has_changed = ff_copy_palette(s->pal, avpkt, avctx); /* make the palette available on the way out */ memcpy(frame->data[1], s->pal, AVPALETTE_SIZE); @@ -243,6 +237,11 @@ static int idcin_decode_frame(AVCodecContext *avctx, return buf_size; } +static const AVCodecDefault idcin_defaults[] = { + { "max_pixels", "320*240" }, + { NULL }, +}; + AVCodec ff_idcin_decoder = { .name = "idcinvideo", .long_name = NULL_IF_CONFIG_SMALL("id Quake II CIN video"), @@ -252,4 +251,6 @@ AVCodec ff_idcin_decoder = { .init = idcin_decode_init, .decode = idcin_decode_frame, .capabilities = AV_CODEC_CAP_DR1, + .defaults = idcin_defaults, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE, };