@@ -7,16 +7,16 @@ package ch.srgssr.pillarbox.core.business
77import android.content.Context
88import androidx.annotation.VisibleForTesting
99import androidx.media3.common.util.Clock
10- import androidx.media3.datasource.DataSource
1110import androidx.media3.exoplayer.DefaultLoadControl
1211import androidx.media3.exoplayer.LoadControl
13- import ch.srgssr.pillarbox.core.business.akamai.AkamaiTokenDataSource
14- import ch.srgssr.pillarbox.core.business.integrationlayer.service.DefaultMediaCompositionDataSource
12+ import ch.srgssr.pillarbox.core.business.integrationlayer.service.HttpMediaCompositionService
13+ import ch.srgssr.pillarbox.core.business.integrationlayer.service.MediaCompositionService
14+ import ch.srgssr.pillarbox.core.business.source.SRGAssetLoader
1515import ch.srgssr.pillarbox.core.business.tracker.DefaultMediaItemTrackerRepository
1616import ch.srgssr.pillarbox.player.PillarboxLoadControl
1717import ch.srgssr.pillarbox.player.PillarboxPlayer
1818import ch.srgssr.pillarbox.player.SeekIncrement
19- import ch.srgssr.pillarbox.player.data.MediaItemSource
19+ import ch.srgssr.pillarbox.player.source.PillarboxMediaSourceFactory
2020import ch.srgssr.pillarbox.player.tracker.MediaItemTrackerProvider
2121import kotlin.time.Duration.Companion.seconds
2222
@@ -32,27 +32,22 @@ object DefaultPillarbox {
3232 * @param context The context.
3333 * @param seekIncrement The seek increment.
3434 * @param mediaItemTrackerRepository The provider of MediaItemTracker, by default [DefaultMediaItemTrackerRepository].
35- * @param mediaItemSource The MediaItem source by default [MediaCompositionMediaItemSource].
36- * @param dataSourceFactory The Http exoplayer data source factory, by default [AkamaiTokenDataSource.Factory].
37- * @param loadControl The load control, by default [DefaultLoadControl].
35+ * @param mediaCompositionService The [MediaCompositionService] to use, by default [HttpMediaCompositionService].
36+ * @param loadControl The load control, by default [PillarboxLoadControl].
3837 * @return [PillarboxPlayer] suited for SRG.
3938 */
4039 operator fun invoke (
4140 context : Context ,
4241 seekIncrement : SeekIncrement = defaultSeekIncrement,
4342 mediaItemTrackerRepository : MediaItemTrackerProvider = DefaultMediaItemTrackerRepository (),
44- mediaItemSource : MediaItemSource = MediaCompositionMediaItemSource (
45- mediaCompositionDataSource = DefaultMediaCompositionDataSource (),
46- ),
47- dataSourceFactory : DataSource .Factory = AkamaiTokenDataSource .Factory (),
43+ mediaCompositionService : MediaCompositionService = HttpMediaCompositionService (),
4844 loadControl : LoadControl = PillarboxLoadControl (),
4945 ): PillarboxPlayer {
5046 return DefaultPillarbox (
5147 context = context,
5248 seekIncrement = seekIncrement,
5349 mediaItemTrackerRepository = mediaItemTrackerRepository,
54- mediaItemSource = mediaItemSource,
55- dataSourceFactory = dataSourceFactory,
50+ mediaCompositionService = mediaCompositionService,
5651 loadControl = loadControl,
5752 clock = Clock .DEFAULT ,
5853 )
@@ -64,9 +59,8 @@ object DefaultPillarbox {
6459 * @param context The context.
6560 * @param seekIncrement The seek increment.
6661 * @param mediaItemTrackerRepository The provider of MediaItemTracker, by default [DefaultMediaItemTrackerRepository].
67- * @param mediaItemSource The MediaItem source by default [MediaCompositionMediaItemSource].
68- * @param dataSourceFactory The Http exoplayer data source factory, by default [AkamaiTokenDataSource.Factory].
6962 * @param loadControl The load control, by default [DefaultLoadControl].
63+ * @param mediaCompositionService The [MediaCompositionService] to use, by default [HttpMediaCompositionService].
7064 * @param clock The internal clock used by the player.
7165 * @return [PillarboxPlayer] suited for SRG.
7266 */
@@ -75,18 +69,16 @@ object DefaultPillarbox {
7569 context : Context ,
7670 seekIncrement : SeekIncrement = defaultSeekIncrement,
7771 mediaItemTrackerRepository : MediaItemTrackerProvider = DefaultMediaItemTrackerRepository (),
78- mediaItemSource : MediaItemSource = MediaCompositionMediaItemSource (
79- mediaCompositionDataSource = DefaultMediaCompositionDataSource (),
80- ),
81- dataSourceFactory : DataSource .Factory = AkamaiTokenDataSource .Factory (),
82- loadControl : LoadControl = PillarboxLoadControl (),
72+ loadControl : LoadControl = DefaultLoadControl (),
73+ mediaCompositionService : MediaCompositionService = HttpMediaCompositionService (),
8374 clock : Clock ,
8475 ): PillarboxPlayer {
8576 return PillarboxPlayer (
8677 context = context,
8778 seekIncrement = seekIncrement,
88- dataSourceFactory = dataSourceFactory,
89- mediaItemSource = mediaItemSource,
79+ mediaSourceFactory = PillarboxMediaSourceFactory (context).apply {
80+ addAssetLoader(SRGAssetLoader (context, mediaCompositionService))
81+ },
9082 mediaItemTrackerProvider = mediaItemTrackerRepository,
9183 loadControl = loadControl,
9284 clock = clock,
0 commit comments