Skip to content

Releases: SRGSSR/pillarbox-android

2.0.0

07 May 15:19
dd8531e
Compare
Choose a tag to compare

Player

  • Improved system integration and background playback through custom MediaController and MediaSession classes. Check the documentation for more information.
  • Added a new Player.isAtLiveEdge(Long, Window) method to know if the media is at live edge.
  • New way to load a media from a custom source by providing a custom AssetLoader implementation:
val player = PillarboxExoPlayer(
    context = context,
    mediaSourceFactory = PillarboxMediaSourceFactory(context).apply {
        addAssetLoader(SRGAssetLoader(context)) // Provided by pillarbox-core-business to handled URNs
        addAssetLoader(MyCustomAssetLoader())
    },
)
  • Added new methods to easily manage tracks:
val player: Player = ...
val currentTracks: Tracks = player.currentTracks

val tracks: List<Track> = currentTracks.tracks // Get all the supported tracks
val audioTracks: List<AudioTrack> = currentTracks.audioTracks // Get all the supported audio tracks
val textTracks: List<TextTrack> = currentTracks.textTracks // Get all the supported text tracks
val videoTracks: List<VideoTrack> = currentTracks.videoTracks // Get all the supported video tracks

player.selectTrack(Track) // Select a single track
player.enable<Audio|Text|Video>Track() // Enable a specific type of track
player.disable<Audio|Text|Video>Track() // Disable a specific type of track
player.setAuto<Audio|Text|Video>Track() // Restore the default track of a specific type
  • Added support for blocked segments.
  • Added support for chapters. You can use the following methods to access the corresponding information:
Player.getCurrentChapters(): List<Chapter> // Get all the chapters for the current media
Player.getChapterAtPosition(Long): Chapter? // Get the chapter at the provided position
Player.getCurrentChapterAsFlow(): Flow<Chapter?> // Observe the chapter currently playing as Flow
Player.getCurrentChapterAsState(): State<Chapter?> // Observe the chapter currently playing as State
  • Added support for time intervals (intro/credits). You can use the following methods to access the corresponding information:
Player.getCurrentCredits(): List<Credit> // Get all the credits for the current media (opening credits, closing credits)
Player.getCreditAtPosition(Long): Credit? // Get the credit at the provided position
Player.getCurrentCreditAsFlow(): Flow<Credit?> // Observe the credit currently active as Flow
Player.getCurrentCreditAsState(): State<Credit?> // Observe the credit currently active as State

Core business

  • Extract information about blocked segments, chapters and credits.

Demo

  • The multi-player showcase has been improved to only have one player playing audio at a given time.
  • Added a showcase to toggle repeat mode and to pause the media item when it ends.
  • Added a showcase to display chapters.
  • Added a showcase with a blocked segment.

Breaking changes

  • The mediaItemSource and dataSourceFactory arguments of the DefaultPillarbox constructor have been removed. Please provide a MediaCompositionService directly. The MediaCompositionMediaItemSource class and its related classes have been removed.
  • PillarboxExoPlayer is now a concrete class, while PillarboxPlayer has become an interface. Simply replace your usages of PillarboxPlayer by PillarboxExoPlayer, and PillarboxExoPlayer by PillarboxPlayer:
// Pillarbox 1.0.0
val player: PillarboxExoPlayer = PillarboxPlayer(...)

// Pillarbox 2.0.0
val player: PillarboxPlayer = PillarboxExoPlayer(...)

Note

Following a change in AndroidX Media3 1.3.0, you should setup Java 8 APIs desugaring, by following this guide.
This is new requirement should be reverted in an upcoming version of AndroidX Media3 (see androidx/media#1312 (comment) for more information).
This should be done even if your min SDK version is 24+.

What's Changed

New Contributors

Full Changelog: 1.0.0...2.0.0

1.0.0

14 Mar 10:17
c4c141c
Compare
Choose a tag to compare

Important

Letterbox will be sunset in August 2025:

  • New SRG SSR products must use Pillarbox only.
  • Existing SRG SSR products using Letterbox must transition to Pillarbox before this date.

This is the first official release of Pillarbox for Android platforms. Pillarbox is the modern SRG SSR media playback ecosystem, a generational leap over its predecessor Letterbox.

Tip

Should you have questions, ideas, or should you need assistance, please use our issue tracker or a dedicate discussion.

This version of Pillarbox is based on AndroidX Media3 1.3.0

New features

  • Smooth seeking is a better way to seek. To take advantage of this new amazing feature have a look at SmoothProgressTrackerState.
  • Core business error messages are translated in all Swiss 🇨🇭 languages (fr, de, it, rm and en).
  • Support for 360° video, have a look at the Compose function SphericalSurface.
  • Improve Pillarbox Demo on both mobile and Android TV.

Bug fixes

What's Changed

Read more

0.8.1

21 Dec 11:56
b84fbf7
Compare
Choose a tag to compare
0.8.1 Pre-release
Pre-release

What's Changed

  • Don't remove query parameters when applying akamai token by @StaehliJ in #270
  • Do not notifyPause when buffering is starting by @StaehliJ in #271

Full Changelog: 0.8.0...0.8.1

0.8.0

24 Oct 12:37
9cbab6d
Compare
Choose a tag to compare
0.8.0 Pre-release
Pre-release

What's Changed

Full Changelog: 0.7.0...0.8.0

0.7.0

24 Oct 12:37
93655ad
Compare
Choose a tag to compare
0.7.0 Pre-release
Pre-release

What's Changed

  • Application doesn't crash if SRGAnalytics is not initialized. by @StaehliJ in #239
  • Progress track to simplify Slider integration by @StaehliJ in #240
  • Convenient corebusiness player by @StaehliJ in #244

Full Changelog: 0.6.0...0.7.0

0.6.0

14 Sep 12:45
231873f
Compare
Choose a tag to compare
0.6.0 Pre-release
Pre-release

🚧 The SRG stream tracking and analytics have not been validated yet, only ComScore is validated. So do not use this in production environment !!!

Media3 version: 1.1.1
kotlin plugin version: 1.9.0
compiler version: 1.5.1
compose bom version: 2023.08.00

New features

Player

  • Support for audio and text tracks. Add helpers to better handle tracks management.
  • Add Player.getTrackSelectionParametersAsFlow to get flow of TrackSelectionParameters changes.
  • Add Player.getCurrentTracksAsFlow to get flow of Tracks changes.
  • Tracks extensions filter unsupported tracks.
  • When using Pillarbox extensions the following feature are supported:
    • User accessibility settings.
    • Forced subtitles

Core business

  • Request MediaComposition in chapter only. So segment urn can be played correctly.
  • Disable playback start when a chapter urn contains a blocking reason or if it has at least one segment with a blocking reason.
  • Allow application to query a urn with a vector as a String. By default Vector.MOBILE.
  • Add Context.getVector to detect vector.

Analytics

  • Add permanent labels to SRGAnalytics.
  • Add user consent api.

Demo

  • Improve player settings, add audio and subtitles settings.
  • Subtitles are better displayed.
  • Migrate to Material3

Breaking Changes

  • MediaCompositionDataSourceImpl rename to DefaultMediaCompositionDataSource.

What's Changed

Full Changelog: 0.5.1...0.6.0

0.5.1

27 Jul 13:56
2871b47
Compare
Choose a tag to compare
0.5.1 Pre-release
Pre-release

🚧 The SRG stream tracking and analytics have not been validated yet. So do not use this in production environment !!!

What's Changed

Full Changelog: 0.5.0...0.5.1

0.5.0

27 Jul 13:55
2ba4e75
Compare
Choose a tag to compare
0.5.0 Pre-release
Pre-release

🚧 The SRG stream tracking and analytics have not been validated yet. So do not use this in production environment !!!

Breaking changes

Initialization of SRGAnalytics is simplified.

val config = AnalyticsConfig(
        vendor = AnalyticsConfig.Vendor.SRG,
        nonLocalizedApplicationName = "PillarboxDemo",
        appSiteName = "pillarbox-demo-android",
        sourceKey = AnalyticsConfig.SOURCE_KEY_SRG_DEBUG
)
initSRGAnalytics(config = config)

New demo feature

You can inject a urn or url directly in the demo.

What's Changed

Full Changelog: 0.4.1...0.5.0

0.4.1

12 Jul 06:35
4e1fdf9
Compare
Choose a tag to compare
0.4.1 Pre-release
Pre-release

What's Changed

  • Improve Demo with Integration layer data's that allow to navigate through the SRG SSR content. #161
  • Pull media3 version to 1.1.0.

Fixes

  • Update media3 version fixes an issue with MediaController and add/set MediaItem with a local configuration or mediaID #160

Full Changelog: 0.4.0...0.4.1

0.4.0 - Stream tracking and analytics

23 Jun 14:02
d85ab02
Compare
Choose a tag to compare
Pre-release

This pillarbox pre release add the support for stream tracking and SRG SSR Analytics. The stream tracking can be customized and new tracking system can be added. Pillarbox is using the released Media3 library 1.0.0 !

🚧 The SRG stream tracking and analytics have not been validated yet. So do not use this in production environment !!!

New Features

  • SRG SSR Analytics with standards stream analytics (CommandersAct and comscore). Read more here
  • Stream tracking can be customized by implementing your own MediaItemTracker please read the documentation for more information about that topic Read more here.
  • Seek forward and seek backward increments can be set at PillarboxPlayer creation. (#146)

Changes

  • Remove PlayerState it is replaced by flow extensions. Should be easier to get player state as flow.
  • Remove over complicated Service connections. (#143)
  • The demo has been improved by adding playlist UI.

Full Changelog: 0.3.0...0.4.0