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},