Mercurial > libavcodec.hg
comparison tiff.c @ 9784:2142607ddc2e libavcodec
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)
author | kostya |
---|---|
date | Tue, 02 Jun 2009 15:31:51 +0000 |
parents | 8074df653392 |
children | 58d29c191e5a |
comparison
equal
deleted
inserted
replaced
9783:21f3bbb20e42 | 9784:2142607ddc2e |
---|---|
241 break; | 241 break; |
242 default: | 242 default: |
243 s->bpp = -1; | 243 s->bpp = -1; |
244 } | 244 } |
245 } | 245 } |
246 switch(s->bpp){ | 246 if(count > 4){ |
247 case 1: | 247 av_log(s->avctx, AV_LOG_ERROR, "This format is not supported (bpp=%d, %d components)\n", s->bpp, count); |
248 return -1; | |
249 } | |
250 switch(s->bpp*10 + count){ | |
251 case 11: | |
248 s->avctx->pix_fmt = PIX_FMT_MONOBLACK; | 252 s->avctx->pix_fmt = PIX_FMT_MONOBLACK; |
249 break; | 253 break; |
250 case 8: | 254 case 81: |
251 s->avctx->pix_fmt = PIX_FMT_PAL8; | 255 s->avctx->pix_fmt = PIX_FMT_PAL8; |
252 break; | 256 break; |
253 case 24: | 257 case 243: |
254 s->avctx->pix_fmt = PIX_FMT_RGB24; | 258 s->avctx->pix_fmt = PIX_FMT_RGB24; |
255 break; | 259 break; |
256 case 16: | 260 case 161: |
257 if(count == 1){ | 261 s->avctx->pix_fmt = PIX_FMT_GRAY16BE; |
258 s->avctx->pix_fmt = PIX_FMT_GRAY16BE; | 262 break; |
259 }else{ | 263 case 324: |
260 av_log(s->avctx, AV_LOG_ERROR, "This format is not supported (bpp=%i)\n", s->bpp); | 264 s->avctx->pix_fmt = PIX_FMT_RGBA; |
261 return -1; | 265 break; |
262 } | 266 case 483: |
263 break; | 267 s->avctx->pix_fmt = s->le ? PIX_FMT_RGB48LE : PIX_FMT_RGB48BE; |
264 case 32: | |
265 if(count == 4){ | |
266 s->avctx->pix_fmt = PIX_FMT_RGBA; | |
267 }else{ | |
268 av_log(s->avctx, AV_LOG_ERROR, "This format is not supported (bpp=%d, %d components)\n", s->bpp, count); | |
269 return -1; | |
270 } | |
271 break; | 268 break; |
272 default: | 269 default: |
273 av_log(s->avctx, AV_LOG_ERROR, "This format is not supported (bpp=%d, %d components)\n", s->bpp, count); | 270 av_log(s->avctx, AV_LOG_ERROR, "This format is not supported (bpp=%d, %d components)\n", s->bpp, count); |
274 return -1; | 271 return -1; |
275 } | 272 } |