Add 32bit RGB support
authorRoberto Togni <r_togni@tiscali.it>
Mon, 31 Jan 2005 22:34:02 +0000 (22:34 +0000)
committerRoberto Togni <r_togni@tiscali.it>
Mon, 31 Jan 2005 22:34:02 +0000 (22:34 +0000)
Originally committed as revision 3912 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/tscc.c

index e38ef7e..6cc9ca8 100644 (file)
@@ -116,7 +116,7 @@ static int decode_rle(CamtasiaContext *c, unsigned int srcsize)
            }
             pos += p2;
         } else { //Run of pixels
-            int pix[3]; //original pixel
+            int pix[4]; //original pixel
             switch(c->bpp){
             case  8: pix[0] = *src++;
                      break;
@@ -127,6 +127,11 @@ static int decode_rle(CamtasiaContext *c, unsigned int srcsize)
                      pix[1] = *src++;
                      pix[2] = *src++;
                      break;
+            case 32: pix[0] = *src++;
+                     pix[1] = *src++;
+                     pix[2] = *src++;
+                     pix[3] = *src++;
+                     break;
             }
             if (output + p1 * (c->bpp / 8) > output_end)
                 continue;
@@ -141,6 +146,11 @@ static int decode_rle(CamtasiaContext *c, unsigned int srcsize)
                          *output++ = pix[1];
                          *output++ = pix[2];
                          break;
+                case 32: *output++ = pix[0];
+                         *output++ = pix[1];
+                         *output++ = pix[2];
+                         *output++ = pix[3];
+                         break;
                 }
             }
             pos += p1;
@@ -252,9 +262,10 @@ static int decode_init(AVCodecContext *avctx)
     switch(avctx->bits_per_sample){
     case  8: avctx->pix_fmt = PIX_FMT_PAL8; break;
     case 16: avctx->pix_fmt = PIX_FMT_RGB555; break;
-    case 24: av_log(avctx, AV_LOG_ERROR, "Camtasia warning: RGB24 is just guessed\n");
+    case 24:
              avctx->pix_fmt = PIX_FMT_BGR24;
              break;
+    case 32: avctx->pix_fmt = PIX_FMT_RGBA32; break;
     default: av_log(avctx, AV_LOG_ERROR, "Camtasia error: unknown depth %i bpp\n", avctx->bits_per_sample);
              return -1;             
     }