summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--demux/demux_lavf.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/demux/demux_lavf.c b/demux/demux_lavf.c
index 62fecde8ea..fe127cdb08 100644
--- a/demux/demux_lavf.c
+++ b/demux/demux_lavf.c
@@ -146,6 +146,7 @@ struct format_hack {
bool is_network : 1;
bool no_seek : 1;
bool no_pcm_seek : 1;
+ bool no_seek_on_no_duration : 1;
};
#define BLACKLIST(fmt) {fmt, .ignore = true}
@@ -174,6 +175,7 @@ static const struct format_hack format_hacks[] = {
{"matroska", .skipinfo = true, .no_pcm_seek = true, .use_stream_ids = true},
{"v4l2", .no_seek = true},
+ {"rtsp", .no_seek_on_no_duration = true},
// In theory, such streams might contain timestamps, but virtually none do.
{"h264", .if_flags = AVFMT_NOTIMESTAMPS },
@@ -1090,6 +1092,9 @@ static int demux_open_lavf(demuxer_t *demuxer, enum demux_check check)
demuxer->duration = duration;
}
+ if (demuxer->duration < 0 && priv->format_hack.no_seek_on_no_duration)
+ demuxer->seekable = false;
+
// In some cases, libavformat will export bogus bullshit timestamps anyway,
// such as with mjpeg.
if (priv->avif_flags & AVFMT_NOTIMESTAMPS) {