s->avctx_mjpeg->height == h / 2 &&
s->avctx_mjpeg->pix_fmt == AV_PIX_FMT_GRAY16LE) {
is_single_comp = 1;
- } else if (s->avctx_mjpeg->width == w &&
- s->avctx_mjpeg->height == h &&
+ } else if (s->avctx_mjpeg->width >= w &&
+ s->avctx_mjpeg->height >= h &&
s->avctx_mjpeg->pix_fmt == (is_u16 ? AV_PIX_FMT_GRAY16 : AV_PIX_FMT_GRAY8)
) {
is_single_comp = 0;
break;
case TIFF_GEO_KEY_DIRECTORY:
if (s->geotag_count) {
- avpriv_request_sample(s->avctx, "Multiple geo key directories\n");
+ avpriv_request_sample(s->avctx, "Multiple geo key directories");
return AVERROR_INVALIDDATA;
}
ADD_METADATA(1, "GeoTIFF_Version", NULL);
return AVERROR_INVALIDDATA;
}
if (off <= last_off) {
- avpriv_request_sample(s->avctx, "non increasing IFD offset\n");
+ avpriv_request_sample(s->avctx, "non increasing IFD offset");
return AVERROR_INVALIDDATA;
}
if (off >= UINT_MAX - 14 || avpkt->size < off + 14) {
has_strip_bits = s->strippos || s->strips || s->stripoff || s->rps || s->sot || s->sstype || s->stripsize || s->stripsizesoff;
if (has_tile_bits && has_strip_bits) {
- av_log(avctx, AV_LOG_ERROR, "Tiled TIFF is not allowed to strip\n");
- return AVERROR_INVALIDDATA;
+ av_log(avctx, AV_LOG_WARNING, "Tiled TIFF is not allowed to strip\n");
}
/* now we have the data and may start decoding */
s->avctx_mjpeg->flags2 = avctx->flags2;
s->avctx_mjpeg->dct_algo = avctx->dct_algo;
s->avctx_mjpeg->idct_algo = avctx->idct_algo;
- ret = ff_codec_open2_recursive(s->avctx_mjpeg, codec, NULL);
+ ret = avcodec_open2(s->avctx_mjpeg, codec, NULL);
if (ret < 0) {
return ret;
}
.close = tiff_end,
.decode = decode_frame,
.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_FRAME_THREADS,
- .caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
+ .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP,
.priv_class = &tiff_decoder_class,
};