Releases: SRGSSR/pillarbox-apple
Documentation
This release adds integration documentation (articles and tutorials).
Demo changes
- Remove some test streams.
Fixes
- Hide Picture in Picture classes that were incorrectly exposed publicly.
What's Changed
- Move existing markdown documentation into documentation catalogs by @waliid in #651
- Fix methods incorrectly marked as deprecated in documentation catalogs by @defagos in #652
- Revisit Player landing documentation page by @defagos in #654
- Improve icon display in the lists by @waliid in #656
- Improve page titles by @defagos in #655
- Update source code color in the setting page for the web by @waliid in #657
- Define featured pages with associated cards by @defagos in #658
- Update markdownlint by @defagos in #659
- Document asset loading by @defagos in #662
- Improve playback documentation by @waliid in #660
- Fix flaky test by @defagos in #664
- Document system integration by @defagos in #661
- Document
ProgressTracker
by @defagos in #663 - Add asset and player item documentation extensions by @waliid in #665
- Add tutorial code sample by @defagos in #666
- Organize progress tracker APIs by @defagos in #668
- Add progress tracking tutorial by @defagos in #667
- Extract project setup to a dedicated tutorial by @defagos in #669
- Add a tutorial for basic play and pause UI by @waliid in #670
- Add visibility tracking documentation and tutorial by @defagos in #671
- Add a tutorial for basic backward and forward seek by @waliid in #672
- Add pinch to zoom tutorial by @defagos in #673
- Consolidate documentation by @defagos in #674
- Add tutorial artworks by @defagos in #675
- Add Control Center tutorial by @waliid in #676
- Document state observation and layout optimization by @defagos in #677
- Remove test streams by @defagos in #678
- Add AirPlay tutorial by @waliid in #679
- Media selection documentation by @defagos in #680
Full Changelog: 0.7.0...0.8.0
Picture in Picture support
This release introduces support for Picture in Picture.
Picture in Picture
- Added basic Picture in Picture support to
VideoView
. - Implemented basic Picture in Picture support for
SystemVideoView
. - Support advanced Picture in Picture integration.
Miscellaneous Improvements
- Added translations.
- Improved visibility tracking with VoiceOver enabled.
- Consolidated player publishers.
- Removed all workarounds created for AirPlay.
- Updated documentation.
- Reduced the frequency of playback rate updates sent to analytics.
- Enhanced playback speed support implementation.
- Improved the demo application.
- Enhanced player item tracker API and stream type transition support.
- Simplified background video measurement management for comScore.
Fixes
- Corrected custom slider animation.
- Addressed flaky tests.
- Resolved seek bar slowness caused by media selection.
- Mitigated performance issues related to media selection criteria retrieval.
- Preserved media selection characteristics between selections.
- Fixed media selection issues when altering the current selection programmatically.
What's Changed
- Translate packages by @defagos in #574
- Improve visibility tracking with VoiceOver enabled by @defagos in #575
- Consolidate player publishers by @waliid in #587
- Fix custom slider animation by @defagos in #589
- Update Commanders Act and comScore SDKs by @defagos in #588
- Fix flaky tests by @defagos in #594
- Remove all workarounds made for AirPlay by @waliid in #591
- Fix seek bar slowness due to media selection by @waliid in #590
- Mitigate media selection criteria retrieval performance issues by @defagos in #596
- Preserve media selection characteristics between selections by @defagos in #597
- Update gems and some docs by @waliid in #592
- Fix media selection issues when altering current selection programmatically by @defagos in #600
- Minimize the frequency of playback rate updates sent to analytics by @waliid in #599
- Improve playback speed support implementation by @defagos in #601
- Share current item publisher for consistency by @defagos in #602
- Display the URL cache size by @waliid in #604
- Remove superfluous observation by @defagos in #608
- Make routing management global by @defagos in #621
- Add basic Picture in Picture support to
VideoView
by @defagos in #623 - Support advanced PiP integration by @waliid in #624
- Remove superfluous PiP identifier by @defagos in #625
- Implement a style to prevent redundant menus in the macOS app by @waliid in #627
- Add the support of the Picture in Picture for the system video view by @waliid in #628
- Document Picture in Picture integration by @defagos in #629
- Restore from Picture in Picture earlier by @defagos in #630
- Fix the display issue related to clearing the cache by @waliid in #633
- Support Picture in Picture in playlists by @waliid in #631
- Correct the deferred seek by @waliid in #632
- Sort BUs by alphabetical order by @waliid in #635
- Add source code access for showcases by @waliid in #634
- Fix the path for accessing the source code by @waliid in #637
- Improve setting support by @defagos in #638
- Point at matching source code version by @defagos in #640
- Add TestFlight link by @defagos in #641
- Remove UIKit-oriented APIs by @defagos in #642
- Enable new rules introduced in SwiftLint 0.53.0 by @defagos in #645
- Add GitHub shortcuts by @waliid in #643
- Display SRG SSR media duration in minutes by @defagos in #644
- Remove useless imports by @waliid in #646
- Improve player item tracker API and stream type transition support by @defagos in #647
- Remove overly complicated background video measurement management for comScore by @defagos in #649
Full Changelog: 0.6.0...0.7.0
Audio tracks, subtitles and user consent
This release adds support for audio tracks and subtitles.
Audio tracks and subtitles
- Add media selection APIs to retrieve available and selected audio tracks and subtitles or to change the current selection.
- Display forced subtitles when available.
- Automatically prefer tracks intended for Audio Description and SDH & CC depending on device accessibility settings.
- Override media selection programmatically.
- Override subtitle text style programmatically (WebVTT only).
- Provide standard menu for audio tracks and subtitles.
Global analytics labels and user consent support
- You can optionally provide an
AnalyticsDataSource
when startingAnalytics
. This data source can be used to deliver global labels in all comScore and Commanders Act events. - User consent can be provided in comScore and Commanders Act global labels.
Breaking changes
- The
restart
andcanRestart
APIs have been renamed asreplay
andcanReplay
respectively. These APIs now always resume playback if needed.
Miscellaneous improvements
- Prevent playback of content containing at least a blocked segment.
- Improve automatic visibility management.
- Improve SRG SSR resource resolution to prefer HLS streams when available, most notably for SWI content.
- Add
playbackSpeed
binding API. - Provide playback speed selection in standard menu API.
- Remove unused Diagnostics and UserInterface packages.
- Remove unused Google Cast SDK dependency.
Fixes
- Fix playback crashing when seeking near the end of some streams.
- Always send
uptime
to Commanders Act for livestreams, no matter the offset from the live edge. - Fix player leak on tvOS.
- Fix never-ending slider interactions.
- Retrieve SRG SSR metadata on a device basis (vector).
- Fix unplayable RTS audio content.
What's Changed
- Update CI documentation for reliable git-describe results by @defagos in #497
- Generate local stream for subtitles and audio tracks by @waliid in #498
- Add support for subtitles and audio tracks by @defagos in #516
- Reduce stale bot threshold by @defagos in #517
- Retrieve media composition specific to supported vectors by @defagos in #519
- Avoid sound playing for a short while after system player UI dismissal on tvOS by @defagos in #522
- Add WWDC Keynote stream to examples by @defagos in #525
- Keep user interface visible when seeking within an audio by @defagos in #527
- Properly ensure menu item ordering by @defagos in #529
- Always send uptime for livestreams by @defagos in #531
- Replace deprecated stale bot with maintained one by @defagos in #530
- Use view modifiers where appropriate by @defagos in #532
- Show user interface when returning to the foreground while not playing by @defagos in #526
- Fix neverending custom slider interactions by @defagos in #528
- Add support for forced subtitles by @defagos in #533
- Show user interface when playback is paused by @defagos in #535
- Add SDH and CC support by @defagos in #536
- Update correctly subtitle selection by @waliid in #538
- Update advice about automatic audio rendition selection by @defagos in #539
- Enhancing the media selection options by @waliid in #544
- Update YouTubeKit by @waliid in #543
- Support subtitle appearance customization by @defagos in #545
- Improve default language ordering by @waliid in #546
- Add priority on supported streaming methods by @waliid in #547
- Reset media selection context when no item is being played by @defagos in #549
- Make efficient seeks near the end of the available range safe by @waliid in #550
- Rename restart API as replay by @defagos in #551
- Add audio tracks and subtitles analytics by @waliid in #552
- Fix media composition parsing by @waliid in #554
- Use page name instead of content title for Commanders Act by @waliid in #557
- Prevent any chapter from being played if one of its segments is blocked by @defagos in #558
- Add support for user consent by @waliid in #561
- Cleanup unused packages and dependencies by @defagos in #565
- Use Commanders Act debug source key in unit tests by @defagos in #563
- Revisit menu API by @defagos in #570
- Update for Xcode 15 and iOS / tvOS 17 support by @defagos in #569
Full Changelog: 0.5.1...0.6.0
Enhancements and bug fix
This update includes several enhancements and a bug fix.
Enhancements
- The default Commanders Act logging is now used.
- The auto-hide standard delay has been reduced from 4 to 3 seconds.
- Full-screen functionality has been improved on iPad.
- A
PasteButton
has been added to the Examples view to paste URLs more easily. - Player and analytics versions have been introduced.
Bug Fix
- The usage of the
PhaseAnimator
has been removed to avoid freezing the UI on iOS 17 Beta 4.
What's Changed
- Reduce auto-hide standard delay by @defagos in #482
- Improve full screen support on iPad by @defagos in #481
- Add YouTube auto paste by @waliid in #480
- Fix status bar incorrectly togglable for audio by @defagos in #483
- Group packages by @defagos in #487
- Avoid PhaseAnimator usage by @waliid in #488
- Use default Commanders Act logging by @defagos in #489
- Replace YouTube auto paste by a PasteButton by @waliid in #491
- Add feedback report reference to known audio duration issue for iPad apps running on macOS by @defagos in #494
- Add a player version by @waliid in #493
Full Changelog: 0.5.0...0.5.1
Standard SRG SSR analytics
This Pillarbox release implements standard SRG SSR streaming analytics. It also provides the necessary toolset to measure page views and events in SRG SSR applications.
This release also adds support for playback speed controls and makes it possible to promote a single instance for system integration in the context of multi-instance player experiences.
Analytics must still be validated but otherwise Pillarbox can be considered suitable for production.
Standard SRG SSR analytics
Standard SRG SSR analytics (comScore / Mediapulse and Commanders Act / Mapp) have been added:
- Introduce
Analytics
singleton to manage analytics setup as well as page view and event tracking. - Implement standard
ComScoreTracker
andCommandersAct
stream trackers. These trackers are automatically associated with URN-based items played usingCoreBusiness
but can also be integrated with other data sources if needed. - Provide helpers for user interface tracking:
PageViewTracking
makes it possible to associate page view analytics metadata with view controllers in UIKit contexts.PageViewContainerTracking
can be used to integrate custom view controllers with the page view analytics engine. Integration with standard UIKit containers (UINavigationController
,UITabBarController
, etc.) is provided.- Modifiers for declarative view tracking in SwiftUI contexts.
- Provide helpers for event tracking.
Playback speed
Playback speed support has been added to the Player
. Applications are responsible of displaying associated controls however they like:
- Add APIs to set a desired playback speed, retrieve the available speed range and the currently effective playback speed.
- Implement support for livestreams, including dynamic speed adjustments for DVR.
- Support playback speed in playlists.
Multi-instance support
- Several instances have always been supported by Pillarbox but this release adds APIs to promote one instance for integration into the Control Center and with AirPlay.
Miscellaneous improvements
- A
BufferTracker
has been introduced to to be notified about content buffering, in a way similar toProgressTracker
. - The
LayoutReader
view has been replaced by aView.readLayout(into:)
modifier which is more convenient to use. - The
InteractionView
detecting any kind of user interaction has been removed. Use a combination of gesture recognizers to detect user interaction and report them to aVisibilityTracker
instead. - Improve seek smoothness to match the native system user experience.
- Add muted playback support.
- Provide presentation size information, which can be used to determine the content aspect ratio and adjust the player layout accordingly.
- Add overlay support to
SystemVideoView
. - Ensure proper support for Xcode 15 and iOS / iPadOS / tvOS 17 beta.
- Automatically enable body counters display in Xcode previews.
Demo improvements and fixes
- Improve slider appearance and behavior.
- Add ability to play YouTube content for tests purposes.
- Add playback speed support.
- Add full-screen support to the playlist demo.
- Add blurred layout example.
- Add demo descriptions.
- Add more sample streams.
- Automatically resume playback when returning from background in selected demos.
- Fix server selection.
Fixes
- Rename
Environment
asServer
to avoid frequent conflicts with SwiftUIEnvironment
. - Support for iPad applications run on Silicon Macs has been restored.
What's Changed
- Rename a
LayoutInfo
property by @waliid in #334 - Setup tracking by @defagos in #335
- Provide library version in analytics by @waliid in #338
- Add full screen support to the demo player by @defagos in #341
- Provide presentation size information by @defagos in #340
- Add blurred layout example by @defagos in #342
- Support page view and event tracking by @waliid in #343
- Implement streaming analytics testing tools by @waliid in #345
- Improve Circumspect file structure by @defagos in #346
- Update to Xcode 14.3 by @defagos in #347
- Update Nimble to version 12 by @defagos in #348
- Implement comScore stream tracking by @defagos in #352
- Implement Commanders Act stream tracking by @waliid in #354
- typo by @mbruegmann in #357
- Add automatic page view tracking support by @defagos in #358
- Fix failing local test data generation by @defagos in #361
- Avoid ghost views by @defagos in #359
- Support iPad applications run on Silicon Macs by @defagos in #364
- Fix incorrectly inhibited taps on tracked views by @defagos in #366
- Add muted playback support by @defagos in #363
- Update Swiftlint to version 0.52.0 by @defagos in #365
- Remove debugging helpers in release builds by @defagos in #370
- Fix incorrect volume button position in safe area by @defagos in #371
- Enable body counter debugging in Xcode previews by @defagos in #374
- Avoid conflicts with SwiftUI environment attribute by @defagos in #377
- Add playback speed support by @defagos in #394
- Fix compilation with Xcode 15 by @defagos in #396
- Update analytics based on the current playback speed by @defagos in #395
- Split player implementation over several files by @defagos in #397
- Fix metadata display and remote commands on the Control Center by @waliid in #398
- Support multiple player instances by @waliid in #399
- Add Apple reference to known issues by @waliid in #402
- Add ability to disable AirPlay and Control Center integration by @defagos in #400
- Fix server selection by @defagos in #407
- Automatically resume playback when returning from background in specific demos by @defagos in #405
- Add the PresentationSize issue with AirPlay among the list of known issues by @waliid in #406
- Add a new
animation
method that take two values by @waliid in #408 - Add showcase demo descriptions by @defagos in #404
- Polish documentation by @defagos in #403
- Fix broken documentation links by @defagos in #409
- Fix analytics by @waliid in #414
- Apply the speed even though the player is paused by @waliid in #415
- Fix duplicate page views by @defagos in #416
- Drive demo navigation with iOS 16 navigation API by @defagos in #421
- Avoid measuring video streaming in background by @waliid in #425
- Align analytics demo configuration with Android by @defagos in #426
- Adjust page view analytics according to Mediapulse specifications by @waliid in #427
- Automatically link against AdSupport.framework by @defagos in #428
- Add system video view overlay support by @defagos in #430
- Fix conflict with standard Commanders Act event by @defagos in #432
- Remove sentinel by @waliid in #433
- Add some Bitmovin streams by @waliid in #434
- Make the project compile again with Xcode 14 by @defagos in #436
- Remove media bandwidth from CommandersAct analytics by @waliid in #449
- Remove playback rate from Commanders Act analytics by @waliid in #450
- Rename site by appSiteName for the analytics configuration by @waliid in #452
- Add sample streams by @defagos in #437
- Add loaded time ranges by @waliid in #439
- Fix slider label contrast issues by @defagos in #454
- Fix some flaky tests by @waliid in #455...
Custom tracking support
This Pillarbox alpha release adds custom tracking implementation. It also introduces several tools making player user interface implementation richer and fixes end of playback behavior. This pre-release is not complete yet but can be used for early adoption in app prototypes.
Custom tracking support
- Custom stream trackers can be implemented using the
PlayerItemTracker
protocol. Trackers can be used for all sorts of purposes, from analytics data collection to saving the current playback position into a history. - Player items can be associated with a list of trackers through dedicated adapters, matching the output of their asset publisher to the input required by a tracker.
- Trackers associated with a player can be enabled or disabled on-the-fly at any time.
Note that official SRG trackers have not been implemented and are expected for the next release.
End of playback behavior
Behavior at the end of playback has been made consistent:
- Control center information is correctly cleared when the current playlist has been exhausted.
- Correct end of playback detection is possible, making it possible to provide a dedicated user interface (e.g. a restart button).
- A restart API is provided by
Player
to make it easier to implement end of playback experiences.
User interface implementation
- An
InteractionView
view has been added to detect user interaction in a specific area. This can be for example useful to ensure a custom user interface remains visible while the user is still interacting with it. - A
LayoutReader
view has been added to detect whether some area is covering the full screen or the current context. This view can be used to implement behaviors depending on user interface screen coverage.
Miscellaneous improvements
- Seeking to the default position has been improved for DVR livestreams.
- Add
preventsDisplaySleepDuringVideoPlayback
to the player configuration to make it possible to control whether device is allowed to sleep during playback. - The type of the media currently being played is now provided by the
Player
. - Make interactive seeks snappier.
Demo improvements
- A Lists tab has been added, with which almost all Play SRG content can be browsed.
- An environment selector is available from the Lists tab.
- A Search tab has been added, with which content can be searched across all business units.
- The user interface can be toggled with a tap gesture.
- Video can be zoomed in with a pinch gesture.
- DRM and token-protected examples are updated automatically with recent content.
- URNs and URLs can be directly played from the Examples tab.
- The player displays an audio icon when audio content is played.
- The player user interface cannot be toggled while using AirPlay or playing audio.
- Add player layout selection to the demo settings (remark: The system player currently leaks resources).
Fixes
- Fix incorrect type briefly reported for on-demand audio content.
What's Changed
- Display version information in the demo settings by @waliid in #276
- Fix test instabilities with ephemeral sessions by @defagos in #279
- Load IL media lists in demo by @waliid in #282
- Fix Fastlane xcversion warning by @defagos in #283
- Load DRM and token protected examples dynamically by @waliid in #284
- Add a basic search to the demo by @waliid in #285
- Direct url and urn entry in the demo by @waliid in #286
- Improve demo application by @defagos in #287
- Add some icons for the list sections by @waliid in #291
- Improve seek to default behavior for DVR streams by @defagos in #293
- Add server selection to demo by @waliid in #294
- Manage user interface visibility support by @defagos in #295
- Add pinch to zoom support to the demo player by @defagos in #302
- Fix briefly incorrect stream type for AOD content by @defagos in #303
- Improve view wrappers by @defagos in #307
- Make behavior consistent at the end of a playback by @waliid in #309
- Add parameter to control device sleep during video playback by @defagos in #313
- Keep the controls displayed when AirPlay is enabled by @waliid in #314
- Inhibit layout info updates during rotation by @defagos in #316
- Add player layout selection setting to the iOS demo by @defagos in #319
- Extract media type by @waliid in #321
- Add make command to update SPM dependencies by @waliid in #322
- Make interactive seeks snappier by @defagos in #320
- Add custom tracker support by @defagos in #325
- Improve project structure by @defagos in #326
- Deliver the tracker metadata from a publisher by @waliid in #328
- Flag for tracking activation/deactivation by @waliid in #329
- Update swiftlint to version 0.51.0 by @defagos in #330
- Add a way to use an adapter without any configuration or any mapper by @waliid in #331
Full Changelog: 0.3.0...0.4.0
Control center, smooth seeking and skipping support
This Pillarbox alpha release adds control center integration. It also introduces several user experience and stability improvements related to seeking in general. This pre-release is not complete yet but can be used for early adoption in app prototypes.
Control center support:
- Metadata can be attached to assets loaded by a player item and is automatically displayed in the control center (including an artwork image when provided).
- Asset metadata is automatically retrieved for SRG SSR content and displayed in the control center.
- The following playback controls are available from the control center:
- Play / pause button.
- Skip forward / skip backward buttons.
- Seek bar (replaced with a LIVE label for livestreams without DVR).
- Playlist navigation (supersedes skip buttons when several items are loaded in the player).
Seeking improvements and skipping
- Smooth seeking support has been added. Smooth seeking ensures that pending seek requests are executed before any more recent request is addressed. This provides for a better seek user experience overall, letting users peek at video content during seeks.
- Backward and forward skipping have been added. Skipping uses smooth seeking and intervals are fully configurable.
- The skip to live APIs have been replaced with skip to default APIs which apply to all kinds of streams (returning to the start of an on-demand stream or to live conditions for a DVR stream).
Playlist navigation improvements
- Smart navigation has been implemented. With smart navigation enabled the current item is returned to its beginning when navigating the playlist back, provided the playhead position is not located within the first few seconds of the current item. Otherwise playback moves to the previous item. Smart navigation provides a playlist navigation user experience similar to the one usually expected from audio apps and is therefore the default.
Miscellaneous improvements
- New
PlayerConfiguration
settings have been added (skip intervals, smart playlist navigation). - The
isBusy
player property informs when the player is busy in a usual sense (buffering or seeking).
Demo improvements
- Skip buttons have been added to seek forward or backward in 10 second increments.
- The LIVE label can be tapped to return to live conditions even for streams that do not support DVR.
- The activity indicator is now displayed when the player is generally busy.
- Tapping the current playlist item in the playlist demo returns playback to the default position.
- Settings have been improved:
- A smart navigation setting has been added.
- A description has been added for settings whose name is not obvious to understand what they control.
- Debugging buttons have been added to clear the local URL cache or simulate a memory warning.
Fixes
- Fix playback sometimes randomly failing for no reason.
- Make progress tracking more precise and reliable.
- Time range, item duration and stream type properties are not stored or published anymore to avoid slight potential mismatches with their current player state as seen from the low-level player. They are now always retrieved from the current low-level player state instead.
- Periodic time publishers now behave like their underlying time observers, i.e. they do not emit additional values on connect or when playback of the last item finishes.
- The API for player item creation from a URN has been made simpler and more consistent.
- The similarity operator introduced in
Circumspect
has been renamed as~~
to avoid conflicts with the pattern matching operator~=
.
Known limitations
- All player instances are currently integrated with the control center. Until an official API is provided there is therefore currently no way to choose which player instance should be attached to the control center in a multi-instance context.
What's Changed
- Improve continuous integration workflow by @defagos in #203
- Deliver textual asset metadata by @defagos in #212
- 205 now playing session metadata by @waliid in #213
- Support playlist navigation from the control center by @defagos in #217
- Now playing artwork delivery by @waliid in #223
- Improve code by @defagos in #226
- Improve control center seek support by @defagos in #227
- Improve linter git hook to check only swift files in the staging area by @waliid in #230
- Add support for skips backward and forward by @defagos in #231
- Improve control center metadata by @defagos in #233
- Enable more SwiftLint rules by @defagos in #232
- Fix continuous integration by @defagos in #235
- 214 enable or disable control center buttons by @waliid in #236
- Add explanation to obscure demo settings by @defagos in #253
- Add memory warning simulation button to the demo settings by @defagos in #251
- Add URL cache cleaning button to the demo by @defagos in #252
- Fix issues when seeking near the end of a stream by @defagos in #238
- Fix behavior when skipping several times in a row by @defagos in #257
- Make smooth seeking the default behavior by @defagos in #260
- Add documentation for custom player items by @defagos in #261
- Update project description by @defagos in #264
- Add seek to default position support by @waliid in #262
- Improve skip behavior near the end of a stream by @waliid in #265
- Enable GitHub merge queue by @defagos in #263
- Improve demo settings by @defagos in #271
- Retry target seek until it finishes by @defagos in #268
- Try to mitigate tests that sometimes fail by @waliid in #272
- Introduce syntactic sugar for expressing times and tolerances by @defagos in #269
- Use more tolerant Nimble defaults by @defagos in #273
- Update DRM and token-protected examples by @defagos in #274
Full Changelog: 0.2.0...0.3.0
AirPlay, video background playback and improved playlist support
This Pillarbox alpha release adds AirPlay and video background playback. It also improves playlist management and the associated API. This pre-release is far from complete but can be used for early adoption in app prototypes.
Features
- AirPlay support for all
Player
instances by default. The player configuration can be altered to disable AirPlay support for a specific instance. ProgressTracker
can be used to update parts of the view hierarchy periodically during playback.- Progress trackers make it possible to optimize user interface updates so that high refresh rates are limited to specific view hierarchy subsets only. Several instances can also be used to updates separate subsets of the view hierarchy at different rates.
- Progress trackers can also be used to update progress interactively, e.g. with a slider. Seeking can either be continuous during interaction or only performed when interaction ends.
SystemVideoView
provides the standard iOS / tvOS playback experience for the Pillarbox player.- Background video playback can be enabled in the player configuration.
Demo improvements
- The playlist demo has been vastly improved. Items can now be added, removed or rearranged during playback.
- Progress bars and sliders are now updated every 1/10 second.
- A settings tab has been added with the following features:
- A presenter mode has been added. This mode makes taps visible and ensures that playback does not switch to full-screen while mirroring the app over AirPlay.
- A debugging option makes it possible to visualize view updates in most demo players.
- Player configuration can be configured (AirPlay and background video playback support).
- Examples are better organized. Please note that some examples are short-lived (e.g. DRM or Akamai-protected content) and might not be playable. The demo will later be improved so that recent valid content can be played.
Fixes
- On-demand streams are never reported as DVR streams anymore.
- Several issues affecting playlist support (most notably playback interruptions when updating items) have been fixed.
What's Changed
- Update SwiftLint to version 0.50.0 by @defagos in #150
- Integrate presenter mode in the demo by @defagos in #151
- Decouple progress from player by @defagos in #152
- Fix incorrect stream type shortly reported when playing an on-demand stream by @defagos in #156
- Use local private types instead of private extensions by @defagos in #159
- 134 add airplay support by @waliid in #164
- Improve playlist demo by @waliid in #165
- Update vertical video example by @defagos in #182
- Integrate Pillarbox with Apple VideoPlayer by @defagos in #184
- AirPlay player configuration by @waliid in #187
- Update continuous integration setup documentation by @defagos in #188
- Add AirPlay player state Boolean by @waliid in #190
- Background video playback by @waliid in #192
- Share useful Git hooks by @waliid in #197
- Mitigate playback issues when seeking near the end of a stream by @defagos in #196
Full Changelog: 0.1.0...0.2.0
SRG SSR content playback
This is the first alpha release for Pillarbox, with which SRG SSR content can be played, although with minimal features and no provided user interface. This pre-release is far from complete but can be used for early adoption in app prototypes.
Features
- A player which can play SRG SSR contents (videos and audios, on-demand and livestreams, protected or not).
- Playlist support.
- Basic view components (video view and slider) with which simple user interfaces can be built.
What's Changed
- Setup CI by @defagos in #4
- Build documentation as pull request status check by @defagos in #8
- Make linter stricter by @defagos in #10
- Add Nimble for unit tests by @defagos in #12
- Build demos as part of status checks by @defagos in #14
- Lint scripts and markdown files by @defagos in #17
- Add GitHub issue and pull request templates by @defagos in #18
- Post nightly build availability to GitHub issue comments by @defagos in #20
- Update documentation by @defagos in #22
- Add Stale bot configuration by @defagos in #25
- Basic playback by @defagos in #29
- Add Analytics package to the project structure by @defagos in #31
- Add memory leak unit tests by @defagos in #33
- Improve notification center publishers by @defagos in #35
- Identify on-demand and live streams by @defagos in #38
- Identify live streams supporting DVR by @defagos in #39
- Improved seek user experience by @defagos in #44
- Make tests run faster on the CI by @defagos in #47
- Better organize code in packages by @defagos in #48
- Align demo presentation with Android by @defagos in #49
- Add boundary time and asset property publishers by @defagos in #51
- Fix seek bar behavior with MP4 stream by @defagos in #53
- Generate Core documentation by @defagos in #55
- Remove sound from test streams by @defagos in #58
- Set minimum deployment target to iOS and tvOS 16 by @defagos in #61
- Improve UT reliability by @defagos in #63
- Play unprotected SRG SSR contents from URNs by @defagos in #65
- Add seek behaviors by @defagos in #66
- Add demos for simultaneous playback, view link and stories by @defagos in #69
- Handle buffering by @defagos in #74
- Provide demo and test streams through constants by @defagos in #75
- Add backward playlist navigation support by @defagos in #82
- Update Tag Commander binaries to version 5 by @defagos in #83
- Update fastlane to remove Xcode 13 use by @defagos in #84
- Use modern Apple sample streams by @defagos in #85
- Remove Appearance package by @defagos in #87
- Add basic demo and playground by @defagos in #89
- Implement better type equality by @defagos in #92
- Improve resource loading by @defagos in #96
- Prevent SRG SSR livestreams from being played in the past by @defagos in #99
- Improve resource loading by @defagos in #100
- Add unbuffered examples to showcase by @defagos in #104
- Basic error reporting by @defagos in #107
- Revisit resource loading to support MP3 content by @defagos in #116
- Fix resource loading error reporting by @defagos in #118
- Add skip to live support by @defagos in #123
- Fix error management by @defagos in #126
- Display elapsed and total times for on-demand streams by @defagos in #128
- Improve view encapsulation and documentation by @defagos in #130
- Resume playback when skipping to live conditions by @defagos in #132
- Play Akamai token protected content by @defagos in #136
- Update Nimble for async await test support by @defagos in #137
- Fix demo controls view behavior by @defagos in #139
- Build the project on Intel architecture by @waliid in #141
- Make Swift linter stricter by @defagos in #145
- Add basic getting started guide by @defagos in #146
- Add DRM protected content playback support by @defagos in #148
Full Changelog: https://github.com/SRGSSR/pillarbox-apple/commits/0.1.0