最近一段时间接到不少android客户反馈,看到对方的视频是绿屏,还有一些反馈对方看不到自己的视频,由于我们使用的是h264硬编解码,首先想到的是编解码这块出现了问题。
先看绿屏的问题,收集了下反馈机型,主要集中在cpu为联发科MT6735至MT6755的机器上,使用的硬件编解码器是OMX.MTK.**,随便在云真机测试平台找了台机器-华为畅享5(TIT-AL00)测试,果然是绿屏。打开webrtc全日志
Logging.enableTracing(
"logcat:",
EnumSet.of(Logging.TraceLevel.TRACE_ALL))
Logging.enableLogToDebugOutput(Logging.Severity.LS_SENSITIVE)
再编译个版本在华为畅享5上跑,日志下载下来,逐条分析,有一段日志很奇怪:
04-12 15:58:45.440 W/hwcomposer( 260): [BLT] Not support color range(0), use default BT601
04-12 15:58:45.440 W/hwcomposer( 260): [BLT] Not support color range(0), use default BT601
hwcomposer是android4.0后推出的新特性,它定义了一套HAL接口,然后各大厂商需要根据自己硬件特性去实现,其实就是一些图层处理功能,这里报了color不支持。下面我们追踪一下源码,看看webrtc 解码中使用了哪些color
private static @Nullable DecoderProperties findDecoder(
String mime, String[] supportedCodecPrefixes) {
...
// Check if codec