亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        BSAC音頻編碼器在TI DaVinci平臺(tái)上的實(shí)現(xiàn)

        2012-03-15 01:30:46蘭,呂衛(wèi),宋
        電視技術(shù) 2012年15期
        關(guān)鍵詞:配置文件編碼器實(shí)例

        徐 蘭,呂 衛(wèi),宋 垣

        (天津大學(xué)電視與圖像信息研究所,天津300072)

        隨著數(shù)字化移動(dòng)終端的日益普及以及地面數(shù)字多媒體廣播標(biāo)準(zhǔn)的廣泛應(yīng)用,BSAC(Bit-Sliced Arithmetic Coding,比特分片算術(shù)編碼)成為目前最流行的的音頻壓縮標(biāo)準(zhǔn)之一。BSAC采用了精細(xì)粒度可分級(jí)技術(shù),適合運(yùn)用在非平穩(wěn)通信信道或多播環(huán)境中傳輸實(shí)時(shí)音頻流,為了使其優(yōu)勢(shì)得到較好實(shí)現(xiàn),且出于對(duì)開發(fā)時(shí)間的考慮,本文選擇TI DaVinci(達(dá)芬奇)平臺(tái)。

        為了使BSAC能夠在DaVinci平臺(tái)上實(shí)現(xiàn),必須使其符合xDM接口標(biāo)準(zhǔn),這也是本文的研究重點(diǎn),本文還對(duì)BSAC音頻壓縮編碼在DM6446平臺(tái)上的應(yīng)用程序進(jìn)行了開發(fā)。

        1 BSAC編碼概述

        MPEG-4 BSAC是在AAC基礎(chǔ)上發(fā)展而來的,保留了AAC編碼中引入的心理聲學(xué)模型、尺度因子編碼,用算術(shù)編碼代替了AAC的Huffman編碼,同時(shí)改變了碼率的分級(jí)系數(shù)和量化的頻譜成分,并提供差錯(cuò)復(fù)原技術(shù),從而極大改善了在易出錯(cuò)信道上傳輸?shù)囊纛l信號(hào)質(zhì)量。AAC可分級(jí)性允許的典型步長(zhǎng)為16 kbit/s,而BSAC能使每個(gè)音頻頻道以1 kbit/s的步長(zhǎng)從16 kbit/s變化到64 kbit/s,實(shí)現(xiàn)碼率的可分級(jí),立體聲以步長(zhǎng)2 kbit/s實(shí)現(xiàn)分級(jí)[1]。通常情況下,噪聲和多徑傳播會(huì)引起信道容量的減少,進(jìn)而影響移動(dòng)通信網(wǎng)絡(luò)和數(shù)字廣播系統(tǒng)的性能,BSAC的精細(xì)粒度可分級(jí)技術(shù)可以對(duì)動(dòng)態(tài)自適應(yīng)糾錯(cuò)編碼提供支持,因此能夠有效抑制移動(dòng)通信網(wǎng)絡(luò)和數(shù)字廣播系統(tǒng)性能的降低。

        2 xDAIS和xDM算法接口標(biāo)準(zhǔn)

        TI公司開發(fā)的標(biāo)準(zhǔn)xDAIS(eXpressDSP Algorithm Interface Standard)使通過組件構(gòu)建復(fù)雜系統(tǒng)的過程變得更加快捷和可靠,也使編解碼算法的改進(jìn)和移植更加方便[2]。所有xDAIS標(biāo)準(zhǔn)的算法必須實(shí)現(xiàn)IALG接口[3],IALG接口函數(shù)的調(diào)用順序如圖1所示。xDM(eXpressDSP Digital Media Standard)是在xDAIS基礎(chǔ)上增加了一些雙核通信的協(xié)議,從而適合DaVinci技術(shù)應(yīng)用的開發(fā),xDM比xDAIS增加了兩個(gè)擴(kuò)展函數(shù)process()和control()。

        圖1 IALG接口函數(shù)的調(diào)用順序

        3 DaVinci軟件架構(gòu)

        DaVinci的軟件架構(gòu)能夠使片上系統(tǒng)的硬件和軟件無縫地組合起來,它規(guī)定了應(yīng)用程序和算法庫之間統(tǒng)一、標(biāo)準(zhǔn)的API接口,從而大大縮短了系統(tǒng)研究與開發(fā)的時(shí)間。DaVinci軟件架構(gòu)如圖2所示。用戶層進(jìn)行Linux應(yīng)用程序的開發(fā),通過EPSI(Easy Peripheral Software Interface,外圍軟件接口)API來訪問和操作I/O及控制各種外設(shè),通過Codec Engine(編解碼引擎)提供的VISA(Video,Image,Speech,Audio)API來調(diào)用DSP側(cè)兼容xDM標(biāo)準(zhǔn)的音視頻編碼器算法[4]。

        圖2 DaVinci軟件架構(gòu)

        4 BSAC音頻編碼器實(shí)現(xiàn)

        4.1 編碼器開發(fā)流程

        TMS320DM6446是采用雙核架構(gòu)(DSP+ARM)的SoC芯片,通過Codec Engine和Codec Server(編解碼服務(wù)器)來管理ARM和DSP的協(xié)同工作。DSP端通過DSP/BIOS運(yùn)行高性能的BSAC音頻編碼,ARM端通過Monta Vista Linux操作系統(tǒng)實(shí)現(xiàn)對(duì)外設(shè)的管理以及音頻的采集和處理。

        BSAC編碼器的開發(fā)流程如圖3所示。首先在DSP集成開發(fā)環(huán)境CCS3.3工程下將BSAC編碼器按xDM標(biāo)準(zhǔn)進(jìn)行封裝,生成編碼庫文件bsacenc.l64P,加上配置文件(.xs.xdc package.bld)生成能夠被Codec Engine配置套件所用的Codec包(ti.sdo.codecs.bsacenc),然后配置DSP的操作系統(tǒng)DSP/BIOS,以及通過XDC工具配置其他組件,生成DSP端的可執(zhí)行代碼(Codec Server),最后ARM端通過Codec Engine的VISA API接口函數(shù)調(diào)用符合xDM標(biāo)準(zhǔn)的BSAC編碼算法。

        圖3 BSAC編碼器開發(fā)流程

        4.2 Codec包封裝

        4.2.1 BSAC算法的xDM封裝

        將BSAC編碼器構(gòu)建成符合xDM標(biāo)準(zhǔn)的算法,IALG接口函數(shù)中的 algNumAlloc(),algActivate(),algControl(),algDeactivate()可不完成任何處理,為了減少函數(shù)的調(diào)用,節(jié)省代碼空間,本文設(shè)計(jì)的BSAC編碼器將上述函數(shù)指針置為NULL。BSAC算法實(shí)例接口函數(shù)IBSACENC_Fxns如圖4所示。IBSACENC_Fxns結(jié)構(gòu)體的第一個(gè)成員表示模塊BSACENC的地址,用來標(biāo)明具體模塊實(shí)例;BSACENC_TI_alloc()表示BSAC編碼器申請(qǐng)的內(nèi)存資源,本文申請(qǐng)了3塊內(nèi)存空間,分別用來存儲(chǔ)BSAC算法實(shí)例對(duì)象,采集的原始音頻數(shù)據(jù),編碼后的輸出碼流;BSACENC_TI_init()初始化BSAC算法實(shí)例對(duì)象,只有該函數(shù)成功返回后,算法實(shí)例才能開始處理數(shù)據(jù);BSACENC_TI_Moved()允許移動(dòng)BSAC算法實(shí)例對(duì)象,重新定位存儲(chǔ)器資源;BSACENC_TI_process()實(shí)現(xiàn)將輸入的PCM數(shù)據(jù)進(jìn)行BSAC編碼,并輸出編碼后的碼流及幀長(zhǎng);BSACENC_TI_control()實(shí)現(xiàn)對(duì)BSAC音頻編碼器參數(shù)(如比特率、采樣率、通道模式、量化位數(shù)等)的設(shè)置及BSAC算法狀態(tài)信息的查詢;BSACENC_TI_free()釋放BSACENC_TI_alloc()申請(qǐng)的內(nèi)存空間。

        圖4 BSAC算法實(shí)例接口函數(shù)

        4.2.2 Codec包創(chuàng)建

        為了使兼容xDM標(biāo)準(zhǔn)的BSAC音頻編碼算法能夠被編解碼引擎調(diào)用,須將該算法打包生成1個(gè)Codec,即“包”。1個(gè)包對(duì)應(yīng)1個(gè)目錄,目錄中包含了1個(gè)獨(dú)立組件需要的所有文件以及相關(guān)的元數(shù)據(jù)。

        本文使用TI RTSC(實(shí)時(shí)系統(tǒng)組件)編解碼器包向?qū)韯?chuàng)建BSAC Codec包,首先下載安裝必要組件(ceutils(Codec Engine工具),cg_xml(代碼生成工具)),設(shè)置XDCPATH(具體方法如下所示),然后在xdc工具安裝路徑下執(zhí)行./xs ti.sdo.codecutils.genpackage-g,生成codec包所需的5個(gè)配置的文件:1)package.xdc定義的BSAC codec包的名稱為ti.sdo.codecs.bsacenc,包含了1個(gè)算法模塊BSACENC;2)package.xs定義了BSAC Codec包所需要的庫文件名稱(lib="lib/bsacenc.l64P");3)package.bld定義了build相關(guān)的屬性;4)BSACENC.xdc聲明和定義了模塊BSACENC,該文件名必須和package.xdc文件中定義的模塊名稱(BSACENC)一致;5)BSACENC.xs實(shí)現(xiàn)了BSACENC.xdc中聲明的方法。具體代碼為:

        export XDCPATH="/home/user/dvsdk_2_00_00_22/codec_engine_2_23_01/packages;

        /home/user/dvsdk_2_00_00_22/xdais_6_23/packages;/home/user/dvsdk_2_00_00_22/ceutils_1_06/packages"

        4.3 Codec Server創(chuàng)建

        在將BSAC編碼器打包成Codec后,為了支持Codec Engine調(diào)用運(yùn)行在DSP上的音頻編碼算法,必須生成一個(gè)DSP端的可執(zhí)行代碼Codec Server(bsacenc.x64P),該服務(wù)器結(jié)合了Codecs,F(xiàn)ramework組件和系統(tǒng)代碼。為了生成 Codec Server,需要一些配置文件如.tcf,.cfg,main()等。Tconf腳本語言的配置文件bsacenc.tcf配置了DSP/BIOS,它分配了數(shù)據(jù)和代碼段的存儲(chǔ)空間、使能任務(wù)管理器和動(dòng)態(tài)分配堆,創(chuàng)建和初始化其他DSP/BIOS數(shù)據(jù)對(duì)象等。main()用來初始化Codec Engine。通過XDC配置其余組件(如框架組件、DSP/BIOS Link、Codec Engine),BSAC Server配置文件(bsacenc.cfg)部分代碼如下所示,它定義了 Server的模塊屬性,獲得編碼模塊BSACENC,說明Codec Server中可用的算法bsacenc。具體代碼為:

        4.4 ARM端BSAC應(yīng)用程序創(chuàng)建

        ARM端的應(yīng)用程序主要是完成Codec Engine的配置及BSAC編碼器的多線程設(shè)計(jì)。Codec Engine的配置文件是通過*.cfg文件存儲(chǔ)的,本文的BSAC編碼器引擎配置文件部分代碼如下所示,它定義了引擎的名字,設(shè)置了全局模塊來使配置文件生效,設(shè)置引擎的運(yùn)行環(huán)境和與Codec Server相對(duì)應(yīng)的名稱。BSAC應(yīng)用程序的Linux多線程程序設(shè)計(jì)主要包括原始音頻信號(hào)的采集,音頻信號(hào)的壓縮編碼,最后編碼后的碼流存到本地磁盤用于解碼輸出。具體代碼為:

        5 測(cè)試結(jié)果與分析

        BSAC編碼器在封裝的過程中,進(jìn)行了一些優(yōu)化操作,如浮點(diǎn)運(yùn)算轉(zhuǎn)換為定點(diǎn)運(yùn)算、結(jié)構(gòu)的優(yōu)化、將使用頻繁的變量直接存儲(chǔ)到DSP的L1DSRAM中等,這樣可大大降低DSP的占用率且提高編碼算法的穩(wěn)定性。實(shí)驗(yàn)表明,經(jīng)代碼優(yōu)化后,DSP的占用率從36%減少到18%,大大節(jié)約了DSP資源,為同時(shí)執(zhí)行多種編碼器提供了可能。本文的BSAC編碼器能夠支持多種采樣率(48 kHz,44.1 kHz,24 kHz),量化精度能實(shí)現(xiàn)8位或16位,并且能夠壓制出不超過96 kbit/s碼率的碼流。經(jīng)反復(fù)測(cè)試,編碼器穩(wěn)定性能相對(duì)較好,編碼速度快,能夠達(dá)到音頻編碼的實(shí)時(shí)要求,且壓縮后的碼流經(jīng)解碼器還原的聲音從主觀感覺上無法分辨與原始音頻的差別。

        6 結(jié)束語

        針對(duì)達(dá)芬奇平臺(tái)雙核架構(gòu)的特點(diǎn),本文采用TMS320DM6446實(shí)現(xiàn)了BSAC音頻編碼器的設(shè)計(jì),與傳統(tǒng)的方法相比,大大縮短了開發(fā)時(shí)間。本文介紹了xDM算法接口標(biāo)準(zhǔn)及DaVinci的軟件架構(gòu),成功地將BSAC算法按照xDM接口標(biāo)準(zhǔn)進(jìn)行了封裝,并且在TMS320DM6446的DSP上實(shí)現(xiàn),在ARM端開發(fā)的BSAC音頻編碼應(yīng)用程序可根據(jù)用戶需求,自行設(shè)置不同的采樣率及碼率,編碼性能均較好。

        [1]ISO/IEC JTC1/SC29/WG11.Information technology-coding of audiovisual objects Part3:Audio[S].2001.

        [2]趙勇.DAVINCI技術(shù)原理與應(yīng)用指南[M].南京:東南大學(xué)出版社,2008.

        [3]劉書洋,李鳳亭.基于DSP平臺(tái)的AVS實(shí)時(shí)編碼系統(tǒng)設(shè)計(jì)[J].電視技術(shù),2009,33(S1):60-64.

        [4]張起貴.最新DSP技術(shù):“達(dá)芬奇”系統(tǒng)、框架和組件[M].北京:國(guó)防工業(yè)出版社,2009.

        猜你喜歡
        配置文件編碼器實(shí)例
        提示用戶配置文件錯(cuò)誤 這樣解決
        搭建簡(jiǎn)單的Kubernetes集群
        互不干涉混用Chromium Edge
        忘記ESXi主機(jī)root密碼怎么辦
        基于FPGA的同步機(jī)軸角編碼器
        基于PRBS檢測(cè)的8B/IOB編碼器設(shè)計(jì)
        JESD204B接口協(xié)議中的8B10B編碼器設(shè)計(jì)
        電子器件(2015年5期)2015-12-29 08:42:24
        完形填空Ⅱ
        完形填空Ⅰ
        多總線式光電編碼器的設(shè)計(jì)與應(yīng)用
        亚洲人成精品久久久久| 亚洲国产视频精品一区二区| 亚洲老女人区一区二视频| 欧美日本日韩aⅴ在线视频| 高h视频在线免费观看| 蜜桃av一区二区三区| 在线观看国产成人自拍视频| 精品人妻av区乱码| 深夜福利小视频在线观看| 国产偷2018在线观看午夜| 91青青草免费在线视频| 亚洲日本一区二区在线| 亚洲国产精品成人精品无码区在线| 午夜成人鲁丝片午夜精品| 亚洲国产精品久久久久久网站 | 无码人妻精品一区二区| 国产又色又爽无遮挡免费动态图| 无码中文字幕久久久久久| 亚洲一区二区三区福利久久蜜桃| 久久久国产精品无码免费专区| 久久99精品九九九久久婷婷| 久久成人麻豆午夜电影| 亚洲国产色图在线视频| 久久亚洲中文字幕伊人久久大| 免费乱理伦片在线观看| 无码人妻黑人中文字幕| 久久久久久久综合日本| 中文无字幕一本码专区| 日韩亚洲中文有码视频| 久久99精品久久久久久秒播| 国产成人国产在线观看| 中文字幕久区久久中文字幕| av网站在线观看大全| 狠狠色综合7777久夜色撩人| 国产av无码专区亚洲av手机麻豆 | 一区二区中文字幕蜜桃| 丝袜美腿亚洲第一免费| 奇米影视第四色首页| 99国产超薄丝袜足j在线播放| 99久久亚洲精品加勒比| 精品国产亚洲av高清大片|