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

        ?

        基于Android和DM3730的視頻編碼軟件開發(fā)

        2013-01-31 05:23:34龔澤摯藍曉柯鄭雅羽
        電視技術(shù) 2013年17期
        關(guān)鍵詞:編碼標準底層應(yīng)用程序

        龔澤摯,藍曉柯,鄭雅羽

        (浙江工業(yè)大學 信息工程學院,浙江 杭州310023)

        近年來,隨著社會的不斷進步和經(jīng)濟的不斷發(fā)展,信息化已經(jīng)深刻影響了人類的社會形態(tài)。在半導體存儲、通信、互聯(lián)網(wǎng)技術(shù)、計算機技術(shù)的不斷融合與發(fā)展的基礎(chǔ)上,數(shù)字多媒體技術(shù)得以飛速發(fā)展。其中,對數(shù)字視頻編碼技術(shù)的相關(guān)應(yīng)用提出了更高的要求,如視頻會議、可視會議、數(shù)字廣播電視、視頻監(jiān)控,無線網(wǎng)絡(luò)通信等[1]。

        Android是Google開發(fā)的一套基于Linux的開源操作系統(tǒng),現(xiàn)已廣泛應(yīng)用于智能手機、移動終端等設(shè)備[2]。Android系統(tǒng)底層主要使用C/C++開發(fā),應(yīng)用程序采用Java語言開發(fā)。由于Android系統(tǒng)的開源特性,其應(yīng)用軟件的可移植性強,軟件使用度較高。

        DM3730是TI最新的基于DaVinci架構(gòu)設(shè)計的數(shù)字媒體微處理器。主要由1 GHz的ARM Cortex-A8 Core[3]和800 MHz TMS320C64x+TM DSP Core兩部分組成。由于其具有雙核以及強大的多媒體數(shù)據(jù)處理能力,成為了當前視頻處理器的首選。

        針對基于DM3730和Android的視頻編解碼軟件開發(fā),TI專門提供了一套DVSDK方便開發(fā)者使用。TI的開源代碼只實現(xiàn)了解碼功能,編碼的實現(xiàn)還有待開發(fā)。因此,編碼功能的實現(xiàn)也成為了當前企業(yè)、科研所和高校研究的熱點。

        基于以上內(nèi)容,本文以DM3730為硬件平臺、Android為操作系統(tǒng),設(shè)計的視頻編碼軟件可以控制相關(guān)的編碼參數(shù),實現(xiàn)對視頻文件的簡單編碼。因此,本文對基于DM3730和Android系統(tǒng)的視頻編碼軟件開發(fā)的研究,具有很好的應(yīng)用價值,也具有很高的商業(yè)價值。

        1 視頻編碼軟件整體架構(gòu)

        本視頻編碼軟件是基于Android操作系統(tǒng)設(shè)計而成。Android系統(tǒng)的架構(gòu)主要可以分為以下5個部分:Linux Kernel,Android Runtime,Libraries,Application Framework和Application[4]。具體如圖1所示。

        圖1 Android系統(tǒng)架構(gòu)

        根據(jù)Android系統(tǒng)特有的架構(gòu),本文設(shè)計的視頻編碼軟件主要需要實現(xiàn)以下3部分內(nèi)容:Android用戶操作界面、JNI層的動態(tài)庫、底層的視頻編碼庫。視頻編碼軟件的整體架構(gòu)如圖2所示。

        圖2 視頻編碼軟件架構(gòu)

        圖2 中的軟件架構(gòu)表明:首先運行界面的應(yīng)用程序,界面程序?qū)⒃O(shè)置好的編碼參數(shù)傳遞到JNI層,JNI層解析以后控制底層的編碼程序完成視頻的編碼,最后回調(diào)一定的信息到用戶界面,完成整個流程。

        2 視頻編碼軟件的實現(xiàn)

        視頻編碼軟件的實現(xiàn)最為核心的內(nèi)容是底層編碼程序的開發(fā),需要根據(jù)TI的Codec Engine編寫程序,使得ARM和DSP完成通信,在DSP端完成視頻編碼。同時為方便用戶的操作,需要設(shè)計用戶操作界面,以便對編碼的相關(guān)參數(shù)如編碼標準、編碼碼率、編碼幀數(shù)等進行控制,而該部分的真正實現(xiàn)需要通過設(shè)計JNI層才能控制底層的核心視頻編碼程序。

        2.1 基于Codec Engine的底層視頻編碼程序的實現(xiàn)

        2.1.1 編解碼引擎(Codec Engine)的使用

        Codec Engine就是DaVinci系統(tǒng)里用來啟動和執(zhí)行xDAIS算法的一組API集合[5]。Codec Engine的通信框架是遠程調(diào)用思想在DaVinci系統(tǒng)上的實現(xiàn)。其目的是在應(yīng)用程序端調(diào)用另一個遠程應(yīng)用程序時,采用與本地調(diào)用相同的調(diào)用方式。圖3所示的就是Codec Engine在ARM和DSP上的通信架構(gòu)。

        圖3 Codec Engine通信架構(gòu)

        Codec Engine的API包括核心引擎應(yīng)用編程接口(Engine API)和多媒體算法應(yīng)用編程接口(VISA API)。核心Engine API模塊完成打開和關(guān)閉Engine;VISA API模塊是Codec Engine中的主要操作模塊,主要完成編解碼算法實例的創(chuàng)建,算法的執(zhí)行與控制以及算法實例的清除。

        2.1.2 基于DMAI的底層編碼程序的實現(xiàn)

        DMAI(DaVinci Multimedia Application Interface)是DSP端給ARM端應(yīng)用程序的調(diào)用接口,是操作系統(tǒng)和Codec Engine之上的應(yīng)用接口,可以方便地應(yīng)用在Davinci平臺上。其結(jié)構(gòu)框圖如圖4所示。

        圖4 DMAI框圖

        本文中主要基于Codec Engine并使用DMAI的Buffer和Venc1模塊來實現(xiàn)底層的視頻編碼程序。程序的核心模塊可分為以下4個部分。

        底層視頻編碼程序的流程圖如圖5所示。

        圖5 編碼流程圖

        2.2 視頻編碼軟件JNI層的實現(xiàn)

        2.2.1 Android系統(tǒng)JNI層的開發(fā)流程

        在Android平臺上,JNI就是一座將Native世界和Java世界有效地連接在一起的橋梁,如圖6展示了Android平臺上JNI所處的位置。

        圖6 Android平臺中JNI所處位置

        Android系統(tǒng)的應(yīng)用程序是基于Java語言開發(fā)的,因此在Android系統(tǒng)上開發(fā)JNI程序和普通的JNI開發(fā)相類似,當然也有其自身的特點。具體的開發(fā)步驟如下:

        步驟1,在CCS5.1創(chuàng)建一個Android Project,在Java程序源碼中聲明Class類名,在類的實現(xiàn)中聲明以native開頭的本地函數(shù)[6]。

        步驟2,使用Java編譯器自帶的Javah命令,自動生成在JNI中開發(fā)所需的.h頭文件。

        步驟3,JNI層程序的編寫,主要使用C/C++完成。添加步驟2中的生成.h頭文件到當前JNI程序中,實現(xiàn).h中聲明的本地函數(shù),同時實現(xiàn)JNI_OnLoad()函數(shù)完成JNI層的動態(tài)和靜態(tài)注冊。

        步驟4,根據(jù)Android系統(tǒng)程序的編譯方法,只需創(chuàng)建Android.mk。使用Android系統(tǒng)自帶的編譯環(huán)境以及相應(yīng)編譯命令完成JNI層程序的編譯。

        2.2.2 Android系統(tǒng)JNI層的實現(xiàn)

        根據(jù)Android系統(tǒng)JNI層的開發(fā)步驟,本文中Android應(yīng)用層設(shè)計的是一個用戶操作界面,主要功能是設(shè)置相關(guān)編碼器參數(shù)來控制底層的視頻編碼程序,而控制的實現(xiàn)需要通過JNI層才可以完成。

        這里以encode()函數(shù)在JNI層本地實現(xiàn)的代碼為例,解釋JNI在Android系統(tǒng)中的橋梁作用:

        JNIEXPORT jint JNICALL

        Java_com_andorid_gzz_dm3730_EncodeActivity_

        encode(JNIEnv*env,jobject obj)

        {

        int temp;

        temp=encode(args);//底層編碼程序的接口

        LOGI(“come back value:%d”,temp);

        return 1;

        }

        最終需將底層的視頻編碼程序編譯成為一個共享庫libdm3730_encode_sharelibrary.so,并提供encode函數(shù)接口,將JNI層的程序編譯成為libdm3730_encode.so庫,該共享庫就是Android應(yīng)用程序啟動需加載的內(nèi)容。

        2.3 視頻編碼軟件用戶操作界面的實現(xiàn)

        Android系統(tǒng)下開發(fā)用戶操作界面(GUI)使用Java語言完成,在CCS5.1下可以方便地使用圖形化編程完成對main.xml的編寫。根據(jù)本文對用戶操作界面的設(shè)計需求,完成如圖7所示的用戶界面布局圖。根據(jù)圖7設(shè)計的用戶界面,具體控件實現(xiàn)的功能如圖8所示。

        從圖8中可以看出,EncodeActivity類主要完成的工作是用戶界面的創(chuàng)建。以圖8中的按鈕button1為例,它用于向JNI層發(fā)送啟動編碼的命令,在JNI層中實現(xiàn)對底層視頻編碼程序的調(diào)用,其在用戶操作界面中的部分代碼如下所示:

        private Button button1=null;

        private native int encode();

        private native void setCodecName(int codec);

        button1=(Button)findViewById(R.id.button1);

        listener1=new Button.OnClickListener(){

        public void onClick(View v){

        encode();}

        button1.setOnClickListener(listener1);}

        從button1實例的實現(xiàn)過程來看,通過new Button.OnClickListener()建立button1的事件監(jiān)聽并建立鏈接,當按鈕被按下后的事件處理是啟動encode,實際效果是啟動JNI層的encode函數(shù),并將編碼器參數(shù)各成員傳入底層的視頻編碼程序完成最終的視頻編碼。

        3 視頻編碼軟件測試與分析

        將編譯通過的庫文件和應(yīng)用程序安裝到TI的AM/DM37x EVM評估板上。如圖9就是視頻編碼軟件在評估板的LCD上顯示的用戶操作界面,具有選擇編碼的文件、編碼的類型、編碼的像素、編碼的碼率、編碼的幀數(shù)以及啟動編碼和退出編碼程序等功能。

        圖9 DM3730上運行的用戶操作界面(截圖)

        啟動應(yīng)用程序進入視頻編碼軟件的操作界面,設(shè)置編碼參數(shù),在終端下聯(lián)機觀察評估板Android文件系統(tǒng)下編碼文件的變化,測試結(jié)果如表1所示。

        表1 視頻編碼軟件系統(tǒng)測試結(jié)果

        表1中的test1.yuv是以UYVY格式存儲的視頻數(shù)據(jù)文件,像素為176×144,test1.264是以H.264[7]為視頻編碼標準經(jīng)編碼后產(chǎn)生的文件,test1.m4v是以MPEG-4為編碼標準經(jīng)編碼后產(chǎn)生的文件。

        最后,本文使用專用視頻數(shù)據(jù)分析軟件對視頻數(shù)據(jù)進行分析,圖10所示的是原始的視頻圖像,圖11所示的是原始視頻經(jīng)編碼后再回放的圖像。

        從表1的測試結(jié)果以及圖10和圖11的對比分析可以總結(jié)出以下幾點內(nèi)容:

        1)設(shè)計的視頻編碼軟件從用戶界面的操作到對底層視頻編碼程序的調(diào)用已經(jīng)能順利的完成。

        2)編碼后的視頻圖像經(jīng)過回放,和原始的視頻圖像對比,發(fā)現(xiàn)圖像質(zhì)量依舊較好,說明整個視頻編碼軟件運行良好。

        3)從上述的表格數(shù)據(jù)中,可以發(fā)現(xiàn)視頻編碼壓縮率受編碼標準的影響很大,H.264作為當前使用最廣泛的視頻編碼標準,編碼的壓縮率相對較高。

        4 結(jié)束語

        本文對基于Android和DM3730處理器的視頻編碼軟件開發(fā)的研究,分別實現(xiàn)了底層視頻編碼程序的開發(fā),Android系統(tǒng)JNI層的開發(fā)以及用戶操作界面的開發(fā),并最終完成視頻編碼軟件的系統(tǒng)測試。從測試結(jié)果看,以DM3730處理器為核心、以Android系統(tǒng)為基礎(chǔ)開發(fā)的基于Codec Engine的視頻編碼軟件,具有可操作性以及良好的視頻編碼性能。基于本文的研究結(jié)果,可將底層的視頻編碼程序設(shè)計成為編碼器組件加載到Android系統(tǒng)自帶的多媒體框架Stagefright中,方便開發(fā)更多與視頻編碼相關(guān)的應(yīng)用軟件。

        [1]高文,趙德斌,馬思偉.數(shù)字視頻編碼技術(shù)原理[M].北京:北京科學出版社,2010.

        [2]蔣耘晨.Android系統(tǒng)原理和實戰(zhàn)應(yīng)用[M].北京:北京理工大學出版社,2011.

        [3]郭波,樊多,彭凱.基于DaVinc技術(shù)的嵌入式視頻監(jiān)控系統(tǒng)設(shè)計[J].測控技術(shù),2009,28(10):82-88.

        [4]公磊,周聰.基于Android的移動終端應(yīng)用程序開發(fā)與研究[J].計算機與現(xiàn)代化,2008(5):81-89.

        [5]彭啟琮.達芬奇技術(shù)數(shù)——數(shù)字圖像/視頻信號處理新平臺[M].北京:電子工業(yè)出版,2008.

        [6]楊豐盛.Android應(yīng)用開發(fā)揭秘[M].北京:機械工業(yè)出版社,2010.

        [7]THOMAS W,GARY JS,GISLE B,et al.Overview of the H.264/AVC video coding standard[J].IEEE Trans.Cricuits and System for Video Technology,2003,13(7):560-576.

        猜你喜歡
        編碼標準底層應(yīng)用程序
        航天企業(yè)提升采購能力的底層邏輯
        國家醫(yī)保局發(fā)布《關(guān)于貫徹執(zhí)行15項醫(yī)療保障信息業(yè)務(wù)編碼標準的通知》
        高校標準化主數(shù)據(jù)平臺建設(shè)與應(yīng)用
        刪除Win10中自帶的應(yīng)用程序
        電腦報(2019年12期)2019-09-10 05:08:20
        高保真壓縮技術(shù)的商用價值
        鐵路工程信息模型分類和編碼標準研究
        回到現(xiàn)實底層與悲憫情懷
        小說林(2014年5期)2014-02-28 19:51:47
        略論“底層”
        雜文選刊(2013年7期)2013-02-11 10:41:11
        關(guān)閉應(yīng)用程序更新提醒
        電腦迷(2012年15期)2012-04-29 17:09:47
        三星電子將開設(shè)應(yīng)用程序下載商店
        午夜福利理论片在线观看| 人妻乱交手机在线播放| 中文字幕乱码日本亚洲一区二区| 亚洲日韩激情无码一区| 欧美大香线蕉线伊人久久| 日韩中文字幕网站| 韩国三级黄色一区二区| 国产精品区一区二区三在线播放| 1区2区3区高清视频| 亚洲av在线播放观看| 国产一区二区视频在线看| 久久久久成人精品免费播放动漫| 日本丰满熟妇bbxbbxhd| 无码一区二区三区不卡AV| 国产白浆一区二区三区佳柔| 亚洲日韩精品a∨片无码加勒比| 18禁超污无遮挡无码免费游戏| 911国产在线观看精品| 久久精见国产亚洲av高清热| 亚洲av成人片色在线观看高潮| 亚洲中文久久精品无码ww16| 中文字幕亚洲区第一页| 大量漂亮人妻被中出中文字幕| 97人人模人人爽人人少妇| 亚洲国产夜色在线观看| 日本高清无卡一区二区三区| www夜片内射视频在观看视频| 久久99精品国产99久久6尤物| 久久中文字幕亚洲精品最新| 日本午夜艺术一区二区| 女人被狂躁c到高潮| 精品手机在线视频| 亚洲国产黄色在线观看| 日韩经典午夜福利发布| 婷婷成人基地| 亚洲粉嫩av一区二区黑人| 女同视频一区二区在线观看 | 中国丰满熟妇av| 少妇bbwbbw高潮| 精品少妇一区二区三区免费| 天码人妻一区二区三区|