背景:
安装新版youtube(3.04.010版本)播放视频,选择视频清晰度;
预期结果:选择视频清晰度时,有1440p、2160p等分辨率,并能正常播放;
实际结果:选择视频清晰度时,没有1440p、2160p分辨率选项;
使用新版youtube在播放vp9视频时(youtube新版本为:3.04.010),在选择视频清晰度时,最高分辨 率只有1080P,而旧版的youtube(youtube新版本为:2.05.03-20503320)却有1440p、2160p(4K)等清晰度的选项。
分析
没有改动代码和配置的情况下,通过安装新旧两个版本的youtube应用进行播放确认,新版本没有1440p和2160p清晰度的选项,唯一的变量是youtube应用,则说明新版应用在 策略上进行了调整,调用了一些旧版本没有调用的接口或者策略,导致该问题的发生。那么则需要从应用层分析。通过分析新老版本调用接口的区别是:新版本相较于旧版本,会调用 sSizeSupported()->supports( )去检测底层硬件解码器是否满足一些要求。
根本原因
配置文件说明
在对代码进行分析前,需要对配置文件和规格书进行说明,这里的配置文件为:media_codecs.xml、media_codecs_performance.xml,以及方案规格书。mediacodec通路会通路这些配置文件进行解析,进而判断底层解码器可支持的格式与能力(分辨率、码率等)。media_codecs_performance.xml配置文件:相对应的编码格式各个分辨率支持的帧率范围。