專利名稱:多核處理芯片對視頻處理任務(wù)的處理方法及其系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及視頻處理領(lǐng)域,特別涉及一種嵌入式視頻處理技術(shù)。
背景技術(shù):
Netra平臺高效的編解碼運(yùn)算能力來源于它的高清視頻影像協(xié)處理器(HDVICP), 其控制由一顆ARM-C0RTEX-M3處理內(nèi)核(稱為VID)來完成。根據(jù)不同的芯片型號,HDVICP 的個數(shù)可能不同。VID作為一個資源模塊,必須統(tǒng)一管理所有的H DVICP,并提高其使用效率。HDVICP可以獨(dú)立工作,在多個HDVICP情況下,每個HDVICP在能力上都是對等的, 除了訪問DDR時具有一定的內(nèi)部競爭關(guān)系,其工作流程也互不干擾。在目前系統(tǒng)中,HDVICP 可以執(zhí)行的但不限于以下的任務(wù)Al)視頻壓縮,支持標(biāo)準(zhǔn)264、???64和MPEG4等視頻壓縮標(biāo)準(zhǔn);A2)視頻解碼,支持標(biāo)準(zhǔn)264、???64和MPEG4等視頻壓縮標(biāo)準(zhǔn);A3)移動偵測;A4)智能處理。上述任務(wù)的執(zhí)行請求和數(shù)據(jù)源來自于Netra平臺的其它處理內(nèi)核(如A8、C674、 VPS),VID只是接收這些請求,選擇一個HDVICP進(jìn)行處理,最后把處理的結(jié)果進(jìn)行返回。VID上任何一個任務(wù)的處理流程都可以分為如下5部分BI)數(shù)據(jù)準(zhǔn)備(Tl),即將傳遞過來的數(shù)據(jù)和參數(shù)進(jìn)行轉(zhuǎn)換,并為HDVICP分配一些內(nèi)存資源;B2)預(yù)處理(T2),即配置HDVICP,為其加載代碼和數(shù)據(jù);B3) HDVICP運(yùn)算(T3),該階段無需VID的任何干預(yù),VID可以轉(zhuǎn)移出來做其它事B4)后處理(T4),即HDVICP運(yùn)算完成后中斷通知VID,VID恢復(fù)HDVICP的一些默認(rèn)狀態(tài);B5)數(shù)據(jù)返回(T5),即VID將運(yùn)算后的數(shù)據(jù)進(jìn)行組織,并返回給其它處理內(nèi)核。由上可知,除了在階段2和階段4中HDVICP和VID被同時占用外,其余階段二者可以并行工作,如圖I所示。HDVICP所完成的工作是系統(tǒng)中運(yùn)算量最大的環(huán)節(jié),是提升性能的關(guān)鍵所在。常規(guī)的做法是,針對HDVICP要處理的每一種任務(wù),在VID上為其建立一個線程,當(dāng)該線程接收到該任務(wù)的處理請求時,查找一個空閑的HDVICP,使用完畢后再將其釋放;如果查不到空閑的HDVICP,該線程只能休眠等待,直到查到為止。這種方法在系統(tǒng)負(fù)荷低時具有最快的響應(yīng)速度,但本發(fā)明的發(fā)明人發(fā)現(xiàn),當(dāng)系統(tǒng)負(fù)荷高時會降低HDVICP的有效使用率,并且會導(dǎo)致優(yōu)先級控制失效,這是因?yàn)樵谙到y(tǒng)負(fù)荷高時,HDVICP有很高的幾率處于繁忙狀態(tài),導(dǎo)致線程查詢不到空閑的HDVICP,被迫休眠。休眠的最短時間是1ms,但是,有可能在經(jīng)過O. Ims 后,HDVICP已經(jīng)處于空閑狀態(tài)了,任務(wù)線程多休眠的O. 9ms就白白浪費(fèi)了,而HDVICP每次
4工作的時間也僅有I個或幾個ms,這O. 9ms的浪費(fèi)對于HDVICP來說是巨大的。對于優(yōu)先級控制,由于HDVICP空閑后第一個醒來的線程總會優(yōu)先獲得HDVICP的使用權(quán),這樣為任務(wù)線程設(shè)置的優(yōu)先級就失去了效力。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種多核處理芯片對視頻處理任務(wù)的處理方法及其系統(tǒng), 針對HDVICP建立服務(wù)線程,主動查詢需要處理的任務(wù)隊列,提高了高負(fù)荷下HDVICP的使用率,并能夠支持針對任務(wù)隊列的優(yōu)先級配置。為解決上述技術(shù)問題,本發(fā)明的實(shí)施方式公開了一種多核處理芯片對視頻處理任務(wù)的處理方法,該芯片包括多個用于視頻處理的可編程模塊,一個用于控制可編程模塊的第一處理內(nèi)核,和至少一個用于產(chǎn)生待處理任務(wù)的其他處理內(nèi)核,該多核處理芯片對視頻處理任務(wù)的處理方法包括以下步驟第一處理內(nèi)核為不同類別的任務(wù)分別建立任務(wù)隊列,供各其他處理內(nèi)核加入待處理任務(wù);第一處理內(nèi)核為每一個可編程模塊分別建立服務(wù)線程,并為每個服務(wù)線程注冊多個執(zhí)行要素,每個執(zhí)行要素包括一個任務(wù)隊列;各服務(wù)線程在空閑時按預(yù)先設(shè)定的優(yōu)先級查詢各任務(wù)隊列,將查到第一個非空任務(wù)隊列中的第一個任務(wù)交給對應(yīng)的可編程模塊處理。本發(fā)明的實(shí)施方式還公開了一種多核處理芯片對視頻處理任務(wù)的處理系統(tǒng),該芯片包括多個用于視頻處理的可編程模塊,一個用于控制可編程模塊的第一處理內(nèi)核,和至少一個用于產(chǎn)生待處理任務(wù)的其他處理內(nèi)核,該第一處理內(nèi)核包括以下子單元任務(wù)建立子單元,用于為不同類別的任務(wù)分別建立任務(wù)隊列,供各其他處理內(nèi)核加入待處理任務(wù);線程建立子單元,用于為每一個可編程模塊分別建立服務(wù)線程;元素注冊子單元,用于為線程建立子單元所建立的每個服務(wù)線程注冊多個執(zhí)行要素,每個執(zhí)行要素包括一個任務(wù)隊列;任務(wù)查詢子單元,用于在線程建立子單元所建立的各服務(wù)線程在空閑時按預(yù)先設(shè)定的優(yōu)先級查詢?nèi)蝿?wù)建立子單元所建立的各任務(wù)隊列,將查到第一個非空任務(wù)隊列中的第一個任務(wù)交給對應(yīng)的可編程模塊處理。本發(fā)明實(shí)施方式與現(xiàn)有技術(shù)相比,主要區(qū)別及其效果在于針對HDVICP建立服務(wù)線程,主動查詢需要處理的任務(wù)隊列,提高了高負(fù)荷下 HDVICP的使用率,并能夠支持針對任務(wù)隊列的優(yōu)先級配置。進(jìn)一步地,根據(jù)任務(wù)類型將任務(wù)請求歸類為不同的任務(wù)隊列,再根據(jù)執(zhí)行要素的注冊順序設(shè)置優(yōu)先級,動態(tài)確定服務(wù)線程的先后執(zhí)行順序,進(jìn)一步提高了高負(fù)荷下HDVICP 的使用率。進(jìn)一步地,將相同類型的處理任務(wù)整合為應(yīng)用程序,使得處理內(nèi)容相同但是優(yōu)先級不同的多個任務(wù)隊列可以共用一個應(yīng)用程序,方便各任務(wù)隊列資源共享和管理,同時節(jié)省內(nèi)存空間。進(jìn)一步地,資源通道獨(dú)立于任務(wù)通道,被調(diào)用時遵循使用之前先申請、使用完后再釋放的規(guī)則,使得第一處理內(nèi)核上有限的資源可以得到充分利用。
圖I是本發(fā)明技術(shù)背景中對視頻處理任務(wù)的處理階段示意圖;圖2是本發(fā)明第一實(shí)施方式中一種多核處理芯片對視頻處理任務(wù)的處理方法的流程示意圖;圖3是本發(fā)明第二實(shí)施方式中一種多核處理芯片對視頻處理任務(wù)的處理方法的流程示意圖;圖4是本發(fā)明第二實(shí)施方式中一種多核處理芯片對視頻處理任務(wù)的處理方法的流程示意圖;圖5是本發(fā)明第三實(shí)施方式中一種多核處理芯片對視頻處理任務(wù)的處理系統(tǒng)的結(jié)構(gòu)示意圖;圖6是本發(fā)明第五實(shí)施方式中一種多核處理芯片對視頻處理任務(wù)的處理系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施例方式在以下的敘述中,為了使讀者更好地理解本申請而提出了許多技術(shù)細(xì)節(jié)。但是,本領(lǐng)域的普通技術(shù)人員可以理解,即使沒有這些技術(shù)細(xì)節(jié)和基于以下各實(shí)施方式的種種變化和修改,也可以實(shí)現(xiàn)本申請各權(quán)利要求所要求保護(hù)的技術(shù)方案。為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明的實(shí)施方式作進(jìn)一步地詳細(xì)描述。本發(fā)明第一實(shí)施方式涉及一種多核處理芯片對視頻處理任務(wù)的處理方法。圖2是該多核處理芯片對視頻處理任務(wù)的處理方法的流程示意圖。該芯片包括多個用于視頻處理的可編程模塊,一個用于控制可編程模塊的第一處理內(nèi)核,和至少一個用于產(chǎn)生待處理任務(wù)的其他處理內(nèi)核,具體地說,如圖2所示,該多核處理芯片對視頻處理任務(wù)的處理方法包括以下步驟在步驟201中,第一處理內(nèi)核為不同類別的任務(wù)分別建立任務(wù)隊列,供各其他處理內(nèi)核加入待處理任務(wù)。此后進(jìn)入步驟202,第一處理內(nèi)核為每一個可編程模塊分別建立服務(wù)線程。此后進(jìn)入步驟203,第一處理內(nèi)核為每個服務(wù)線程注冊多個執(zhí)行要素,每個執(zhí)行要素包括一個任務(wù)隊列。此后進(jìn)入步驟204,各服務(wù)線程在空閑時按預(yù)先設(shè)定的優(yōu)先級查詢各任務(wù)隊列,將查到第一個非空任務(wù)隊列中的第一個任務(wù)交給對應(yīng)的可編程模塊處理,此后結(jié)束本流程。此外,第一處理內(nèi)核和其他處理內(nèi)核型號規(guī)格可以完全一樣,也可以視具體情況的不同而定。本發(fā)明第二實(shí)施方式涉及一種多核處理芯片對視頻處理任務(wù)的處理方法。圖3和圖4是該多核處理芯片對視頻處理任務(wù)的處理方法的流程示意圖。第二實(shí)施方式在第一實(shí)施方式的基礎(chǔ)上進(jìn)行了改進(jìn),主要改進(jìn)之處在于根據(jù)任務(wù)類型將任務(wù)請求歸類為不同的任務(wù)隊列,再根據(jù)執(zhí)行要素的注冊順序設(shè)置優(yōu)先級,動態(tài)確定服務(wù)線程的先后執(zhí)行順序,進(jìn)一步提高了高負(fù)荷下HDVICP的使用率。將相同類型的處理任務(wù)整合為應(yīng)用程序,使得處理內(nèi)容相同但是優(yōu)先級不同的多個任務(wù)隊列可以共用一個應(yīng)用程序,方便各任務(wù)隊列資源共享和管理,同時節(jié)省內(nèi)存空間。資源通道獨(dú)立于任務(wù)通道,被調(diào)用時遵循使用之前先申請、使用完后再釋放的規(guī)則,使得第一處理內(nèi)核上有限的資源可以得到充分利用。具體地說上文所述的第一處理內(nèi)核為每個服務(wù)線程注冊多個執(zhí)行要素的步驟203中,執(zhí)行要素的注冊順序?yàn)槿蝿?wù)隊列處理的優(yōu)先級。任務(wù)隊列根據(jù)優(yōu)先級,先后依次為主碼流編碼事件隊列、子碼流編碼事件隊列、 移動偵測事件隊列和解碼事件隊列。執(zhí)行要素還包括用于處理任務(wù)的可編程模塊應(yīng)用程序,且至少有兩個任務(wù)隊列對應(yīng)同一個可編程模塊應(yīng)用程序。此外,在本發(fā)明的其他某些實(shí)施方式中,不同的任務(wù)隊列也可以只對應(yīng)不同的應(yīng)
用程序。上文所述的各服務(wù)線程在空閑時按預(yù)先設(shè)定的優(yōu)先級查詢各任務(wù)隊列的步驟204 中,各服務(wù)線程在空閑時按照該注冊順序查詢各任務(wù)隊列。上文所述的各服務(wù)線程在空閑時按預(yù)先設(shè)定的優(yōu)先級查詢各任務(wù)隊列,將查到第一個非空任務(wù)隊列中的第一個任務(wù)交給對應(yīng)的可編程模塊處理的步驟204,包括以下子步驟Al)初始化 i = O。A2)查詢第i個執(zhí)行要素中的任務(wù)隊列,如果查到,則轉(zhuǎn)入步驟A3),否則轉(zhuǎn)入步驟 A8)。A3)判斷任務(wù)命令中是否包含申請資源通道CMD_ALL0C命令或釋放資源通道CMD_ FREE命令,如果是,則申請或釋放資源通道。A4)判斷資源通道句柄HANDLE是否有效,如果是,則轉(zhuǎn)入步驟A6),否則轉(zhuǎn)入步驟 A5)。A5)設(shè)置任務(wù)隊列狀態(tài)STATUS參數(shù)為“失敗FAIL”狀態(tài),此后返回步驟Al)。A6)執(zhí)行第i個執(zhí)行要素中的應(yīng)用程序,將為任務(wù)命令、參數(shù)結(jié)構(gòu)體和資源通道句柄HANDLE的參數(shù)進(jìn)行傳入,其中任務(wù)命令包括申請資源通道CMD_ALL0C命令、釋放資源通道CMD_FREE命令、重新配置參數(shù)CMD_C0NFIG命令和執(zhí)行任務(wù)處理CMD_PR0C命令。A7)根據(jù)應(yīng)用程序的返回結(jié)果將任務(wù)隊列狀態(tài)STATUS參數(shù)設(shè)為“失敗FAIL”或“成功SUCCESS”狀態(tài),此后返回步驟Al)。AS)使i = i+Ι,如果i為注冊的執(zhí)行要素個數(shù),則轉(zhuǎn)入步驟A9),否則返回步驟 A2)。A9)休眠預(yù)定的時長,此后返回步驟Al)。在本發(fā)明的其他某些實(shí)施方式中,任務(wù)命令還包括進(jìn)行相應(yīng)任務(wù)處理的其他命令。作為本發(fā)明的一個優(yōu)選實(shí)施方式,可以預(yù)先設(shè)置休眠時長為1ms。資源通道獨(dú)立于任務(wù)通道。建立任務(wù)隊列的步驟之后,還包括以下步驟
BI)其他處理內(nèi)核設(shè)置任務(wù)命令包含申請資源通道CMD_ALL0C命令,同時將該命令的狀態(tài)STATUS參數(shù)設(shè)置為“等待WAIT”狀態(tài)和資源通道句柄HANDLE設(shè)置為“空NULL”, 排入任務(wù)隊列。B2)若第一處理內(nèi)核完成任務(wù)處理,則將申請資源通道CMD_ALL0C命令的狀態(tài) STATUS參數(shù)設(shè)置為非“等待WAIT”狀態(tài)。B3)若申請資源通道CMD_ALL0C命令的資源通道句柄HANDLE仍為“空NULL”,第一處理內(nèi)核任務(wù)處理時資源通道申請失敗,則其他處理內(nèi)核進(jìn)行異常處理,否則轉(zhuǎn)入步驟 B4)。B4)其他處理內(nèi)核設(shè)置任務(wù)命令包含執(zhí)行任務(wù)處理CMD_PR0C命令,并將該執(zhí)行任務(wù)處理CMD_PR0C命令的狀態(tài)STATUS參數(shù)設(shè)置為“等待WAIT”狀態(tài),其余參數(shù)因任務(wù)而異, 排入任務(wù)隊列。B5)第一處理內(nèi)核完成任務(wù)處理,則將執(zhí)行任務(wù)處理CMD_PR0C命令的狀態(tài)STATUS 參數(shù)設(shè)置為非“等待WAIT”狀態(tài),其他處理內(nèi)核處理第一處理內(nèi)核所返回的結(jié)果,該返回結(jié)果包含在參數(shù)中或另行約定。若任務(wù)處理未結(jié)束,則返回步驟B4)。否則轉(zhuǎn)入步驟B6)。B6)其他處理內(nèi)核設(shè)置任務(wù)命令包含釋放資源通道CMD_FREE命令,同時將該釋放資源通道CMD_FREE命令中的狀態(tài)STATUS參數(shù)設(shè)置為“WAIT”狀態(tài),排入任務(wù)隊列。B7)第一處理內(nèi)核完成任務(wù)處理,則將釋放資源通道CMD_FREE命令的狀態(tài)STATUS 參數(shù)設(shè)置為非“等待WAIT”狀態(tài)。B8)其他處理內(nèi)核的任務(wù)處理結(jié)束,并等待任務(wù)重新開始,此后返回步驟BI)。此外,其它處理內(nèi)核在等待TATUS參數(shù)狀態(tài)由“WAIT”轉(zhuǎn)為非“WAIT”狀態(tài)時,可以使用信號量機(jī)制或休眠的方式,非“WAIT”狀態(tài)包括任務(wù)處理成功SECCESS和失敗FAIL狀態(tài)等。作為本發(fā)明的一個優(yōu)選實(shí)施例,如圖3所示,針對HDVICP建立線程,具體做法如下為任務(wù)建立任務(wù)隊列,如主碼流編碼隊列,子碼流編碼隊列,解碼隊列等,隊列的入口在發(fā)起請求的處理內(nèi)核上,隊列的出口在VID上,隊列中存放的是待處理的任務(wù)通道、 處理命令以及參數(shù)指針。為任務(wù)(或應(yīng)用)建立獨(dú)立的資源通道,一個資源通道保存一組參數(shù)配置和 HDVICP的內(nèi)存資源等信息;該資源通道獨(dú)立于任務(wù)通道,如系統(tǒng)中可能存在32個解碼通道,但是同時打開的最多只有16路,因此VID上的解碼資源通道個數(shù)可以只有16個。為每個HDVICP建立一個服務(wù)線程,該線程按照一定的優(yōu)先級去查詢每個任務(wù)隊列,如果查到一個待處理的任務(wù),即調(diào)用和該任務(wù)通道相對應(yīng)的資源通道,并使用該HDVICP 進(jìn)行處理,處理完成以后進(jìn)行下一次查詢;如果沒有查到任何待處理的任務(wù),則該服務(wù)線程休眠一個最短的時間,然后繼續(xù)查詢。作為本發(fā)明的一個優(yōu)選實(shí)施例,如圖4所示,從高到低分配任務(wù)隊列的優(yōu)先級主碼流編碼事件隊列、子碼流編碼事件隊列、移動偵測事件隊列和解碼事件隊列。在步驟401中,空閑服務(wù)線程從最高優(yōu)先級的主碼流編碼事件隊列中查詢是否有待處理的主碼流編碼事件。若是,則進(jìn)入步驟4011 ;否則進(jìn)入步驟402。
在步驟402中,若最高優(yōu)先級的主碼流編碼事件隊列中沒有待處理的主碼流編碼事件,空閑服務(wù)線程則從較高優(yōu)先級的子碼流編碼事件隊列中查詢是否有待處理的子碼流編碼事件。若是,則進(jìn)入步驟4011 ;否則進(jìn)入步驟403。在步驟4011中,為需要處理的編碼事件準(zhǔn)備編碼數(shù)據(jù)。此后進(jìn)入步驟4012,為需要處理的編碼事件和數(shù)據(jù)調(diào)用編碼庫。此后進(jìn)入步驟4013,對編碼結(jié)果進(jìn)行處理,此后返回步驟401,空閑服務(wù)線程從最高優(yōu)先級的主碼流編碼事件隊列中查詢是否有待處理的主碼流編碼事件。在本實(shí)施方式中,主碼流編碼事件和子碼流編碼事件共用執(zhí)行要素中的一套應(yīng)用程序處理編碼事件。在步驟403中,若較高優(yōu)先級的事件隊列中沒有待處理的事件,空閑服務(wù)線程則從移動偵測事件隊列中查詢是否有待處理的移動偵測事件。若是,則進(jìn)入步驟4031 ;否則進(jìn)入步驟404。在步驟4031中,為需要處理的移動偵測事件準(zhǔn)備移動偵測數(shù)據(jù)。此后進(jìn)入步驟4032,為需要處理的移動偵測事件和數(shù)據(jù)調(diào)用移動偵測庫。此后進(jìn)入步驟4033,對移動偵測結(jié)果進(jìn)行處理,此后返回步驟401,空閑服務(wù)線程從最高優(yōu)先級的主碼流編碼事件隊列中查詢是否有待處理的主碼流編碼事件。在步驟404中,若主碼流編碼事件隊列、子碼流編碼事件隊列和移動偵測事件隊列動都沒有待處理的相應(yīng)事件,空閑服務(wù)線程則查詢解碼事件隊列中是否存在待處理的解碼事件。若是,則進(jìn)入步驟4041 ;否則進(jìn)入步驟405。在步驟4041中,為需要處理的解碼事件準(zhǔn)備解碼數(shù)據(jù)。此后進(jìn)入步驟4042,為需要處理的解碼事件和數(shù)據(jù)調(diào)用解碼庫。此后進(jìn)入步驟4043,對解碼結(jié)果進(jìn)行處理,此后返回步驟401,空閑服務(wù)線程從最高優(yōu)先級的主碼流編碼事件隊列中查詢是否有待處理的主碼流編碼事件。在步驟405中,若空閑服務(wù)線程查詢到所有事件隊列中都沒有待處理的事件,則休眠1ms,此后返回步驟401,空閑服務(wù)線程從最高優(yōu)先級的主碼流編碼事件隊列中查詢是否有待處理的主碼流編碼事件。在上述方案中,任務(wù)處理中的5個階段完全是串行的,在系統(tǒng)負(fù)荷高時,HDVICP線程不會休眠,HDVICP的最高有效使用率取決于各階段所占的比例,即HDVICP 有效使用率=T3/(T1+T2+T3+T4+T5);一般情況下T3時間段占的比例是最大的,并且Tl、T2、T4和T5時間段可以通過其它優(yōu)化措施進(jìn)行縮減,實(shí)測Dl (704 * 576分辨率)編碼情況下HDVICP的有效使用率在 95%左右,遠(yuǎn)高于常規(guī)的做法。該方案的另一個優(yōu)點(diǎn)是可以保證任務(wù)的優(yōu)先級控制始終是有效的,S卩如果高優(yōu)先級的隊列非空,低優(yōu)先級隊列中的任務(wù)不會被處理。本發(fā)明的各方法實(shí)施方式均可以以軟件、硬件、固件等方式實(shí)現(xiàn)。不管本發(fā)明是以軟件、硬件、還是固件方式實(shí)現(xiàn),指令代碼都可以存儲在任何類型的計算機(jī)可訪問的存儲器中(例如永久的或者可修改的,易失性的或者非易失性的,固態(tài)的或者非固態(tài)的,固定的或者可更換的介質(zhì)等等)。同樣,存儲器可以例如是可編程陣列邏輯(Programmable Array Logic,簡稱“PAL”)、隨機(jī)存取存儲器(Random Access Memory,簡稱“RAM”)、可編程只讀存儲器(Programmable Read Only Memory,簡稱 “PROM”)、只讀存儲器(Read-Only Memory, 簡稱“ROM”)、電可擦除可編程只讀存儲器(Electrically Erasable Programmable ROM,簡稱“EEPROM”)、磁盤、光盤、數(shù)字通用光盤(Digital Versatile Disc,簡稱“DVD”)等等。本發(fā)明第三實(shí)施方式涉及一種多核處理芯片對視頻處理任務(wù)的處理系統(tǒng)。圖5是該多核處理芯片對視頻處理任務(wù)的處理系統(tǒng)的結(jié)構(gòu)示意圖。該芯片包括多個用于視頻處理的可編程模塊,一個用于控制可編程模塊的第一處理內(nèi)核,和至少一個用于產(chǎn)生待處理任務(wù)的其他處理內(nèi)核,如圖5所示,該多核處理芯片對視頻處理任務(wù)的處理系統(tǒng)中的第一處理內(nèi)核包括以下子單元任務(wù)建立子單元,用于為不同類別的任務(wù)分別建立任務(wù)隊列,供各其他處理內(nèi)核加入待處理任務(wù)。線程建立子單元,用于為每一個可編程模塊分別建立服務(wù)線程。元素注冊子單元,用于為線程建立子單元所建立的每個服務(wù)線程注冊多個執(zhí)行要素,每個執(zhí)行要素包括一個任務(wù)隊列。任務(wù)查詢子單元,用于在線程建立子單元所建立的各服務(wù)線程在空閑時按預(yù)先設(shè)定的優(yōu)先級查詢?nèi)蝿?wù)建立子單元所建立的各任務(wù)隊列,將查到第一個非空任務(wù)隊列中的第一個任務(wù)交給對應(yīng)的可編程模塊處理。第一實(shí)施方式是與本實(shí)施方式相對應(yīng)的方法實(shí)施方式,本實(shí)施方式可與第一實(shí)施方式互相配合實(shí)施。第一實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)在本實(shí)施方式中依然有效,為了減少重復(fù),這里不再贅述。相應(yīng)地,本實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)也可應(yīng)用在第一實(shí)施方式中。本發(fā)明第四實(shí)施方式涉及一種多核處理芯片對視頻處理任務(wù)的處理系統(tǒng)。第四實(shí)施方式在第三實(shí)施方式的基礎(chǔ)上進(jìn)行了改進(jìn),主要改進(jìn)之處在于根據(jù)任務(wù)類型將任務(wù)請求歸類為不同的任務(wù)隊列,再根據(jù)執(zhí)行要素的注冊順序設(shè)置優(yōu)先級,動態(tài)確定服務(wù)線程的先后執(zhí)行順序,進(jìn)一步提高了高負(fù)荷下HDVICP的使用率。將相同類型的處理任務(wù)整合為應(yīng)用程序,使得處理內(nèi)容相同但是優(yōu)先級不同的多個任務(wù)隊列可以共用一個應(yīng)用程序,方便各任務(wù)隊列資源共享和管理,同時節(jié)省內(nèi)存空間。具體地說元素注冊子單元用于為每個服務(wù)線程注冊多個執(zhí)行要素時,執(zhí)行要素的注冊順序?yàn)槿蝿?wù)隊列處理的優(yōu)先級。任務(wù)查詢子單元用于在各服務(wù)線程空閑時按預(yù)先設(shè)定的優(yōu)先級查詢各任務(wù)隊列過程中,各服務(wù)進(jìn)程在空閑時,按照該注冊順序查詢各任務(wù)隊列。此外,在本發(fā)明的其他某些實(shí)施方式中,不同的任務(wù)隊列也可以只對應(yīng)不同的應(yīng)
用程序。執(zhí)行要素還包括用于處理任務(wù)的可編程模塊應(yīng)用程序,至少有兩個任務(wù)隊列對應(yīng)同一個可編程模塊應(yīng)用程序。此外,在本發(fā)明的其他某些實(shí)施方式中,不同的任務(wù)隊列也可以只對應(yīng)不同的應(yīng)
用程序。任務(wù)隊列根據(jù)優(yōu)先級,先后依次為主碼流編碼事件隊列、子碼流編碼事件隊列、8/8頁
移動偵測事件隊列和解碼事件隊列。第二實(shí)施方式是與本實(shí)施方式相對應(yīng)的方法實(shí)施方式,本實(shí)施方式可與第二實(shí)施方式互相配合實(shí)施。第二實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)在本實(shí)施方式中依然有效,為了減少重復(fù),這里不再贅述。相應(yīng)地,本實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)也可應(yīng)用在第二實(shí)施方式中。第五實(shí)施方式涉及一種多核處理芯片對視頻處理任務(wù)的處理系統(tǒng),提出該系統(tǒng)的另一種實(shí)現(xiàn)方式。如圖6所示,實(shí)際上在軟件角度看來,任務(wù)建立、線程建立、元素注冊和任務(wù)查詢等都只是過程,因此,VID上的模塊單元可以這么劃分(I) 一個系統(tǒng)初始化子單元,用于為不同類別的任務(wù)分別建立任務(wù)隊列,為每一個可編程模塊分別建立服務(wù)線程,為每個服務(wù)線程注冊若干組執(zhí)行要素,其中,每組執(zhí)行要素包括I個任務(wù)隊列指針,一個應(yīng)用程序指針。(2)若干個服務(wù)線程子單元,其個數(shù)等于可編程模塊的個數(shù),用于按照注冊時確定的優(yōu)先級查詢各任務(wù)隊列,并調(diào)用相應(yīng)的應(yīng)用程序。(3)若干個應(yīng)用程序子單元,如編碼子單元、解碼子單元,用于管理相應(yīng)的資源通道的申請和釋放,并配置被調(diào)用時指定的可編程模塊,以完成特定功能。需要說明的是,本發(fā)明各設(shè)備實(shí)施方式中提到的各單元或模塊都是邏輯單元或模塊,在物理上,一個邏輯單元或模塊可以是一個物理單元或模塊,也可以是一個物理單元或模塊的一部分,還可以以多個物理單元或模塊的組合實(shí)現(xiàn),這些邏輯單元或模塊本身的物理實(shí)現(xiàn)方式并不是最重要的,這些邏輯單元或模塊所實(shí)現(xiàn)的功能的組合是才解決本發(fā)明所提出的技術(shù)問題的關(guān)鍵。此外,為了突出本發(fā)明的創(chuàng)新部分,本發(fā)明上述各設(shè)備實(shí)施方式并沒有將與解決本發(fā)明所提出的技術(shù)問題關(guān)系不太密切的單元或模塊引入,這并不表明上述設(shè)備實(shí)施方式并不存在其它的單元或模塊。雖然通過參照本發(fā)明的某些優(yōu)選實(shí)施方式,已經(jīng)對本發(fā)明進(jìn)行了圖示和描述,但本領(lǐng)域的普通技術(shù)人員應(yīng)該明白,可以在形式上和細(xì)節(jié)上對其作各種改變,而不偏離本發(fā)明的精神和范圍。
1權(quán)利要求
1.一種多核處理芯片對視頻處理任務(wù)的處理方法,其特征在于,該芯片包括多個用于視頻處理的可編程模塊,一個用于控制所述可編程模塊的第一處理內(nèi)核,和至少一個用于產(chǎn)生待處理任務(wù)的其他處理內(nèi)核,所述方法包括以下步驟第一處理內(nèi)核為不同類別的任務(wù)分別建立任務(wù)隊列,供各所述其他處理內(nèi)核加入待處理任務(wù);第一處理內(nèi)核為每一個可編程模塊分別建立服務(wù)線程,并為每個服務(wù)線程注冊多個執(zhí)行要素,每個執(zhí)行要素包括一個任務(wù)隊列;各服務(wù)線程在空閑時按預(yù)先設(shè)定的優(yōu)先級查詢各任務(wù)隊列,將查到第一個非空任務(wù)隊列中的第一個任務(wù)交給對應(yīng)的可編程模塊處理。
2.根據(jù)權(quán)利要求I所述的多核處理芯片對視頻處理任務(wù)的處理方法,其特征在于,所述為每個服務(wù)線程注冊多個執(zhí)行要素的步驟中,所述執(zhí)行要素的注冊順序?yàn)槿蝿?wù)隊列處理的優(yōu)先級;所述各服務(wù)線程在空閑時按預(yù)先設(shè)定的優(yōu)先級查詢各任務(wù)隊列即所述各服務(wù)線程在空閑時按照該注冊順序查詢各任務(wù)隊列。
3.根據(jù)權(quán)利要求2所述的多核處理芯片對視頻處理任務(wù)的處理方法,其特征在于,所述執(zhí)行要素還包括用于處理任務(wù)的可編程模塊應(yīng)用程序,且至少有兩個任務(wù)隊列對應(yīng)同一個可編程模塊應(yīng)用程序。
4.根據(jù)權(quán)利要求2所述的多核處理芯片對視頻處理任務(wù)的處理方法,其特征在于,所述按預(yù)先設(shè)定的優(yōu)先級查詢各任務(wù)隊列,其查詢順序先后依次為主碼流編碼事件隊列、子碼流編碼事件隊列、移動偵測事件隊列和解碼事件隊列。
5.根據(jù)權(quán)利要求I至4中任一項(xiàng)所述的多核處理芯片對視頻處理任務(wù)的處理方法,其特征在于,所述各服務(wù)線程在空閑時按預(yù)先設(shè)定的優(yōu)先級查詢各任務(wù)隊列,將查到第一個非空任務(wù)隊列中的第一個任務(wù)交給對應(yīng)的可編程模塊處理的步驟,包括以下子步驟Al)初始化i = O ;A2)查詢第i個執(zhí)行要素中的任務(wù)隊列,如果查到,則轉(zhuǎn)入步驟A3),否則轉(zhuǎn)入步驟A8);A3)判斷任務(wù)命令中是否包含申請資源通道命令或釋放資源通道命令,如果是,則申請或釋放資源通道;A4)判斷資源通道句柄是否有效,如果是,則轉(zhuǎn)入步驟A6),否則轉(zhuǎn)入步驟A5);A5)設(shè)置任務(wù)隊列的狀態(tài)參數(shù)為“失敗”狀態(tài),此后返回步驟Al);A6)執(zhí)行第i個執(zhí)行要素中的應(yīng)用程序,將為任務(wù)命令、參數(shù)結(jié)構(gòu)體和資源通道句柄的參數(shù)進(jìn)行傳入,其中任務(wù)命令包括申請資源通道命令、釋放資源通道命令、重新配置參數(shù)命令和執(zhí)行任務(wù)處理命令;A7)根據(jù)應(yīng)用程序的返回結(jié)果將任務(wù)隊列狀態(tài)參數(shù)設(shè)為“失敗”或“成功”狀態(tài),此后返回步驟Al);AS)使i = i+Ι,如果i為注冊的執(zhí)行要素個數(shù),則轉(zhuǎn)入步驟A9),否則返回步驟A2);A9)休眠預(yù)定的時長,此后返回步驟Al)。
6.根據(jù)權(quán)利要求5所述的多核處理芯片對視頻處理任務(wù)的處理方法,其特征在于,所述資源通道獨(dú)立于任務(wù)通道;所述建立任務(wù)隊列的步驟之后,還包括以下步驟BI)所述其他處理內(nèi)核設(shè)置任務(wù)命令包含申請資源通道命令,同時將該命令的狀態(tài)參數(shù)設(shè)置為“等待”狀態(tài)和資源通道句柄設(shè)置為“空”,排入任務(wù)隊列;B2)若所述第一處理內(nèi)核完成任務(wù)處理,則將所述申請資源通道命令的狀態(tài)參數(shù)設(shè)置為非“等待”狀態(tài);B3)若所述申請資源通道命令的資源通道句柄仍為“空”,所述第一處理內(nèi)核任務(wù)處理時資源通道申請失敗,則所述其他處理內(nèi)核進(jìn)行異常處理,否則轉(zhuǎn)入步驟B4);B4)所述其他處理內(nèi)核設(shè)置任務(wù)命令包含執(zhí)行任務(wù)處理命令,并將該執(zhí)行任務(wù)處理命令的狀態(tài)參數(shù)設(shè)置為“等待”狀態(tài),其余參數(shù)因任務(wù)而異,排入任務(wù)隊列;B5)所述第一處理內(nèi)核完成任務(wù)處理,則將所述執(zhí)行任務(wù)處理命令的狀態(tài)參數(shù)設(shè)置為非“等待”狀態(tài),所述其他處理內(nèi)核處理所述第一處理內(nèi)核所返回的結(jié)果,若任務(wù)處理未結(jié)束,則返回步驟B4),否則轉(zhuǎn)入步驟B6);B6)所述其他處理內(nèi)核設(shè)置任務(wù)命令包含釋放資源通道命令,同時將該釋放資源通道命令中的狀態(tài)參數(shù)設(shè)置為“等待”狀態(tài),排入任務(wù)隊列;B7)所述第一處理內(nèi)核完成任務(wù)處理,則將釋放資源通道命令的狀態(tài)參數(shù)設(shè)置為非“等待”狀態(tài);B8)所述其他處理內(nèi)核的任務(wù)處理結(jié)束,并等待任務(wù)重新開始,此后返回步驟BI)。
7.一種多核處理芯片對視頻處理任務(wù)的處理系統(tǒng),其特征在于,該芯片包括多個用于視頻處理的可編程模塊,一個用于控制可編程模塊的第一處理內(nèi)核,和至少一個用于產(chǎn)生待處理任務(wù)的其他處理內(nèi)核,所述第一處理內(nèi)核包括以下子單元任務(wù)建立子單元,用于為不同類別的任務(wù)分別建立任務(wù)隊列,供各其他處理內(nèi)核加入待處理任務(wù);線程建立子單元,用于為每一個可編程模塊分別建立服務(wù)線程;元素注冊子單元,用于為所述線程建立子單元所建立的每個服務(wù)線程注冊多個執(zhí)行要素,每個執(zhí)行要素包括一個任務(wù)隊列;任務(wù)查詢子單元,用于在所述線程建立子單元所建立的各服務(wù)線程在空閑時按預(yù)先設(shè)定的優(yōu)先級查詢所述任務(wù)建立子單元所建立的各任務(wù)隊列,將查到第一個非空任務(wù)隊列中的第一個任務(wù)交給對應(yīng)的可編程模塊處理。
8.根據(jù)權(quán)利要求7所述的多核處理芯片對視頻處理任務(wù)的處理系統(tǒng),其特征在于,所述元素注冊子單元為每個服務(wù)線程注冊多個執(zhí)行要素時,執(zhí)行要素的注冊順序?yàn)槿蝿?wù)隊列處理的優(yōu)先級;所述任務(wù)查詢子單元在各服務(wù)線程空閑時按預(yù)先設(shè)定的優(yōu)先級查詢各任務(wù)隊列過程中,各服務(wù)進(jìn)程在空閑時,按照該注冊順序查詢各任務(wù)隊列。
9.根據(jù)權(quán)利要求7所述的多核處理芯片對視頻處理任務(wù)的處理系統(tǒng),其特征在于,所述執(zhí)行要素還包括用于處理任務(wù)的可編程模塊應(yīng)用程序,且至少有兩個任務(wù)隊列對應(yīng)同一個可編程模塊應(yīng)用程序。
10.根據(jù)權(quán)利要求7至9中任一項(xiàng)所述的多核處理芯片對視頻處理任務(wù)的處理系統(tǒng),其特征在于,所述任務(wù)隊列根據(jù)優(yōu)先級,先后依次為主碼流編碼事件隊列、子碼流編碼事件隊列、移動偵測事件隊列和解碼事件隊列。
全文摘要
本發(fā)明涉及視頻處理領(lǐng)域,公開了一種多核處理芯片對視頻處理任務(wù)的處理方法及其系統(tǒng)。該方法及其系統(tǒng)提高了高負(fù)荷下HDVICP的使用率,并能夠支持針對任務(wù)隊列的優(yōu)先級配置。本發(fā)明中,方法包括以下步驟第一處理內(nèi)核根據(jù)任務(wù)類別建立任務(wù)隊列,供各其他處理內(nèi)核加入待處理任務(wù);第一處理內(nèi)核為每一個可編程模塊分別建立服務(wù)線程,并為每個服務(wù)線程注冊多個執(zhí)行要素,每個執(zhí)行要素包括一個任務(wù)隊列;各服務(wù)線程在空閑時按預(yù)先設(shè)定的優(yōu)先級查詢各任務(wù)隊列,將查到第一個非空任務(wù)隊列中的第一個任務(wù)交給對應(yīng)的可編程模塊處理。
文檔編號G06F9/46GK102609306SQ20121003404
公開日2012年7月25日 申請日期2012年2月15日 優(yōu)先權(quán)日2012年2月15日
發(fā)明者師恩義, 錢學(xué)鋒, 黃田 申請人:杭州海康威視數(shù)字技術(shù)股份有限公司