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

機頂盒上搭建Linux的USB視頻數據采集平臺

2010-06-25 09:39:06于鴻洋
電視技術 2010年1期
關鍵詞:設備

巫 莉,于鴻洋,張 萍

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

1 引言

Linux是一套自由軟件,用戶可以無償地得到其源代碼和大量的應用程序,并可以任意修改和補充[1],這樣使得開發者可以更方便地開發機頂盒的功能,但是由于Linux本身各種軟件的復雜的依賴性以及缺乏穩定完善的維護,Linux的開發不像Windows那么方便容易[2]。

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

2 基于STi7109的機頂盒體系結構

2.1 硬件體系結構

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

STi7109開發板包含1個USB接口,支持USB2.0協議,支持高速USB設備。STi7109數字機頂盒硬件平臺如圖1所示。

圖1 STi7109數字機頂盒硬件平臺

數字信號流(包括公開的和加密的)通過纜線傳輸到高頻頭,通過芯片STb0468b處的QAM/QPSK解調處理,傳輸到STi7109集成芯片進行解復用和PES流分組解析,從而產生對應的視頻信號和音頻信號。

2.2 軟件體系結構

STi7109的USB攝像頭視頻數據采集平臺從軟件的角度看,主要分為5個層次:Bootloader,Linux內核,文件系統,加載驅動模塊和應用軟件。STi7109平臺上的軟件系統如圖2所示。

圖2 STi7109平臺上的軟件系統

3 移植Linux下USB攝像頭驅動

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

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

1)下載開源項目的USB攝像頭驅動

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

2)使USB攝像頭驅動適合自己的攝像頭

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

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

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

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

3)安裝USB攝像頭驅動于Linux系統

Linux下對于硬件驅動,可以將驅動程序靜態編譯進內核中,也可以將它作為模塊在使用時再加載[4]。每塊可以在運行時添加到內核的代碼,被稱為一個模塊。Linux內核提供了對許多模塊類型的支持,每個模塊由目標代碼組成[5]。

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

在gspca驅動程序文件夾內包含了自動化編譯的Makefile文件以及安裝加載模塊的腳本文件gspca_build,通過運行“./gspca_build”,即可完成對gspca驅動的安裝,也可以根據自己的需要對Makefile和gspca_build進行修改。

安裝USB攝像頭驅動并在機頂盒上插上USB攝像頭后,通過運行命令“lsmod|grep videodev”,看到videodev已經安裝,運行命令“ls/dev|grep video”,看到“/dev”文件夾下有了video和video0兩個文件,說明已經識別到了USB攝像頭設備。

4 搭建USB攝像頭視頻信號采集平臺

4.1 在Linux下安裝GTK+庫

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

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

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

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

安裝時可以把指令統一為:./configure--prefix=/usr&&make&&make install。其中&&表示當前一條命令正常結束,后面的命令才會執行。這個辦法既節省時間,又可防止出錯。運行完之后可以運行命令“echo$?”,表示檢查上一條命令的退出狀態,返回0表示程序正常退出,返回非0表示錯誤退出。注意到上面說的幾個因素,每次安裝完后運行一次ldconfig,安裝過程中一般都會經過多次配置等改動。

4.2 應用GTK+庫采集并顯示視頻數據

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

5 小結

介紹了STi7109芯片為主芯片的機頂盒硬件平臺及軟件系統,介紹了安裝配置USB攝像頭驅動,利用GTK+庫編寫應用程序,搭建USB攝像頭視頻數據采集平臺的整個過程。

本文主要在于過程方法的介紹,對于進一步功能的開發,如怎樣用GTK+庫來實現遙控器的控制等還有待進一步研究。主要創新點為使讀者對怎樣在Linux上進行機頂盒的開發有了更明確的認識,如對Linux上USB攝像頭驅動開發、特殊的源碼包聯系性以及編譯原理等都有了更深的理解。同時采用具有發展潛力的GTK+庫來編寫圖形界面應用程序使圖像采集過程更加人性化。該過程的方法也適用于其他嵌入式Linux的開發,具有很好的借鑒價值。

[1]王俊偉,吳俊海.Linux標準教程[M].北京:清華大學出版社,2006.

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

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

[4]韋東山.嵌入式Linux應用開發完全手冊[M].北京:人民郵電出版社,2008.

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

猜你喜歡
設備
諧響應分析在設備減振中的應用
調試新設備
當代工人(2020年13期)2020-09-27 23:04:20
基于VB6.0+Access2010開發的設備管理信息系統
基于MPU6050簡單控制設備
電子制作(2018年11期)2018-08-04 03:26:08
廣播發射設備中平衡輸入與不平衡輸入的轉換
電子制作(2018年10期)2018-08-04 03:24:48
食之無味,棄之可惜 那些槽點滿滿的可穿戴智能設備
500kV輸變電設備運行維護探討
工業設計(2016年12期)2016-04-16 02:52:00
HTC斥資千萬美元入股虛擬現實設備商WEVR
IT時代周刊(2015年8期)2015-11-11 05:50:37
Automechanika Shanghai 2014 之“看” 汽保設備篇
如何在設備采購中節省成本
主站蜘蛛池模板: 亚洲无码高清视频在线观看| 欧美一级大片在线观看| 国产XXXX做受性欧美88| 久久青草视频| 精品国产aⅴ一区二区三区| 亚洲精品无码AV电影在线播放| 欧美翘臀一区二区三区| 极品av一区二区| 看看一级毛片| 亚洲综合久久成人AV| 99久久亚洲综合精品TS| 国产青榴视频| 亚洲AV无码乱码在线观看代蜜桃| 久久精品视频亚洲| 亚洲无码熟妇人妻AV在线| 日韩国产黄色网站| 四虎影视8848永久精品| 99久久精品久久久久久婷婷| 国产你懂得| 国产91精选在线观看| 97se亚洲综合在线天天| 在线一级毛片| 青青草91视频| 乱人伦视频中文字幕在线| a毛片免费在线观看| 无码精品国产VA在线观看DVD| 国产高清在线丝袜精品一区 | 欧美日韩国产在线人| 中文字幕欧美日韩| 在线看片中文字幕| 精品国产中文一级毛片在线看| 国产自无码视频在线观看| 国产精品漂亮美女在线观看| 日韩欧美高清视频| a天堂视频| 亚洲欧美成人在线视频| 无码福利视频| 日韩亚洲综合在线| 经典三级久久| 欧美怡红院视频一区二区三区| 激情無極限的亚洲一区免费| 久久久久久久97| 丁香六月综合网| 中国精品自拍| 精品国产aⅴ一区二区三区| 国产在线视频导航| 久久99国产综合精品1| 97在线观看视频免费| 国产激情无码一区二区APP | 欧美一级特黄aaaaaa在线看片| 国产尹人香蕉综合在线电影| 97se亚洲综合在线韩国专区福利| 亚洲日韩精品综合在线一区二区 | 爽爽影院十八禁在线观看| 欧美成人影院亚洲综合图| 国产AV无码专区亚洲A∨毛片| 久久亚洲国产一区二区| 99ri精品视频在线观看播放| 国产毛片高清一级国语| 97在线视频免费观看| 久久综合丝袜日本网| 456亚洲人成高清在线| 亚洲一区免费看| 制服无码网站| 国产日韩丝袜一二三区| 久久久久久国产精品mv| 精品国产中文一级毛片在线看 | 免费xxxxx在线观看网站| 国产白浆一区二区三区视频在线| 日韩第一页在线| 麻豆精品国产自产在线| 久久精品亚洲热综合一区二区| 高清无码一本到东京热| 一区二区三区国产| www.亚洲一区| 久无码久无码av无码| 热99re99首页精品亚洲五月天| 国产一区二区精品高清在线观看| 国产精品成人一区二区| 无码中文AⅤ在线观看| 国产一区二区人大臿蕉香蕉| 久草美女视频|