青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

live555學習之基本類介紹及計劃任務深度探討

轉載自:http://blog.sina.com.cn/s/blog_77c632410101as1i.html

liveMedia項目的源代碼包括四個基本的庫,各種測試代碼以及Media Server。四個基本的庫分別是:

UsageEnvironment&TaskScheduler, groupsock, liveMediaBasicUsageEnvironment

1,基礎類介紹:

BasicUsageEnvironmentUsageEnvironment中的類都是用于整個系統的基礎功能類.用于事件的調度,實現異步讀取事件的句柄的設置以及錯誤信息的輸出。比如UsageEnvironment代表了整個系統運行的環境,它提供了錯誤記錄和錯誤報告的功能,無論哪一個類要輸出錯誤,就需要保存UsageEnvironment的指針.而TaskScheduler則提供了任務調度功能.整個程序的運行發動機就是它,它調度任務,執行任務(任務就是一個函數).TaskScheduler由于在全局中只有一個,所以保存在了UsageEnvironment中.而所有的類又都保存了UsageEnvironment的指針,所以誰想把自己的任務加入調度中,那是很容易的.在此還看到一個結論:整個live555(服務端)只有一個線程.

HashTable實現了哈稀表.定義了一個通用的hash表,其它代碼要用到這個表。

liveMedia庫中有一系列類,基類是Medium,這些類針對不同的流媒體類型和編碼。

基于liveMedia的程序,需要通過繼承UsageEnvironment抽象類和TaskScheduler抽象類,定義相應的類來處理事件調度,數據讀寫以及錯誤處理。live項目的源代碼里有這些類的一個基本實現,這就是BasicUsageEnvironment庫。BasicUsageEnvironment主要是針對簡單的控制臺應用程序,利用select實現事件獲取和處理。這個庫利用Unix或者Windows的控制臺作為輸入輸出,出于應用程序原形或者調試的目的,用戶可以用這個庫開發傳統的運行與控制臺的應用。

DelayQueue譯為"延遲隊列",它是一個隊列,每一項代表了一個要調度的任務(在它的fToken變量中保存).同時保存了這個任務離執行時間點的剩余時間.可以預見,它就是在TaskScheduler中用于管理調度任務的東西.注意,此隊列中的任務只被執行一次!執行完后這一項即被無情拋棄!

HandlerSetHandler集合.Handler是什么呢?它是一種專門用于執行socket操作的任務(函數),HandlerSetTaskScheduler用來管理所有的socket任務(增刪改查).所以TaskScheduler中現在已調度兩種任務了:socket任務(handlerSet)和延遲任務(DelayQueue).其實TaskScheduler還調度第三種任務:Event,這個后面再說.

Groupsock這個是放在單獨的庫Groupsock中。它封裝了socket操作,增加了多播支持和一對多單播功能.但好像不支持TCP。它管理著一個本地socket和多個目的地址,因為是UDP,所以只需知道對方地址和端口即可發送數據。Groupsock的構造函數有一個參數是struct in_addr const& groupAddr,在構造函數中首先會調用父類構造函數創建socket對象,然后判斷這個地址,若是多播地址,則加入多播組。Groupsock的兩個成員變量destRecord* fDestsDirectedNetInterfaceSet fMembers都表示目的地址集和,但貌似這個變量DirectedNetInterfaceSet fMembers沒有用到,且DirectedNetInterfaceSet一個沒有被繼承的虛類,看起來fMembers沒有什么用。僅fDesk也夠用了,在addDestination()removeDestination()函數中就是操作fDesk,添加或刪除目的地址。

2,基本概念
   
 先來熟悉在liveMedia庫中SourceSink以及Filter等概念。Sink就是消費數據的對象,比如把接收到的數據存儲到文件,這個文件就是一個SinkSource就是生產數據的對象,比如通過RTP讀取數據。數據流經過多個'source''sinks',下面是一個示例:
          source1' -> 'source2' (a filter) -> 'source3' (a filter) -> 'sink'
   
 從其它Source接收數據的source也叫做"filters"Module是一個sink或者一個filter。數據接收的終點是Sink類,MediaSink是所有Sink類的基類。Sink類實現對數據的處理是通過實現純虛函數continuePlaying(),通常情況continuePlaying調用fSource -> getNextFrame來為Source設置數據緩沖區,處理數據的回調函數等,fSourceMediaSink的類型為FramedSource*的類成員。

3,計劃任務(TaskScheduler)深入探討

我們且把三種任務命名為:socket handler,event handler,delay task

這三種任務的特點是,前兩個加入執行隊列后會一直存在,而delay task在執行完一次后會立即棄掉。

socket handler保存在隊列BasicTaskScheduler0::HandlerSet* fHandlers;

event handler保存在數組BasicTaskScheduler0::TaskFunc *

 fTriggeredEventHandlers[MAX_NUM_EVENT_TRIGGERS];

delay task保存在隊列BasicTaskScheduler0::DelayQueue fDelayQueue中。


  
 下面看一下三種任務的執行函數的定義:
socket handler

typedef void BackgroundHandlerProc(void* clientData, int mask);
event handler

typedef void TaskFunc(void* clientData);
delay task
 
typedef void TaskFunc(void* clientData);//
event handler一樣。

   
 再看一下向任務調度對象添加三種任務的函數的樣子:
socket handler
為:
void
 setBackgroundHandling(int socketNum, int conditionSet ,BackgroundHandlerProc* handlerProc, void* clientData)
event handler
:
EventTriggerId
 createEventTrigger(TaskFunc* eventHandlerProc)
delay task
為:
TaskToken
 scheduleDelayedTask(int64_t microseconds, TaskFunc* proc,void* clientData)

socket handler添加時為什么需要那些參數呢?socketNum是需要的,因為要select socketsocketNum即是socket()返回的那個socket對象)。conditionSet也是需要的,它用于表明socketselect時查看哪種裝態,是可讀?可寫?還是出錯?再看BackgroundHandlerProc的參數,socketNum不必解釋,mask是什么呢?它正是對應著conditionSet,但它表明的是select之后的結果,比如一個socket可能需要檢查其讀/寫狀態,而當前只能讀,不能寫,那么mask中就只有表明讀的位被設置。

event handler是被存在數組中。數組大小固定,是32項,用EventTriggerId來表示數組中的項,EventTriggerId是一個32位整數,因為數組是32項,所以用EventTriggerId中的第n位置1表明對應數組中的第n項。成員變量fTriggersAwaitingHandling也是EventTriggerId類型,它里面置1的那些位對應了數組中所有需要處理的項。這樣做節省了內存和計算,但降低了可讀性,而且也不夠靈活,只能支持32項或64項,其它數量不被支持。

posted on 2013-09-10 04:02 楊粼波 閱讀(916) 評論(0)  編輯 收藏 引用

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美日韩免费区域视频在线观看| 噜噜噜91成人网| 国产一区二区高清视频| 欧美日韩国产成人在线| 欧美日韩不卡一区| 国产精品久久久久999| 国产精品午夜视频| 国产婷婷一区二区| 亚洲第一精品夜夜躁人人爽| 亚洲人成网站色ww在线| 亚洲视频在线一区| 久久久精品国产免大香伊 | 亚洲国产欧美在线| 亚洲国产精品美女| 一区二区三区高清在线观看| 中文亚洲欧美| 久久爱另类一区二区小说| 久久久91精品国产| 欧美欧美天天天天操| 国产精品伊人日日| 欧美日韩一区二区三区免费看| 狠狠色噜噜狠狠狠狠色吗综合| 亚洲第一在线综合网站| 一区二区动漫| 久久亚洲美女| 一区二区三区欧美激情| 久久精品综合网| 欧美区国产区| 韩国在线一区| 亚洲午夜伦理| 欧美成人一区二区三区在线观看 | 免费黄网站欧美| aaa亚洲精品一二三区| 欧美在线影院| 欧美亚州韩日在线看免费版国语版| 黄色亚洲网站| 亚洲一区二区三区四区五区黄| 麻豆精品一区二区综合av | 欧美成人精品激情在线观看 | 亚洲精选视频免费看| 欧美一区二区日韩| 9色国产精品| 欧美激情欧美狂野欧美精品| 狠狠色丁香婷婷综合久久片| 午夜视频久久久| 亚洲精品乱码久久久久久久久| 久久久久欧美| 国产一区 二区 三区一级| 亚洲图片你懂的| 亚洲精品欧美激情| 欧美成人日本| 在线观看亚洲| 麻豆成人91精品二区三区| 欧美一区二区三区四区在线| 国产精品亚洲综合一区在线观看 | 亚洲男人第一av网站| 亚洲精品孕妇| 欧美日韩国产综合网| 亚洲精品国产视频| 亚洲国产日韩欧美在线动漫| 蜜臀av性久久久久蜜臀aⅴ四虎| 一区三区视频| 亚洲二区在线观看| 欧美日本免费一区二区三区| 亚洲人成网站777色婷婷| 亚洲电影第1页| 欧美精品aa| 亚洲少妇最新在线视频| 一区二区免费看| 国产美女搞久久| 久久久久久久一区二区| 久久久99免费视频| 91久久精品日日躁夜夜躁国产| 欧美激情精品久久久久久久变态 | 另类成人小视频在线| 黄色成人av网| 欧美成人精品一区二区三区| 久久只有精品| 亚洲毛片在线免费观看| 日韩视频中文| 国产欧美在线看| 欧美 亚欧 日韩视频在线| 蜜臀久久久99精品久久久久久| 亚洲精选一区| 国产精品99久久久久久白浆小说| 国产欧美韩国高清| 蜜桃久久精品一区二区| 欧美精品久久一区| 欧美中文字幕| 欧美黑人在线观看| 亚洲欧美国产精品va在线观看 | 欧美一区二区在线播放| 久久精品国产欧美激情 | 久久久久一区二区三区| 久久久一本精品99久久精品66| 99re热这里只有精品视频| 一区二区三区免费网站| 国内精品久久久| 91久久午夜| 国产一区二区三区在线观看免费| 欧美激情一区二区三区高清视频| 欧美日韩免费在线观看| 久久久女女女女999久久| 欧美极品一区| 久久久伊人欧美| 欧美日韩一区二区三区视频| 老鸭窝91久久精品色噜噜导演| 国产精品wwwwww| 欧美激情欧美狂野欧美精品| 国产欧美日韩亚洲精品| 亚洲精品资源| 亚洲人成在线观看一区二区 | 欧美日韩国产综合网 | 亚洲欧美另类在线观看| 久久综合国产精品| 欧美在线免费观看| 欧美午夜在线一二页| 欧美激情视频一区二区三区在线播放 | 蜜乳av另类精品一区二区| 国产精品国内视频| 亚洲国产精品va在线观看黑人| 国产主播一区| 亚洲在线观看视频| 性欧美激情精品| 在线观看视频日韩| 亚洲欧美视频在线观看| 亚洲午夜性刺激影院| 欧美劲爆第一页| 亚洲国产精品黑人久久久| 韩国三级电影久久久久久| 性做久久久久久| 久久精品一本久久99精品| 国产精品视频一区二区三区| 中文精品在线| 香蕉av777xxx色综合一区| 欧美亚州韩日在线看免费版国语版| 亚洲美女av黄| 亚洲一区二区三区久久| 欧美四级剧情无删版影片| 宅男噜噜噜66国产日韩在线观看| 一区二区三区四区国产精品| 欧美日韩一区二区三区视频| 亚洲精品在线三区| 亚洲自拍偷拍麻豆| 国产精品永久免费视频| 欧美在线91| 欧美本精品男人aⅴ天堂| 亚洲国产精品久久久久婷婷884 | 欧美中文在线免费| 黄色精品网站| 欧美成黄导航| 亚洲最黄网站| 久久国产欧美日韩精品| 伊人男人综合视频网| 欧美成人免费在线观看| 日韩视频免费| 久久黄色级2电影| 在线欧美福利| 欧美日本在线播放| 亚洲欧美日韩精品久久亚洲区 | 久久青草欧美一区二区三区| 欧美a一区二区| 一区二区三区成人| 国产日韩欧美在线播放不卡| 久久久天天操| 99riav1国产精品视频| 久久精品99国产精品日本 | 久久久久久久999精品视频| 精品69视频一区二区三区| 欧美成人一区二区三区在线观看| 亚洲作爱视频| 欧美~级网站不卡| 国产精品99久久久久久人| 国产伦精品一区二区三区免费 | 在线观看的日韩av| 欧美另类高清视频在线| 亚洲综合久久久久| 欧美二区视频| 欧美一级视频免费在线观看| 在线观看国产日韩| 国产欧美一区二区三区久久 | 欧美高清视频在线观看| 亚洲综合精品自拍| 亚洲国产欧美国产综合一区| 欧美中文字幕第一页| 亚洲国产视频直播| 国产无遮挡一区二区三区毛片日本| 欧美1区2区| 欧美一级在线亚洲天堂| 99国产一区| 亚洲第一在线| 久久躁日日躁aaaaxxxx| 亚洲欧美精品中文字幕在线| 亚洲国产欧美一区二区三区同亚洲| 国产精品久久久久国产a级| 欧美韩日一区二区| 麻豆久久精品| 欧美一区二视频在线免费观看| 中日韩午夜理伦电影免费| 亚洲国产精品热久久|