licode中大小流方案

总体方案图如下

licode中大小流方案_第1张图片

大小流解决的核心是需要改造oneTomany,改造点如下

  1. publiser增加多个,并且要有角色之分,比如下

Publiser  m_BigPub;

Publishe  m_SmallPub;

需要主要。在下面三个队列中,处于第一第二队列的一律用BIg的ssrc 赋值

  1. 增加的subscreber要区分开,三个队列:大流 小流 大小流

map  m_lBigSub;

map  m_lSmallSub;

map m_lAllSub;

  1. 修改deliverVideoData_ 伪代码为:

 

deliverVideoData(std::shared_ptr video_packet)

{

   If(video_packe-ssrc==m_BigPub.ssrc)

        m_lBigSub.send();

        m_lAllSub.send()

  

  If(video_packe-ssrc==m_SmallPub.ssrc)

        m_lSmallSub.send();//这里要主要ssrc的问题,因为用户 在大小流之间来回切换,ssrc应该不变

        m_lAllSub.send()

 

}

 

  1. 修改deliverFeedback_函数。伪代码如下

 

deliverFeedback(std::shared_ptr fb_packet)

{

  If(packet->ssrc IN m_lSmallSub)//这块可能不对,不应该用ssrc来表示,应该是能区分订阅这的一个变量

modifyToSmallSrrc();

feedbackSink_->deliverFeedback(fb_packet);

 

 

 

 

}

你可能感兴趣的:(licode)