用于視頻分析和編碼的智能msi-x中斷的制作方法
【專(zhuān)利摘要】視頻分析可以通過(guò)選擇性地僅編碼幀的部分并且替代地使用先前編碼的部分來(lái)輔助視頻編碼。當(dāng)后續(xù)幀具有小于閾值的運(yùn)動(dòng)等級(jí)時(shí),可以使用先前編碼的部分。在這樣的情況下,在一些實(shí)施例中,后續(xù)幀的全部或者部分可以不被編碼,增加了帶寬和速度。
【專(zhuān)利說(shuō)明】用于視頻分析和編碼的智能MS I-X中斷
【背景技術(shù)】
[0001] 本發(fā)明通常涉及計(jì)算機(jī),并且尤其涉及視頻處理。
[0002] 存在其中視頻必須被處理和/或存儲(chǔ)的許多應(yīng)用。一個(gè)示例是視頻監(jiān)控,其中一 個(gè)或多個(gè)視頻饋送可以被接收、分析和處理用于安全或其它目的。另一傳統(tǒng)的應(yīng)用是視頻 會(huì)議。
[0003] 典型地,諸如中央處理單元的通用處理器用于進(jìn)行視頻處理。在一些情況下,被稱(chēng) 為圖形處理器的專(zhuān)門(mén)處理器可以輔助中央處理單元。
[0004] 視頻分析涉及獲得關(guān)于視頻信息的內(nèi)容的信息。例如,視頻處理可以包括內(nèi)容分 析,其中內(nèi)容視頻被分析,以便檢測(cè)某些事件或者出現(xiàn),或者以便發(fā)現(xiàn)感興趣的信息。
[0005] 消息信號(hào)中斷或MSI是一種用于生成中斷的技術(shù)。典型地,每一個(gè)設(shè)備具有當(dāng)該 設(shè)備想要中斷主機(jī)中央處理單元時(shí)被生效的中斷引腳。在外圍部件互連高速規(guī)范中,不存 在單獨(dú)的中斷引腳。替代地,特殊消息允許引腳生效或者失效的仿真。消息信號(hào)中斷允許設(shè) 備將少量的數(shù)據(jù)寫(xiě)入存儲(chǔ)器空間中的專(zhuān)門(mén)地址。芯片集接著將中斷傳遞到中央處理單元。
[0006] MSI-X允許設(shè)備分配多達(dá)兩千零四十八個(gè)中斷。MSI-X在外圍部件互連高速基本 規(guī)范修訂版1. 〇a和1. 1第6. 1節(jié)中進(jìn)行了指定。MSI-X允許大量的中斷,向每一個(gè)中斷給 予單獨(dú)的目標(biāo)地址和識(shí)別數(shù)據(jù)字。它采用64位尋址和中斷屏蔽。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0007] 圖1是根據(jù)本發(fā)明一個(gè)實(shí)施例的系統(tǒng)架構(gòu)。
[0008] 圖2是根據(jù)一個(gè)實(shí)施例的圖1中示出的視頻分析引擎的電路描繪;
[0009] 圖3是根據(jù)本發(fā)明一個(gè)實(shí)施例用于視頻捕獲的流程圖;
[0010] 圖4是根據(jù)一個(gè)實(shí)施例用于二維矩陣存儲(chǔ)器的流程圖;
[0011] 圖5是根據(jù)一個(gè)實(shí)施例用于分析輔助編碼的流程圖;
[0012] 圖6是另一實(shí)施例的流程圖;
[0013] 圖7是一個(gè)實(shí)施例的中斷控制的描繪;
[0014] 圖8是一個(gè)實(shí)施例的中斷時(shí)序圖;以及
[0015] 圖9是一個(gè)實(shí)施例的流程圖。
【具體實(shí)施方式】
[0016] 根據(jù)一些實(shí)施例,可以并行處理多個(gè)視頻流??梢栽趯?shí)現(xiàn)視頻分析的同時(shí)對(duì)視頻 流進(jìn)行編碼。而且,可以對(duì)多個(gè)流中的每一個(gè)流進(jìn)行編碼,與此同時(shí),對(duì)多個(gè)流中的每一 個(gè)流進(jìn)行視頻分析。在一些實(shí)施例中,編碼或者分析的特性可以由用戶(hù)在過(guò)程中(on the fly)改變,盡管編碼和分析已經(jīng)正在被實(shí)現(xiàn)。
[0017] 盡管給出了其中使用視頻分析的實(shí)施例的示例,但是在一些實(shí)施例中,視頻分析 僅僅是可選的,可以使用或者不使用視頻分析。
[0018] 參照?qǐng)D1,計(jì)算機(jī)系統(tǒng)10可以是各種計(jì)算機(jī)系統(tǒng)中的任意計(jì)算機(jī)系統(tǒng),包括使用 視頻分析的那些計(jì)算機(jī)系統(tǒng),例如視頻監(jiān)控和視頻會(huì)議應(yīng)用,以及不使用視頻分析的實(shí)施 例。系統(tǒng)10可以是桌上型計(jì)算機(jī)、服務(wù)器、膝上型計(jì)算機(jī)、移動(dòng)互聯(lián)網(wǎng)設(shè)備或者蜂窩電話, 僅提出幾個(gè)示例。
[0019] 系統(tǒng)10可以具有耦合到系統(tǒng)總線14的一個(gè)或者多個(gè)主機(jī)中央處理單元12。系統(tǒng) 存儲(chǔ)器22可以耦合到系統(tǒng)總線14。盡管提供了主機(jī)系統(tǒng)架構(gòu)的示例,但是本發(fā)明絕不局限 于任意特定的系統(tǒng)架構(gòu)。
[0020] 系統(tǒng)總線14可以耦合到總線接口 16、該總線接口 16依次耦合到傳統(tǒng)總線18。在 一個(gè)實(shí)施例中,可以使用外圍部件互連高速(PCIe)總線,但是本發(fā)明絕不局限于任意特定 的總線。
[0021] 視頻分析引擎20可以經(jīng)由總線18耦合到主機(jī)。在一個(gè)實(shí)施例中,視頻分析引擎 可以是單個(gè)集成電路,其提供編碼和視頻分析二者。在一個(gè)實(shí)施例中,集成電路可以使用嵌 入式動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(EDRAM)技術(shù)。然而,在一些實(shí)施例中,可以省去編碼或者視頻分 析。此外,在一些實(shí)施例中,引擎20可以包括存儲(chǔ)器控制器,該存儲(chǔ)器控制器控制板上集成 的二維矩陣存儲(chǔ)器,并且提供與外部存儲(chǔ)器的通信。
[0022] 因而,在圖1中說(shuō)明的實(shí)施例中,視頻分析引擎20與本地動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器 (DRAM) 19進(jìn)行通信。具體地說(shuō),視頻分析引擎20可以包括用于訪問(wèn)存儲(chǔ)器19的存儲(chǔ)器控 制器。替代地,引擎20可以使用系統(tǒng)存儲(chǔ)器22并且可以包括到系統(tǒng)存儲(chǔ)器的直接連接。
[0023] 還耦合到視頻分析引擎20的是一個(gè)或多個(gè)攝像機(jī)24。在一些實(shí)施例中,多達(dá)四個(gè) 同時(shí)發(fā)生的視頻輸入可以按照標(biāo)清格式被接收。在一些實(shí)施例中,一個(gè)高清輸入可以在三 個(gè)輸入上被提供,并且一個(gè)標(biāo)清可以在第四個(gè)輸入上被提供。在其它實(shí)施例中,可以提供更 多或更少的高清輸入,并且可以提供更多或更少的標(biāo)清輸入。作為一個(gè)示例,三個(gè)輸入中的 每一個(gè)可以接收10位的高清輸入數(shù)據(jù),例如R、G和B輸入或者Y、U和V輸入,每一個(gè)位于 單獨(dú)的10位輸入線上。
[0024] 在具有位于頁(yè)面頂部處的四個(gè)攝像機(jī)通道輸入的實(shí)施例中描繪了圖2中示出的 視頻分析引擎20的一個(gè)實(shí)施例。該四個(gè)輸入可以由視頻捕獲接口 26接收。視頻捕獲接口 26可以按照攝像機(jī)輸入或者其它視頻信息的形式接收多個(gè)同時(shí)發(fā)生的視頻輸入,該其它視 頻信息包括電視機(jī)、數(shù)字視頻記錄儀或者媒體播放器輸入,僅提出幾個(gè)示例。
[0025] 視頻捕獲接口自動(dòng)地捕獲和拷貝每一個(gè)輸入幀。輸入幀的一個(gè)拷貝可以被提供到 VAFF單元66,并且另一個(gè)拷貝可以被提供到VEFF單元68。VEFF單元68負(fù)責(zé)將視頻存儲(chǔ) 在諸如圖1中示出的存儲(chǔ)器22的外部存儲(chǔ)器上。在一個(gè)實(shí)施例中,外部存儲(chǔ)器可以耦合到 片上系統(tǒng)存儲(chǔ)器控制器/仲裁器50。在一些實(shí)施例中,外部存儲(chǔ)器上的存儲(chǔ)可以用于視頻 編碼目的。具體地說(shuō),如果一個(gè)拷貝被存儲(chǔ)在外部存儲(chǔ)器上,則它能夠由視頻編碼器32訪 問(wèn),用于按照期望的格式對(duì)信息進(jìn)行編碼。在一些實(shí)施例中,有多種格式可用,并且所述系 統(tǒng)可以選擇最期望的特定編碼格式。
[0026] 如上所述,在一些情況下,視頻分析可以用于改善由視頻編碼器32實(shí)現(xiàn)的編碼處 理的效率。一旦幀被編碼,它們就可以經(jīng)由PCI快速總線36被提供到主機(jī)系統(tǒng)。
[0027] 同時(shí),輸入視頻幀的另一拷貝被存儲(chǔ)在二維矩陣或主存儲(chǔ)器28上。VAFF可以同時(shí) 處理和傳遞所有四個(gè)輸入視頻通道。VAFF可以包括四個(gè)復(fù)制的單元以便處理和傳遞視頻。 用于存儲(chǔ)器28的視頻傳遞可以使用多路復(fù)用。在一些實(shí)施例中,由于視頻回掃時(shí)間中固有 的延遲,多通道的傳輸可以實(shí)時(shí)進(jìn)行。
[0028] 主存儲(chǔ)器上的存儲(chǔ)可以選擇性地被非線性或者線性地實(shí)現(xiàn)。在傳統(tǒng)的線性尋址 中,交叉尋址線上的一個(gè)或多個(gè)地址被指定來(lái)訪問(wèn)存儲(chǔ)器位置。在一些情況下,諸如字線或 者位線的尋址線可以被指定,并且沿著該字線或者位線的程度可以被指示,以便被尋址的 存儲(chǔ)器線的一部分可以按照自動(dòng)方式被連續(xù)地存儲(chǔ)。
[0029] 相比而言,在二維或者非線性尋址中,行線和列線二者可以在一個(gè)操作中被訪問(wèn)。 該操作可以指定存儲(chǔ)器矩陣內(nèi)的初始點(diǎn),例如在諸如行線或者列線的兩個(gè)尋址線的交叉點(diǎn) 處。接著,存儲(chǔ)器尺寸或其它定界符被提供以便指示矩陣在二維上的程度,例如,沿著行線 和列線。一旦指定了初始點(diǎn),整個(gè)矩陣可以通過(guò)可尋址位置的自動(dòng)增量而被自動(dòng)地存儲(chǔ)。換 句話說(shuō),在初始點(diǎn)之后,不必回到主機(jī)或者其它設(shè)備以便確定用于存儲(chǔ)存儲(chǔ)器矩陣的隨后 部分的地址。二維存儲(chǔ)器卸下生成地址的任務(wù),或者基本上完全取消該任務(wù)。結(jié)果,在一些 實(shí)施例中,可以減少所要求的帶寬和訪問(wèn)時(shí)間。
[0030] 基本上,相同的操作可以被反向完成以便讀取二維存儲(chǔ)器矩陣。替代地,二維存儲(chǔ) 器矩陣也可以使用傳統(tǒng)的線性尋址被訪問(wèn)。
[0031] 盡管給出了其中存儲(chǔ)器矩陣的尺寸被指定的示例,但是也可以提供其它定界符, 包括二維中每一維的程度(即,沿著字線和位線)。二維存儲(chǔ)器對(duì)于靜止和移動(dòng)圖片、圖表 以及具有二維中的數(shù)據(jù)的其它應(yīng)用是有優(yōu)勢(shì)的。
[0032] 信息可以按照二維或者按照一維被存儲(chǔ)在存儲(chǔ)器28中。在一個(gè)實(shí)施例中,一和二 維之間的轉(zhuǎn)換可以在硬件中在過(guò)程中自動(dòng)地發(fā)生。
[0033] 在一些實(shí)施例中,多個(gè)流的視頻編碼可以在視頻編碼器中進(jìn)行,同時(shí),該多個(gè)流也 可以在視頻分析功能單元42中進(jìn)行分析。這可以通過(guò)在視頻捕獲接口 26中制作每一個(gè)流 的拷貝,并且將每一個(gè)流的拷貝的一個(gè)集合發(fā)送到視頻編碼器32,同時(shí)另一拷貝進(jìn)入視頻 分析功能單元42來(lái)實(shí)現(xiàn)。
[0034] 在一個(gè)實(shí)施例中,該多個(gè)流中的每一個(gè)的時(shí)間復(fù)用可以在視頻編碼器32和視頻 分析功能單元42的每一個(gè)中進(jìn)行。例如,基于用戶(hù)輸入,來(lái)自第一流的一個(gè)或多個(gè)幀可 以被編碼,接著是來(lái)自第二流的一個(gè)或多個(gè)幀,接著是來(lái)自下一個(gè)流中的一個(gè)或多個(gè)流,等 等。類(lèi)似地,時(shí)間復(fù)用可以按照相同的方式在視頻分析功能單元42中使用,其中,基于用戶(hù) 輸入,對(duì)來(lái)自一個(gè)流的一個(gè)或多個(gè)幀進(jìn)行視頻分析,接著是來(lái)自下一個(gè)流的一個(gè)或多個(gè)幀, 等等。因而,一系列流可以基本上被同時(shí)處理,也就是說(shuō),同時(shí)位于編碼器和視頻分析功能 單元中。
[0035] 在一些實(shí)施例中,用戶(hù)能夠首先設(shè)置哪一個(gè)流的序列被處理以及在任意的特定時(shí) 間每一個(gè)流的多少個(gè)幀被處理。在視頻編碼器和視頻分析引擎的情況下,隨著幀被處理,它 們能夠在總線36上被輸出。
[0036] 編碼器中每一個(gè)流的上下文可以被保留在寄存器組122中專(zhuān)用于該流的寄存器 中,寄存器組可以包括對(duì)于每一個(gè)流的寄存器。寄存器組122可以記錄編碼的特性,該特性 已經(jīng)按照各種方式中的一種被指定,包括用戶(hù)輸入。例如,對(duì)于每一個(gè)流期望的編碼的分辨 率、壓縮率和類(lèi)型可以被記錄。接著,隨著時(shí)間復(fù)用的編碼發(fā)生,對(duì)于正確的流,視頻編碼器 能夠訪問(wèn)來(lái)自寄存器116的對(duì)于正在被處理的當(dāng)前流的正確特性。
[0037] 類(lèi)似地,同樣的事情能夠使用寄存器組124在視頻分析功能單元46中進(jìn)行。換句 話說(shuō),每流的視頻分析處理或編碼的特性能夠被記錄在寄存器124和122內(nèi),一個(gè)寄存器保 留用于寄存器的每一個(gè)組中的每一個(gè)流。
[0038] 此外,用戶(hù)或者一些其它源可以指導(dǎo)特性在過(guò)程中被改變。"在過(guò)程中"意在指代 在視頻分析功能單元42的情況下在分析處理期間發(fā)生,或者在視頻編碼器32的情況下在 編碼期間發(fā)生。
[0039] 當(dāng)幀正在被處理時(shí)改變出現(xiàn)時(shí),該改變對(duì)于視頻編碼器可以被初始記錄在影子寄 存器116中,并且對(duì)于視頻分析功能單元42可以被初始記錄在影子寄存器114中。接著, 只要該幀(或者指定數(shù)量的幀)被完成,視頻編碼器32就檢查以便查看是否任意改變已經(jīng) 被存儲(chǔ)在寄存器116中。如果為是,則視頻編碼器將那些改變通過(guò)通路120傳輸?shù)郊拇嫫?122,更新該寄存器中的新特性,適合于已經(jīng)使它的編碼特性在過(guò)程中改變的每一個(gè)流。
[0040] 再者,在一個(gè)實(shí)施例中,同樣的在過(guò)程中改變可以在視頻分析功能單元42中進(jìn) 行。當(dāng)檢測(cè)到在過(guò)程中改變時(shí),現(xiàn)有的幀(或者現(xiàn)有的工作組)可以使用舊的特性完成,但 是將該改變存儲(chǔ)在影子寄存器114中。接著,在恰當(dāng)?shù)臅r(shí)間,在工作負(fù)荷或者幀已經(jīng)完成處 理之后,該改變可以通過(guò)總線118被從寄存器114傳送到視頻分析功能單元42,用于存儲(chǔ) 在寄存器124中,通常替換存儲(chǔ)在寄存器124當(dāng)中的單獨(dú)寄存器中用于任意特定流的特性。 接著,一旦更新完成,下一個(gè)處理負(fù)荷就使用新的特性。
[0041] 因而,參照?qǐng)D6,序列130可以被實(shí)現(xiàn)在軟件、固件和/或硬件中。在基于軟件或固 件的實(shí)施例中,該序列可以通過(guò)存儲(chǔ)在非暫態(tài)計(jì)算機(jī)可讀介質(zhì)中的計(jì)算機(jī)執(zhí)行的指令來(lái)實(shí) 現(xiàn),該非暫態(tài)計(jì)算機(jī)可讀介質(zhì)例如是光學(xué)、磁或半導(dǎo)體存儲(chǔ)器。例如,在一個(gè)實(shí)施例中,在編 碼器32的情況下,該序列可以被存儲(chǔ)在編碼器內(nèi)的存儲(chǔ)器中,并且在分析功能單元的情況 下,他們可以例如被存儲(chǔ)在像素管線單元44中。
[0042] 初始地,該序列等待用戶(hù)輸入上下文指令用于進(jìn)行編碼或分析。在一些實(shí)施例中, 對(duì)于分析和編碼來(lái)說(shuō),流程可以相同。一旦接收到用戶(hù)輸入,如在菱形132中確定的,對(duì)于 每一個(gè)流的上下文被存儲(chǔ)在適當(dāng)?shù)募拇嫫?22或124中,如方框134指示的。接著,時(shí)間復(fù) 用處理開(kāi)始,如在方框136中指示的。在該處理期間,菱形138處的檢查確定是否已經(jīng)存在 任意的處理改變指令。如果為否,則菱形142處的檢查確定處理是否完成。如果為否,則時(shí) 間復(fù)用處理繼續(xù)。
[0043] 如果已經(jīng)接收到處理改變,則它可以被存儲(chǔ)在適當(dāng)?shù)挠白蛹拇嫫?14或116中,如 在方框140中指示的。接著,在當(dāng)前處理任務(wù)完成時(shí),該改變可以在下一組操作中被自動(dòng)地 實(shí)現(xiàn),該下一組操作在視頻編碼器32的情況下是編碼或者在功能單元42的情況下是分析。
[0044] 在一些實(shí)施例中,編碼的頻率可以隨著編碼器上負(fù)荷的幅度而改變。一般來(lái)說(shuō),編 碼器運(yùn)行得足夠快,使得它能夠在從存儲(chǔ)器中讀出下一個(gè)幀之前完成對(duì)一個(gè)幀的編碼。在 許多情況下,編碼引擎可以比在下一個(gè)幀或下一組幀從存儲(chǔ)器中被讀出之前對(duì)一個(gè)幀或一 組幀進(jìn)行編碼所需的速度更快的速度運(yùn)行。
[0045] 上下文寄存器可以存儲(chǔ)用于進(jìn)行編碼或分析的任何必要的準(zhǔn)則,在編碼器的情況 下包括分辨率、編碼類(lèi)型和壓縮率。一般來(lái)說(shuō),該處理可以按照循環(huán)賽方式進(jìn)行,從一個(gè)流 或者通道前進(jìn)到下一個(gè)流或者通道。在一個(gè)實(shí)施例中,經(jīng)編碼的數(shù)據(jù)接著被輸出到外圍組 件互連(PCI)快速總線18。在一些情況下,與PCI快速總線相關(guān)聯(lián)的緩沖器可以從每一個(gè) 通道接收編碼。即,在一些實(shí)施例中,緩沖器可以被提供用于與PCI快速總線相關(guān)聯(lián)的每一 個(gè)視頻通道。每一個(gè)通道緩沖器可以被清空到由與PCI快速總線相關(guān)聯(lián)的仲裁器控制的總 線。在一些實(shí)施例中,仲裁器將每一個(gè)通道清空到總線的方式可以受用戶(hù)輸入影響。
[0046] 因而,參照?qǐng)D3,用于視頻捕獲的系統(tǒng)20可以被實(shí)現(xiàn)在硬件、軟件和/或固件中。在 一些情況下,由于硬件實(shí)施例能夠具有更高的速度,因此在一些情況下它們會(huì)是有優(yōu)勢(shì)的。
[0047] 如在方框72中指示的,視頻幀可以從一個(gè)或多個(gè)通道被接收。接著,視頻幀被拷 貝,如在方框74中指示的。接下來(lái),視頻幀的一個(gè)拷貝被存儲(chǔ)在外部存儲(chǔ)器中用于編碼,如 在方框76中指示的。另一個(gè)拷貝被存儲(chǔ)在內(nèi)部或主存儲(chǔ)器28中用于分析目的,如在方框 78中指示的。
[0048] 接下來(lái)參照二維矩陣序列80,如圖4所示,序列可以被實(shí)現(xiàn)在軟件、固件或硬件 中。再者,在使用硬件的實(shí)施例中可以存在速度優(yōu)勢(shì)。
[0049] 初始地,菱形82處的檢查確定是否已經(jīng)接收到存儲(chǔ)命令。傳統(tǒng)地,這樣的命令可 以從主機(jī)系統(tǒng),特別是從它的中央處理單元12被接收。那些命令可以由調(diào)度單元34接收, 該調(diào)度單元34接著將該命令提供到引擎20的適當(dāng)單元,用于實(shí)現(xiàn)該命令。當(dāng)該命令已經(jīng) 被實(shí)現(xiàn)時(shí),在一些實(shí)施例中,調(diào)度單元回報(bào)到主機(jī)系統(tǒng)。
[0050] 如果涉及存儲(chǔ)命令,如在菱形82中確定的,則初始存儲(chǔ)器位置和二維尺寸信息可 以被接收,如在方框84中指示的。接著該信息被存儲(chǔ)在適當(dāng)?shù)亩S矩陣中,如在方框86中 指示的。初始位置可以例如定義矩陣的左上角。該存儲(chǔ)操作可以自動(dòng)地在具有需要尺寸的 存儲(chǔ)器20內(nèi)找到矩陣,以便實(shí)現(xiàn)該操作。在一些實(shí)施例中,一旦提供了存儲(chǔ)器中的初始點(diǎn), 該操作就可以自動(dòng)地存儲(chǔ)矩陣的后續(xù)部分,而不要求額外的地址計(jì)算。
[0051] 相反,如果涉及讀取訪問(wèn),如在菱形88中確定的,則初始位置和二維尺寸信息被 接收,如在方框90中指示的。接著,指定的矩陣被讀取,如在方框92中指示的。再者,訪問(wèn) 可以按照自動(dòng)的形式進(jìn)行,其中初始點(diǎn)可以被訪問(wèn),這將按照傳統(tǒng)的線性尋址進(jìn)行,接著剩 余的地址被自動(dòng)地確定,而不必返回并且按照傳統(tǒng)的方式計(jì)算地址。
[0052] 最后,如果移動(dòng)命令已經(jīng)從主機(jī)被接收,如在方框94中確定的,則初始地址和二 維尺寸信息被接收,如在方框96中指示的,并且移動(dòng)命令被自動(dòng)地實(shí)現(xiàn),如在方框98中指 示的。再者,簡(jiǎn)單地通過(guò)指定開(kāi)始位置并且提供尺寸信息,信息的矩陣可以被自動(dòng)地從一個(gè) 位置移動(dòng)到另一個(gè)位置。
[0053] 回來(lái)參照?qǐng)D2,視頻分析單元42可以通過(guò)像素管線單元44耦合到系統(tǒng)的剩余部 分。單元44可以包括執(zhí)行來(lái)自調(diào)度單元34的命令的狀態(tài)機(jī)。典型地,這些命令源于主機(jī) 并且由調(diào)度單元實(shí)現(xiàn)。基于應(yīng)用,可以包括各種不同的分析單元。在一個(gè)實(shí)施例中,可以包 括卷積單元46,用于自動(dòng)地提供卷積。
[0054] 卷積命令可以包括命令和指定屏蔽、基準(zhǔn)或內(nèi)核的自變量(argument),使得能夠 將一幅捕獲的圖像中的特征與存儲(chǔ)器28中的基準(zhǔn)二維圖像進(jìn)行比較。該命令可以包括指 定要將卷積結(jié)果存儲(chǔ)到哪里的目的地。
[0055] 在一些情況下,每一個(gè)視頻分析單元可以是硬件加速器。"硬件加速器"意在指代 比在中央處理單元上運(yùn)行的軟件更快地執(zhí)行功能的硬件設(shè)備。
[0056] 在一個(gè)實(shí)施例中,每一個(gè)視頻分析單元可以是由專(zhuān)用于該單元的具體功能的專(zhuān)門(mén) 硬件執(zhí)行的狀態(tài)機(jī)。結(jié)果,該單元可以按照相對(duì)快速的方式執(zhí)行。而且,由于全部需要的是 高速硬件加速器執(zhí)行該任務(wù)并提供對(duì)于該任務(wù)的自變量,因此對(duì)于由視頻分析單元實(shí)現(xiàn)的 每一個(gè)操作,可以?xún)H需要一個(gè)時(shí)鐘周期,并且接著可以實(shí)現(xiàn)操作的序列,而不需要來(lái)自包括 主機(jī)處理器的任意處理器的進(jìn)一步的控制。
[0057] 在一些實(shí)施例中,其它視頻分析單元可以包括:按照自動(dòng)的方式計(jì)算質(zhì)心的質(zhì)心 單元48 ;按照自動(dòng)的方式確定直方圖的直方圖單元50 ;以及膨脹/腐蝕單元52。
[0058] 膨脹/腐蝕單元52可以負(fù)責(zé)按照自動(dòng)的方式增加或者降低給定圖像的分辨率。當(dāng) 然,不能夠增加分辨率,除非信息已經(jīng)可用,但是在一些情況下,以較高分辨率接收的幀可 以被以較低分辨率處理。結(jié)果,該幀可以在較高分辨率下可用,并且可以由膨脹/腐蝕單元 52轉(zhuǎn)換到較高分辨率。
[0059] 矩陣的存儲(chǔ)器傳輸(ΜΤ0Μ)單元54負(fù)責(zé)實(shí)現(xiàn)移動(dòng)指令,如先前描述的。在一些實(shí) 施例中,可以提供算術(shù)單元56和布爾單元58。盡管這些相同的單元可以結(jié)合中央處理單元 或者已有的協(xié)處理器可用,但是使它們位于引擎20的板上會(huì)是有利的,因?yàn)樗鼈兊钠洗?在可以降低對(duì)于從引擎20到主機(jī)并且返回的多個(gè)數(shù)據(jù)傳輸操作的需要。而且,在一些實(shí)施 例中,通過(guò)使它們?cè)谝?0的板上,可以使用二維或者矩陣主存儲(chǔ)器。
[0060] 提取單元60可以被提供以便從圖像提取向量。查找單元62可以用于查找特定類(lèi) 型的信息,以便查看它是否已經(jīng)被存儲(chǔ)。例如,查找單元可以用于找到已經(jīng)存儲(chǔ)的直方圖。 最后,當(dāng)圖像對(duì)于特定的任務(wù)具有太高的分辨率時(shí),使用子樣本單元64。圖像可以被子采樣 以便降低其分辨率。
[0061] 在一些實(shí)施例中,也可以提供其它組件,包括:I2C接口 38,用于與攝像機(jī)配置命令 進(jìn)行接口;以及通用輸入/輸出設(shè)備40,連接到所有相對(duì)應(yīng)的模塊以便接收通用的輸入和 輸出,并且在一些實(shí)施例用于結(jié)合調(diào)試一起使用。
[0062] 參照?qǐng)D5,在一些實(shí)施例中,可以實(shí)現(xiàn)分析輔助的編碼方案100。該方案可以被實(shí) 現(xiàn)在軟件、固件和/或硬件中。然而,硬件實(shí)施例可能更快。分析輔助的編碼可以使用分析 能力來(lái)確定應(yīng)該對(duì)視頻信息的給定幀的什么部分,如果存在,進(jìn)行編碼。結(jié)果,在一些實(shí)施 例中,一些部分或者幀可能不需要被編碼,結(jié)果,可以增加速度和帶寬。
[0063] 在一些實(shí)施例中,被編碼的內(nèi)容和不被編碼的內(nèi)容可以是案例特定的,并且可以 被在過(guò)程中確定,例如基于可用的電池功率、用戶(hù)選擇以及可用的帶寬,這里僅提出幾個(gè)示 例。更具體地說(shuō),圖像或幀分析可以在現(xiàn)有幀和后續(xù)幀上進(jìn)行,以便確定是否需要對(duì)整個(gè)幀 進(jìn)行編碼或者是否僅需要對(duì)幀的部分進(jìn)行編碼。這一分析輔助的編碼與傳統(tǒng)的基于運(yùn)動(dòng)估 計(jì)的編碼形成對(duì)比,該傳統(tǒng)的基于運(yùn)動(dòng)估計(jì)的編碼僅決定是否包括運(yùn)動(dòng)向量,但是仍然對(duì) 每一個(gè)幀進(jìn)行編碼。
[0064] 在本發(fā)明的一些實(shí)施例中,連續(xù)幀可以在選擇的基礎(chǔ)上被編碼或者不被編碼,并 且?guī)瑑?nèi)的選定區(qū)域可以基于那些區(qū)域內(nèi)的運(yùn)動(dòng)程度而被編碼或者根本不被編碼。接著,解 碼系統(tǒng)被告知多少幀被編碼或者沒(méi)有被編碼,并且能夠簡(jiǎn)單地根據(jù)需要來(lái)復(fù)制幀。
[0065] 參照?qǐng)D5,第一幀可以在開(kāi)始時(shí)被完全編碼,如在方框102中指示的,以便確定基 礎(chǔ)或者基準(zhǔn)。接著,菱形104處的檢查確定是否應(yīng)該提供分析輔助的編碼。如果將不使用 分析輔助的編碼,則編碼按照傳統(tǒng)繼續(xù)進(jìn)行。
[0066] 如果提供了分析輔助的編碼,如在菱形104中確定的,則確定閾值,如在方框106 中指示的。該閾值可以是固定的或者是自適應(yīng)的,取決于非運(yùn)動(dòng)因素,例如可用的電池功 率、可用的帶寬、或者用戶(hù)選擇,這里僅提出幾個(gè)示例。接下來(lái),在方框108中,分析現(xiàn)有的 幀和后續(xù)的幀,以便確定超出閾值的運(yùn)動(dòng)是否存在,如果存在,它是否能夠被隔離到特定的 區(qū)域。為此,可以使用各種分析單元,包括但不局限于卷積單元、腐蝕/膨脹單元、子樣本單 元和查找單元。具體地說(shuō),圖像或幀可以對(duì)于閾值之上的運(yùn)動(dòng)被分析,相對(duì)于之前和/或后 續(xù)的幀被分析。
[0067] 接著,如在方框110中指示的,可以定位具有超過(guò)閾值的運(yùn)動(dòng)的區(qū)域。在一個(gè)實(shí)施 例中,僅對(duì)那些區(qū)域進(jìn)行編碼,如在方框112中指示的。在一些情況下,可以根本不對(duì)給定 幀上的區(qū)域進(jìn)行編碼,并且可以簡(jiǎn)單地記錄這一結(jié)果,使得在解碼期間能夠簡(jiǎn)單地復(fù)制該 幀。一般來(lái)說(shuō),編碼器在頭部或其它位置中提供關(guān)于對(duì)什么幀進(jìn)行編碼以及幀是否僅具有 被編碼的部分的信息。在一些實(shí)施例中,被編碼的部分的地址可以按照初始點(diǎn)和矩陣尺寸 的形式被提供。
[0068] 圖3、4和5是可以被實(shí)現(xiàn)在硬件中的流程圖。他們也可以被實(shí)現(xiàn)在軟件或固件中, 在這種情況下,他們可以被體現(xiàn)在非暫態(tài)計(jì)算機(jī)可讀介質(zhì)上,例如光學(xué)、磁或者半導(dǎo)體存儲(chǔ) 器。非暫態(tài)介質(zhì)存儲(chǔ)指令用于由處理器執(zhí)行。這樣的處理器或控制器的示例包括分析引擎 20,并且適合的非暫態(tài)介質(zhì)可以包括主存儲(chǔ)器28和外部存儲(chǔ)器22,作為兩個(gè)示例。
[0069] 如圖1所示,視頻分析引擎20耦合到包括中央處理單元12的主機(jī)。引擎20獨(dú)立 于主機(jī)中央處理單元12來(lái)執(zhí)行指令。然而,主機(jī)中央處理單元必須為引擎20饋送數(shù)據(jù)和 指令,并且它必須接收操作的結(jié)果。在一些實(shí)施例中,為了完成這些任務(wù),在沒(méi)有針對(duì)指令 執(zhí)行的完成進(jìn)行輪詢(xún)時(shí)導(dǎo)致的開(kāi)銷(xiāo)的情況下,可以應(yīng)用智能消息信號(hào)中斷(MSI-X)。
[0070] 為了確保要求到主機(jī)的大數(shù)據(jù)傳輸?shù)闹噶畹臄?shù)據(jù)完整性,引擎20使用生成MSI-X 中斷的RAISE指令。所產(chǎn)生的MSI中斷不僅用作中斷,而且還在該中斷的消息數(shù)據(jù)字段中 承載額外的信息[什么信息?],以便降低服務(wù)該中斷時(shí)涉及的開(kāi)銷(xiāo)。而且,智能MSI-X中 斷控制器拖延對(duì)來(lái)自指令調(diào)度單元的RAISE中斷請(qǐng)求的確認(rèn),直到傳輸?shù)街鳈C(jī)的數(shù)據(jù)是完 整的。這一機(jī)制可以確保僅在READ或RMD指令成功完成之后通過(guò)外圍組件互連快速總線 18來(lái)發(fā)送用于RAISE指令的中斷。
[0071] 在一個(gè)實(shí)施例中,MSI-X接口的結(jié)構(gòu)如下,其中1C是引擎20,0是輸出并且I是輸 入,尺寸以字節(jié)為單位。
[0072]
【權(quán)利要求】
1. 一種方法,包括: 生成從視頻分析引擎到主機(jī)的中斷,所述中斷指示中斷并且包括用于輔助服務(wù)所述中 斷的信息。
2. 如權(quán)利要求1所述的方法,包括對(duì)于所述中斷提供地址值。
3. 如權(quán)利要求1所述的方法,包括提供對(duì)于所述中斷的數(shù)據(jù)值。
4. 如權(quán)利要求1所述的方法,包括提供消息信號(hào)中斷。
5. 如權(quán)利要求4所述的方法,包括提供對(duì)于所述中斷的業(yè)務(wù)類(lèi)別。
6. 如權(quán)利要求1所述的方法,包括延遲對(duì)所述中斷的確認(rèn),直到完成到所述主機(jī)的數(shù) 據(jù)傳輸為止。
7. -種非暫態(tài)計(jì)算機(jī)可讀介質(zhì),存儲(chǔ)由處理器執(zhí)行以便執(zhí)行方法的指令,所述方法包 括: 生成從視頻分析引擎到主機(jī)的中斷,所述中斷指示中斷并且包括用于輔助服務(wù)所述中 斷的信息。
8. 如權(quán)利要求7所述的介質(zhì),進(jìn)一步存儲(chǔ)被執(zhí)行以便執(zhí)行方法的指令,所述方法包括 對(duì)于所述中斷提供地址值。
9. 如權(quán)利要求7所述的介質(zhì),進(jìn)一步存儲(chǔ)被執(zhí)行以便執(zhí)行方法的指令,所述方法包括 提供對(duì)于所述中斷的數(shù)據(jù)值。
10. 如權(quán)利要求7所述的介質(zhì),進(jìn)一步存儲(chǔ)被執(zhí)行以便執(zhí)行方法的指令,所述方法包括 提供消息信號(hào)中斷。
11. 如權(quán)利要求10所述的介質(zhì),進(jìn)一步存儲(chǔ)被執(zhí)行以便執(zhí)行方法的指令,所述方法包 括提供對(duì)于所述中斷的業(yè)務(wù)類(lèi)別。
12. 如權(quán)利要求7所述的介質(zhì),進(jìn)一步存儲(chǔ)被執(zhí)行以便執(zhí)行方法的指令,所述方法包括 延遲對(duì)所述中斷的確認(rèn),直到完成到所述主機(jī)的數(shù)據(jù)傳輸為止。
13. -種裝置,包括: 視頻分析引擎;以及 中斷控制器,用于生成從所述視頻分析引擎到主機(jī)的中斷,所述中斷指示中斷并且包 括用于輔助服務(wù)所述中斷的信息。
14. 如權(quán)利要求13所述的裝置,所述控制器用于對(duì)于所述中斷提供地址值。
15. 如權(quán)利要求13所述的裝置,所述控制器用于提供對(duì)于所述中斷的數(shù)據(jù)值。
16. 如權(quán)利要求13所述的裝置,所述控制器用于提供消息信號(hào)中斷。
17. 如權(quán)利要求16所述的裝置,所述控制器用于提供對(duì)于所述中斷的業(yè)務(wù)類(lèi)別。
18. 如權(quán)利要求13所述的裝置,所述控制器用于延遲對(duì)所述中斷的確認(rèn),直到完成到 所述主機(jī)的數(shù)據(jù)傳輸為止。
【文檔編號(hào)】G06F13/14GK104145244SQ201180075963
【公開(kāi)日】2014年11月12日 申請(qǐng)日期:2011年12月28日 優(yōu)先權(quán)日:2011年12月28日
【發(fā)明者】N·多德阿普內(nèi)尼, A·米什拉, J·M·羅德里格斯 申請(qǐng)人:英特爾公司