When BitsPerSample tag is not present in TIFF, that means file is
monochrome, so initialize picture before decoding. This fixes decoding monochrome files produced by lavc TIFF encoder. Originally committed as revision 20091 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
2ed4439658
commit
53f9f9c91b
@ -498,8 +498,19 @@ static int decode_frame(AVCodecContext *avctx,
|
|||||||
}
|
}
|
||||||
/* now we have the data and may start decoding */
|
/* now we have the data and may start decoding */
|
||||||
if(!p->data[0]){
|
if(!p->data[0]){
|
||||||
av_log(s->avctx, AV_LOG_ERROR, "Picture initialization missing\n");
|
s->bpp = 1;
|
||||||
return -1;
|
avctx->pix_fmt = PIX_FMT_MONOBLACK;
|
||||||
|
if(s->width != s->avctx->width || s->height != s->avctx->height){
|
||||||
|
if(avcodec_check_dimensions(s->avctx, s->width, s->height))
|
||||||
|
return -1;
|
||||||
|
avcodec_set_dimensions(s->avctx, s->width, s->height);
|
||||||
|
}
|
||||||
|
if(s->picture.data[0])
|
||||||
|
s->avctx->release_buffer(s->avctx, &s->picture);
|
||||||
|
if(s->avctx->get_buffer(s->avctx, &s->picture) < 0){
|
||||||
|
av_log(s->avctx, AV_LOG_ERROR, "get_buffer() failed\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if(s->strips == 1 && !s->stripsize){
|
if(s->strips == 1 && !s->stripsize){
|
||||||
av_log(avctx, AV_LOG_WARNING, "Image data size missing\n");
|
av_log(avctx, AV_LOG_WARNING, "Image data size missing\n");
|
||||||
|
Loading…
Reference in New Issue
Block a user