fix(android): guard API 29 codec query

close #1553
This commit is contained in:
edde746
2026-07-13 17:00:49 +02:00
parent e15bbed554
commit ae71b7bc64
2 changed files with 28 additions and 1 deletions
@@ -23,7 +23,18 @@ internal object MediaCodecQuery {
return null
}
fun isHardwareAccelerated(info: MediaCodecInfo): Boolean = isHardwareAccelerated(Build.VERSION.SDK_INT, info.isHardwareAccelerated, info.name)
fun isHardwareAccelerated(info: MediaCodecInfo): Boolean {
val sdkInt = Build.VERSION.SDK_INT
val name = info.name
return if (sdkInt >= Build.VERSION_CODES.Q) {
isHardwareAccelerated(sdkInt, info.isHardwareAccelerated, name)
} else {
// MediaCodecInfo.isHardwareAccelerated() does not exist before API 29.
// Keep the call inside the version gate so older Fire OS releases do not
// fail with NoSuchMethodError while initializing playback.
isHardwareAccelerated(sdkInt, false, name)
}
}
internal fun isHardwareAccelerated(
sdkInt: Int,
@@ -3,9 +3,25 @@ package com.edde746.plezy.shared
import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue
import org.junit.Test
import org.junit.runner.RunWith
import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config
import org.robolectric.shadows.MediaCodecInfoBuilder
@RunWith(RobolectricTestRunner::class)
@Config(sdk = [25, 28])
class MediaCodecQueryTest {
@Test
fun preApi29CodecQueryDoesNotInvokeApi29HardwareFlag() {
val codecInfo = MediaCodecInfoBuilder.newBuilder()
.setName("OMX.qcom.video.decoder.avc")
.setIsHardwareAccelerated(false)
.build()
assertTrue(MediaCodecQuery.isHardwareAccelerated(codecInfo))
}
@Test
fun recognizesKnownPlatformAndFfmpegSoftwareCodecNames() {
listOf(