X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fsmc.c;h=70851e5e07260185fb8d08705ca81b886ae0dc75;hb=a247ac640df3da573cd661065bf53f37863e2b46;hp=3cb48347378dabe386cd06c1868367ed3b3240ff;hpb=14fe81b3a88dfe4dbac12e8715f9a3f05b5ef1bf;p=ffmpeg diff --git a/libavcodec/smc.c b/libavcodec/smc.c index 3cb48347378..70851e5e072 100644 --- a/libavcodec/smc.c +++ b/libavcodec/smc.c @@ -35,6 +35,7 @@ #include "libavutil/intreadwrite.h" #include "avcodec.h" #include "bytestream.h" +#include "decode.h" #include "internal.h" #define CPAIR 2 @@ -435,8 +436,6 @@ static int smc_decode_frame(AVCodecContext *avctx, const uint8_t *buf = avpkt->data; int buf_size = avpkt->size; SmcContext *s = avctx->priv_data; - int pal_size; - const uint8_t *pal = av_packet_get_side_data(avpkt, AV_PKT_DATA_PALETTE, &pal_size); int ret; int total_blocks = ((s->avctx->width + 3) / 4) * ((s->avctx->height + 3) / 4); @@ -445,15 +444,10 @@ static int smc_decode_frame(AVCodecContext *avctx, bytestream2_init(&s->gb, buf, buf_size); - if ((ret = ff_reget_buffer(avctx, s->frame)) < 0) + if ((ret = ff_reget_buffer(avctx, s->frame, 0)) < 0) return ret; - if (pal && pal_size == AVPALETTE_SIZE) { - s->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); - } + s->frame->palette_has_changed = ff_copy_palette(s->pal, avpkt, avctx); smc_decode_stream(s); @@ -474,7 +468,7 @@ static av_cold int smc_decode_end(AVCodecContext *avctx) return 0; } -AVCodec ff_smc_decoder = { +const AVCodec ff_smc_decoder = { .name = "smc", .long_name = NULL_IF_CONFIG_SMALL("QuickTime Graphics (SMC)"), .type = AVMEDIA_TYPE_VIDEO, @@ -484,4 +478,5 @@ AVCodec ff_smc_decoder = { .close = smc_decode_end, .decode = smc_decode_frame, .capabilities = AV_CODEC_CAP_DR1, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE, };