多路MPEG-4監控系統的設計與實(shí)現 作者: 時(shí)間:2007-03-09 來(lái)源:網(wǎng)絡(luò ) 加入技術(shù)交流群 掃碼加入和技術(shù)大咖面對面交流海量資料庫查詢(xún) 收藏 摘要:介紹了一個(gè)基于PCI總線(xiàn)的多路MPEC-4數字監控系統的設計與實(shí)現。本系統將采集到的多路音、視頻數據以MPEG-4標準進(jìn)行壓縮編碼,將編碼后的數據碼流通過(guò)PCI總線(xiàn)傳送至計算機,并進(jìn)行存儲、回放和檢索等處理。詳細介紹了整個(gè)系統的設計流程,同時(shí)介紹了板卡與主機之間實(shí)現高速數據傳輸的機制。本系統可在單機上實(shí)現16-32路的音、視頻監控,具有很高的性?xún)r(jià)比。關(guān)鍵詞:數字監控系統 MPEC-4 高速數據傳輸 視頻監控系統的發(fā)展經(jīng)歷了模擬監控和數字監控兩個(gè)階段。與模擬監控系統相比,數字監控系統不僅可以利用計算機對數據進(jìn)行存儲、分析和檢索等處理,而且還具有抗干擾能力強、傳輸距離遠、圖像質(zhì)量高等優(yōu)點(diǎn)。數字監控系統也可以和計算機網(wǎng)絡(luò )相結合來(lái)實(shí)現系 統的遠程控制,易于維護和管理。因此,數字監控系統正逐步取代模擬監控系統,具有良好的應用前景。 目前國內的數字視頻監控系統中單機的監控能力一般不超過(guò)16路,每路的圖像壓縮碼率的調節范圍較小,而且圖像格式主要以CIF為主[5~6]。本文介紹的系統在單機上最多可以達到32路的監控能力,而且可以保證音、視頻的嚴格同步。同時(shí),本系統支持CIF和QCIF等多種圖像格式,壓縮碼率調節范圍較大,可以滿(mǎn)足多種場(chǎng)合的監控需求。圖11 多路MPEG-4監控系統結構 本系統采用基于PCI總線(xiàn)板卡的架構,一塊板卡可以監控4路音、視頻數據。系統視頻輸入支持NTSC和PAL制式,采用MPEG-4標準對輸入的多路音、視頻信息進(jìn)行壓縮編碼、解碼,并提供運動(dòng)檢測等附加功能。在工控機上,利用軟件可以很方便地對采集到的音、視頻信息進(jìn)行存儲、檢索和回放。系統利用高速PCI總線(xiàn)與微機進(jìn)行通信,實(shí)現高速數據和控制碼流的傳輸。整個(gè)硬件系統由攝像和云臺模塊、電源模塊、視頻采集模塊、視頻預處理模塊、EPLD控制模塊、音頻編碼模塊、MPEG-4多媒體壓縮編碼模塊和PCI總線(xiàn)控制模塊組成,其連接框圖如圖1所示。 多路視頻采集模塊對輸入的視頻信號進(jìn)行模/數轉換。該模塊支持復合視頻輸入,經(jīng)過(guò)轉換后的輸出信號是符合ITU-656標準的4:2:2的數字視頻信號。同時(shí),該模塊能夠自動(dòng)識別輸入信號的制式。其支持的復合視頻制式有NTSC、PAL和SECAM三種。 視頻預處理模塊通過(guò)對模塊中芯片的內部寄存器進(jìn)行設置來(lái)實(shí)現對視頻輸出的亮度、對比度和色度的調整,以及對視頻圖像尺寸、子圖的大小、位置等的控制。 EPLD控制模塊主要根據控制流信息將視頻預處理模塊輸出的ITU-656數字視頻進(jìn)行格式轉換,并輸出到MPEG-4壓縮編碼模塊中。同時(shí),它也提供行、場(chǎng)等同步信號。EPLD控制模塊還根據后向控制流為音頻編碼模塊提供多路幀同步信號。 音頻編碼模塊對輸入的音頻進(jìn)行μ律PCM編碼。MPEG-4多媒體壓縮編碼模塊完成音、視頻信號的MPEG-4壓縮編碼,并輸出到PCI總線(xiàn)控制模塊,同時(shí)提供運動(dòng)檢測等附加信息。PCI總線(xiàn)控制模塊主要負責板卡與主機間的MPEG-4碼流和控制流信息的高速傳輸。 2 MPEG-4壓縮編碼模塊 MPEG-4壓縮編碼模塊采用的是INTIME公司的IME6400芯片。IME6400是一塊多通道實(shí)時(shí)數字音視頻MPEG-4/2/1壓縮芯片。它不僅可以支持原始的音、視頻信息,而且還支持PCM編碼的音頻信號等。IME6400具有多種輸出數據格式,這使得它在圖像數據存儲、傳輸等方面具有廣泛的應用。 IME6400是按照內部的fireware工作的。在實(shí)現上,fireware軟件既可以存放在一個(gè)外掛的ROM中,也可以從外部主機通過(guò)IME6400的Host Interface(主機接口)下載到芯片中去[1]。本系統中采用外掛ROM的方法,這樣用戶(hù)可以選擇fireware的版本并定期進(jìn)行軟件更新。IME6400的原理框圖[1]如圖2所示。在本系統中,音頻編碼模塊和EPLD控制模塊的輸出與IME6400的音、視頻輸入模塊相連接,然后由IME6400完成音、視頻信號的MPEG-4壓縮編碼。IME6400利用主機接口和PCI總線(xiàn)控制模塊之間的相連,構成數據和控制通道。同時(shí),外掛SDRAM用來(lái)存儲已編碼的碼流,而內部1KByte的FIFO用來(lái)實(shí)現編碼碼流的快速傳輸。外部主機可以按照規定的流程對一些恰當的主機接口控制寄存器進(jìn)行讀或寫(xiě)操作,還可以完成直接寄存器讀寫(xiě)、IME6400系統內存的訪(fǎng)問(wèn)、FIFO緩沖區的訪(fǎng)問(wèn)和firmware軟件的下載等操作。 除了上述功能外,IME6400還可以根據主機自定義的運動(dòng)檢測要求實(shí)現運動(dòng)檢測,并將檢測到的信息以包的形式傳送給主機。 3 PCl 總線(xiàn)控制模塊 PCI總線(xiàn)控制模塊采用的是PHILIPS公司的SAA7146A PCI橋芯片。它具有三個(gè)視頻DMA通道和四個(gè)音頻DMA通道,同時(shí)集成了一些單元模塊,如MMU、BPS和HPS等。它還包含了眾多接口,可以和眾多的音、視頻處理芯片實(shí)現無(wú)縫連接,為多媒體數據的傳輸和處理提供比較廣泛的應用。SAA7146A的原理框圖[2]如圖3所示。 數據擴展總線(xiàn)接口(DEBl)為外圍設備提供了8/16位的數據傳輸和控制功能,支持立即傳輸和塊傳輸兩種方式。在系統中,SAA7l46A的DEBI跟MPEG-4壓縮編碼模塊相連接,實(shí)現MPEG-4壓縮碼流的接收。同時(shí),通過(guò)PCI總線(xiàn)接口模塊,利用DMA傳輸方式在計算機和硬件板卡間實(shí)現壓縮碼流的高速傳輸。SAA7146A具有I2C總線(xiàn)接口,可以很方便地對具有12C接口的外圍芯片進(jìn)行控制。 SAA7146A中的D1接口可以和視頻解碼芯片或視頻壓縮芯片相連接,利用HPS可以對視頻信號進(jìn)行定標、縮放等處理,也可以利用BRS對視頻信號進(jìn)行CIF、QCIF或者QQCIF格式轉換。 除此之外,SAA7146A還提供了與音頻處理芯片連接的多個(gè)接口。 4 高速數據傳輸機制的設計 整個(gè)系統的軟件主要由兩部分組成。一是設備驅動(dòng)程序,主要負責硬件板卡和計算機之間的交互;二是上層應用程序,用于實(shí)現系統的功能。由于多路監控系統的數據傳輸量非常大,因此設計一個(gè)高效的驅動(dòng)程序以實(shí)現高速數據傳輸對整個(gè)系統的性能具有重要的影響。圖34.1 驅動(dòng)程序的設計 本系統的設備驅動(dòng)程序采用了Windows 2000下的Windows Driver Model(WDM)驅動(dòng)程序。在Windows2000中,系統有兩種命名設備的方法:一種是使用符號連接名,但它的安全陛不是很好[4];另一種是利用具有唯一性的GUID號表示設備接口。上層應用程序可以通過(guò)上面兩種方法獲得有效的設備句柄,并利用這個(gè)設備句柄實(shí)現對設備驅動(dòng)程序的訪(fǎng)問(wèn)。當上層應用程序調用WIN32AHI函數后,將由Win32子系統調用I/O服務(wù)接口,并傳送給內核模式下的I/O系統服務(wù)模塊。接著(zhù),I/0管理器將檢查這個(gè)請求的參數,然后創(chuàng )建一個(gè)合適的I/O請求包(1RP)。這個(gè)IRP經(jīng)過(guò)分層驅動(dòng)程序的處理傳送給一個(gè)合適的設備驅動(dòng)程序,并由這個(gè)程序通過(guò)硬件抽象層對硬件進(jìn)行操作,完成這個(gè)IRP請求。最后,I/O管理器把結果和數據還回給應用程序[3]。 在本系統的Windows2000的WDM驅動(dòng)程序中,除了基本的功能模塊[3](如PNP模塊、Dispatch模塊、Power模塊等)外,可以把其余部分大概分為板卡初始化模塊、參數設置模塊、中斷服務(wù)模塊和DMA傳輸模塊等。 為了能夠使PCI總線(xiàn)控制模塊實(shí)時(shí)地從壓縮編碼模塊中讀取壓縮碼流,并及時(shí)地傳送給計算機,本系統采用了中斷機制。當壓縮編碼模塊中的FIFO滿(mǎn)時(shí),壓縮編碼模塊產(chǎn)生一個(gè)中斷信號,通知PCI總線(xiàn)控制模塊啟動(dòng)DMA,利用塊傳輸方式讀取FIFO中的數據。同時(shí),IME6400將后面的編碼數據暫存在外掛的SDRAM中。 PHILIPS公司的SAA7146A是一片具有總線(xiàn)主控DMA控制器的PCI橋芯片,可以實(shí)現內存和設備間快速的數據傳輸。本系統采用“基于包”的DMA傳輸方式;同時(shí),為了進(jìn)一步提高速度,使DMA將數據直接搬移到用戶(hù)應用程序中所申請的循環(huán)緩存區中。DMA的流程如圖4所示。其中,Saa7l46Read例程的主要功能是進(jìn)行DMA的初始化操作,并啟動(dòng)編碼碼流輸出。AdapterCon-trol例程確保計算機處理器高速緩存中的內容為當前使用的內存緩沖區中的內容。DpcForIsr例程完成內存物理地址和傳輸的數據長(cháng)度的獲得,并把它們寫(xiě)到DMA控制寄存器中,該例程還在合適的條件下與應用程序利用事件進(jìn)行通信。 4.2 傳輸機制的設計 在數字監控系統中,為了實(shí)現數據的實(shí)時(shí)傳輸,應該仔細設計設備驅動(dòng)程序和上層應用程序間的數據傳輸機制,來(lái)確保數據的完整性和實(shí)時(shí)性。 Windows2000操作系統把虛擬內存地址空間分為用戶(hù)模式的虛擬地址空間和內核模式的地址空間。一般來(lái)講,內核模式驅動(dòng)程序幾乎不使用用戶(hù)模式的虛擬地址來(lái)訪(fǎng)問(wèn)內存。實(shí)際上,Windows2000操作系統為驅動(dòng)程序訪(fǎng)問(wèn)用戶(hù)模式的數據緩沖區提供了一種方法:通過(guò)應用程序調用DeviceIoControl、ReadFile和WriteFile等API函數,傳遞給這些函數用戶(hù)模式的虛擬地址和數據長(cháng)度等參數,這樣就相當于向I/O管理器提供了一個(gè)數據緩沖區。I/O管理器再根據設備驅動(dòng)程序中指定的三種不同機制[3](buffer方式、direct方式和neither方式)中的一種,利用不同的實(shí)現方法來(lái)實(shí)現用戶(hù)模式和內核模式間數據的共享。圖4Buffer方式是一種在對速度要求不高的情況下常用的方法。在本系統的板卡初始化模塊和參數設置模塊中,由于對速度、數據量的要求都不是很高,所以采用了這種方式的共享方法。但是在DMA傳輸模塊中,為了能夠實(shí)現大量的MPEG-4碼流的高速實(shí)時(shí)傳輸,本系統設法省去了數據傳輸中間的復制過(guò)程,將編碼碼流數據直接搬移到應用程序的一個(gè)循環(huán)緩沖區中去。本系統采用的這種方法有點(diǎn)像neither方式,具體的實(shí)現方法如下:應用程序申請并鎖定一塊循環(huán)緩沖區,然后將得到的這塊內存的用戶(hù)模式虛擬地址和長(cháng)度傳送給內核設備驅動(dòng)程序。在設備驅動(dòng)程序中,利用傳送下來(lái)的用戶(hù)模式地址和緩沖區長(cháng)度為這塊用戶(hù)模式緩沖區創(chuàng )建MDL(內存描述符),并將它映射到內核模式地址空間,得到一個(gè)內核模式的虛擬地址,這樣驅動(dòng)程序就可以通過(guò)這個(gè)地址直接訪(fǎng)問(wèn)應用程序申請的共享內存塊。 除了上述的方法外,共享內存塊也可以由內核驅動(dòng)程序申請的系統緩沖區來(lái)充當,并通過(guò)轉換得到用戶(hù)模式的虛擬地址,應用程序就可以通過(guò)這個(gè)地址直接訪(fǎng)問(wèn)系統地址。 另外,為了實(shí)現應用程序和驅動(dòng)程序的同步,采用了共享事件的方法[4]。在Windows2000中,應用程序和內核驅動(dòng)程序可以共享同一命名的事件,這個(gè)事件可以由任意一方創(chuàng )建。當其中一方創(chuàng )建了一個(gè)事件后,就可以把這個(gè)事件的句柄傳送給另一方來(lái)實(shí)現事件的共享,然后通過(guò)一方捕獲事件信號態(tài)、另一方設置事件信號態(tài)的方法實(shí)現兩者間的通信。 在一臺CPU速度為1.8G、內存為512M的工控機上,本系統可支持8塊壓縮板卡同時(shí)工作,從而提供對32路音視頻數據的監控能力,系統的壓縮率在較寬的范圍內可調。
評論