diff options
author | John-Paul Stewart <jpstewart@personalprojects.net> | 2021-12-18 15:46:27 -0500 |
---|---|---|
committer | Peter Ross <pross@xvid.org> | 2021-12-21 12:01:17 +1100 |
commit | 3c9ffbd009243b3e83ba20956ff6401918376073 (patch) | |
tree | 467e5a5bbe245e30b4fc5e5afacbc6a393e5617d | |
parent | 15cfb4eee316a1d6a0764f4460409f0258fd94cb (diff) | |
download | ffmpeg-3c9ffbd009243b3e83ba20956ff6401918376073.tar.gz |
avformat/mvdec: read frame rate from data stream
Prior to this patch, for version 2 of the file format the frame rate was
hard-coded at 15 fps. This uses the 64-bit floating-point value from
the data stream, similar to what is already done for version 3 of the
file format (around line 206).
Signed-off-by: John-Paul Stewart <jpstewart@personalprojects.net>
Reviewed-by: Peter Ross <pross@xvid.org>
-rw-r--r-- | libavformat/mvdec.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/libavformat/mvdec.c b/libavformat/mvdec.c index 5d184f20a4..a5c5b205a6 100644 --- a/libavformat/mvdec.c +++ b/libavformat/mvdec.c @@ -26,6 +26,7 @@ #include "libavutil/channel_layout.h" #include "libavutil/eval.h" +#include "libavutil/intfloat.h" #include "libavutil/intreadwrite.h" #include "libavutil/rational.h" @@ -300,8 +301,9 @@ static int mv_read_header(AVFormatContext *avctx) uint64_t timestamp; int v; uint32_t bytes_per_sample; + AVRational fps; - avio_skip(pb, 22); + avio_skip(pb, 10); /* allocate audio track first to prevent unnecessary seeking * (audio packet always precede video packet for a given frame) */ @@ -312,9 +314,11 @@ static int mv_read_header(AVFormatContext *avctx) vst = avformat_new_stream(avctx, NULL); if (!vst) return AVERROR(ENOMEM); - avpriv_set_pts_info(vst, 64, 1, 15); + fps = av_d2q(av_int2double(avio_rb64(pb)), INT_MAX); + avpriv_set_pts_info(vst, 64, fps.den, fps.num); + avio_skip(pb, 4); vst->codecpar->codec_type = AVMEDIA_TYPE_VIDEO; - vst->avg_frame_rate = av_inv_q(vst->time_base); + vst->avg_frame_rate = fps; vst->nb_frames = avio_rb32(pb); v = avio_rb32(pb); switch (v) { |