NewPipe/app/src/main/java/us/shandian/giga/get/MissionRecoveryInfo.kt

72 lines
2.1 KiB
Kotlin

package us.shandian.giga.get
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
import org.schabi.newpipe.extractor.MediaFormat
import org.schabi.newpipe.extractor.stream.AudioStream
import org.schabi.newpipe.extractor.stream.Stream
import org.schabi.newpipe.extractor.stream.SubtitlesStream
import org.schabi.newpipe.extractor.stream.VideoStream
import java.io.Serializable
@Parcelize
class MissionRecoveryInfo(
var format: MediaFormat,
var desired: String? = null,
var isDesired2: Boolean = false,
var desiredBitrate: Int = 0,
var kind: Char = Char.MIN_VALUE,
var validateCondition: String? = null
) : Serializable, Parcelable {
constructor(stream: Stream) : this(format = stream.getFormat()!!) {
when (stream) {
is AudioStream -> {
desiredBitrate = stream.average_bitrate
isDesired2 = false
kind = 'a'
}
is VideoStream -> {
desired = stream.getResolution()
isDesired2 = stream.isVideoOnly()
kind = 'v'
}
is SubtitlesStream -> {
desired = stream.languageTag
isDesired2 = stream.isAutoGenerated
kind = 's'
}
else -> throw RuntimeException("Unknown stream kind")
}
}
override fun toString(): String {
val info: String
val str = StringBuilder()
str.append("{type=")
when (kind) {
'a' -> {
str.append("audio")
info = "bitrate=$desiredBitrate"
}
'v' -> {
str.append("video")
info = "quality=$desired videoOnly=$isDesired2"
}
's' -> {
str.append("subtitles")
info = "language=$desired autoGenerated=$isDesired2"
}
else -> {
info = ""
str.append("other")
}
}
str.append(" format=")
.append(format.getName())
.append(' ')
.append(info)
.append('}')
return str.toString()
}
}