diff options
author | Daniel Verkamp <daniel@drv.nu> | 2009-10-20 19:27:25 +0000 |
---|---|---|
committer | Daniel Verkamp <daniel@drv.nu> | 2009-10-20 19:27:25 +0000 |
commit | 61ee50451758f0505e266c37296250822e304e1d (patch) | |
tree | 960d884cc7091578e0a6d660fee0dccdf36c1ff6 | |
parent | 0319ba5e12e242a8c038fe7dbd07a4b9426ee959 (diff) | |
download | ffmpeg-61ee50451758f0505e266c37296250822e304e1d.tar.gz |
Seek function for TMV
Originally committed as revision 20336 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | libavformat/tmv.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/libavformat/tmv.c b/libavformat/tmv.c index aab42a6184..fe38113ceb 100644 --- a/libavformat/tmv.c +++ b/libavformat/tmv.c @@ -43,6 +43,8 @@ typedef struct TMVContext { unsigned stream_index; } TMVContext; +#define TMV_HEADER_SIZE 12 + #define PROBE_MIN_SAMPLE_RATE 5000 #define PROBE_MAX_FPS 120 #define PROBE_MIN_AUDIO_SIZE (PROBE_MIN_SAMPLE_RATE / PROBE_MAX_FPS) @@ -160,6 +162,23 @@ static int tmv_read_packet(AVFormatContext *s, AVPacket *pkt) return ret; } +static int tmv_read_seek(AVFormatContext *s, int stream_index, + int64_t timestamp, int flags) +{ + TMVContext *tmv = s->priv_data; + int64_t pos; + + if (stream_index) + return -1; + + pos = timestamp * + (tmv->audio_chunk_size + tmv->video_chunk_size + tmv->padding); + + url_fseek(s->pb, pos + TMV_HEADER_SIZE, SEEK_SET); + tmv->stream_index = 0; + return 0; +} + AVInputFormat tmv_demuxer = { "tmv", NULL_IF_CONFIG_SMALL("8088flex TMV"), @@ -167,5 +186,7 @@ AVInputFormat tmv_demuxer = { tmv_probe, tmv_read_header, tmv_read_packet, + NULL, + tmv_read_seek, .flags = AVFMT_GENERIC_INDEX, }; |