X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fsmc.c;h=880bf0620e3a31b1e8e73bcf2b861d245a6984a0;hb=d40bb518b50561db60ef71ab0e37eb7f3fb9043b;hp=3cb48347378dabe386cd06c1868367ed3b3240ff;hpb=e427ba5c68a522b26a45bf7c61016d9349fab43d;p=ffmpeg diff --git a/libavcodec/smc.c b/libavcodec/smc.c index 3cb48347378..880bf0620e3 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); @@ -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, };