在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于NVDK C6416處理平臺實現H.264的優化解碼算法

電子設計 ? 來源:電子技術應用 ? 作者:張旭東,安維崢 ? 2021-03-17 14:14 ? 次閱讀

多媒體通信終端設備具有廣泛的應用前景,可以應用于視頻會議、可視電話、PDA、數字電視等各個領域,所以高效、實用的多媒體終端設備一直是通信領域研究的主要方向之一。

多媒體通信終端的實現主要有兩點:一方面需要快速、穩定的處理器作為多媒體信號處理的平臺,另一方面需要適合多媒體通信的協議標準和軟件算法,尤其是對音視頻信號的壓縮處理算法。兩者的結合才能產生高效的多媒體通信設備。目前,隨著數字信號處理器(DSP)的高速發展,為實現高效的音視頻信號處理提供了可能性;另一方面,最新的低碼率視頻壓縮標準H.264的出臺,提供了適合通信的視頻標準和算法指導。因此,將兩者結合,把H.264算法在DSP上實現,對于多媒體通信的研究具有一定的意義和價值。

本文介紹了H.264解碼器算法的DSP實現。在設計中,采用了ATEME公司的網絡視頻開發平臺(NVDK C6416)作為DSP處理平臺,實現了H.264的優化解碼算法。對于QCIF視頻序列,解碼速度達50~60幀/秒。

1 網絡視頻開發平臺NVDK簡介

NVDK是TI的第三方ATEME公司推出的基于TI C6400系列DSP評估開發套件,是一款適用于圖像、視頻信號處理的高速DSP開發平臺[1]。該套件為諸如視頻基礎設施及網絡化視頻設備等高級視頻應用制造商提供了方便,提高了數字視頻應用項目的開發速度。

1.1 NVDK C6416體系結構

NVDK C6416由TMS320C6416 DSP內核、10/100 Mbps 的以太網子卡、音頻視頻接口盒、PCI總線、存儲器單元、擴展接口及獨立電源等構成。其功能結構框圖如圖1所示。

1.2 NVDK C6416的主要特點

NVDK作為網絡及視頻開發套件,把很多音視頻接口及網絡接口直接做在板卡上,給采用TI C6000系列DSP芯片作為處理單元的開發用戶提供了便利的前端平臺。它為項目演示、算法實現、原型制作、數據仿真FPGA開發和軟件優化提供了完整的DSP開發平臺。其主要特點如下:

·C6416 DSP內核:600MHz時鐘頻率及8指令并行結構,最高可以達到4800MIPS的處理能力。

·視頻特點:在輸入端,NVDK能夠捕獲PAL制或NTSC制的模擬視頻信號,可以采用復合視頻(CVBS)或者S-video視頻信號輸入,輸入模擬視頻信號被數字化為YUV422數字視頻格式。在輸出端,NVDK在支持復合視頻(CVBS)以及S-Video輸出的同時,還提供了SVGA輸出模式,可以直接將信號輸出到顯示器上。就圖像尺寸而言,視頻采集提供FULL、CIF和QCIF三種圖像格式,視頻輸出提供FULL和CIF兩種圖像格式。

·音頻特點:提供兩路雙聲道音頻輸出,CD音質的輸入輸出立體聲接口,另外還提供一路單聲道的麥克風輸入。

·主接口:提供了PCI接口,允許與PC機相連。該板既可以以PCI模式運行,也可以單獨脫機工作。

·網絡接口:以太網接口為視頻碼流的網絡傳輸帶來了方便。

·外部擴展存儲器:256M 64位寬擴展內存SDRAMA和8M 32位寬擴展內存SDRAMB及4MB FLASH ROM提供了足夠的內存空間和靈活的內存分配方案。

2 H.264視頻壓縮標準

H.264是由ITU-T 視頻編碼專家組(VCEG)和ISO/IEC移動圖像專家組(MPEG)共同提出的最新國際視頻編碼標準。它在H.261、H.263視頻壓縮標準的基礎上,進行了進一步的改進和擴展。其目的是為了進一步降低編碼碼率,提高壓縮效率,同時提供一個友好的網絡接口,使得視頻碼流更適合在網絡上傳送[2]。由于該標準可以提供更低的碼率,所以更適合應用于多媒體通信領域。

H.264主要有以下新特點:

·網絡適配層NAL(Network Abstraction Layer)。

傳統的視頻編碼編完的視頻碼流在任何應用領域下(無論用于存儲、傳輸等)都是統一的碼流模式,視頻碼流僅有視頻編碼層(Video Coding Layer)。而H.264根據不同應用增加不同的NAL片頭,以適應不同的網絡應用環境,減少碼流的傳輸差錯。

·幀內預測編碼模式(Intra Prediction Coding)。

幀內預測編碼合理地利用了I幀的空間冗余度,從而大大降低了I幀的編碼碼流。

·自適應塊大小編碼模式(Adaptive Block Size Coding)。

H.264允許使用16×16、16×8、8×16、8×8、8×4、4×8、4×4等子塊預測和編碼模式,采用更小的塊和自適應編碼的方式,使得預測殘差的數據量減少,進一步降低了碼率。

·高精度亞像素運動估計(High precision sub-pel Motion Estimation)。

H.264中明確提出了運動估計采用亞像素運動估計的方法,并制定1/4像素和1/8像素可選的運動估計方法。亞像素運動估計,提高了預測精度,同時降低了殘差的編碼碼率。

·多幀運動補償技術(Multi-frame Motion Compensation)。

傳統的視頻壓縮編碼采用一個(P幀)或兩個(B幀)解碼幀作為當前幀預測的參考幀。在H.264中,最多允許5個參考幀,通過在更多的參考幀里進行運動估計和補償,找到殘差更小的預測塊,降低編碼碼率。

·整形變換編碼(Inter Transform Coding)。

H.264采用整形變換代替DCT變換,整形變換采用定點運算代替浮點運算。采用這種變換,不僅可以降低編解碼的時間,而且,為該算法在多媒體處理平臺上實現帶來了方便。在這一點上,H.264視頻編碼標準更適合作為多媒體終端的編解碼標準。

·兩種可選擇熵編碼CAVLC和CABAC

CAVLC(Context-based Adaptive Variable Length Coding):基于內容的自適應變長編碼。

CABAC(Context-based Adaptive Binary Arithmetic Coding):自適應二進制算術編碼。

以往的視頻壓縮標準中,都采用Huffman編碼與變長編碼相結合的方法進行熵編碼。Huffman編碼雖然是一種很好用的熵編碼方法,但是其編碼效率并不是最高的,而且,Huffman編碼的抗差錯性能很低。H.264中采用了兩種可以選擇的熵編碼方法:CAVLC編碼抗差錯能力比較高,但是編碼效率不是很高;CABAC編碼是一種高效率的熵編碼方法,但是計算復雜度很高。兩者各有優缺點,所以針對不同的應用,選擇不同的編碼方法。

3 H.264解碼器算法的DSP實現和優化

3.1 在PC機上實現H.264算法并進行優化

ITU-T官方提供的H.264的核心算法不僅在代碼結構上需要改進,而且在具體的核心算法上也需要做大的改動,才能達到實時的要求。這一步需要做的具體工作包括:去處冗余代碼、規范程序結構、全局和局部變量的調整和重新定義、結構體的調整等。

3.2 PC機H.264代碼的DSP化

C6000開發工具Code Composer Studio有自己的ANSI C編譯器和優化器,并有自己的語法規則和定義,所以在DSP上實現H.264的算法要把PC機上C語言編寫的H.264代碼進行改動,使其完全符合DSP中C的規則。

這些改動包括:去除所有的文件操作;去除可視化界面的操作;合理安排內存空間的預留和分配;規范數據類型——因為C6416是定點DSP芯片,只支持四種數據類型:short型(16 bit)、int(32bits)、long型(40bits)和double型(64bits),因此必須對數據進行重新規范,把浮點數的運算部分近似用定點表示,或用定點實現浮點運算;根據內存的分配定義遠近程常量和變量;把常用的數據在數據結構中提取出來,以near型數據定義在DSP內部存儲空間,以減少對EMIF端口的讀取,從而提高速度。

3.3 H.264的DSP算法優化[3]

通過把PC機H.264代碼DSP化,可以在DSP上實現H.264的編解碼算法,但是,這樣實現的算法運行效率很低,因為所有的代碼都是由C語言編寫,并沒有完全利用DSP的各種性能。所以必須結合DSP本身的特點,對其進一步優化,才能實現H.264視頻解碼器算法對視頻圖像的實時處理。

對DSP代碼的優化共分為三個層次:項目級優化、C程序級優化、匯編程序級優化。

(1)項目級優化:主要是通過選擇CCS提供的編譯優化參數,根據H.264系統的要求進行優化,通過不斷地對各個參數( -mw -pm -o3 -mt等)的選擇、搭配、調整,改善循環、多重循環體的性能,進行軟件流水,從而提高軟件的并行性。

(2)C程序級優化:主要是針對采用的DSP的具體特點進行代碼的功能精簡、數據結構的優化、循環的優化、代碼的并行化處理。在這里主要工作包括以下部分:去除掉SNR計算、幀率及其他輔助信息的程序模塊。函數及數據映射區域的調整,把經常用的數據存儲在片內存儲器中,頻繁調用的程序盡可能映射在相鄰或相近的存儲區域。C函數的并行化處理,針對并行化效果差的函數,尤其是多重循環體,要進行循環拆解,將多重循環拆解為單重循環。減少存儲區數據的讀取和存儲,尤其是片外存儲區域數據的調用,以減少時間。數據結構的重定義和調整。

下面以數據結構的調整說明如何合理利用DSP特性進行軟件優化。

數據結構是指數據的類型及其在內存空間的分配方式,不同的數據結構,對程序的性能有不同的影響。因此,數據結構的調整對程序在DSP上并行執行是必不可少的步驟。

在H.264解碼器內核代碼中,數組mpr[i][j]用來存放一個宏塊的預測系數,數據類型是int型,其中i、j是該系數的坐標。但是預測系數實際上只有8位位寬,所以,定義成byte型就足夠了。這樣一方面節省了內存空間,另一方面,用byte類型可以直接使用LDW指令代替LDB指令,一次讀取4個數據,節省了讀取時間。因為H.264中對系數的讀取都是以塊為單位的,而內核中的mpr數據結構顯然不能充分利用DSP的特性,所以數據存儲結構也需要調整,把mpr中每一個塊分配到一個連續的內存空間有利于數據的傳送,如圖2所示。這樣,每一次確定了一個塊以后,只要更改一維的信息就能確定系數的位置,而原始的結構對每一個系數都有確定兩位系數。通過這樣的數據調整,可以明顯地提高程序的運行速度。

(3)匯編程序級優化。匯編級的優化包括兩部分:采用線性匯編語言進行優化和直接用匯編語言進行優化。由于系統編譯器的局限性,并不能將全部的函數都很好地優化,這樣就需要統計比較耗時的C語言函數,用匯編語言重新編寫。這些函數包括:插值函數、幀內預測函數、整形反變換等函數。

下面以差值函數中的一段來說明匯編編寫帶來的性能提高。

橫向1/2插值源代碼:

for (j = 0; j 《 BLOCK_SIZE; j++) {

for (i = 0; i 《 BLOCK_SIZE; i++) {

for (result = 0, x = -2; x 《 4; x++)

result += mref[ref_frame][ y_pos+j][ x_pos+i+x]*COEF[x+2];

block[i][j] = max(0, min(255, (result+16)/32));

}

}

該段代碼采用一個六階濾波器來插值1/2位置的像素值,共插出16個值(一個塊)。源代碼采用三重循環,內層循環是插值濾波器,如果直接用編譯器把源代碼編譯成匯編的話,內部循環都要反復讀取一些內存數據。采用匯編自己編寫,則可以改進算法,大大降低函數的運行時間。

如圖3所示,在插值第一個半像素位置時,要在內存中讀取1~6像素的值,插值第二個半像素位置時,要讀取2~7點的值,這樣,就反復讀取了2~5像素點的值,而且,插值一個點需要進行6次乘法、5次加法。用匯編語言編寫,手工排流水線,可以降低數據的讀取次數,同時減少了乘、加法指令數。首先,采用LDNW指令直接讀取8個數據到寄存器中,每次插值直接使用寄存器而不再去內存中讀取數據。另外,采用DOTPSU4乘累加命令代替MPL指令,將四次乘法和3次加法用一條指令來代替,減少了指令數目。

通過以上各種優化方法,最終實現了基于C6416內核的H.264 baseline解碼器算法。

4 算法性能的評測及前景展望

在NVDK C6416環境下,測試了解碼器算法,對QCIF測試序列,已經能夠達到50~60幀/秒的解碼速度,遠遠達到了實時性解碼的目的。

在NVDK C6416板卡上實現的H.264視頻解碼器具有功能強、使用靈活等特點,有廣泛的應用前景。該優化的算法不僅適用于NVDK板,對于所有的C64開發板都具有通用性,只要根據板卡的內存分配,重新配置內存參數文件,便可以把該算法移植到新的開發板中。該H.264視頻解碼器與網絡平臺相連接便可以應用于視頻會議、可視電話、無線流媒體通信等應用領域。

責任編輯:gt

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19829

    瀏覽量

    233867
  • dsp
    dsp
    +關注

    關注

    556

    文章

    8148

    瀏覽量

    355750
  • 芯片
    +關注

    關注

    459

    文章

    52282

    瀏覽量

    437485
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    基于RK3576處理器,EASY EAI Orin Nano開發板免費試用

    8K@30fps的H.265,VP9AVS2 和 AV1解碼器,4k@60fps的H.264 解碼器和4K@60fps的AV1解碼器;還支持
    的頭像 發表于 06-09 15:01 ?228次閱讀
    基于RK3576<b class='flag-5'>處理</b>器,EASY EAI Orin Nano開發板免費試用

    iTOP-3588開發板采用瑞芯微RK3588處理器四核心架構GPU內置獨立NPU強大的視頻編解碼

    的視頻編解碼 8K編碼+8K解碼,多路視頻源同時解碼。支持8K@60fps H.265/H.264/VP9/AV1視頻
    發表于 04-09 16:09

    全志T527處理器參數

    .265 MP 和 VP9 解碼器,支持最高 4K@60fps 分辨率 H.264 BL/MP/HP 解碼器,支持最高 4K@30fps 分辨率 H.264 BP/MP/HP 編碼器,
    發表于 02-13 10:20

    RV1108處理器核心特性與應用概述

    (WDR)功能,能夠捕捉更加清晰、細膩的圖像。它還支持1440P@30fps的H.264視頻解碼和編碼,為用戶帶
    的頭像 發表于 02-08 17:20 ?965次閱讀

    RK3326處理器:高效能多媒體處理核心

    和高效性。 高清視頻解碼能力:支持1080P分辨率的H.265/H.264/VC-1/MPEG/VP8視頻解碼,帶來細膩清晰的畫質體驗。 視頻編碼
    的頭像 發表于 02-07 18:21 ?1856次閱讀

    RK1808處理器:高效能多媒體與AI加速解決方案

    。 高性能NPU:內置高性能神經網絡處理器(NPU),專為人工智能應用提供強大的加速能力,提升處理效率。 大容量系統緩存:配備2MB系統SRAM,確保數據處理的高速性和穩定性。 高清視頻編解碼
    的頭像 發表于 02-07 18:17 ?1205次閱讀

    MTK8786_MT8786處理器性能參數_MTK聯發科安卓核心板方案

    器內置Arm Mali-G52 GPU,工作頻率可達到950MHz,能夠支持2K@30fps的視頻編碼和解碼,同時兼容H.264H.265編碼格式。其最大支持顯示分
    的頭像 發表于 01-09 20:18 ?2059次閱讀
    MTK8786_MT8786<b class='flag-5'>處理</b>器性能參數_MTK聯發科安卓核心板方案

    迅為RK3568開發板學習與研發輕松勝任丨5000+頁手冊文檔丨740期視頻教程丨426G開發板資料

    應用。 高性能VPU支持4K60幀視頻解碼,多路視頻源同時解碼H.265/H.264/VP9/VP8視頻解碼和1080p 100fps
    發表于 12-19 10:54

    迅為iTOP-RK3568開發板獨立NPU通過算法加特應用到以下的場景

    ,多路視頻源同時解碼H.265/H.264/VP9/VP8視頻解碼和1080p 100fps H.265/
    發表于 12-06 10:48

    TMS320DM365 H.264編碼器的應用程序參數設置

    電子發燒友網站提供《TMS320DM365 H.264編碼器的應用程序參數設置.pdf》資料免費下載
    發表于 10-14 11:37 ?0次下載
    TMS320DM365 <b class='flag-5'>H.264</b>編碼器的應用程序參數設置

    了解面向MS320DM365的H.264解碼器緩沖機制

    電子發燒友網站提供《了解面向MS320DM365的H.264解碼器緩沖機制.pdf》資料免費下載
    發表于 10-14 10:57 ?0次下載
    了解面向MS320DM365的<b class='flag-5'>H.264</b><b class='flag-5'>解碼</b>器緩沖機制

    基于全志V853處理器的智能輔助駕駛算法介紹

    全志V853處理器,是專為智慧視覺領域設計的AI處理器,配備了高效的NPU算力和豐富的外設接口,能夠提供穩定的AI邊緣計算支持;同時,基于V853處理器這一性能優勢,全志還為客戶提供了一整套完整的智能輔助駕駛
    的頭像 發表于 09-14 09:23 ?1705次閱讀
    基于全志V853<b class='flag-5'>處理</b>器的智能輔助駕駛<b class='flag-5'>算法</b>介紹

    【技術分享】H.264H.265的區別,二者應該如何選擇?

    啟明智顯的國產工業級HMI芯片Model4集成圖形、視頻顯示和編解碼相關的硬件模塊,支持H.264視頻解碼器,能夠為高清視頻播放提供強大的硬件基礎。H.264兼容性廣,也能節省空間和帶
    的頭像 發表于 07-30 16:41 ?2632次閱讀
    【技術分享】<b class='flag-5'>H.264</b> 與<b class='flag-5'>H</b>.265的區別,二者應該如何選擇?

    迅為RK3568開發板預裝Android12系統

    應用。 高性能VPU支持4K60幀視頻解碼,多路視頻源同時解碼H.265/H.264/VP9/VP8視頻解碼和1080p 100fps
    發表于 07-20 10:49

    教您在79元ARM平臺實現H.265視頻解碼

    是ITU-TVCEG繼H.264之后所制定的視頻編碼標準。H.265標準主要是圍繞著現有的視頻編碼標準H.264,在保留了原有的某些技術外,增加能夠改善碼流、編碼質量、延時及算法復雜度
    發表于 07-17 10:46
    主站蜘蛛池模板: 久久综合中文字幕 | 69国产成人精品午夜福中文 | 毛片毛片毛片毛片毛片毛片 | 特黄视频| 99久久免费精品国产免费高清 | 亚洲天堂一区二区三区 | 亚洲第一免费播放区 | 麻豆美女大尺度啪啪 | 五月婷婷丁香在线观看 | 成年片色大黄全免费 | 午夜精品久久久久久久第一页 | a级毛片毛片免费很很综合 a级男女性高爱潮高清试 | 99久久综合精品免费 | 俺去啦网婷婷 | www视频在线观看天堂 | 狠狠色狠狠色综合日日不卡 | 开心丁香婷婷深爱五月 | 深夜影院一级毛片 | 特黄色一级毛片 | 久久久久久夜精品精品免费 | 国产精品午夜国产小视频 | 日本不卡一区二区三区在线观看 | 成人深夜视频 | 亚洲天堂社区 | 亚洲伊人色一综合网 | xxxxxxxxxxx性bbbb| 丁香视频在线观看播放 | 99久热只有精品视频免费观看17 | 四虎www成人影院观看 | 天天干天天干天天色 | 国产精品 视频一区 二区三区 | 免费大片黄日本在线观看 | 香港三级理论在线观看网站 | 日韩毛片高清免费 | 夜夜骑首页 | 天天插夜夜 | 五月婷婷丁香在线视频 | 欧美人与动欧交视频 | 五月综合色婷婷影院在线观看 | 经典三级四虎在线观看 | 精品伊人久久大香线蕉网站 |