日韩成人黄色,透逼一级毛片,狠狠躁天天躁中文字幕,久久久久久亚洲精品不卡,在线看国产美女毛片2019,黄片www.www,一级黄色毛a视频直播

視頻解碼方法、裝置及終端設備的制造方法

文檔序號:10627199閱讀:551來源:國知局
視頻解碼方法、裝置及終端設備的制造方法
【專利摘要】本申請公開了一種視頻解碼方法、裝置及終端設備,其通過創(chuàng)建并啟動多個解碼線程,各個解碼線程相互獨立且并發(fā)運行,使得同一時刻可以有多個畫面組被解碼,相對于現有通過串行方式進行解碼的方法,解碼速度也相應提高多倍,從而可以實現數據量較大的高清視頻文件的在線播放,避免卡頓現象。
【專利說明】
視頻解碼方法、裝置及終端設備
技術領域
[0001]本申請涉及視頻處理技術領域,尤其涉及一種視頻解碼方法、裝置及終端設備?!颈尘凹夹g】
[0002]隨著互聯網技術的發(fā)展,利用可以訪問互聯網的終端,用戶不僅可以瀏覽文字、圖片信息,還可以觀看互聯網中的視頻文件;相對于將視頻文件完全下載至終端后再觀看,用戶更傾向直接通過瀏覽器或專用播放器在線觀看互聯網中的視頻文件,不僅方便快捷,還可以節(jié)省終端的存儲空間。由于播放視頻文件前需要對其進行解碼操作,以得到每個視頻幀對應的圖像,故為實現在線播放視頻文件,終端需要同時執(zhí)行解碼和播放兩種操作,解碼得到的各幀圖像直接加入播放隊列進行播放。
[0003]現有視頻解碼方法以畫面組(Group of Pictures,G0P)為單位,通過串行方式進行解碼,即同一時刻只解碼一個G0P,故視頻文件的質量越高,即單位時長的視頻文件包含的信息量越大,所需的解碼時間越長,即解碼速度越低。相應的,在應用現有解碼技術執(zhí)行高清視頻的在線播放時,極易因視頻解碼速度小于播放速度而導致視頻播放卡頓的現象。 因此,如何提高視頻解碼速度已成為一個亟需解決的技術問題。
【發(fā)明內容】

[0004]為克服相關技術中存在的問題,本申請?zhí)峁┮环N視頻解碼方法、裝置及終端設備。
[0005]本申請第一方面提供一種視頻解碼方法;該方法包括:
[0006]創(chuàng)建并啟動多個解碼線程;
[0007]依次讀取待解碼視頻的各個視頻幀;
[0008]當讀取到的多個視頻幀構成一個畫面組時,則觸發(fā)一個處于空閑狀態(tài)的解碼線程對所述畫面組執(zhí)行解碼操作,得到所述畫面組中各個視頻幀對應的圖像。
[0009]結合第一方面,在第一方面的第一種可行的實施方式中,所述視頻解碼方法還包括:
[0010]創(chuàng)建幀存儲隊列并將讀取到的視頻幀存入所述幀存儲隊列;
[0011]其中,所述幀存儲隊列的個數大于所述解碼線程的個數,且屬于同一個畫面組的各個視頻幀存入同一個幀存儲隊列。
[0012]結合第一方面,或者第一方面的第一種可行的實施方式,在第一方面的第二種可行的實施方式中,所述觸發(fā)一個處于空閑狀態(tài)的解碼線程對所述畫面組執(zhí)行解碼操作包括以下任意一種:
[0013]觸發(fā)一個處于空閑狀態(tài)的解碼線程控制軟解碼器對所述畫面組進行解碼,和,觸發(fā)一個處于空閑狀態(tài)的解碼線程控制硬解碼器對所述畫面組進行解碼。
[0014]結合第一方面,或者第一方面的第一種可行的實施方式,在第一方面的第三種可行的實施方式中,所述視頻解碼方法還包括:
[0015]將同一個畫面組解碼得到的圖像存入同一個待渲染隊列,并根據每個畫面組中的關鍵視頻幀對應的時間戮對各個待植染隊列進彳丁排序;
[0016]根據排序結果對所述待渲染隊列中的圖像執(zhí)行渲染操作。
[0017]本申請第二方面提供一種視頻解碼裝置;該裝置包括:
[0018]線程配置單元,用于創(chuàng)建并啟動多個解碼線程;
[0019]視頻讀取單元,用于讀取待解碼視頻的各個視頻幀;
[0020]解碼控制單元,用于當讀取到的多個視頻幀構成一個畫面組時,觸發(fā)一個處于空閑狀態(tài)的解碼線程對所述畫面組執(zhí)行解碼操作,得到所述畫面組中各個視頻幀對應的圖像。
[0021]結合第二方面,在第二方面的第一種可行的實施方式中,所述視頻解碼裝置還包括:
[0022]解碼隊列控制單元,用于創(chuàng)建幀存儲隊列并將讀取到的視頻幀存入所述幀存儲隊列;
[0023]其中,所述幀存儲隊列的個數大于所述解碼線程的個數,且屬于同一畫面組的各個視頻幀存入同一個幀存儲隊列。
[0024]結合第二方面,或者第二方面的第一種可行的實施方式,在第二方面的第二種可行的實施方式中,所述解碼控制單元包括以下至少一種:
[0025]第一控制子單元,用于觸發(fā)一個處于空閑狀態(tài)的解碼線程控制軟解碼器對所述畫面組進行解碼;
[0026]第二控制子單元,用于觸發(fā)一個處于空閑狀態(tài)的解碼線程控制硬解碼器對所述畫面組進行解碼。
[0027]結合第二方面,或者第二方面的第一種可行的實施方式,在第二方面的第三種可行的實施方式中,所述視頻解碼裝置還包括:
[0028]排序單元,用于將同一個畫面組解碼得到的圖像存入同一個待渲染隊列,并根據每個畫面組中的關鍵視頻幀對應的時間戳對各個待渲染隊列進行排序;
[0029]渲染單元,用于根據排序結果對所述待渲染隊列中的圖像執(zhí)行渲染操作。
[0030]本申請第三方面提供一種終端設備;該終端設備包括:
[0031]處理器,以及用于存儲處理器可執(zhí)行指令的存儲器;
[0032]其中,所述處理器被配置為:
[0033]創(chuàng)建并啟動多個解碼線程;
[0034]讀取待解碼視頻的各個視頻幀;
[0035]當讀取到的多個視頻幀構成一個畫面組時,觸發(fā)一個處于空閑狀態(tài)的解碼線程對所述畫面組執(zhí)行解碼操作,得到所述畫面組中各個視頻幀對應的圖像。
[0036]結合第三方面,在第三方面的第一種可行的實施方式中,所述處理器還被配置為:
[0037]創(chuàng)建幀存儲隊列并將讀取到的視頻幀存入所述幀存儲隊列;
[0038]其中,所述幀存儲隊列的個數大于所述解碼線程的個數,且屬于同一個畫面組的各個視頻幀存入同一個幀存儲隊列。
[0039]結合第三方面,或者第三方面的第一種可行的實施方式,在第三方面的第二種可行的實施方式中,為實現觸發(fā)一個處于空閑狀態(tài)的解碼線程對所述畫面組執(zhí)行解碼操作,所述處理器被配置為以下任意一種:
[0040]觸發(fā)一個處于空閑狀態(tài)的解碼線程控制軟解碼器對所述畫面組進行解碼,和,觸發(fā)一個處于空閑狀態(tài)的解碼線程控制硬解碼器對所述畫面組進行解碼。
[0041]結合第三方面,或者第三方面的第一種可行的實施方式,在第三方面的第三種可行的實施方式中,所述處理器還被配置為:
[0042]將同一個畫面組解碼得到的圖像存入同一個待渲染隊列,并根據每個畫面組中的關鍵視頻幀對應的時間戮對各個待植染隊列進彳丁排序;
[0043]根據排序結果對所述待渲染隊列中的圖像執(zhí)行渲染操作。
[0044]由以上技術方案可知,本申請實施例通過創(chuàng)建并啟動多個解碼線程,各個解碼線程相互獨立且并發(fā)運行,使得同一時刻可以有多個畫面組被解碼,相對于現有通過串行方式進行解碼的方法,解碼速度也相應提高多倍,從而可以實現數據量較大的高清視頻文件的在線播放,避免卡頓現象。
[0045]應當理解的是,以上的一般描述和后文的細節(jié)描述僅是示例性和解釋性的,并不能限制本申請?!靖綀D說明】
[0046]此處的附圖被并入說明書中并構成本說明書的一部分,示出了符合本發(fā)明的實施例,并與說明書一起用于解釋本發(fā)明的原理。
[0047]圖1是根據一示例性實施例示出的一種視頻解碼方法的流程圖。
[0048]圖2是根據另一示例性實施例示出的一種視頻解碼方法的流程圖。
[0049]圖3是根據一示例性實施例示出的一種視頻解碼裝置的框圖。
[0050]圖4是根據另一示例性實施例示出的一種視頻解碼裝置的框圖。
[0051]圖5是根據又一示例性實施例示出的一種視頻解碼裝置的框圖。
[0052]圖6是根據一示例性實施例示出的一種終端設備的框圖?!揪唧w實施方式】
[0053]這里將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本發(fā)明相一致的所有實施方式。相反,它們僅是與如所附權利要求書中所詳述的、本發(fā)明的一些方面相一致的裝置和方法的例子。
[0054]圖1為本申請實施例提供的一種視頻解碼方法的流程圖。如圖1所示,該方法包括以下步驟。
[0055]S11、創(chuàng)建并啟動多個解碼線程。
[0056]線程即執(zhí)行中的程序指令集合;一個程序的執(zhí)行可以劃分為一個或多個線程,屬于同一個程序的多個線程之間相互獨立且可以并發(fā)執(zhí)行。相應的,本申請實施例所述的解碼線程用于控制解碼指令序列的執(zhí)行,每個解碼線程每運行一次,即完成一次解碼操作。上述創(chuàng)建解碼線程具體包括設置線程入口、申請數據存儲空間等操作;啟動解碼線程包括初始化各個解碼線程。本實施例需要創(chuàng)建的解碼線程的具體個數可以根據終端的CPU、內存、 視頻的分辨率等數據動態(tài)設定。
[0057]S12、依次讀取待解碼視頻的各個視頻幀。
[0058]S13、當讀取到的多個視頻幀構成一個G0P時,觸發(fā)一個處于空閑狀態(tài)的解碼線程對所述G0P執(zhí)行解碼操作,得到所述G0P中各個視頻幀對應的圖像。
[0059]本實施例中,終端依次讀取待解碼視屏的各個視頻幀,每當讀取到的視頻幀構成一個完整的G0P,則確定并觸發(fā)一個處于空閑狀態(tài)的解碼線程對該G0P執(zhí)行解碼操作,得到該G0P中各個視頻幀對應的圖像。其中,一個G0P中包含的視頻幀個數可以根據視頻編碼方式確定,一般為1至15個。同一個解碼線程可以先后對多個G0P進行解碼,相應的,其狀態(tài)也在工作狀態(tài)和空閑狀態(tài)之間反復切換:如果解碼線程當前未執(zhí)行解碼操作,則該解碼線程處于空閑狀態(tài);當該解碼線程被觸發(fā)對某個G0P執(zhí)行解碼操作時,其狀態(tài)切換為工作狀態(tài),當對該G0P的解碼操作執(zhí)行完畢時,該解碼線程的狀態(tài)又恢復至空閑狀態(tài)。
[0060]假設預先設定并發(fā)執(zhí)行的解碼線程最多為2個,待解碼視頻中每個G0P所包含的視頻幀個數均為10個,在此情境下,終端在接收到視頻解碼請求(或視頻播放請求)后,創(chuàng)建并啟動兩個解碼線程(為便于描述,下文以第一解碼線程和第二解碼線程區(qū)分),并逐幀讀取待解碼視頻;當讀取完第一個G0P (即第1至第10個視頻幀)時,選擇第一解碼線程對第一個G0P執(zhí)行解碼操作(由于此時兩個解碼線程均處于空閑狀態(tài),故也可以選擇第二解碼線程);當讀取完第二個G0P (即第11至第20個視頻幀)時,選擇處于空閑狀態(tài)的第二解碼線程對第二個G0P執(zhí)行解碼操作;當讀取完第3個G0P時,如果存在處于空閑狀態(tài)的解碼線程,則觸發(fā)該處于空閑狀態(tài)的解碼線程對第3個G0P執(zhí)行解碼操作,如果不存在處于空閑狀態(tài)的解碼線程,則暫時不解碼第3個G0P并持續(xù)檢測兩個解碼線程是否切換至空閑狀態(tài), 假設第一解碼線程先完成解碼操作并切換至空閑狀態(tài),則觸發(fā)第一解碼線程對第3個G0P 執(zhí)行解碼操作,以此類推??梢姡緦嵤├?,同一時刻可以有兩個G0P被解碼,使得解碼速度提高為現有視頻解碼方法的兩倍,且創(chuàng)建的解碼線程個數越多,解碼速度提高幅度越大。 因此,實際應用中,可以結合處理器的性能以及終端需要解碼的視頻文件的質量來確定解碼線程的個數,從而保證解碼速度大于視頻文件的播放速度,避免在線播放時出現卡頓現象。
[0061]由以上技術方案可知,本申請實施例通過創(chuàng)建并啟動多個解碼線程,各個解碼線程相互獨立且并發(fā)運行,使得同一時刻可以有多個G0P被解碼,相對于現有通過串行方式進行解碼的方法,解碼速度也相應提高多倍,從而可以實現數據量較大的高清視頻文件的在線播放,避免卡頓現象。
[0062]本申請實施例中,終端(如智能手機、平板電腦等)可以直接在瀏覽器所展示的網頁內在線播放視頻文件,也可以安裝相應的專用視頻播放軟件來執(zhí)行視頻在線播放。特別的,對于通過瀏覽器執(zhí)行視頻在線播放的情況,當終端接收到播放請求時,在瀏覽器內創(chuàng)建一個播放器實例,該播放器實例創(chuàng)建N個解碼線程以及一個用于讀取視頻幀的結構體,即視頻格式上下文(AVFormatContext);其中,N為預設解碼線程個數,AVFormatContext用于記錄讀取到的待解碼視頻的格式信息,包括視頻幀的個數、幀數據等。
[0063]在本申請一個可行的實施例中,解碼線程既可以控制軟解碼器對G0P執(zhí)行軟解操作,也可以控制硬解碼器對G0P執(zhí)行硬解操作;其中,為提高解碼速度,可以優(yōu)先選擇執(zhí)行解碼效率更高的硬解操作,當硬解碼器被占用時,執(zhí)行軟解操作。所述硬解碼器一般為解碼芯片,軟解操作具體可以為:解碼線程調用視頻解碼上下文(AVCodecContext)執(zhí)行解碼操作。其中,AVCodecContext用于記錄視頻幀的編碼信息,如視頻的寬度、高度、編碼類型等;AVCodecContext可以復用,完成一個G0P的解碼后,還可以用來解碼下一個G0P ; AVCodecContext的個數M可以根據解碼線程的個數N以及硬解碼器的個數P確定,即M = N-P〇
[0064]圖2為本申請另一個實施例提供的視頻解碼方法的流程圖。參照圖2,該方法包括如下步驟。
[0065]S21、創(chuàng)建并啟動多個解碼線程。
[0066]S22、創(chuàng)建幀存儲隊列;其中,所述幀存儲隊列的個數大于所述解碼線程的個數。
[0067]S23、依次讀取待解碼視頻的各個視頻幀,并將讀取到的屬于同一個G0P的各個視頻幀存入同一個幀存儲隊列。
[0068]S24、對于存儲有完整G0P的幀存儲隊列,判斷是否存在處于空閑狀態(tài)的解碼線程,如果存在,則執(zhí)行步驟S25,否則再次執(zhí)行步驟S24。
[0069]S25、觸發(fā)所述處于空閑狀態(tài)的解碼線程對所述幀存儲隊列中G0P執(zhí)行解碼操作, 得到所述G0P中各個視頻幀對應的圖像。
[0070]本申請實施例通過隊列的形式緩存待解碼的視頻幀,具體存儲方式為,屬于同一個G0P的各個視頻幀存入同一個幀存儲隊列,屬于不同G0P的視頻幀存入不同的幀存儲隊列,即一個幀存儲隊列中最多只存儲屬于同一個G0P的各個視頻幀。例如,假設待解碼視頻中每個G0P所包含的視頻幀個數均為10個,為便于描述,各個幀存儲隊列依次命名為第一幀存儲隊列、第二幀存儲隊列等,則第1至第10個視頻幀均屬于第一個G0P,讀取后直接將其存入第一幀存儲隊列,第11至第20個視頻幀屬于第二個G0P,讀取后直接存入第二幀存儲隊列,依此類推。
[0071]進一步的,由于一個解碼線程一次只能解碼一個G0P,故當某個幀存儲隊列中存儲的視頻幀構成一個完整的G0P時,需要選擇一個處于空閑狀態(tài)的解碼線程對該幀存儲隊列中的各個視頻幀進行解碼,如果當前時刻不存在處于空閑狀態(tài)的解碼線程,則暫不處理該幀存儲隊列中的G0P,以等待至少一個解碼線程完成當前的解碼操作(即至少一個解碼線程切換至空閑狀態(tài))。
[0072]解碼完成后,相應的幀存儲隊列被清空,以用來存儲其他待解碼的視頻幀。為充分利用各個解碼線程,幀存儲隊列的個數應大于解碼線程的個數,即假設預設解碼線程為N 個,則步驟S22中需要至少創(chuàng)建(N+1)個幀存儲隊列,從而在解碼過程中的任何時刻都至少有一個幀存儲隊列等待解碼,一旦有解碼線程完成一次解碼操作,就可以繼續(xù)對等待解碼的幀存儲隊列中的視頻幀執(zhí)行解碼操作。
[0073]例如,預設的解碼線程個數為2個,以下分別稱為第一解碼線程和第二解碼線程, 則幀存儲隊列至少創(chuàng)建3個,以下分別稱為第一幀存儲隊列、第二幀存儲隊列和第三幀存儲隊列;開始解碼時,通過第一幀存儲隊列存儲待解碼視頻的第一個G0P ;存儲完第一個 G0P后,通過第二幀存儲隊列存儲第二個G0P,并將第一幀存儲隊列與第一解碼線程關聯, 以通過第一解碼線程對第一個G0P進行解碼;存儲完第二個G0P后,通過第三幀存儲隊列存儲第三個G0P,并將第二幀存儲隊列與第二解碼線程關聯,以通過第二解碼線程對第二個 G0P進行解碼;存儲完第三個G0P后,如果兩個解碼線程未完成解碼操作,則第三幀存儲隊列處于等待狀態(tài);假設第一解碼線程先完成對第一個G0P的解碼操作,則處于等待狀態(tài)的第三幀存儲隊列通過第一解碼線程進行解碼,同時第一幀存儲隊列被清空,繼續(xù)存儲第四個GOP,如此循環(huán)往復。
[0074]由以上技術方案可知,本申請實施例通過復用多個解碼線程和幀存儲隊列,不僅可以增加同一時刻被解碼的視頻幀(或G0P)個數,還可以減少視頻幀讀取耗時,使得每個解碼線程都被充分利用,提高了解碼速度,可以實現數據量較大的高清視頻文件的在線播放,避免卡頓現象。
[0075]在本申請有一個可行的實施例中,基于上述解碼方法,在解碼得到G0P對應的各幀圖像后(即步驟S13和步驟S25),播放各幀圖像之前,還需要對各幀圖像執(zhí)行渲染操作, 具體可以包括如下步驟:
[0076]將同一個G0P解碼得到的圖像存入同一個待渲染隊列,并根據每個G0P中的關鍵視頻幀對應的時間戳對各個待渲染隊列進行排序;
[0077]根據排序結果對所述待渲染隊列中的圖像執(zhí)行渲染操作。
[0078]如上所述,本申請實施例中,多個解碼線程同時對多個G0P執(zhí)行解碼操作,且不同 G0P解碼所用的時間不盡相同,有可能使得對應的時間戳較晚的G0P較早的完成解碼,但播放圖像時需要按照時間戳的先后順序播放各個G0P,故以上渲染步驟中,首先根據時間戳對各個待渲染隊列排序,再根據排序結果,按時間戳由小到大的順序依次渲染各個待渲染隊列中的圖像,渲染后的圖像直接加入播放隊列,使得播放隊列中的圖像也按時間戳由小到大排列,保證視頻被正確播放。
[0079]另外,本實施例提供的解碼方法有可能使得對應的時間戳較晚的G0P較早的完成解碼,故在圖像渲染過程中,有可能出現如下情況:按時間戳先后順序應當執(zhí)行渲染操作的待渲染隊列對應的G0P對應的G0P (假設為排序后的第P個待渲染隊列對應的G0P,也即待解碼視頻的第P個G0P)尚未完成解碼,而下一個待渲染隊列對應的G0P (即第P+1個G0P) 已解碼完成。針對上述情況,既可以直接渲染下一個已解碼完成的待渲染隊列,也可以等待第P個待渲染隊列對應的G0P解碼完成。實際應用中,可以根據預設渲染策略確定上述哪種操作,即:如果預設渲染策略要求保證渲染速度,則可以跳過未完成解碼的G0P,即放棄未完全解碼的第P個待渲染隊列,直接渲染第P+1個待渲染隊列,相應的,播放隊列中也不存在第P個待渲染隊列中的各幀圖像,播放完第P-1個G0P后直接播放第P+1個G0P ;如果預設渲染策略要求保證視頻完整播放,則需要每幀圖像都被解碼、渲染并加入播放隊列,此時對于未完全解碼的G0P,不是直接跳過不渲染,而是等待其解碼完成后再渲染。
[0080]由以上技術方案可知,本申請實施例通過創(chuàng)建多個解碼線程及多個幀存儲隊列, 并復用各個解碼線程和幀存儲隊列,實現多個G0P同時解碼使得解碼速度成倍提高;相應的,創(chuàng)建多個待渲染隊列,用于存儲解碼得到的各幀圖像以便進一步對圖像執(zhí)行渲染操作, 不僅可以增加同一時刻被解碼的視頻幀(或G0P)個數,還可以減少視頻幀讀取耗時,使得每個解碼線程都被充分利用,提高了解碼速度,可以實現數據量較大的高清視頻文件的在線播放,避免卡頓現象。
[0081]圖3為本申請實施例提供的一種視頻解碼裝置的結構框圖。參照圖3,該裝置包括:線程配置單元110、視頻讀取單元120和解碼控制單元130。
[0082]該線程配置單元110被配置為,創(chuàng)建并啟動多個解碼線程。
[0083]該視頻讀取單元120被配置為,讀取待解碼視頻的各個視頻幀。
[0084]該解碼控制單元130被配置為,當讀取到的多個視頻幀構成一個GOP時,觸發(fā)一個處于空閑狀態(tài)的解碼線程對所述G0P執(zhí)行解碼操作,得到所述G0P中各個視頻幀對應的圖像。
[0085]由以上技術方案可知,本申請實施例通過創(chuàng)建并啟動多個解碼線程,各個解碼線程相互獨立且并發(fā)運行,使得同一時刻可以有多個G0P被解碼,相對于現有通過串行方式進行解碼的方法,解碼速度也相應提高多倍,從而可以實現數據量較大的高清視頻文件的在線播放,避免卡頓現象。
[0086]圖4為本申請另一實施例提供的視頻解碼裝置的結構框圖。參照圖4,除上述線程配置單元110、視頻讀取單元120和解碼控制單元130外,該視頻解碼裝置還包括:解碼隊列控制單元140。
[0087]該解碼隊列控制單元140被配置為,創(chuàng)建幀存儲隊列并將讀取到的視頻幀存入所述幀存儲隊列。其中,所述幀存儲隊列的個數大于所述解碼線程的個數,且屬于同一畫面組 G0P的各個視頻幀存入同一個幀存儲隊列。
[0088]圖5為本申請又一實施例提供的視頻解碼裝置的結構框圖。參照圖5,除上述線程配置單元110、視頻讀取單元120和解碼控制單元130外,該視頻解碼裝置還包括:排序單元150和渲染單元160。
[0089]該排序單元150被配置為,將同一個G0P解碼得到的圖像存入同一個待渲染隊列, 并根據每個G0P中的關鍵視頻幀對應的時間戳對各個待渲染隊列進行排序;
[0090]該渲染單元160被配置為,根據排序結果對所述待渲染隊列中的圖像執(zhí)行渲染操作。
[0091]另外,上述實施例所述的視頻解碼裝置中,解碼控制單元130可以包括第一控制子單元和第二控制子單元中的至少一種。其中,第一控制子單元被配置為,觸發(fā)所述處于空閑狀態(tài)的解碼線程控制軟解碼器對所述G0P進行解碼;第二控制子單元被配置為,觸發(fā)所述處于空閑狀態(tài)的解碼線程控制硬解碼器對所述G0P進行解碼。如果解碼控制單元130中同時設置第一控制子單元和第二控制子單元,則針對不同的G0P可以根據實際應用場景選擇上述二者之一執(zhí)行解碼操作;例如,為提高解碼速度,可以優(yōu)先選擇上述第二控制子單元執(zhí)行解碼效率更高的硬解操作,當硬解碼器被占用時,選擇上述第一控制子單元執(zhí)行軟解操作。
[0092]關于上述實施例中的裝置,其中各個模塊執(zhí)行操作的具體方式已經在有關該方法的實施例中進行了詳細描述,此處將不做詳細闡述說明。
[0093]另外,本申請實施例還提供了一種計算機存儲介質,例如可以是R0M、隨機存取存儲器(RAM)、CD-ROM、磁帶、軟盤和光數據存儲設備等;該計算機存儲介質中存儲有程序,當所述存儲介質中的程序由終端設備的處理器執(zhí)行時,使得終端設備能夠執(zhí)行上述方法實施例中記載的視頻解碼方法的部分或全部步驟。
[0094]圖6是根據一示例性實施例示出的一種終端設備的框圖。該終端設備具有視頻播放功能,例如,該終端設備可以是智能手機,平板設備,筆記本電腦等。
[0095]參照圖6,終端設備可以包括以下一個或多個組件:處理組件802,存儲器804,電源組件806,多媒體組件808,音頻組件810,輸入/輸出(I/O)的接口 812,傳感器組件814, 以及通信組件816。
[0096]處理組件802通??刂平K端設備的整體操作,諸如與顯示,電話呼叫,數據通信, 相機操作和記錄操作相關聯的操作。處理組件802可以包括一個或多個處理器820來執(zhí)行本地或者遠程指令,以完成上述的方法的全部或部分步驟。此外,處理組件802可以包括一個或多個模塊,便于處理組件802和其他組件之間的交互。例如,處理組件802可以包括多媒體模塊,以方便多媒體組件808和處理組件802之間的交互。
[0097]存儲器804被配置為存儲各種類型的數據以支持在終端設備的操作。這些數據的示例包括用于在終端設備上操作的任何應用程序或方法的指令,聯系人數據,電話簿數據, 消息,圖片,視頻等。存儲器804可以由任何類型的易失性或非易失性存儲設備或者它們的組合實現,如靜態(tài)隨機存取存儲器(SRAM),電可擦除可編程只讀存儲器(EEPR0M),可擦除可編程只讀存儲器(EPROM),可編程只讀存儲器(PR0M),只讀存儲器(ROM),磁存儲器,快閃存儲器,磁盤或光盤。
[0098]電源組件806為終端設備的各種組件提供電力。多媒體組件808包括在所述終端設備和用戶之間的提供一個輸出接口的屏幕。音頻組件810被配置為輸出和/或輸入音頻信號。I/O接口 812為處理組件802和外圍接口模塊之間提供接口,上述外圍接口模塊可以是鍵盤,點擊輪,按鈕等。傳感器組件814包括一個或多個傳感器,用于為終端設備提供各個方面的狀態(tài)評估。通信組件816被配置為便于終端設備和其他設備之間有線或無線方式的通信。終端設備可以通過通信組件816接入基于通信標準的無線網絡,如WiFi,2G或 3G,或它們的組合,進而獲取網絡中的視頻文件并在處理器820的控制下執(zhí)行視頻解碼操作,解碼完成后播放該視頻文件。
[0099]在示例性實施例中,終端設備可以被一個或多個應用專用集成電路(ASIC)、數字信號處理器(DSP)、數字信號處理設備(DSPD)、可編程邏輯器件(PLD)、現場可編程門陣列 (FPGA)、控制器、微控制器、微處理器或其他電子元件實現,用于執(zhí)行上述視頻解碼方法。
[0100]其中,本實施例中,處理器820通過執(zhí)行存儲器804中的指令,可以完成如下步驟:
[0101]創(chuàng)建并啟動多個解碼線程;
[0102]讀取待解碼視頻的各個視頻幀;
[0103]當讀取到的多個視頻幀構成一個畫面組時,觸發(fā)一個處于空閑狀態(tài)的解碼線程對所述畫面組執(zhí)行解碼操作,得到所述畫面組中各個視頻幀對應的圖像。
[0104]在本申請一個可行的實施例中,處理器820還可以執(zhí)行如下步驟:
[0105]創(chuàng)建幀存儲隊列并將讀取到的視頻幀存入所述幀存儲隊列;
[0106]其中,所述幀存儲隊列的個數大于所述解碼線程的個數,且屬于同一個畫面組的各個視頻幀存入同一個幀存儲隊列。
[0107]在本申請另一個可行的實施例中,為實現觸發(fā)所述處于空閑狀態(tài)的解碼線程對所述G0P執(zhí)行解碼操作,處理器820被配置為以下任意一種:
[0108]觸發(fā)一個處于空閑狀態(tài)的解碼線程控制軟解碼器對所述畫面組進行解碼,和,觸發(fā)一個處于空閑狀態(tài)的解碼線程控制硬解碼器對所述畫面組進行解碼。
[0109]在本申請又一個可行的實施例中,處理器820還可以執(zhí)行如下步驟:
[0110]將同一個畫面組解碼得到的圖像存入同一個待渲染隊列,并根據每個畫面組中的關鍵視頻幀對應的時間戮對各個待植染隊列進彳丁排序;
[0111] 根據排序結果對所述待渲染隊列中的圖像執(zhí)行渲染操作。
[0112] 本領域技術人員在考慮說明書及實踐這里公開的發(fā)明后,將容易想到本發(fā)明的其它實施方案。本申請旨在涵蓋本發(fā)明的任何變型、用途或者適應性變化,這些變型、用途或者適應性變化遵循本發(fā)明的一般性原理并包括本申請未公開的本技術領域中的公知常識或慣用技術手段。說明書和實施例僅被視為示例性的,本發(fā)明的真正范圍和精神由下面的權利要求指出。
[0113] 應當理解的是,本發(fā)明并不局限于上面已經描述并在附圖中示出的精確結構,并且可以在不脫離其范圍進行各種修改和改變。本發(fā)明的范圍僅由所附的權利要求來限制。
【主權項】
1.一種視頻解碼方法,其特征在于,包括:創(chuàng)建并啟動多個解碼線程;依次讀取待解碼視頻的各個視頻幀;當讀取到的多個視頻幀構成一個畫面組時,則觸發(fā)一個處于空閑狀態(tài)的解碼線程對所 述畫面組執(zhí)行解碼操作,得到所述畫面組中各個視頻幀對應的圖像。2.根據權利要求1所述的視頻解碼方法,其特征在于,還包括:創(chuàng)建幀存儲隊列并將讀取到的視頻幀存入所述幀存儲隊列;其中,所述幀存儲隊列的個數大于所述解碼線程的個數,且屬于同一個畫面組的各個 視頻幀存入同一個幀存儲隊列。3.根據權利要求1或2所述的視頻解碼方法,其特征在于,所述觸發(fā)一個處于空閑狀態(tài) 的解碼線程對所述畫面組執(zhí)行解碼操作包括以下任意一種:觸發(fā)一個處于空閑狀態(tài)的解碼線程控制軟解碼器對所述畫面組進行解碼,和,觸發(fā)一 個處于空閑狀態(tài)的解碼線程控制硬解碼器對所述畫面組進行解碼。4.根據權利要求1或2所述的視頻解碼方法,其特征在于,還包括:將同一個畫面組解碼得到的圖像存入同一個待渲染隊列,并根據每個畫面組中的關鍵 視頻幀對應的時間戳對各個待渲染隊列進行排序;根據排序結果對所述待渲染隊列中的圖像執(zhí)行渲染操作。5.—種視頻解碼裝置,其特征在于,包括:線程配置單元,用于創(chuàng)建并啟動多個解碼線程;視頻讀取單元,用于讀取待解碼視頻的各個視頻幀;解碼控制單元,用于當讀取到的多個視頻幀構成一個畫面組時,觸發(fā)一個處于空閑狀 態(tài)的解碼線程對所述畫面組執(zhí)行解碼操作,得到所述畫面組中各個視頻幀對應的圖像。6.根據權利要求5所述的視頻解碼裝置,其特征在于,還包括:解碼隊列控制單元,用于創(chuàng)建幀存儲隊列并將讀取到的視頻幀存入所述幀存儲隊列; 其中,所述幀存儲隊列的個數大于所述解碼線程的個數,且屬于同一畫面組的各個視 頻幀存入同一個幀存儲隊列。7.根據權利要求5或6所述的視頻解碼裝置,其特征在于,所述解碼控制單元包括以下 至少一種:第一控制子單元,用于觸發(fā)一個處于空閑狀態(tài)的解碼線程控制軟解碼器對所述畫面組 進行解碼;第二控制子單元,用于觸發(fā)一個處于空閑狀態(tài)的解碼線程控制硬解碼器對所述畫面組 進行解碼。8.根據權利要求5或6所述的視頻解碼裝置,其特征在于,還包括:排序單元,用于將同一個畫面組解碼得到的圖像存入同一個待渲染隊列,并根據每個 畫面組中的關鍵視頻幀對應的時間戳對各個待渲染隊列進行排序;渲染單元,用于根據排序結果對所述待渲染隊列中的圖像執(zhí)行渲染操作。9.一種終端設備,其特征在于,包括:處理器,以及用于存儲處理器可執(zhí)行指令的存儲器;其中,所述處理器被配置為:創(chuàng)建并啟動多個解碼線程;讀取待解碼視頻的各個視頻幀;當讀取到的多個視頻幀構成一個畫面組時,觸發(fā)一個處于空閑狀態(tài)的解碼線程對所述 畫面組執(zhí)行解碼操作,得到所述畫面組中各個視頻幀對應的圖像。10.根據權利要求9所述的終端設備,其特征在于,所述處理器還被配置為:創(chuàng)建幀存儲隊列并將讀取到的視頻幀存入所述幀存儲隊列;其中,所述幀存儲隊列的個數大于所述解碼線程的個數,且屬于同一個畫面組的各個 視頻幀存入同一個幀存儲隊列。11.根據權利要求9或10所述的終端設備,其特征在于,為實現觸發(fā)一個處于空閑狀態(tài) 的解碼線程對所述畫面組執(zhí)行解碼操作,所述處理器被配置為以下任意一種:觸發(fā)一個處于空閑狀態(tài)的解碼線程控制軟解碼器對所述畫面組進行解碼,和,觸發(fā)一 個處于空閑狀態(tài)的解碼線程控制硬解碼器對所述畫面組進行解碼。12.根據權利要求9或10所述的終端設備,其特征在于,所述處理器還被配置為: 將同一個畫面組解碼得到的圖像存入同一個待渲染隊列,并根據每個畫面組中的關鍵視頻幀對應的時間戳對各個待渲染隊列進行排序;根據排序結果對所述待渲染隊列中的圖像執(zhí)行渲染操作。
【文檔編號】H04N19/42GK105992005SQ201510096697
【公開日】2016年10月5日
【申請日】2015年3月4日
【發(fā)明人】梁捷, 馬妙魁
【申請人】廣州市動景計算機科技有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1