From: Michael Niedermayer Date: Sat, 10 Feb 2007 03:36:12 +0000 (+0000) Subject: use dvr-ms timestamps X-Git-Tag: v0.5~10152 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=559a55ad5249293186f933749e3767f448b5d2d3;p=platform%2Fupstream%2Flibav.git use dvr-ms timestamps Originally committed as revision 7905 to svn://svn.ffmpeg.org/ffmpeg/trunk --- diff --git a/libavformat/asf.c b/libavformat/asf.c index 81917eb..5f4f6c6 100644 --- a/libavformat/asf.c +++ b/libavformat/asf.c @@ -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; ipacket_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 diff --git a/libavformat/asf.h b/libavformat/asf.h index 6178bdc..2f5515a 100644 --- a/libavformat/asf.h +++ b/libavformat/asf.h @@ -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;