On Wed, Jun 15, 2011 at 9:07 AM, Diego Biurrun <[email protected]> wrote:

> On Thu, Apr 21, 2011 at 04:30:35PM -0400, Ronald S. Bultje wrote:
> >
> > On Thu, Apr 21, 2011 at 4:22 PM, Tony Strauss <[email protected]> wrote:
> > > On Thu, Apr 21, 2011 at 3:34 PM, Mike Scheutzow
> > > <[email protected]> wrote:
> > >> Tony Strauss wrote:
> > >>> The
> > >>> key thing is that this file was encoded without b frames, so pts ==
> > >>> dts for every frame.
> > >>
> > >> It requires more than "no B frames" for this statement to be true.
> > >>
> > >> Does the video contain P-frames? If it contains P-frames, then pts !=
> dts. Please post a link to a valid file so we can see.
> > >
> > > Interesting.  I really don't know much about video encoding, but this
> > > surprises me.  Certainly a patched ffprobe shows pts == dts for
> > > clip.no_bframes.ts (and this does have p frames, since refs=1).  Why
> > > would the presence of p-frames change pts == dts?  Since p-frames only
> > > depend on an earlier frame, can't they be presented as soon as they're
> > > decoded?
> >
> > Yes. If there's no B-frames, pts == dts is fine.
> >
> > (I intend to look at your bug at some point, but didn't get to it yet so
> far.)
>
> ... ping ...


My original patch was not accepted; Mike Scheutzow submitted an alternative
patch to ffmpeg that was accepted:
diff --git a/libavcodec/h264.c b/libavcodec/h264.c
index 6cd597e..a40afbc 100644
--- a/libavcodec/h264.c
+++ b/libavcodec/h264.c
@@ -3413,7 +3413,8 @@ static int decode_nal_units(H264Context *h, const
uint8_t *buf, int buf_size){
            init_get_bits(&s->gb, ptr, bit_length);
            ff_h264_decode_seq_parameter_set(h);

-            if(s->flags& CODEC_FLAG_LOW_DELAY)
+            if(s->flags& CODEC_FLAG_LOW_DELAY ||
+              (h->sps.bitstream_restriction_flag &&
!h->sps.num_reorder_frames))
                s->low_delay=1;

            if(avctx->has_b_frames < 2)

I think that my patch was the right idea, but I also think that it was a
potentially dangerous change, and I didn't have the time to follow through
fully.  Mike's patch fixes the problem.

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

Reply via email to