From 7b100839330ace3b4846ee4a1fc5caf4b8f8a34e Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Wed, 17 Mar 2021 22:43:32 +0100 Subject: avcodec: Factor updating palette out Because the properties of frames returned from ff_get/reget_buffer are not reset at all, lots of returned frames had palette_has_changed wrongly set to 1. This has been changed, too. Reviewed-by: James Almer Signed-off-by: Andreas Rheinhardt --- libavcodec/8bps.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) (limited to 'libavcodec/8bps.c') diff --git a/libavcodec/8bps.c b/libavcodec/8bps.c index 53e939d35d..dda8b8b1c9 100644 --- a/libavcodec/8bps.c +++ b/libavcodec/8bps.c @@ -37,6 +37,7 @@ #include "libavutil/internal.h" #include "libavutil/intreadwrite.h" #include "avcodec.h" +#include "decode.h" #include "internal.h" @@ -122,16 +123,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, } if (avctx->bits_per_coded_sample <= 8) { - buffer_size_t size; - const uint8_t *pal = av_packet_get_side_data(avpkt, - AV_PKT_DATA_PALETTE, - &size); - if (pal && size == AVPALETTE_SIZE) { - frame->palette_has_changed = 1; - memcpy(c->pal, pal, AVPALETTE_SIZE); - } else if (pal) { - av_log(avctx, AV_LOG_ERROR, "Palette size %d is wrong\n", size); - } + frame->palette_has_changed = ff_copy_palette(c->pal, avpkt, avctx); memcpy (frame->data[1], c->pal, AVPALETTE_SIZE); } -- cgit v1.2.3