[libav-devel] [PATCH 1/5] avconv: update InputStream.pts in the streamcopy case.

Anton Khirnov anton at khirnov.net
Tue Nov 29 16:51:37 CET 2011


On Tue, 29 Nov 2011 09:16:01 -0500, Justin Ruggles <justin.ruggles at gmail.com> wrote:
> On 11/29/2011 03:03 AM, Anton Khirnov wrote:
> 
> > This was broken in 2a651b719c309c5e2fc663a5a9d6ca36153ab98f.
> > ---
> >  avconv.c |    1 +
> >  1 files changed, 1 insertions(+), 0 deletions(-)
> > 
> > diff --git a/avconv.c b/avconv.c
> > index 4c5498a..067678d 100644
> > --- a/avconv.c
> > +++ b/avconv.c
> > @@ -1906,6 +1906,7 @@ static int output_packet(InputStream *ist,
> >      /* handle stream copy */
> >      if (!ist->decoding_needed) {
> >          rate_emu_sleep(ist);
> > +        ist->pts = ist->next_pts;
> >          switch (ist->st->codec->codec_type) {
> >          case AVMEDIA_TYPE_AUDIO:
> >              ist->next_pts += ((int64_t)AV_TIME_BASE * ist->st->codec->frame_size) /
> 
> 
> Is this really correct? Shouldn't it be using the pts from the input
> packet, not the made-up pts?
> 

I'm simply restoring the previous behavior, I don't yet understand it
enough for any claims of correctness ;)
But near the begginning there's this

if(pkt->dts != AV_NOPTS_VALUE)
        ist->next_pts = ist->pts = av_rescale_q(pkt->dts, ist->st->time_base, AV_TIME_BASE_Q);

so the line added in this patch is a noop when the packet contains dts.

-- 
Anton Khirnov


More information about the libav-devel mailing list