Currently a hacky way is used for some specific codecs such as
H264/VP6F/DXV.
Replace with a more generic way(an evolution based on a history commit
9de9b828ef005dec37052548c195a6b4f18fc701 but reverted somehow) to handle these 
cases.

Signed-off-by: Zhong Li <zhong...@intel.com>
---
 libavcodec/utils.c | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/libavcodec/utils.c b/libavcodec/utils.c
index 4d736d2..3f3f3db 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)
         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)
         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

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to