summaryrefslogtreecommitdiffstats
path: root/player
diff options
context:
space:
mode:
authorChristoph Heinrich <christoph.heinrich@student.tugraz.at>2022-07-26 18:05:36 +0200
committerDudemanguy <random342@airmail.cc>2023-02-26 22:39:54 +0000
commit048d4d8b7556f06afb46e7e94852709a1a624aed (patch)
tree2b2f8ddd8949a235711aa77cfcd3931114e7f3d9 /player
parented5426c351d9c5b1c605cef82b78d2af625f5d7c (diff)
downloadmpv-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.c31
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);
}