vout: apple: Add Picture in Picture
This adds a new module to handle picture in picture on iOS and tvOS.
Picture in picture is only enabled if the drawable ns-object conforms to the
new VLCPictureInPictureDrawable
protocol.
VLCPictureInPictureDrawable
protocol provide new apis to start/stop picture
in picture and various callbacks to handle user interactions from the picture
in picture window's overlay.
Implementing VLCPictureInPictureDrawable.pictureInPictureReady
block is
mandatory to be notified once picture in picture initialization is done.
This block will pass a id<VLCPictureInPictureWindowControlling>
object
allowing to start and stop picture in picture.
It will also provide a way to invalidate the state of the playback by calling
invalidatePlaybackState
, forcing the picture in picture to fetch new media
infos like current time or media length from the
VLCPictureInPictureDrawable.mediaController
.
This module uses Apple public APIs hence it won't work for macOS at this time. Separate work will have to be done in order to provide support for picture in picture private APIs and allow the use of picture in picture on macOS with libvlc.
Needs !6056 (merged) to have proper playback progress in Picture in Picture window overlay.