summaryrefslogtreecommitdiff
path: root/libavcodec
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2021-03-01 10:10:54 +0100
committerAnton Khirnov <anton@khirnov.net>2021-03-08 09:29:50 +0100
commit2f004b357e6709083f741c6ed0f5a82d81784ac8 (patch)
tree50bf128cec6086e1f7ef61737684558a9d282ce3 /libavcodec
parente3c4e1f0c407d2cc5065d0bffcbc584be3bc8c6a (diff)
mjpegdec: handle lowres with AVID cropping
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/mjpegdec.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c
index 79c7d6e6cf..20f310fd70 100644
--- a/libavcodec/mjpegdec.c
+++ b/libavcodec/mjpegdec.c
@@ -445,16 +445,16 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s)
if (ret < 0)
return ret;
+ if ((s->avctx->codec_tag == MKTAG('A', 'V', 'R', 'n') ||
+ s->avctx->codec_tag == MKTAG('A', 'V', 'D', 'J')) &&
+ s->orig_height < height)
+ s->avctx->height = AV_CEIL_RSHIFT(s->orig_height, s->avctx->lowres);
+
s->first_picture = 0;
} else {
size_change = 0;
}
- if ((s->avctx->codec_tag == MKTAG('A', 'V', 'R', 'n') ||
- s->avctx->codec_tag == MKTAG('A', 'V', 'D', 'J')) &&
- s->orig_height < s->avctx->height)
- s->avctx->height = s->orig_height;
-
if (s->avctx->codec_id == AV_CODEC_ID_SMVJPEG) {
s->avctx->height = s->avctx->coded_height / s->smv_frames_per_jpeg;
if (s->avctx->height <= 0)
@@ -2863,8 +2863,8 @@ the_end:
if ((avctx->codec_tag == MKTAG('A', 'V', 'R', 'n') ||
avctx->codec_tag == MKTAG('A', 'V', 'D', 'J')) &&
avctx->coded_height > s->orig_height) {
- frame->height = avctx->coded_height;
- frame->crop_top = frame->height - s->orig_height;
+ frame->height = AV_CEIL_RSHIFT(avctx->coded_height, avctx->lowres);
+ frame->crop_top = frame->height - avctx->height;
}
ret = 0;