aboutsummaryrefslogtreecommitdiffstats
path: root/libavformat/pp_bnk.c
diff options
context:
space:
mode:
authorZane van Iperen <zane@zanevaniperen.com>2021-03-23 21:51:57 +1000
committerZane van Iperen <zane@zanevaniperen.com>2021-03-25 16:34:42 +1000
commitdf9fbc442d47d3067f6dd978d54431567c8bf3f2 (patch)
treef7fa1922f3d446911e2be527c331960fa9627c82 /libavformat/pp_bnk.c
parent2fd48331d53f0ad258ef93e202a0385ef35b39aa (diff)
downloadffmpeg-df9fbc442d47d3067f6dd978d54431567c8bf3f2.tar.gz
avformat/pp_bnk: allow seeking to start
Allows "ffplay -loop" to work. Signed-off-by: Zane van Iperen <zane@zanevaniperen.com> (cherry picked from commit 64fb63411de8b6970dda385bf87d4a70ce357602)
Diffstat (limited to 'libavformat/pp_bnk.c')
-rw-r--r--libavformat/pp_bnk.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/libavformat/pp_bnk.c b/libavformat/pp_bnk.c
index 5c89295d27..07eeca3cd5 100644
--- a/libavformat/pp_bnk.c
+++ b/libavformat/pp_bnk.c
@@ -313,6 +313,25 @@ static int pp_bnk_read_close(AVFormatContext *s)
return 0;
}
+static int pp_bnk_seek(AVFormatContext *s, int stream_index,
+ int64_t pts, int flags)
+{
+ PPBnkCtx *ctx = s->priv_data;
+
+ if (pts != 0)
+ return AVERROR(EINVAL);
+
+ if (ctx->is_music) {
+ av_assert0(stream_index == 0);
+ ctx->tracks[0].bytes_read = 0;
+ ctx->tracks[1].bytes_read = 0;
+ } else {
+ ctx->tracks[stream_index].bytes_read = 0;
+ }
+
+ return 0;
+}
+
AVInputFormat ff_pp_bnk_demuxer = {
.name = "pp_bnk",
.long_name = NULL_IF_CONFIG_SMALL("Pro Pinball Series Soundbank"),
@@ -320,5 +339,6 @@ AVInputFormat ff_pp_bnk_demuxer = {
.read_probe = pp_bnk_probe,
.read_header = pp_bnk_read_header,
.read_packet = pp_bnk_read_packet,
- .read_close = pp_bnk_read_close
+ .read_close = pp_bnk_read_close,
+ .read_seek = pp_bnk_seek,
};