Merge commit 'c19830aa2c19f9713b612f7e2fdb437df91ba266'
authorClément Bœsch <u@pkh.me>
Thu, 23 Mar 2017 10:33:27 +0000 (11:33 +0100)
committerClément Bœsch <u@pkh.me>
Thu, 23 Mar 2017 10:33:27 +0000 (11:33 +0100)
* commit 'c19830aa2c19f9713b612f7e2fdb437df91ba266':
  rscc: Support palette format

See 11777eb8142117864bff0c8060f17b4089434143

Merged-by: Clément Bœsch <u@pkh.me>
1  2 
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 <stdint.h>
@@@ -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) {
-         const uint8_t *pal = av_packet_get_side_data(avpkt,
-                                                      AV_PKT_DATA_PALETTE,
-                                                      &size);
-         if (pal && size == AVPALETTE_SIZE) {
 +        int size;
 -                                                         NULL);
 -        if (palette) {
+         const uint8_t *palette = av_packet_get_side_data(avpkt,
+                                                          AV_PKT_DATA_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;