国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

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

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

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