一種數據處理方法及裝置的制造方法
【技術領域】
[0001 ] 本發明屬于電視數據處理技術領域,尤其涉及一種數據處理方法及裝置。
【背景技術】
[0002]人們在觀看直播視頻節目的同時,可能同時還需要進行錄制,后臺節目信息監控等等需求,因此,需要同時處理多個數據。目前絕大多數對于數據處理的方法都是優化Demux的數據回調效率,其中,Demux是demultiplexer的縮寫,可稱為解復用器、分路器或分離器,Demux是一個用于分離兩個或先前被一個兼容復用器組合并傳輸通過一個信號信道的多個信號的設備。現有數據處理的方法各有優劣,但是多數據并行處理效率低,系統處理穩定性不好。
【發明內容】
[0003]本發明實施例提供了一種數據處理方法及裝置,旨在解決現有技術多數據并行處理效率低,系統處理穩定性不好的問題。
[0004]一方面,提供一種數據處理方法,所述方法包括:
[0005]啟動數據服務,實時監控各個信道是否接收到數據包;
[0006]若任何一個信道接收到所述數據包,判斷是否能獲取到原子鎖;
[0007]若可以獲取原子鎖,創建原子鎖并一次性將所有所述數據包從硬件緩沖區拷貝到用戶緩沖區;
[0008]根據所述硬件緩沖區和所述用戶緩沖區的地址,同時獲取所述各個信道的數據包進行相應業務處理。
[0009]另一方面,提供一種數據處理裝置,所述裝置包括:
[0010]監控單元,用于啟動數據服務,實時監控各個信道是否接收到數據包;
[0011]判斷單元,用于若任何一個信道接收到所述數據包,判斷是否能獲取到原子鎖;
[0012]拷貝單元,用于若可以獲取原子鎖,創建原子鎖并一次性將所有所述數據包從硬件緩沖區拷貝到用戶緩沖區;
[0013]業務單元,用于根據所述硬件緩沖區和所述用戶緩沖區的地址,同時獲取所述各個信道的數據包進行相應業務處理。
[0014]在本發明實施例,啟動數據服務,實時監控各個信道是否接收到數據包;若任何一個信道接收到所述數據包,判斷是否能獲取到原子鎖;若可以獲取原子鎖,創建原子鎖并一次性將所有所述數據包從硬件緩沖區拷貝到用戶緩沖區;根據所述硬件緩沖區和所述用戶緩沖區的地址,同時獲取所述各個信道的數據包進行相應業務處理,本發明,大大減少了需要處理的數據量,大大提高數據處理效率,提高系統的穩定性。
【附圖說明】
[0015]圖1是本發明實施例一提供的數據處理方法的實現流程圖;
[0016]圖2是本發明實施例一提供的數據處理方法的數據包處理模型示意圖;
[0017]圖3是本發明實施例二提供的數據處理裝置的具體結構圖。
【具體實施方式】
[0018]為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。
[0019]在本發明實施例中,啟動數據服務,實時監控各個信道是否接收到數據包;若任何一個信道接收到所述數據包,判斷是否能獲取到原子鎖;若可以獲取原子鎖,創建原子鎖并一次性將所有所述數據包從硬件緩沖區拷貝到用戶緩沖區;根據所述硬件緩沖區和所述用戶緩沖區的地址,同時獲取所述各個信道的數據包進行相應業務處理。
[0020]以下結合具體實施例對本發明的實現進行詳細描述:
[0021]實施例一
[0022]圖1示出了本發明實施例一提供的數據處理方法的實現流程,詳述如下:
[0023]需要說明的是,本發明適用于數據處理終端進行多數據同時處理,所述數據處理終端包括Demux,尤其適用于電視直播、錄制、本地加密和數據監控等各種應用場景。
[0024]在步驟SlOl中,啟動數據服務,實時監控各個信道是否接收到數據包。
[0025]在本實施例中,所述信道具體為有線電視電纜的各個信道。所述數據包括一個信號信道的段sect1n數據、傳輸流或基本碼流的一種或多種。Demux啟動數據服務,實時監控各個信道是否接收到數據包,若任何一個信道接收到所述數據包,執行步驟S102,若沒有接收到所述數據包,則繼續監控各個信道是否接收到數據包。
[0026]在步驟S102中,若任何一個信道接收到所述數據包,判斷是否能獲取到原子鎖。
[0027]在本實施例中,所述原子鎖是原子操作對數據進行保護的方式,不需要每次進內核空間,在試圖上鎖時利用原子比較確認是否能獲取到鎖,不能則直接返回,能的話才進入數據處理,處理完成則釋放還原進鎖前值。然后原子操作根據平臺的指令進行優化,大大提高其處理速度;無論從原理及性能方面原子鎖都是輕量級的操作。Demux的數據通道的操作,如創建,銷毀及開啟和停止通道,都必須與數據處理共用同一把鎖,因為操作耗時,任務一個通道的操作都會影響到線程處理速度的降低,這里利用原子操作,處理數據的線程能快速獲取到鎖,也能夠快速的釋放鎖。
[0028]在步驟S103中,若可以獲取原子鎖,創建原子鎖并一次性將所有所述數據包從硬件緩沖區拷貝到用戶緩沖區。
[0029]在本實施例中,Linux系統中分為所述硬件緩沖區和所述用戶緩沖區,兩個分區的地址必須進行轉換才能使用。若可以獲取原子鎖,Demux創建原子鎖并一次性將所有所述數據包從硬件緩沖區拷貝到用戶緩沖區,減小一次數據拷貝,將處理硬件緩沖區中的數據包全取走進行處理,由此減小數據交互,批處理進行數據處理,減小線程間切換的頻度,大大提高數據包的響應時間。
[0030]作為一個可選方案,在步驟S104之前還包括按照循環冗余校驗碼處理所述數據包以減少冗余數據。
[0031]具體的,將當前頻點下的冗余數據包利用數據包的進行循環冗余校驗碼()過濾,減小冗余數據包。
[0032]在步驟S104中,