Skip to content

Releases: SRGSSR/pillarbox-android

8.0.0

10 Oct 08:40
fb212a1

Choose a tag to compare

New Features

  • New custom implementation of Google sender with PillarboxCastPlayer #1082
  • Google cast Android TV receiver PillarboxCastReceiverPlayer #1082
  • Add helper to handle local to remote playback CastPlayerSynchronizer.

Breaking changes

  • Remove PlaybackService #1052
  • Android minSDK = 23 #1166
  • Media3 1.8.0
  • Changes how seekable live stream is computed, HLS live stream is seekable when it's duration is at least 3 chunks length and DASH when the timeshift is at least 30 seconds. #1180

What's Changed

Read more

7.1.0

19 May 09:28
0849986

Choose a tag to compare

What's Changed

Full Changelog: 7.0.0...7.1.0

7.0.0

07 Apr 06:53
ab794b7

Choose a tag to compare

Breaking changes

  • SourceKey.DEBUG renamed to SourceKey.DEVELOPMENT
  • SourceKey.PROD renamed to SourceKey.PRODUCTION

What's Changed

Full Changelog: 6.0.1...7.0.0

6.0.1

21 Mar 09:44
12723cb

Choose a tag to compare

What's Changed

Full Changelog: 6.0.0...6.0.1

6.0.0

14 Mar 10:22
6.0.0
411bc35

Choose a tag to compare

Changes

  • Replaced navigation_bu_distributer with content_bu_owner in Commanders Act page views to ensure consistent measurement across applications and websites.
  • Enhanced monitoring data with track (audio and subtitles) and application information.

Breaking changes

  • CommandersActLabels#NAVIGATION_BU_DISTRIBUTER was renamed to CommandersActLabels#CONTENT_BU_OWNER.

What's Changed

Full Changelog: 5.0.0...6.0.0

5.0.0

20 Feb 14:29
39dbd92

Choose a tag to compare

New features

Google Cast support

Warning

Google Cast support is still under development, and so APIs may change in the future.

  • pillarbox-cast introduces PillarboxCastPlayer that implements the same interface as PillarboxExoPlayer.
  • pillarbox-core-business-cast allows to cast SRG content to a SRG SSR receivers (the same used by SRGLetterbox applications).

Breaking changes

val config = AnalyticsConfig(
   vendor = AnalyticsConfig.Vendor.SRG,
   appSiteName = "pillarbox-demo-android",
   sourceKey = SourceKey.SRG_DEBUG,
)

What's Changed

Full Changelog: 4.0.0...5.0.0

4.0.0

22 Jan 14:00
eee45c9

Choose a tag to compare

New features

Breaking changes

  • Remove Ktor dependency.
  • SRGAnalytics.sendPageView no longer sends ComScorePageView.
  • SRGAssetLoader no longer supports custom URL to load a media composition.
  • MetricsCollector no longer implements PillarboxAnalyticsListener and PlaybackSessionManager.Listener.
  • MonitoringConfigFactory's constructor is no longer public.
  • PillarboxBuilder.create() is no longer public.
  • PillarboxPreloadManager constructor has changed:
    • The rendererCapabilitiesListFactory: RendererCapabilitiesList.Factory argument was removed.
    • The allocator: DefaultAllocator argument was removed.
    • The renderersFactory: RenderersFactory argument was added.
    • The loadControl: LoadControl argument was added.
  • Remove the following from pillarbox-ui:
    • ToggleableBox().
    • DelayedVisibilityState.
    • rememberDelayedVisibilityState(Boolean, Boolean, Duration).
    • rememberDelayedVisibilityState(Player, Boolean, Boolean, Duration).
    • Modifier.toggleable(Boolean, Role?, DelayedVisibilityState).
    • Modifier.toggleable(Boolean, Role?, Indication?, MutableInteractionSource?, DelayedVisibilityState).
    • Modifier.maintainVisibleOnFocus(DelayedVisibilityState).

What's Changed

Full Changelog: 3.0.0...4.0.0

3.0.1

26 Nov 13:04
3.0.1
8be3fa6

Choose a tag to compare

What's Changed

Full Changelog: 3.0.0...3.0.1

3.0.0

19 Nov 08:50
3.0.0
3f6e6e1

Choose a tag to compare

New features

Playback monitoring

Pillarbox records various metrics related to playback performance (bitrate, stalls, playback duration, ...).
You can retrieve these values by using the following:

val player = PillarboxExoPlayer(context)
player.getCurrentMetrics() // Get the current PlaybackMetrics
player.currentMetricsAsFlow() // Get PlaybackMetrics as a Flow
player.getPeriodicallyCurrentMetricsAsState() // Get PlaybackMetrics as a Compose State

By default, these metrics are sent to a Pillarbox monitoring service when using PillarboxExoPlayer from pillarbox-core-business, or discarded when using PillarboxExoPlayer from pillarbox-player. You can customize this by doing:

val player = PillarboxExoPlayer(context) {
    // Disable monitoring handling
    disableMonitoring()
    // Output metrics to Logcat
    monitoring(Logcat)
    // Send metrics to a remote server
    monitoring(Remote) {
        config(endpointUrl = "...")
    }
}

Improved block reason support

The BlockReasonException is now a sealed class, possibly containing more information about a specific error.

val error = player.playerError
when (error) {
    is BlockReasonException.GeoBlock -> TODO("This chapter is geo-blocked")
    is BlockReasonException.StartDate -> TODO("This chapter will be available on ${error.instant}")
    is BlockReasonException.EndDate -> TODO("This chapter is no longer available since ${error.instant}")
    // Handle other types...
}

Customize the surface type used by the player

When using PlayerSurface from pillarbox-ui, you can now specify the type of surface you want to use:

PlayerSurface(
    player = player,
    surfaceType = SurfaceType.Surface, // Or `Texture` or `Spherical`
)

See SurfaceType for more information.

Other features

  • Pillarbox API documentation is now available online.
  • Chapters are available in the media item metadata. You can get them using MediaItem.mediaMetadata.chapters.
  • Credits are available in the media item metadata. You can get them using MediaItem.mediaMetadata.credits.
  • MediaItem.tag is no longer reserved for Pillarbox usage.
  • Introduce PillarboxPreloadManager helper for Media3 PreloadManager. Note that these APIs are incubating on Media3 side and will change in future versions.

Breaking changes

Introduce a DSL to create a player

The PillarboxExoPlayer constructor and the DefaultPillarbox have been removed.
Instead, you can use the PillarboxExoPlayer builder function, which comes in two variants:

  • PillarboxExoPlayer from pillarbox-player: closely matches a default ExoPlayer, with Pillarbox monitoring disabled.
  • PillarboxExoPlayer from pillarbox-core-business: suited for the SRG SSR needs, i.e. it can play URN and sends playback metrics to Pillarbox monitoring.
val player = PillarboxExoPlayer(context, Default) // from pillarbox-player
val srgPlayer = PillarboxExoPlayer(context) // from pillarbox-core-business

You can customize the player during creation:

val player = PillarboxExoPlayer(context) {
    addAssetLoader(CustomAssetLoader())
    seekBackwardIncrement(5.seconds)
    seekForwardIncrement(10.seconds)
}

Removal of deprecated symbols

Symbol Replacement Comment
MediaItemUrn SRGMediaItemBuilder
Player.disableTextTrack() Player.disableTextTrack() Use the extension from ch.srgssr.pillarbox.player.tracks instead
Player.setDefaultTextTrack() Player.setAutoTextTrack()
Player.disableAudioTrack() Player.disableAudioTrack() Use the extension from ch.srgssr.pillarbox.player.tracks instead
Player.setDefaultAudioTrack() Player.setAutoAudioTrack()
Tracks.text Tracks.textTracks
Tracks.audio Tracks.audioTracks
Tracks.video Tracks.videoTracks

Others breaking changes

  • Remove DefaultHttpClient. Use PillarboxHttpClient instead.

What's Changed

Read more

2.3.0

30 Jul 13:35
8e65327

Choose a tag to compare

What's Changed

Full Changelog: 2.2.1...2.3.0