<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 使用多內核處理器的并行編程功能實(shí)現視頻代碼轉換

使用多內核處理器的并行編程功能實(shí)現視頻代碼轉換

作者: 時(shí)間:2012-10-10 來(lái)源:網(wǎng)絡(luò ) 收藏

是指從一種壓縮視頻格式轉換為另一種壓縮視頻格式,通常先要把某種格式解碼為原始視頻幀,然后用新的格式重新編碼。在許多應用中高效的代碼轉換至關(guān)重要。例如,為了支持視頻點(diǎn)播數據流,視頻數據要以某種主流格式存儲起來(lái)以節省空間,但必須支持眾多不同的觀(guān)看設備和解碼器。為了做到這一點(diǎn),需要在數據發(fā)送前以實(shí)時(shí)或者快于實(shí)時(shí)的速度進(jìn)行代碼轉換。在視頻節目制作階段進(jìn)行視頻編輯時(shí),也必須對視頻數據進(jìn)行解碼、修改和重新編碼。在普通家庭,為了能在家用視頻服務(wù)器上使用視頻,視頻數據可能也需要轉換才能適應服務(wù)器支持的格式

支持高清視頻點(diǎn)播要求高性能的代碼轉換。RapidMind公司開(kāi)發(fā)的軟件開(kāi)發(fā)平臺利用統一的模型充分發(fā)揮各種的性能。通過(guò)在RapidMind平臺上建立代碼轉換器,應用程序如今能運行在多種處理器上,包括CPU、GPU和Cell BE,并且還能通過(guò)擴展適應未來(lái)多內核(和眾內核)處理器環(huán)境。

代碼轉換器自然需要支持各種視頻壓縮格式。然而,許多格式在實(shí)現它們所需的運算類(lèi)型方面有很多相似性。另外,編碼器通常要比解碼器貴得多。一般一種視頻標準僅規定了壓縮數據流中存儲什么類(lèi)型的數據以及解碼器該怎樣譯碼,并不規定編碼器如何從原始輸入數據流中提取需要的信息。

通常一種壓縮視頻格式不僅要求實(shí)現對單幀的壓縮,而且要求使用視頻序列中的相鄰幀實(shí)現對中間幀的預測。為了能從傳輸產(chǎn)生的任何錯誤中恢復數據,并允許用戶(hù)從視頻序列中間位置開(kāi)始解壓縮,有些幀是在不參考其它幀的情況下進(jìn)行壓縮的。

單幀壓縮

單幀壓縮有點(diǎn)類(lèi)似于普通的圖像壓縮,通常包含了到不同基礎幀的轉換,如使用不同頻率和方向的余弦變換(離散余弦變換或DCT),或小波變換。這種轉換通常作用于塊,并且從數學(xué)上可精簡(jiǎn)到塊中像素上的一組點(diǎn)積(雖然一些基本函數允許理論上更快的因數分解)。轉換后的系數再經(jīng)過(guò)量化刪除那些對圖像可視無(wú)用的信息,形成一幅近似的圖像,最后使用編碼器編碼去除數據中任何殘留的冗余性。

上述轉換的目的不僅是通過(guò)將圖像中的能量集中為更小的一組數字而使代碼器變得更有效率,而且允許量化器顯著(zhù)地去除感知上不那么重要的信息。例如,DCT就會(huì )對圖像的高頻和低頻成分進(jìn)行分析。由于人眼對高頻時(shí)的量化誤差不甚敏感,因此這些頻率的量化可以粗放一些。另外,在上述壓縮步驟之前通常先要從亮度中分離出色度(顏色)和將色度欠采樣到較低分辨率,因為人眼對亮度邊緣較敏感,但對色度邊緣不太敏感。

一些較復雜的壓縮格式還支持根據空間相鄰的塊對一些圖像塊作出預測。選擇哪個(gè)塊用于預測極具挑戰性,而且支持解碼器中的必要排序在并行系統中也相當復雜。然而,如果塊的內容能夠被準確預測,那么對該塊壓縮時(shí)只需編碼預測值和實(shí)際值之間的(少量)差異。

如此詳細地介紹單幀圖像壓縮的原因是,實(shí)際上作為編碼過(guò)程的一部分,無(wú)論是塊還是單幀壓縮/解壓縮都有必要。特別是中間幀(數據流中的大部分幀)估計,它是通過(guò)融合和混合數據流前后發(fā)生的幀、然后從輸入數據中減去這個(gè)融合后的幀、最后壓縮差異圖像(一般使用類(lèi)似于單幀編碼器的編碼器)實(shí)現的。對這種融合的估計被稱(chēng)為運動(dòng)估計,是編碼過(guò)程中運算量最大的步驟之一。

然而在解碼器中,原始的源數據幀是沒(méi)有的,只有解壓縮后的幀。因此,這種融合要求圖像能在解碼器之前還原。因此它們不僅必須在編碼器中壓縮,而且需要被解壓縮。這種對前面壓縮的數據進(jìn)行解壓縮的需求將導致數據的依賴(lài)性,并影響到在具有不同存儲器系統的處理器之間如何并行使用和分配編碼器。

視頻序列中的圖像組(GOP)中的一些幀(I,幀內編碼幀)使用單幀壓縮算法進(jìn)行編碼,但基于運動(dòng)估計的幀間預測被用來(lái)改進(jìn)幀內幀間(雙向預測編碼幀B,前向預測編碼幀P)的壓縮。只有預測幀和實(shí)際幀之間的差異值需要被壓縮。由于B幀和P幀是根據I幀的解壓縮版本預測出來(lái)的,因此有必要作為編碼過(guò)程的一部分對I幀進(jìn)行壓縮和解壓縮。


圖1:RapidMind是一個(gè)開(kāi)發(fā)和運行時(shí)間平臺,它支持能充分利用的單線(xiàn)程可管理應用程序。開(kāi)發(fā)人員可以用標準的C++語(yǔ)言編寫(xiě)代碼,RapidMind平臺則可以將這些代碼在多個(gè)內核間“并行利用”。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>