WebRTC之Module

WebRTC中存在一些需要定時且重復(fù)的任務(wù),所以就抽象出了Module這個任務(wù)類和ProcessThread這個定時執(zhí)行任務(wù)的線程封裝類。

用到定時任務(wù)的模塊有(不完全列舉)


NackModule 視頻nack處理模塊

Pacer 平滑發(fā)送模塊

RtpRtcp rtprtcp模塊

BitrateController 碼率控制模塊

VideoSender 視頻發(fā)送模塊

VideoReceiver 視頻接收模塊

VideoCodingModule 視頻編解碼模塊

Module

Module類抽象了三個接口


virtual int64_t TimeUntilNextProcess() = 0;

virtual void Process() = 0;

virtual void ProcessThreadAttached(ProcessThread* process_thread) {}

  • TimeUntilNextProcess

返回下一次執(zhí)行Process函數(shù)的時間,單位是毫秒

  • Process

任務(wù)執(zhí)行函數(shù)

  • ProcessThreadAttached

綁定或者解綁ProcessThread到當前模塊。實際上只有平滑發(fā)送模塊(PacedSender)才使用到這個接口,PacedSender暫停和恢復(fù)的時候會調(diào)用ProcessThread的WakeUp接口激活PacedSender模塊

ProcessThread

ProcessThread提供的接口就是下面這幾個厘肮。它的實現(xiàn)主要依賴兩個類PlatformThread(線程)和EventWrapper(定時器)


static std::unique_ptr<ProcessThread> Create(const char* thread_name);

virtual void Start() = 0;

virtual void Stop() = 0;

virtual void WakeUp(Module* module) = 0;

virtual void PostTask(std::unique_ptr<rtc::QueuedTask> task) = 0;

virtual void RegisterModule(Module* module, const rtc::Location& from) = 0;

virtual void DeRegisterModule(Module* module) = 0;

  • 調(diào)用Start創(chuàng)建一個新的線程,并啟動線程執(zhí)行定時任務(wù)

  • 調(diào)用Stop停止線程宙址,并銷毀線程

  • 通過RegisterModule接口注冊需要定時執(zhí)行的模塊轴脐,ProcessThread把模塊加入到模塊列表中(modules_)调卑,并調(diào)用ProcessThreadAttached注冊此線程到新加入模塊

  • 通過抡砂,DeRegisterModule接口移除不再需要定時執(zhí)行的模塊,ProcessThread把模塊從模塊列表中移除恬涧,并調(diào)用ProcessThreadAttached取消注冊此線程到移除模塊

  • 線程啟動以后會循環(huán)執(zhí)行ProcessThreadImpl::Process注益,它會從模塊列表中找到當前需要執(zhí)行的模塊,并找出最近一次需要執(zhí)行的最小時間溯捆,把這個時間給定時器

  • 如果某個模塊需要立馬被執(zhí)行可以調(diào)用WakeUp函數(shù)丑搔,它會中斷定時器,馬上執(zhí)行指定模塊

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末提揍,一起剝皮案震驚了整個濱河市啤月,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌劳跃,老刑警劉巖谎仲,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異刨仑,居然都是意外死亡郑诺,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進店門杉武,熙熙樓的掌柜王于貴愁眉苦臉地迎上來辙诞,“玉大人,你說我怎么就攤上這事轻抱》赏浚” “怎么了?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵祈搜,是天一觀的道長封拧。 經(jīng)常有香客問我,道長夭问,這世上最難降的妖魔是什么泽西? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮缰趋,結(jié)果婚禮上捧杉,老公的妹妹穿的比我還像新娘陕见。我一直安慰自己,他們只是感情好味抖,可當我...
    茶點故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布评甜。 她就那樣靜靜地躺著,像睡著了一般仔涩。 火紅的嫁衣襯著肌膚如雪忍坷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天熔脂,我揣著相機與錄音佩研,去河邊找鬼。 笑死霞揉,一個胖子當著我的面吹牛旬薯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播适秩,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼绊序,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了秽荞?” 一聲冷哼從身側(cè)響起骤公,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎扬跋,沒想到半個月后阶捆,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡胁住,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年趁猴,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片彪见。...
    茶點故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡儡司,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出余指,到底是詐尸還是另有隱情捕犬,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布酵镜,位于F島的核電站碉碉,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏淮韭。R本人自食惡果不足惜垢粮,卻給世界環(huán)境...
    茶點故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望靠粪。 院中可真熱鬧蜡吧,春花似錦毫蚓、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至君仆,卻和暖如春翩概,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背返咱。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工钥庇, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人洛姑。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓上沐,卻偏偏與公主長得像皮服,于是被迫代替她去往敵國和親楞艾。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,494評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,092評論 1 32
  • java 接口的意義-百度 規(guī)范龄广、擴展硫眯、回調(diào) 抽象類的意義-樂視 為其子類提供一個公共的類型封裝子類中得重復(fù)內(nèi)容定...
    交流電1582閱讀 2,212評論 0 11
  • 一、Python簡介和環(huán)境搭建以及pip的安裝 4課時實驗課主要內(nèi)容 【Python簡介】: Python 是一個...
    _小老虎_閱讀 5,723評論 0 10
  • 夢想這個詞太過絢麗择同,未必人人能夠擁有两入,因而實現(xiàn)夢想是多么奢侈的事情。所以敲才,“夢想”在這里只能用“我的理想生活”替代...
    南方_天津閱讀 419評論 2 1
  • 今天監(jiān)考很有趣裹纳,第一個同學(xué)的小抄放在文具盒里,按她的說法是之前復(fù)習(xí)用的紧武,忘記拿出來了剃氧,我真想問問她,復(fù)習(xí)都...
    豆子_be63閱讀 534評論 10 3