From 142699fe2bd019c084d877b6b9e878f9cf03fee4 Mon Sep 17 00:00:00 2001 From: Doris Verria Date: Thu, 9 Dec 2021 13:48:27 +0100 Subject: MediaPlayer example: Display track-specific metadata Update the metadata information to show track-specific metadata for the active tracks, besides the media's metadata. Add a missing signal emmission on darwin's mediaplayer. Change-Id: I0513d3ab0c2b62cf74ef060bc1367e2589f68bcd Reviewed-by: Lars Knoll (cherry picked from commit af3286225434fd995b4dfdcb6ebb379b6ffa741d) Reviewed-by: Qt Cherry-pick Bot --- .../multimedia/video/mediaplayer/MetadataInfo.qml | 19 ++++++++++++------- examples/multimedia/video/mediaplayer/main.qml | 12 +++++++++++- .../platform/darwin/mediaplayer/avfmediaplayer.mm | 1 + 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/examples/multimedia/video/mediaplayer/MetadataInfo.qml b/examples/multimedia/video/mediaplayer/MetadataInfo.qml index aea0fd1df..5019c1759 100644 --- a/examples/multimedia/video/mediaplayer/MetadataInfo.qml +++ b/examples/multimedia/video/mediaplayer/MetadataInfo.qml @@ -57,14 +57,19 @@ Item { id: root implicitWidth: 200 + function clear() { + elements.clear(); + } + function read(metadata) { - elements.clear() - for (var key of metadata.keys()) { - if (metadata.stringValue(key)) { - elements.append( - { name: metadata.metaDataKeyToString(key) - , value: metadata.stringValue(key) - }) + if (metadata) { + for (var key of metadata.keys()) { + if (metadata.stringValue(key)) { + elements.append( + { name: metadata.metaDataKeyToString(key) + , value: metadata.stringValue(key) + }) + } } } } diff --git a/examples/multimedia/video/mediaplayer/main.qml b/examples/multimedia/video/mediaplayer/main.qml index 0bbf672ac..ea31ba2ed 100644 --- a/examples/multimedia/video/mediaplayer/main.qml +++ b/examples/multimedia/video/mediaplayer/main.qml @@ -73,6 +73,14 @@ Window { MediaPlayer { id: mediaPlayer + + function updateMetadata() { + metadataInfo.clear(); + metadataInfo.read(mediaPlayer.metaData); + metadataInfo.read(mediaPlayer.audioTracks[mediaPlayer.activeAudioTrack]); + metadataInfo.read(mediaPlayer.videoTracks[mediaPlayer.activeVideoTrack]); + } + videoOutput: videoOutput audioOutput: AudioOutput { id: audio @@ -81,7 +89,7 @@ Window { } onErrorOccurred: { mediaErrorText.text = mediaPlayer.errorString; mediaError.open() } - onMetaDataChanged: { metadataInfo.read(mediaPlayer.metaData) } + onMetaDataChanged: { updateMetadata() } onTracksChanged: { audioTracksInfo.read(mediaPlayer.audioTracks); audioTracksInfo.selectedTrack = mediaPlayer.activeAudioTrack; @@ -89,7 +97,9 @@ Window { videoTracksInfo.selectedTrack = mediaPlayer.activeVideoTrack; subtitleTracksInfo.read(mediaPlayer.subtitleTracks); subtitleTracksInfo.selectedTrack = mediaPlayer.activeSubtitleTrack; + updateMetadata() } + onActiveTracksChanged: { updateMetadata() } } PlayerMenuBar { diff --git a/src/multimedia/platform/darwin/mediaplayer/avfmediaplayer.mm b/src/multimedia/platform/darwin/mediaplayer/avfmediaplayer.mm index 0b71880aa..311a87a31 100644 --- a/src/multimedia/platform/darwin/mediaplayer/avfmediaplayer.mm +++ b/src/multimedia/platform/darwin/mediaplayer/avfmediaplayer.mm @@ -1163,6 +1163,7 @@ void AVFMediaPlayer::setActiveTrack(QPlatformMediaPlayer::TrackType type, int in } for (int i = 0; i < t.count(); ++i) t.at(i).enabled = (i == index); + emit activeTracksChanged(); } int AVFMediaPlayer::activeTrack(QPlatformMediaPlayer::TrackType type) -- cgit v1.2.3