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

        ?

        基于RF5框架的XDAIS標(biāo)準(zhǔn)算法封裝與調(diào)用

        2015-09-21 01:29:46周佳兵潘澤躍中國科學(xué)技術(shù)大學(xué)自動(dòng)化系安徽合肥230027
        關(guān)鍵詞:程序工程

        周佳兵,潘澤躍,曹 飛(中國科學(xué)技術(shù)大學(xué) 自動(dòng)化系,安徽 合肥 230027)

        0 引言

        TI公司提出了eXpressDsp軟件技術(shù),在軟件開發(fā)層面上推出了BIOS+RF5+算法標(biāo)準(zhǔn)XDAIS架構(gòu)。XDAIS規(guī)范了DSP算法軟件的開發(fā),提供了類似面向?qū)ο缶幊讨械念惖姆庋b方式的算法接口,使得算法集成變得簡(jiǎn)單統(tǒng)一。RF5作為DSP軟件開發(fā)的起步代碼參考框架,以DSP/BIOS為基礎(chǔ),利用其中的數(shù)據(jù)處理元素和數(shù)據(jù)通信元素可以方便地完成復(fù)雜算法應(yīng)用程序的設(shè)計(jì)與開發(fā)。但在實(shí)際工作中,XDAIS算法、RF5框架的使用卻顯得相對(duì)較少,導(dǎo)致實(shí)際開發(fā)的程序過于臃腫,代碼移植性較差,這主要因?yàn)閄DAIS算法接口的調(diào)用、RF5框架的層次化封裝相對(duì)復(fù)雜。如何規(guī)范使用XDAIS與RF5,使得音視頻、網(wǎng)絡(luò)通信等包含大量算法、多線程通道的復(fù)雜應(yīng)用程序的開發(fā)更為簡(jiǎn)便已成為廣大DSP開發(fā)者的迫切需求。

        1 RF5框架

        RF5主要實(shí)現(xiàn)了存儲(chǔ)管理、線程模型和通道封裝三個(gè)功能。RF5基本框架結(jié)構(gòu)如圖1[1]所示。RF5框架通過驅(qū)動(dòng)開發(fā)套件(DDK)[2]完成應(yīng)用層與底層硬件的交互;以DSP/BOIOS為基礎(chǔ),通過對(duì)XDAIS算法的封裝完成應(yīng)用程序的開發(fā)。芯片支持庫(CSL)[3]作為驅(qū)動(dòng)模塊與底層硬件的橋梁為各種外設(shè)提供標(biāo)準(zhǔn)庫函數(shù)調(diào)用。

        圖1 RF5框架結(jié)構(gòu)框圖

        RF5框架包含4個(gè)基本數(shù)據(jù)處理元素:線程(TASK)、通道(CHANNEL)、核(CELL)、XDAIS 算法。 它們處于依次包含的關(guān)系。每一個(gè)線程可以包含多個(gè)通道,并順序執(zhí)行所包含的通道,用以完成特定的操作;通道是核的集合,核在通道內(nèi)也被順序執(zhí)行;核內(nèi)封裝了XDAIS算法,一個(gè)核便是包含一種XDAIS算法的容器,并提供了供外部調(diào)用的核對(duì)象接口(ICELL)以及核通信管理模塊ICC對(duì)象。

        2 XDAIS算法庫封裝

        2.1 抽象算法接口與實(shí)例算法接口

        XDAIS是為了提高DSP軟件開發(fā)效率而提出的一套通用算法接口標(biāo)準(zhǔn)。XDAIS算法可以重復(fù)利用且以庫的形式在程序中被調(diào)用。為統(tǒng)一算法開發(fā)規(guī)范,該標(biāo)準(zhǔn)提供一系列規(guī)則[4],如XDAIS算法不允許直接訪問硬件外設(shè),必須通過標(biāo)準(zhǔn)的資源管理接口(IALG)來實(shí)現(xiàn)。

        IALG抽象接口IALG_Fxns[5],也叫算法成員對(duì)象列表或V-表,主要實(shí)現(xiàn)存儲(chǔ)管理、創(chuàng)建和銷毀算法實(shí)例對(duì)象。其內(nèi)部有 3 個(gè)重要結(jié)構(gòu)字段:algAlloc()、algFree()和algInit()。algAlloc()和 algFree()表 示 內(nèi) 存 的 分 配 和 釋放,algInit()用來初始化算法參數(shù)并使內(nèi)存指向算法的處理空間。三個(gè)字段都不能為NULL。

        在具體應(yīng)用時(shí),需要另外創(chuàng)建算法實(shí)例接口IXX_Fxns(XX表示要實(shí)現(xiàn)的具體算法名),該接口包含了算法的具體實(shí)現(xiàn)函數(shù)聲明。以JPEG解碼算法為例,定義的算法實(shí)例接口代碼如下:

        typedef struct IJPEGDEC_Fxns{

        IALG_Fxns ialg;

        XDAIS_Int32(*decode)(IJPEGDEC_Handle

        handle,XDAS_Int8**in,XDAS_Int8*out);

        }IJPEGDEC_Fxns;

        IJPEGDEC_Fxns是IALG_Fxns的擴(kuò)展。IJPEGDEC_Fxns中聲明了具體解碼實(shí)現(xiàn)函數(shù)decode()。在應(yīng)用程序中調(diào)用decode()函數(shù),需要將整個(gè) XDAIS算法封裝成庫,在應(yīng)用程序所在的工程中加載該庫,并調(diào)用該庫提供的接口decode()函數(shù)實(shí)現(xiàn)解碼運(yùn)算。

        2.2 算法庫封裝實(shí)現(xiàn)

        XDAIS的特點(diǎn)是,主要內(nèi)存的分配和銷毀不再由具體的算法負(fù)責(zé),而是據(jù)據(jù)XDAIS算法內(nèi)存使用規(guī)則及內(nèi)存分配字段函數(shù)alg_alloc()予以分配。抽象算法接口函數(shù)調(diào)用流程如圖2所示。

        圖2 抽象算法接口函數(shù)調(diào)用流程圖

        實(shí)際算法框架搭建步驟是:首先啟動(dòng)XDAIS算法組件向?qū)Вx算法接口標(biāo)示,如JPEGDEC_TI_IJPEGDEC,JPEGDEC表示算法功能為JPEG解碼,TI表示算法持有人。在向?qū)е卸x輸入輸出參數(shù)結(jié)構(gòu)體,聲明內(nèi)存表結(jié)構(gòu)、核心處理函數(shù)XX()等內(nèi)容,生成算法接口文件。其次專門建立庫工程(.lib文件),包含上一步生成的工程目錄下的算法接口文件,并分配內(nèi)存表,修改輸入輸出參數(shù),并實(shí)現(xiàn)算法處理函數(shù)XX()。最后釋放內(nèi)存并修改編譯選項(xiàng),編譯完成后生成符合XDAIS的標(biāo)準(zhǔn)接口算法庫(.lib文件)。

        3 RF5框架使用

        XDAIS算法封裝成庫之后,就需要考慮如何去調(diào)用它。開辟新的工程,在命令鏈接文件中實(shí)現(xiàn)算法庫的代碼如下:

        _JPEGDEC_IJPEGDEC=

        _JPEGDEC_TI_IJPEGDEC-l.libjpeg_ti.lib

        通過第一句賦值,在新工程中引用_JPEGDEC_IJPEGDEC即可調(diào)用XDAIS實(shí)例算法接口,jpeg_ti.lib是成功封裝的XDAIS標(biāo)準(zhǔn)算法庫,第二句成功將jpeg算法庫鏈接到工程文件中去。

        根據(jù)RF5的數(shù)據(jù)元素特性,需要算法、核、通道、線程一步步地按層次封裝。首先第一步需要將XDAIS算法封裝在CELL中,只需要將算法庫的實(shí)例算法接口在應(yīng)用程序所在工程中進(jìn)行調(diào)用即可。在這之前,需要在頭文件中聲明CELL對(duì)象ICELL_Obj和CELL接口ICELL_Fxns等,ICELL_Obj封裝了實(shí)例算法接口、CELL接口ICELL_Fxns和ICC句柄,通過ICELL_Fxns定義的操作函數(shù) cellExcute()來管理并執(zhí)行 CELL中封裝的算法處理函數(shù),通過ICC句柄實(shí)現(xiàn)CELL與通道對(duì)象間通信。

        以JPEG解碼算法為例,算法處理線程源文件中ICELL_Obj的定義如下:

        通過BIOS配置算法處理線程[6],在算法處理線程中定義 CELL對(duì)象 ICELL_Obj、ICC句柄 ICC_Handle和算法處理參數(shù),在main函數(shù)里初始化通道模塊,這是因?yàn)楸仨毻ㄟ^通道channel去操作。在線程初始化函數(shù)中進(jìn)行通道內(nèi)cell的注冊(cè)CHAN_regCell(),然后通過CHAN_open()函數(shù)打開通道,最后在線程處理函數(shù)中調(diào)用 CHAN_execute()完成 CELL接口調(diào)用,執(zhí)行 CELL接口調(diào)用函數(shù) cellExcute(),最終調(diào)用封裝在 CELL內(nèi)的算法處理函數(shù)XX()。如圖3所示。

        4 封裝實(shí)例

        圖3 RF5框架中XDAIS算法調(diào)用流程圖

        結(jié)合H.264編碼算法封裝實(shí)例,通過軟件開發(fā)平臺(tái)CCS3.3實(shí)際測(cè)試算法性能。創(chuàng)建了兩個(gè)例程,分別是采用XDAIS標(biāo)準(zhǔn)和RF5封裝的算法程序,和以源文件形式存在未經(jīng)封裝的算法程序。在BIOS靜態(tài)面板中配置內(nèi)存空間并配置輸入輸出線程,輸入線程采集圖像數(shù)據(jù),而輸出線程在兩個(gè)實(shí)例中則作用不同。

        首先,未經(jīng)封裝的編碼算法所涉及的幀間預(yù)測(cè)、運(yùn)動(dòng)估計(jì)、量化等一系列算法子函數(shù)均以源文件存在于工程中并在tskVideoOutput線程中調(diào)用,如圖4所示。

        圖4 未經(jīng)封裝的算法實(shí)例

        將這些程序文件按照XDAIS算法標(biāo)準(zhǔn)封裝于庫H.264_enclib.lib中,然后按照RF5框架數(shù)據(jù)元素的封裝步驟,在tskProcess線程中調(diào)用此庫和算法處理函數(shù)接口,得到工程如圖5所示。

        圖5 RF5框架封裝后算法實(shí)例

        其次通過在程序中添加UTL統(tǒng)計(jì)函數(shù)來分別分析和比較采用兩種方法的算法執(zhí)行情況。圖6所示為未封裝情況,在tskOutput線程中設(shè)置STS時(shí)間統(tǒng)計(jì)模塊stsExeTimeEnc得到編碼算法程序執(zhí)行的平均指令周期為11.599 ms。圖7為經(jīng)RF5框架封裝后的算法執(zhí)行情況,在tskVideoProcess線程中設(shè)置STS時(shí)間統(tǒng)計(jì)模塊stsExeTimeh264Enc得到平均指令周期為4.083 ms。

        圖6 未封裝情況下編碼算法指令周期

        從CPU占用情況來看,未經(jīng)封裝的算法程序CPU占用率較高,平均占有率在50%左右,而經(jīng)過RF5封裝調(diào)用的算法程序?qū)嶋H平均CPU占用率在31%左右,分別如圖8和圖9所示。

        圖7 經(jīng)RF5封裝后編碼指令周期

        圖8 未經(jīng)封裝的算法程序CPU占用率

        圖9 經(jīng)封裝后的算法程序CPU占用率

        5 結(jié)束語

        以上分析了整個(gè)XDAIS算法封裝和調(diào)用的具體過程。通過eXpressDSP提供的XDAIS算法組件向?qū)蓸?biāo)準(zhǔn)算法框架,然后編寫符合XDAIS標(biāo)準(zhǔn)的具體應(yīng)用算法。通過此框架生成lib庫文件并提供接口給需要調(diào)用它的工程,在調(diào)用工程中通過線程、通道、核對(duì)象等接口一步步地對(duì)該算法予以封裝,最終建立起含有復(fù)雜算法的RF5框架工程??蚣艿慕⒑退惴ǖ姆庋b過程也證明了RF5強(qiáng)大的擴(kuò)展性和適用性,設(shè)計(jì)人員不用考慮底層就能開發(fā)出多通道復(fù)雜算法的應(yīng)用程序。通過對(duì)算法函數(shù)、核及通道對(duì)象的修改就可輕松移植適合特定工程的算法,在實(shí)際工程應(yīng)用中具有很大的實(shí)用性。

        [1]Texas Instruments Incorporated.Reference frameworks for eXpressDSP software: RF5,an extensive,high-density system[R].Texas Instruments,2003.

        [2]DSP/BIOS driver developer′s guide[R].Texas Instruments,2005.

        [3]TMS320C6000 CSL API reference guide[R].Texas Instruments,2004.

        [4]Texas Instruments Incorporated.TMS320 DSP算法標(biāo)準(zhǔn)[M].徐盛,胡劍凌,譯.北京:清華大學(xué)出版社,2007.

        [5]TMS320 DSP algorithm standard API reference[R].Texas Instruments,2005.

        [6]DSP/BIOS user′s guide[R].Texas Instruments,2002.

        猜你喜歡
        程序工程
        試論我國未決羈押程序的立法完善
        失能的信仰——走向衰亡的民事訴訟程序
        “程序猿”的生活什么樣
        英國與歐盟正式啟動(dòng)“離婚”程序程序
        子午工程
        太空探索(2016年6期)2016-07-10 12:09:06
        創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
        工程
        工程
        工程
        工程
        无码国产精品色午夜| 性高湖久久久久久久久| 丰满多毛的大隂户视频| 一本无码人妻在中文字幕| 高清亚洲精品一区二区三区| 免费国产在线精品一区二区三区免| 国产精品视频免费播放 | 最近中文字幕大全在线电影视频| 久久国产精品二区99| 精品日本韩国一区二区三区| 全程国语对白资源在线观看| av日韩一区二区三区四区| 色偷偷偷久久伊人大杳蕉| 亚洲成人电影在线观看精品国产| 精品国偷自产在线不卡短视频| 女同另类一区二区三区| 国产精品久久久福利| 日本做受高潮好舒服视频 | 日本一区二区在线高清| 无码人妻人妻经典| 伊人网视频在线观看| 日韩精品少妇专区人妻系列| 91超精品碰国产在线观看| 色老板精品视频在线观看| 久久99国产亚洲高清| 亚洲免费观看一区二区三区| 亚洲视频免费在线观看| 国产精品激情| 欧美a级在线现免费观看| 日本中文字幕人妻精品| 日韩综合无码一区二区| 欧美老熟妇欲乱高清视频| 国产欧美久久久精品影院| 青青草好吊色在线观看| 中文字幕有码无码人妻av蜜桃 | 亚洲综合一区中文字幕| 成人免费毛片aaaaaa片| 青青青伊人色综合久久亚洲综合| 亚洲无人区乱码中文字幕动画 | 日本女同av在线播放| 99久久亚洲精品日本无码|