Webrtc 动态分辨率

Webrtc更改分辨率改动点:

1.  **内容分析模块开启分辨率调整功能

bool ViEEncoder::Init() 函数中119行

改动vp_->EnableContentAnalysis(false); 为

vp_->EnableContentAnalysis(true);

用以**内容分析模块分辨率调整模块(VCMQmResolution)需要内容分析模块分析的数据用以调整分辨率

 

2.  开启动态编码器以适应分辨率修改

备注:用以动态更改编码器分辨率,避免修改了分辨率之后编码器将数据包丢弃.

(1)       增加VideoSender类模块变量

增加两个变量(uint32_t numberOfCores_;uint32_t maxPayloadSize_;)

Webrtc 动态分辨率

(2)       初始化类变量:

Webrtc 动态分辨率

(3)       设置变量

Webrtc 动态分辨率

(4)       修改编码器

Webrtc 动态分辨率

3.  修改图片缩放方法以适应分辨率动态修改

(1)       Scale模块增加方法声明

Webrtc 动态分辨率

(2)       Scale模块增加拉伸方式缩放图片方法

Webrtc 动态分辨率

(3)       spatial_resampler模块修改缩放调用方法

Webrtc 动态分辨率

4.  修改分辨率计算方法

(1)       content_metrics_processing模块减小延时控制变量避免切换过慢

Webrtc 动态分辨率

(2)       qm_select_data模块修改阈值控制参数

Webrtc 动态分辨率

Webrtc 动态分辨率

Webrtc 动态分辨率

 

(3)       qm_select模块增加预定值及方法

 Webrtc 动态分辨率

Webrtc 动态分辨率

(4)       qm_select模块增加CorrectAction方法

Webrtc 动态分辨率

(5)       qm_select模块修改GoingDownResolution方法

Webrtc 动态分辨率

(6)       qm_select模块修改GetTransitionRate方法

Webrtc 动态分辨率

(7)       qm_select模块修改UpdateCodecResolution方法

 Webrtc 动态分辨率

(8)       qm_select模块增加动作历史记录模块避免频繁的来回切分辨率

Webrtc 动态分辨率

Webrtc 动态分辨率

(9)       qm_select模块修改UpdateDownsamplingState函数

 Webrtc 动态分辨率

 

(10)   qm_select模块修改ConvertSpatialFractionalToWhole方法

 Webrtc 动态分辨率

 

(11)   qm_select模块修改ConstrainAmountOfDownSampling方法

Webrtc 动态分辨率