[Ffmpeg-cvslog] r7009 - trunk/libavcodec/tiff.c

kostya subversion
Mon Nov 13 12:34:47 CET 2006


Author: kostya
Date: Mon Nov 13 12:34:46 2006
New Revision: 7009

Modified:
   trunk/libavcodec/tiff.c

Log:
Use table for determining type sizes

Modified: trunk/libavcodec/tiff.c
==============================================================================
--- trunk/libavcodec/tiff.c	(original)
+++ trunk/libavcodec/tiff.c	Mon Nov 13 12:34:46 2006
@@ -62,6 +62,11 @@
     TIFF_LONGLONG
 };
 
+/** sizes of various TIFF field types */
+static const int type_sizes[6] = {
+    0, 1, 100, 2, 4, 8
+};
+
 typedef struct TiffContext {
     AVCodecContext *avctx;
     AVFrame picture;
@@ -208,6 +213,8 @@
             value = -1;
             buf = start + off;
         }
+    }else if(type_sizes[type] * count <= 4){
+        buf -= 4;
     }else{
         buf = start + off;
     }
@@ -397,11 +404,11 @@
             return -1;
         }
         pal = s->picture.data[1];
-        off = (type == TIFF_SHORT) ? 2 : 1;
+        off = type_sizes[type];
         rp = buf;
         gp = buf + count / 3 * off;
         bp = buf + count / 3 * off * 2;
-        off = (type == TIFF_SHORT) ? 8 : 0;
+        off = (type_sizes[type] - 1) << 3;
         for(i = 0; i < count / 3; i++){
             j = (tget(&rp, type, s->le) >> off) << 16;
             j |= (tget(&gp, type, s->le) >> off) << 8;




More information about the ffmpeg-cvslog mailing list