[FFmpeg-devel] [PATCH V2 2/2] Don't overwrite previously setup dimensions for all codecs
Zhong Li
zhong.li at intel.com
Thu Jan 18 07:03:34 EET 2018
Currently a hacky way is used for some specific codecs such as
H264/VP6F/DXV (and "lowres" case is broken now).
Replace with a more generic way(an evolution based on a libav commit
9de9b828 but hasn't been merged since it breaks lowres).
V1->V2: add "lowres" handle code
Signed-off-by: Zhong Li <zhong.li at intel.com>
---
libavcodec/utils.c | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/libavcodec/utils.c b/libavcodec/utils.c
index 427f612..fdd1b46 100644
--- a/libavcodec/utils.c
+++ b/libavcodec/utils.c
@@ -684,16 +684,12 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *code
goto free_and_end;
}
- // only call ff_set_dimensions() for non H.264/VP6F/DXV codecs so as not to overwrite previously setup dimensions
- if (!(avctx->coded_width && avctx->coded_height && avctx->width && avctx->height &&
- (avctx->codec_id == AV_CODEC_ID_H264 || avctx->codec_id == AV_CODEC_ID_VP6F || avctx->codec_id == AV_CODEC_ID_DXV))) {
- if (avctx->coded_width && avctx->coded_height)
+ if (avctx->coded_width && avctx->coded_height && (!avctx->width && !avctx->height || avctx->lowles))
ret = ff_set_dimensions(avctx, avctx->coded_width, avctx->coded_height);
- else if (avctx->width && avctx->height)
+ else if (avctx->width && avctx->height && (!avctx->coded_width && !avctx->coded_height || avctx->lowles))
ret = ff_set_dimensions(avctx, avctx->width, avctx->height);
if (ret < 0)
goto free_and_end;
- }
if ((avctx->coded_width || avctx->coded_height || avctx->width || avctx->height)
&& ( av_image_check_size2(avctx->coded_width, avctx->coded_height, avctx->max_pixels, AV_PIX_FMT_NONE, 0, avctx) < 0
--
1.8.3.1
More information about the ffmpeg-devel
mailing list