Mercurial > libavcodec.hg
changeset 4190:405f8395eedc libavcodec
Use table for determining type sizes
author | kostya |
---|---|
date | Mon, 13 Nov 2006 11:34:46 +0000 |
parents | 3c98b0938897 |
children | c9867abab7e6 |
files | tiff.c |
diffstat | 1 files changed, 9 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/tiff.c Mon Nov 13 11:30:26 2006 +0000 +++ b/tiff.c Mon Nov 13 11:34:46 2006 +0000 @@ -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;