]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/commitdiff
Support for seeking in TTA files.
authorconrad <conrad@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Wed, 25 Apr 2007 23:22:05 +0000 (23:22 +0000)
committerconrad <conrad@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Wed, 25 Apr 2007 23:22:05 +0000 (23:22 +0000)
git-svn-id: file:///var/local/repositories/ffmpeg/trunk@8820 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b

libavformat/tta.c

index 3168a071b1e17cca98cafa0f08fcbc5eb188bc40..b4b352269673d1251d75c4530aa6ec838caf9f8f 100644 (file)
@@ -120,6 +120,20 @@ static int tta_read_packet(AVFormatContext *s, AVPacket *pkt)
     return av_get_packet(&s->pb, pkt, size);
 }
 
+static int tta_read_seek(AVFormatContext *s, int stream_index, int64_t timestamp, int flags)
+{
+    TTAContext *c = s->priv_data;
+    AVStream *st = s->streams[stream_index];
+    int index = av_index_search_timestamp(st, timestamp, flags);
+    if (index < 0)
+        return -1;
+
+    c->currentframe = index;
+    url_fseek(&s->pb, st->index_entries[index].pos, SEEK_SET);
+
+    return 0;
+}
+
 AVInputFormat tta_demuxer = {
     "tta",
     "true-audio",
@@ -128,5 +142,6 @@ AVInputFormat tta_demuxer = {
     tta_read_header,
     tta_read_packet,
     NULL,
+    tta_read_seek,
     .extensions = "tta",
 };