@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user