一種多核處理器中視頻并行解碼的控制方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及視頻解碼領(lǐng)域,尤其涉及一種多核處理器中視頻并行解碼的控制方法和裝置。
【背景技術(shù)】
[0002]隨著現(xiàn)代科技的高速發(fā)展,多媒體通信在信息化過程中得到日益廣泛、深入的應(yīng)用,已經(jīng)成為通信領(lǐng)域中的主要通信方式。以視頻通信為代表的多媒體通信一一特別是移動視頻通信,更是現(xiàn)代社會生活中的一種非常重要的交流手段。為了獲得高質(zhì)量和高分辨率的視頻內(nèi)容,視頻編碼效率不斷提高,與之相應(yīng)地,視頻編解碼的復(fù)雜度也大幅提升。在這個充斥著視頻內(nèi)容的時代,迫切需要提高視頻解碼的效率。由此,相比單核處理器,多核處理器以其高效的運算性能及在低功耗方面的顯著優(yōu)勢,給視頻解碼效率的提高帶來了可能性。如何在多核平臺上實現(xiàn)并行解碼,已經(jīng)引起相關(guān)領(lǐng)域研發(fā)人員越來越多的關(guān)注。
[0003]現(xiàn)有技術(shù)中,在多核平臺上實現(xiàn)并行解碼,一般著重于在一、兩種多核處理平臺或內(nèi)核數(shù)固定的嵌入式平臺上實現(xiàn),這兩種實現(xiàn)方法對擁有不同內(nèi)核數(shù)量的多核處理器平臺不具備良好的兼容性和適配性,例如,視頻解碼在雙核處理器平臺上有著很高的加速比,但運行在配置四核或更多處理器內(nèi)核的平臺上卻仍然只能使用兩個核完成解碼;或者,即使能夠在更多的核上實現(xiàn)解碼,但由于每個核只能執(zhí)行解碼流程中一個固定的步驟,而導(dǎo)致當(dāng)一個核沒有任務(wù)時,該核的資源被浪費,具體的,如滿足H.264標準進行編碼的視頻流,其解碼的流程至少包括以下六個解碼子流程:熵解碼、反量化、反變換、運動補償、幀內(nèi)預(yù)測和環(huán)路濾波,在現(xiàn)有技術(shù)中使用一個核去完成熵解碼而用其它的多個核完成其余的解碼子流程,當(dāng)用于熵解碼的核沒有解碼任務(wù)時,該核的資源則不能被利用,從而就造成核資源的浪費。綜上,現(xiàn)有的多核并行解碼的方法,都未能有效利用多核處理器的資源,而導(dǎo)致解碼效率低下。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的是提供一種多核處理器中視頻并行解碼的控制方法和裝置,以克服相關(guān)技術(shù)中未能有效利用多核處理器的資源導(dǎo)致解碼效率低的問題。
[0005]本發(fā)明提供一種多核處理器中視頻并行解碼的控制方法,包括:
[0006]獲取執(zhí)行解碼任務(wù)的每個核的負載,其中執(zhí)行解碼任務(wù)的每個核用于完成解碼流程中的至少一個解碼子流程,所有執(zhí)行解碼任務(wù)的核并行工作,且所有執(zhí)行解碼任務(wù)的核共同完成所有的解碼子流程;
[0007]當(dāng)確定至少有一個核超負載時,對執(zhí)行解碼任務(wù)的核所執(zhí)行的解碼子流程進行調(diào)整,直至每個核都不超負載為止。
[0008]其中,所述解碼流程包括第一解碼流程集合和第二解碼流程集合,所述第一解碼流程集合和所述第二解碼流程集合均各自包括至少一個解碼子流程,且,所述第一解碼流程集合和所述第二解碼流程集合沒有交集;
[0009]所述執(zhí)行解碼任務(wù)的核包括:執(zhí)行所述第一解碼流程集合的第一類核,和,執(zhí)行所述第二解碼流程集合的第二類核。
[0010]其中,根據(jù)以下方式確定超負載:
[0011]當(dāng)?shù)谝活惡说目傌撦d與第二類核的總負載的差距大于預(yù)設(shè)差距時,確定總負載較大的一類核超負載;
[0012]所述對執(zhí)行解碼任務(wù)的核所執(zhí)行的解碼子流程進行調(diào)整,通過以下方式中的至少一種方式實現(xiàn):
[0013]方式一:指示將未超負載的一類核中滿足預(yù)設(shè)調(diào)整條件的至少一個核調(diào)整為超負載的一類核,并執(zhí)行超負載的一類核的解碼任務(wù),其中,所述預(yù)設(shè)調(diào)整條件為當(dāng)前處于休眠狀態(tài)或最早能夠完成當(dāng)前正在執(zhí)行的解碼任務(wù);
[0014]方式二:指示超負載的一類核將自身所執(zhí)行的部分解碼子流程調(diào)整至未超負載的一類核中執(zhí)行。
[0015]其中,所述第一解碼流程集合中的一個元素至少為熵解碼;
[0016]所述獲取執(zhí)行解碼任務(wù)的每個核的負載之前,所述方法還包括:
[0017]根據(jù)待解碼視頻流的編碼方式和每一幀圖像中可獨立熵解碼的最小數(shù)據(jù)塊的數(shù)量和類型,確定所述待解碼視頻流的每一幀圖像在所述第一類核中的解碼方式和所述第二類核中的解碼方式,其中,可獨立熵解碼的最小數(shù)據(jù)塊為對該數(shù)據(jù)塊執(zhí)行熵解碼時不需要所述待解碼視頻流中除該數(shù)據(jù)塊之外的其他數(shù)據(jù)的最小數(shù)據(jù)塊;
[0018]其中,所述第一類核的解碼方式包括以下中的至少一種:幀級并行解析方式、條帶級并行解析方式、WPP并行解析方式;
[0019]所述第二類核的解碼方式包括以下中的至少一種:幀級并行重構(gòu)方式、條帶級并行重構(gòu)方式、塊/塊行級并行重構(gòu)方式。
[0020]其中,所述當(dāng)?shù)谝活惡说目傌撦d與第二類核的總負載的差距大于預(yù)設(shè)差距時,確定總負載較大的一類核超負載,包括:
[0021]預(yù)測第一類核中待完成的解碼任務(wù)所需的解碼時間,和第二類核中待完成的解碼任務(wù)所需的解碼時間;
[0022]判斷第一類核中待完成的解碼任務(wù)所需的解碼時間與第二類核中待完成的解碼任務(wù)所需的解碼時間的時間差是否大于預(yù)設(shè)時間差;
[0023]當(dāng)判斷結(jié)果為是時,則所需解碼時間較長的一類核超負載。
[0024]其中,所述方法還包括:
[0025]針對執(zhí)行解碼任務(wù)的每個核,當(dāng)監(jiān)測到該核沒有待執(zhí)行的解碼任務(wù)且未確定解碼任務(wù)已結(jié)束時,指示該核進入休眠狀態(tài)。
[0026]另一方面,本發(fā)明還提供一種多核處理器中視頻并行解碼的控制裝置,所述裝置包括:
[0027]獲取模塊,用于獲取執(zhí)行解碼任務(wù)的每個核的負載,其中執(zhí)行解碼任務(wù)的每個核用于完成解碼流程中的至少一個解碼子流程,所有執(zhí)行解碼任務(wù)的核并行工作,且所有執(zhí)行解碼任務(wù)的核共同完成所有的解碼子流程;
[0028]調(diào)整模塊,用于當(dāng)確定至少有一個核超負載時,對執(zhí)行解碼任務(wù)的核所執(zhí)行的解碼子流程進行調(diào)整,直至每個核都不超負載為止。
[0029]所述解碼流程由第一解碼流程集合和第二解碼流程集合組成,所述第一解碼流程集合和所述第二解碼流程集合均各自包括至少一個解碼子流程,且,所述第一解碼流程集合和所述第二解碼流程集合沒有交集;
[0030]所述執(zhí)行解碼任務(wù)的核包括:執(zhí)行所述第一解碼流程集合的第一類核,和,執(zhí)行所述第二解碼流程集合的第二類核。
[0031]所述裝置還包括:
[0032]超負載確定模塊,用于當(dāng)?shù)谝活惡说目傌撦d與第二類核的總負載的差距大于預(yù)設(shè)差距時,確定總負載較大的一類核超負載;
[0033]所述調(diào)整模塊,包括:
[0034]第一調(diào)整單元,用于指示將未超負載的一類核中滿足預(yù)設(shè)調(diào)整條件的至少一個核調(diào)整為超負載的一類核,并執(zhí)行超負載的一類核的解碼任務(wù),其中,所述預(yù)設(shè)調(diào)整條件為當(dāng)前處于休眠狀態(tài)或最早能夠完成當(dāng)前正在執(zhí)行的解碼任務(wù);
[0035]第二調(diào)整單元,用于指示超負載的一類核將自身所執(zhí)行的部分解碼子流程調(diào)整至未超負載的一類核中執(zhí)行。
[0036]所述裝置還包括:
[0037]解碼方式確定模塊,用于所述第一解碼流程集合中至少包括熵解碼時;所述獲取模塊獲取執(zhí)行解碼任務(wù)的每個核的負載之前,根據(jù)待解碼視頻流的編碼方式和每一幀圖像中可獨立熵解碼的最小數(shù)據(jù)塊的數(shù)量和類型,確定所述待解碼視頻流的每一幀圖像在所述第一類核中的解碼方式和所述第二類核中的解碼方式,其中,可獨立熵解碼的最小數(shù)據(jù)塊為對該數(shù)據(jù)塊執(zhí)行熵解碼時不需要所述待解碼視頻流中除該數(shù)據(jù)塊之外的其他數(shù)據(jù)的最小數(shù)據(jù)塊;
[0038]其中,所述第一類核的解碼方式包括以下中的至少一種:幀級并行解析方式、條帶級并行解析方式、WPP并行解析方式;
[0039]所述第二類核的解碼方式包括以下中的至少一種:幀級并行重構(gòu)方式、條帶級并行重構(gòu)方式、塊/塊行級并行重構(gòu)方式。
[0040]所述超負載確定模塊包括:
[0041]預(yù)測單元,用于預(yù)測第一類核中待完成的解碼任務(wù)所需的解碼時間,和第二類核中待完成的解碼任務(wù)所需的解碼時間;
[0042]判斷單元,用于判斷第一類核中待完成的解碼任務(wù)所需的解碼時間與第二類核中待完成的解碼任務(wù)所需的解碼時間的時間差是否大于預(yù)設(shè)時間差;
[0043]確定單元,用于當(dāng)判斷結(jié)果為是時,則所需解碼時間較長的一類核超負載。
[0044]所述裝置還包括:
[0045]休眠模塊,用于針對執(zhí)行解碼任務(wù)的每個核,當(dāng)監(jiān)測到該核沒有待執(zhí)行的解碼任務(wù)且未確定解碼任務(wù)已結(jié)束時,指示該核進入休眠狀態(tài)。
[0046]本發(fā)明至少具有以下有益效果:在多核處理器中實現(xiàn)并行解碼,通過將解碼流程預(yù)先分配給至少兩個核,并根據(jù)每個核的負載情況,改變至少一個核所執(zhí)行的解碼流程,實現(xiàn)對核資源的合理分配,從而提高資源的利用率,進而提高并行解碼的效率。此外,本發(fā)明實施例中,預(yù)先將解碼流程合理地分配為第一流程集合和第二流程集合,并由第一類核執(zhí)行第一流程集合,第二類核執(zhí)行第二流程集合,視第一類核和第二類核的總負載情況,通過調(diào)整第一類核的數(shù)量、或第二類核的數(shù)量,又或者通過改變不同流程集合內(nèi)所包含的解碼流程的子流程,降低超負載的核的負載,并提高低負載核的負載,從而進一步實現(xiàn)對多核處理器的資源的合理利用,提高并行解碼的效率。再一方面,進一步的,本發(fā)明實施例中,第一類核對應(yīng)解析任務(wù),第二類核對應(yīng)重構(gòu)任務(wù),通過分析待解碼視頻流的特性,確定出可獨立進行解析的數(shù)據(jù)塊,例如可獨立進行熵解碼的最小數(shù)據(jù)塊,然后為每一類核根據(jù)待處理視頻流的特性,確定出適用的并行解碼方式,使得第一類核和第二類核之間可以以不同的并行解碼方式執(zhí)行解碼任務(wù),從而進一步提高并行解碼的效率。
[0047]應(yīng)當(dāng)理解的是,以上的一般描述和后文的細節(jié)描述僅是示例性和解釋性的,并不能限制本發(fā)明。
【附圖說明】
[0048]圖1為本發(fā)明實施例中多核處理器中視頻并行解碼的控制方法的示例性流程圖之一;
[0049]圖2為本發(fā)明實施例中一種解碼流程示意圖;
[0050]圖3為本發(fā)明實施例中執(zhí)行解碼任務(wù)的核所執(zhí)行的解碼子流程的示意圖;
[0051]圖4為本發(fā)明實施例中第一類核的解碼方式的示意圖;
[0052]圖5為本發(fā)明實施例中第二類核的解碼方式的示意圖;
[0053]圖6為本發(fā)明實施例中第一類核的解碼方式和第二類核的解碼方式進行組合的示意圖;<