summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-01-23 15:59:06 +0100
committerwm4 <wm4@nowhere>2015-01-23 15:59:06 +0100
commit9681d42a9427c8860f1a768a289de3679a9cd9e8 (patch)
tree87d91b0650a50253688372eca63164956d24dd6d
parenta0ed62fc1d427bc02af8a2865d491ebde73ad2f0 (diff)
downloadmpv-9681d42a9427c8860f1a768a289de3679a9cd9e8.tar.bz2
mpv-9681d42a9427c8860f1a768a289de3679a9cd9e8.tar.xz
command: export file format as property
Repurpose demuxer->filetype for this. It used to be used to print a human readable format description; change it to a symbolic format name and export it as property. Unfortunately, libavformat has its own weird conventions, which are reflected through the new property, e.g. the .mp4 case mentioned in the manpage. Fixes #1504.
-rw-r--r--DOCS/man/input.rst5
-rw-r--r--demux/demux_lavf.c4
-rw-r--r--demux/demux_subreader.c4
-rw-r--r--player/command.c12
4 files changed, 20 insertions, 5 deletions
diff --git a/DOCS/man/input.rst b/DOCS/man/input.rst
index 4ec29ba62d..3992ace93a 100644
--- a/DOCS/man/input.rst
+++ b/DOCS/man/input.rst
@@ -709,6 +709,11 @@ Property list
Otherwise, return the ``filename`` property.
+``file-format``
+ Symbolic name of the file format. In some cases, this is a comma-separated
+ list of format names, e.g. mp4 is ``mov,mp4,m4a,3gp,3g2,mj2`` (the list
+ may grow future for any format).
+
``demuxer``
Name of the current demuxer. (This is useless.)
diff --git a/demux/demux_lavf.c b/demux/demux_lavf.c
index e1800295cc..4d84bd20d4 100644
--- a/demux/demux_lavf.c
+++ b/demux/demux_lavf.c
@@ -350,9 +350,7 @@ static int lavf_check_file(demuxer_t *demuxer, enum demux_check check)
success:
- demuxer->filetype = priv->avif->long_name;
- if (!demuxer->filetype)
- demuxer->filetype = priv->avif->name;
+ demuxer->filetype = priv->avif->name;
return 0;
}
diff --git a/demux/demux_subreader.c b/demux/demux_subreader.c
index f6454aaf2e..145754be6d 100644
--- a/demux/demux_subreader.c
+++ b/demux/demux_subreader.c
@@ -547,8 +547,8 @@ static bool subreader_autodetect(stream_t *fd, struct MPOpts *opts,
{ sub_read_line_subrip, NULL, "subviewer" },
{ sub_read_line_subviewer, NULL, "subrip", "subrip" },
{ sub_read_line_ssa, NULL, "ssa", "ass-text" },
- { sub_read_line_subviewer2, NULL, "subviewer 2.0" },
- { sub_read_line_subrip09, NULL, "subrip 0.9" },
+ { sub_read_line_subviewer2, NULL, "subviewer2" },
+ { sub_read_line_subrip09, NULL, "subrip9" },
{ sub_read_line_mpl2, NULL, "mpl2" }
};
const struct subreader *srp;
diff --git a/player/command.c b/player/command.c
index 922734211c..e7ecb4d375 100644
--- a/player/command.c
+++ b/player/command.c
@@ -420,6 +420,17 @@ static int mp_property_demuxer(void *ctx, struct m_property *prop,
return m_property_strdup_ro(action, arg, demuxer->desc->name);
}
+static int mp_property_file_format(void *ctx, struct m_property *prop,
+ int action, void *arg)
+{
+ MPContext *mpctx = ctx;
+ struct demuxer *demuxer = mpctx->master_demuxer;
+ if (!demuxer)
+ return M_PROPERTY_UNAVAILABLE;
+ const char *name = demuxer->filetype ? demuxer->filetype : demuxer->desc->name;
+ return m_property_strdup_ro(action, arg, name);
+}
+
/// Position in the stream (RW)
static int mp_property_stream_pos(void *ctx, struct m_property *prop,
int action, void *arg)
@@ -3238,6 +3249,7 @@ static const struct m_property mp_properties[] = {
{"stream-path", mp_property_stream_path},
{"stream-capture", mp_property_stream_capture},
{"demuxer", mp_property_demuxer},
+ {"file-format", mp_property_file_format},
{"stream-pos", mp_property_stream_pos},
{"stream-end", mp_property_stream_end},
{"length", mp_property_length},