999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2013-01-31 05:23:34龔澤摯藍(lán)曉柯鄭雅羽
電視技術(shù) 2013年17期
關(guān)鍵詞:程序用戶系統(tǒng)

龔澤摯,藍(lán)曉柯,鄭雅羽

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Codec Engine就是DaVinci系統(tǒng)里用來啟動(dòng)和執(zhí)行xDAIS算法的一組API集合[5]。Codec Engine的通信框架是遠(yuǎn)程調(diào)用思想在DaVinci系統(tǒng)上的實(shí)現(xiàn)。其目的是在應(yīng)用程序端調(diào)用另一個(gè)遠(yuǎn)程應(yīng)用程序時(shí),采用與本地調(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中的主要操作模塊,主要完成編解碼算法實(shí)例的創(chuàng)建,算法的執(zhí)行與控制以及算法實(shí)例的清除。

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

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

圖4 DMAI框圖

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

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

圖5 編碼流程圖

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

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

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

圖6 Android平臺(tái)中JNI所處位置

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

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

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

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

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

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

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

這里以encode()函數(shù)在JNI層本地實(shí)現(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;

}

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

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

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

從圖8中可以看出,EncodeActivity類主要完成的工作是用戶界面的創(chuàng)建。以圖8中的按鈕button1為例,它用于向JNI層發(fā)送啟動(dòng)編碼的命令,在JNI層中實(shí)現(xiàn)對(duì)底層視頻編碼程序的調(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實(shí)例的實(shí)現(xiàn)過程來看,通過new Button.OnClickListener()建立button1的事件監(jiān)聽并建立鏈接,當(dāng)按鈕被按下后的事件處理是啟動(dòng)encode,實(shí)際效果是啟動(dòng)JNI層的encode函數(shù),并將編碼器參數(shù)各成員傳入底層的視頻編碼程序完成最終的視頻編碼。

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

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

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

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

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

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

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

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

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

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

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

4 結(jié)束語

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

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

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

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

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

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

[6]楊豐盛.Android應(yīng)用開發(fā)揭秘[M].北京:機(jī)械工業(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.

猜你喜歡
程序用戶系統(tǒng)
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無人機(jī)系統(tǒng)
ZC系列無人機(jī)遙感系統(tǒng)
北京測繪(2020年12期)2020-12-29 01:33:58
試論我國未決羈押程序的立法完善
“程序猿”的生活什么樣
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
英國與歐盟正式啟動(dòng)“離婚”程序程序
關(guān)注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關(guān)注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關(guān)注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
主站蜘蛛池模板: 国产毛片基地| 秋霞一区二区三区| 国产九九精品视频| 国产精品私拍99pans大尺度| 香蕉在线视频网站| 国产免费黄| 午夜精品区| 久久精品丝袜| 色成人亚洲| 中文字幕在线播放不卡| 性欧美久久| 国产本道久久一区二区三区| 成人免费视频一区| 在线观看视频99| 一级毛片在线免费看| 亚洲一区二区日韩欧美gif| 亚洲欧美激情小说另类| 亚洲无限乱码一二三四区| 日本a级免费| 无码人妻热线精品视频| AV无码无在线观看免费| 国产亚洲高清在线精品99| 日本不卡免费高清视频| 3D动漫精品啪啪一区二区下载| 久久这里只有精品66| 精品无码视频在线观看| 国产三级韩国三级理| 中文天堂在线视频| 无码精品国产VA在线观看DVD| 国产9191精品免费观看| 亚洲国模精品一区| 尤物精品视频一区二区三区| AV不卡国产在线观看| 亚洲永久精品ww47国产| 一边摸一边做爽的视频17国产| 欧美亚洲国产日韩电影在线| 亚洲欧洲日韩综合| 露脸国产精品自产在线播| 好吊日免费视频| 国产精品熟女亚洲AV麻豆| 国产成人精品日本亚洲77美色| 国产超薄肉色丝袜网站| 欧美日韩一区二区在线播放| 伊人色在线视频| 四虎成人精品在永久免费| 四虎精品国产AV二区| 日韩美毛片| 国产综合在线观看视频| 丰满人妻一区二区三区视频| 四虎永久免费在线| 青草91视频免费观看| 99青青青精品视频在线| 日本午夜影院| 国产亚洲精品yxsp| 国产精品夜夜嗨视频免费视频| 一本大道视频精品人妻| 怡红院美国分院一区二区| 在线观看无码av五月花| 国产熟女一级毛片| 国产成人综合久久精品下载| 综合色天天| 黄片一区二区三区| 欧美成人影院亚洲综合图| 欧美午夜性视频| 成人va亚洲va欧美天堂| 国产精品午夜福利麻豆| 国产区福利小视频在线观看尤物| 国产精品v欧美| 999国内精品视频免费| 日韩在线2020专区| 成人字幕网视频在线观看| AV网站中文| 四虎永久免费地址| 亚洲妓女综合网995久久| 亚洲午夜片| 国产区在线看| 亚洲欧美日韩久久精品| 97av视频在线观看| 在线播放91| 99久久亚洲精品影院| 精品一区国产精品| 成人午夜视频网站|