diff options
author | Doris Verria <doris.verria@qt.io> | 2021-12-09 13:48:27 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-12-09 21:26:56 +0000 |
commit | 142699fe2bd019c084d877b6b9e878f9cf03fee4 (patch) | |
tree | b14ad81eaffa816cd42c5ddd9ae5ee9057261674 | |
parent | 80be54dd617763956c430e2bbbe7366681c35f11 (diff) | |
download | qtmultimedia-142699fe2bd019c084d877b6b9e878f9cf03fee4.tar.gz |
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 <lars.knoll@qt.io>
(cherry picked from commit af3286225434fd995b4dfdcb6ebb379b6ffa741d)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | examples/multimedia/video/mediaplayer/MetadataInfo.qml | 19 | ||||
-rw-r--r-- | examples/multimedia/video/mediaplayer/main.qml | 12 | ||||
-rw-r--r-- | src/multimedia/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) |