diff --git a/app/libs/libmpv.aar b/app/libs/libmpv.aar
index 5bd9b3c4..51ed1c80 100644
Binary files a/app/libs/libmpv.aar and b/app/libs/libmpv.aar differ
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
index ca03e91b..8c55517d 100644
--- a/app/proguard-rules.pro
+++ b/app/proguard-rules.pro
@@ -23,11 +23,6 @@
-keepnames class dev.jdtech.jellyfin.models.PlayerItem
-keepnames class dev.jdtech.jellyfin.models.DownloadSeriesMetadata
-# Keep all mpvlib methods because proguard removes some which makes the app crash
--keep class is.xyz.libmpv.MPVLib {
- *;
-}
-
# ProGuard thinks all SettingsFragments are unused
-keep class dev.jdtech.jellyfin.fragments.SettingsLanguageFragment
-keep class dev.jdtech.jellyfin.fragments.SettingsAppearanceFragment
diff --git a/app/src/main/java/dev/jdtech/jellyfin/mpv/MPVPlayer.kt b/app/src/main/java/dev/jdtech/jellyfin/mpv/MPVPlayer.kt
index fa01cb33..f398ebb6 100644
--- a/app/src/main/java/dev/jdtech/jellyfin/mpv/MPVPlayer.kt
+++ b/app/src/main/java/dev/jdtech/jellyfin/mpv/MPVPlayer.kt
@@ -1,7 +1,6 @@
package dev.jdtech.jellyfin.mpv
-import `is`.xyz.libmpv.MPVLib
-import android.annotation.SuppressLint
+import `is`.xyz.mpv.MPVLib
import android.app.Application
import android.content.Context
import android.content.res.AssetManager
@@ -273,7 +272,6 @@ class MPVPlayer(
}
}
- @SuppressLint("SwitchIntDef")
override fun event(@MPVLib.Event eventId: Int) {
handler.post {
when (eventId) {
@@ -311,14 +309,11 @@ class MPVPlayer(
}
}
}
+ else -> Unit
}
}
}
- override fun eventEndFile(@MPVLib.Reason reason: Int, @MPVLib.Error error: Int) {
- // Nothing to do...
- }
-
private fun setPlayerStateAndNotifyIfChanged(
playWhenReady: Boolean = getPlayWhenReady(),
@Player.PlayWhenReadyChangeReason playWhenReadyChangeReason: Int = Player.PLAY_WHEN_READY_CHANGE_REASON_USER_REQUEST,
@@ -358,33 +353,17 @@ class MPVPlayer(
* Select a [Track] or disable a [TrackType] in the current player.
*
* @param trackType The [TrackType]
- * @param isExternal If track is external or embed in media
- * @param index Index to select or [C.INDEX_UNSET] to disable [TrackType]
+ * @param id Id to select or [C.INDEX_UNSET] to disable [TrackType]
* @return true if the track is or was already selected
*/
fun selectTrack(
@TrackType trackType: String,
- isExternal: Boolean = false,
- index: Int
+ id: Int
): Boolean {
- if (index != C.INDEX_UNSET) {
- Timber.i("${currentMpvTracks.size}")
- currentMpvTracks.firstOrNull {
- it.type == trackType && (if (isExternal) it.title else "${it.ffIndex}") == "$index"
- }.let { track ->
- if (track != null) {
- Timber.i("selected track ${track.ffIndex} ${track.type}")
- if (!track.selected) {
- MPVLib.setPropertyInt(trackType, track.id)
- }
- } else {
- return false
- }
- }
+ if (id != C.INDEX_UNSET) {
+ MPVLib.setPropertyInt(trackType, id)
} else {
- if (currentMpvTracks.indexOfFirst { it.type == trackType && it.selected } != C.INDEX_UNSET) {
- MPVLib.setPropertyString(trackType, "no")
- }
+ MPVLib.setPropertyString(trackType, "no")
}
return true
}
diff --git a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/PlayerViewModel.kt b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/PlayerViewModel.kt
index 415eebc4..64aafc36 100644
--- a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/PlayerViewModel.kt
+++ b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/PlayerViewModel.kt
@@ -1,11 +1,13 @@
package dev.jdtech.jellyfin.viewmodels
+import android.app.Application
import android.net.Uri
import androidx.lifecycle.LifecycleCoroutineScope
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.google.android.exoplayer2.util.MimeTypes
import dagger.hilt.android.lifecycle.HiltViewModel
+import dev.jdtech.jellyfin.R
import dev.jdtech.jellyfin.database.DownloadDatabaseDao
import dev.jdtech.jellyfin.models.ExternalSubtitle
import dev.jdtech.jellyfin.models.PlayerItem
@@ -26,6 +28,7 @@ import javax.inject.Inject
@HiltViewModel
class PlayerViewModel @Inject internal constructor(
+ private val application: Application,
private val repository: JellyfinRepository,
private val downloadDatabase: DownloadDatabaseDao
) : ViewModel() {
@@ -182,7 +185,7 @@ class PlayerViewModel @Inject internal constructor(
externalSubtitles.add(
ExternalSubtitle(
- mediaStream.title.orEmpty(),
+ mediaStream.title ?: application.getString(R.string.external),
mediaStream.language.orEmpty(),
Uri.parse(repository.getBaseUrl() + deliveryUrl),
when (mediaStream.codec) {
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 3411a17a..eee0073d 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -133,4 +133,5 @@
Use Material You Dynamic colors (only available on Android 12+)
Subtitles
Customize subtitles appearance
+ External
\ No newline at end of file