• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    Linux攝像頭驅(qū)動的設(shè)計(jì)優(yōu)化及其對應(yīng)的Android下HAL封裝設(shè)計(jì)方法探究

    2016-11-09 01:11:43李宇成梁宗希
    關(guān)鍵詞:預(yù)覽調(diào)用攝像頭

    李宇成 梁宗希

    (北方工業(yè)大學(xué)電氣與控制工程學(xué)院 北京 100144)

    ?

    Linux攝像頭驅(qū)動的設(shè)計(jì)優(yōu)化及其對應(yīng)的Android下HAL封裝設(shè)計(jì)方法探究

    李宇成梁宗希*

    (北方工業(yè)大學(xué)電氣與控制工程學(xué)院北京 100144)

    針對Android系統(tǒng)下攝像頭驅(qū)動程序不開源的現(xiàn)狀,將借鑒Linux下的相關(guān)驅(qū)動程序,提出一體化設(shè)計(jì)方案,對驅(qū)動加以改進(jìn)設(shè)計(jì)和優(yōu)化,特別是在FIMC驅(qū)動中,將FIMC和ov9650合成為了一個(gè)設(shè)備,顯著提高了驅(qū)動的運(yùn)行效率。然后,通過對Android框架的分析,設(shè)計(jì)一種HAL模塊,采用三個(gè)線程并行完成攝像頭功能,并用此模塊對驅(qū)動進(jìn)行封裝。內(nèi)容包括Linux攝像頭驅(qū)動的開發(fā)與優(yōu)化,Android HAL模塊的設(shè)計(jì),以及將Linux攝像頭驅(qū)動程序進(jìn)行HAL封裝的具體步驟。最后,給出實(shí)驗(yàn)結(jié)果。

    Linux攝像頭驅(qū)動設(shè)計(jì)與優(yōu)化Android HAL設(shè)計(jì)HAL封裝方法

    0 引 言

    雖然在Linux下有一些攝像頭驅(qū)動的資料,但是這些驅(qū)動都不能夠直接應(yīng)用到Android系統(tǒng)下。導(dǎo)致這種現(xiàn)象的原因是:(1) Linux系統(tǒng)結(jié)構(gòu)與Android系統(tǒng)本身有很大區(qū)別;(2) Android框架底層有HAL(硬件抽象層),它將攝像頭驅(qū)動與Android系統(tǒng)隔離。因而,只有將Linux攝像頭驅(qū)動進(jìn)行重新設(shè)計(jì)和優(yōu)化,方能在Android系統(tǒng)下使用。而適用于Android系統(tǒng)的攝像頭驅(qū)動的設(shè)計(jì)與優(yōu)化方法,鮮見有文獻(xiàn)涉及。

    另一方面,隨著Android系統(tǒng)的推廣,手機(jī)、移動設(shè)備以及各種智能終端大量采用Android作為操作系統(tǒng)[1]。在Android系統(tǒng)中,與硬件相關(guān)的驅(qū)動程序大都以HAL形式封裝起來了,目的是保護(hù)軟件開發(fā)商的利益。例如,HAL中的Camera HAL,是聯(lián)系上層攝像頭接口與下層Linux攝像頭驅(qū)動的紐帶[2],它的設(shè)計(jì)好壞,直接影響到攝像頭功能的發(fā)揮[3]。目前,很多Android硬件廠商如三星、高通等都有自己的Camera HAL,別人無法獲得他們的源代碼,這就使得普通開發(fā)者無從研究HAL,給在Android下提高攝像頭效能和進(jìn)一步開發(fā)攝像頭程序帶來了很大的困難。

    鑒于上述現(xiàn)狀,很有必要研究適用于Android系統(tǒng)的Linux攝像頭驅(qū)動設(shè)計(jì)與優(yōu)化方法以及Android Camera HAL的封裝方法,以便設(shè)計(jì)者在此基礎(chǔ)之上開發(fā)自己的應(yīng)用程序。本文首先借鑒Linux資料,提取Linux下的攝像頭驅(qū)動的部分代碼加以補(bǔ)充設(shè)計(jì)和優(yōu)化,然后根據(jù)對Android架構(gòu)的分析,設(shè)計(jì)了一個(gè)s5pv210 Camera HAL模塊,并在模塊內(nèi)實(shí)現(xiàn)了一種Camera HAL的封裝方法。為在Android系統(tǒng)中利用和獲取Linux下的巨大開源資源提供了一個(gè)范例。

    1 Linux攝像頭模塊設(shè)計(jì)與優(yōu)化

    Linux下攝像頭模塊主要包括四個(gè)方面[4-6]:V4L2驅(qū)動,F(xiàn)IMC模塊,攝像頭驅(qū)動以及i2c驅(qū)動。本文攝像頭模塊設(shè)計(jì)架構(gòu)如圖1所示,F(xiàn)IMC模塊調(diào)用攝像頭驅(qū)動并為V4L2提供接口,攝像頭驅(qū)動獲取視頻數(shù)據(jù)并傳給FIMC,i2c驅(qū)動完成攝像頭與開發(fā)板之間的通信。

    圖1 Linux攝像頭驅(qū)動設(shè)計(jì)框架

    1.1Linux攝像頭模塊與Android Camera HAL的一體化設(shè)計(jì)

    Linux為建立視頻設(shè)備工作環(huán)境,需要借助V4L2架構(gòu),建立struct video_device,而struct video_device的控制函數(shù)struct v4l2_ioctl_ops和文件操作函數(shù)struct v4l2_file_operations等由FIMC驅(qū)動實(shí)現(xiàn)。本文建議的一體化設(shè)計(jì),是將struct v4l2_ioctl_ops和struct v4l2_file_operations的成員函數(shù)videoc_reqbufs(),videoc_querybuf(),open(),release()等封裝進(jìn)V4L2驅(qū)動核心,再由Android HAL對V4L2進(jìn)行封裝。Android上層應(yīng)用程序訪問Camera HAL時(shí),根據(jù)本設(shè)計(jì),會調(diào)用到V4L2,進(jìn)而調(diào)用攝像頭驅(qū)動。

    根據(jù)Linux驅(qū)動原理,V4L2為調(diào)用攝像頭驅(qū)動提供統(tǒng)一接口,本設(shè)計(jì)中將V4L2直接嵌入HAL,使Linux攝像頭驅(qū)動與Android HAL聯(lián)為一體。同時(shí),V4L2與HAL之間并未額外添加新的結(jié)構(gòu)層,而是直接把V4L2嵌入到HAL之中,這使整個(gè)攝像頭模塊獲得了一個(gè)較高的運(yùn)行效率。攝像頭驅(qū)動與Android Camera HAL一體化設(shè)計(jì)方案如圖2所示。

    圖2 Linux攝像頭模塊與Android Camera HAL一體化方案

    1.2i2c驅(qū)動設(shè)計(jì)

    攝像頭的工作方式需要通過i2c總線來進(jìn)行設(shè)置,因此,本質(zhì)上可以認(rèn)為攝像頭是一個(gè)i2c設(shè)備,而在i2c驅(qū)動當(dāng)中,最重要的結(jié)構(gòu)體是i2c_client和i2c_adapter,前者表示一個(gè)i2c從器件,后者代表i2c總線控制器和訪問i2c總線必須的算法。

    圖3所示的驅(qū)動設(shè)計(jì)框圖是整個(gè)i2c設(shè)備數(shù)據(jù)結(jié)構(gòu)的信息。設(shè)備i2c_client,最初是被i2c_new_device()所創(chuàng)建的,并被device_register()在內(nèi)部調(diào)用,掛載到i2c_bus上。掛載上之后,相應(yīng)的設(shè)備文件會在/sys/bus/i2c文件夾下生成。如果設(shè)備名稱和ov9650驅(qū)動匹配成功,對應(yīng)的probe()函數(shù)會被調(diào)用,而且系統(tǒng)會為圖3所示的ov9650結(jié)構(gòu)分配內(nèi)存,并且初始化各種數(shù)據(jù)變量。

    圖3 SCCB驅(qū)動設(shè)計(jì)

    1.3FIMC驅(qū)動設(shè)計(jì)與優(yōu)化

    FIMC主要用于實(shí)現(xiàn)視頻數(shù)據(jù)接口,同時(shí),它也完成圖像數(shù)據(jù)顏色空間的轉(zhuǎn)換操作。由圖4可知,左邊FIMC驅(qū)動的fimc_vid_cap包含了video_device,并且實(shí)現(xiàn)了控制函數(shù)v4l2_ioctl_ops與文件操作函數(shù)v4l2_file_operations等,video_device由圖2中的V4L2驅(qū)動進(jìn)行調(diào)用。

    圖4 優(yōu)化后的fimc驅(qū)動架構(gòu)

    在Linux下,fimc與ov9650是兩個(gè)獨(dú)立的設(shè)備模塊,各自擁有不能互訪的內(nèi)存空間。通常需要映射一塊共享內(nèi)存來完成兩者之間的數(shù)據(jù)交換,其好處是,保證了兩個(gè)驅(qū)動的相互獨(dú)立性,缺點(diǎn)是信息交換不如在同一設(shè)備內(nèi)部來的方便。一種簡單的技巧是,在fimc_dev所屬的media_entity以及ov9650所屬的media_entity之間添加pads和list_head變量,使它們同時(shí)都掛載在了圖4右側(cè)的media_device設(shè)備上,當(dāng)FIMC和ov9650中的media_entity都被初始化之后,fimc_md結(jié)構(gòu)體中的fimc_md_probe()函數(shù)將把fimc與ov9650模塊綁定在一起,初始化之后,F(xiàn)IMC和ov9650就合成為一個(gè)大的設(shè)備。由此,這兩個(gè)模塊就能進(jìn)行無內(nèi)外差別的數(shù)據(jù)完全共享。由于兩個(gè)設(shè)備之間的數(shù)據(jù)訪問同步機(jī)制要比同一設(shè)備內(nèi)(抽象的大設(shè)備)訪問的同步機(jī)制復(fù)雜,因此采用合成大設(shè)備的技巧能略微提高數(shù)據(jù)交換效率,在本文的實(shí)驗(yàn)環(huán)境下,優(yōu)化后的驅(qū)動給攝像頭模塊的幀率帶來了2-3FPS的提升。

    完成Linux下驅(qū)動的優(yōu)化設(shè)計(jì)之后,需要進(jìn)行Android下HAL模塊的設(shè)計(jì)與實(shí)現(xiàn),HAL模塊沒有統(tǒng)一公開的設(shè)計(jì)方法。本文通過對Android框架的仔細(xì)研究,設(shè)計(jì)了s5pv210 HAL模塊,并在其中采用自定義函數(shù)來封裝V4L2接口,實(shí)現(xiàn)Android對Linux驅(qū)動的調(diào)用。

    2 Camera HAL的設(shè)計(jì)與實(shí)現(xiàn)

    Android Camera系統(tǒng)使用Linux攝像頭模塊需要Camera HAL[7-9],本文在Android Camera系統(tǒng)的基礎(chǔ)上,首先設(shè)計(jì)s5pv210 HAL模塊,并在其內(nèi)部嵌入V4L2接口函數(shù)。s5pv210 HAL用于封裝V4L2接口的函數(shù)如圖5所示,其中,startPreview()和stopPreview()用于控制預(yù)覽的啟/停,startRecording()與stopRecording()用于控制視頻的啟/停,takePicture()與cancelPicture()用于拍照和刪除照片,其他內(nèi)容如分配內(nèi)存,攝像頭參數(shù)設(shè)置等,都需要用相應(yīng)的封裝函數(shù)來實(shí)現(xiàn)。

    圖5 s5pv210 HAL中定義的函數(shù)

    本文設(shè)計(jì)的Camera HAL,根據(jù)攝像頭的功能需求實(shí)現(xiàn)了三個(gè)線程。

    1) 預(yù)覽線程:預(yù)覽是拍照和攝像的基礎(chǔ)。

    2) 拍照線程:該線程需要實(shí)現(xiàn)圖像格式數(shù)據(jù)轉(zhuǎn)換。

    3) 攝像線程:屏幕顯示可以調(diào)用預(yù)覽線程,同時(shí),要進(jìn)行格式轉(zhuǎn)換并在本地保存視頻文件。

    S5pv210 HAL的總體設(shè)計(jì)框圖如圖6所示,s5pv210 HAL的框架由預(yù)覽、拍照、攝像三個(gè)部分組成,各部分封裝的過程類似。圖7中預(yù)覽模塊的startpreview()接口函數(shù),其中封裝的是Linux下編寫的V4L2完成攝像頭預(yù)覽的過程。而圖5中的startRecording()接口函數(shù),則屬于攝像模塊,其中封裝的是調(diào)用V4L2完成攝像的過程。與預(yù)覽過程不同的是,攝像的過程包含了格式轉(zhuǎn)換與本地文件的保存功能。各個(gè)模塊雖然功能有差異,但HAL封裝方法相同。下面以預(yù)覽模式為例說明本文HAL的函數(shù)封裝方法。

    圖6 s5pv210 hal總體設(shè)計(jì)

    事實(shí)上,開始預(yù)覽之前,上層應(yīng)用在做完準(zhǔn)備工作(設(shè)置各種參數(shù))之后,僅僅會調(diào)用android::startpreview()這一個(gè)函數(shù),隨后經(jīng)過層層調(diào)用,最終調(diào)用到s5pv210 HAL模塊中的函數(shù)s5pv210 hal::startpreview()。因此,HAL預(yù)覽模塊要做的工作,就是把從設(shè)置V4L2到獲得視頻幀地址的所有過程都封裝到s5pv210 HAL的startpreview()函數(shù)之中,如圖7所示。

    圖7 hal預(yù)覽模塊startpreview()函數(shù)封裝

    本設(shè)計(jì)中,s5pv210 HAL預(yù)覽模塊所包含的具體流程有:1) 打開視頻設(shè)備、設(shè)置視頻格式;2) 分配內(nèi)存、讀取數(shù)據(jù);3) 數(shù)據(jù)回調(diào)。從程序的健壯性考慮,上述步驟不應(yīng)直接整體封裝到startpreview()函數(shù)之中,而應(yīng)該分成多個(gè)自定義函數(shù),最后再把這些函數(shù)嵌入進(jìn)預(yù)覽模塊startpreview()中。

    下面以O(shè)V9650為例,來實(shí)現(xiàn)預(yù)覽模塊的三個(gè)部分。

    (1) 打開視頻設(shè)備、設(shè)置視頻格式的實(shí)現(xiàn)

    打開視頻設(shè)備使用的是Linux驅(qū)動下的v4l2接口中的open()函數(shù),此函數(shù)會調(diào)用fimc驅(qū)動中的open()函數(shù)的實(shí)現(xiàn)體,最終實(shí)現(xiàn)設(shè)備文件的打開,視頻格式的設(shè)置使用ioctl()函數(shù),該函數(shù)經(jīng)過V4L2,fimc最終調(diào)用攝像頭驅(qū)動,通過i2c對攝像頭進(jìn)行參數(shù)設(shè)置。

    void Ov965xCamera::init() {

    struct v4l2_format fmt;

    struct v4l2_requestbuffers req;

    struct v4l2_buffer b;

    captureBuf =

    (videobuffer*)calloc(1,sizeof(videobuffer));

    //分配緩存

    enum v4l2_buf_type type =

    V4L2_BUF_TYPE_VIDEO_CAPTURE;

    v4l2_fd =

    open(″/dev/video0″, O_RDWR | O_NONBLOCK);

    //打開視頻設(shè)備

    ……

    }

    這是嵌入到預(yù)覽模塊startpreview()函數(shù)內(nèi)的一個(gè)自定義函數(shù),其中聲明了V4L2視頻格式變量,內(nèi)存變量等,并打開了攝像頭設(shè)備文件,得到了文件句柄。

    其中,省略的部分里還包含設(shè)置視頻格式,檢查V4L2兼容性等其他操作。設(shè)置視頻的長、寬和格式的方法如下所示。

    if(v4l2_fd != -1){

    memset(&fmt, 0, sizeof fmt);

    //設(shè)置攝像頭輸出參數(shù)

    fmt.type =

    V4L2_BUF_TYPE_VIDEO_CAPTURE;

    //設(shè)置v4l2模式

    fmt.fmt.pix.width = mWidth;

    //設(shè)置寬

    fmt.fmt.pix.height = mHeight;

    //設(shè)置高

    fmt.fmt.pix.pixelformat =

    V4L2_PIX_FMT_RGB565;

    //設(shè)置視頻格式

    fmt.fmt.pix.sizeimage =

    (fmt.fmt.pix.width * fmt.fmt.pix.height * 2);

    fmt.fmt.pix.field = V4L2_FIELD_NONE;

    if (ioctl(v4l2_fd, VIDIOC_S_FMT, &fmt) < 0) {

    LOGE(″cannot set fmts ″);

    return;

    }

    ……

    }

    (2) 分配內(nèi)存、讀取數(shù)據(jù)的實(shí)現(xiàn)

    進(jìn)程之間傳遞大量數(shù)據(jù)時(shí),一般使用共享內(nèi)存的方式。在Android Binder IPC中,Android系統(tǒng)實(shí)現(xiàn)了一個(gè)匿名共享內(nèi)存子系統(tǒng)。這種Android特有的進(jìn)程間共享內(nèi)存的方式避免了內(nèi)存拷貝,代之以在進(jìn)程間傳遞內(nèi)存基址和偏移值。

    在Android的應(yīng)用程序框架層,提供了兩個(gè)C++類MemoryBase和MemoryHeapBase來使用匿名共享內(nèi)存。下述代碼段的initheap()函數(shù),是本文封裝到預(yù)覽模塊的另一個(gè)自定義函數(shù),用于建立程序的緩存。initheap()函數(shù)首先創(chuàng)建堆內(nèi)存MemoryHeapBase,然后創(chuàng)建kBufferCount塊分割內(nèi)存,MemoryBase將堆內(nèi)存分割,每一塊用來存儲一幀視頻。開辟好內(nèi)存,就可以讀取,處理數(shù)據(jù)了。

    void CameraHardware::initHeap(){

    //開辟Android下內(nèi)存空間

    int preview_width, preview_height;

    mParameters.getPreviewSize 〗(&preview_width, &preview_height);

    int how_big =

    preview_width * preview_height*2;

    //rgb565

    mPreviewFrameSize = how_big;

    mPreviewHeap = new MemoryHeapBase

    (mPreviewFrameSize * kBufferCount);

    for (int i = 0; i < kBufferCount; i++) {

    //開辟4塊緩存

    mBuffers[i] =

    new MemoryBase(mPreviewHeap, i * 〗mPreviewFrameSize, mPreviewFrameSize);

    }

    mOv9650Camera = new Ov9650Camera

    (preview_width, preview_height);

    }

    讀取數(shù)據(jù)的過程被封裝到如下自定義函數(shù)Ov965x Camera::getNextFrameAsRgb565()中,該函數(shù)通過調(diào)用V4L2的接口,采用標(biāo)準(zhǔn)的V4L2獲取數(shù)據(jù)的方式獲取數(shù)據(jù),如下:

    void Ov965xCamera::getNextFrameAsRgb565(uint16_t *buffer) {

    struct v4l2_buffer camb;

    memset(&camb, 0, sizeof camb);

    camb.type =

    V4L2_BUF_TYPE_VIDEO_CAPTURE;

    camb.memory = V4L2_MEMORY_MMAP;

    camb.index = 0;

    ioctl(v4l2_fd, VIDIOC_DQBUF, &camb);

    memcpy(buffer,(uint16_t *)

    captureBuf[camb.index].ldata,mWidth*mHeight*2);

    //把數(shù)據(jù)從內(nèi)核空間復(fù)制到用戶空間

    ioctl (v4l2_fd, VIDIOC_QBUF, &camb);

    }

    (3) 數(shù)據(jù)回調(diào)的實(shí)現(xiàn)

    在startpreview()函數(shù)中,還包含一部分功能語句。例如,上述讀取完成之后,直接將幀數(shù)據(jù)的內(nèi)存地址傳給系統(tǒng)的回調(diào)函數(shù)mDataCb(),并由上層service對數(shù)據(jù)進(jìn)行處理。如:

    if (mMsgEnabled & CAMERA_MSG_PREVIEW_FRAME)

    mDataCb(CAMERA_MSG_PREVIEW_FRAME〗,buffer, mCallbackCookie);

    //系統(tǒng)數(shù)據(jù)回調(diào)

    這時(shí),回調(diào)函數(shù)會通知cameraservice預(yù)覽準(zhǔn)備工作已做好,接下來cameraservice會把數(shù)據(jù)幀送到屏幕顯示。

    由此可見,預(yù)覽模式的封裝過程是,從Linux驅(qū)動中,找出V4L2關(guān)于攝像頭初始化以及其它操作的接口,同時(shí)添加必要的功能語句,然后將其嵌入到s5pv210 HAL模塊的預(yù)覽函數(shù)中,最后,在函數(shù)startpreview()中完成向cameraservice傳送數(shù)據(jù)的功能。

    拍照模塊和錄像模塊與預(yù)覽模塊類似,拍照模塊需要編寫圖片格式的數(shù)據(jù)頭,錄像模塊需要編寫視頻的格式轉(zhuǎn)換與本地文件的保存,二者的HAL封裝過程都與預(yù)覽模式類似。封裝完成之后,編譯HAL成.so庫的形式,放在Android的文件系統(tǒng)的system/lib目錄下即可[10]。

    3 實(shí)驗(yàn)結(jié)果

    測試選用的是友善的tiny210開發(fā)板,處理器芯片是三星的s5pv210,Android版本為2.3,根文件系統(tǒng)采用nfs掛載的方式,把HAL的.so庫放在nfs的根文件目錄中,開機(jī)打開攝像頭設(shè)備,驅(qū)動加載如圖8所示。

    圖8 Linux攝像頭驅(qū)動加載

    在eclipse調(diào)試中可查看HAL載入情況。

    運(yùn)行Android的攝像頭應(yīng)用程序,使之處在預(yù)覽模式當(dāng)中,應(yīng)用程序作為客戶端會向服務(wù)端發(fā)送消息,服務(wù)端獲得消息后經(jīng)過層層調(diào)用,最終調(diào)用到HAL封裝中的預(yù)覽線程。預(yù)覽線程內(nèi)封裝了對V4L2進(jìn)行初始化的各種函數(shù),這樣,就把Android上層應(yīng)用與Linux下層攝像頭驅(qū)動連接了起來。實(shí)驗(yàn)效果如圖9所示。

    圖9 ov9650預(yù)覽效果(視頻分辨率800×480)

    4 結(jié) 語

    本文首先在Linux系統(tǒng)下設(shè)計(jì)實(shí)現(xiàn)了一款適用于Android系統(tǒng)的ov9650攝像頭驅(qū)動,并優(yōu)化了FIMC驅(qū)動使之與攝像頭驅(qū)動成為一個(gè)整體,提高了二者之間的數(shù)據(jù)傳輸效率。然后又重點(diǎn)探究了與該攝像頭驅(qū)動對應(yīng)的Android下的Camera HAL的封裝方法,詳細(xì)講述了Camera HAL的封裝過程。針對Android系統(tǒng)下攝像頭驅(qū)動程序不開源的現(xiàn)狀,本文具體示范了將Linux下的開源驅(qū)動程序封裝到Android下的方法,供開發(fā)者參考。最后實(shí)驗(yàn)結(jié)果證明,該方法正確可靠,根據(jù)方法設(shè)計(jì)的HAL能夠滿足攝像頭正常工作。

    [1] 溫敏,艾麗蓉,王志國.Android智能手機(jī)系統(tǒng)中文件實(shí)時(shí)監(jiān)控的研究與實(shí)現(xiàn)[J].科學(xué)技術(shù)與工程,2009, 9(7):1716-1719.

    [2] 楊長剛.深入剖析Android系統(tǒng)[M].北京:電子工業(yè)出版社,2013.

    [3] James Talbot,Justin McLean.Learning Android Application Programming:A Hands-On Guide to Building Android Applications[M].Addison-Wesley Professional,2013.

    [4] 李宇成,黃堂猛.基于S5PV210的超高清視頻系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)工程與設(shè)計(jì),2014,35(11):3813-3819.

    [5] Greg Milette,Adam Stroud.Professional Android Sensor Programming[M].Wrox Press,2012.

    [6] 童方圓,于強(qiáng).基于Android的實(shí)時(shí)視頻流傳輸系統(tǒng)[J].計(jì)算機(jī)工程與設(shè)計(jì),2012,33(12):4639-4642.

    [7] 羅升陽.Android系統(tǒng)源代碼情景分析[M].北京:電子工業(yè)出版社,2012.

    [8] 余成鋒,李代平,毛永華.Android 3.0內(nèi)存管理機(jī)制分析[J].計(jì)算機(jī)應(yīng)用與軟件,2013,30(2):229-230.

    [9] 李宇成,李聰.基于DM368的視頻處理及軟件設(shè)計(jì)[J].計(jì)算機(jī)測量與控制,2013,21(10):2865-2867,2871.

    [10] 農(nóng)麗萍,王力虎,黃一平.Android在嵌入式車載導(dǎo)航系統(tǒng)的應(yīng)用研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31(11):2473-2476.

    DESIGN AND OPTIMISATION OF LINUX CAMERA DRIVER AND PROBING CORRESPONDING METHOD OF HAL ENCAPSULATION AND DESIGN UNDER ANDROID

    Li YuchengLiang Zongxi*

    (College of Electrical and Control Engineering,North China University of Technology,Beijing 100144,China)

    For current status of camera driver in Android system not being the open-source, by learning form the related driver in Linux, we proposed an integrated design scheme to improve the design of driver and optimise it as well, especially in FIMC driver, we composed the FIMC and ov9650 into a single device, this significantly improved the operation efficiency of camera driver. After that, by analysing Android framework, we designed a HAL module, which completes the functions of camera with three threads in parallel, we also used it to encapsulate Linux camera driver. The content of the paper includes the design and optimisation of Linux camera driver, the design of Android HAL module, and the specific procedure of encapsulating the Linux camera driver with HAL. In end of the paper we submit the experimental result.

    Linux camera driver design and optimisationAndroid HAL designEncapsulation method with HAL

    2015-03-18。李宇成,教授,主研領(lǐng)域:智能控制,圖像處理,嵌入式開發(fā)。梁宗希,碩士。

    TP311.5

    A

    10.3969/j.issn.1000-386x.2016.09.059

    猜你喜歡
    預(yù)覽調(diào)用攝像頭
    浙江首試公路非現(xiàn)場執(zhí)法新型攝像頭
    攝像頭連接器可提供360°視角圖像
    新品預(yù)覽
    核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
    LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
    11月在拍電視劇預(yù)覽表
    電視指南(2016年11期)2016-12-20 22:09:38
    基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
    奔馳360°攝像頭系統(tǒng)介紹
    bauma China 2014展前預(yù)覽
    利用RFC技術(shù)實(shí)現(xiàn)SAP系統(tǒng)接口通信
    在线观看三级黄色| 国产精品一区二区在线观看99| 美女xxoo啪啪120秒动态图| 欧美日韩一区二区视频在线观看视频在线| 欧美成人午夜免费资源| 一本大道久久a久久精品| 亚洲内射少妇av| 久久免费观看电影| 欧美激情国产日韩精品一区| 亚洲伊人色综图| 我要看黄色一级片免费的| 国产精品人妻久久久影院| 日产精品乱码卡一卡2卡三| 日本黄色日本黄色录像| 久久久久久人人人人人| 久久99热这里只频精品6学生| 少妇的逼好多水| 我的女老师完整版在线观看| 亚洲欧美成人综合另类久久久| 国产精品无大码| 久久99蜜桃精品久久| 久久99蜜桃精品久久| 成人亚洲精品一区在线观看| 天天躁夜夜躁狠狠躁躁| 亚洲国产精品成人久久小说| 中文字幕av电影在线播放| 黑人猛操日本美女一级片| 亚洲色图 男人天堂 中文字幕 | 欧美+日韩+精品| 在线观看免费视频网站a站| av黄色大香蕉| 伊人久久国产一区二区| 少妇精品久久久久久久| 成年av动漫网址| 国产深夜福利视频在线观看| 亚洲美女搞黄在线观看| 国内精品宾馆在线| 狂野欧美激情性xxxx在线观看| 在线看a的网站| 伦理电影大哥的女人| 国产精品麻豆人妻色哟哟久久| 亚洲国产最新在线播放| av电影中文网址| 国产一区二区在线观看av| 精品久久久久久电影网| 男女边摸边吃奶| 国产永久视频网站| 伦理电影大哥的女人| 欧美日本中文国产一区发布| 国产一区二区三区综合在线观看 | 一级片'在线观看视频| 国产熟女午夜一区二区三区| 免费观看a级毛片全部| 国产一区二区在线观看日韩| 日韩不卡一区二区三区视频在线| 波多野结衣一区麻豆| 汤姆久久久久久久影院中文字幕| 国产精品国产三级专区第一集| 美女大奶头黄色视频| 国产熟女午夜一区二区三区| www.色视频.com| 日韩伦理黄色片| 人成视频在线观看免费观看| 日韩在线高清观看一区二区三区| 丝袜在线中文字幕| 咕卡用的链子| av天堂久久9| 亚洲精品乱久久久久久| 亚洲熟女精品中文字幕| 最近最新中文字幕大全免费视频 | 亚洲欧美色中文字幕在线| 久久久精品区二区三区| 欧美日韩国产mv在线观看视频| 菩萨蛮人人尽说江南好唐韦庄| 日本av免费视频播放| 午夜av观看不卡| 久久精品久久久久久噜噜老黄| 最黄视频免费看| 99久久中文字幕三级久久日本| 国产成人免费观看mmmm| 大片电影免费在线观看免费| 狂野欧美激情性xxxx在线观看| 国产极品粉嫩免费观看在线| 亚洲国产精品一区二区三区在线| 成年人免费黄色播放视频| 秋霞伦理黄片| 日韩成人伦理影院| 精品视频人人做人人爽| 国产色爽女视频免费观看| 久热这里只有精品99| 蜜桃在线观看..| 国产一区二区三区综合在线观看 | 亚洲成国产人片在线观看| 午夜激情久久久久久久| 高清av免费在线| 国产日韩一区二区三区精品不卡| 天堂8中文在线网| 亚洲av.av天堂| 免费高清在线观看视频在线观看| 国产探花极品一区二区| 日韩精品免费视频一区二区三区 | 久久精品国产亚洲av涩爱| 午夜福利视频在线观看免费| 亚洲人与动物交配视频| 美女视频免费永久观看网站| 国产精品久久久久久av不卡| 国产片内射在线| 一本—道久久a久久精品蜜桃钙片| 亚洲国产av新网站| 爱豆传媒免费全集在线观看| 99热网站在线观看| 亚洲av成人精品一二三区| 免费播放大片免费观看视频在线观看| 日本wwww免费看| 婷婷色综合大香蕉| 一边亲一边摸免费视频| 国产综合精华液| 高清欧美精品videossex| a级毛片黄视频| 9色porny在线观看| 精品午夜福利在线看| 亚洲精品,欧美精品| 精品少妇黑人巨大在线播放| 国产淫语在线视频| 少妇精品久久久久久久| 亚洲国产精品国产精品| 纯流量卡能插随身wifi吗| 国产一级毛片在线| 免费看av在线观看网站| 日韩一区二区三区影片| 国产黄色视频一区二区在线观看| 精品久久久精品久久久| 观看美女的网站| 欧美精品国产亚洲| 我的女老师完整版在线观看| 色94色欧美一区二区| 精品少妇黑人巨大在线播放| a级片在线免费高清观看视频| 人妻一区二区av| 精品酒店卫生间| 久久女婷五月综合色啪小说| 亚洲精品久久久久久婷婷小说| 久久人妻熟女aⅴ| 国产欧美亚洲国产| 精品人妻熟女毛片av久久网站| 大香蕉久久网| 国产熟女欧美一区二区| 国产av精品麻豆| 日本黄大片高清| 亚洲美女黄色视频免费看| 美女国产视频在线观看| 久久久国产一区二区| 黄色怎么调成土黄色| 久久午夜福利片| 欧美精品亚洲一区二区| av线在线观看网站| 亚洲人成网站在线观看播放| 波野结衣二区三区在线| 美女大奶头黄色视频| 看非洲黑人一级黄片| 久久久久久伊人网av| 免费av中文字幕在线| 成人国产麻豆网| 日韩精品有码人妻一区| 男女啪啪激烈高潮av片| 亚洲av.av天堂| 制服诱惑二区| 欧美性感艳星| 五月玫瑰六月丁香| 亚洲欧美日韩卡通动漫| 免费久久久久久久精品成人欧美视频 | 精品熟女少妇av免费看| 日韩一本色道免费dvd| 亚洲成色77777| 制服丝袜香蕉在线| 国产精品无大码| 久久久久久伊人网av| 亚洲欧洲精品一区二区精品久久久 | 欧美精品av麻豆av| www.熟女人妻精品国产 | 99国产精品免费福利视频| 国产免费一级a男人的天堂| 亚洲av欧美aⅴ国产| 人妻 亚洲 视频| 国产 精品1| 免费av中文字幕在线| 欧美精品国产亚洲| 自拍欧美九色日韩亚洲蝌蚪91| 亚洲内射少妇av| 91久久精品国产一区二区三区| 男女高潮啪啪啪动态图| 制服人妻中文乱码| 午夜免费鲁丝| 亚洲精品av麻豆狂野| 好男人视频免费观看在线| 亚洲欧美清纯卡通| av电影中文网址| 女性被躁到高潮视频| 五月天丁香电影| 欧美精品亚洲一区二区| a 毛片基地| 一边摸一边做爽爽视频免费| 三级国产精品片| 女人被躁到高潮嗷嗷叫费观| 久久狼人影院| 一级毛片黄色毛片免费观看视频| 国产黄频视频在线观看| 日韩av免费高清视频| 亚洲高清免费不卡视频| 亚洲欧美中文字幕日韩二区| 国产欧美日韩一区二区三区在线| 亚洲少妇的诱惑av| 成年女人在线观看亚洲视频| 国产成人午夜福利电影在线观看| 久久精品国产亚洲av涩爱| 精品国产露脸久久av麻豆| 国产黄频视频在线观看| 国产黄色免费在线视频| 精品久久久久久电影网| 制服人妻中文乱码| 在线 av 中文字幕| 久久人人97超碰香蕉20202| 午夜免费男女啪啪视频观看| 精品国产一区二区三区久久久樱花| 免费观看a级毛片全部| 国产精品欧美亚洲77777| 美女内射精品一级片tv| 国产亚洲一区二区精品| 欧美变态另类bdsm刘玥| 日韩视频在线欧美| 九九在线视频观看精品| 免费高清在线观看日韩| 欧美bdsm另类| 一区在线观看完整版| 黄片播放在线免费| 成人18禁高潮啪啪吃奶动态图| 国产成人aa在线观看| 亚洲欧美中文字幕日韩二区| 韩国av在线不卡| 另类亚洲欧美激情| 精品国产露脸久久av麻豆| 日本-黄色视频高清免费观看| 蜜臀久久99精品久久宅男| 亚洲一级一片aⅴ在线观看| 久久久国产一区二区| 一二三四中文在线观看免费高清| 秋霞在线观看毛片| 男女午夜视频在线观看 | 国产精品人妻久久久影院| 久久精品久久精品一区二区三区| 欧美成人午夜精品| 日韩欧美一区视频在线观看| 亚洲第一区二区三区不卡| 日本av免费视频播放| 丰满迷人的少妇在线观看| 性色avwww在线观看| 久久久精品区二区三区| 久久精品国产亚洲av涩爱| 26uuu在线亚洲综合色| 成人影院久久| av国产久精品久网站免费入址| 亚洲欧美一区二区三区国产| 欧美 日韩 精品 国产| 老熟女久久久| 国产不卡av网站在线观看| 国产成人精品福利久久| 亚洲精品aⅴ在线观看| 最黄视频免费看| 一边亲一边摸免费视频| 日日摸夜夜添夜夜爱| 亚洲国产色片| 久久久久久人人人人人| 秋霞伦理黄片| 夫妻性生交免费视频一级片| 国产女主播在线喷水免费视频网站| 欧美bdsm另类| 伦理电影免费视频| 欧美国产精品va在线观看不卡| 97人妻天天添夜夜摸| 韩国精品一区二区三区 | 亚洲av男天堂| 久久99热这里只频精品6学生| 午夜91福利影院| 韩国av在线不卡| 久久久久久久亚洲中文字幕| 色94色欧美一区二区| 国产一区二区在线观看av| 成人无遮挡网站| av黄色大香蕉| 久久人妻熟女aⅴ| 在线观看三级黄色| 国产精品一区www在线观看| h视频一区二区三区| 日韩一本色道免费dvd| 2018国产大陆天天弄谢| 啦啦啦视频在线资源免费观看| 九色亚洲精品在线播放| 国产在线一区二区三区精| 中国美白少妇内射xxxbb| 亚洲av中文av极速乱| √禁漫天堂资源中文www| 婷婷色综合www| 狂野欧美激情性bbbbbb| 国产淫语在线视频| 天天操日日干夜夜撸| 在线观看三级黄色| av女优亚洲男人天堂| 国产av一区二区精品久久| 22中文网久久字幕| 大片电影免费在线观看免费| 欧美日韩av久久| h视频一区二区三区| 成人毛片a级毛片在线播放| 国产精品欧美亚洲77777| 免费黄色在线免费观看| 人人妻人人爽人人添夜夜欢视频| 国产女主播在线喷水免费视频网站| 日产精品乱码卡一卡2卡三| 丰满迷人的少妇在线观看| 18禁在线无遮挡免费观看视频| 在线观看一区二区三区激情| 两个人免费观看高清视频| 最新的欧美精品一区二区| 久久久久久伊人网av| 免费观看性生交大片5| a 毛片基地| 丝瓜视频免费看黄片| 色5月婷婷丁香| 熟女电影av网| 欧美日韩视频精品一区| av在线播放精品| 国产日韩欧美视频二区| 免费看不卡的av| 午夜av观看不卡| 看免费av毛片| 欧美丝袜亚洲另类| 五月开心婷婷网| 国产精品秋霞免费鲁丝片| 欧美日韩国产mv在线观看视频| 国产一区有黄有色的免费视频| 大话2 男鬼变身卡| 国产精品欧美亚洲77777| 日韩免费高清中文字幕av| 国产淫语在线视频| 国产精品国产三级专区第一集| av在线播放精品| 女的被弄到高潮叫床怎么办| 亚洲第一av免费看| 久久久久久久久久人人人人人人| 人人妻人人澡人人看| 国产精品女同一区二区软件| 少妇人妻精品综合一区二区| 日韩电影二区| 永久网站在线| 亚洲精品色激情综合| 日韩免费高清中文字幕av| 男女午夜视频在线观看 | www.熟女人妻精品国产 | 久久国产精品大桥未久av| 日韩伦理黄色片| 国产成人a∨麻豆精品| 在线观看一区二区三区激情| 日韩一本色道免费dvd| 看免费av毛片| 国产精品久久久av美女十八| 久久久亚洲精品成人影院| 91在线精品国自产拍蜜月| 丝袜喷水一区| 两性夫妻黄色片 | 国产精品嫩草影院av在线观看| 成人综合一区亚洲| freevideosex欧美| 久久韩国三级中文字幕| 老女人水多毛片| 人成视频在线观看免费观看| 久久热在线av| 久久久精品区二区三区| av有码第一页| 国产亚洲欧美精品永久| 亚洲人与动物交配视频| 亚洲,欧美,日韩| 国产欧美日韩综合在线一区二区| 欧美人与性动交α欧美软件 | 十分钟在线观看高清视频www| 国产片特级美女逼逼视频| 久久久欧美国产精品| 亚洲av国产av综合av卡| 色视频在线一区二区三区| 天天躁夜夜躁狠狠躁躁| 国产女主播在线喷水免费视频网站| 在线观看美女被高潮喷水网站| 91成人精品电影| 亚洲av中文av极速乱| 国产1区2区3区精品| 亚洲精品456在线播放app| 国产精品国产av在线观看| 中文字幕人妻熟女乱码| 久久 成人 亚洲| 亚洲精品中文字幕在线视频| 成人免费观看视频高清| 亚洲av成人精品一二三区| 亚洲综合精品二区| 久久这里有精品视频免费| 91aial.com中文字幕在线观看| 免费观看无遮挡的男女| 男女午夜视频在线观看 | 国语对白做爰xxxⅹ性视频网站| 久久精品aⅴ一区二区三区四区 | 精品国产一区二区三区四区第35| 天天操日日干夜夜撸| 观看美女的网站| 丝袜喷水一区| 丝袜人妻中文字幕| 久久国产亚洲av麻豆专区| 国产精品久久久av美女十八| 午夜日本视频在线| 国产精品久久久久久av不卡| 成年女人在线观看亚洲视频| 欧美人与性动交α欧美精品济南到 | 欧美激情 高清一区二区三区| 菩萨蛮人人尽说江南好唐韦庄| 九色亚洲精品在线播放| 成人免费观看视频高清| 久久久国产一区二区| 亚洲精品456在线播放app| 亚洲第一区二区三区不卡| 视频中文字幕在线观看| 一个人免费看片子| 国产一区二区在线观看日韩| 亚洲欧美日韩卡通动漫| 在线亚洲精品国产二区图片欧美| 国产成人精品久久久久久| 亚洲精品色激情综合| a级毛色黄片| 国产精品人妻久久久久久| 22中文网久久字幕| 热re99久久国产66热| 97在线人人人人妻| 日韩av在线免费看完整版不卡| 两个人看的免费小视频| 97精品久久久久久久久久精品| 欧美日本中文国产一区发布| 日韩中字成人| 亚洲四区av| 国产av一区二区精品久久| 亚洲av成人精品一二三区| 欧美精品亚洲一区二区| 国产一区二区三区综合在线观看 | 亚洲国产欧美日韩在线播放| 18禁在线无遮挡免费观看视频| 国产高清三级在线| 成人国产麻豆网| 国产亚洲一区二区精品| 美女脱内裤让男人舔精品视频| 久久影院123| 亚洲av在线观看美女高潮| 国产永久视频网站| 美女福利国产在线| 国产免费又黄又爽又色| 亚洲av欧美aⅴ国产| 久久ye,这里只有精品| 激情视频va一区二区三区| 国产高清不卡午夜福利| 色哟哟·www| 女的被弄到高潮叫床怎么办| 国产成人精品久久久久久| 人人澡人人妻人| 又黄又爽又刺激的免费视频.| av在线观看视频网站免费| 美女福利国产在线| 另类亚洲欧美激情| 亚洲av男天堂| 国产日韩欧美视频二区| 99视频精品全部免费 在线| 欧美精品av麻豆av| 精品亚洲乱码少妇综合久久| 日产精品乱码卡一卡2卡三| 精品少妇内射三级| 午夜免费男女啪啪视频观看| 女人精品久久久久毛片| 久久精品久久久久久久性| 熟女电影av网| 日本爱情动作片www.在线观看| 久久这里有精品视频免费| 日韩中文字幕视频在线看片| 香蕉精品网在线| 亚洲一区二区三区欧美精品| 欧美 亚洲 国产 日韩一| 在线天堂中文资源库| 九色成人免费人妻av| 久久人人97超碰香蕉20202| 街头女战士在线观看网站| 人妻少妇偷人精品九色| 成年美女黄网站色视频大全免费| 亚洲色图综合在线观看| 久久精品久久久久久久性| 插逼视频在线观看| 啦啦啦中文免费视频观看日本| 日韩电影二区| 精品一区二区三区四区五区乱码 | 一级a做视频免费观看| 国产深夜福利视频在线观看| 日产精品乱码卡一卡2卡三| 老司机亚洲免费影院| 色网站视频免费| 亚洲,一卡二卡三卡| 国产精品人妻久久久久久| 在线观看三级黄色| 国产日韩欧美亚洲二区| 成人国产麻豆网| 999精品在线视频| 只有这里有精品99| 水蜜桃什么品种好| 永久网站在线| 9191精品国产免费久久| 夫妻性生交免费视频一级片| 9191精品国产免费久久| 黄色一级大片看看| 欧美日韩视频高清一区二区三区二| 午夜视频国产福利| 99热网站在线观看| 精品99又大又爽又粗少妇毛片| 街头女战士在线观看网站| 国产乱来视频区| 国产精品久久久久久久电影| 成人漫画全彩无遮挡| a级片在线免费高清观看视频| 美女国产视频在线观看| 黄网站色视频无遮挡免费观看| 91国产中文字幕| 我要看黄色一级片免费的| 国产探花极品一区二区| 亚洲 欧美一区二区三区| 久热这里只有精品99| 日本vs欧美在线观看视频| 亚洲伊人色综图| 亚洲熟女精品中文字幕| 亚洲欧美中文字幕日韩二区| 免费观看av网站的网址| 日韩欧美精品免费久久| 亚洲,欧美,日韩| 国产精品免费大片| 亚洲国产毛片av蜜桃av| 亚洲av男天堂| 内地一区二区视频在线| 日本午夜av视频| 国产无遮挡羞羞视频在线观看| 大香蕉久久成人网| 欧美成人午夜精品| 蜜臀久久99精品久久宅男| 水蜜桃什么品种好| 母亲3免费完整高清在线观看 | 最近最新中文字幕免费大全7| 亚洲国产精品国产精品| 国产一区二区在线观看av| 99久久人妻综合| 日韩制服骚丝袜av| 高清在线视频一区二区三区| 少妇被粗大猛烈的视频| 内地一区二区视频在线| av免费在线看不卡| 成年动漫av网址| 欧美国产精品一级二级三级| 宅男免费午夜| 9色porny在线观看| 18禁国产床啪视频网站| 国产日韩一区二区三区精品不卡| 秋霞伦理黄片| 色哟哟·www| 亚洲人成网站在线观看播放| 久久久精品94久久精品| 一区二区日韩欧美中文字幕 | 一区二区三区四区激情视频| 99re6热这里在线精品视频| 亚洲情色 制服丝袜| 国产伦理片在线播放av一区| 国产精品一区二区在线不卡| 成人午夜精彩视频在线观看| 午夜久久久在线观看| 男女无遮挡免费网站观看| 大片电影免费在线观看免费| 国产免费又黄又爽又色| 国产男人的电影天堂91| 亚洲欧美色中文字幕在线| 777米奇影视久久| 巨乳人妻的诱惑在线观看| 亚洲综合色网址| 亚洲第一av免费看| 啦啦啦在线观看免费高清www| 成年动漫av网址| 久久ye,这里只有精品| 欧美激情 高清一区二区三区| 黄色怎么调成土黄色| 免费大片黄手机在线观看| 国产精品久久久久久av不卡| 精品国产一区二区三区久久久樱花| 一本大道久久a久久精品| 最近最新中文字幕大全免费视频 | 校园人妻丝袜中文字幕| 亚洲,欧美,日韩| 免费观看无遮挡的男女| 看免费成人av毛片| 男男h啪啪无遮挡| 亚洲成色77777| 国产精品一区二区在线不卡| 乱人伦中国视频| 最近最新中文字幕免费大全7| 亚洲精品第二区| 全区人妻精品视频| 午夜老司机福利剧场| 寂寞人妻少妇视频99o| av女优亚洲男人天堂| 天天躁夜夜躁狠狠久久av| 日韩一区二区三区影片| 国产熟女午夜一区二区三区|