+static int vpk_read_seek(AVFormatContext *s, int stream_index,
+ int64_t timestamp, int flags)
+{
+ AVStream *st = s->streams[stream_index];
+ AVCodecParameters *par = st->codecpar;
+ VPKDemuxContext *vpk = s->priv_data;
+ int samples_per_block;
+ int64_t ret = 0;
+
+ samples_per_block = av_get_audio_frame_duration2(par, par->block_align);
+ if (samples_per_block > 0)
+ timestamp /= samples_per_block;
+ else
+ return -1;
+ ret = avio_seek(s->pb, vpk->data_start + timestamp * par->block_align, SEEK_SET);
+ if (ret < 0)
+ return ret;
+
+ vpk->current_block = timestamp;
+ ff_update_cur_dts(s, st, timestamp * samples_per_block);
+ return 0;
+}
+
+const AVInputFormat ff_vpk_demuxer = {