summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorder richter <der.richter@gmx.de>2024-02-09 21:41:20 +0100
committerder richter <der.richter@gmx.de>2024-02-15 00:11:55 +0100
commit00efaeb4281d17b078a2830466698f7ca9774797 (patch)
treef45b41abd590597e852a85c706b52f9e54a44a56
parentca8c61838eb30fb7c3253ff395483912b2da3c30 (diff)
downloadmpv-00efaeb4281d17b078a2830466698f7ca9774797.tar.bz2
mpv-00efaeb4281d17b078a2830466698f7ca9774797.tar.xz
mac/remote: add chapter title info
-rw-r--r--osdep/macos/libmpv_helper.swift5
-rw-r--r--osdep/macos/remote_command_center.swift6
-rw-r--r--osdep/macosx_events.m1
3 files changed, 8 insertions, 4 deletions
diff --git a/osdep/macos/libmpv_helper.swift b/osdep/macos/libmpv_helper.swift
index 6beed835ca..4bead84c69 100644
--- a/osdep/macos/libmpv_helper.swift
+++ b/osdep/macos/libmpv_helper.swift
@@ -236,8 +236,9 @@ class LibmpvHelper {
}
// *(char **) MPV_FORMAT_STRING on mpv_event_property
- class func mpvStringArrayToString(_ obj: UnsafeMutableRawPointer) -> String? {
- let cstr = UnsafeMutablePointer<UnsafeMutablePointer<Int8>>(OpaquePointer(obj))
+ class func mpvStringArrayToString(_ obj: UnsafeMutableRawPointer?) -> String? {
+ guard let str = obj else { return nil }
+ let cstr = UnsafeMutablePointer<UnsafeMutablePointer<Int8>>(OpaquePointer(str))
return String(cString: cstr[0])
}
diff --git a/osdep/macos/remote_command_center.swift b/osdep/macos/remote_command_center.swift
index 8eb2c1dda2..77d2efea8f 100644
--- a/osdep/macos/remote_command_center.swift
+++ b/osdep/macos/remote_command_center.swift
@@ -48,6 +48,7 @@ class RemoteCommandCenter: NSObject {
var position: Double = 0 { didSet { updateInfoCenter() } }
var rate: Double = 0 { didSet { updateInfoCenter() } }
var title: String = "" { didSet { updateInfoCenter() } }
+ var chapter: String = "" { didSet { updateInfoCenter() } }
var infoCenter: MPNowPlayingInfoCenter { get { return MPNowPlayingInfoCenter.default() } }
var commandCenter: MPRemoteCommandCenter { get { return MPRemoteCommandCenter.shared() } }
@@ -58,8 +59,6 @@ class RemoteCommandCenter: NSObject {
nowPlayingInfo = [
MPNowPlayingInfoPropertyMediaType: NSNumber(value: MPNowPlayingInfoMediaType.video.rawValue),
MPNowPlayingInfoPropertyPlaybackProgress: NSNumber(value: 0.0),
- MPMediaItemPropertyAlbumTitle: "",
- MPMediaItemPropertyArtist: "",
]
configs = [
@@ -144,6 +143,7 @@ class RemoteCommandCenter: NSObject {
MPNowPlayingInfoPropertyElapsedPlaybackTime: NSNumber(value: position),
MPMediaItemPropertyPlaybackDuration: NSNumber(value: duration),
MPMediaItemPropertyTitle: title,
+ MPMediaItemPropertyArtist: chapter,
]) { (_, new) in new }
infoCenter.nowPlayingInfo = nowPlayingInfo
@@ -195,6 +195,8 @@ class RemoteCommandCenter: NSObject {
rate = LibmpvHelper.mpvDoubleToDouble(property.data) ?? 1
case "media-title" where [MPV_FORMAT_STRING, MPV_FORMAT_NONE].contains(property.format):
title = LibmpvHelper.mpvStringArrayToString(property.data) ?? ""
+ case "chapter-metadata/title" where [MPV_FORMAT_STRING, MPV_FORMAT_NONE].contains(property.format):
+ chapter = LibmpvHelper.mpvStringArrayToString(property.data) ?? ""
default:
break
}
diff --git a/osdep/macosx_events.m b/osdep/macosx_events.m
index 8722528bc7..b2020f56d1 100644
--- a/osdep/macosx_events.m
+++ b/osdep/macosx_events.m
@@ -159,6 +159,7 @@ void cocoa_set_mpv_handle(struct mpv_handle *ctx)
mpv_observe_property(ctx, 0, "speed", MPV_FORMAT_DOUBLE);
mpv_observe_property(ctx, 0, "pause", MPV_FORMAT_FLAG);
mpv_observe_property(ctx, 0, "media-title", MPV_FORMAT_STRING);
+ mpv_observe_property(ctx, 0, "chapter-metadata/title", MPV_FORMAT_STRING);
mpv_set_wakeup_callback(ctx, wakeup, NULL);
}
}