|
|
|
|
@ -8,9 +8,16 @@ class CallVideoProbe : Instrumentation() {
|
|
|
|
|
override fun onCreate(arguments: Bundle?) { super.onCreate(arguments); start() } |
|
|
|
|
override fun onStart() { |
|
|
|
|
try { |
|
|
|
|
val decoders = CallVideoCodec.probeDecoders() |
|
|
|
|
val codecs = CallVideoCodec.probe() |
|
|
|
|
check(codecs.isNotEmpty()) { "No conforming encoder/decoder pair" } |
|
|
|
|
finish(0, Bundle().apply { putString("codecs", codecs.toString()) }) |
|
|
|
|
check(codecs.isNotEmpty() && decoders.isNotEmpty()) { "No verified encoders or decoders" } |
|
|
|
|
for ((codec, entry) in codecs) { |
|
|
|
|
val f = CallVideoFormat(1, 640, 480, codec = codec, level = entry.level, profile = entry.profile) |
|
|
|
|
for (rate in listOf(4_000_000, 300_000, 4_000_000)) { |
|
|
|
|
CallVideoCodec(f, rate, entry.name).use { it.prepare() } |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
finish(0, Bundle().apply { putString("codecs", codecs.toString()); putString("decoders", decoders.toString()) }) |
|
|
|
|
} catch (e: Exception) { |
|
|
|
|
android.util.Log.e("CallVideoProbe", "probe failed", e) |
|
|
|
|
finish(1, Bundle().apply { putString("error", e.toString()) }) |
|
|
|
|
|