AVS 幀內預測模式的匯編優化

王瑞*

  基金項目:本課題得到國家自然科學基金資助項目基金(項目編號:60772101)的資助。

  作者簡介:王瑞(1986—), 男, 山東萊蕪人, 碩士, 主要從事視頻壓縮方面的研究. E-mail:wangruityut@163.com(太原理工大學 信息工程學院,太原 030024)

  摘要:幀內預測是AVS 編碼器中十分耗時的模塊,因此,合理的優化這一模塊對AVS 編碼器的實時實現具有十分重要的意義。本文根據每種幀內預測模式的特點將其分為三大類,并在TMS320CDM####46 上如何用匯編實現做了詳細分析,重新 設計了程序結構,優化后的數據顯示,在不影響圖像質量的前提下,匯編代碼在時鐘周期上效率大幅提高,耗時僅為C 代碼的30%,優化效果相當明顯。

  關鍵詞: TMS320CDM####46;幀內預測;AVS 實時編碼

  中圖分類號:TN624Optimize Intra Predicition of AVS by assembly languageWANG Rui(College of Information Engineering,Taiyuan University of Technology Taiyuan, Taiyuan 030024)

  Abstract: Intra prediction is one of the most time-consuming model in AVS encoder, therefore,optimizing this module reasonably is very significant to realize the real-time AVS encoding.This divide all intra prediction modes into three categories according to the characteristics of each mode,and do a detailed analysis about various mode of intra prediction model with assembly language onTMS320CDM####46, and redesign the program structure, It demonstrates that the assembly code has anotable increase of the clock cycle efficiency.Under the premise of not affecting the image quality, theassembly code‘s time-consuming is only 30% of C code and the optimization is obvious.

  Key words: TMS320CDM####46;Intra Predicition;AVS real time encoding

  0 引言

  AVS(Audio Video coding Standard)標準是我國具備自主知識產權的第二代信源編碼標準[1]。它的編碼效率與MPEG-4/H.2#### 相當,但是計算復雜度與 專利費用低,因此在DSP 上實時實現高分辨率視頻編碼實例是業界努力攻克的目標。本文以TMS320DM####46 為 開發平臺,重點分析了AVS 的幀內預測編碼模塊,并使用匯編 語言對其進行優化,對實時性的實現十分有利。

  1 TMS320CDM6000 系列DSP 特點及匯編介紹

  TMS320C6000 DSP 具有最高800MIPS 的運算性能和高效的C 編譯器。其內核CPU 由兩個寄存器組A 和B 組成,每組包含32 個寄存器;內部有8 個功能單元包括2 個乘法器和

  6 個算術邏輯單元。C####x+ DSP 具有高級的VLIW(Very Long Instruction Word)體系結構。

  VLIW 描述了一種指令集思想[2]。在這種指令集中,編譯器把許多簡單、獨立的指令組合到一條指令字中。當這些指令字從Cache 或內存中取出放到處理器中時,它們被容易地分解成幾條簡單的指令。這些簡單的指令被分派到一些獨立的執行單元去執行。C####x+ CPU 一般情況下能將8 條指令組合到一條指令字中,如圖2-1 所示:圖1 取指包的基本形式Figure1 Basic Format of a Fetch Packet取指包里的八條指令的執行由最低比特位p 控制。p 的值決定兩條指令是否并行執行。在C####x+ DSP 中,p 比特的掃描過程遵循從左到右的原則,也就是從低地址位到高地址位的順序,如圖3-2 中,順序為從指令A 到指令H。如果第i 條指令的p=1,則代表該指令與第i+1 條指令是并行執行的,否則,如果第i 條指令的p=0,則代表該指令與第i+1 條指令不是并行的。一個取指包里所有能夠并行執行的指令組成一個執行包。每個執行包里的指令使用的功能單元是互不相同的。一般情況下,通過編寫線性匯編代碼,然后再通過匯編優化器進行優化,也能達到一個滿意的程度。但是對實時性要求比較高的地方,這個優化程度還是遠遠不夠的。因此,需要進一步考慮代碼的特點,充分利用C####x+ DSP 的資源安排并行指令,合理安排流水結構,才能最大限度的優化需要的匯編代碼。線性匯編與匯編的主要區別是:匯編需要指定并行指令;匯編需要考慮寄存器的使用;匯編需要考慮指令的延時周期;匯編需要考慮功能單元的使用情況;匯編需要自己安排流水線[3]。因此,匯編代碼的編寫主要有以下優化策略:配合功能單元,利用SIMD、VLIW 思想盡量寫并行代碼,使得8 個功能單元的利用率都很高;A、B 通道并行,合理使用交叉通路;實現同樣操作盡量用數據相關性小易于形成 軟件流水的指令,盡量用最少周期的指令,盡量用特殊指令(一般效率比較高)例如:循環體實現一個操作 val = is<0? -val : val,可以用比較和跳轉指令實現但破壞軟件流水效率低,可以通過比較擴展求或操作得到一個-1 或1 的數,再用乘運算實現這個操作,雖然周期長了一些,但能形成軟件流水,實際提高了效率。

  2 AVS 幀內預測及其匯編優化

  AVS 幀內預測是基于空間域的預測,即利用周圍已編碼塊的重建像素值濾波得到當前塊的像素預測值。AVS 編碼標準在傳統的幀內編碼技術的基礎上,充分利用了圖像在局部空間上的高度相關性來去除圖像的空間冗余性,然后再對預測殘差圖像進行變換編碼,有效提高了圖像幀內編碼的效率。AVS 的亮度和色度都使用8×8 的預測塊,且亮度和色度預測模式分別為5 種和4 種,但是根據宏塊周圍塊的存在情況,在AVS 中實際上亮度預測模式有8 種不同的算法,而在色度中7 種不同的算法。但是總體上可以大致分為以下幾類:1)賦值運算 亮度和色度模式0,模式DC_Top 為垂直賦值;亮度和色度的模式1,DC_Left 為水平賦值;亮度和色度模式DC_128 為常數賦值。這一類總體思路一樣,都采用STDW 指令,一次可以完成一行的賦值。色度DC_Top 和DC_Left 的所需賦的值需要由加權平均運算指令DOTPUS4 求得,其他與亮度相同。如給整個8×8 塊賦值128 的運算的匯編代碼如下,一次加載8 個數。MVKL 0x80808080,r0MVKH 0x80808080,r0MV r0 , r1STDW r1:r0, *dst++2)要求平均值或加權平均的運算 亮度模式DC_All 和色度模式DC_All,模式3。對亮度模式DC_All,將top 和left 用LDDW 指令分別一次讀進來,并把讀進來的left 值解包,并把解包的每個值再分別打包,共八個值left[0] 到left[7],將這八個值分別與top 相加并移位,用指令AVGU4,這樣可能會存在大1 的誤差。解決誤差的方法是用SUBABS4 將top值都減1 后再用指令AVGU4 與left 操作得到DST,這樣的話僅top 值為0 時可能存在誤差。圖2 僅top=0 時可能含有誤差的算法Figure2 the algorithm only top= 0 may contain error然后采用比較法消除0 值誤差,即先用top 值與0 值比較,用指令CMPGTU4,得到CMP1,再用XPND4 將其展開并用NOT 取反,將此值與01010101H 相與,得到CMP1,最后用DST 減去CMP1 就消除了誤差得到最終結果。色度與亮度模式DC_All 的主要區別就是所需要的值要由臨近top 和left 的值用DOTPUS4 指令加權平均求出。對于色度模式3,主要思路就是用DOTPUS4 指令求得a,b,c 的值,對于中間過程則采用16 位運算指令SADDSUB2,SHR2 等,最后通過SPACKU4 指令把結果飽和為8 位。3)要進行移位運算。如亮度中的模式3 和模式4,采用的是左上和左下的預測方式,即45°角方向的賦值是一樣的。對于亮度模式3 ,所需賦的值是top 和left 的均值,所以本文首先兩次利用取雙字指令LDDW 一次性將我們需要的值全部取出后,采用模式2 中所用的方法求得所需賦的值,然后利用移位指令,不斷地組合出下一行的數進行賦值,利用存雙字指令STDW 一次存進內存中。亮度模式4 所需賦的值可以直接取出,然后用移位組合出下一行的數。這樣的做法明顯提高了數據的利用率,減小了算法的復雜性。

  3 實驗結果分析

  表1 幀內預測實驗結果Table1 Intra Predicition Experiment Result幀內預測模式 優化的C(CPU 數)匯編(CPU 數)模式0(vetical) 32 13模式1(horizontal) 43 18DC_128 22 11DC_Top 32 13DC_Left 43 18模式2(DC)DC_All 93 31模式3(Down_Left) 88 25亮度模式4 (Down_Right) 73 15模式0(vetical) 32 13模式1(horizontal) 43 18DC_128 22 11DC_Top 96 27DC_Left 78 25模式2(DC)DC_All 139 46色度模式3(Plane) 1#### 48從表1 的實驗結果可以看出,通過匯編優化后,各個模式全部有很大程度的降低,與優化過的C 相比降低幅度均在50%以上,相比于線性匯編優化結果其CPU 周期數也有很大程度的下降,降低幅度大部分在30%到50%之間。因此,對實時性要求比較高的編碼器而言,匯編能極大地提高運算速度,縮短計算時間。

  4 結論

  本文用匯編實現了幀內預測的各種模式,在不影響圖像質量的情況下有效的提高了編碼速率。本實驗證明,利用DSP 匯編指令實現AVS 耗時模塊可極大節省計算時間,為AVS在TMS320DM####46 上實時實現提供了更大的保障。

  [參考文獻] (References)

  [1]《AVS 視頻(報批最終稿)》(標準號GB/T 200090.2-2006) 信息技術先進音視頻編碼第2 部分:視頻[S].

  [2] TMS320C####x/C####x+ DSP CPU and Instruction Set Reference Guide. Literature Number: SPRU732A June2005

  [3] TMS320C6000 Optimizing Compiler v 6.1 User‘s Guide. Literature Number: SPRU187O May 2008
中國論文中心http://www.wenlun.com 警告:未經本站許可不得采集本站論文內容作為自己網站的資源!(如需要轉載請說明出自:http://www.wenlun.com/lwcs/so_article.asp?id=11050680156)
如果本文不完整,請點擊這里查看AVS 幀內預測模式的匯編優化的其它內容?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/454474.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/454474.shtml
英文地址,請注明出處:http://en.pswp.cn/news/454474.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ltsc系統激活_WIN10_X64企業版LTSC 電腦公司裝機版 202008

文件: WIN10_X64_LTSC_ZJ202008.esd大小: 7431429353 字節(6.92G)MD5: A3A3B15ED47216E177C924D2E07E0799SHA1: 3A647265E0C8234225C633407093BAA07253FB34CRC32: 32E791E9(注意&#xff0c;下載文件有一定幾率損壞&#xff0c;如文件值不對請重新下載&#xff01;)360安全云盤…

大學計算機應用基礎考試題庫,大學計算機應用基礎考試題庫

綜合模擬(四)一、選擇題。1、完整的計算機硬件系統一般包括外部設備和 C 。A、運算器的控制器 B、存儲器 C、主機 D、中央處理器2、計算機能夠自動工作&#xff0c;主要是因為采用了 D 。A、二進制數制 B、高速電子元件 C、存儲程序控制 D、程序設計語言3、下面哪能一組是系統軟…

Lombok 使用小結

Lombok 使用小結 Lombok 簡介Lombok 安裝Lombok 使用 API示例示例源碼引用和引申Lombok 簡介 Lombok 是一種 Java 實用工具&#xff0c;可用來幫助開發人員消除 Java 的冗長&#xff0c;尤其是對于簡單的 Java 對象&#xff08;POJO&#xff09;。它通過注釋實現這一目的。通過…

html表單input file,input標簽type=file的文件上傳

一&#xff0c;通過表單提交的方式該提交方式只是提交普通表單&#xff1b;對于file組所選中的文件內容是不上傳的&#xff0c;因此需要設置&#xff1a;enctype屬性enctype"multipart/form-data"如果想上傳多文件&#xff0c;可添加multiple二&#xff0c;通過Ajax異…

AVS游程解碼、反掃描、反量化和反變換優化設計

中圖分類號:TN919.81   文獻標識碼:A   文章編號:1009-2552 (2007) 02-0054-04AVS游程解碼、反掃描、反量化和反變換優化設計趙 策, 劉佩林(上海交通大學電子工程系, 上海200240)摘 要: 提出了一種適用于AVS的游程解碼、反掃描、反量化和反變換硬件結構優化設計方案。根據…

Django REST framework介紹

現在前后端分離的架構設計越來越流行&#xff0c;業界甚至出現了API優先的趨勢。 顯然API開發已經成為后端程序員的必備技能了&#xff0c;那作為Python程序員特別是把Django作為自己主要的開發框架的程序員&#xff0c;Django REST framework&#xff08;DRF&#xff09;這個…

zabbix 安裝_安裝zabbix

準備一個純凈環境10.0.0.99首先修改yum源&#xff0c;修改為zabbix清華源&#xff0c;清華源玉zabbix官方源都是同步的&#xff0c;下載速度更快&#xff01;zabbix官方Download Zabbix?www.zabbix.com點擊下載&#xff0c;下面有zabbix的歷史版本以及官方安裝文檔可以查看到不…

拓展歐幾里得 [Noi2002]Savage

對于一個野人&#xff0c;他&#xff08;她&#xff1f;&#xff09;所在的位置&#xff0c;&#xff08;C[i]x*p[i]&#xff09;%ans,是的&#xff0c;暴力枚舉每一個ans&#xff0c;用拓展歐幾里得求出每兩個wildpeople(wildrage?)相遇的年份&#xff0c;如果小于最小的壽限…

CCNP-19 IS-IS試驗2(BSCI)

CCNP-19 IS-IS試驗2 實驗拓撲&#xff1a;試驗要求&#xff1a;R1 R2 R3全部采用集成的ISIS路由協議&#xff0c;R1 R2在區域49.0001內&#xff0c;R3在區域49.0002內&#xff0c;R1與R2之間的鏈路類型為L1&#xff0c;R2與R3之間的鏈路類型為L2。 試驗目的&#xff1a;掌握基…

正道的光用計算機,正道的光作文500字

當那熟悉的轟天巨雷般的呼嚕聲響起&#xff0c;我就知道&#xff0c;這又是睡不著的一天。同樣在宿舍&#xff1b;同樣是小翟&#xff1b;同樣的時間&#xff1b;同樣在我昏昏欲睡的時候&#xff0c;那個熟悉的呼嚕聲&#xff0c;它又來了。它將我從即將到來的美夢中驚醒了&…

AVS高清立體視頻編碼器

一、成果項目背景 電視技術在經歷了從黑白到彩色、從模擬到數字的技術變革之后正在醞釀另一場技術革命&#xff0c;從單純觀看二維場景的平面電視跨越到展現三維場景的立體電視。立體電視&#xff0c;又稱三維電視(3DTV)&#xff0c;提供了更為豐富的視覺信息和更具臨場感的觀…

RESTful介紹

RESTful介紹 REST與技術無關&#xff0c;代表的是一種軟件架構風格&#xff0c;REST是Representational State Transfer的簡稱&#xff0c;中文翻譯為“表征狀態轉移”或“表現層狀態轉化”。阮一峰 理解RESTful架構 RESTful API設計指南 阮一峰 RESTful設計指南 API與用戶…

dijkstra算法代碼_數據科學家需要知道的5種圖算法(附代碼)

在本文中&#xff0c;我將討論一些你應該知道的最重要的圖算法&#xff0c;以及如何使用Python實現它們。作者&#xff1a;AI公園導讀因為圖分析是數據科學家的未來。作為數據科學家&#xff0c;我們對pandas、SQL或任何其他關系數據庫非常熟悉。我們習慣于將用戶的屬性以列的形…

大暴搜 chess

仔細讀題&#xff0c;會發現吃掉敵人點對方案數的貢獻很神奇。如果走的空格相同&#xff0c;而走的敵人點不同&#xff0c;對答案無貢獻&#xff0c;而對于走的空格相同&#xff0c;但一種走了敵人點&#xff0c;另一種沒走&#xff0c;算兩個方案。。。。sb出題人語文簡直是和…

網站的SEO以及它和站長工具的之間秘密

博客遷移沒有注意 URL 地址的變化&#xff0c;導致百度和 google 這兩只爬蟲引擎短時間內找不到路。近段時間研究了下國內最大搜索引擎百度和國際最大搜索引擎google的站長工具&#xff0c;說下感受。 百度的站長工具地址&#xff1a;http://zhanzhang.baidu.com/dashboard/ind…

html 縮略圖點擊預覽,[每天進步一點點~] uni-app 點擊圖片實現預覽圖片列表

點擊圖片&#xff0c;實現預覽圖片功能&#xff0c;并且可循環預覽圖片列表&#xff01;image.png一、多張圖片預覽html代碼js代碼data(){return {photos:[{ src: 圖片路徑1},{ src: 圖片路徑2},{ src: 圖片路徑3},……]}},methods: {// 預覽圖片previewImage(index) {let phot…

git ssh拉取代碼_阿里云搭建git服務器

一.搭建步驟&#xff0c;分為兩步搭建中心倉庫自動同步代碼到站點目錄二.詳細步驟如下1.先檢查一下服務器上有沒有安裝gitgit --version如果出現版本號&#xff0c;說明服務器已經安裝git&#xff0c;如圖所示&#xff1a;2.如果沒有版本信息&#xff0c;則先安裝git&#xff1…

Django REST framework 序列化

創建一個序列化類 使用序列化有四種方式 使用json模塊&#xff0c;完全手寫使用django自帶的序列化模塊 1&#xff0c;# from django.core import serializers 2&#xff0c;# dataserializers.serialize(“json”,book_list)使用REST framework 帶的序列化方法&#xff0c…

基于SIMD的AVS整數反變換算法設計與優化

基于SIMD 的AVS 整數反變換算法設計與優化王玲娟&#xff0c;張剛**作者簡介&#xff1a;王玲娟&#xff0c;&#xff08;1987-&#xff09;&#xff0c;女&#xff0c;在讀碩士&#xff0c;主要研究方向&#xff1a;視頻解碼算法通信聯系人&#xff1a;張剛&#xff0c;&#…

Word -- 列表重新編號

Word -- 列表重新編號office一言&#xff1a;我小心翼翼地灌溉&#xff0c;一日復一日地期待&#xff0c;那么費力&#xff0c;植成參天的喬木&#xff0c;豈愿見你終有一日從容赴死&#xff1f;問題 word 文檔早就想解決的一個問題&#xff0c;這次遇到了就上網找解決掉了&…