最优视频监控软件开发的实现方法
????在開發視頻監控系統應用軟件時,大家往往把關注的焦點集中于數字音/視頻的編解碼的實現上,而忽略了視頻監控系統應用軟件的整體架構。當然視頻監控的核心也是在于音視頻編解碼上,佰銳的Anychat SDK 主要就是在音視頻領域這塊,長期研究音視頻即時通訊,對于音視頻處理模塊(采集、編解碼)、流媒體管理模塊(丟包重傳、抖動平滑、動態緩沖)、流媒體播放模塊(多路混音、音視頻同步)以及P2P網絡模塊(NAT穿透、UPnP支持)等多個子模塊,封裝了底層的硬件操作(音視頻采集、播放)、封裝了流媒體處理(編解碼、網絡傳輸)等非常專業和復雜的技術,為上層應用提供簡單的API控制接口,可以在極短的開發周期,以及極少的人力資源投入下為客戶的現有平臺增加音視頻即時通訊、多方會議的功能。AnyChat SDK可以讓企業越過復雜的底層技術實現,而把主要精力投入項目的業務邏輯處理上,加快項目開發進展,從而為企業贏得市場先機。
????視頻監控系統中,一個優秀的音/視頻編解碼算法固然很重要,但其中是整個視頻監控系統應用軟件的一個重要組成部分。視頻監控系統應用程序還涉及到如何搞笑地輸入/輸出數字音/視頻數據,這些數據又如何與音/視頻編解碼算法協調、配合,以及視頻監控系統應用軟件各個模塊之間如何協調工作。本文主要闡述軟件開發方法,說明層次化軟件開發方法優越性。
傳統的軟件開發方法
??? 傳統的軟件開發方法是一種線性的程序流程,首先以功能模塊對整個程序進行模塊化,然后選擇ASM或C語言,從零開始編寫各個子模塊,最后編寫一個主循環,將這些子模塊線性地順序循環執行。
???? 傳統的軟件開發方法的優點是:整個程序的控制流、數據流完全由編程者掌握,程序直觀、易理解。但其缺點是:各個子模塊之間緊密耦合,修改某一子模塊,將可能影響整個程序,也即其代碼的重復使用率不高,導致相似系統之間程序的移植性差;由于程序順序、循環執行,在算法對數據進行處理前,需要花大量時間來等待輸入/輸出數據就緒,導致CPU的利用率低,同樣,簡單的順序、循環執行,只能管理和調度單一任務,不能實現多任務的管理和調度。
倡導的DSP軟件開發方法
?? ?為了加速DSP軟件開發,一套完善的、規范的、標準化的DSP軟件開發方法稱之為DSP軟件技術。它是以DSP/BIOS實時多任務操作系統為核心,以層次化結構為基礎的一種軟件開發方法,其優點是
?????? 軟件結構層次化:各層之間均采用標準的API,修改某一層不會影響其它層,提高了代碼的重復使用率,改善和提高相似系統之間的程序移植性;
??? 應用層;
??? 設備驅動層;
??? 硬件設備層;
??? 以DSP/BIOS實時多任務內核為主控,使CPU得利用率最大化;
??? DSP/BIOS負責程序的管理和調度;
??? DSP/BIOS可對程序的控制流、數據流及程序執行效率進行實時分析。
??? 缺點是:整個程序的控制流、數據流由DSP/BIOS來管理,程序將不再直觀和易理解。豪宅DSP/BIOS提供了實時分析模塊,可全程實時分析控制流、數據流及程序執行效率。
層次化的設備驅動程序模型
??? 一個設備驅動程序開發包,為設備驅動程序設計一個層次化的模型,稱為IOM模型,IOM模型將設備驅動程序分為2層,上層為與硬件無關的層稱為類設備驅動程序,負責管理設備實例、同步和I/Q請求串行化等操作。與硬件五官的下層稱為迷你設備驅動程序,負責對實際的設備進行初始化或必要的控制操作。
類設備驅動程序
????類設備驅動程序是設備驅動程序的上層抽象,時期與特定設備無關,DDK為每一類的類設備驅動程序定義了一組標準的API函數,應用程序均只能通過此組API函數來調用設備驅動程序,從而使應用程序與設備驅動程序分離。
?? DDK定義了3大類的類驅動程序:SIO、PIP和GIO。
?? SIO:流I/O接口,由SIO和DIO組成,PIO負責緩沖器管理、信號同步以及底層迷你驅動程序接口。
???GIO:通用I/O,允許進行塊讀塊寫,設備驅動程序開發者可以用其來實現新的、專用的類設備驅動程序。
???DDK中已完整地實現了SIO和PIP類設備驅動程序,使用SIO和PIP類設備驅動程序的設備驅動程序開發者無需再編寫任何類設備驅動程序代碼。而對于使用GIO類設備驅動程序的設備驅動程序開發者來說,DDK已為GIO實現了一組基本的API函數,所以開發者只需通過宏定義來調用此組API函數,實現自己專用的類設備驅動程序。
迷你設備驅動程序
?? 迷你設備驅動程序時設備驅動程序的底層抽象,與特定設備有關,對硬件設備進行實際操作,DDK為迷你設備驅動程序規定一組標準的API函數,類設備驅動程序通過這些標準化了的API函數來調用迷你設備驅動程序,而對設備驅動程序開發者來說,只需為特定的函數體。在此組API函數的特定的函數體中,用戶則可以通過調用CLS/BSL庫來對設備的具體硬件進行初始化和相關的控制操作。
為什么要用IOM設備驅動程序模型
???
???IOM設備驅動程序模型是層次化了的設備驅動程序,層次化設計通過使層之間的接口標準化,并且只有相鄰層之間才可相互調用,來有效地將上層應用程序與下層具體的硬件設備的操作細節分離。所以,當更換其中的某些硬件外設時,通常只需修改底層的迷你驅動程序,而上層應用程序的修改則可最小化,從而提高上層應用程序的通用性、可重復使用性和可移植性。
IOM模型的設備驅動程序中包含什么
???在程序設備是用來完成數據輸入/輸出的、完整的數據鏈路,有時單個外設并不一定稱為設備,如:音頻輸入/輸出設備。它是由DSP片商McBSP+IIC+DMA+中斷+片外Codec等片上/片外外設器件構成。在這樣一個數據鏈路中,單獨的一個片上/片外外設并不能完成數據真正的輸入/輸出,不能稱為設備。那么設備室如何來完成相應的數據輸入/輸出?
???? 首先,需要對構成設備的各外設進行初始化,設置它們的工作方式,這些外設才能正確操作。另外,外設的某些功能需要外設操作過程中動態調節,如:A/D轉換器的采樣率可能需要應用程序動態地調整;UART器件的波特率可能需要應用程序動態地調整;外設所對應的中斷、DMA/EDMA通道等也可能要由應用程序根據需要動態來修改。所以設備驅動程序必定有設備初始化函數、和某些相關的設置函數。
??其次,需要對其進行讀/寫操作,即完成外設最基本的輸入/輸出功能。應用程序一般是成批地處理數據,而外設往往一個接一個地輸入/輸出數據,二者之間需要緩沖器來進行緩存,設備驅動程序的輸入/輸出函數完成外設的時間讀/寫操作,將數據存入/讀出緩沖器,應用程序則在緩沖器可用時,進行相應的處理。由此可見,緩沖器是在應用程序與設備驅動程序之間來回切換的,不同的應用所需的緩沖器的大小不同,而且為了避免數據的覆蓋,可能需要用多個緩沖器來進行切換。緩沖器的大小、緩沖器的個數、緩沖器由驅動程序管理還是由應用程序管理可根據應用的需要靈活安排。外設的讀/寫操作并非隨時可以進行,必須滿足一定條件,此條件一般用于作為中斷信號或標志信號,另外,為了提升輸入/輸出的效率,往往需要用DMA/EDMA配合工作,驅動程序往往會中斷、DMA/EDMA相關聯。
??最后,驅動程序輸入/輸出的數據必須由應用程序來處理,應用程序只有在數據就緒時,才能對緩沖器進行讀/寫操作,就存在驅動程序與應用程序同步的問題,同步一般有二種方式,一種是“阻塞”,另一種帶回調函數的非“阻塞”。二種不同的同步方式,實際對應“阻塞”方式時,選用軟件中斷型線程。
?結語
? 采用IOM模型來開發底層設備驅動程序,要比傳統的軟件開發更復雜,整個程序的控制流和數據流更不直觀和不易理解,但掌握這樣的軟件開發方法,那么在下一個項目中已開發完的程序的繼承性和可移植性將得到充分發揮,在我們今后的軟件開發中,將起到事半功倍的作用。如今市場競爭越來越激烈,如何在有限的時間內完成項目,滿足客戶的需求成為企業決策者所需要面對的現實。Anychat可以為您節約開發時間,縮短項目開發周期;節省開發費用,減少人力資源投入;平臺自主開發,提升企業綜合競爭力;產品跨平臺,應用領域廣闊;API接口豐富,方便與第三方業務集成;專業技術支持,性能穩定可靠。
對于本博客有任何問題的朋友可加Q:992139738
轉載于:https://blog.51cto.com/2343338/498613
總結
以上是生活随笔為你收集整理的最优视频监控软件开发的实现方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 病毒周报(080901至080907)
- 下一篇: [转]Dynamic and stati