專利名稱:攝像機(jī)共享的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)系統(tǒng)中的視頻捕獲設(shè)備,具體地說(shuō),涉及視頻捕獲設(shè)備的輸出在應(yīng)用之間的共享。
背景技術(shù):
用于計(jì)算機(jī)系統(tǒng)的攝像機(jī)在當(dāng)今的計(jì)算環(huán)境中正變得更加常見(jiàn)。此外,越來(lái)越多的應(yīng)用能夠利用從攝像機(jī)捕獲而來(lái)的視頻。然而,計(jì)算機(jī)系統(tǒng)的應(yīng)用對(duì)攝像機(jī)的訪問(wèn)通常被限制為單個(gè)應(yīng)用。用于這些攝像機(jī)的設(shè)備驅(qū)動(dòng)器是互斥的,即禁止在多個(gè)應(yīng)用之間共享攝像機(jī)的使用。一旦某個(gè)應(yīng)用獲得了視頻捕獲設(shè)備驅(qū)動(dòng)器,任何其他應(yīng)用都無(wú)法接收到攝像機(jī)的輸出,直到正在控制的應(yīng)用解除對(duì)所述驅(qū)動(dòng)器的控制。
發(fā)明內(nèi)容
為解決以上問(wèn)題,本發(fā)明提供了在一個(gè)以上的應(yīng)用之間共享視頻捕獲設(shè)備(例如攝像機(jī))的輸出的系統(tǒng)、方法和軟件。
根據(jù)本發(fā)明的一個(gè)方面,提供了一種方法,包括獲取對(duì)視頻捕獲設(shè)備驅(qū)動(dòng)器的獨(dú)占(exclusive)控制;分配共享存儲(chǔ)器緩沖區(qū);從所述視頻捕獲設(shè)備驅(qū)動(dòng)器接收視頻幀;并且將所述視頻幀寫入所述共享存儲(chǔ)器緩沖區(qū)。
根據(jù)本發(fā)明的另一個(gè)方面,提供了一種方法,包括將視頻幀寫入共享存儲(chǔ)器緩沖區(qū),其中所述共享存儲(chǔ)器緩沖區(qū)可由一個(gè)或多個(gè)應(yīng)用訪問(wèn)。
根據(jù)本發(fā)明的又一個(gè)方面,提供了一種系統(tǒng),包括存儲(chǔ)器;視頻捕獲設(shè)備;從所述視頻捕獲設(shè)備接收所捕獲的視頻幀的視頻捕獲設(shè)備驅(qū)動(dòng)器,其中所述視頻捕獲設(shè)備驅(qū)動(dòng)器是互斥的;和可運(yùn)行在所述系統(tǒng)上的軟件,該軟件在所述存儲(chǔ)器中分配共享存儲(chǔ)器緩沖區(qū);從所述視頻捕獲設(shè)備驅(qū)動(dòng)器接收視頻幀;并且將所接收的視頻幀寫入所述共享存儲(chǔ)器緩沖區(qū)。
根據(jù)本發(fā)明的再一個(gè)方面,提供了一種包括機(jī)器可訪問(wèn)介質(zhì)的制品,所述機(jī)器可訪問(wèn)介質(zhì)具有相關(guān)指令,其中所述指令在被訪問(wèn)時(shí)導(dǎo)致機(jī)器執(zhí)行將來(lái)自視頻捕獲設(shè)備的視頻數(shù)據(jù)通過(guò)共享存儲(chǔ)器緩沖區(qū)提供給可運(yùn)行在所述機(jī)器上的兩個(gè)或兩個(gè)以上的應(yīng)用。
根據(jù)本發(fā)明的再又一個(gè)方面,提供了一種方法,包括獲取互斥型視頻捕獲設(shè)備驅(qū)動(dòng)器;分配兩個(gè)共享存儲(chǔ)器緩沖區(qū);并且創(chuàng)建一個(gè)或多個(gè)虛擬設(shè)備驅(qū)動(dòng)器,其中所述一個(gè)或多個(gè)虛擬設(shè)備驅(qū)動(dòng)器對(duì)于可運(yùn)行在執(zhí)行所述方法的系統(tǒng)上的應(yīng)用而言,看起來(lái)就像視頻捕獲設(shè)備驅(qū)動(dòng)器一樣。
根據(jù)本發(fā)明的再又一個(gè)方面,提供了一種方法,包括獲取對(duì)視頻捕獲設(shè)備驅(qū)動(dòng)器的獨(dú)占控制;分配共享存儲(chǔ)器緩沖區(qū);將來(lái)自所述視頻捕獲設(shè)備驅(qū)動(dòng)器的視頻流接收到過(guò)濾器圖中,所述過(guò)濾器圖包括從所述視頻捕獲設(shè)備驅(qū)動(dòng)器接收視頻流的源過(guò)濾器;和一次一幀地將所述視頻流寫入共享存儲(chǔ)器緩沖區(qū)的遞交過(guò)濾器。
根據(jù)本發(fā)明的再又一個(gè)方面,提供了一種方法,包括向系統(tǒng)提供一個(gè)或多個(gè)虛擬視頻捕獲設(shè)備驅(qū)動(dòng)器,其中所述虛擬視頻捕獲設(shè)備驅(qū)動(dòng)器從共享存儲(chǔ)器緩沖區(qū)獲得視頻數(shù)據(jù);并且用接收自互斥型視頻捕獲設(shè)備驅(qū)動(dòng)器的視頻數(shù)據(jù)填充所述共享存儲(chǔ)器緩沖區(qū)。
圖1是根據(jù)本發(fā)明主題的一個(gè)示例性實(shí)施方案的系統(tǒng)的示意圖。
圖2是本發(fā)明主題的一個(gè)示例性實(shí)施方案的流程圖。
圖3是本發(fā)明主題的一種方法的示例性實(shí)施方案的框圖。
圖4是本發(fā)明主題的一種方法的示例性實(shí)施方案的框圖。
圖5是本發(fā)明主題的一種方法的示例性實(shí)施方案的框圖。
圖6是本發(fā)明主題的一個(gè)示例性實(shí)施方案的流程圖。
具體實(shí)施例方式
在以下詳細(xì)描述中,參考構(gòu)成其一部分的附圖,在附圖中以示例的方式示出了可以實(shí)現(xiàn)本發(fā)明主題的具體實(shí)施方案。足夠詳細(xì)地描述了這些實(shí)施方案,以使得本領(lǐng)域的技術(shù)人員能夠?qū)崿F(xiàn)它們,并且將會(huì)理解,可以采用其他實(shí)施方案,并且可以作出結(jié)構(gòu)、邏輯和電氣上的改變,而不會(huì)偏離本發(fā)明主題的范圍。本發(fā)明主題的這些實(shí)施方案可以單一地和/或統(tǒng)一地被稱為“發(fā)明”一詞,這僅僅是為了方便起見(jiàn),如果事實(shí)上公開(kāi)了一個(gè)以上的發(fā)明或發(fā)明概念時(shí),我們并不想主動(dòng)地將這一申請(qǐng)的范圍限制到任何單個(gè)發(fā)明或發(fā)明概念。
因此,以下描述并不是限制性的,本發(fā)明主題的范圍由所附的權(quán)利要求書來(lái)限定。
這里所描述的功能或算法可以用硬件、軟件或者軟硬件的組合來(lái)實(shí)現(xiàn)。軟件包括存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上的計(jì)算機(jī)可執(zhí)行指令,所述計(jì)算機(jī)可讀介質(zhì)例如是存儲(chǔ)器或其他類型的存儲(chǔ)設(shè)備。術(shù)語(yǔ)“計(jì)算機(jī)可讀介質(zhì)”也被用來(lái)表示可以傳送軟件的載波。此外,這樣的功能對(duì)應(yīng)于由軟件、硬件、固件或其任何組合構(gòu)成的模塊。根據(jù)需要可以在一個(gè)或多個(gè)模塊中實(shí)現(xiàn)多種功能,所描述的實(shí)施方案僅僅是實(shí)施例而已。軟件可以在數(shù)字信號(hào)處理器、專用集成電路(ASIC)、微處理器或者運(yùn)行于系統(tǒng)中的其他類型處理器上執(zhí)行,所述系統(tǒng)例如是個(gè)人計(jì)算機(jī)、服務(wù)器、路由器或者有能力處理數(shù)據(jù)的其他設(shè)備,包括網(wǎng)絡(luò)互連設(shè)備。
一些實(shí)施方案在兩個(gè)或更多的專門互連的硬件模塊或設(shè)備中,利用在模塊之間傳送以及通過(guò)模塊傳送的相關(guān)控制和數(shù)據(jù)信號(hào),或者作為專用集成電路的若干部分,實(shí)現(xiàn)所述功能。因此,示例性的處理流程(process flow)適用于軟件、固件和硬件實(shí)現(xiàn)方式或者它們的組合。
用在這里,術(shù)語(yǔ)“視頻”被用來(lái)涵蓋所捕獲的圖像,無(wú)論是靜止的還是運(yùn)動(dòng)的。因此,希望術(shù)語(yǔ)“視頻”是廣義的,不想限制本公開(kāi)或權(quán)利要求書的廣度。
用在這里,術(shù)語(yǔ)“互斥”被用來(lái)描述禁止在多個(gè)應(yīng)用之間攝像機(jī)共享使用的設(shè)備驅(qū)動(dòng)器。這種“互斥”型設(shè)備驅(qū)動(dòng)器被第一個(gè)應(yīng)用獲得,就不能被另一個(gè)應(yīng)用獲得,直到第一個(gè)應(yīng)用釋放該驅(qū)動(dòng)器。
本發(fā)明主題提供了在計(jì)算系統(tǒng)上的多個(gè)應(yīng)用之間共享視頻捕獲設(shè)備(例如攝像機(jī))的各種系統(tǒng)、方法和軟件。一些這樣的實(shí)施方案包括獲取對(duì)互斥型視頻捕獲設(shè)備驅(qū)動(dòng)器的獨(dú)占控制,并且將所捕獲的視頻寫入系統(tǒng)上的其他應(yīng)用可訪問(wèn)的存儲(chǔ)器緩沖區(qū)的服務(wù)器處理。然后,系統(tǒng)上的一個(gè)或多個(gè)其他處理從所述存儲(chǔ)器緩沖區(qū)中讀取所述視頻,并將該視頻提供給一個(gè)或多個(gè)應(yīng)用。在附圖中示出了多種實(shí)施方案,下面將進(jìn)行描述。
圖1是根據(jù)本發(fā)明主題的示例性實(shí)施方案的系統(tǒng)100的示意圖。系統(tǒng)100的該示例性實(shí)施方案提供了本發(fā)明主題多種可能的硬件和/或軟件設(shè)置中的一種。系統(tǒng)100包括具有處理器102、存儲(chǔ)器104的計(jì)算設(shè)備101和視頻捕獲設(shè)備118。存儲(chǔ)器104包括多個(gè)應(yīng)用1-N,圖中應(yīng)用1和N分別用106和108來(lái)標(biāo)識(shí)。存儲(chǔ)器104還包括虛擬視頻捕獲設(shè)備110、共享存儲(chǔ)器緩沖區(qū)112、視頻服務(wù)器處理116和視頻捕獲設(shè)備驅(qū)動(dòng)器114。
計(jì)算設(shè)備101代表能夠與視頻捕獲設(shè)備118一同工作的任何類型的計(jì)算設(shè)備。這種計(jì)算設(shè)備101的一些例子包括計(jì)算機(jī)、個(gè)人計(jì)算機(jī)、服務(wù)器、個(gè)人數(shù)字助手(PDA)、或者實(shí)際上任何其他類型的計(jì)算設(shè)備101。計(jì)算設(shè)備101也可以具有使用實(shí)際上任意操作系統(tǒng)的體系結(jié)構(gòu)。
計(jì)算設(shè)備101的處理器102代表數(shù)字信號(hào)處理器或任意類型體系結(jié)構(gòu)的處理單元,包括ASIC(專用集成電路)、CISC(復(fù)雜指令集計(jì)算機(jī))、RISC(精簡(jiǎn)指令集計(jì)算機(jī))、VLIW(超長(zhǎng)指令字)、或者混合體系結(jié)構(gòu),但是也可以使用任何適當(dāng)?shù)奶幚砥?。處理?02執(zhí)行指令。處理器102還包括控制單元,該單元組織存儲(chǔ)器(例如存儲(chǔ)器104)內(nèi)的數(shù)據(jù)和程序存儲(chǔ),并且將數(shù)據(jù)及其他信息傳入并傳出計(jì)算設(shè)備101,例如與視頻捕獲設(shè)備118之間傳入傳出數(shù)據(jù),并且在一些實(shí)施方案中,還通過(guò)可選的網(wǎng)絡(luò)接口(未示出)與一個(gè)或多個(gè)網(wǎng)絡(luò)連接(未示出)之間傳入傳出數(shù)據(jù)。雖然在計(jì)算設(shè)備101內(nèi)只示出了一個(gè)處理器,但是在一些實(shí)施方案中,計(jì)算設(shè)備101包括多個(gè)處理器102。
存儲(chǔ)器104代表一個(gè)或多個(gè)存儲(chǔ)數(shù)據(jù)的機(jī)制。例如,存儲(chǔ)器104在不同的實(shí)施方案中包括隨機(jī)訪問(wèn)存儲(chǔ)器(RAM)、磁盤存儲(chǔ)介質(zhì)、光存儲(chǔ)介質(zhì)、閃存器件和/或其他易失性及非易失性機(jī)器可讀介質(zhì)中的一種或多種。在其他實(shí)施方案中,存儲(chǔ)器包括適當(dāng)類型的存儲(chǔ)設(shè)備或存儲(chǔ)器104。雖然只示出了一個(gè)存儲(chǔ)器104,但是也可以出現(xiàn)不同類型的多個(gè)存儲(chǔ)器104以及多種類型的存儲(chǔ)設(shè)備。
視頻捕獲設(shè)備118在一些實(shí)施方案中是能夠捕獲視頻的設(shè)備,例如攝像機(jī)。在不同的實(shí)施方案中,視頻捕獲設(shè)備118可以捕獲單幀視頻、時(shí)間上的多幀或以上兩者。視頻捕獲設(shè)備118可以以多種方式被耦合到計(jì)算設(shè)備101。例如,視頻捕獲設(shè)備118可以經(jīng)由一條線纜,例如通用串行總線(USB)線纜被有效地耦合到計(jì)算設(shè)備101。其他實(shí)施方案包括經(jīng)由諸如Bluetooth(藍(lán)牙)無(wú)線連接之類的無(wú)線連接,或者能夠?qū)⑺东@的視頻從視頻捕獲設(shè)備118傳遞到計(jì)算設(shè)備101的其他有線或無(wú)線連接設(shè)備或技術(shù),被有效地耦合到計(jì)算設(shè)備101的視頻捕獲設(shè)備。
在一些實(shí)施方案中,視頻捕獲設(shè)備118可以以640×480像素的分辨率,以每秒30幀的速率來(lái)捕獲彩色視頻。這種視頻捕獲設(shè)備118可以捕獲分辨率為1.3兆像素的靜止圖像。在其他實(shí)施方案中,視頻捕獲設(shè)備118能夠以更高或更低的分辨率,以更高或更低的每秒幀率來(lái)捕獲視頻和靜止圖像。在一些實(shí)施方案中,可以通過(guò)調(diào)節(jié)視頻捕獲設(shè)備118的一個(gè)或多個(gè)參數(shù)來(lái)改變所捕獲視頻的屬性。一些這樣的設(shè)置包括捕獲視頻的分辨率。其他設(shè)置包括幀率、清晰度、亮度、聚焦、縮放、色彩、攝像機(jī)角度或位置,以及實(shí)際上用于調(diào)節(jié)所捕獲視頻的一種或多種屬性或主題的任何其他設(shè)置。
視頻捕獲設(shè)備118的一些更進(jìn)一步的實(shí)施方案包括麥克風(fēng)。在一些這樣的實(shí)施方案中,視頻捕獲設(shè)備118可以將復(fù)用信號(hào)(multiplexed signal)傳遞給計(jì)算設(shè)備101,所述復(fù)用信號(hào)包括視頻和音頻。
如上所述,視頻捕獲設(shè)備118被有效地耦合到計(jì)算設(shè)備101。視頻捕獲設(shè)備驅(qū)動(dòng)器114從視頻捕獲設(shè)備118接收視頻。在一些實(shí)施方案中,視頻捕獲設(shè)備驅(qū)動(dòng)器114也向視頻捕獲設(shè)備118提供命令。這些命令包括改變由視頻捕獲設(shè)備118捕獲的視頻的屬性的命令。在一些實(shí)施方案中,視頻捕獲設(shè)備驅(qū)動(dòng)器114是互斥型設(shè)備驅(qū)動(dòng)器,只允許運(yùn)行在計(jì)算設(shè)備101上的一個(gè)應(yīng)用使用視頻捕獲設(shè)備驅(qū)動(dòng)器114。在一些實(shí)施方案中,視頻捕獲設(shè)備驅(qū)動(dòng)器114是由視頻捕獲設(shè)備118的銷售商/制作商提供的驅(qū)動(dòng)器。
視頻服務(wù)器處理116是獲取對(duì)視頻捕獲設(shè)備驅(qū)動(dòng)器114的控制的處理。如果共享存儲(chǔ)器緩沖區(qū)112還未分配的話,視頻服務(wù)器處理116還在存儲(chǔ)器104內(nèi)分配一個(gè)共享存儲(chǔ)器緩沖區(qū)112。在已獲取了視頻捕獲設(shè)備驅(qū)動(dòng)器114并且分配了共享存儲(chǔ)器緩沖區(qū)112后,視頻服務(wù)器處理116將從視頻捕獲設(shè)備驅(qū)動(dòng)器114接收到的視頻寫入共享存儲(chǔ)器緩沖區(qū)112。可以一幀接一幀地完成視頻向共享存儲(chǔ)器緩沖區(qū)112的寫入,每一幀覆寫一個(gè)在前的幀。在一些實(shí)施方案中,存在兩個(gè)或更多的共享存儲(chǔ)器緩沖區(qū)112。在這種多個(gè)共享存儲(chǔ)器緩沖區(qū)112的實(shí)施方案中,在共享存儲(chǔ)器緩沖區(qū)之間以交替的方式寫入視頻。
共享存儲(chǔ)器緩沖區(qū)112是存儲(chǔ)器中分配來(lái)供視頻服務(wù)器處理116及其他應(yīng)用使用的區(qū)域。共享存儲(chǔ)器緩沖區(qū)112具有的大小至少足夠容納一個(gè)視頻幀。在包括一個(gè)以上共享存儲(chǔ)器緩沖區(qū)112的實(shí)施方案中,每個(gè)共享存儲(chǔ)器緩沖區(qū)112具有的大小都至少足以容納一個(gè)視頻幀。由視頻服務(wù)器處理116寫入共享存儲(chǔ)器緩沖區(qū)112的視頻幀可以被其他應(yīng)用(例如虛擬視頻捕獲設(shè)備驅(qū)動(dòng)器110)讀取。在一些實(shí)施方案中,諸如應(yīng)用106和應(yīng)用108一類的應(yīng)用可以直接從共享存儲(chǔ)器緩沖區(qū)112取得視頻。
在一些實(shí)施方案中,虛擬視頻捕獲設(shè)備驅(qū)動(dòng)器110在計(jì)算設(shè)備101上就像是可由運(yùn)行在計(jì)算設(shè)備101上的應(yīng)用獲得的實(shí)際視頻捕獲設(shè)備驅(qū)動(dòng)器一樣。虛擬視頻捕獲設(shè)備驅(qū)動(dòng)器110從共享存儲(chǔ)器緩沖區(qū)112讀取視頻,并將該視頻提供給一個(gè)或多個(gè)應(yīng)用。系統(tǒng)100的一些實(shí)施方案包括一個(gè)以上的虛擬視頻捕獲設(shè)備驅(qū)動(dòng)器110。在一些實(shí)施方案中,虛擬視頻捕獲設(shè)備驅(qū)動(dòng)器110是互斥的,只允許單個(gè)應(yīng)用獲得虛擬視頻捕獲設(shè)備驅(qū)動(dòng)器110。在一些這樣的實(shí)施方案中,存在多個(gè)互斥的虛擬視頻捕獲設(shè)備驅(qū)動(dòng)器,以允許一個(gè)以上的應(yīng)用同時(shí)接收視頻。在其他實(shí)施方案中,如圖1所示,虛擬視頻捕獲設(shè)備驅(qū)動(dòng)器110是一個(gè)多實(shí)例(multi-instance)的虛擬驅(qū)動(dòng)器,其允許一個(gè)以上的應(yīng)用同時(shí)獲得該多實(shí)例虛擬驅(qū)動(dòng)器并接收視頻。
在一些實(shí)施方案中,虛擬視頻捕獲設(shè)備驅(qū)動(dòng)器110根據(jù)一個(gè)或多個(gè)設(shè)置對(duì)視頻進(jìn)行變換。在一些實(shí)施方案中,視頻服務(wù)器處理116從視頻捕獲設(shè)備驅(qū)動(dòng)器114接收由視頻捕獲設(shè)備118以高質(zhì)量,甚至以視頻捕獲設(shè)備118所能實(shí)現(xiàn)的最高質(zhì)量而捕獲的視頻。然后,視頻服務(wù)器處理116將這個(gè)高質(zhì)量的視頻寫入共享存儲(chǔ)器緩沖區(qū)112。在一些實(shí)施方案中,視頻服務(wù)器處理在將視頻寫入共享存儲(chǔ)器之前,對(duì)該視頻執(zhí)行一種或多種變換,以改變一種或多種視頻屬性。然后,虛擬視頻捕獲設(shè)備驅(qū)動(dòng)器110從共享存儲(chǔ)器緩沖區(qū)112中讀取所述視頻,并且在將視頻提供給發(fā)出請(qǐng)求的應(yīng)用之前,根據(jù)一個(gè)或多個(gè)設(shè)置對(duì)該視頻執(zhí)行必要的變換。在一些實(shí)施方案中,所述設(shè)置包括對(duì)分辨率、幀大小、幀率、清晰度、亮度中的一種或多種屬性的設(shè)置,或者實(shí)際上與視頻屬性相關(guān)的任何其他設(shè)置。在不同的實(shí)施方案中,這些設(shè)置由應(yīng)用來(lái)提供,或者通過(guò)所述設(shè)置的用戶操縱來(lái)提供。
應(yīng)用106和應(yīng)用108是要反映允許視頻的(video-enabled)應(yīng)用。在計(jì)算設(shè)備上可以運(yùn)行有任意數(shù)量的這種允許視頻的應(yīng)用。這種允許視頻的應(yīng)用的例子包括視頻記錄應(yīng)用、視頻會(huì)議應(yīng)用、短消息器應(yīng)用、視頻監(jiān)督應(yīng)用、以及實(shí)際上能夠接收或請(qǐng)求源起于視頻捕獲設(shè)備118的視頻的任何其他類型的應(yīng)用。
圖2是本發(fā)明主題的示例性實(shí)施方案的流程圖。圖2提供了所捕獲的視頻從視頻捕獲設(shè)備202流動(dòng)到一個(gè)或多個(gè)客戶應(yīng)用210的高層視圖,所述客戶應(yīng)用210將所捕獲的視頻提供給一個(gè)或多個(gè)用戶應(yīng)用(未示出)。視頻捕獲設(shè)備202可以與圖1中的視頻捕獲設(shè)備118相同或不同。
圖2的示例性圖示包括視頻捕獲設(shè)備202提供視頻給銷售商提供的驅(qū)動(dòng)器204。銷售商提供的驅(qū)動(dòng)器204是已由服務(wù)器206獲得的互斥型驅(qū)動(dòng)器。服務(wù)器206用來(lái)從銷售商提供的驅(qū)動(dòng)器204接收視頻,并將該視頻放入存儲(chǔ)器208。存儲(chǔ)器208是應(yīng)用可訪問(wèn)的存儲(chǔ)器。一些這樣的應(yīng)用包括客戶(client),例如客戶210A和210B??蛻?10A和210B的功能是從存儲(chǔ)器208讀取視頻,并將該視頻提供給一個(gè)或多個(gè)用戶應(yīng)用。用戶應(yīng)用通常是可與視頻捕獲設(shè)備202的所捕獲視頻相兼容的任何應(yīng)用。
圖3是本發(fā)明主題的方法300的示例性實(shí)施方案的框圖。方法300包括獲取對(duì)視頻捕獲設(shè)備驅(qū)動(dòng)器的獨(dú)占控制,并且分配共享存儲(chǔ)器緩沖區(qū)304。方法300還包括從視頻捕獲設(shè)備驅(qū)動(dòng)器接收視頻幀306,并且將該視頻幀寫入共享存儲(chǔ)器緩沖區(qū)308。在一些實(shí)施方案中,方法300還包括從視頻捕獲設(shè)備驅(qū)動(dòng)器接收另一個(gè)視頻幀306,并再次將該視頻幀寫入共享存儲(chǔ)器緩沖區(qū)308。方法300然后在該方法的這些部分(即,306和308)上反復(fù)迭代,同時(shí)在接收視頻幀。
方法300的共享存儲(chǔ)器緩沖區(qū)可由一個(gè)或多個(gè)應(yīng)用訪問(wèn),例如虛擬視頻捕獲設(shè)備驅(qū)動(dòng)器。虛擬視頻捕獲設(shè)備驅(qū)動(dòng)器向允許視頻的應(yīng)用提供視頻,在這些應(yīng)用看來(lái)就像實(shí)際的設(shè)備驅(qū)動(dòng)器一樣。
在一些實(shí)施方案中,分配共享存儲(chǔ)器緩沖區(qū)的操作包括在系統(tǒng)存儲(chǔ)器(例如隨機(jī)訪問(wèn)存儲(chǔ)器(RAM))中分配一個(gè)空間。所分配的存儲(chǔ)器量根據(jù)所捕獲視頻的屬性而變。通常,較高分辨率的視頻將需要分配更大的共享存儲(chǔ)器緩沖區(qū)。另外,在捕獲和傳輸視頻時(shí)所使用的格式可能會(huì)影響所需要的存儲(chǔ)器大小。此外,如果視頻被復(fù)用而包括相關(guān)的音頻,那么所需的存儲(chǔ)器空間可能會(huì)受到影響。
圖4是本發(fā)明主題的方法400的示例性實(shí)施方案的框圖。方法400包括獲取互斥型視頻捕獲設(shè)備驅(qū)動(dòng)器402,分配兩個(gè)共享存儲(chǔ)器緩沖區(qū)404,并且創(chuàng)建一個(gè)或多個(gè)虛擬設(shè)備驅(qū)動(dòng)器,其中所述一個(gè)或多個(gè)虛擬設(shè)備驅(qū)動(dòng)器對(duì)于可運(yùn)行在執(zhí)行所述方法的系統(tǒng)上的應(yīng)用而言,看起來(lái)就像視頻捕獲設(shè)備驅(qū)動(dòng)器一樣406。方法400的一些實(shí)施方案還包括從視頻捕獲設(shè)備驅(qū)動(dòng)器接收視頻幀流,并將在兩個(gè)共享存儲(chǔ)器緩沖區(qū)之間以交替的方式寫入視頻幀。方法400所創(chuàng)建的虛擬設(shè)備驅(qū)動(dòng)器可運(yùn)行來(lái)通過(guò)從兩個(gè)共享存儲(chǔ)器緩沖區(qū)中以交替的方式讀取視頻幀,而向運(yùn)行在系統(tǒng)上的應(yīng)用提供視頻。
在方法400的一些實(shí)施方案中,創(chuàng)建一個(gè)或多個(gè)虛擬設(shè)備驅(qū)動(dòng)器的步驟406包括創(chuàng)建固定數(shù)量的互斥虛擬設(shè)備驅(qū)動(dòng)器。在一些實(shí)施方案中,所述的固定數(shù)量是2,而在其他實(shí)施方案中,固定數(shù)量是10。然而,方法400可以創(chuàng)建任意數(shù)量的互斥設(shè)備驅(qū)動(dòng)器。在一些實(shí)施方案中,互斥設(shè)備驅(qū)動(dòng)器的數(shù)量是同時(shí)可以從方法400接收視頻的允許視頻應(yīng)用的最大數(shù)量。在一些其他實(shí)施方案中,如果使用了所有的互斥設(shè)備驅(qū)動(dòng)器,那么實(shí)現(xiàn)方法400的系統(tǒng)動(dòng)態(tài)地創(chuàng)建一個(gè)或多個(gè)額外的互斥設(shè)備驅(qū)動(dòng)器。
在一些實(shí)施方案中,互斥型設(shè)備驅(qū)動(dòng)器是銷售商提供的設(shè)備驅(qū)動(dòng)器的拷貝,其進(jìn)行了某種改動(dòng),以使所述互斥型設(shè)備驅(qū)動(dòng)器從共享存儲(chǔ)器緩沖區(qū)讀取視頻數(shù)據(jù),而不是從視頻捕獲設(shè)備讀取。在其他實(shí)施方案中,互斥型設(shè)備驅(qū)動(dòng)器包括被編寫為對(duì)于可耦合到實(shí)現(xiàn)方法400的系統(tǒng)的視頻捕獲設(shè)備來(lái)說(shuō)就像設(shè)備驅(qū)動(dòng)器一樣的軟件。
圖5是本發(fā)明主題的方法500的示例性實(shí)施方案的框圖。方法500是在一個(gè)具有包括DirectShow在內(nèi)的MicrosoftWindows操作系統(tǒng)的系統(tǒng)上的方法500的示例性實(shí)施方案。
Microsoft的Windows體系結(jié)構(gòu)是建立在過(guò)濾器之上的。總地說(shuō),過(guò)濾器對(duì)一個(gè)數(shù)據(jù)流(例如視頻幀流)執(zhí)行一種操作。一些過(guò)濾器操作包括讀取文件或流,將數(shù)據(jù)傳遞到視頻卡或其他外圍設(shè)備,并將數(shù)據(jù)轉(zhuǎn)換成特定的幀大小或特定的格式,例如MPEG-1(運(yùn)動(dòng)圖像專家組;國(guó)際標(biāo)準(zhǔn)組織/國(guó)際電學(xué)技術(shù)委員會(huì)標(biāo)準(zhǔn)11172)或RGB(紅-綠-藍(lán))。
通常有三種過(guò)濾器類別獲得視頻數(shù)據(jù)的源過(guò)濾器,以某種方式轉(zhuǎn)換視頻數(shù)據(jù)的轉(zhuǎn)換過(guò)濾器,以及輸出視頻數(shù)據(jù)的遞交(render)過(guò)濾器。多個(gè)過(guò)濾器可以以某種方式鏈接在一起,這樣一個(gè)過(guò)濾器的輸出就是下一個(gè)過(guò)濾器的輸入。由相互鏈接的過(guò)濾器組成的組被稱為過(guò)濾器圖。通常,過(guò)濾器圖至少包括一個(gè)源過(guò)濾器和一個(gè)遞交過(guò)濾器。
方法500包括獲取對(duì)視頻捕獲設(shè)備驅(qū)動(dòng)器的獨(dú)占控制502,并且分配共享存儲(chǔ)器緩沖區(qū)504。該方法還包括將來(lái)自視頻捕獲設(shè)備驅(qū)動(dòng)器的視頻流接收到過(guò)濾器圖中506,獲得進(jìn)入源過(guò)濾器的視頻流,其中源過(guò)濾器看起來(lái)就像視頻捕獲設(shè)備驅(qū)動(dòng)器508,并且由應(yīng)用獲取源過(guò)濾器,其中源過(guò)濾器被應(yīng)用的過(guò)濾器圖用來(lái)從共享存儲(chǔ)器緩沖區(qū)獲得視頻流510。
將來(lái)自視頻捕獲設(shè)備驅(qū)動(dòng)器的視頻流接收到過(guò)濾器圖中的步驟506包括獲得所述視頻流并將該視頻流提供給遞交過(guò)濾器的源過(guò)濾器。然后,遞交過(guò)濾器一幀接一幀地將視頻流遞交給共享存儲(chǔ)器緩沖區(qū)。
獲得進(jìn)入源過(guò)濾器的視頻流,其中源過(guò)濾器對(duì)應(yīng)用來(lái)講看起來(lái)就像視頻捕獲設(shè)備驅(qū)動(dòng)器的步驟508包括可以作為用于獲得視頻流的設(shè)備驅(qū)動(dòng)器而被獲取的源過(guò)濾器。源過(guò)濾器一旦被應(yīng)用獲取,然后就被用作供該應(yīng)用的過(guò)濾器圖從共享存儲(chǔ)器緩沖區(qū)獲得視頻流的源過(guò)濾器。
圖6是本發(fā)明主題的示例性實(shí)施方案的流程圖。圖6提供了類似于圖2的高層視圖,但是它在圖5所提供的方法500的示例性實(shí)施方案之上進(jìn)行了擴(kuò)展。這個(gè)高層視圖包括從視頻捕獲設(shè)備602流動(dòng)到一個(gè)或多個(gè)客戶源過(guò)濾器的所捕獲的視頻,所述客戶源過(guò)濾器例如是610A和610B,它們向一個(gè)或多個(gè)用戶應(yīng)用(未示出)提供所捕獲的視頻。視頻捕獲設(shè)備602可以與圖1中的視頻捕獲設(shè)備相同或不同。
圖6的示例性圖示包括向銷售商提供的驅(qū)動(dòng)器604提供視頻的視頻捕獲設(shè)備602。銷售商提供的驅(qū)動(dòng)器604是已由服務(wù)器過(guò)濾器圖606獲取的互斥型驅(qū)動(dòng)器。服務(wù)器過(guò)濾器圖606包括用來(lái)從銷售商提供的驅(qū)動(dòng)器604獲得視頻的源過(guò)濾器。服務(wù)器過(guò)濾器圖606還包括將視頻寫入共享存儲(chǔ)器緩沖區(qū)608的遞交過(guò)濾器。共享存儲(chǔ)器緩沖區(qū)608是至少可以被客戶源過(guò)濾器610A和610B訪問(wèn)的存儲(chǔ)器??蛻粼催^(guò)濾器610A和610B的功能是通過(guò)從共享存儲(chǔ)器緩沖區(qū)608讀取視頻,并將該視頻提供給一個(gè)或多個(gè)用戶應(yīng)用的過(guò)濾器圖,從而對(duì)于一個(gè)或多個(gè)用戶應(yīng)用(未示出)而言起到過(guò)濾器圖中的源過(guò)濾器的作用。
需要強(qiáng)調(diào)的是,說(shuō)明書摘要是依照37C.F.R.§1.72(b)來(lái)提供的,該法條要求摘要能使讀者快速地把握技術(shù)公開(kāi)內(nèi)容的本質(zhì)和要旨。提交說(shuō)明書摘要不是用來(lái)解釋或限制權(quán)利要求書的范圍或含義。
在以上具體實(shí)施方式
部分中,將各種特征一起分組到單個(gè)實(shí)施方案中,以使本公開(kāi)流暢。這一公開(kāi)方法不想被解釋為反映了以下意圖,即本發(fā)明所要求保護(hù)的實(shí)施方案比在每個(gè)權(quán)利要求中所明確記載的特征需要更多的特征。相反,正如權(quán)利要求書所反映的,發(fā)明性的主題所具有的特征少于單個(gè)公開(kāi)實(shí)施方案中的所有特征。因此,將權(quán)利要求書包含到具體實(shí)施方式
這部分中,每個(gè)權(quán)利要求單獨(dú)成為一個(gè)獨(dú)立的實(shí)施方案。
本領(lǐng)域的技術(shù)人員很容易理解,在已經(jīng)描述并圖示來(lái)解釋本發(fā)明主題的本質(zhì)的細(xì)節(jié)、材料以及部件和方法階段的設(shè)置方面,可以作出多種不同的其他改變,而不會(huì)偏離在附加的權(quán)利要求書中所表明的本發(fā)明主題的原理和范圍。
權(quán)利要求
1.一種方法,包括獲取對(duì)視頻捕獲設(shè)備驅(qū)動(dòng)器的獨(dú)占控制;分配共享存儲(chǔ)器緩沖區(qū);從所述視頻捕獲設(shè)備驅(qū)動(dòng)器接收視頻幀;以及將所述視頻幀寫入所述共享存儲(chǔ)器緩沖區(qū)。
2.如權(quán)利要求1所述的方法,其中所述共享存儲(chǔ)器緩沖區(qū)可由一個(gè)或多個(gè)應(yīng)用來(lái)訪問(wèn)。
3.如權(quán)利要求2所述的方法,其中所述一個(gè)或多個(gè)應(yīng)用是允許視頻的應(yīng)用。
4.如權(quán)利要求1所述的方法,其中隨后接收的視頻幀被寫入所述共享存儲(chǔ)器緩沖區(qū),覆寫所述共享存儲(chǔ)器緩沖區(qū)中在前的視頻幀。
5.一種方法,包括將視頻幀寫入共享存儲(chǔ)器緩沖區(qū),其中所述共享存儲(chǔ)器緩沖區(qū)可由一個(gè)或多個(gè)應(yīng)用訪問(wèn)。
6.如權(quán)利要求5所述的方法,其中所述一個(gè)或多個(gè)應(yīng)用包括允許視頻的應(yīng)用。
7.如權(quán)利要求6所述的方法,還包括接收視頻幀,其中所述共享存儲(chǔ)器緩沖區(qū)包括兩個(gè)共享存儲(chǔ)器緩沖區(qū),并且其中接收所述視頻幀的步驟包括接收一個(gè)視頻幀流,所述方法還包括交替地在所述兩個(gè)存儲(chǔ)器緩沖區(qū)之間寫入所述視頻幀流。
8.如權(quán)利要求5所述的方法,其中所述共享存儲(chǔ)器緩沖區(qū)具有的大小至少等于容納一個(gè)接收的視頻幀所需的大小。
9.如權(quán)利要求5所述的方法,還包括由所述一個(gè)或多個(gè)應(yīng)用從所述共享存儲(chǔ)器緩沖區(qū)讀取所述視頻幀。
10.一種系統(tǒng),包括存儲(chǔ)器;視頻捕獲設(shè)備;從所述視頻捕獲設(shè)備接收所捕獲的視頻幀的視頻捕獲設(shè)備驅(qū)動(dòng)器,其中所述視頻捕獲設(shè)備驅(qū)動(dòng)器是互斥的;以及可運(yùn)行在所述系統(tǒng)上的軟件,該軟件在所述存儲(chǔ)器中分配共享存儲(chǔ)器緩沖區(qū);從所述視頻捕獲設(shè)備驅(qū)動(dòng)器接收視頻幀;以及將所接收的視頻幀寫入所述共享存儲(chǔ)器緩沖區(qū)。
11.如權(quán)利要求10所述的系統(tǒng),其中被寫入所述共享存儲(chǔ)器緩沖區(qū)的所接收視頻幀可由運(yùn)行在所述系統(tǒng)上的一個(gè)或多個(gè)應(yīng)用來(lái)訪問(wèn)。
12.如權(quán)利要求11所述的系統(tǒng),其中所述軟件是多實(shí)例的虛擬驅(qū)動(dòng)器。
13.如權(quán)利要求12所述的系統(tǒng),其中所述多實(shí)例的虛擬驅(qū)動(dòng)器對(duì)于運(yùn)行在所述系統(tǒng)上的所述一個(gè)或多個(gè)應(yīng)用而言,看起來(lái)就像視頻捕獲設(shè)備驅(qū)動(dòng)器一樣。
14.如權(quán)利要求10所述的系統(tǒng),其中所述軟件在執(zhí)行時(shí)具有對(duì)所述視頻捕獲設(shè)備驅(qū)動(dòng)器的獨(dú)占控制。
15.一種包括機(jī)器可訪問(wèn)介質(zhì)的制品,所述機(jī)器可訪問(wèn)介質(zhì)具有相關(guān)指令,其中所述指令在被訪問(wèn)時(shí)導(dǎo)致機(jī)器執(zhí)行將來(lái)自視頻捕獲設(shè)備的視頻數(shù)據(jù)通過(guò)共享存儲(chǔ)器緩沖區(qū)提供給可運(yùn)行在所述機(jī)器上的兩個(gè)或兩個(gè)以上的應(yīng)用。
16.如權(quán)利要求15所述的制品,其中所述指令在被訪問(wèn)時(shí)還導(dǎo)致所述機(jī)器執(zhí)行提供一個(gè)或多個(gè)虛擬視頻捕獲設(shè)備驅(qū)動(dòng)器,以將所述視頻數(shù)據(jù)提供給所述兩個(gè)或兩個(gè)以上的應(yīng)用,所述虛擬視頻捕獲設(shè)備驅(qū)動(dòng)器從所述共享存儲(chǔ)器緩沖區(qū)獲得所述視頻數(shù)據(jù)。
17.如權(quán)利要求15所述的制品,其中所述機(jī)器包括可操作地耦合到所述視頻捕獲設(shè)備的視頻捕獲設(shè)備驅(qū)動(dòng)器,并且其中所述指令在被訪問(wèn)時(shí)導(dǎo)致所述機(jī)器執(zhí)行將來(lái)自所述視頻捕獲設(shè)備的視頻數(shù)據(jù)接收到所述視頻捕獲設(shè)備驅(qū)動(dòng)器中;以及將所述視頻數(shù)據(jù)從所述視頻捕獲設(shè)備驅(qū)動(dòng)器寫入所述共享存儲(chǔ)器緩沖區(qū)。
18.一種方法,包括獲取互斥型視頻捕獲設(shè)備驅(qū)動(dòng)器;分配兩個(gè)共享存儲(chǔ)器緩沖區(qū);以及創(chuàng)建一個(gè)或多個(gè)虛擬設(shè)備驅(qū)動(dòng)器,其中所述一個(gè)或多個(gè)虛擬設(shè)備驅(qū)動(dòng)器對(duì)于可運(yùn)行在執(zhí)行所述方法的系統(tǒng)上的應(yīng)用而言,看起來(lái)就像視頻捕獲設(shè)備驅(qū)動(dòng)器一樣。
19.如權(quán)利要求18所述的方法,還包括從所述視頻捕獲設(shè)備驅(qū)動(dòng)器接收視頻幀流;以及在所述兩個(gè)共享存儲(chǔ)器緩沖區(qū)之間以交替的方式寫入所述視頻幀。
20.如權(quán)利要求19所述的方法,其中所述虛擬設(shè)備驅(qū)動(dòng)器可運(yùn)行來(lái)通過(guò)以交替的方式從所述兩個(gè)共享存儲(chǔ)器緩沖區(qū)讀取所述視頻幀,向可運(yùn)行在所述系統(tǒng)上的應(yīng)用提供視頻。
21.如權(quán)利要求19所述的方法,其中創(chuàng)建一個(gè)或多個(gè)虛擬設(shè)備驅(qū)動(dòng)器的步驟包括創(chuàng)建固定數(shù)量的互斥虛擬設(shè)備驅(qū)動(dòng)器。
22.一種方法,包括獲取對(duì)視頻捕獲設(shè)備驅(qū)動(dòng)器的獨(dú)占控制;分配共享存儲(chǔ)器緩沖區(qū);將來(lái)自所述視頻捕獲設(shè)備驅(qū)動(dòng)器的視頻流接收到過(guò)濾器圖中,所述過(guò)濾器圖包括從所述視頻捕獲設(shè)備驅(qū)動(dòng)器接收視頻流的源過(guò)濾器;以及一次一幀地將所述視頻流寫入共享存儲(chǔ)器緩沖區(qū)的遞交過(guò)濾器。
23.如權(quán)利要求22所述的方法,其中分配所述共享存儲(chǔ)器緩沖區(qū)包括分配一個(gè)以上的共享存儲(chǔ)器緩沖區(qū),它們被所述過(guò)濾器圖的遞交過(guò)濾器一次一幀地并在所述存儲(chǔ)器緩沖區(qū)之間交替地寫入。
24.如權(quán)利要求22所述的方法,還包括獲得進(jìn)入源過(guò)濾器的視頻流,其中所述源過(guò)濾器在應(yīng)用看來(lái)就像視頻捕獲設(shè)備驅(qū)動(dòng)器;以及由應(yīng)用獲取所述源過(guò)濾器,其中所述源過(guò)濾器被所述應(yīng)用的過(guò)濾器圖用來(lái)從所述共享存儲(chǔ)器緩沖區(qū)獲得視頻。
25.如權(quán)利要求22所述的方法,其中所述視頻流是包括音頻流在內(nèi)的復(fù)用流。
26.一種方法,包括向系統(tǒng)提供一個(gè)或多個(gè)虛擬視頻捕獲設(shè)備驅(qū)動(dòng)器,其中所述虛擬視頻捕獲設(shè)備驅(qū)動(dòng)器從共享存儲(chǔ)器緩沖區(qū)獲得視頻數(shù)據(jù);以及用接收自互斥型視頻捕獲設(shè)備驅(qū)動(dòng)器的視頻數(shù)據(jù)填充所述共享存儲(chǔ)器緩沖區(qū)。
27.如權(quán)利要求26所述的方法,其中所述一個(gè)或多個(gè)虛擬視頻捕獲設(shè)備驅(qū)動(dòng)器是互斥的。
28.如權(quán)利要求26所述的方法,其中所述虛擬視頻捕獲設(shè)備驅(qū)動(dòng)器至少包括過(guò)濾器圖中的源過(guò)濾器。
全文摘要
系統(tǒng)、方法和軟件在一個(gè)以上的應(yīng)用之間共享視頻捕獲設(shè)備(例如攝像機(jī))的輸出。一些實(shí)施方案包括將視頻幀寫入可由一個(gè)或多個(gè)應(yīng)用訪問(wèn)的共享存儲(chǔ)器緩沖區(qū)。一些應(yīng)用是虛擬設(shè)備驅(qū)動(dòng)器,它們看起來(lái)就像產(chǎn)生視頻數(shù)據(jù)的視頻捕獲設(shè)備的實(shí)際設(shè)備驅(qū)動(dòng)器一樣。一些實(shí)施方案包括獲取對(duì)視頻捕獲設(shè)備驅(qū)動(dòng)器的獨(dú)占控制,分配共享存儲(chǔ)器緩沖區(qū),從所述視頻捕獲設(shè)備驅(qū)動(dòng)器接收視頻幀,并且將所述視頻幀寫入所述共享存儲(chǔ)器緩沖區(qū)。在一些實(shí)施方案中,共享存儲(chǔ)器緩沖區(qū)包括以交替方式寫入并讀出的兩個(gè)共享存儲(chǔ)器緩沖區(qū)。
文檔編號(hào)G06F13/10GK1744048SQ200510093798
公開(kāi)日2006年3月8日 申請(qǐng)日期2005年8月31日 優(yōu)先權(quán)日2004年9月2日
發(fā)明者斯蒂芬·英格, 曼諾賈·阿格尼霍特里 申請(qǐng)人:英特爾公司