[FFmpeg-cvslog] asfenc: remember send time and offset of the index entries

Vladimir Pantelic git at videolan.org
Fri Sep 20 11:56:05 CEST 2013


ffmpeg | branch: master | Vladimir Pantelic <vladoman at gmail.com> | Thu Sep 19 17:50:37 2013 +0200| [09f3c937ed6fd7c5bd64450d45f73b0f4975f4c9] | committer: Anton Khirnov

asfenc: remember send time and offset of the index entries

Signed-off-by: Vladimir Pantelic <vladoman at gmail.com>
Signed-off-by: Anton Khirnov <anton at khirnov.net>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=09f3c937ed6fd7c5bd64450d45f73b0f4975f4c9
---

 libavformat/asf.h    |    2 ++
 libavformat/asfenc.c |    4 ++++
 2 files changed, 6 insertions(+)

diff --git a/libavformat/asf.h b/libavformat/asf.h
index 4ac644e..2f6722a 100644
--- a/libavformat/asf.h
+++ b/libavformat/asf.h
@@ -78,6 +78,8 @@ typedef struct ASFMainHeader {
 typedef struct ASFIndex {
     uint32_t packet_number;
     uint16_t packet_count;
+    uint64_t send_time;
+    uint64_t offset;
 } ASFIndex;
 
 extern const ff_asf_guid ff_asf_header;
diff --git a/libavformat/asfenc.c b/libavformat/asfenc.c
index e37b6f7..7e1594b 100644
--- a/libavformat/asfenc.c
+++ b/libavformat/asfenc.c
@@ -762,12 +762,14 @@ static void put_frame(AVFormatContext *s, ASFStream *stream, AVStream *avst,
 static int asf_write_packet(AVFormatContext *s, AVPacket *pkt)
 {
     ASFContext *asf = s->priv_data;
+    AVIOContext *pb = s->pb;
     ASFStream *stream;
     int64_t duration;
     AVCodecContext *codec;
     int64_t packet_st, pts;
     int start_sec, i;
     int flags = pkt->flags;
+    uint64_t offset = avio_tell(pb);
 
     codec  = s->streams[pkt->stream_index]->codec;
     stream = &asf->streams[pkt->stream_index];
@@ -802,6 +804,8 @@ static int asf_write_packet(AVFormatContext *s, AVPacket *pkt)
                 // store
                 asf->index_ptr[i].packet_number = (uint32_t)packet_st;
                 asf->index_ptr[i].packet_count  = (uint16_t)(asf->nb_packets - packet_st);
+                asf->index_ptr[i].send_time     = start_sec * INT64_C(10000000);
+                asf->index_ptr[i].offset        = offset;
                 asf->maximum_packet             = FFMAX(asf->maximum_packet,
                                                         (uint16_t)(asf->nb_packets - packet_st));
             }



More information about the ffmpeg-cvslog mailing list