Files
jellyfin-androidtv/playback/jellyfin/src/main/kotlin/mediastream/tracks.kt
2024-04-07 20:34:56 +02:00

40 lines
1.3 KiB
Kotlin

package org.jellyfin.playback.jellyfin.mediastream
import org.jellyfin.playback.core.mediastream.MediaStreamAudioTrack
import org.jellyfin.playback.core.mediastream.MediaStreamContainer
import org.jellyfin.sdk.model.api.MediaStream
import org.jellyfin.sdk.model.api.MediaStreamType
fun JellyfinStreamResolver.MediaInfo.getMediaStreamContainer() = MediaStreamContainer(
format = requireNotNull(mediaSource.container)
)
fun JellyfinStreamResolver.MediaInfo.getTracks() =
mediaSource.mediaStreams
.orEmpty()
.mapNotNull(MediaStream::getMediaStreamTrack)
fun MediaStream.getMediaStreamTrack() = when (type) {
MediaStreamType.AUDIO -> getAudioTrack(this)
MediaStreamType.VIDEO -> getVideooTrack(this)
MediaStreamType.SUBTITLE -> getSubtitleTrack(this)
// Ignore other track types
MediaStreamType.EMBEDDED_IMAGE,
MediaStreamType.DATA,
MediaStreamType.LYRIC -> null
}
private fun getAudioTrack(stream: MediaStream) = MediaStreamAudioTrack(
codec = requireNotNull(stream.codec),
bitrate = stream.bitRate ?: 0,
channels = stream.channels ?: 1,
sampleRate = stream.sampleRate ?: 0,
)
// TODO Implement Video track type
private fun getVideooTrack(stream: MediaStream) = null
// TODO Implement Subtitle track type
private fun getSubtitleTrack(stream: MediaStream) = null