diff options
Diffstat (limited to 'libavformat/img2dec.c')
-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 f492bba..ff9c3fd 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, }; |