欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
基于dm642的H.264的算法改進(jìn)

說(shuō)到一種編碼方式在芯片上作優(yōu)化,首先要做的事情就是要完全了解這個(gè)芯片,在做優(yōu)化工作之初,我先看了將近一周時(shí)間的datasheet, 而且由于我本身屬于硬件出身的人, 對這些了解的可能更深入一些, 所以這部分并沒(méi)有讓我吃苦頭,簡(jiǎn)單過(guò)了.不過(guò)即便如此說(shuō),我仍然覺(jué)得開(kāi)始優(yōu)化前必須了解DM642的基本結構,片內的通用寄存器情況,cache情況,dma情況,指令流水情況.

 

然后重要的就是編碼原理了, 在做優(yōu)化前我從來(lái)沒(méi)接觸過(guò)編碼, 對我來(lái)說(shuō)這個(gè)部分很陌生,用了將近一個(gè)月時(shí)間專(zhuān)門(mén)看編碼的標準和代碼, 也許很多人并沒(méi)有作這部分工作, 但我覺(jué)得這部分時(shí)間花的值得, 深入了解一下編碼以及要優(yōu)化的東西對以后的數據結構設計和程序結構設計都有很大的幫助,最起碼對我來(lái)說(shuō)這是我做設計的基礎,優(yōu)化工作結束后的我正在寫(xiě)一份自己的編碼器和解碼器.

 

在然后就是真正的優(yōu)化工作了,這部分比較枯燥,不過(guò)堅持下來(lái)收獲很大。在這個(gè)部分上我的經(jīng)驗就是一直保持PC上的優(yōu)化先行,DSP跟上的方式。這樣對以后程序出現錯誤時(shí)的調試很有幫助,畢竟DSP調試受限于調試速度,而且調試遠不如PC方便。

 

我優(yōu)化的時(shí)候始終保持著(zhù)編碼代碼的重建幀數據與解碼重建數據完全一致,其實(shí)這個(gè)不是必要的,對很多情況來(lái)說(shuō),不完全一致也看不出來(lái)的問(wèn)題,這個(gè)可能是小bug而不是致命錯誤,但是為了避免致命bug的出現,我還是一致保持了編解碼的一致性。

 

再以后就是具體問(wèn)題了,下面的章節中具體問(wèn)題具體分析了。

 

總體而言,我優(yōu)化工作的流程為:熟悉DSP->熟悉編碼->設計程序結構和數據結構->按照設計方式修改PC端代碼的->對照PC修改DSP代碼。
 
由于是在TI的DM642上做優(yōu)化,所以必須先了解DM642,個(gè)人認為需要知道的有以下幾個(gè)方面
1、DM642的通用寄存器,了解了這個(gè)部分才能確定每次進(jìn)出寄存器的數據數量。DM642有2個(gè)通用寄存器組(A和B),每個(gè)寄存器組包含32個(gè)32位寄存器,其中相鄰寄存器可以組成寄存器對。
2、DM642有EDMA,可以與CPU并行工作,相當于擁有了一個(gè)只能提供搬運功能的協(xié)處理器。
3、DM642片內的SRAM(256K)可以配置成為Cache,也可以做為SRAM使用,具體如何使用可以自行配置,常用的配置是配置成為4路cache,占據64k空間,其余空間按照SRAM的方式使用,擺放放在片內的程序和數據。
4、需要了解DM642訪(fǎng)問(wèn)片內和片外的速度的差距。
5、需要了解DM642片內的L1D和L1P的結構,知道DM642是如何處理數據沖突和程序沖突的。
6、需要了解CPU和EDMA同時(shí)訪(fǎng)問(wèn)數據產(chǎn)生的同步問(wèn)題。
7、個(gè)人推薦最好了解一些視頻驅動(dòng)方面的知識。
 

由于需要做的是H.264編碼,那么需要做的大量工作都是圍繞編碼進(jìn)行的,需要了解編碼的具體細節,也許不了解編碼也能做優(yōu)化,但絕對做不好優(yōu)化。

編碼的原理部分個(gè)人比較推薦《新一代視頻壓縮編碼標準H.264》這本書(shū),作者是畢厚杰,這本書(shū)里面是有一些錯誤,但是原理部分的東西講的比較清楚,看過(guò)以后編碼框架大致都了解了。

其實(shí)就是標準,然后就是一定要花大力氣去了解代碼,這樣才能真的去理解編碼的細節。

這里面有兩個(gè)問(wèn)題,首先就是網(wǎng)上有很多H.264編碼的資料,究竟需不需要。個(gè)人認為是因人而異的,從我自己的角度出發(fā),我不是一個(gè)喜歡接受別人思想的人,在看編碼的初期也去下載了很多資料,結果幾乎都沒(méi)怎么看,直到第一遍優(yōu)化做過(guò)以后再看看才覺(jué)得比較有收獲。第二個(gè)就是編碼優(yōu)化的核心問(wèn)題——從哪一份代碼入手比較方便,通常來(lái)說(shuō)我實(shí)在不推薦從JM代碼入手,它的功能太強大了,很多東西根本無(wú)法在DSP上應用,甚至可以說(shuō)它根本無(wú)法在日常生活中應用,它實(shí)現了標準的所有細節,但是太復雜了,使用一般水平的PC編碼需要幾分鐘才能編碼一幀,這個(gè)速度無(wú)法做到實(shí)時(shí),它更是一個(gè)研究階段的產(chǎn)物。我是從T642開(kāi)始看代碼的,然后仔細研究了X642,這兩份代碼差異不大,不過(guò)T642維護的不好,所以我的主要參考代碼是X264,在理清楚了編碼細節以后我看了JM的代碼,發(fā)現即使有編碼的基礎了,JM的代碼理解起來(lái)還是比較麻煩的,不過(guò)這時(shí)的麻煩主要在代碼風(fēng)格方面和代碼冗余方面了。

至于對h.264了解多少以后再開(kāi)始做優(yōu)化的數據結構設計和程序結構設計,我覺(jué)得至少要保證在腦海里想一下幀內和幀間編碼的過(guò)程、每個(gè)過(guò)程需要的數據以及寫(xiě)出數據的格式能夠完全不卡,這樣就可以開(kāi)始做設計了
 
在做程序和數據設計前要弄清楚幾個(gè)基本問(wèn)題
1、編碼方式采用哪一種?是cavlc還是cabac,我使用的是cavlc,cabac的壓縮性能更強,但是相對復雜度更高,為了多壓縮10% ~ 20%的碼率而增加50%左右的復雜度是得不償失,尤其我的優(yōu)化目標是8路cif,使用cabac不可能做得到。
2、如何減少判斷,這個(gè)對編碼速度影響非常大,且不說(shuō)每條判斷語(yǔ)句需要5個(gè)周期,單是每次遇到判斷就打斷軟件流水,這大大影響了編碼速度
3、要理解軟件流水的概念。
4、要利用好dma。
5、cache命中率非常重要。
針對以上的問(wèn)題,我的程序和數據結構設計如下
1、每次從片外讀取一個(gè)宏塊進(jìn)行編碼而不是常用的讀取一行宏塊進(jìn)行編碼,這樣提高了cache的命中率。
2、使用乒乓結構,即在編碼乒宏塊數據的時(shí)候開(kāi)始從片外dma進(jìn)來(lái)乓宏塊數據,做到dma和cpu并行操作。
3、采用了x264的那個(gè)cache結構體,將每個(gè)宏塊編碼過(guò)程中需要的數據完全寫(xiě)入了這個(gè)cache結構體中,便于寫(xiě)cavlc數據使用。
4、擴大了每個(gè)宏塊對應的重建宏塊的大小,并使用這個(gè)重建宏塊多的部分寫(xiě)入I幀預測需要的數據。
5、搜索窗范圍為48x48并同時(shí)使用dma的乒乓結構,這樣dma的壓力不大,而且搜索數據在片內, 提高了數據命中率。
6、設計結構體保存了插值數據,避免反復插值的過(guò)程。
7、所有宏塊需要的判斷盡量在同一個(gè)函數內完成,避免影響以后的程序效率。
其實(shí)我覺(jué)得最重要的就是要是用好cache結構體,如果能理解x264的cache結構體,那么對自己做程序和數據設計大有好處。
 
數據和程序結構體設計完成后就要開(kāi)始在PC是用VC++去實(shí)現了,為什么使用VC++實(shí)現,其實(shí)這并不是一個(gè)必須的,只是我比較習慣VC++而且覺(jué)得它比較好調試罷了。這部分工作我用了將近兩個(gè)月的時(shí)間,不過(guò)這兩個(gè)月過(guò)后編碼的過(guò)程我幾乎已經(jīng)了解的差不多了,在DSP上作優(yōu)化也就順手了,所以我覺(jué)得這部分時(shí)間花的值得。同時(shí)再這部分中確定了編碼器所支持的功能和使用的具體技術(shù)細節。由于有高人指導,沒(méi)走多少彎路,搜索范圍確定為48x48,P幀使用半像素搜索,不采用1/4像素搜索,B幀中只使用整像素搜索。濾波方面不使用環(huán)路濾波,采用簡(jiǎn)單的濾波方法,這個(gè)問(wèn)題上指導我的人不讓我多說(shuō),他說(shuō)比較丟人,呵呵,不過(guò)加上環(huán)路濾波的話(huà)整體速度會(huì )有1ms的下降。使用了零塊預判算法,不過(guò)這個(gè)算法不是我加上的,所以我了解不多,不過(guò)據說(shuō)這個(gè)已經(jīng)是公開(kāi)的秘密了,打算過(guò)段時(shí)間研究一下。這些工作做完后PC端的事情也就差不多了。
 

當PC端實(shí)現了預期設計后就可以開(kāi)始著(zhù)手DSP端的代碼實(shí)現了,DSP端可以完全使用PC端的代碼,不過(guò)DSP端還是會(huì )遇到不少問(wèn)題,所以我建議可以先做一個(gè)小的測試工程,也就是先別把視頻采集部分的代碼合到一起去,可以通過(guò)讀文件的方式編碼測試序列,然后與PC端的做對比,然后在這個(gè)小工程下進(jìn)行優(yōu)化,等到一切結束后再整合代碼也來(lái)得及。

下一步工作就是真的開(kāi)始優(yōu)化代碼了,首先去掉一切冗余計算,然后開(kāi)始處理具體數據了,第一個(gè)需要處理的就是片內寄存器的數據量問(wèn)題,編碼最終是對4x4塊進(jìn)行操作,4x4的數據可以直接在寄存器內完成所有計算,所以做DCT、量化、zigzag、IDCT、 反量化最好能在一個(gè)函數中完成,這樣就不會(huì )涉及到寄存器數據重復導入和導出的問(wèn)題了。第二個(gè)就是線(xiàn)性匯編的問(wèn)題了,關(guān)于線(xiàn)性匯編這里就不重復了,其實(shí)大多時(shí)間都是一些基本操作,在TI的文檔中講的比較清楚,而且我本人線(xiàn)性匯編寫(xiě)的實(shí)在是不多,怕誤人子弟啊。最后就是摳摳邊角了,原則就是不需要的不計算,盡量不用判斷,有些時(shí)候 “? :”這個(gè)組合也比if  else強。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
2020年全國碩士研究生入學(xué)統一考試計算機科學(xué)與技術(shù)學(xué)科聯(lián)考(408)
基于TMS320DM642 DSP的MPEG24視頻編碼器優(yōu)化
基于DM6446(ARM+DSP 雙核) + TFP410(DVI驅動(dòng)器) V中的高清數字視頻顯示接口設計方案
【DM642】H.264源代碼在DM642上的移植[轉]
組成原理名詞解釋
干貨!C 代碼優(yōu)化策略總結
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久