diff options
author | Paul B Mahol <onemda@gmail.com> | 2013-01-08 11:43:07 +0000 |
---|---|---|
committer | Paul B Mahol <onemda@gmail.com> | 2013-01-08 14:29:22 +0000 |
commit | 55d32eed8f2d32611de127a9aa93f9845e465919 (patch) | |
tree | e456e4f7ca478340bfee52b6cf32c6fd2632d196 | |
parent | 86159703f5719f4ca2c56d20792600637d1296a2 (diff) | |
download | ffmpeg-55d32eed8f2d32611de127a9aa93f9845e465919.tar.gz |
img2dec: seeking support
Signed-off-by: Paul B Mahol <onemda@gmail.com>
-rw-r--r-- | libavformat/img2dec.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/libavformat/img2dec.c b/libavformat/img2dec.c index f492bba829..ff9c3fdee2 100644 --- a/libavformat/img2dec.c +++ b/libavformat/img2dec.c @@ -393,6 +393,7 @@ static int img_read_packet(AVFormatContext *s1, AVPacket *pkt) return AVERROR(ENOMEM); pkt->stream_index = 0; pkt->flags |= AV_PKT_FLAG_KEY; + pkt->pts = s->img_number - s->img_first; pkt->size = 0; for (i = 0; i < 3; i++) { @@ -426,6 +427,16 @@ static int img_read_close(struct AVFormatContext* s1) return 0; } +static int img_read_seek(AVFormatContext *s, int stream_index, int64_t timestamp, int flags) +{ + VideoDemuxData *s1 = s->priv_data; + + if (timestamp < 0 || timestamp > s1->img_last - s1->img_first) + return -1; + s1->img_number = timestamp + s1->img_first; + return 0; +} + #define OFFSET(x) offsetof(VideoDemuxData, x) #define DEC AV_OPT_FLAG_DECODING_PARAM static const AVOption options[] = { @@ -460,6 +471,7 @@ AVInputFormat ff_image2_demuxer = { .read_header = img_read_header, .read_packet = img_read_packet, .read_close = img_read_close, + .read_seek = img_read_seek, .flags = AVFMT_NOFILE, .priv_class = &img2_class, }; |