diff --git a/SharedSources/VLCMetadata.h b/SharedSources/VLCMetadata.h index 142912d3d9275aa7984c2c196c701138e9e428b6..c4e9e08e691b8db4d55122e675695b3ddfdda678 100644 --- a/SharedSources/VLCMetadata.h +++ b/SharedSources/VLCMetadata.h @@ -1,11 +1,15 @@ -// -// VLCMediaPlayer + Metadata.h -// VLC -// -// Created by Carola Nitz on 9/27/17. -// Copyright © 2017 VideoLAN. All rights reserved. -// +/***************************************************************************** + * VLC for iOS + ***************************************************************************** + * Copyright (c) 2017-2019 VideoLAN. All rights reserved. + * $Id$ + * + * Authors: Carola Nitz + * + * Refer to the COPYING file of the official project for license. + *****************************************************************************/ +@class VLCMLMedia; @interface VLCMetaData: NSObject @property(readwrite, copy) NSString *title; @@ -18,5 +22,9 @@ @property(readwrite) NSNumber *elapsedPlaybackTime; @property(readwrite) NSNumber *playbackRate; +#if TARGET_OS_IOS +- (void)updateMetadataFromMedia:(VLCMLMedia *)media mediaPlayer:(VLCMediaPlayer*)mediaPlayer; +#else - (void)updateMetadataFromMediaPlayer:(VLCMediaPlayer *)mediaPlayer; +#endif @end diff --git a/SharedSources/VLCMetadata.m b/SharedSources/VLCMetadata.m index 78a93e3234391d3a053e4a91b2e534ffcc42e9f4..8f4aa8dcf8cf11c1307258f521bac084752e9cd6 100644 --- a/SharedSources/VLCMetadata.m +++ b/SharedSources/VLCMetadata.m @@ -24,66 +24,42 @@ { self = [super init]; if (self) { + self.trackNumber = nil; + self.title = @""; + self.artist = @""; + self.albumName = @""; + self.artworkImage = nil; + self.isAudioOnly = NO; } return self; } - +#if TARGET_OS_TV - (void)updateMetadataFromMediaPlayer:(VLCMediaPlayer *)mediaPlayer; { - self.trackNumber = nil; - self.title = @""; - self.artist = @""; - self.albumName = @""; - self.artworkImage = nil; - self.isAudioOnly = NO; -#if TARGET_OS_IOS - [self updateMetadataFromMediaPlayerForiOS:mediaPlayer]; -#else [self updateMetadataFromMediaPlayerFortvOS:mediaPlayer]; -#endif } +#endif #if TARGET_OS_IOS -- (void)updateMetadataFromMediaPlayerForiOS:(VLCMediaPlayer *)mediaPlayer +- (void)updateMetadataFromMedia:(VLCMLMedia *)media mediaPlayer:(VLCMediaPlayer*)mediaPlayer { - MLFile *item; - - if ([VLCPlaybackController sharedInstance].mediaList) { - item = [MLFile fileForURL:mediaPlayer.media.url].firstObject; - } - - if (item) { - if (item.isAlbumTrack) { - self.title = item.albumTrack.title; - self.artist = item.albumTrack.artist; - self.albumName = item.albumTrack.album.name; - } else - self.title = item.title; - - /* MLKit knows better than us if this thing is audio only or not */ - self.isAudioOnly = [item isSupportedAudioFile]; - } else { + if ([VLCKeychainCoordinator passcodeLockEnabled]) return; + if (media) { + self.title = media.title; + self.artist = media.albumTrack.artist.name; + self.trackNumber = @(media.albumTrack.trackNumber); + self.albumName = media.albumTrack.album.title; + self.artworkImage = [[UIImage alloc] initWithContentsOfFile:media.thumbnail.path]; + } else { // We're streaming something + self.artworkImage = nil; + self.trackNumber = nil; + self.artist = nil; + self.albumName = nil; [self fillFromMetaDict:mediaPlayer]; - } - - [self checkIsAudioOnly:mediaPlayer]; - - if (self.isAudioOnly) { - self.artworkImage = [VLCThumbnailsCache thumbnailForManagedObject:item]; - - if (self.artworkImage) { - if (self.artist) - self.title = [self.title stringByAppendingFormat:@" — %@", self.artist]; - if (self.albumName) - self.title = [self.title stringByAppendingFormat:@" — %@", self.albumName]; - } - if (self.title.length < 1) - self.title = [[mediaPlayer.media url] lastPathComponent]; + self.title = [[mediaPlayer.media url] lastPathComponent]; } [self updatePlaybackRate:mediaPlayer]; - if ([VLCKeychainCoordinator passcodeLockEnabled]) return; - [self populateInfoCenterFromMetadata]; } #else diff --git a/Sources/VLCPlaybackController.m b/Sources/VLCPlaybackController.m index 1ea485f9e6a4aefac8272b539be882caabaf97d8..9d0abfdce1e8dbf09650b28012424b30c789cf8f 100644 --- a/Sources/VLCPlaybackController.m +++ b/Sources/VLCPlaybackController.m @@ -1077,7 +1077,12 @@ typedef NS_ENUM(NSUInteger, VLCAspectRatio) { if (_needsMetadataUpdate == NO) { _needsMetadataUpdate = YES; dispatch_async(dispatch_get_main_queue(), ^{ +#if TARGET_OS_IOS + VLCMLMedia *media = self->_mediaPlayer.media ? [self->_delegate mediaForPlayingMedia:self->_mediaPlayer.media] : nil; + [self->_metadata updateMetadataFromMedia:media mediaPlayer:self->_mediaPlayer]; +#else [self->_metadata updateMetadataFromMediaPlayer:self->_mediaPlayer]; +#endif self->_needsMetadataUpdate = NO; [self recoverDisplayedMetadata]; });