+static int flic_read_seek(AVFormatContext *s, int stream_index,
+ int64_t pts, int flags)
+{
+ FlicDemuxContext *flic = s->priv_data;
+ AVStream *st = s->streams[stream_index];
+ int64_t pos, ts;
+ int index;
+
+ if (!st->internal->index_entries || stream_index != flic->video_stream_index)
+ return -1;
+
+ index = av_index_search_timestamp(st, pts, flags);
+
+ if (index < 0)
+ index = av_index_search_timestamp(st, pts, flags ^ AVSEEK_FLAG_BACKWARD);
+ if (index < 0)
+ return -1;
+
+ pos = st->internal->index_entries[index].pos;
+ ts = st->internal->index_entries[index].timestamp;
+ flic->frame_number = ts;
+ avio_seek(s->pb, pos, SEEK_SET);
+ return 0;
+}
+
+const AVInputFormat ff_flic_demuxer = {