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

        ?

        機(jī)頂盒上搭建Linux的USB視頻數(shù)據(jù)采集平臺(tái)

        2010-06-25 09:39:06于鴻洋
        電視技術(shù) 2010年1期
        關(guān)鍵詞:源碼機(jī)頂盒應(yīng)用程序

        巫 莉,于鴻洋,張 萍

        (電子科技大學(xué) 電子工程學(xué)院,四川 成都 611731)

        1 引言

        Linux是一套自由軟件,用戶可以無償?shù)氐玫狡湓创a和大量的應(yīng)用程序,并可以任意修改和補(bǔ)充[1],這樣使得開發(fā)者可以更方便地開發(fā)機(jī)頂盒的功能,但是由于Linux本身各種軟件的復(fù)雜的依賴性以及缺乏穩(wěn)定完善的維護(hù),Linux的開發(fā)不像Windows那么方便容易[2]。

        通用串行總線(USB)具有易于使用、速度快、可靠性強(qiáng)、成本低等優(yōu)點(diǎn)[3],在市場(chǎng)上已經(jīng)廣泛普及。USB攝像頭的視頻播放也越來越受歡迎。筆者首先介紹了采用的STi7109芯片的機(jī)頂盒的硬件及軟件系統(tǒng),然后闡述了在Linux上搭建USB攝像頭視頻數(shù)據(jù)采集平臺(tái)的過程,同時(shí)也使讀者對(duì)在Linux上怎樣進(jìn)行軟件開發(fā)有更深的認(rèn)識(shí)。

        2 基于STi7109的機(jī)頂盒體系結(jié)構(gòu)

        2.1 硬件體系結(jié)構(gòu)

        本設(shè)計(jì)采用STMicrotronics公司最新的增強(qiáng)型高清多標(biāo)準(zhǔn)視音頻解碼芯片STi7109作為主芯片。STi7109在一個(gè)芯片上集成了2個(gè)頻率為266 MHz的ST231CPU以及 VC-1,MPEG-2和 H.264視音頻解碼器,PAL/NTSC/SECAM編碼器,1個(gè)16 kbyte的I-Cache和1個(gè)32 kbyte的D-Cache,傳輸過濾解擾、解復(fù)用模塊,顯示和圖形引擎功能模塊。STi7109擁有16個(gè)級(jí)別的中斷控制器,定義了6個(gè)可擴(kuò)展的8位可編程輸入/輸出端口(GPIO)。除MPEG-2外,該系統(tǒng)芯片解決方案還支持高清H.264/MPEG-4 AVC,以及MPEG-4 P2標(biāo)清標(biāo)準(zhǔn)。其強(qiáng)大的視頻解碼能力為視頻播放系統(tǒng)的實(shí)現(xiàn)提供了硬件條件。

        STi7109開發(fā)板包含1個(gè)USB接口,支持USB2.0協(xié)議,支持高速USB設(shè)備。STi7109數(shù)字機(jī)頂盒硬件平臺(tái)如圖1所示。

        圖1 STi7109數(shù)字機(jī)頂盒硬件平臺(tái)

        數(shù)字信號(hào)流(包括公開的和加密的)通過纜線傳輸?shù)礁哳l頭,通過芯片STb0468b處的QAM/QPSK解調(diào)處理,傳輸?shù)絊Ti7109集成芯片進(jìn)行解復(fù)用和PES流分組解析,從而產(chǎn)生對(duì)應(yīng)的視頻信號(hào)和音頻信號(hào)。

        2.2 軟件體系結(jié)構(gòu)

        STi7109的USB攝像頭視頻數(shù)據(jù)采集平臺(tái)從軟件的角度看,主要分為5個(gè)層次:Bootloader,Linux內(nèi)核,文件系統(tǒng),加載驅(qū)動(dòng)模塊和應(yīng)用軟件。STi7109平臺(tái)上的軟件系統(tǒng)如圖2所示。

        圖2 STi7109平臺(tái)上的軟件系統(tǒng)

        3 移植Linux下USB攝像頭驅(qū)動(dòng)

        由于USB攝像頭根據(jù)攝像頭芯片的不同驅(qū)動(dòng)也不同,在Linux內(nèi)核上很少帶有或幾乎沒有USB攝像頭的驅(qū)動(dòng),需要自己開發(fā)安裝。在開源項(xiàng)目中,spca5xx驅(qū)動(dòng)以及后來的gspca驅(qū)動(dòng)涵蓋了大部分主流的攝像頭驅(qū)動(dòng),但是也無法包含各種品牌的所有型號(hào)的攝像頭。因此需要在熟悉USB攝像頭驅(qū)動(dòng)的情況下對(duì)驅(qū)動(dòng)進(jìn)行修改,并按照Linux上的特殊要求來完成對(duì)USB攝像頭的安裝。

        下面介紹在Linux下怎樣移植、安裝USB攝像頭驅(qū)動(dòng),并使其適用于自己的USB攝像頭。

        1)下載開源項(xiàng)目的USB攝像頭驅(qū)動(dòng)

        筆者首先在CSDN下載頻道上下載“gspcav120071224.tar.gz”。其次在 Linux 上的下載命令為“wget-c http∶//mxhaard.free.fr/spca50x/Download/gspca120071224.tar.gz”。最后解壓驅(qū)動(dòng)壓縮包“tar zxvf gspca120071224.tar.gz”。

        2)使USB攝像頭驅(qū)動(dòng)適合自己的攝像頭

        USB攝像頭驅(qū)動(dòng)直接相關(guān)的是USB攝像頭芯片型號(hào)。在Windows下右鍵點(diǎn)擊“我的電腦”-“管理”-“設(shè)備管理器”-“圖像處理設(shè)備”選擇攝像頭設(shè)備雙擊,在“詳細(xì)信息”一欄可以看到USB攝像頭的UID和VID,也可以通過Linux下lsusb命令進(jìn)行查看。筆者采用的是ID 0ac8∶307b的攝像頭。通過分析USB攝像頭驅(qū)動(dòng)源代碼判斷是否適合自己的攝像頭芯片。

        進(jìn)入 “gspca120071224”文件夾,其中最核心的是gspca_core.c文件以及gspca.h頭文件。gspca_core.c包括設(shè)備注冊(cè)、注銷和各種操作方法集。gspca.h的主要內(nèi)容有:(1)定義所支持的Vendor ID號(hào);(2)對(duì)支持的DSP橋接控制芯片型號(hào)進(jìn)行編號(hào);(3)對(duì)支持的CMOS/CCD圖像傳感器型號(hào)進(jìn)行編號(hào)。另外,還定義了圖像格式相關(guān)的常量和數(shù)據(jù)結(jié)構(gòu)(如色彩空間、調(diào)色板、圖像分辨力等),幀數(shù)據(jù)結(jié)構(gòu),攝像頭操作方法集等。

        Conexant,EtomsSonix,PixArt,Vimicro 和 Sunplus 等文件夾中定義了各傳感器相關(guān)的頭文件。decoder文件夾中包含了對(duì)各種圖像格式進(jìn)行編解碼的源代碼。

        通過查看gspca_core.c和gspca.h兩個(gè)文件,發(fā)現(xiàn)使用的USB攝像頭的Vendor ID,DSP芯片和image sensor已包含在其中。如果不在其中,則要定義DSP和sensor芯片的相應(yīng)頭文件,并在gspca.h中添加相應(yīng)的設(shè)備信息,還要把攝像頭加入到 gspca_core.c的攝像頭設(shè)備列表中。

        3)安裝USB攝像頭驅(qū)動(dòng)于Linux系統(tǒng)

        Linux下對(duì)于硬件驅(qū)動(dòng),可以將驅(qū)動(dòng)程序靜態(tài)編譯進(jìn)內(nèi)核中,也可以將它作為模塊在使用時(shí)再加載[4]。每塊可以在運(yùn)行時(shí)添加到內(nèi)核的代碼,被稱為一個(gè)模塊。Linux內(nèi)核提供了對(duì)許多模塊類型的支持,每個(gè)模塊由目標(biāo)代碼組成[5]。

        由于Linux中攝像頭驅(qū)動(dòng)必須要有(Video For Linux,V4L)的支持,V4L是Linux中關(guān)于視頻設(shè)備的內(nèi)核驅(qū)動(dòng),它為針對(duì)視頻設(shè)備的應(yīng)用程序編程提供一系列接口函數(shù),因此必須先加載V4L相關(guān)的videodev.ko模塊。USB設(shè)備也需要USB主控制器驅(qū)動(dòng),由于STi7109嵌入式系統(tǒng)提供了OHCI/EHCI的主控制器驅(qū)動(dòng)模塊,因此不需要另外加載。

        在gspca驅(qū)動(dòng)程序文件夾內(nèi)包含了自動(dòng)化編譯的Makefile文件以及安裝加載模塊的腳本文件gspca_build,通過運(yùn)行“./gspca_build”,即可完成對(duì)gspca驅(qū)動(dòng)的安裝,也可以根據(jù)自己的需要對(duì)Makefile和gspca_build進(jìn)行修改。

        安裝USB攝像頭驅(qū)動(dòng)并在機(jī)頂盒上插上USB攝像頭后,通過運(yùn)行命令“l(fā)smod|grep videodev”,看到videodev已經(jīng)安裝,運(yùn)行命令“l(fā)s/dev|grep video”,看到“/dev”文件夾下有了video和video0兩個(gè)文件,說明已經(jīng)識(shí)別到了USB攝像頭設(shè)備。

        4 搭建USB攝像頭視頻信號(hào)采集平臺(tái)

        4.1 在Linux下安裝GTK+庫

        GTK(GIMP Toolkit)是一套跨多種平臺(tái)的圖形工具包,目前已發(fā)展為一個(gè)功能強(qiáng)大、設(shè)計(jì)靈活的通用圖形庫,成為L(zhǎng)inux下開發(fā)圖形界面應(yīng)用程序的主流開發(fā)工具之一。由于GTK+簡(jiǎn)單易用,擁有強(qiáng)大的功能和豐富的API,而且作為一個(gè)開放的自由軟件,在Linux下已經(jīng)發(fā)展得比較成熟,因此在Linux系統(tǒng)下可以使用GTK+庫方便地對(duì)機(jī)頂盒的GUI進(jìn)行開發(fā)。

        由于Linux下各種源碼具有很復(fù)雜的依賴性,因此首先需清楚安裝GTK+所需要的條件。所需的源碼包包括:GNU make工具,GNU gettext軟件包(當(dāng)系統(tǒng)上沒有g(shù)ettext()函數(shù)的時(shí)候需要),GNU libiconv 庫(當(dāng)系統(tǒng)上沒有 iconv()函數(shù)的時(shí)候需要),fontconfig 庫,F(xiàn)reeType 庫,libpng庫,jpegsrc庫,tiff庫,pkg-config工具,GLib 庫,ATK庫,Cairo庫,Pango庫和 GTK+庫。

        其中很多源碼包在比較新的Linux版本系統(tǒng)都會(huì)自帶。筆者主要安裝了5個(gè)源碼包,即GLib,ATK,CAIRO,PANGO和GTK。上面5個(gè)源碼包由于其依賴性必須按從前到后的順序依次安裝。在Linux上進(jìn)行源碼安裝很容易找不到需要的某個(gè)包或文件,編譯出錯(cuò)。需要對(duì)Linux的系統(tǒng)原理有比較熟悉的認(rèn)識(shí),并且要仔細(xì)閱讀README,install等文件,了解安裝過程。

        下面總結(jié)幾個(gè)關(guān)系到能否成功編譯的因素:1)默認(rèn)情況下,編譯器只會(huì)使用/lib和/usr/lib這兩個(gè)目錄下的庫文件。如果安裝了某些庫,沒有指定搜索路徑,編譯就會(huì)出錯(cuò)。此時(shí)可在“./configure”命令時(shí)指定“--prefix=/usr”,這樣庫文件就安裝到了“/usr/lib”下,或是通過設(shè)置LD_LIBRARY_PATH 路徑,添加“/usr/local/lib”路徑,即沒有指定安裝路徑時(shí)的庫的安裝位置,或者保存在“/etc/ld.so.conf”文件中,因?yàn)椤?etc/ld.so.conf”文件記錄了編譯時(shí)使用的動(dòng)態(tài)鏈接庫的路徑。2)改動(dòng)庫文件后一定要運(yùn)行一下“l(fā)dconfig”命令,它的作用就是將“/etc/ld.so.conf”列出的路徑下的庫文件緩存到“/etc/ld.so.cache”以供使用。不然即使庫文件就在“/usr/lib”下,也是不會(huì)被使用的。3)設(shè)定正確的 PKG_CONFIG_PATH?!皃kg-config”是一個(gè)向configure程序提供軟件和庫的版本、路徑等系統(tǒng)信息的程序,這些信息只在編譯時(shí)使用。以GLib為例,如果將glib-2.x.x裝到了“/usr/local/”下,那么glib-2.0.pc就會(huì)在“/usr/local/lib/pkgconfig”下,需要將這個(gè)路徑添加到PKG_CONFIG_PATH下面,另外還需要將“l(fā)ib/pkgconfig”目錄下不需要的glib-2.0.pc刪除掉,以確保configure找到正確的glib-2.0.pc,以免提示錯(cuò)誤信息。

        安裝時(shí)可以把指令統(tǒng)一為:./configure--prefix=/usr&&make&&make install。其中&&表示當(dāng)前一條命令正常結(jié)束,后面的命令才會(huì)執(zhí)行。這個(gè)辦法既節(jié)省時(shí)間,又可防止出錯(cuò)。運(yùn)行完之后可以運(yùn)行命令“echo$?”,表示檢查上一條命令的退出狀態(tài),返回0表示程序正常退出,返回非0表示錯(cuò)誤退出。注意到上面說的幾個(gè)因素,每次安裝完后運(yùn)行一次ldconfig,安裝過程中一般都會(huì)經(jīng)過多次配置等改動(dòng)。

        4.2 應(yīng)用GTK+庫采集并顯示視頻數(shù)據(jù)

        安裝了GTK+庫之后,就可以利用GTK+庫提供的圖形界面的API進(jìn)行應(yīng)用程序開發(fā)。筆者參考了camorama及spaview等Linux上的USB攝像頭數(shù)據(jù)采集的應(yīng)用程序。具體過程為在利用V4L提供的API獲取到USB攝像頭的視頻圖像數(shù)據(jù)后,再利用GTK+中的GDKPIXBUF庫中的API函數(shù)來顯示獲取到的圖像。GDKPIXBUF庫是專門用于圖像處理的,它支持多種圖像格式(如TIFF,JPEG,PNG,GIF等)和動(dòng)畫。通過 GTK+的應(yīng)用程序,在窗口中可查看到USB攝像頭的視頻圖像。

        5 小結(jié)

        介紹了STi7109芯片為主芯片的機(jī)頂盒硬件平臺(tái)及軟件系統(tǒng),介紹了安裝配置USB攝像頭驅(qū)動(dòng),利用GTK+庫編寫應(yīng)用程序,搭建USB攝像頭視頻數(shù)據(jù)采集平臺(tái)的整個(gè)過程。

        本文主要在于過程方法的介紹,對(duì)于進(jìn)一步功能的開發(fā),如怎樣用GTK+庫來實(shí)現(xiàn)遙控器的控制等還有待進(jìn)一步研究。主要?jiǎng)?chuàng)新點(diǎn)為使讀者對(duì)怎樣在Linux上進(jìn)行機(jī)頂盒的開發(fā)有了更明確的認(rèn)識(shí),如對(duì)Linux上USB攝像頭驅(qū)動(dòng)開發(fā)、特殊的源碼包聯(lián)系性以及編譯原理等都有了更深的理解。同時(shí)采用具有發(fā)展?jié)摿Φ腉TK+庫來編寫圖形界面應(yīng)用程序使圖像采集過程更加人性化。該過程的方法也適用于其他嵌入式Linux的開發(fā),具有很好的借鑒價(jià)值。

        [1]王俊偉,吳俊海.Linux標(biāo)準(zhǔn)教程[M].北京:清華大學(xué)出版社,2006.

        [2]胡宏平.基于數(shù)字電視機(jī)頂盒的嵌入式Linux操作系統(tǒng)的設(shè)計(jì)[J].電視技術(shù),2005(8):52-54.

        [3]AXELSON J.USB大全[M].陳逸,譯.北京:中國電力出版社,2001.

        [4]韋東山.嵌入式Linux應(yīng)用開發(fā)完全手冊(cè)[M].北京:人民郵電出版社,2008.

        [5]CORBET J,RUBINI A,KROAH H G.Linux設(shè)備驅(qū)動(dòng)程序[M].3版.魏永明,耿岳,鐘書毅,譯.北京:中國電力出版社,2005.

        猜你喜歡
        源碼機(jī)頂盒應(yīng)用程序
        基于網(wǎng)頁源碼結(jié)構(gòu)理解的自適應(yīng)爬蟲代碼生成方法
        基于圖神經(jīng)網(wǎng)絡(luò)的軟件源碼漏洞檢測(cè)方法
        企業(yè)如何保護(hù)源碼
        安全使用機(jī)頂盒注意五點(diǎn)
        刪除Win10中自帶的應(yīng)用程序
        數(shù)字電視機(jī)頂盒軟件自動(dòng)測(cè)試系統(tǒng)的開發(fā)及應(yīng)用
        基于數(shù)據(jù)結(jié)構(gòu)教輔系統(tǒng)的實(shí)驗(yàn)課程改革
        有線電視高清數(shù)字電視機(jī)頂盒測(cè)試系統(tǒng)的構(gòu)建
        What is Apple Watch All About?
        關(guān)閉應(yīng)用程序更新提醒
        電腦迷(2012年15期)2012-04-29 17:09:47
        亚洲女同免费在线观看| 亚洲欧美日韩国产综合一区二区| 亚洲一区爱区精品无码| 99久久精品久久久| 蜜桃视频一区二区三区| 大香焦av一区二区三区| 99精品久久精品一区二区| 亚洲av无码日韩精品影片| 精品国产午夜久久久久九九| 国产一区二区三区精品成人爱 | 国产精品不卡免费版在线观看| 日本a爱视频二区三区| 深夜福利啪啪片| 欧洲极品少妇| 女局长白白嫩嫩大屁股| 色 综合 欧美 亚洲 国产| 精品久久无码中文字幕| 中文字幕色视频在线播放| 中文字幕av素人专区| 国色天香社区视频在线| 国产精品_国产精品_k频道| 久久国产综合精品欧美| 日本熟妇视频在线中出| 一区二区三区免费看日本| 免费va国产高清大片在线| 国产精品99久久免费| 日韩精品视频在线一二三| 草逼视频污的网站免费| 国产av国片精品有毛| 无码手机线免费观看| 国产亚洲视频在线观看播放| 日本高清视频一区二区| 久久久久久久亚洲av无码| 国产精品亚洲二区在线观看 | 999国内精品永久免费观看| 亚洲精品成人网久久久久久| 精品一区二区三区不老少妇| 日本熟女人妻一区二区| 中文字幕人妻中文| 在线观看亚洲AV日韩A∨| 激情在线视频一区二区三区|