| @@ -393,6 +393,7 @@ static int img_read_packet(AVFormatContext *s1, AVPacket *pkt) | |||||
| return AVERROR(ENOMEM); | return AVERROR(ENOMEM); | ||||
| pkt->stream_index = 0; | pkt->stream_index = 0; | ||||
| pkt->flags |= AV_PKT_FLAG_KEY; | pkt->flags |= AV_PKT_FLAG_KEY; | ||||
| pkt->pts = s->img_number - s->img_first; | |||||
| pkt->size = 0; | pkt->size = 0; | ||||
| for (i = 0; i < 3; i++) { | for (i = 0; i < 3; i++) { | ||||
| @@ -426,6 +427,16 @@ static int img_read_close(struct AVFormatContext* s1) | |||||
| return 0; | 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 OFFSET(x) offsetof(VideoDemuxData, x) | ||||
| #define DEC AV_OPT_FLAG_DECODING_PARAM | #define DEC AV_OPT_FLAG_DECODING_PARAM | ||||
| static const AVOption options[] = { | static const AVOption options[] = { | ||||
| @@ -460,6 +471,7 @@ AVInputFormat ff_image2_demuxer = { | |||||
| .read_header = img_read_header, | .read_header = img_read_header, | ||||
| .read_packet = img_read_packet, | .read_packet = img_read_packet, | ||||
| .read_close = img_read_close, | .read_close = img_read_close, | ||||
| .read_seek = img_read_seek, | |||||
| .flags = AVFMT_NOFILE, | .flags = AVFMT_NOFILE, | ||||
| .priv_class = &img2_class, | .priv_class = &img2_class, | ||||
| }; | }; | ||||