[FFmpeg-devel] [PATCH v4] H.264: reinitialize context on aspect ratio change as well

Janusz Krzysztofik jkrzyszt
Tue Mar 16 03:38:45 CET 2010


Tuesday 16 March 2010 03:10:58 Michael Niedermayer wrote:
> On Tue, Mar 16, 2010 at 03:08:59AM +0100, Janusz Krzysztofik wrote:
> > While using ffmpeg based vdr softdevice plugin for watching h.264 encoded
> > live tv, I found that after correct picture aspect ratio setup on a new
> > stream (channel) startup, any following picture aspect ratio changes were
> > not processed. The same can be seen while playing vdr caputured samples
> > of this transmission with ffplay.
> >
> > This patch corrects the problem for me by reinitializing the decoder
> > context on every valid aspect ratio change, not only size changes.
> >
> > Created against ffmpeg svn revision 22565.
> > Tested with this revision ffplay.
> >
> > Signed-off-by: Janusz Krzysztofik <jkrzyszt at tis.icnet.pl>
> > ---
> > v4 changes:
> > - use av_cmp_q() instead of comparing numerators and denominators separately
> >   (thanks to Michael Niedermayer for advising this). 
> >
> > v3 changes:
> > - check for non-zero values of both new numerator and denominator to avoid
> >   problems with some test samples (ie. cathedral-beta2-400extra-crop-avc.mp4). 
> >
> > v2 changes: none (refresh only)
> >
> > --- trunk/libavcodec/h264.c.orig	2010-03-16 02:35:01.000000000 +0100
> > +++ trunk/libavcodec/h264.c	2010-03-16 02:39:04.000000000 +0100
> > @@ -1774,7 +1774,9 @@ static int decode_slice_header(H264Conte
> >          s->height= 16*s->mb_height - 4*FFMIN(h->sps.crop_bottom, 3);
> >
> >      if (s->context_initialized
> > -        && (   s->width != s->avctx->width || s->height != s->avctx->height)) {
> > +        && (   s->width != s->avctx->width || s->height != s->avctx->height
> > +            || (h->sps.sar.num && h->sps.sar.den
> > +                && av_cmp_q(h->sps.sar, s->avctx->sample_aspect_ratio)))) {
>
> do you need the explicit num den != 0 checks?

Yes, both are required for correct playback of 
http://samples.ffmpeg.org/V-codecs/h264/cathedral-beta2-400extra-crop-avc.mp4. 

Thanks,
Janusz



More information about the ffmpeg-devel mailing list