国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

基于異構(gòu)多核全高清H264解碼系統(tǒng)設(shè)計(jì)

發(fā)布時(shí)間:2015-11-19 14:01    發(fā)布者:designapp
關(guān)鍵詞: H264 , DaVinci
  移動(dòng)互聯(lián)網(wǎng)時(shí)代的到來,高清多媒體視頻的普及,3D大型手機(jī)游戲?qū)Φ某霈F(xiàn),單核嵌入式硬件平臺(tái)已經(jīng)難以滿足復(fù)雜的實(shí)際計(jì)算需求。而異構(gòu)多核處理器在視頻編解碼運(yùn)算上具有強(qiáng)大的優(yōu)勢,已經(jīng)成為了嵌入式處理器架構(gòu)發(fā)展的趨勢。目前普遍高清視頻編解碼都采用異構(gòu)多核處理器內(nèi)的DSP進(jìn)行協(xié)同處理,通過片上通信機(jī)制實(shí)現(xiàn)核間多媒體數(shù)據(jù)傳輸。DSP相比軟解碼在速度和性能上得到了一定的提升,如DaVinci平臺(tái)內(nèi)置DSP能夠?qū)崿F(xiàn)720P視頻實(shí)時(shí)解碼。但DSP運(yùn)行時(shí)需要對(duì)信箱以及DMA進(jìn)行配置,占用較多的片上通信帶寬,導(dǎo)致核間通信效率不高,同時(shí)DSP編解碼效率和硬編解碼器相比仍偏低。為了進(jìn)一步提高全高清H264編解碼性能,本文采用TI Soc OMAP4430異構(gòu)多核處理器作為處理平臺(tái),其最大不同在于內(nèi)置雙核Cortex-A9強(qiáng)勁處理器、雙核Cortex-M3協(xié)處理器及IVA-HD多媒體硬編解碼加速引擎。IVA-HD引擎內(nèi)部有7個(gè)針對(duì)各種視頻編解碼而設(shè)計(jì)的加速引擎,每個(gè)加速引擎擁有獨(dú)立的數(shù)據(jù)存儲(chǔ)器,可以在最大程度上降低模塊間因?yàn)樽x寫數(shù)據(jù)造成的競爭。同時(shí)采用virtio緩存隊(duì)列和RPMsg消息框架來實(shí)現(xiàn)基于異步通知的主處理核A9與協(xié)處理核M3間數(shù)據(jù)通信,具有大數(shù)據(jù)通信效率高、異步通知、等優(yōu)點(diǎn)。OMAP4430處理器內(nèi)部的Cortex-A9雙核處理器將運(yùn)行高級(jí)嵌入式操作系統(tǒng)Linux,負(fù)責(zé)系統(tǒng)工作任務(wù)的調(diào)度、音頻解碼、用戶界面交互,而其內(nèi)部的Cortex-M3將充當(dāng)輔助處理核,管理IVA-HD加速引擎完成解碼任務(wù),最后用實(shí)例驗(yàn)證本次設(shè)計(jì)的正確性。
  1主要技術(shù)
  1.1 virtio緩存隊(duì)列
  Virtio是半虛擬化hypervisor中位于設(shè)備之上的抽象層,為異構(gòu)多核間數(shù)據(jù)通信提供了最低層的實(shí)現(xiàn)。它使用了兩個(gè)基于異步通知的緩存隊(duì)列(一個(gè)用于向協(xié)處理核發(fā)送數(shù)據(jù),一個(gè)用于從協(xié)處理核接收數(shù)據(jù))和散列表用于與遠(yuǎn)程異構(gòu)處理器進(jìn)行數(shù)據(jù)通信。每個(gè)緩存隊(duì)列最多包含有512個(gè)緩存,每個(gè)緩存的大小限制在512字節(jié)以內(nèi),緩沖池里面存放著通信數(shù)據(jù)。為了最大程度減少共享內(nèi)存,采用環(huán)形散列表,散列表每個(gè)表項(xiàng)包括了緩存的物理地址和緩存的大小,散列表存放在內(nèi)存特定地址中,主處理核與協(xié)處理核基于互斥機(jī)制的共享內(nèi)存方式進(jìn)行訪問,如圖1所示:
  


  圖1異構(gòu)多核間訪問virtio緩存池示意圖
  采用共享環(huán)形散列表進(jìn)行異構(gòu)處理核間數(shù)據(jù)通信的好處主要有幾個(gè)方面:
  1)采用散列表表項(xiàng)表示數(shù)據(jù)緩存可以減小共享內(nèi)存區(qū)域的大小,提高系統(tǒng)內(nèi)存使用率,同時(shí)允許變長數(shù)據(jù)傳輸。
  2)采用中斷方式通知目的處理器散列表的變化,減少了處理器盲目等待時(shí)間,提高了處理器的利用率
  3)允許同時(shí)傳輸多個(gè)緩存數(shù)據(jù),提高了系統(tǒng)通信的吞吐率
  1.2 RPMsg消息框架
  RPMsg(Remote processor Messaging)是一個(gè)基于virtio技術(shù)的用于處理器核間數(shù)據(jù)通信的消息框架,提供協(xié)處理核上電復(fù)位管理、消息通信等功能。
  1.2.1協(xié)處理核復(fù)位管理
  主要負(fù)責(zé)加載程序執(zhí)行體到協(xié)處理核的運(yùn)行內(nèi)存中、設(shè)置負(fù)責(zé)虛擬地址映射到物理地址MMU單元,當(dāng)協(xié)處理核遇段錯(cuò)誤或內(nèi)部代碼異常時(shí),需要輸出直觀的出錯(cuò)信息并且提供了恢復(fù)機(jī)制使得協(xié)處理核可以重新使用。
  1.2.2消息通信
  RPMsg消息框架是基于virtio緩存隊(duì)列實(shí)現(xiàn)的主處理核和協(xié)處理核間進(jìn)行消息通信框架,RPMsg向系統(tǒng)注冊(cè)了一條消息總線,并為每個(gè)M3協(xié)處理核創(chuàng)建相應(yīng)的總線設(shè)備,而多個(gè)客戶端驅(qū)動(dòng)程序也注冊(cè)在該消息總線上并分配一個(gè)本地地址端口src和遠(yuǎn)程地址端口dst,當(dāng)客戶端驅(qū)動(dòng)需要發(fā)送消息時(shí),會(huì)把消息封裝成virtio緩存并添加到緩存隊(duì)列中以完成消息的發(fā)送,當(dāng)消息總線接收到協(xié)處理器送到的消息時(shí)會(huì)根據(jù)消息地址端口dst合理的派送給客戶驅(qū)動(dòng)程序進(jìn)行處理。其示意圖如圖2所示:
  


  圖2 RPMsg消息總線工作示意圖
  1.3 IVA-HD加速引擎
  H.264/MPEG-4 Part 10是由ITU-T視頻編碼專家組和ISO/IEC運(yùn)動(dòng)圖像專家組(MPEG)聯(lián)合提出的高度壓縮數(shù)字視頻編解碼器標(biāo)準(zhǔn),被廣泛應(yīng)用于網(wǎng)絡(luò)流媒體資源、HDTV等方面。與之前MPEG4、H263等標(biāo)準(zhǔn)相比,H.264具有低碼率、高畫質(zhì)、高壓縮率和高可靠性等特點(diǎn),適用于干擾嚴(yán)重、丟包率高的信道中傳輸。
  H264解碼流程如圖3所示,解碼器從網(wǎng)絡(luò)抽象層NAL中接收輸入的數(shù)據(jù)幀,進(jìn)過熵解碼、重新排列后得到量化系數(shù)矩陣X,量化系數(shù)矩陣在經(jīng)過反量化和空間變換后得到計(jì)算殘差Dn,同時(shí)通過運(yùn)動(dòng)補(bǔ)償和幀間預(yù)測或幀內(nèi)預(yù)測得到預(yù)測快Pn,將Pn和Dn相加結(jié)果uFn經(jīng)過環(huán)路濾波得到輸出緩存圖像Fn.
  


  圖3 H264解碼器工作流程
  IVA-HD引擎是針對(duì)嵌入式平臺(tái)進(jìn)行多媒體編解碼加速而設(shè)計(jì)的第三代硬件加速引擎,其支持H264、MPEG4、MPEG2、H263等常見的視頻編解碼標(biāo)準(zhǔn)。為了釋放CPU,讓其更有效的進(jìn)行數(shù)據(jù)準(zhǔn)備和邏輯功能控制,IVA-HD集成了7個(gè)硬件加速引擎,他們和H264解碼各個(gè)功能模塊所對(duì)應(yīng)關(guān)系在圖3中用虛線框表示,其中加速引擎名稱core1-5所對(duì)應(yīng)的模塊功能分別是:熵解碼、反量化和反變換、環(huán)路濾波、幀內(nèi)預(yù)測、運(yùn)動(dòng)補(bǔ)償。
                               
                                                               
                               
                  2系統(tǒng)設(shè)計(jì)
  全高清H264解碼任務(wù)由主處理器Cortex-A9和協(xié)助處理器Cortex-M3共同完成,Cortex-A9主要負(fù)責(zé)從多媒體文件中或網(wǎng)絡(luò)數(shù)據(jù)流中進(jìn)行數(shù)據(jù)的讀取、多媒體數(shù)據(jù)包過濾分離視頻流和音頻流、構(gòu)建RPMsg控制消息進(jìn)過virtio緩存封裝發(fā)送給協(xié)處理核Cortex-M3以設(shè)置IVA-HD加速引擎的控制參數(shù)、向協(xié)處理器發(fā)送多媒體數(shù)據(jù)包進(jìn)行H264解碼、在協(xié)處理器完成解碼任務(wù)后接收?qǐng)D像并通過DRM API及KMS模塊繪制到屏幕上。
  平臺(tái)上有兩個(gè)Cortex-M3處理核,分為Sys M3和App M3,都運(yùn)行TI BIOS實(shí)時(shí)操作系統(tǒng),其中Sys M3主要負(fù)責(zé)創(chuàng)建與Cortex-A9通信的virtio緩存隊(duì)列,對(duì)程序執(zhí)行流程和CPU負(fù)載情況進(jìn)行記錄,接收A9發(fā)過來的緩存數(shù)據(jù)并進(jìn)行參數(shù)解析,同時(shí)根據(jù)緩存中dst參數(shù)分派緩存到App M3的相應(yīng)消息鏈表中。而App M3協(xié)處理器則完成實(shí)際的解碼工作,App M3將通過運(yùn)用于嵌入式平臺(tái)的Codec Engine來完成對(duì)IVA-HD加速引擎的操作。App M3將提取消息鏈表中消息請(qǐng)求相應(yīng)設(shè)置IVA-HD加速引擎的狀態(tài)和初始化參數(shù),在進(jìn)行實(shí)際解碼時(shí)會(huì)通過Codec Engine來調(diào)用IVA-HD加速引擎來完成解碼任務(wù)并將解碼結(jié)果通過緩存隊(duì)列發(fā)送回Cortex-A9處理器。整個(gè)系統(tǒng)解碼的框架圖如圖4所示:
  


  圖4 H264解碼器工作框架圖
  3系統(tǒng)實(shí)現(xiàn)
  3.1 Cortex-A9軟件實(shí)現(xiàn)
  Cortex-A9運(yùn)行Linux操作系統(tǒng),包括內(nèi)核模塊omapdce.ko和virtio緩存、RPMsg總線驅(qū)動(dòng)程序設(shè)計(jì)和ffmpeg多媒體庫及DRM顯示接口調(diào)用。
  3.1.1 virtio緩存隊(duì)列實(shí)現(xiàn)
  Virtio緩存隊(duì)列以共享散列表的方式和協(xié)處理器進(jìn)行數(shù)據(jù)通信,通過中斷方式通知對(duì)方散列表的添加,包括以下幾個(gè)方面:
  1)Irq_require()注冊(cè)中斷函數(shù),Register_bus_type(“virtio”)向系統(tǒng)注冊(cè)virtio總線
  2)Regsiter_virtio_driver(
  3)系統(tǒng)在發(fā)現(xiàn)協(xié)處理器后將通過register_virtio_device(
  4)virtio_bus->match(
  3.1.2 RPMsg消息框架實(shí)現(xiàn)
  RPMsg總線將掛載許多rpmsg_driver和rpmsg_device,和rpmsg_driver都有本地端口src和目的端口dst屬性,每次發(fā)送消息時(shí)會(huì)調(diào)用rpmsg_send((void*)data,src,dst)將消息添加到virtio的緩存隊(duì)列中,而當(dāng)消息msg達(dá)到RPMsg總線時(shí),總線把msg分配給dst屬性和msg->dst相同的rpmsg_driver,并調(diào)用rpmsg_driver->callback()進(jìn)行消息處理。
  3.1.3 omapdce.ko驅(qū)動(dòng)模塊的實(shí)現(xiàn)
  Omapdce.ko模塊將作為一個(gè)RPMsg driver,其實(shí)現(xiàn)了應(yīng)用程序引擎相關(guān)API的內(nèi)核實(shí)現(xiàn),主要包括ioctl_engine_open()、ioctl_viddec_create(),ioctl_viddec_control()、ioctl_viddec_process(),他們提供了應(yīng)用API engine_open、viddec_create()、viddec_control()、viddec_process()的驅(qū)動(dòng)實(shí)現(xiàn),這些驅(qū)動(dòng)函數(shù)將調(diào)用RPMsg總線rpmsg_send()、rpmsg_recv()與協(xié)處理器進(jìn)行消息通信以完成工作任務(wù)。
  3.1.4解碼應(yīng)用viddectest實(shí)現(xiàn)
  H264解碼應(yīng)用程序viddectest的工作主要分為以下幾個(gè)方面
  1)Linux顯示接口DRM初始化,通過Drmopen()函數(shù)打開/dev/dri/card0設(shè)備文件,獲取設(shè)備資源drmModeGetResources(),創(chuàng)建幀緩存drmModeAddFB2()及設(shè)置輸出分辨率及模式drmModeSetCrtc()
  2)FFmpeg媒體庫的調(diào)用,通過AVOpenStreamFile()打開多媒體文件,AVFindStream()分離出音頻流和視流,然后依次通過AVGetPacket()讀取視頻流數(shù)據(jù)包送去解碼器進(jìn)行解碼。
  3)加速引擎初始化和利用消息總線進(jìn)行解碼數(shù)據(jù)通信,通過Engine_open()打開H264解碼引擎,Viddec3_create()創(chuàng)建一個(gè)解碼實(shí)例對(duì)象,Viddec3_control()設(shè)置解碼所需的參數(shù),Viddec3_process()將用RPMsg消息總線送出解碼數(shù)據(jù)流并接收解碼后的圖像緩存數(shù)據(jù),其流程圖如圖5所示:
  


  圖5&6 應(yīng)用viddectest流程圖&M3運(yùn)行流程圖
                               
                                                               
                               
                  3.2 Cortex-M3軟件實(shí)現(xiàn)
  雙核Cortex-M3運(yùn)行TI BIOS實(shí)時(shí)操作系統(tǒng),負(fù)責(zé)與主處理核的virtio緩存隊(duì)列通信及通過codec engine調(diào)用IVA-HD加速引擎實(shí)現(xiàn)H264解碼,運(yùn)行流程圖如圖6所示,主要包括以下內(nèi)容:
  1) virqueue_create( virtio發(fā)送及接收緩存隊(duì)列。
  2) Message_get_queue( M3的消息隊(duì)列中。
  3) App M3將獲取消息鏈表的消息,設(shè)置IVA-HD加速引擎的工作狀態(tài)并初始化,如果為解碼消息則通過Codec Engine調(diào)用IVA-HD加速引擎來完成解碼過程。
  4)將解碼后的圖像緩存封裝成virtio緩存,調(diào)用Message_send_queue()通過virtio緩存隊(duì)列發(fā)送回主處理核A9調(diào)用DRM進(jìn)行顯示輸出。
  4測試
  本文在OMAP4430開發(fā)平臺(tái)上設(shè)計(jì)實(shí)現(xiàn)了基于異構(gòu)多核的全高清H264解碼,為了測試解碼器的性能,將針對(duì)不同比特率的720P、1080P的網(wǎng)絡(luò)視頻文件Big_Buck _Bunny_Sunflower進(jìn)行解碼測試,測試結(jié)果如表1所示,同時(shí)采用FFmpeg開源庫項(xiàng)目的軟解碼進(jìn)行測試,其對(duì)比圖如圖7所示
  


  圖7 IVA-HD硬解碼和軟解碼效率對(duì)比圖
  從圖6可以看出本次設(shè)計(jì)的H264解碼器在解碼720P(1280*720)和1080P(1920*1080)視頻時(shí)分別達(dá)到60和34幀每秒,相比FFmpeg開源H264軟解碼器效率提高了一倍。而普遍全高清流暢視頻的幀率為30幀每秒,達(dá)到實(shí)時(shí)解碼性能需求。
  5結(jié)束語
  隨著移動(dòng)互聯(lián)網(wǎng)時(shí)代的到來,在移動(dòng)終端上流暢播放全高清視頻成為任務(wù)日常需求。為此本文采用移動(dòng)Soc OMAP4430異構(gòu)多核處理器為實(shí)驗(yàn)平臺(tái),通過基于virtio緩存隊(duì)列和RPMsg消息框?qū)崿F(xiàn)了異構(gòu)多核間多媒體數(shù)據(jù)通信,同時(shí)結(jié)合IVA-HD多媒體硬件加速引擎設(shè)計(jì)了一款全高清H264視頻硬解碼系統(tǒng)。實(shí)驗(yàn)結(jié)果表明設(shè)計(jì)的解碼系統(tǒng)比開源FFmpeg軟解碼器在性能上提升了一倍,達(dá)到實(shí)時(shí)性要求。具有解碼速度快、解碼過程由硬件加速器完成無需消耗主核運(yùn)算資源、核間通信效率高、功耗小等優(yōu)點(diǎn)。
                               
                                                               
                               
               
本文地址:http://m.qingdxww.cn/thread-157006-1-1.html     【打印本頁】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

廠商推薦

  • Microchip視頻專區(qū)
  • 使用SAM-IoT Wx v2開發(fā)板演示AWS IoT Core應(yīng)用程序
  • 使用Harmony3加速TCP/IP應(yīng)用的開發(fā)培訓(xùn)教程
  • 集成高級(jí)模擬外設(shè)的PIC18F-Q71家族介紹培訓(xùn)教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿(mào)澤電子(Mouser)專區(qū)
關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 色香焦| 日韩精品第1页| 一起碰一起噜一起草视频| 欧美疯狂做受xxxxx喷水| 色多多旧版污污破解版| 中国女人内谢69XXXXXA片| 亚洲精品国产综合久久一线| 亚洲天堂h| 日韩欧美一区二区不卡| 先锋影音国产精品| 天堂资源在线8| 怡红院在线视频全部观看| 俄罗斯人与动ZOZ0| 绝色娇嫩美人妻老师| 性美国人xxxxx18| 天天综合色天天综合网| 亚洲美女高清aⅴ视频免费| 台湾佬成人中文网222vvv| 色色色色网站| 一级二级三级黄色片| XXXchinese国产HD| 老师系列高H文| 伊伊人成亚洲综合人网| 青青福利视频| 日本五级床片免费| 亚洲国产成人久久精品hezyo | 婷婷丁香花| 五月天精品| 18美女腿打开无遮软件| 果冻传媒在线观看完整版免费| 日本夜夜夜| 亚洲天堂网在线观看| 日韩色天使综合色视频| 天天碰人人| 网站免费视频| 99爱视频在线观看| 老少配xxxxx欧美| 亚洲精品欧美精品中文字幕| 日韩 欧美 中文字幕 不卡| 在线播放精品一区二区啪视频| 亚洲天天综合网|