On 2013-04-10 22:59:35 +0200, Luca Barbato wrote:
> 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.

I don't see how that's gonna improve things. frame->{width,height} are
expected to be zero. After returning from decode_video they should be
the dimensions of the frame, i.e. the displayed pixels.

patch lgtm

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

Reply via email to