視頻采集播放卡設(shè)計探究論文
時間:2022-10-11 11:10:00
導(dǎo)語:視頻采集播放卡設(shè)計探究論文一文來源于網(wǎng)友上傳,不代表本站觀點,若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。
摘要介紹了視頻采集播放卡的總體設(shè)計,給出了硬件電路設(shè)計框圖,重點闡述了驅(qū)動程序設(shè)計與實現(xiàn)。
關(guān)鍵詞視頻采集播放卡PCI總線流Minidriver
1引言
隨著寬帶網(wǎng)絡(luò)技術(shù)和流媒體技術(shù)的迅猛發(fā)展,計算機用戶可以從網(wǎng)絡(luò)上獲得的影音資源日益豐富,人們不但可以從網(wǎng)絡(luò)上下載,而且能夠通過在線點播方式即時收看影音文件。在電視、計算機、寬帶網(wǎng)絡(luò)日益普及的今天,利用設(shè)備整合現(xiàn)有資源,充分發(fā)揮各設(shè)備優(yōu)勢,實現(xiàn)資源利用的最大化顯得尤為重要。通過設(shè)計視頻采集播放卡,實現(xiàn)音視頻采集和計算機(網(wǎng)絡(luò))影音文件后臺播放輸出,有利于音視頻資源的整合利用,提高資源利用率。
2總體方案
視頻采集播放卡由硬件和軟件兩部分組成,如圖1所示。硬件部分包括PCI接口模塊、音頻編解碼模塊、視頻解碼模塊、視頻編碼模塊以及電源模塊等。軟件部分包括驅(qū)動模塊和應(yīng)用程序模塊。驅(qū)動模塊屬于底層的軟件接口,主要為上層的應(yīng)用程序提供硬件調(diào)用接口。
圖1系統(tǒng)軟硬件框圖
當(dāng)前計算機支持的媒體格式多種多樣,自己去為每一種媒體格式編寫編解碼程序不太現(xiàn)實。在操作系統(tǒng)中有著豐富的編解碼資源,如何利用這些資源就顯得至關(guān)重要。DirectShow為Windows平臺上處理各種各樣的媒體文件播放、音視頻采集等高性能要求的多媒體應(yīng)用提供一個完整的解決方案。為了利用操作系統(tǒng)中提供的編解碼資源,需要編寫流Minidriver,利用包裝Filter對硬件設(shè)備驅(qū)動程序進行包裝,實現(xiàn)DirectShow應(yīng)用程序?qū)τ布O(shè)備的訪問。
3硬件實現(xiàn)
視頻采集播放卡由多媒體控制器SAA7146A、視頻編碼器SAA7121H、視頻解碼器SAA7113H、音頻編解碼器TDA1309H、音頻放大器TDA1308以及AT24C02等芯片組成,具體如圖2所示。
圖2硬件實現(xiàn)框圖
計算機通過PCI總線與視頻采集播放卡進行數(shù)據(jù)交互。通過配置SAA7146A內(nèi)部寄存器,可以對芯片內(nèi)部各功能模塊進行控制,實現(xiàn)與外圍芯片的數(shù)據(jù)交互。在視頻采集過程中,模擬視頻信號首先經(jīng)過解碼器SAA7113H,轉(zhuǎn)換成標(biāo)準的數(shù)字視頻信號,SAA7146A芯片讀取D1接口數(shù)據(jù),并通過PCI總線上傳給應(yīng)用程序。在視頻播放過程中,應(yīng)用程序下傳數(shù)據(jù)給SAA7146A,而后SAA7146A把視頻數(shù)據(jù)傳遞給編碼器SAA7121H,還原成模擬視頻信號。音頻信號采用TDA1309H實現(xiàn)數(shù)模和模數(shù)轉(zhuǎn)換。
4驅(qū)動設(shè)計
驅(qū)動程序是受操作系統(tǒng)信任的、控制硬件設(shè)備的一組函數(shù),它的優(yōu)劣不僅事關(guān)硬件設(shè)備的功能實現(xiàn),而且嚴重的設(shè)計缺陷還將造成操作系統(tǒng)的安全隱患。驅(qū)動程序開發(fā)采用DriverStudio2.7+WindowsDDK+VisualC++6.0實現(xiàn)。由于采用DriverWorks建立的驅(qū)動程序框架已包含實現(xiàn)設(shè)備的初始化、卸載等基本功能代碼,因此在開發(fā)PCI設(shè)備驅(qū)動程序時可以把主要精力集中于處理硬件訪問、中斷處理和DMA傳輸?shù)葐栴}。
4.1硬件訪問
驅(qū)動程序通過讀寫與設(shè)備相關(guān)聯(lián)的寄存器同外圍設(shè)備進行通信。為了引用設(shè)備的寄存器,DriverWorks定義了類KIoRange和類KMemoryRange來分別實現(xiàn)I/O空間寄存器和內(nèi)存映射寄存器的訪問。映射的地址空間大小和類型由PCI設(shè)備配置空間的基地址寄存器值決定。
控制SAA7146A芯片實現(xiàn)任何一個完整的功能,都可能需要編寫一組寄存器訪問指令。由于芯片SAA7113H和SAA7121H使用I2C總線進行設(shè)置。為實現(xiàn)對I2C總線接口的訪問,不但要設(shè)置狀態(tài)寄存器IICSTA和傳輸控制寄存器IICTRF,而且要設(shè)置主控制寄存器MC1/MC2。圖3所示為I2C單字節(jié)寫操作的流程圖。4.2中斷處理
為了方便狀態(tài)查詢,SAA7146A提供有兩個狀態(tài)寄存器來收集、存放狀態(tài)信息,分別為主狀態(tài)寄存器PSR(PrimaryStatusRegister)和次狀態(tài)寄存器SSR(SecondaryStatusRegister),其中主狀態(tài)寄存器包含從次狀態(tài)寄存器中概括的信息。中斷使能寄存器IER使能中斷,當(dāng)某個中斷條件發(fā)生時,中斷狀態(tài)寄存器ISR的對應(yīng)位被置“1”。
在ISR主要完成如下工作:①檢測SAA7146A狀態(tài)寄存器,判斷是否為本設(shè)備中斷,“是”則阻止它產(chǎn)生另一中斷,對中斷進行簡單處理,“否”則返回FALSE。②調(diào)用IoRequestDpc排隊DPC請求在驅(qū)動程序的DpcForIsr例程中繼續(xù)處理請求。
在每部分數(shù)據(jù)傳輸結(jié)束時由ISR觸發(fā)DpcForIsr例程。它的工作是開始下一部分的傳輸和完成當(dāng)前請求。
4.3DMA傳輸
為了傳輸音頻和視頻數(shù)據(jù),SAA7146A芯片提供了8個DMA通道(3個視頻通道,4個音頻通道,1個DEBI通道)進行數(shù)據(jù)傳輸。為了克服大塊內(nèi)存獲取,SAA7146A支持分散/集中列表,提供有內(nèi)存管理單元MMU,用來處理不連續(xù)內(nèi)存。使用MMU的關(guān)鍵是初始化頁表。頁表是一塊頁對齊的4K字節(jié)大小的物理內(nèi)存。頁表中存放每4K字節(jié)為單位的物理內(nèi)存的物理起始地址。
下述代碼啟動視頻DMA通道3,視頻數(shù)據(jù)通過D1_A接口經(jīng)BRS路由,輸入到內(nèi)存。
Height=conf.height;Width=conf.width;Pitch=conf.pitch;//置初值
basepage3.Page3=PageBaseAddress/4096;//頁表基地址右移12位
basepage3.ME3=1;//使能MMU
basepage3.Limit=0;basepage3.PV3=0;
basepage3.RW3=0;basepage3.Swap3=0;
useraddr=0;//當(dāng)前DMA通道使用的初始地址,多個DMA通道可以共用一個MMU頁表
SetReg(MC1,0x04000400);//打開DD1接口
SetReg(DD1_INIT,0x07000000);//初始化DD1接口,
SetReg(MC2,0x06000600);//upload“DD1接口初始化設(shè)置”
SetReg(DD1_STREAM,0x00000000);//設(shè)置DD1接口視頻數(shù)據(jù)流處理
SetReg(MC2,0x02000200);//upload
SetReg(BRS_CTRL,0x00000000);//設(shè)置BRS控制寄存器
SetReg(MC2,0x01000100);//upload
SetReg(PCI_BT_V,0x00170000);//設(shè)置Burst傳輸閥值
SetReg(NUM_LINE_BYTE3,(width<<16)|(Height/2);//設(shè)置視頻圖像大小
SetReg(BASE_ODD3,useraddr);//設(shè)置奇場視頻數(shù)據(jù)起始存放地址
SetReg(BASE_EVEN3,useraddr+Pitch);//設(shè)置偶場視頻數(shù)據(jù)起始存放地址
SetReg(PROT_ADDR3,useraddr+Height*Pitch);//設(shè)定保護地址
SetReg(PITCH3,Pitch);//設(shè)定兩行視頻數(shù)據(jù)存放地址間隔
SetReg(BASE_PAGE3,basepage3.value);//設(shè)置頁表基地址等信息
SetReg(MC2,0x00100010);//upload“視頻DMA3寄存器”
SetReg(IER,0x00000040);//設(shè)置中斷使能寄存器
SetReg(MC1,0x00100010);//啟動DMA3傳輸
4.4流Minidriver
Minidriver的整個調(diào)試工作是在DirectShow提供的GraphEdit工具中完成的,GraphEdit提供了良好可視化界面,可以方便的實現(xiàn)Filter的插入、刪除和連接,而且可以查看和修改Filter屬性。整個調(diào)試過程分為三步完成——視頻預(yù)覽和音頻監(jiān)聽、視頻采集并壓縮存放為AVI文件、解壓AVI文件并播放輸出到電視設(shè)備。
圖4所示為視頻采集播放卡視頻預(yù)覽和音頻監(jiān)聽的FilterGraph,視頻輸出到顯示屏幕和聲卡。
圖4視頻采集播放卡預(yù)覽FilterGraph
圖5所示為視頻采集播放卡播放輸出上述采集的AVI格式視頻文件的FilterGraph,由于SAA7146ABRS只能接收UYVY格式的視頻數(shù)據(jù),因此需要增加了一個ColorSpaceConverterFilter來實現(xiàn)RGB24到UYVY格式的轉(zhuǎn)換。
圖5AVI文件播放輸出FilterGraph
5總結(jié)
視頻采集播放卡采用軟件方法實現(xiàn)音視頻壓縮、解壓縮,雖然需要占用一定的計算機系統(tǒng)資源,但具有硬件電路簡單、成本低、升級容易等優(yōu)點。設(shè)計選用專用多媒體PCI接口芯片SAA7146A,實現(xiàn)了與視頻編碼器、視頻解碼器和音頻編解碼器的連接。為利用現(xiàn)有音視頻編解碼資源,擴展視頻采集播放卡應(yīng)用范圍,編寫了流Minidriver。通過使用DirectShow提供的包裝Filter,把硬件設(shè)備包裝成多個Filter組件,實現(xiàn)了DirectShow應(yīng)用程序?qū)τ布O(shè)備的訪問。
參考文獻
[1]SAA7146ADataSheet.PhilipsSemiconductors.1998
[2]SAA7113HDataSheet.PhilipsSemiconductors.1999
[3]SAA7121HDataSheet.PhilipsSemiconductors.2002
[4][美]ArtBaker,JerryLozano著,施諾等譯.Windows2000設(shè)備驅(qū)動程序設(shè)計指南.機械工業(yè)出版社,2001
[5]陸其明.DirectShow開發(fā)指南.清華大學(xué)出版社,2003.12
- 上一篇:林場場長述職報告
- 下一篇:醫(yī)院后勤副院長述職報告