From cad450a630b804083b84e102c5a108951a20cb75 Mon Sep 17 00:00:00 2001 From: oxy-macmini Date: Thu, 1 May 2025 16:13:51 +0800 Subject: [PATCH] fix: remove lite codecs. --- data/build.gradle.kts | 22 +++------------ data/codec/build.gradle.kts | 23 ---------------- data/codec/consumer-rules.pro | 0 data/codec/lite/.gitignore | 1 - data/codec/lite/build.gradle.kts | 25 ----------------- data/codec/lite/consumer-rules.pro | 0 data/codec/lite/proguard-rules.pro | 21 --------------- data/codec/lite/src/main/AndroidManifest.xml | 4 --- .../java/com/m3u/data/codec/LiteCodecs.kt | 19 ------------- data/codec/proguard-rules.pro | 21 --------------- data/codec/rich/.gitignore | 1 - data/codec/rich/build.gradle.kts | 27 ------------------- data/codec/rich/consumer-rules.pro | 0 data/codec/rich/proguard-rules.pro | 21 --------------- data/codec/rich/src/main/AndroidManifest.xml | 4 --- .../main/java/com/m3u/data/codec/Codecs.kt | 18 ------------- .../com/m3u/data/service/internal/Codecs.kt} | 10 +++---- .../service/internal/PlayerManagerImpl.kt | 7 ++--- settings.gradle.kts | 1 - 19 files changed, 9 insertions(+), 216 deletions(-) delete mode 100644 data/codec/build.gradle.kts delete mode 100644 data/codec/consumer-rules.pro delete mode 100644 data/codec/lite/.gitignore delete mode 100644 data/codec/lite/build.gradle.kts delete mode 100644 data/codec/lite/consumer-rules.pro delete mode 100644 data/codec/lite/proguard-rules.pro delete mode 100644 data/codec/lite/src/main/AndroidManifest.xml delete mode 100644 data/codec/lite/src/main/java/com/m3u/data/codec/LiteCodecs.kt delete mode 100644 data/codec/proguard-rules.pro delete mode 100644 data/codec/rich/.gitignore delete mode 100644 data/codec/rich/build.gradle.kts delete mode 100644 data/codec/rich/consumer-rules.pro delete mode 100644 data/codec/rich/proguard-rules.pro delete mode 100644 data/codec/rich/src/main/AndroidManifest.xml delete mode 100644 data/codec/src/main/java/com/m3u/data/codec/Codecs.kt rename data/{codec/rich/src/main/java/com/m3u/data/codec/RichCodec.kt => src/main/java/com/m3u/data/service/internal/Codecs.kt} (72%) diff --git a/data/build.gradle.kts b/data/build.gradle.kts index 758b6743..69a8453e 100644 --- a/data/build.gradle.kts +++ b/data/build.gradle.kts @@ -32,25 +32,6 @@ dependencies { implementation(project(":lint:annotation")) ksp(project(":lint:processor")) - implementation(project(":data:codec")) - val isTvBuild = gradle - .startParameter - .taskNames - .any { ":app:tv" in it } - if (isTvBuild) { - implementation(project(":data:codec:rich")) - } else { - val richCodec = gradle - .startParameter - .taskNames - .find { it.contains("richCodec", ignoreCase = true) } != null - if (richCodec) { - implementation(project(":data:codec:rich")) - } else { - implementation(project(":data:codec:lite")) - } - } - implementation(libs.androidx.core.ktx) implementation(libs.androidx.appcompat) @@ -85,6 +66,9 @@ dependencies { implementation(libs.androidx.media3.transformer) implementation(libs.androidx.media3.muxer) + implementation(libs.nextlib.media3ext) + implementation(libs.nextlib.mediainfo) + implementation(libs.androidx.work.runtime.ktx) implementation(libs.androidx.hilt.work) diff --git a/data/codec/build.gradle.kts b/data/codec/build.gradle.kts deleted file mode 100644 index 9095a841..00000000 --- a/data/codec/build.gradle.kts +++ /dev/null @@ -1,23 +0,0 @@ -plugins { - alias(libs.plugins.com.android.library) - alias(libs.plugins.org.jetbrains.kotlin.android) - alias(libs.plugins.com.google.devtools.ksp) -} - -android { - namespace = "com.m3u.data.codec" - kotlinOptions { - jvmTarget = "17" - } -} - -dependencies { - implementation(libs.androidx.core.ktx) - implementation(libs.androidx.appcompat) - - implementation(libs.androidx.media3.exoplayer) - - // auto - implementation(libs.auto.service.annotations) - ksp(libs.auto.service.ksp) -} \ No newline at end of file diff --git a/data/codec/consumer-rules.pro b/data/codec/consumer-rules.pro deleted file mode 100644 index e69de29b..00000000 diff --git a/data/codec/lite/.gitignore b/data/codec/lite/.gitignore deleted file mode 100644 index 42afabfd..00000000 --- a/data/codec/lite/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build \ No newline at end of file diff --git a/data/codec/lite/build.gradle.kts b/data/codec/lite/build.gradle.kts deleted file mode 100644 index 9ba6e5ce..00000000 --- a/data/codec/lite/build.gradle.kts +++ /dev/null @@ -1,25 +0,0 @@ -plugins { - alias(libs.plugins.com.android.library) - alias(libs.plugins.org.jetbrains.kotlin.android) - alias(libs.plugins.com.google.devtools.ksp) -} - -android { - namespace = "com.m3u.data.codec.lite" - kotlinOptions { - jvmTarget = "17" - } -} - -dependencies { - implementation(project(":data:codec")) - - implementation(libs.androidx.core.ktx) - implementation(libs.androidx.appcompat) - - implementation(libs.androidx.media3.exoplayer) - - implementation(libs.auto.service.annotations) - - ksp(libs.auto.service.ksp) -} \ No newline at end of file diff --git a/data/codec/lite/consumer-rules.pro b/data/codec/lite/consumer-rules.pro deleted file mode 100644 index e69de29b..00000000 diff --git a/data/codec/lite/proguard-rules.pro b/data/codec/lite/proguard-rules.pro deleted file mode 100644 index 481bb434..00000000 --- a/data/codec/lite/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/data/codec/lite/src/main/AndroidManifest.xml b/data/codec/lite/src/main/AndroidManifest.xml deleted file mode 100644 index 44008a43..00000000 --- a/data/codec/lite/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/data/codec/lite/src/main/java/com/m3u/data/codec/LiteCodecs.kt b/data/codec/lite/src/main/java/com/m3u/data/codec/LiteCodecs.kt deleted file mode 100644 index fc8d7a41..00000000 --- a/data/codec/lite/src/main/java/com/m3u/data/codec/LiteCodecs.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.m3u.data.codec - -import android.content.Context -import android.graphics.Bitmap -import android.net.Uri -import androidx.media3.exoplayer.DefaultRenderersFactory -import androidx.media3.exoplayer.RenderersFactory -import com.google.auto.service.AutoService - -@AutoService(Codecs::class) -class LiteCodecs: Codecs { - override fun createRenderersFactory(context: Context): RenderersFactory { - return DefaultRenderersFactory(context).apply { - setEnableDecoderFallback(true) - } - } - - override fun getThumbnail(context: Context, uri: Uri): Bitmap? = null -} \ No newline at end of file diff --git a/data/codec/proguard-rules.pro b/data/codec/proguard-rules.pro deleted file mode 100644 index 481bb434..00000000 --- a/data/codec/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/data/codec/rich/.gitignore b/data/codec/rich/.gitignore deleted file mode 100644 index 42afabfd..00000000 --- a/data/codec/rich/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build \ No newline at end of file diff --git a/data/codec/rich/build.gradle.kts b/data/codec/rich/build.gradle.kts deleted file mode 100644 index fb28af8c..00000000 --- a/data/codec/rich/build.gradle.kts +++ /dev/null @@ -1,27 +0,0 @@ -plugins { - alias(libs.plugins.com.android.library) - alias(libs.plugins.org.jetbrains.kotlin.android) - alias(libs.plugins.com.google.devtools.ksp) -} - -android { - namespace = "com.m3u.data.codec.rich" - kotlinOptions { - jvmTarget = "17" - } -} - -dependencies { - implementation(project(":data:codec")) - - implementation(libs.androidx.core.ktx) - implementation(libs.androidx.appcompat) - - implementation(libs.androidx.media3.exoplayer) - implementation(libs.nextlib.media3ext) - implementation(libs.nextlib.mediainfo) - - implementation(libs.auto.service.annotations) - - ksp(libs.auto.service.ksp) -} \ No newline at end of file diff --git a/data/codec/rich/consumer-rules.pro b/data/codec/rich/consumer-rules.pro deleted file mode 100644 index e69de29b..00000000 diff --git a/data/codec/rich/proguard-rules.pro b/data/codec/rich/proguard-rules.pro deleted file mode 100644 index 481bb434..00000000 --- a/data/codec/rich/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/data/codec/rich/src/main/AndroidManifest.xml b/data/codec/rich/src/main/AndroidManifest.xml deleted file mode 100644 index 44008a43..00000000 --- a/data/codec/rich/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/data/codec/src/main/java/com/m3u/data/codec/Codecs.kt b/data/codec/src/main/java/com/m3u/data/codec/Codecs.kt deleted file mode 100644 index 70f9ca00..00000000 --- a/data/codec/src/main/java/com/m3u/data/codec/Codecs.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.m3u.data.codec - -import android.content.Context -import android.graphics.Bitmap -import android.net.Uri -import androidx.media3.exoplayer.RenderersFactory -import java.util.ServiceLoader - -interface Codecs { - fun createRenderersFactory(context: Context): RenderersFactory - fun getThumbnail(context: Context, uri: Uri): Bitmap? - - companion object { - fun load(): Codecs { - return ServiceLoader.load(Codecs::class.java).first() - } - } -} \ No newline at end of file diff --git a/data/codec/rich/src/main/java/com/m3u/data/codec/RichCodec.kt b/data/src/main/java/com/m3u/data/service/internal/Codecs.kt similarity index 72% rename from data/codec/rich/src/main/java/com/m3u/data/codec/RichCodec.kt rename to data/src/main/java/com/m3u/data/service/internal/Codecs.kt index a5d43fb9..72b18eb5 100644 --- a/data/codec/rich/src/main/java/com/m3u/data/codec/RichCodec.kt +++ b/data/src/main/java/com/m3u/data/service/internal/Codecs.kt @@ -1,24 +1,22 @@ -package com.m3u.data.codec +package com.m3u.data.service.internal import android.content.Context import android.graphics.Bitmap import android.net.Uri import androidx.media3.exoplayer.DefaultRenderersFactory import androidx.media3.exoplayer.RenderersFactory -import com.google.auto.service.AutoService import io.github.anilbeesetti.nextlib.media3ext.ffdecoder.NextRenderersFactory import io.github.anilbeesetti.nextlib.mediainfo.MediaInfoBuilder -@AutoService(Codecs::class) -class RichCodec: Codecs { - override fun createRenderersFactory(context: Context): RenderersFactory { +object Codecs { + fun createRenderersFactory(context: Context): RenderersFactory { return NextRenderersFactory(context).apply { setEnableDecoderFallback(true) setExtensionRendererMode(DefaultRenderersFactory.EXTENSION_RENDERER_MODE_ON) } } - override fun getThumbnail(context: Context, uri: Uri): Bitmap? { + fun getThumbnail(context: Context, uri: Uri): Bitmap? { val mediaInfo = MediaInfoBuilder() .from(context, uri) .build() diff --git a/data/src/main/java/com/m3u/data/service/internal/PlayerManagerImpl.kt b/data/src/main/java/com/m3u/data/service/internal/PlayerManagerImpl.kt index 60f8421d..b077f2ce 100644 --- a/data/src/main/java/com/m3u/data/service/internal/PlayerManagerImpl.kt +++ b/data/src/main/java/com/m3u/data/service/internal/PlayerManagerImpl.kt @@ -59,7 +59,6 @@ import com.m3u.core.architecture.preferences.Settings import com.m3u.core.architecture.preferences.get import com.m3u.data.SSLs import com.m3u.data.api.OkhttpClient -import com.m3u.data.codec.Codecs import com.m3u.data.database.model.Channel import com.m3u.data.database.model.Playlist import com.m3u.data.database.model.copyXtreamEpisode @@ -81,7 +80,6 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.collectLatest -import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.flowOf @@ -414,7 +412,7 @@ class PlayerManagerImpl @Inject constructor( } override suspend fun syncThumbnail(channelUrl: String): Uri? = withContext(Dispatchers.IO) { - val thumbnail = codecs.getThumbnail(context, channelUrl.toUri()) ?: return@withContext null + val thumbnail = Codecs.getThumbnail(context, channelUrl.toUri()) ?: return@withContext null val filename = UUID.randomUUID().toString() + ".jpeg" val file = File(thumbnailDir, filename) while (!file.createNewFile()) { @@ -453,9 +451,8 @@ class PlayerManagerImpl @Inject constructor( addListener(this@PlayerManagerImpl) } - private val codecs: Codecs by lazy { Codecs.load() } private val renderersFactory: RenderersFactory by lazy { - codecs.createRenderersFactory(context) + Codecs.createRenderersFactory(context) } private fun createTrackSelector(tunneling: Boolean): TrackSelector { diff --git a/settings.gradle.kts b/settings.gradle.kts index abee6fc7..0fa35ad0 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -19,7 +19,6 @@ rootProject.name = "M3U" include(":app:smartphone", ":app:tv", ":app:extension") include(":core", ":core:foundation", ":core:extension") include(":data") -include(":data:codec", ":data:codec:lite", ":data:codec:rich") include( ":business:foryou", ":business:favorite",