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

Reimar Döffinger git
Sat Jan 29 12:01:07 CET 2011


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);
 
     if (!pkt->size)
         return 0;
     put_le32(pb, pkt->size | ((pkt->flags & AV_PKT_FLAG_KEY) ? 0x80000000 : 0));
-    put_le32(pb, pkt->pts);
+    put_le32(pb, pts);
     put_buffer(pb, pkt->data, pkt->size);
     put_flush_packet(pb);
     ctx->frames++;




More information about the ffmpeg-cvslog mailing list