yuanrongxi / razor

A google's congestion Control Algorithm
MIT License
355 stars 156 forks source link

padding发送问题请教 #37

Closed adcen0107 closed 3 years ago

adcen0107 commented 3 years ago

袁老师,您好!关于padding有两个问题想向您请教:1、gcc的padding功能,可以通过参数(像bbr一样)控制是否启用,从而将gcc的padding完善出来吗?我的看法是,为了画面稳定编解码会不那么频率地变动码率,padding可以减少上探的频率;此外,gcc层的探测与应用层的探测并不冲突,且gcc层的padding发送的触发是在应用层的码率不够时,所以两个并存似乎不冲突的。2、bbr发送padding时,是不是需要加上budget_remaining(&pace->media_budget) > 0的判断,从而防止突发呢?

adcen0107 commented 3 years ago

当前razor bbr padding发送逻辑如下:

           /*检查是否可以padding*/
    while (pace->padding == 1 && budget_remaining(&pace->padding_budget) > PADDING_SIZE / 4){
        if (bbr_pacer_congestion(pace) == -1)
            break;  
        if (pace->send_cb != NULL){
            pace->send_cb(pace->handler, 0, 0, PADDING_SIZE, 1);

            if (pace->notify_cb != NULL)
                pace->notify_cb(pace->notify_handler, PADDING_SIZE);

            use_budget(&pace->media_budget, PADDING_SIZE);
            use_budget(&pace->padding_budget, PADDING_SIZE);
            pace->outstanding_bytes += PADDING_SIZE;
        }
        else 
            break;
    }
yuanrongxi commented 3 years ago

第一个问题我当时在测试的时候,GCC的padding感觉把握不好时机,所以我没有实现,这块我可以考虑后面看看怎么去实现。 第二个关于BBR的问题,其实media_budget和padding_budget是同时增加的,我就只判定了padding_budget

adcen0107 commented 3 years ago

明白了,谢谢袁老师!