[FFmpeg-cvslog] VC1testenc: convert pts values to correct time-base.

Reimar Döffinger Reimar.Doeffinger
Sat Jan 29 13:05:36 CET 2011


On Sat, Jan 29, 2011 at 03:47:49AM -0800, Baptiste Coudurier wrote:
> On 1/29/11 3:01 AM, Reimar D?ffinger wrote:
> > ffmpeg | branch: master | Reimar D?ffinger <Reimar.Doeffinger at gmx.de> | Sat Jan 29 11:56:25 2011 +0100| [76c802e989b61423c1554cf204f96f70b3edb145] | committer: Reimar D?ffinger
> > 
> > VC1testenc: convert pts values to correct time-base.
> > 
> > VC1 test container always uses time-base 1 ms, so we must convert
> > from whatever time-base the application gave us to that, otherwise
> > the video will play at ridiculous speeds.
> > It would be possible to signal that a container supports only one
> > time-base and have code in a layer above do the conversion, but
> > for a single format this seems over-engineered.
> > 
> >> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=76c802e989b61423c1554cf204f96f70b3edb145
> > ---
> > 
> >  libavformat/vc1testenc.c |    5 ++++-
> >  1 files changed, 4 insertions(+), 1 deletions(-)
> > 
> > diff --git a/libavformat/vc1testenc.c b/libavformat/vc1testenc.c
> > index 507b332..06431da 100644
> > --- a/libavformat/vc1testenc.c
> > +++ b/libavformat/vc1testenc.c
> > @@ -55,11 +55,14 @@ static int vc1test_write_packet(AVFormatContext *s, AVPacket *pkt)
> >  {
> >      RCVContext *ctx = s->priv_data;
> >      ByteIOContext *pb = s->pb;
> > +    uint32_t pts = av_rescale(pkt->pts,
> > +                              1000 * (uint64_t)s->streams[0]->time_base.num,
> > +                              s->streams[0]->time_base.den);
> 
> This should not be needed if av_set_pts_info is correctly used in
> write_header.

That means that an application must re-check the time-base after
av_write_header, that is definitely _not_ documented, or am I
missing something?



More information about the ffmpeg-cvslog mailing list