diff options
author | Reimar Döffinger <Reimar.Doeffinger@gmx.de> | 2011-01-29 11:56:25 +0100 |
---|---|---|
committer | Reimar Döffinger <Reimar.Doeffinger@gmx.de> | 2011-01-29 11:56:25 +0100 |
commit | 76c802e989b61423c1554cf204f96f70b3edb145 (patch) | |
tree | b863fe49d4be9404f87be1b3fc29dd9d741431be | |
parent | 55fa97e215c40a1f7cdd2ad3ca4c098a3caa4c28 (diff) | |
download | ffmpeg-76c802e989b61423c1554cf204f96f70b3edb145.tar.gz |
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.
-rw-r--r-- | libavformat/vc1testenc.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/libavformat/vc1testenc.c b/libavformat/vc1testenc.c index 507b332a86..06431dae17 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++; |