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
主站蜘蛛池模板: 99视频精品在线观看| 啊嗯不日本网站| 亚洲男人的天堂在线| 成人国产精品一级毛片天堂 | 国产sm重味一区二区三区| 一级全免费视频播放| 国产成人精品一区二区| 亚洲高清日韩heyzo| AV无码一区二区三区四区| 日韩精品高清自在线| 亚洲天堂伊人| 国产毛片久久国产| 国产91色在线| 日韩欧美一区在线观看| 69国产精品视频免费| 亚洲精品麻豆| 毛片在线播放网址| 亚洲中文精品久久久久久不卡| 一级做a爰片久久免费| 国产99热| 国产乱子伦视频在线播放| 精品精品国产高清A毛片| 日本精品αv中文字幕| 国产无码在线调教| 91精品国产自产在线老师啪l| 日韩国产 在线| 欧美色伊人| 精品三级在线| 国产午夜看片| 手机精品福利在线观看| www.精品视频| 成人免费午间影院在线观看| 麻豆精品国产自产在线| 国产清纯在线一区二区WWW| 国产三级成人| 永久天堂网Av| 青草视频免费在线观看| 操操操综合网| 成人亚洲视频| 亚洲色婷婷一区二区| 国产精品视频系列专区| 国产成人成人一区二区| 亚洲天堂精品在线观看| 5555国产在线观看| 亚洲三级网站| 亚洲免费福利视频| jizz亚洲高清在线观看| 亚洲免费黄色网| 国产网站免费| 久久免费观看视频| 亚洲日本中文字幕天堂网| 亚洲人成网站日本片| 人人妻人人澡人人爽欧美一区| 国产流白浆视频| 免费国产不卡午夜福在线观看| 国产一区二区精品福利| 国产一区二区三区精品久久呦| 欧美精品成人一区二区视频一| 国产免费网址| 国产乱子伦无码精品小说| 亚洲性网站| 一本综合久久| 青青青视频免费一区二区| 五月婷婷精品| 一级毛片免费高清视频| 国产激情影院| 少妇高潮惨叫久久久久久| 在线观看国产黄色| 国产乱子伦一区二区=| 亚洲欧美在线精品一区二区| 亚洲午夜天堂| 欧美一区二区自偷自拍视频| 国产激爽大片在线播放| 四虎影视无码永久免费观看| 好久久免费视频高清| 干中文字幕| 亚洲色图欧美在线| 欧美成a人片在线观看| 国产美女人喷水在线观看| 国产成人三级| 91久久夜色精品国产网站| 国产精品专区第1页|