Hi,

On Wed, Dec 12, 2012 at 12:30 PM, Janne Grunau <janne-li...@jannau.net> wrote:
> Decoders supporting frame parameter changes can return delayed frames
> with the old parameters.
> ---
>  libavcodec/utils.c | 15 ++++++++++-----
>  1 file changed, 10 insertions(+), 5 deletions(-)
>
> diff --git a/libavcodec/utils.c b/libavcodec/utils.c
> index 1185a35..97fa570 100644
> --- a/libavcodec/utils.c
> +++ b/libavcodec/utils.c
> @@ -1282,11 +1282,16 @@ int attribute_align_arg 
> avcodec_decode_video2(AVCodecContext *avctx, AVFrame *pi
>          else {
>              ret = avctx->codec->decode(avctx, picture, got_picture_ptr,
>                                         avpkt);
> -            picture->pkt_dts             = avpkt->dts;
> -            picture->sample_aspect_ratio = avctx->sample_aspect_ratio;
> -            picture->width               = avctx->width;
> -            picture->height              = avctx->height;
> -            picture->format              = avctx->pix_fmt;
> +            picture->pkt_dts = avpkt->dts;
> +
> +            /* delayed pictures might have different parameters than
> +             * the context returning them */
> +            if (!(avctx->codec->capabilities & CODEC_CAP_DELAY)) {
> +                picture->sample_aspect_ratio = avctx->sample_aspect_ratio;
> +                picture->width               = avctx->width;
> +                picture->height              = avctx->height;
> +                picture->format              = avctx->pix_fmt;
> +            }
>          }

I can live with this. We can clean this further later.

Ronald
_______________________________________________
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to