Skip to content

Commit 197cc9b

Browse files
uzu09811Stypox
authored andcommitted
Allow using non-http data sources (e.g. cronet)
1 parent 89d6f16 commit 197cc9b

File tree

3 files changed

+10
-4
lines changed

3 files changed

+10
-4
lines changed

new-player/src/main/java/net/newpipe/newplayer/NewPlayerImpl.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -501,7 +501,7 @@ internalPlayStream(mediaSource: MediaSource, playMode: PlayMode) {
501501
val builder = MediaSourceBuilder(
502502
repository = repository,
503503
mutableErrorFlow = mutableErrorFlow,
504-
httpDataSourceFactory = repository.getHttpDataSourceFactory(item),
504+
httpDataSourceFactory = repository.getHttpDataSourceFactory(item, app),
505505
)
506506

507507
val uniqueId = Random.nextLong()

new-player/src/main/java/net/newpipe/newplayer/logic/MediaSourceBuilder.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import androidx.annotation.OptIn
2424
import androidx.media3.common.MediaItem
2525
import androidx.media3.common.util.UnstableApi
2626
import androidx.media3.datasource.HttpDataSource
27+
import androidx.media3.datasource.DataSource
2728
import androidx.media3.exoplayer.dash.DashMediaSource
2829
import androidx.media3.exoplayer.source.MediaSource
2930
import androidx.media3.exoplayer.source.MergingMediaSource
@@ -47,7 +48,7 @@ internal class MediaSourceBuilder
4748
(
4849
private val repository: MediaRepository,
4950
private val mutableErrorFlow: MutableSharedFlow<Exception>,
50-
private val httpDataSourceFactory: HttpDataSource.Factory,
51+
private val httpDataSourceFactory: DataSource.Factory,
5152
) {
5253
@OptIn(UnstableApi::class)
5354

new-player/src/main/java/net/newpipe/newplayer/repository/MediaRepository.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,18 @@
2020

2121
package net.newpipe.newplayer.repository
2222

23+
import android.os.Build
24+
import android.content.Context
2325
import android.graphics.Bitmap
2426
import androidx.media3.common.MediaMetadata
2527
import androidx.media3.datasource.DefaultHttpDataSource
28+
import androidx.media3.datasource.DataSource
2629
import androidx.media3.datasource.HttpDataSource
2730
import net.newpipe.newplayer.data.Chapter
2831
import net.newpipe.newplayer.data.Stream
2932
import net.newpipe.newplayer.data.Subtitle
3033
import net.newpipe.newplayer.data.StreamTrack
34+
import java.util.concurrent.Executors
3135

3236
/**
3337
* You, dear Developer who uses NewPlayer, will want to implement MediaRepository.
@@ -114,8 +118,9 @@ interface MediaRepository {
114118
/**
115119
* Supply a custom [HttpDataSource.Factory]. This is important for Youtube.
116120
*/
117-
fun getHttpDataSourceFactory(item: String): HttpDataSource.Factory =
118-
DefaultHttpDataSource.Factory()
121+
fun getHttpDataSourceFactory(item: String, context: Context): DataSource.Factory {
122+
return DefaultHttpDataSource.Factory()
123+
}
119124

120125
/**
121126
* Get MediaMetadata information for a certain item. Please refer to the media3 documentation

0 commit comments

Comments
 (0)