新四季網

一種視頻流媒體無互斥緩衝方法

2023-08-02 07:21:01

專利名稱:一種視頻流媒體無互斥緩衝方法
技術領域:
本發明涉及一種服務類型的內存數據無斥緩衝技術,特別涉及一種流媒體碼流的緩衝方法。
背景技術:
眾所周知,在一個服務類型的應用程式中,內存管理以及緩衝室都相當重要,因為系統會因為內存的管理不善引發效率低下甚至系統錯誤的問題,而且內存錯誤的查找不易發覺和定位,為規避這種情況出現,有效地內存管理更顯重要。目前的服務類型的應用程式都具備簡單的內存管理功能,普遍採用的方法就是數組或者容器的方法,即把一些結構或內容放入字符數組或者容器中,再對其進行管理, 即每次操作可能都會產生生成結構,賦值結構,刪除結構的過程。在現在的PC系統中,內存的分配以及大小是一個瓶頸,而頻繁的內存操作會耗去很大部分的CPU資源.特別是在視頻監控系統的軟體系統當中,由於是流媒體級別應用,可能會同時並發處理上百個呼叫,系統正常運行時會有多大幾百個線程,這就意味著同時可能有幾百個內存處理的操作發生,每進行一次內存處理就是分配內存,使用內存, 釋放內存的過程.而且還有對數組或容器互斥操作的處理。這對系統的核心資源佔用很大,也很浪費。佔用CPU的資源很龐大且不穩定,這樣雖然處理相對簡單,但是對於系統的穩定性(短時間大量內存處理),進而嚴重影響應用程式的性能,且實際操作時(尤其是大小不定的內容,內容量地情況),很難分配大小顆粒度,而此是為傳統技術的主要缺點。

發明內容
本發明提供一種視頻流媒體無互斥緩衝方法其採取一次分配,再次通過實際大小分配(在已經分配好的情況下),規避了內存的多次分配釋放,且處理更快速,而此是為本發明的主要目的。本發明所採用的技術方案為一種視頻流媒體無互斥緩衝方法,使用兩個環形緩衝區進行視頻信息的讀寫,在流媒體中,一路視頻的讀寫都在一個固定大小的內存區中進行,讀寫操作的同步通過讀寫指針變量來確定,根據獲取緩衝區的內容,並設定讀寫指針來確定變化量,採用環形緩衝區的時候,當讀寫指針到達緩衝區尾部的時候,自動將讀寫指針移動至環形緩衝區首地址的位置,如此循環往復。兩個該環形緩衝區中一個該環形緩衝區為視頻流媒體內容的緩衝區,另外一個該環形緩衝區為容器緩衝區。該容器緩衝區為容器std: :List緩衝,其包含內容起始位置信息以及內容大小的信息,該容器緩衝區的操作是原子操作,在具體實施的時候儘量減少迭代器的使用衝突,在該容器緩衝區的進行插入尾部操作以及取除頭部操作,其中,插入尾部通過命令push_back 完成,取除頭部通過命令pop_front完成。所謂原子操作是指不會被線程調度機制打斷的操作,這種操作一旦開始,就一直運行倒結束,中間不會有任何context switch (切換到另一個線程)。由於該視頻流媒體內容的緩衝區以及該容器緩衝區為環形緩衝區,所以該視頻流媒體內容的緩衝區以及該容器緩衝區都避開使用鎖的保護,關於使用鎖的保護在具體實施的時候如何正確有效的保護共享數據是編寫程序必須面臨的一個難題,通常的手段就是同步,分為阻塞式和非阻塞式,在本發明中為了實現無互斥運行,需要進行非阻塞的同步,也就是通過上述環形緩衝區的特點避開使用鎖的保護。在使用兩個環形緩衝區進行視頻信息讀寫的時候包括如下步驟,
第一步、一次性分配該視頻流媒體內容的緩衝區以及該容器緩衝區的內存大小,將視頻內容寫入該視頻流媒體內容的緩衝區以及該容器緩衝區中,該視頻流媒體內容的緩衝區中寫入具體視頻內容,該容器緩衝區中寫入具體視頻內容的起始位置、視頻內容大小的信息,該容器緩衝區中寫入的具體視頻內容的起始位置、視頻內容大小的信息與該視頻流媒體內容的緩衝區中寫入的具體視頻內容一一對應,在具體實施的時候將視頻內容寫入該視頻流媒體內容的緩衝區以及該容器緩衝區中的過程中還需要記錄以及修改必要的參數。在完成第一步的過程中按照如下步驟進行
步驟一、一次性分配該視頻流媒體內容的緩衝區以及該容器緩衝區的內存大小。步驟二、在該視頻流媒體內容的緩衝區中寫入具體視頻內容,在該容器緩衝區中記錄具體視頻內容的結構信息,將結構信息寫入結構容器LS中。容器為std: :List〈S>。結構信息包括寫入具體視頻內容的起始位置、視頻內容大小的信息。步驟三、記錄移動工作參數信息。第二步、通過該容器緩衝區一次性獲取所有寫入該視頻流媒體內容的緩衝區中的視頻內容。具體按照如下步驟進行
步驟一、獲取第一步中該結構容器LS,通過該結構容器LS進而獲取該視頻流媒體內容的緩衝區中的視頻內容。步驟二、記錄移動工作參數。步驟三、對該結構容器LS進行取頭操作,即根據已取好的個數,進行p0p_fr0nt操作。第一步、第二步循環進行完成利用兩個環形緩衝區進行視頻信息讀寫的操作。在具體實施的時候,在進行第一步、第二步的過程中其調用接口的流程為首先, 進行初始化大小CVideoBuffersQnt size);而後,將視頻內容寫入該視頻流媒體內容的緩衝區以及該容器緩衝區中PushData(void *pdata, int size);最後,每隔一段時間從該視頻流媒體內容的緩衝區以及該容器緩衝區中讀數據,具體使用GetData(void *pArr, int num),其中pArr是DataBagStruct結構數組,num為DataBagStruct結構數組的大小,如果較長時間只寫入則少讀取,會覆蓋較長時間前的數據,寫入新數據。本發明的有益效果為本發明提供一種應用程式內存管理的方法,該方法能極大的降低內存分配釋放操作,無需對內存加鎖,即提高了效率又降低了對CPU資源的佔用率。本發明利用環形緩衝及無鎖編程將原來的內存分配釋放操作大大降低,即能達到內存緩衝的目的,又能保持較低的資源佔用率,為服務類型的應用程式(特別是流媒體程序)提高了一個完善的內存管理解決方案,實際運行過程中,流媒體因為內存處理對CPU的佔用較低,且穩定,解決了該應用程式對內存管理導致CPU佔用較高的問題,有效提高了系統的可維護性及穩定性。


圖I為加鎖層次的原理說明圖。圖2為環形存儲示例原理說明圖。圖3為本發明基本實現示例原理說明圖。
具體實施例方式如圖I至3所示,一種視頻流媒體無互斥緩衝方法,使用兩個環形緩衝區進行視頻信息的讀寫。在流媒體中,一路視頻的讀寫都在一個固定大小的內存區中進行,讀寫操作的同步通過讀寫指針變量來確定。根據獲取緩衝區的內容,並設定讀寫指針來確定變化量,採用環形緩衝區的時候,當讀寫指針到達緩衝區尾部的時候,自動將讀寫指針移動至環形緩衝區首地址的位置, 如此循環往復。兩個該環形緩衝區中一個該環形緩衝區為視頻流媒體內容的緩衝區,另外一個該環形緩衝區為容器緩衝區。該容器緩衝區為容器std: :List緩衝,其包含內容起始位置信息以及內容大小的信息。該容器緩衝區的操作是原子操作,在具體實施的時候儘量減少迭代器的使用衝突,在該容器緩衝區的進行插入尾部操作以及取除頭部操作。其中,插入尾部通過命令push_back完成,取除頭部通過命令pop_front完成。所謂原子操作是指不會被線程調度機制打斷的操作,這種操作一旦開始,就一直運行倒結束,中間不會有任何context switch (切換到另一個線程)。由於該視頻流媒體內容的緩衝區以及該容器緩衝區為環形緩衝區,所以該視頻流媒體內容的緩衝區以及該容器緩衝區都避開使用鎖的保護。關於使用鎖的保護在具體實施的時候如何正確有效的保護共享數據是編寫程序必須面臨的一個難題,通常的手段就是同步,分為阻塞式和非阻塞式。在本發明中為了實現無互斥運行,需要進行非阻塞的同步,也就是通過上述環形緩衝區的特點避開使用鎖的保護。在使用兩個環形緩衝區進行視頻信息讀寫的時候包括如下步驟,
第一步、一次性分配該視頻流媒體內容的緩衝區以及該容器緩衝區的內存大小,將視頻內容寫入該視頻流媒體內容的緩衝區以及該容器緩衝區中。該視頻流媒體內容的緩衝區中寫入具體視頻內容,該容器緩衝區中寫入具體視頻內容的起始位置、視頻內容大小的信息。該容器緩衝區中寫入的具體視頻內容的起始位置、視頻內容大小的信息與該視頻流媒體內容的緩衝區中寫入的具體視頻內容--對應。
在具體實施的時候將視頻內容寫入該視頻流媒體內容的緩衝區以及該容器緩衝區中的過程中還需要記錄以及修改必要的參數。在完成第一步的過程中按照如下步驟進行
步驟一、一次性分配該視頻流媒體內容的緩衝區以及該容器緩衝區的內存大小。步驟二、在該視頻流媒體內容的緩衝區中寫入具體視頻內容,在該容器緩衝區中記錄具體視頻內容的結構信息,將結構信息寫入結構容器LS中。容器為std: :List〈S>。結構信息包括寫入具體視頻內容的起始位置、視頻內容大小的信息。步驟三、記錄移動工作參數信息。第二步、通過該容器緩衝區一次性獲取所有寫入該視頻流媒體內容的緩衝區中的視頻內容。具體按照如下步驟進行
步驟一、獲取第一步中該結構容器LS,通過該結構容器LS進而獲取該視頻流媒體內容的緩衝區中的視頻內容。步驟二、記錄移動工作參數。步驟三、對該結構容器LS進行取頭操作,即根據已取好的個數,進行p0p_fr0nt操作。第一步、第二步循環進行完成利用兩個環形緩衝區進行視頻信息讀寫的操作。在具體實施的時候,在進行第一步、第二步的過程中其調用接口的流程為
首先,進行初始化大小CVideoBuffers (int size);
而後,將視頻內容寫入該視頻流媒體內容的緩衝區以及該容器緩衝區中 PushData(void 氺pdata, int size);
最後,每隔一段時間從該視頻流媒體內容的緩衝區以及該容器緩衝區中讀數據,具體使用 GetData(void *pArr, int num),其中 pArr 是 DataBagStruct 結構數組,num 為 DataBagStruct結構數組的大小,如果較長時間只寫入則少讀取,會覆蓋較長時間前的數據,寫入新數據。
權利要求
1.一種基於視頻調度的智能視頻路由方法,其特徵在於在大型視頻監控系統中的每一個視頻監控子系統中都設置級聯流媒體,該視頻監控子系統包括監控設備以及客戶端, 每個該級聯流媒體都與該大型視頻監控系統中的每一個該視頻監控子系統共享,各個該視頻監控子系統通過該級聯流媒體實現不同的該視頻監控子系統之間的實時信息交換,從而使該視頻監控子系統中的該客戶端通過該級聯流媒體得到其他該視頻監控子系統的該監控設備所採集到的視頻監控信號,該視頻監控子系統還包括子系統流媒體,交互層調度單元與該子系統流媒體相對應,該交互層調度單元負責該子系統流媒體之間的數據調度,調度單元與該交互層調度單元相對應,該調度單元負責該交互層調度單元之間的數據調度。
2.如權利要求I所述的一種基於視頻調度的智能視頻路由方法,其特徵在於該交互層調度單元交換調度的數據只包括該視頻監控子系統中的子網攝像信息。
3.如權利要求I所述的一種基於視頻調度的智能視頻路由方法,其特徵在於該子系統流媒體的路徑信息由該交互層調度單元負責生成路徑。
4.如權利要求I所述的一種基於視頻調度的智能視頻路由方法,其特徵在於該交互層調度單元通過信息交換中心將該交互層調度單元所管理的該監控設備與其他該視頻監控子系統中的該交互層調度單元共享,通過上述的方式使每個該級聯流媒體都與該大型視頻監控系統中的每一個該視頻監控子系統共享。
5.如權利要求I所述的一種基於視頻調度的智能視頻路由方法,其特徵在於每一個該視頻監控子系統的該監控設備都採用統一的格式標識。
6.如權利要求I所述的一種基於視頻調度的智能視頻路由方法,其特徵在於每一個該視頻監控子系統的該客戶端都通過該調度單元獲取該子系統流媒體的路徑。
7.如權利要求I所述的一種基於視頻調度的智能視頻路由方法,其特徵在於在該視頻監控子系統的該客戶端需要得到該大型視頻監控系統中的任意一個該監控設備的視頻監控信號的時候,通過子系統內部訪問以及子系統外部訪問兩種訪問方式進行,在進行子系統內部訪問以及子系統外部訪問的時候,首先進行子系統內部訪問而後進行子系統外部訪問。
8.如權利要求7所述的一種基於視頻調度的智能視頻路由方法,其特徵在於當該客戶端與該監控設備屬於同一該視頻監控子系統的時候,該客戶端通過子系統內部訪問方式訪問該監控設備的視頻監控信號,與該交互層調度單元連接的該客戶端需要該監控設備的視頻監控信號的時候,由該交互層調度單元將該子系統流媒體的數據轉發給該客戶端,該視頻監控子系統的該子系統流媒體包括源流媒體以及中間級流媒體,該交互層調度單元包括源調度單元以及中間調度單元,該源調度單元負責該源流媒體的數據調度,該中間調度單元負責該中間級流媒體的數據調度,當與該源調度單元連接的該客戶端需要該監控設備的視頻監控信號的時候,由該源調度單元將該源流媒體的數據轉發給該客戶端,而當與該中間調度單元連接的該客戶端需要該監控設備的視頻監控信號的時候,由該中間調度單元將該中間級流媒體的轉發數據以及該源流媒體的路徑數據轉發給該客戶端。
9.如權利要求7所述的一種基於視頻調度的智能視頻路由方法,其特徵在於當該客戶端與該監控設備屬於不同的該視頻監控子系統的時候,該客戶端通過子系統外部訪問方式訪問該監控設備的視頻監控信號,該客戶端發送視頻請求至該調度單元,由該調度單元同時與不同的該視頻監控子系統中的該交互層調度單元進行聯繫,通過每一個該視頻監控子系統中的該交互層調度單元對其該視頻監控子系統中的該子系統流媒體進行查找,最終查找到該客戶端需要的視頻信息,該視頻監控子系統的該子系統流媒體包括源流媒體以及中間級流媒體,該交互層調度單元包括源調度單元以及中間調度單元,該源調度單元負責該源流媒體的數據調度,該中間調度單元負責該中間級流媒體的數據調度,在該交互層調度單元對其該視頻監控子系統中的該子系統流媒體進行查找的過程中, 首先,由該中間調度單元對該中間級流媒體進行查找,如果找到視頻信息則由該中間調度單元將視頻信息轉發給該客戶端,如果沒有找到視頻信息則通過該源調度單元對該源流媒體進行查找,如果找到則由該源調度單元將視頻信息轉發給該客戶端。
全文摘要
本發明屬於一種視頻流媒體無互斥緩衝方法,涉及一種基於視頻調度的智能視頻路由方法,在大型視頻監控系統中的每一個視頻監控子系統中都設置級聯流媒體,該視頻監控子系統包括監控設備以及客戶端,每個該級聯流媒體都與該大型視頻監控系統中的每一個該視頻監控子系統共享,各個該視頻監控子系統通過該級聯流媒體實現不同的該視頻監控子系統之間的實時信息交換,從而使該視頻監控子系統中的該客戶端通過該級聯流媒體得到其他該視頻監控子系統的該監控設備所採集到的視頻監控信號,該視頻監控子系統還包括子系統流媒體,交互層調度單元負責該子系統流媒體之間的數據調度,調度單元與該交互層調度單元相對應,該調度單元負責該交互層調度單元之間的數據調度。
文檔編號H04N21/63GK102595192SQ201210057730
公開日2012年7月18日 申請日期2012年3月7日 優先權日2012年3月7日
發明者劉聰, 孫靖宇, 李新強, 柴炯, 郭小傳 申請人:深圳市信義科技有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀