On 4/10/13 9:00 PM, Anton Khirnov wrote:
> Needed e.g. for h264 cropping to work properly.
> ---
>  libavcodec/utils.c |   18 +++++++++++++-----
>  1 file changed, 13 insertions(+), 5 deletions(-)
> 
> diff --git a/libavcodec/utils.c b/libavcodec/utils.c
> index dfb2f54..32ca703 100644
> --- a/libavcodec/utils.c
> +++ b/libavcodec/utils.c
> @@ -555,10 +555,8 @@ int ff_get_buffer(AVCodecContext *avctx, AVFrame *frame, 
> int flags)
>  
>      switch (avctx->codec_type) {
>      case AVMEDIA_TYPE_VIDEO:
> -        if (!frame->width)
> -            frame->width               = avctx->width;
> -        if (!frame->height)
> -            frame->height              = avctx->height;
> +        frame->width  = FFMAX(avctx->width, avctx->coded_width);
> +        frame->height = FFMAX(avctx->height, avctx->coded_height);
>          if (frame->format < 0)
>              frame->format              = avctx->pix_fmt;
>          if (!frame->sample_aspect_ratio.num)
> @@ -702,6 +700,9 @@ do {                                                      
>               \
>  
>          av_buffer_unref(&dummy_buf);
>  
> +        frame->width  = avctx->width;
> +        frame->height = avctx->height;
> +
>          return 0;
>  
>  fail:
> @@ -712,7 +713,14 @@ fail:
>      }
>  #endif
>  
> -    return avctx->get_buffer2(avctx, frame, flags);
> +    ret = avctx->get_buffer2(avctx, frame, flags);
> +
> +    if (avctx->codec_type == AVMEDIA_TYPE_VIDEO) {
> +        frame->width  = avctx->width;
> +        frame->height = avctx->height;

Just to avoid problems in the future save a local copy of width and height.

lu
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to