VLCKit 3.0

10 days ago, we published VLC media player 3.0 for all platforms. It’s the first major release in three years and brings a huge number of features, improvements and fixes. Get an overview here and the full changelog there.

For VLCKit, we improved performance and memory management, added new APIs and you get all improvements from the underlying libvlc including full support for decoding H264 and H265 using VideoToolbox in hardware. Instead of using all cores of your iPhones CPU at 100%, decoding a 4K video uses less than 20%.
Further you can look at all aspects of a 360° video with touch gesture based controls, discover and browse shares on your network with UPnP, NFS, FTP, SFTP and SMB and more.

As you remember, we published VLC for Apple TV in January 2016, but so far, we never made VLCKit available on tvOS. In addition to MobileVLCKit for iOS, we now introduce TVVLCKit for tvOS!

For macOS, iOS and tvOS, VLCKit 3.0 is available through Cocoapods as a precompiled binary under the LGPLv2.1 license. You can find the source code on our website – contributions welcome!

We are looking forward to all your feedback and the apps deploying VLCKit to deliver multimedia to their users.
Do you want to learn more about integrating VLCKit? Have a look at the tutorials I wrote not too long ago (Part 1, Part 2).

So what did we change in VLCKit, API-wise?

New APIs:
- VLCAudio
 - setMuted:

- VLCDialogProvider
 - new class to handle user interaction with VLC events

- VLCLibrary
 - added properties: debugLogging, debugLoggingLevel

- VLCMediaDiscoverer
 - added selector: availableMediaDiscovererForCategoryType:
 - added enum: VLCMediaDiscovererCategoryType

- VLCMediaListPlayer
 - added selectors:
   initWithDrawable:
   initWithOptions:andDrawable:
   playItemAtNumber:

- VLCMediaPlayer
 - added properties:
   titleDescriptions
   indexOfLongestTitle
   numberOfTitles
   snapshots
   lastSnapshot
 - added selectors:
   chaptersForTitleIndex:
   numberOfChaptersForTitle:
   addPlaybackSlave:type:enforce:
   updateViewpoint:pitch:roll:fov:absolute:
 - added notifications: VLCMediaPlayerTitleChanged, VLCMediaPlayerChapterChanged
 - added enum: VLCMediaPlaybackSlaveType
 Note:
 - play's return type was changed from BOOL to void
 - hue is now a float instead of an integer
 WARNING:
 - Return value of the following methods changed from INT_MAX to -1
 (int)currentVideoTrackIndex
 (int)currentVideoSubTitleIndex
 (int)currentChapterIndex
 (int)currentTitleIndex
 (int)currentAudioTrackIndex

- VLCMedia
 - added keys: VLCMetaInformationTrackTotal, VLCMetaInformationDirector,
 VLCMetaInformationSeason, VLCMetaInformationEpisode,
 VLCMetaInformationShowName, VLCMetaInformationActors,
 VLCMetaInformationAlbumArtist, VLCMetaInformationDiscNumber,
 VLCMediaTracksInformationVideoOrientation,
 VLCMediaTracksInformationVideoProjection
 - added selectors:
   codecNameForFourCC:trackType:
   mediaType
   parseWithOptions:
   parseWithOptions:Timeout:
   parsedStatus
   storeCookie:forHost:path:
   clearStoredCookies
 - added enums: VLCMediaType, VLCMediaParsingOptions, VLCMediaParsedStatus, VLCMediaOrientation, VLCMediaProjection
 - changed behavior: media will no longer be parsed automatically if meta data is requested prior to concluded parsing

- VLCMediaList
 - changed behavior: lists of media objects added through arrays or on init are no longer added in reverse order

- VLCTime
 - added selectors:
 isEqual:
 hash

- VLCAudio
 - added property: passthrough

Modified APIs:
- VLCMediaList
 - To match the KVC bindings, all NSInteger arguments were moved to NSUInteger as appropriate
 - mediaList:mediaAdded:atIndex:
 - mediaList:mediaRemovedAtIndex:
 - addMedia:
 - insertMedia:atIndex:
 - removeMediaAtIndex:
 - mediaAtIndex:

Deprecated APIs:
- VLCAudio
 - setMute:
- VLCMedia
 - parse, isParsed, synchronousParse
- VLCMediaDiscoverer
 - availableMediaDiscoverer, localizedName
- VLCMediaPlayer
 - titles, chaptersForTitleIndex:, countOfTitles, framesPerSecond, openVideoSubTitlesFromFile:
- VLCMediaListPlayer
 - playItemAtIndex
- VLCStreamSession
- VLCStreamOutput
- VLCMediaLibrary

Removed APIs:
- VLCExtension
- VLCExtensionsManager
- VLCMedia:
 - fps
 - media:metaValueChangedFrom:forKey:
- VLCMediaPlayer
 - audioTracks
 - videoTracks
 - videoSubTitles
- VLCServicesDiscoverer
- VLCPlaylistDataSource