diff options
author | Christoph Heinrich <christoph.heinrich@student.tugraz.at> | 2022-07-26 18:05:36 +0200 |
---|---|---|
committer | Dudemanguy <random342@airmail.cc> | 2023-02-26 22:39:54 +0000 |
commit | 048d4d8b7556f06afb46e7e94852709a1a624aed (patch) | |
tree | 2b2f8ddd8949a235711aa77cfcd3931114e7f3d9 /player | |
parent | ed5426c351d9c5b1c605cef82b78d2af625f5d7c (diff) | |
download | mpv-048d4d8b7556f06afb46e7e94852709a1a624aed.tar.bz2 mpv-048d4d8b7556f06afb46e7e94852709a1a624aed.tar.xz |
player: set playlist title to media title if not set already
The playlist title only got set when it was specified in the
playlist file.
If there is a title after opening a file, that should also be reflected
in the playlist.
ref. #4780
Diffstat (limited to 'player')
-rw-r--r-- | player/command.c | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/player/command.c b/player/command.c index 9d6ef4fa54..2ad83cb703 100644 --- a/player/command.c +++ b/player/command.c @@ -519,24 +519,27 @@ static int mp_property_media_title(void *ctx, struct m_property *prop, int action, void *arg) { MPContext *mpctx = ctx; - char *name = NULL; + const char* name = NULL; if (mpctx->opts->media_title) name = mpctx->opts->media_title; + if ((!name || !name[0]) && mpctx->demuxer) { + name = mp_tags_get_str(mpctx->demuxer->metadata, "service_name"); + if (!name || !name[0]){ + name = mp_tags_get_str(mpctx->demuxer->metadata, "title"); + if (!name || !name[0]) + name = mp_tags_get_str(mpctx->demuxer->metadata, "icy-title"); + } + } + struct playlist_entry *const pe = mpctx->playing; + if (pe) { + if (!name || !name[0]){ + name = pe->title; + } else if (!pe->title) { + pe->title = talloc_strdup(pe, name); + } + } if (name && name[0]) return m_property_strdup_ro(action, arg, name); - if (mpctx->demuxer) { - name = mp_tags_get_str(mpctx->demuxer->metadata, "service_name"); - if (name && name[0]) - return m_property_strdup_ro(action, arg, name); - name = mp_tags_get_str(mpctx->demuxer->metadata, "title"); - if (name && name[0]) - return m_property_strdup_ro(action, arg, name); - name = mp_tags_get_str(mpctx->demuxer->metadata, "icy-title"); - if (name && name[0]) - return m_property_strdup_ro(action, arg, name); - } - if (mpctx->playing && mpctx->playing->title) - return m_property_strdup_ro(action, arg, mpctx->playing->title); return mp_property_filename(ctx, prop, action, arg); } |