Webrtc 动态分辨率
Webrtc更改分辨率改动点:
1. **内容分析模块开启分辨率调整功能
bool ViEEncoder::Init() 函数中119行
改动vp_->EnableContentAnalysis(false); 为
vp_->EnableContentAnalysis(true);
用以**内容分析模块分辨率调整模块(VCMQmResolution)需要内容分析模块分析的数据用以调整分辨率
2. 开启动态编码器以适应分辨率修改
备注:用以动态更改编码器分辨率,避免修改了分辨率之后编码器将数据包丢弃.
(1) 增加VideoSender类模块变量
增加两个变量(uint32_t numberOfCores_;uint32_t maxPayloadSize_;)
(2) 初始化类变量:
(3) 设置变量
(4) 修改编码器
3. 修改图片缩放方法以适应分辨率动态修改
(1) Scale模块增加方法声明
(2) Scale模块增加拉伸方式缩放图片方法
(3) spatial_resampler模块修改缩放调用方法
4. 修改分辨率计算方法
(1) content_metrics_processing模块减小延时控制变量避免切换过慢
(2) qm_select_data模块修改阈值控制参数
(3) qm_select模块增加预定值及方法
(4) qm_select模块增加CorrectAction方法
(5) qm_select模块修改GoingDownResolution方法
(6) qm_select模块修改GetTransitionRate方法
(7) qm_select模块修改UpdateCodecResolution方法
(8) qm_select模块增加动作历史记录模块避免频繁的来回切分辨率
(9) qm_select模块修改UpdateDownsamplingState函数
(10) qm_select模块修改ConvertSpatialFractionalToWhole方法
(11) qm_select模块修改ConstrainAmountOfDownSampling方法