]> git.sesse.net Git - ffmpeg/commitdiff
use dvr-ms timestamps
authorMichael Niedermayer <michaelni@gmx.at>
Sat, 10 Feb 2007 03:36:12 +0000 (03:36 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Sat, 10 Feb 2007 03:36:12 +0000 (03:36 +0000)
Originally committed as revision 7905 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/asf.c
libavformat/asf.h

index 81917eb5e9df17b20c3a139b650a558accb58b07..5f4f6c6d106ee8114802f5307e37d82f4c4d8489 100644 (file)
@@ -600,6 +600,7 @@ static int asf_read_frame_header(AVFormatContext *s){
     ByteIOContext *pb = &s->pb;
     int rsize = 1;
     int num = get_byte(pb);
+    int64_t ts0, ts1;
 
     asf->packet_segments--;
     asf->packet_key_frame = num >> 7;
@@ -616,7 +617,20 @@ static int asf_read_frame_header(AVFormatContext *s){
             return -1;
         }
         asf->packet_frag_timestamp = get_le32(pb); // timestamp
-        url_fskip(pb, asf->packet_replic_size - 8);
+        if(asf->packet_replic_size >= 8+38+4){
+//            for(i=0; i<asf->packet_replic_size-8; i++)
+//                av_log(s, AV_LOG_DEBUG, "%02X ",get_byte(pb));
+//            av_log(s, AV_LOG_DEBUG, "\n");
+            url_fskip(pb, 10);
+            ts0= get_le64(pb);
+            ts1= get_le64(pb);
+            url_fskip(pb, 12);
+            get_le32(pb);
+            url_fskip(pb, asf->packet_replic_size - 8 - 38 - 4);
+            if(ts0!= -1) asf->packet_frag_timestamp= ts0/10000;
+            else         asf->packet_frag_timestamp= AV_NOPTS_VALUE;
+        }else
+            url_fskip(pb, asf->packet_replic_size - 8);
         rsize += asf->packet_replic_size; // FIXME - check validity
     } else if (asf->packet_replic_size==1){
         // multipacket - frag_offset is begining timestamp
index 6178bdc702ad4ce48bcb5a0967666a4a5a18eedb..2f5515a5c39717439970c8a686b6a991461f09ad 100644 (file)
@@ -107,7 +107,7 @@ typedef struct {
     int packet_padsize;
     unsigned int packet_frag_offset;
     unsigned int packet_frag_size;
-    int packet_frag_timestamp;
+    int64_t packet_frag_timestamp;
     int packet_multi_size;
     int packet_obj_size;
     int packet_time_delta;