aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar wm4 <wm4@nowhere>2018-03-02 13:59:10 +0100
committerGravatar Jan Ekström <jeebjp@gmail.com>2018-03-03 02:38:01 +0200
commit16eca7139a98609b71a25a0e6095b18e28f62025 (patch)
treec2a2c6bb2e601f31fff0234151cdf10371673718
parent16d033814cc5838bef09f6b9ade35f38851b852b (diff)
demux_lavf: add --demuxer-lavf-probe-info=nostreams
Another attempt to try to make it behave in certain situations.
-rw-r--r--DOCS/man/options.rst6
-rw-r--r--demux/demux_lavf.c9
2 files changed, 11 insertions, 4 deletions
diff --git a/DOCS/man/options.rst b/DOCS/man/options.rst
index 2716302e72..8d916ea849 100644
--- a/DOCS/man/options.rst
+++ b/DOCS/man/options.rst
@@ -2718,7 +2718,7 @@ Demuxer
``--demuxer-lavf-analyzeduration=<value>``
Maximum length in seconds to analyze the stream properties.
-``--demuxer-lavf-probe-info=<yes|no|auto>``
+``--demuxer-lavf-probe-info=<yes|no|auto|nostreams>``
Whether to probe stream information (default: auto). Technically, this
controls whether libavformat's ``avformat_find_stream_info()`` function
is called. Usually it's safer to call it, but it can also make startup
@@ -2727,6 +2727,10 @@ Demuxer
The ``auto`` choice (the default) tries to skip this for a few know-safe
whitelisted formats, while calling it for everything else.
+ The ``nostreams`` choice only calls it if and only if the file seems to
+ contain no streams after opening (helpful in cases when calling the function
+ is needed to detect streams at all, such as with FLV files).
+
``--demuxer-lavf-probescore=<1-100>``
Minimum required libavformat probe score. Lower values will require
less data to be loaded (makes streams start faster), but makes file
diff --git a/demux/demux_lavf.c b/demux/demux_lavf.c
index 20cf6429a3..4e1e3067ea 100644
--- a/demux/demux_lavf.c
+++ b/demux/demux_lavf.c
@@ -82,7 +82,7 @@ const struct m_sub_options demux_lavf_conf = {
.opts = (const m_option_t[]) {
OPT_INTRANGE("demuxer-lavf-probesize", probesize, 0, 32, INT_MAX),
OPT_CHOICE("demuxer-lavf-probe-info", probeinfo, 0,
- ({"no", 0}, {"yes", 1}, {"auto", -1})),
+ ({"no", 0}, {"yes", 1}, {"auto", -1}, {"nostreams", -2})),
OPT_STRING("demuxer-lavf-format", format, 0),
OPT_FLOATRANGE("demuxer-lavf-analyzeduration", analyzeduration, 0,
0, 3600),
@@ -892,8 +892,11 @@ static int demux_open_lavf(demuxer_t *demuxer, enum demux_check check)
priv->avfc = avfc;
- bool probeinfo = lavfdopts->probeinfo < 0 ?
- !priv->format_hack.skipinfo : lavfdopts->probeinfo;
+ bool probeinfo = lavfdopts->probeinfo != 0;
+ switch (lavfdopts->probeinfo) {
+ case -2: probeinfo = priv->avfc->nb_streams == 0; break;
+ case -1: probeinfo = !priv->format_hack.skipinfo; break;
+ }
if (demuxer->params && demuxer->params->skip_lavf_probing)
probeinfo = false;
if (probeinfo) {