diff options
author | Anton Khirnov <wyskas@gmail.com> | 2008-06-01 13:54:11 +0000 |
---|---|---|
committer | Aurelien Jacobs <aurel@gnuage.org> | 2008-06-01 13:54:11 +0000 |
commit | 7ff97085853ff8eb596eace6408cc657d02958c9 (patch) | |
tree | 95aaee96b6851a700db48d78ef3b9bcf6ceef899 /libavformat/matroskadec.c | |
parent | cdae8eec1062e51059d67bb344b78d668b4c7b48 (diff) | |
download | ffmpeg-7ff97085853ff8eb596eace6408cc657d02958c9.tar.gz |
matroskadec: read TrackTimecodeScale and set timebase accordingly
patch by Anton Khirnov wyskas _at_ gmail _dot_ com
Originally committed as revision 13601 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat/matroskadec.c')
-rw-r--r-- | libavformat/matroskadec.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index 37c11403f9..cff5d67697 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -60,6 +60,7 @@ typedef struct Track { unsigned char *codec_priv; int codec_priv_size; + double time_scale; uint64_t default_duration; MatroskaTrackFlags flags; @@ -1589,6 +1590,14 @@ matroska_add_stream (MatroskaDemuxContext *matroska) break; } + case MATROSKA_ID_TRACKTIMECODESCALE: { + double num; + if ((res = ebml_read_float(matroska, &id, &num)) < 0) + break; + track->time_scale = num; + break; + } + default: av_log(matroska->ctx, AV_LOG_INFO, "Unknown track header entry 0x%x - ignoring\n", id); @@ -2615,7 +2624,7 @@ matroska_read_header (AVFormatContext *s, st = av_new_stream(s, track->stream_index); if (st == NULL) return AVERROR(ENOMEM); - av_set_pts_info(st, 64, matroska->time_scale, 1000*1000*1000); /* 64 bit pts in ns */ + av_set_pts_info(st, 64, matroska->time_scale*track->time_scale, 1000*1000*1000); /* 64 bit pts in ns */ st->codec->codec_id = codec_id; st->start_time = 0; |