fixing timebase
authorMichael Niedermayer <michaelni@gmx.at>
Sat, 25 Mar 2006 19:40:27 +0000 (19:40 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Sat, 25 Mar 2006 19:40:27 +0000 (19:40 +0000)
Originally committed as revision 5218 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/matroska.c

index afe161b..252c47b 100644 (file)
@@ -2206,7 +2206,7 @@ matroska_read_header (AVFormatContext    *s,
             st = av_new_stream(s, track->stream_index);
             if (st == NULL)
                 return AVERROR_NOMEM;
-            av_set_pts_info(st, 24, 1, 1000); /* 24 bit pts in ms */
+            av_set_pts_info(st, 64, matroska->time_scale, 1000*1000*1000); /* 64 bit pts in ns */
 
             st->codec->codec_id = codec_id;
 
@@ -2295,7 +2295,7 @@ matroska_parse_blockgroup (MatroskaDemuxContext *matroska,
             case MATROSKA_ID_BLOCK: {
                 uint8_t *data, *origdata;
                 int size;
-                uint64_t block_time;
+                int16_t block_time;
                 uint32_t *lace_size = NULL;
                 int n, track, flags, laces = 0;
                 uint64_t num;
@@ -2329,7 +2329,7 @@ matroska_parse_blockgroup (MatroskaDemuxContext *matroska,
                 }
 
                 /* block_time (relative to cluster time) */
-                block_time = ((data[0] << 8) | data[1]) * matroska->time_scale;
+                block_time = (data[0] << 8) | data[1];
                 data += 2;
                 size -= 2;
                 flags = *data;
@@ -2440,7 +2440,7 @@ matroska_parse_blockgroup (MatroskaDemuxContext *matroska,
                         pkt->stream_index =
                             matroska->tracks[track]->stream_index;
 
-                        pkt->pts = timecode / 1000000; /* ns to ms */
+                        pkt->pts = timecode;
                         pkt->pos= pos;
 
                         matroska_queue_packet(matroska, pkt);
@@ -2514,7 +2514,7 @@ matroska_parse_cluster (MatroskaDemuxContext *matroska)
                 uint64_t num;
                 if ((res = ebml_read_uint(matroska, &id, &num)) < 0)
                     break;
-                cluster_time = num * matroska->time_scale;
+                cluster_time = num;
                 break;
             }