Mercurial > libavformat.hg
changeset 5323:ed61c8ab8b08 libavformat
Seek function for TMV
author | daniel |
---|---|
date | Tue, 20 Oct 2009 19:27:25 +0000 |
parents | d09cb951c704 |
children | 3616c1434288 |
files | tmv.c |
diffstat | 1 files changed, 21 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/tmv.c Tue Oct 20 19:07:08 2009 +0000 +++ b/tmv.c Tue Oct 20 19:27:25 2009 +0000 @@ -43,6 +43,8 @@ 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 @@ 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 @@ tmv_probe, tmv_read_header, tmv_read_packet, + NULL, + tmv_read_seek, .flags = AVFMT_GENERIC_INDEX, };