Merge commit '51dc4de1218a81ee8e5b3f941839c5e3125a6d4b'
authorDerek Buitenhuis <derek.buitenhuis@gmail.com>
Sun, 8 May 2016 22:31:01 +0000 (23:31 +0100)
committerDerek Buitenhuis <derek.buitenhuis@gmail.com>
Sun, 8 May 2016 22:33:08 +0000 (23:33 +0100)
* commit '51dc4de1218a81ee8e5b3f941839c5e3125a6d4b':
  rscc: Add extended pixel format support

Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
1  2 
libavcodec/rscc.c

@@@ -80,10 -81,33 +81,34 @@@ static av_cold int rscc_init(AVCodecCon
      if (!ctx->reference)
          return AVERROR(ENOMEM);
  
-     if (avctx->codec_tag == MKTAG('I','S','C','C')) {
+     /* Get pixel format and the size of the pixel */
+     if (avctx->codec_tag == MKTAG('I', 'S', 'C', 'C')) {
          avctx->pix_fmt = AV_PIX_FMT_BGRA;
+         ctx->component_size = 4;
+     } else if (avctx->codec_tag == MKTAG('R', 'S', 'C', 'C')) {
+         ctx->component_size = avctx->bits_per_coded_sample / 8;
+         switch (avctx->bits_per_coded_sample) {
+         case 8:
+             avpriv_report_missing_feature(avctx, "8 bits per pixel");
+             return AVERROR_PATCHWELCOME;
+         case 16:
+             avctx->pix_fmt = AV_PIX_FMT_RGB555LE;
+             break;
+         case 24:
+             avctx->pix_fmt = AV_PIX_FMT_BGR24;
+             break;
+         case 32:
+             avctx->pix_fmt = AV_PIX_FMT_BGRA;
+             break;
+         default:
+             av_log(avctx, AV_LOG_ERROR, "Invalid bits per pixel value (%d)\n",
+                    avctx->bits_per_coded_sample);
+             return AVERROR_INVALIDDATA;
+         }
      } else {
 -        av_log(avctx, AV_LOG_ERROR, "Invalid codec tag\n");
 -        return AVERROR_INVALIDDATA;
 +        avctx->pix_fmt = AV_PIX_FMT_BGR0;
++        ctx->component_size = 4;
++        av_log(avctx, AV_LOG_WARNING, "Invalid codec tag\n");
      }
  
      /* Store the value to check for keyframes */