Skip to content

Commit e6b1ed1

Browse files
Removed fallback URL handling in EpisodePreviewOverlay for cleaner stream URL management and to fix #345 with sdr streams
1 parent 17ae426 commit e6b1ed1

1 file changed

Lines changed: 2 additions & 15 deletions

File tree

app/src/main/java/org/jellyfin/androidtv/ui/composable/item/EpisodePreviewOverlay.kt

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,6 @@ fun EpisodePreviewOverlay(
9494
val httpDataSourceFactory = koinInject<HttpDataSource.Factory>()
9595

9696
var streamUrl by remember { mutableStateOf<String?>(null) }
97-
var fallbackUrl by remember { mutableStateOf<String?>(null) }
9897
var seekPositionMs by remember { mutableStateOf(0L) }
9998
var isPlaying by remember { mutableStateOf(false) }
10099
var exoPlayer by remember { mutableStateOf<ExoPlayer?>(null) }
@@ -113,7 +112,6 @@ fun EpisodePreviewOverlay(
113112
LaunchedEffect(focused, item.id) {
114113
if (!focused) {
115114
streamUrl = null
116-
fallbackUrl = null
117115
isPlaying = false
118116
exoPlayer?.stop()
119117
exoPlayer?.release()
@@ -124,7 +122,7 @@ fun EpisodePreviewOverlay(
124122
delay(PREVIEW_START_DELAY_MS)
125123

126124
try {
127-
val (primaryUrl, fallbackUrlResolved, introEndMs) = withContext(Dispatchers.IO) {
125+
val (primaryUrl, introEndMs) = withContext(Dispatchers.IO) {
128126
// Transcoded stream first: forces H.264 8-bit (SDR), no Dolby Vision/HDR
129127
val transcoded = effectiveApi.videosApi.getVideoStreamUrl(
130128
itemId = item.id,
@@ -137,11 +135,6 @@ fun EpisodePreviewOverlay(
137135
subtitleMethod = org.jellyfin.sdk.model.api.SubtitleDeliveryMethod.DROP,
138136
)
139137

140-
val direct = effectiveApi.videosApi.getVideoStreamUrl(
141-
itemId = item.id,
142-
static = true,
143-
)
144-
145138
val seekMs = try {
146139
val positionTicks = item.userData?.playbackPositionTicks ?: 0L
147140
if (positionTicks > 0) {
@@ -158,11 +151,10 @@ fun EpisodePreviewOverlay(
158151
if (positionTicks > 0) positionTicks / 10_000L else runtimeFallbackMs(item)
159152
}
160153

161-
Triple(transcoded, direct, seekMs)
154+
Pair(transcoded, seekMs)
162155
}
163156

164157
streamUrl = primaryUrl
165-
fallbackUrl = fallbackUrlResolved
166158
seekPositionMs = introEndMs
167159
} catch (e: Exception) {
168160
Timber.w(e, "EpisodePreview: Failed to resolve stream URL for ${item.name}")
@@ -229,11 +221,6 @@ fun EpisodePreviewOverlay(
229221
Timber.w("EpisodePreview: Error for ${item.name}: ${error.message}")
230222
isPlaying = false
231223
handler.removeCallbacks(stopRunnable)
232-
val fb = fallbackUrl
233-
if (fb != null) {
234-
fallbackUrl = null
235-
streamUrl = fb
236-
}
237224
}
238225
})
239226

0 commit comments

Comments
 (0)