From: Clément Bœsch Date: Thu, 23 Mar 2017 10:33:27 +0000 (+0100) Subject: Merge commit 'c19830aa2c19f9713b612f7e2fdb437df91ba266' X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=5f044d23726375f451463ae443bb9a33827374be;p=ffmpeg Merge commit 'c19830aa2c19f9713b612f7e2fdb437df91ba266' * commit 'c19830aa2c19f9713b612f7e2fdb437df91ba266': rscc: Support palette format See 11777eb8142117864bff0c8060f17b4089434143 Merged-by: Clément Bœsch --- 5f044d23726375f451463ae443bb9a33827374be diff --cc libavcodec/rscc.c index f13706cd757,dfc2338ec99..ebacd3f62c7 --- a/libavcodec/rscc.c +++ b/libavcodec/rscc.c @@@ -31,7 -31,7 +31,7 @@@ * and it can be deflated or not. Similarly, pixel data comes after the header * and a variable size value, and it can be deflated or just raw. * - * Supports: BGRA, BGR24, RGB555, PAL8 - * Supports: PAL8, BGRA, BGR24, RGB555, RGB8 ++ * Supports: PAL8, BGRA, BGR24, RGB555 */ #include @@@ -309,22 -293,21 +310,25 @@@ static int rscc_decode_frame(AVCodecCon } else { frame->pict_type = AV_PICTURE_TYPE_P; } + + /* Palette handling */ if (avctx->pix_fmt == AV_PIX_FMT_PAL8) { + int size; - const uint8_t *pal = av_packet_get_side_data(avpkt, - AV_PKT_DATA_PALETTE, - &size); - if (pal && size == AVPALETTE_SIZE) { + const uint8_t *palette = av_packet_get_side_data(avpkt, + AV_PKT_DATA_PALETTE, - NULL); - if (palette) { ++ &size); ++ if (palette && size == AVPALETTE_SIZE) { frame->palette_has_changed = 1; - memcpy(ctx->pal, pal, AVPALETTE_SIZE); - } else if (pal) { + memcpy(ctx->palette, palette, AVPALETTE_SIZE); ++ } else if (palette) { + av_log(avctx, AV_LOG_ERROR, "Palette size %d is wrong\n", size); } - memcpy (frame->data[1], ctx->pal, AVPALETTE_SIZE); - memcpy(frame->data[1], ctx->palette, AVPALETTE_SIZE); ++ memcpy (frame->data[1], ctx->palette, AVPALETTE_SIZE); } + *got_frame = 1; + ret = avpkt->size; end: av_free(inflated_tiles); return ret;