Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Split "playback/exoplayer" Gradle module into two #3781

Merged
merged 3 commits into from
Jul 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,9 @@ val versionTxt by tasks.registering {
dependencies {
// Jellyfin
implementation(projects.playback.core)
implementation(projects.playback.exoplayer)
implementation(projects.playback.jellyfin)
implementation(projects.playback.media3.exoplayer)
implementation(projects.playback.media3.session)
implementation(projects.preference)
implementation(libs.jellyfin.apiclient)
implementation(libs.jellyfin.sdk) {
Expand Down
22 changes: 13 additions & 9 deletions app/src/main/java/org/jellyfin/androidtv/di/PlaybackModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,11 @@ import org.jellyfin.androidtv.ui.playback.RewritePlaybackLauncher
import org.jellyfin.androidtv.ui.playback.VideoQueueManager
import org.jellyfin.androidtv.ui.playback.rewrite.RewriteMediaManager
import org.jellyfin.playback.core.playbackManager
import org.jellyfin.playback.exoplayer.ExoPlayerOptions
import org.jellyfin.playback.exoplayer.exoPlayerPlugin
import org.jellyfin.playback.exoplayer.session.MediaSessionOptions
import org.jellyfin.playback.jellyfin.jellyfinPlugin
import org.jellyfin.playback.media3.exoplayer.ExoPlayerOptions
import org.jellyfin.playback.media3.exoplayer.exoPlayerPlugin
import org.jellyfin.playback.media3.session.MediaSessionOptions
import org.jellyfin.playback.media3.session.media3SessionPlugin
import org.jellyfin.sdk.api.client.ApiClient
import org.koin.android.ext.koin.androidContext
import org.koin.core.scope.Scope
Expand Down Expand Up @@ -58,18 +59,21 @@ fun Scope.createPlaybackManager() = playbackManager(androidContext()) {
NotificationManagerCompat.from(get()).createNotificationChannel(channel)
}

val api = get<ApiClient>()
val exoPlayerOptions = ExoPlayerOptions(
httpConnectTimeout = api.httpClientOptions.connectTimeout,
httpReadTimeout = api.httpClientOptions.requestTimeout
)
install(exoPlayerPlugin(get(), exoPlayerOptions))

val mediaSessionOptions = MediaSessionOptions(
channelId = notificationChannelId,
notificationId = 1,
iconSmall = R.drawable.app_icon_foreground,
openIntent = pendingIntent,
)
val api = get<ApiClient>()
val exoPlayerOptions = ExoPlayerOptions(
httpConnectTimeout = api.httpClientOptions.connectTimeout,
httpReadTimeout = api.httpClientOptions.requestTimeout
)
install(exoPlayerPlugin(get(), mediaSessionOptions, exoPlayerOptions))
install(media3SessionPlugin(get(), mediaSessionOptions))

install(jellyfinPlugin(get()))

// Options
Expand Down
15 changes: 0 additions & 15 deletions playback/exoplayer/src/main/kotlin/ExoPlayerPlugin.kt

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@ dependencies {
implementation(libs.androidx.media3.exoplayer.hls)
implementation(libs.jellyfin.androidx.media3.ffmpeg.decoder)
implementation(libs.androidx.media3.ui)
implementation(libs.androidx.media3.session)

// Logging
implementation(libs.timber)
Expand Down
1 change: 1 addition & 0 deletions playback/media3/exoplayer/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" />
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.jellyfin.playback.exoplayer
package org.jellyfin.playback.media3.exoplayer

import android.media.audiofx.LoudnessEnhancer
import timber.log.Timber
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.jellyfin.playback.exoplayer
package org.jellyfin.playback.media3.exoplayer

import android.app.ActivityManager
import android.content.Context
Expand Down Expand Up @@ -33,8 +33,8 @@ import org.jellyfin.playback.core.queue.QueueEntry
import org.jellyfin.playback.core.support.PlaySupportReport
import org.jellyfin.playback.core.ui.PlayerSubtitleView
import org.jellyfin.playback.core.ui.PlayerSurfaceView
import org.jellyfin.playback.exoplayer.support.getPlaySupportReport
import org.jellyfin.playback.exoplayer.support.toFormats
import org.jellyfin.playback.media3.exoplayer.support.getPlaySupportReport
import org.jellyfin.playback.media3.exoplayer.support.toFormats
import timber.log.Timber
import kotlin.time.Duration
import kotlin.time.Duration.Companion.milliseconds
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.jellyfin.playback.exoplayer
package org.jellyfin.playback.media3.exoplayer

import kotlin.time.Duration

Expand Down
11 changes: 11 additions & 0 deletions playback/media3/exoplayer/src/main/kotlin/ExoPlayerPlugin.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package org.jellyfin.playback.media3.exoplayer

import android.content.Context
import org.jellyfin.playback.core.plugin.playbackPlugin

fun exoPlayerPlugin(
androidContext: Context,
exoPlayerOptions: ExoPlayerOptions = ExoPlayerOptions(),
) = playbackPlugin {
provide(ExoPlayerBackend(androidContext, exoPlayerOptions))
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.jellyfin.playback.exoplayer.mapping
package org.jellyfin.playback.media3.exoplayer.mapping

import androidx.annotation.OptIn
import androidx.media3.common.MimeTypes
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.jellyfin.playback.exoplayer.mapping
package org.jellyfin.playback.media3.exoplayer.mapping

import androidx.annotation.OptIn
import androidx.media3.common.MimeTypes
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.jellyfin.playback.exoplayer.mapping
package org.jellyfin.playback.media3.exoplayer.mapping

import androidx.annotation.OptIn
import androidx.media3.common.MimeTypes
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.jellyfin.playback.exoplayer.support
package org.jellyfin.playback.media3.exoplayer.support

import androidx.annotation.OptIn
import androidx.media3.common.util.UnstableApi
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.jellyfin.playback.exoplayer.support
package org.jellyfin.playback.media3.exoplayer.support

import androidx.annotation.OptIn
import androidx.media3.common.util.UnstableApi
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.jellyfin.playback.exoplayer.support
package org.jellyfin.playback.media3.exoplayer.support

import androidx.annotation.OptIn
import androidx.media3.common.Format
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.jellyfin.playback.exoplayer.support
package org.jellyfin.playback.media3.exoplayer.support

import androidx.annotation.OptIn
import androidx.media3.common.C
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.jellyfin.playback.exoplayer.support
package org.jellyfin.playback.media3.exoplayer.support

import androidx.annotation.OptIn
import androidx.media3.common.C
Expand All @@ -8,9 +8,9 @@ import androidx.media3.common.util.UnstableApi
import org.jellyfin.playback.core.mediastream.MediaStream
import org.jellyfin.playback.core.mediastream.MediaStreamAudioTrack
import org.jellyfin.playback.core.mediastream.MediaStreamVideoTrack
import org.jellyfin.playback.exoplayer.mapping.getFfmpegAudioMimeType
import org.jellyfin.playback.exoplayer.mapping.getFfmpegContainerMimeType
import org.jellyfin.playback.exoplayer.mapping.getFfmpegVideoMimeType
import org.jellyfin.playback.media3.exoplayer.mapping.getFfmpegAudioMimeType
import org.jellyfin.playback.media3.exoplayer.mapping.getFfmpegContainerMimeType
import org.jellyfin.playback.media3.exoplayer.mapping.getFfmpegVideoMimeType

@OptIn(UnstableApi::class)
private val PCM_CODECS = mapOf(
Expand Down
48 changes: 48 additions & 0 deletions playback/media3/session/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
plugins {
id("com.android.library")
kotlin("android")
}

android {
namespace = "org.jellyfin.playback.media3.session"
compileSdk = 34

defaultConfig {
minSdk = 21
}

lint {
lintConfig = file("$rootDir/android-lint.xml")
abortOnError = false
}

testOptions.unitTests.all {
it.useJUnitPlatform()
}
}

dependencies {
// Jellyfin
implementation(projects.playback.core)

// Kotlin
implementation(libs.kotlinx.coroutines)
implementation(libs.kotlinx.coroutines.guava)

// AndroidX
implementation(libs.androidx.core)

// media3
implementation(libs.androidx.media3.session)

// Logging
implementation(libs.timber)

// Compatibility (desugaring)
coreLibraryDesugaring(libs.android.desugar)

// Testing
testImplementation(libs.kotest.runner.junit5)
testImplementation(libs.kotest.assertions)
testImplementation(libs.mockk)
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

<application>
<service
android:name="org.jellyfin.playback.exoplayer.session.AndroidMediaService"
android:name="org.jellyfin.playback.media3.session.AndroidMediaService"
android:exported="true"
android:foregroundServiceType="mediaPlayback"
tools:ignore="ExportedService">
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.jellyfin.playback.exoplayer.session
package org.jellyfin.playback.media3.session

import androidx.media3.session.MediaSession
import androidx.media3.session.MediaSessionService
Expand Down
11 changes: 11 additions & 0 deletions playback/media3/session/src/main/kotlin/Media3SessionPlugin.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package org.jellyfin.playback.media3.session

import android.content.Context
import org.jellyfin.playback.core.plugin.playbackPlugin

fun media3SessionPlugin(
androidContext: Context,
options: MediaSessionOptions
) = playbackPlugin {
provide(MediaSessionService(androidContext, options))
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.jellyfin.playback.exoplayer.session
package org.jellyfin.playback.media3.session

import android.app.PendingIntent
import androidx.annotation.DrawableRes
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.jellyfin.playback.exoplayer.session
package org.jellyfin.playback.media3.session

import android.os.Looper
import androidx.annotation.OptIn
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.jellyfin.playback.exoplayer.session
package org.jellyfin.playback.media3.session

import android.content.Context
import android.os.Looper
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.jellyfin.playback.exoplayer.session
package org.jellyfin.playback.media3.session

import androidx.core.net.toUri
import androidx.media3.common.MediaItem
Expand Down
3 changes: 2 additions & 1 deletion settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@ include(":app")

// Modules
include(":playback:core")
include(":playback:exoplayer")
include(":playback:jellyfin")
include(":playback:media3:exoplayer")
include(":playback:media3:session")
include(":preference")

pluginManagement {
Expand Down
Loading