aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec
diff options
context:
space:
mode:
authorKostya Shishkov <kostya.shishkov@gmail.com>2009-06-02 15:31:51 +0000
committerKostya Shishkov <kostya.shishkov@gmail.com>2009-06-02 15:31:51 +0000
commit9706d1c766b609961bea44d475c84c01b7ee10a5 (patch)
treeb1eb7d87648ecaeef176c7ea4791fb2dd7af38e2 /libavcodec
parent68e7f4828d4e29ffee3fc1709689ec6aa5f6d358 (diff)
downloadffmpeg-9706d1c766b609961bea44d475c84c01b7ee10a5.tar.gz
Check combined depth and number of components in TIFF decoder, thus eliminating
additional checks for each depth (like 48-bit gray vs. 48-bit RGB) Originally committed as revision 19076 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/tiff.c33
1 files changed, 15 insertions, 18 deletions
diff --git a/libavcodec/tiff.c b/libavcodec/tiff.c
index 82327d0838..b7f4db3170 100644
--- a/libavcodec/tiff.c
+++ b/libavcodec/tiff.c
@@ -243,31 +243,28 @@ static int tiff_decode_tag(TiffContext *s, const uint8_t *start, const uint8_t *
s->bpp = -1;
}
}
- switch(s->bpp){
- case 1:
+ if(count > 4){
+ av_log(s->avctx, AV_LOG_ERROR, "This format is not supported (bpp=%d, %d components)\n", s->bpp, count);
+ return -1;
+ }
+ switch(s->bpp*10 + count){
+ case 11:
s->avctx->pix_fmt = PIX_FMT_MONOBLACK;
break;
- case 8:
+ case 81:
s->avctx->pix_fmt = PIX_FMT_PAL8;
break;
- case 24:
+ case 243:
s->avctx->pix_fmt = PIX_FMT_RGB24;
break;
- case 16:
- if(count == 1){
- s->avctx->pix_fmt = PIX_FMT_GRAY16BE;
- }else{
- av_log(s->avctx, AV_LOG_ERROR, "This format is not supported (bpp=%i)\n", s->bpp);
- return -1;
- }
+ case 161:
+ s->avctx->pix_fmt = PIX_FMT_GRAY16BE;
break;
- case 32:
- if(count == 4){
- s->avctx->pix_fmt = PIX_FMT_RGBA;
- }else{
- av_log(s->avctx, AV_LOG_ERROR, "This format is not supported (bpp=%d, %d components)\n", s->bpp, count);
- return -1;
- }
+ case 324:
+ s->avctx->pix_fmt = PIX_FMT_RGBA;
+ break;
+ case 483:
+ s->avctx->pix_fmt = s->le ? PIX_FMT_RGB48LE : PIX_FMT_RGB48BE;
break;
default:
av_log(s->avctx, AV_LOG_ERROR, "This format is not supported (bpp=%d, %d components)\n", s->bpp, count);