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