mirror of
https://github.com/libre-tube/LibreTube.git
synced 2025-04-27 23:40:33 +05:30
commit
93275b9d00
@ -131,8 +131,6 @@ dependencies {
|
||||
|
||||
/* Cronet and Coil */
|
||||
coreLibraryDesugaring(libs.desugaring)
|
||||
implementation(libs.cronet.embedded)
|
||||
implementation(libs.cronet.okhttp)
|
||||
implementation(libs.coil)
|
||||
|
||||
/* Room */
|
||||
|
@ -1,16 +0,0 @@
|
||||
package com.github.libretube.api
|
||||
|
||||
import com.github.libretube.LibreTubeApp
|
||||
import com.google.net.cronet.okhttptransport.CronetCallFactory
|
||||
import org.chromium.net.CronetEngine
|
||||
|
||||
object CronetHelper {
|
||||
val cronetEngine: CronetEngine = CronetEngine.Builder(LibreTubeApp.instance)
|
||||
.enableHttp2(true)
|
||||
.enableQuic(true)
|
||||
.enableBrotli(true)
|
||||
.enableHttpCache(CronetEngine.Builder.HTTP_CACHE_IN_MEMORY, 1024L * 1024L) // 1MiB
|
||||
.build()
|
||||
|
||||
val callFactory: CronetCallFactory = CronetCallFactory.newBuilder(cronetEngine).build()
|
||||
}
|
@ -3,7 +3,6 @@ package com.github.libretube.api
|
||||
import com.github.libretube.BuildConfig
|
||||
import com.github.libretube.constants.PreferenceKeys
|
||||
import com.github.libretube.helpers.PreferenceHelper
|
||||
import com.google.net.cronet.okhttptransport.CronetInterceptor
|
||||
import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory
|
||||
import okhttp3.MediaType.Companion.toMediaType
|
||||
import okhttp3.OkHttpClient
|
||||
@ -38,7 +37,6 @@ object RetrofitInstance {
|
||||
val api by resettableLazy(lazyMgr) {
|
||||
Retrofit.Builder()
|
||||
.baseUrl(apiUrl)
|
||||
.callFactory(CronetHelper.callFactory)
|
||||
.client(httpClient)
|
||||
.addConverterFactory(kotlinxConverterFactory)
|
||||
.build()
|
||||
@ -48,7 +46,6 @@ object RetrofitInstance {
|
||||
val authApi by resettableLazy(lazyMgr) {
|
||||
Retrofit.Builder()
|
||||
.baseUrl(authUrl)
|
||||
.callFactory(CronetHelper.callFactory)
|
||||
.client(httpClient)
|
||||
.addConverterFactory(kotlinxConverterFactory)
|
||||
.build()
|
||||
@ -58,7 +55,6 @@ object RetrofitInstance {
|
||||
val externalApi by resettableLazy(lazyMgr) {
|
||||
Retrofit.Builder()
|
||||
.baseUrl(apiUrl)
|
||||
.callFactory(CronetHelper.callFactory)
|
||||
.client(httpClient)
|
||||
.addConverterFactory(kotlinxConverterFactory)
|
||||
.build()
|
||||
@ -76,8 +72,6 @@ object RetrofitInstance {
|
||||
httpClient.addInterceptor(loggingInterceptor)
|
||||
}
|
||||
|
||||
httpClient.addInterceptor(CronetInterceptor.newBuilder(CronetHelper.cronetEngine).build())
|
||||
|
||||
return httpClient.build()
|
||||
}
|
||||
}
|
||||
|
@ -13,11 +13,9 @@ import coil.disk.DiskCache
|
||||
import coil.request.CachePolicy
|
||||
import coil.request.ImageRequest
|
||||
import com.github.libretube.BuildConfig
|
||||
import com.github.libretube.api.CronetHelper
|
||||
import com.github.libretube.constants.PreferenceKeys
|
||||
import com.github.libretube.extensions.toAndroidUri
|
||||
import com.github.libretube.util.DataSaverMode
|
||||
import com.google.net.cronet.okhttptransport.CronetInterceptor
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.withContext
|
||||
import okhttp3.OkHttpClient
|
||||
@ -46,10 +44,7 @@ object ImageHelper {
|
||||
httpClient.addInterceptor(loggingInterceptor)
|
||||
}
|
||||
|
||||
httpClient.addInterceptor(CronetInterceptor.newBuilder(CronetHelper.cronetEngine).build())
|
||||
|
||||
imageLoader = ImageLoader.Builder(context)
|
||||
.callFactory(CronetHelper.callFactory)
|
||||
.crossfade(true)
|
||||
.okHttpClient {
|
||||
httpClient.build()
|
||||
|
@ -22,7 +22,6 @@ import androidx.media3.common.TrackSelectionOverride
|
||||
import androidx.media3.common.Tracks
|
||||
import androidx.media3.common.util.UnstableApi
|
||||
import androidx.media3.datasource.DefaultDataSource
|
||||
import androidx.media3.datasource.cronet.CronetDataSource
|
||||
import androidx.media3.exoplayer.DefaultLoadControl
|
||||
import androidx.media3.exoplayer.ExoPlayer
|
||||
import androidx.media3.exoplayer.LoadControl
|
||||
@ -31,7 +30,6 @@ import androidx.media3.exoplayer.trackselection.DefaultTrackSelector
|
||||
import androidx.media3.ui.CaptionStyleCompat
|
||||
import com.github.libretube.LibreTubeApp
|
||||
import com.github.libretube.R
|
||||
import com.github.libretube.api.CronetHelper
|
||||
import com.github.libretube.api.obj.ChapterSegment
|
||||
import com.github.libretube.api.obj.Segment
|
||||
import com.github.libretube.api.obj.Streams
|
||||
@ -50,7 +48,6 @@ import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import java.util.Locale
|
||||
import java.util.concurrent.Executors
|
||||
import kotlin.math.absoluteValue
|
||||
import kotlin.math.max
|
||||
import kotlin.math.roundToInt
|
||||
@ -520,11 +517,7 @@ object PlayerHelper {
|
||||
trackSelector: DefaultTrackSelector,
|
||||
isBackgroundMode: Boolean
|
||||
): ExoPlayer {
|
||||
val cronetDataSourceFactory = CronetDataSource.Factory(
|
||||
CronetHelper.cronetEngine,
|
||||
Executors.newCachedThreadPool()
|
||||
)
|
||||
val dataSourceFactory = DefaultDataSource.Factory(context, cronetDataSourceFactory)
|
||||
val dataSourceFactory = DefaultDataSource.Factory(context)
|
||||
val audioAttributes = AudioAttributes.Builder()
|
||||
.setUsage(C.USAGE_MEDIA)
|
||||
.setContentType(C.AUDIO_CONTENT_TYPE_MOVIE)
|
||||
|
@ -20,7 +20,6 @@ import androidx.lifecycle.LifecycleService
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.github.libretube.LibreTubeApp.Companion.DOWNLOAD_CHANNEL_NAME
|
||||
import com.github.libretube.R
|
||||
import com.github.libretube.api.CronetHelper
|
||||
import com.github.libretube.api.StreamsExtractor
|
||||
import com.github.libretube.api.obj.Streams
|
||||
import com.github.libretube.constants.IntentData
|
||||
@ -47,7 +46,6 @@ import com.github.libretube.receivers.NotificationReceiver.Companion.ACTION_DOWN
|
||||
import com.github.libretube.receivers.NotificationReceiver.Companion.ACTION_DOWNLOAD_RESUME
|
||||
import com.github.libretube.receivers.NotificationReceiver.Companion.ACTION_DOWNLOAD_STOP
|
||||
import com.github.libretube.ui.activities.MainActivity
|
||||
import com.google.net.cronet.okhttptransport.CronetInterceptor
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.SupervisorJob
|
||||
@ -95,12 +93,9 @@ class DownloadService : LifecycleService() {
|
||||
val downloadFlow: SharedFlow<Pair<Int, DownloadStatus>> = _downloadFlow
|
||||
|
||||
private val httpClient: OkHttpClient by lazy {
|
||||
val cronetInterceptor = CronetInterceptor.newBuilder(CronetHelper.cronetEngine).build()
|
||||
|
||||
OkHttpClient.Builder()
|
||||
.connectTimeout(Duration.ofMillis(DownloadHelper.DEFAULT_TIMEOUT.toLong()))
|
||||
.readTimeout(Duration.ofMillis(DownloadHelper.DEFAULT_TIMEOUT.toLong()))
|
||||
.addInterceptor(cronetInterceptor)
|
||||
.retryOnConnectionFailure(true)
|
||||
.build()
|
||||
}
|
||||
|
@ -8,10 +8,9 @@ import androidx.media3.common.MediaItem
|
||||
import androidx.media3.common.MediaItem.SubtitleConfiguration
|
||||
import androidx.media3.common.MimeTypes
|
||||
import androidx.media3.common.Player
|
||||
import androidx.media3.datasource.cronet.CronetDataSource
|
||||
import androidx.media3.datasource.DefaultDataSource
|
||||
import androidx.media3.exoplayer.hls.HlsMediaSource
|
||||
import com.github.libretube.R
|
||||
import com.github.libretube.api.CronetHelper
|
||||
import com.github.libretube.api.JsonHelper
|
||||
import com.github.libretube.api.RetrofitInstance
|
||||
import com.github.libretube.api.StreamsExtractor
|
||||
@ -37,7 +36,6 @@ import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import kotlinx.serialization.encodeToString
|
||||
import java.util.concurrent.Executors
|
||||
|
||||
/**
|
||||
* Loads the selected videos audio in background mode with a notification area.
|
||||
@ -52,11 +50,6 @@ open class OnlinePlayerService : AbstractPlayerService() {
|
||||
private var channelId: String? = null
|
||||
private var startTimestamp: Long? = null
|
||||
|
||||
private val cronetDataSourceFactory = CronetDataSource.Factory(
|
||||
CronetHelper.cronetEngine,
|
||||
Executors.newCachedThreadPool()
|
||||
)
|
||||
|
||||
/**
|
||||
* The response that gets when called the Api.
|
||||
*/
|
||||
@ -290,7 +283,7 @@ open class OnlinePlayerService : AbstractPlayerService() {
|
||||
}
|
||||
// HLS
|
||||
streams.hls != null -> {
|
||||
val hlsMediaSourceFactory = HlsMediaSource.Factory(cronetDataSourceFactory)
|
||||
val hlsMediaSourceFactory = HlsMediaSource.Factory(DefaultDataSource.Factory(this))
|
||||
.setPlaylistParserFactory(YoutubeHlsPlaylistParser.Factory())
|
||||
|
||||
val mediaItem = createMediaItem(
|
||||
|
@ -17,8 +17,6 @@ espresso = "3.6.1"
|
||||
workRuntime = "2.9.1"
|
||||
retrofit = "2.11.0"
|
||||
desugaring = "2.1.4"
|
||||
cronetEmbedded = "119.6045.31"
|
||||
cronetOkHttp = "0.1.0"
|
||||
coil = "2.7.0"
|
||||
room = "2.6.1"
|
||||
kotlinxSerialization = "1.6.3"
|
||||
@ -65,8 +63,6 @@ androidx-media3-ui = { group="androidx.media3", name="media3-ui", version.ref="m
|
||||
newpipeextractor = { module = "com.github.teamnewpipe:NewPipeExtractor", version.ref = "newpipeextractor" }
|
||||
square-retrofit = { group = "com.squareup.retrofit2", name = "retrofit", version.ref = "retrofit" }
|
||||
desugaring = { group = "com.android.tools", name = "desugar_jdk_libs_nio", version.ref = "desugaring" }
|
||||
cronet-embedded = { group = "org.chromium.net", name = "cronet-embedded", version.ref = "cronetEmbedded" }
|
||||
cronet-okhttp = { group = "com.google.net.cronet", name = "cronet-okhttp", version.ref = "cronetOkHttp" }
|
||||
coil = { group = "io.coil-kt", name = "coil", version.ref="coil" }
|
||||
lifecycle-viewmodel = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-ktx", version.ref = "lifecycle" }
|
||||
lifecycle-runtime = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycle" }
|
||||
|
Loading…
x
Reference in New Issue
Block a user