Monoscopic 360° video support
Pre-release
Pre-release
This release adds support for monoscopic 360° video and further improves Picture in Picture behavior.
360° video support
- Add support for monoscopic 360° videos to
VideoView
. Use the newVideoView/viewport(_:)
modifier to enable 360° display and choose and set an orientation in space. - Orientation in space requires a quaternion. Two
SCNQuaternionRotate(_:_:_:)
andSCNQuaternionWithAngleAndAxis(_:_:_:_:)
functions are provided to help build relevant quaternions, most notably for controlling the viewport through touch events. On iOS theSCNQuaternionForAttitude(_:)
function makes it possible to bridge quaternions delivered by CoreMotion with SceneKit quaternions required used by Pillarbox.
Picture in Picture improvements
- Improve Picture in Picture integration and overall behavior.
- Introduce
PictureInPicturePersistable
that lets app locally respond to Picture in Picture life cycle events if needed.
Improvements
- Add playback speed menu to the tvOS system player view layout.
- Add
AVPlayerItem/seek(_:)
method to set a player item to start at a given time. - Add
Player/isRunning
property. - Improve documentation and tutorials.
Demo improvements
- Greatly improve tvOS navigation user experience.
- Improve Picture in Picture integration in demo examples.
- Display Pillarbox web demo in a web browser. This feature is not intended to be easily accessible and requires a dedicated opt-in to be enabled in app system settings first.
Fixes
- Update Swift package manifest version to 5.9.
Breaking changes
- Prefix all frameworks with
Pillarbox
to avoid potential naming conflicts with packages providing frameworks having the same name. - Update in-app Picture in Picture in-app integration API. The
View/enabledForInAppPictureInPictureWithCleanup(perform:)
method has been replaced with theView/enabledForInAppPictureInPicture(persisting:)
method which, instead of executing a closure to cleanup resources associated with a player (potentially after Picture in Picture ends), ensures aPictureInPicturePersistable
object is kept alive during Picture in Picture playback. ThePictureInPicturePersistable
protocol can be optionally used to locally respond to Picture in Picture lifef cycle events as well. - Update
VideoView
andSystemVideoView
APIs so that optional behaviors (gravity, Picture in Picture support) are configured with modifiers instead of parameters.
What's Changed
- Update Swift Package manifest to Swift 5.9 by @defagos in #686
- Add tracking documentation by @defagos in #685
- Add Picture in Picture tutorial by @waliid in #687
- Reoganize Player documention by @waliid in #688
- Document analytics integration by @defagos in #689
- Polish documentation by @defagos in #690
- Enhance code documentation by moving some references in appropriate sections by @waliid in #691
- Polish articles by @defagos in #692
- Set the correct duration for completing tutorials by @waliid in #693
- Improve tvOS navigation by @waliid in #694
- Update cells appearance for tvOS by @waliid in #695
- Enhance cells appearance for tvOS by @waliid in #699
- Improve the display of examples on tvOS by @waliid in #701
- Document SwiftUI property wrapper usage recommendations by @defagos in #706
- Update dependencies to most recent versions by @defagos in #709
- Add monoscopic 360° video support by @defagos in #702
- Add an access to Pillarbox Web via a WebView by @waliid in #711
- Fix missing media information in iOS cells by @waliid in #712
- Animate video view display by @defagos in #713
- Rename packages to avoid potential conflicts by @defagos in #714
- Update Xcode version used for CI to to 15.2 by @defagos in #715
- Fix product name conflicts by @defagos in #719
- Make player animations smoother by @defagos in #720
- Revise some documentation images by @waliid in #721
- Implementing Playback Speed Feature on tvOS by @waliid in #718
- Create a computed property to detect non-zero playback rates by @waliid in #722
- Remove superfluous selves by @defagos in #723
- Support starting playback at a given time by @defagos in #724
Full Changelog: 0.8.0...0.9.0