亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種視頻解碼和播放的方法、系統(tǒng)、終端設(shè)備的制作方法

文檔序號:7761002閱讀:203來源:國知局
專利名稱:一種視頻解碼和播放的方法、系統(tǒng)、終端設(shè)備的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及視頻播放領(lǐng)域,尤其涉及一種視頻解碼和播放的方法、系統(tǒng)、終端設(shè) 備。
背景技術(shù)
移動終端以及移動流媒體技術(shù)特點(diǎn)有無線網(wǎng)絡(luò)帶寬窄,干擾嚴(yán)重,導(dǎo)致網(wǎng)絡(luò)傳輸?shù)恼`碼的可能性大大增加。移動終端處 理能力低,內(nèi)存容量小。手機(jī)中低端用戶基數(shù)龐大而帶來的巨大的市場商機(jī)。流媒體解碼 技術(shù)需要較高的處理能力,運(yùn)算開銷比較大,對CPU的處理能力要求比較高,效率低下。移 動流媒體不適合低比特網(wǎng)絡(luò)傳輸。現(xiàn)有視頻播放技術(shù)為了保障視頻流暢播放,多數(shù)從解碼和播放同步性來大概保證 其流暢播放,但是在一秒內(nèi)的幀圖像輸出確不能保證其流暢和均勻性?,F(xiàn)有技術(shù)的表現(xiàn)會 因解碼某幀耗時過長,要么就盡快連續(xù)顯示第二幀,要么就丟棄第二幀,會呈現(xiàn)出圖象顯示 的不均勻性。雖然計(jì)算機(jī)領(lǐng)域剛剛面世的GPU硬解碼技術(shù)不依賴于CPU的能力,但解碼支持度 不高,對不同的視頻編碼、封裝格式,硬解碼無法做到全面兼容,畫面輸出補(bǔ)償及畫質(zhì)增強(qiáng) 技術(shù)不夠,難以解決秒內(nèi)的幀圖像輸出的均勻性。

發(fā)明內(nèi)容
本發(fā)明實(shí)施例的目的在于提出一種視頻播放的方法,旨在解決現(xiàn)有技術(shù)中因解碼 某幀視頻幀時間過長,而導(dǎo)致顯示輸出延遲、顯示不均勻的問題,同時本發(fā)明可應(yīng)用CPU運(yùn) 行頻率低又能處理高碼率高幀率的終端嵌入式終端設(shè)備。本發(fā)明實(shí)施例是這樣實(shí)現(xiàn)的,一種視頻解碼的方法,包括以下步驟讀取視頻幀和相對時間戳,對視頻幀解碼并生成圖像幀;判斷緩沖區(qū)是否已滿,如果否,存儲未寫入的圖像幀和相對時間戳到緩沖區(qū),并繼 續(xù)讀取視頻幀和相對時間戳;如果是,休眠一個等待周期;等待周期期滿,休眠被喚醒,再次判斷緩沖區(qū)是否已滿。本發(fā)明實(shí)施例的另一目的在于提出一種視頻解碼裝置,所述裝置包括解碼模塊,與第一判斷模塊相連,用于獲取視頻幀和相對時間戳,對視頻幀進(jìn)行解 碼并生成圖像幀,向第一判斷模塊發(fā)送解碼完成的指令,接收第一判斷模塊的存儲指令;第一判斷模塊,與解碼模塊、緩沖模塊和第一休眠模塊相連,用于接收解碼模塊的 解碼完成的指令,請求獲取緩沖模塊的存儲狀態(tài),根據(jù)緩沖模塊的存儲狀態(tài)向解碼模塊發(fā) 送存儲指令或向第一休眠模塊發(fā)送休眠指令;并根據(jù)第一休眠模塊發(fā)送的休眠期滿指令, 判斷所述緩沖模塊的存儲狀態(tài)為未滿或已滿,如果存儲狀態(tài)為未滿,則向解碼模塊發(fā)送存 儲指令,如果存儲狀態(tài)為已滿,第一休眠模塊發(fā)送休眠指令;
4
緩沖模塊,與第一判斷模塊相連,用于接收第一判斷模塊的獲取緩沖模塊的存儲 狀態(tài)的請求,并向第一判斷模塊發(fā)送緩沖模塊的存儲狀態(tài),同時接收解碼模塊發(fā)送的圖像 幀和相對時間戳,并存儲;第一休眠模塊,與第一判斷模塊相連,用于接收第一判斷模塊發(fā)送的休眠指令,進(jìn) 入一個等待周期的休眠狀態(tài),接收操作系統(tǒng)發(fā)送的喚醒指令,向第一判斷模塊發(fā)送休眠期 滿指令。本發(fā)明實(shí)施例的另一目的在于提出一種視頻播放方法,包括以下步驟讀取緩沖區(qū)的圖像幀和相對時間戳;判斷相對系統(tǒng)時間是否小于相對時間戳,如果否,顯示圖像幀,并繼續(xù)讀取緩沖區(qū) 的圖像幀和相對時間戳;如果是,休眠一個等待周期;等待周期期滿,休眠被喚醒,再次判斷相對系統(tǒng)時間是否小于相對時間戳。本發(fā)明實(shí)施例的另一目的在于提出一種視頻播放裝置,所述裝置包括讀取模塊,與第二判斷模塊相連,用于讀取緩存區(qū)的圖像幀和相對時間戳,向第二 判斷模塊發(fā)送讀取完成指令,接收第二判斷模塊的顯示指令,發(fā)送圖像幀;第二判斷模塊,與讀取模塊、顯示模塊和第二休眠模塊相連,用于接收讀取模塊的 讀取完成指令和接收第二休眠模塊發(fā)送的休眠期滿指令,根據(jù)相對系統(tǒng)時間與相對時間戳 的對比結(jié)果,向讀取模塊和顯示模塊發(fā)送顯示指令或向第二休眠模塊發(fā)送休眠指令;顯示模塊,與第二判斷模塊相連,用于接收第二判斷模塊的顯示指令,獲取圖像幀 并顯示;第二休眠模塊,與第二判斷模塊相連,用于接收第二判斷模塊發(fā)送的休眠指令,進(jìn) 入一個等待周期的休眠狀態(tài);接收操作系統(tǒng)發(fā)送的喚醒指令,向第二判斷模塊發(fā)送休眠期 滿指令。本發(fā)明實(shí)施例的另一目的在于提出一種視頻解碼和播放系統(tǒng),所述的系統(tǒng)包括 解碼裝置和播放裝置;解碼模塊,與第一判斷模塊相連,用于獲取視頻幀和相對時間戳,視頻幀解碼,生 成圖像幀,向第一判斷模塊發(fā)送解碼完成的指令,接收第一判斷模塊的存儲指令;第一判斷模塊,與解碼模塊、緩沖模塊和第一休眠模塊相連,用于接收解碼模塊的 解碼完成的指令,請求獲取緩沖模塊的存儲狀態(tài),根據(jù)緩沖模塊的存儲狀態(tài)向解碼模塊發(fā) 送存儲指令或向第一休眠模塊發(fā)送休眠指令;并根據(jù)第一休眠模塊發(fā)送的休眠期滿指令, 判斷所述緩沖模塊的存儲狀態(tài)為未滿或已滿,如果存儲狀態(tài)為未滿,則向解碼模塊發(fā)送存 儲指令,如果存儲狀態(tài)為已滿,第一休眠模塊發(fā)送休眠指令;緩沖模塊,與第一判斷模塊相連,用于接收第一判斷模塊的獲取緩沖模塊的存儲 狀態(tài)的請求,并向第一判斷模塊發(fā)送緩沖模塊的存儲狀態(tài),同時接收解碼模塊發(fā)送的圖像 幀和相對時間戳,并存儲;第一休眠模塊,與第一判斷模塊相連,用于接收第一判斷模塊發(fā)送的休眠指令,進(jìn) 入一個等待周期的休眠狀態(tài),接收操作系統(tǒng)發(fā)送的喚醒指令,向第一判斷模塊發(fā)送休眠期 滿指令;讀取模塊,與第二判斷模塊相連,用于讀取緩存區(qū)的圖像幀和相對時間戳,向第二
5判斷模塊發(fā)送讀取完成指令,接收第二判斷模塊的顯示指令,發(fā)送圖像幀;第二判斷模塊,與讀取模塊、顯示模塊和第二休眠模塊相連,用于接收讀取模塊的 讀取完成指令和接收第二休眠模塊發(fā)送的休眠期滿指令,根據(jù)相對系統(tǒng)時間與相對時間戳 的對比結(jié)果,向讀取模塊和顯示模塊發(fā)送顯示指令或向第二休眠模塊發(fā)送休眠指令;顯示模塊,與第二判斷模塊相連,用于接收第二判斷模塊的顯示指令,獲取圖像幀 并顯示;第二休眠模塊,與第二判斷模塊相連,用于接收第二判斷模塊發(fā)送的休眠指令,進(jìn) 入一個等待周期的休眠狀態(tài);并用于接收操作系統(tǒng)發(fā)送的喚醒指令,向第二判斷模塊發(fā)送 休眠期滿指令。本發(fā)明實(shí)施例的另一目的在于提出一種包括所述視頻解碼和播放系統(tǒng)的終端設(shè)備。本發(fā)明的有益效果通過操作系統(tǒng)控制解碼與播放的工作線程的優(yōu)先級,解碼視頻幀生成圖像幀后, 根據(jù)緩沖區(qū)的存儲狀態(tài)控制圖像幀的存儲或者解碼線程的休眠,播放的工作線程讀取緩沖 區(qū)中的圖像幀和相對時間戳,根據(jù)相對系統(tǒng)時間與相對時間戳的對比結(jié)果控制圖像幀的顯 示或者播放線程的休眠。即使在解碼某一幀占用CPU時間過高時,并不影響播放裝置顯示 圖像幀,可以準(zhǔn)確的把緩沖區(qū)里的圖像按時顯示。在解碼和顯示過程中,設(shè)定的休眠時間, 確保工作線程無需工作的情況下進(jìn)入休眠狀態(tài),避免占用CPU,兼容CPU運(yùn)行頻率低又能處 理高碼率高幀率的終端嵌入式終端設(shè)備,適用無音頻的視頻解碼和播放。


圖1是本發(fā)明實(shí)施例一種視頻解碼方法流程圖;圖2是本發(fā)明實(shí)施例一種視頻解碼裝置結(jié)構(gòu)示意圖;圖3是本發(fā)明實(shí)施例一種視頻播放方法流程圖;圖4是本發(fā)明實(shí)施例一種視頻播放裝置結(jié)構(gòu)示意圖;圖5是本發(fā)明實(shí)施例一種視頻解碼和播放系統(tǒng)結(jié)構(gòu)示意圖。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖和實(shí)施例,對 本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明,為了便于說明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分。應(yīng)當(dāng)理 解,此處所描寫的具體實(shí)施例,僅僅用于解釋本發(fā)明,并不用以限制本發(fā)明。本發(fā)明通過操作系統(tǒng)控制解碼與播放的工作線程的優(yōu)先級,確保播放的工作線程 高于解碼的工作線程的優(yōu)先級,達(dá)到圖像幀的順暢顯示;解碼的工作線程在解碼視頻幀生 成圖像幀后,把圖像幀存儲到緩沖區(qū),即使在解碼某一幀占用CPU時間過高時,并不影響播 放裝置顯示圖像幀,可以準(zhǔn)確的把緩沖區(qū)里的圖象按時顯示;在解碼和顯示過程中,設(shè)定不 同的休眠時間,確保工作線程無需工作的情況下進(jìn)入休眠狀態(tài),避免占用CPU。實(shí)施例一圖1是本發(fā)明實(shí)施例一種視頻解碼方法流程圖。所述方法包括以下步驟S101,讀取視頻幀和相對時間戳,對視頻幀進(jìn)行解碼并生成圖像幀;
6
所述的步驟相對時間戳可替換為相對音頻時間;讀取視頻幀和相對時間戳?xí)r,操作系統(tǒng)創(chuàng)建所對應(yīng)的工作線程;所述的相對時間戳為每個圖像幀所對應(yīng)的被相對顯示時間點(diǎn),所述顯示時間點(diǎn)是 以O(shè)ms開始的時間偏移量,在開始顯示時以O(shè)ms記錄顯示起點(diǎn)時間;S102,判斷緩沖區(qū)是否已滿,是則進(jìn)入步驟S104,否則進(jìn)入步驟S103 ;S103,存儲未寫入的圖像幀和相對時間戳到緩沖區(qū),進(jìn)入步驟SlOl ;此處的“相對時間戳”也可替換為“相對音頻時間”。S104,休眠一個等待周期;所述的一個等待周期是1000ms* [(緩沖區(qū)所能容納的幀數(shù)/2)/幀率],即在等待 周期內(nèi)所述工作線程不再占用CPU ;S105,喚醒休眠,進(jìn)入步驟S102再次判斷緩沖區(qū)是否已滿;所述的喚醒休眠是操作系統(tǒng)再繼續(xù)響應(yīng)所述工作線程;本發(fā)明實(shí)施例中解碼生成圖像幀存儲到緩沖區(qū),避免了因解碼耗時過長,導(dǎo)致丟 幀和圖像播放的不均勻,如果緩沖區(qū)已滿,則進(jìn)入休眠狀態(tài),從而減少CPU的消耗,只有在 等待周期期滿才被操作系統(tǒng)喚醒重新判斷緩沖區(qū);等待周期的時間取決于緩沖區(qū)的大小和 幀率,緩沖區(qū)里的圖像幀被消耗到一半時才被喚醒繼續(xù)存儲圖像幀。實(shí)施例二圖2是本發(fā)明實(shí)施例一種視頻解碼裝置結(jié)構(gòu)示意圖。所述解碼裝置包括解碼模塊、第一判斷模塊、緩沖模塊、第一休眠模塊;解碼模塊,與第一判斷模塊相連,用于獲取視頻幀和相對時間戳,對視頻幀進(jìn)行解 碼并生成圖像幀,向第一判斷模塊發(fā)送解碼完成的指令,接收第一判斷模塊的存儲指令;第一判斷模塊,與解碼模塊、緩沖模塊和第一休眠模塊相連,用于接收解碼模塊的 解碼完成的指令,請求獲取緩沖模塊的存儲狀態(tài),根據(jù)緩沖模塊的存儲狀態(tài)向解碼模塊發(fā) 送存儲指令或向第一休眠模塊發(fā)送休眠指令;并根據(jù)第一休眠模塊發(fā)送的休眠期滿指令, 判斷所述緩沖模塊的存儲狀態(tài)為未滿或已滿,如果存儲狀態(tài)為未滿,則向解碼模塊發(fā)送存 儲指令,如果存儲狀態(tài)為已滿,第一休眠模塊發(fā)送休眠指令;緩沖模塊,與第一判斷模塊相連,用于接收第一判斷模塊的獲取緩沖模塊的存儲 狀態(tài)的請求,并向第一判斷模塊發(fā)送緩沖模塊的存儲狀態(tài),同時接收解碼模塊發(fā)送的圖像 幀和相對時間戳,并存儲;第一休眠模塊,與第一判斷模塊相連,用于接收第一判斷模塊發(fā)送的休眠指令,進(jìn) 入一個等待周期的休眠狀態(tài),接收操作系統(tǒng)發(fā)送的喚醒指令,向第一判斷模塊發(fā)送休眠期 滿指令;所述的等待周期是1000ms*[(緩沖區(qū)所能容納的幀數(shù)/2)/幀率];所述的休眠狀態(tài)是指解碼裝置的工作線程不再占用CPU。本發(fā)明實(shí)施例中解碼模塊生成圖像幀,第一判斷模塊判斷通過判斷緩沖模塊的存 儲狀態(tài),來控制是否存儲到緩沖模塊或者進(jìn)入休眠狀態(tài);如果緩沖模塊的存儲狀態(tài)為未滿, 圖像幀存儲到緩沖模塊,避免了因解碼耗時過長,導(dǎo)致丟幀和圖像輸出的不均勻;如果緩沖 模塊已滿,則發(fā)送休眠指令到第一休眠模塊進(jìn)入一個等待周期的休眠狀態(tài),從而減少CPU 的消耗,只有在等待周期期滿才被操作系統(tǒng)喚醒重新啟動;等待周期的時間取決于緩沖模
7塊的大小和幀率,緩沖模塊里的圖像幀被消耗到一半時才被喚醒繼續(xù)存儲圖像幀。實(shí)施例三圖4是本發(fā)明實(shí)施例一種視頻播放方法流程圖。所述方法包括以下步驟S301,讀取緩沖區(qū)的圖像幀和相對時間戳;讀取緩沖區(qū)開始時,操作系統(tǒng)創(chuàng)建所對應(yīng)的工作線程;所述的相對時間戳為每個圖像幀所對應(yīng)的被相對顯示時間點(diǎn),是以O(shè)ms開始的時 間偏移量,在開始顯示時以O(shè)ms記錄顯示起點(diǎn)時間;S302,判斷相對系統(tǒng)時間是否小于相對時間戳,是則進(jìn)入步驟S304,否則進(jìn)入步驟 S303 ;所述的相對系統(tǒng)時間是開始顯示時以O(shè)ms為基準(zhǔn)的時間偏移量;S303,顯示圖像幀,進(jìn)入步驟S301 ;S304,休眠一個等待周期;所述的一個等待周期是1000ms/ (幀率*2)(取整數(shù)),在等待周期內(nèi)工作線程不再 占用CPU ;S305,喚醒休眠,進(jìn)入步驟S302 ;所述的相對系統(tǒng)時間可替換為相對音頻時間;所述的喚醒休眠是操作系統(tǒng)繼續(xù)響應(yīng)工作線程;所述“相對時間戳”也可替換為相對“音頻時間”。本發(fā)明實(shí)施例中通過比對相對系統(tǒng)時間與小于相對時間戳來控制圖像幀的顯示, 能夠完全按照節(jié)目源所給定的每幀相對時間戳進(jìn)行實(shí)時顯示,確保一秒內(nèi)的圖像幀顯示的 均勻性,同樣適用于沒有音頻的視頻的流暢播放。實(shí)施例四圖4是本發(fā)明實(shí)施例一種視頻播放裝置結(jié)構(gòu)示意圖。所述播放裝置包括讀取模塊、第二判斷模塊、顯示模塊、第二休眠模塊;讀取模塊,與第二判斷模塊相連,用于讀取緩存區(qū)的圖像幀和相對時間戳,向第二 判斷模塊發(fā)送讀取完成指令,接收第二判斷模塊的顯示指令,發(fā)送圖像幀;所述的相對時間戳為每個圖像幀所對應(yīng)的被相對顯示時間點(diǎn),是以O(shè)ms開始的時 間偏移量,在開始顯示時以O(shè)ms記錄顯示起點(diǎn)時間;第二判斷模塊,與讀取模塊、顯示模塊和第二休眠模塊相連,用于接收讀取模塊的 讀取完成指令和接收第二休眠模塊發(fā)送的休眠期滿指令,根據(jù)相對系統(tǒng)時間與相對時間戳 的對比結(jié)果,向讀取模塊和顯示模塊發(fā)送顯示指令或向第二休眠模塊發(fā)送休眠指令;所述的對比結(jié)果是指相對系統(tǒng)時間是否小于相對時間戳的判斷結(jié)果,如果所述的 對比結(jié)果為否,則向讀取模塊和顯示模塊發(fā)送顯示指令,如果所述的對比結(jié)果為是,則向第 二休眠模塊發(fā)送休眠指令;顯示模塊,與第二判斷模塊相連,用于接收第二判斷模塊的顯示指令,獲取圖像幀 并顯示;第二休眠模塊,與第二判斷模塊相連,用于接收第二判斷模塊發(fā)送的休眠指令,進(jìn) 入一個等待周期的休眠狀態(tài);并用于接收操作系統(tǒng)發(fā)送的喚醒指令,向第二判斷模塊發(fā)送 休眠期滿指令;
所述的等待周期是1000ms/ (幀率*2)(取整數(shù));所述的休眠狀態(tài)是指播放裝置的工作線程不再占用CPU。本發(fā)明實(shí)施例中第二判斷模塊通過比對相對系統(tǒng)時間與小于相對時間戳來控制 顯示模塊的顯示,能夠完全按照節(jié)目源所給定的每幀相對時間戳進(jìn)行實(shí)時顯示,確保一秒 內(nèi)的圖像幀顯示的均勻性,同樣適用于沒有音頻的視頻的流暢播放,同時,第二休眠模塊的 休眠周期定義為1000ms/(幀率*2),有效控制播放裝置與操作系統(tǒng)和CPU之間的高效協(xié)作。實(shí)施例五圖5是本發(fā)明實(shí)施例一種視頻解碼和播放系統(tǒng)結(jié)構(gòu)示意圖。所述視頻解碼和播放系統(tǒng)包括解碼裝置和播放裝置;解碼裝置,與播放裝置相連,包括解碼模塊、第一判斷模塊、緩沖模塊、第一休眠 模塊;解碼模塊,與第一判斷模塊相連,用于獲取視頻幀和相對時間戳,視頻幀解碼,生 成圖像幀,向第一判斷模塊發(fā)送解碼完成的指令,接收第一判斷模塊的存儲指令;所述的圖像幀包括圖像和每幀圖像對應(yīng)的時間戳;第一判斷模塊,與解碼模塊、緩沖模塊和第一休眠模塊相連,用于接收解碼模塊的 解碼完成的指令和接收第一休眠模塊發(fā)送的休眠期滿指令,請求獲取緩沖模塊的存儲狀 態(tài),根據(jù)所述的存儲狀態(tài)向解碼模塊發(fā)送存儲指令或向第一休眠模塊發(fā)送休眠指令;所述的存儲狀態(tài)為未滿或已滿,如果存儲狀態(tài)為未滿,則向解碼模塊發(fā)送存儲指 令,如果存儲狀態(tài)為已滿,第一休眠模塊發(fā)送休眠指令;緩沖模塊,與第一判斷模塊相連,用于接收第一判斷模塊的獲取緩沖模塊的存儲 狀態(tài)的請求,并向第一判斷模塊發(fā)送緩沖模塊的存儲狀態(tài),同時接收解碼模塊發(fā)送的圖像 幀和相對時間戳,并存儲;第一休眠模塊,與第一判斷模塊相連,用于接收第一判斷模塊發(fā)送的休眠指令,進(jìn) 入一個等待周期的休眠狀態(tài),接收操作系統(tǒng)發(fā)送的喚醒指令,向第一判斷模塊發(fā)送休眠期 滿指令;所述的等待周期是1000ms*[(緩沖區(qū)所能容納的幀數(shù)/2)/幀率];所述的休眠狀態(tài)是指解碼裝置的工作線程不再占用CPU ;播放裝置,與解碼裝置相連,包括讀取模塊、第二判斷模塊、顯示模塊、第二休眠 模塊;讀取模塊,與第二判斷模塊相連,用于讀取緩存區(qū)的圖像幀和相對時間戳,向第二 判斷模塊發(fā)送讀取完成指令,接收第二判斷模塊的顯示指令,發(fā)送圖像幀;所述的相對時間戳為每個圖像幀所對應(yīng)的被相對顯示時間點(diǎn),是以O(shè)ms開始的時 間偏移量,在開始顯示時以O(shè)ms記錄顯示起點(diǎn)時間;第二判斷模塊,與讀取模塊、顯示模塊和第二休眠模塊相連,用于接收讀取模塊的 讀取完成指令和接收第二休眠模塊發(fā)送的休眠期滿指令,根據(jù)相對系統(tǒng)時間與相對時間戳 的對比結(jié)果,向讀取模塊和顯示模塊發(fā)送顯示指令或向第二休眠模塊發(fā)送休眠指令;所述的對比結(jié)果是指相對系統(tǒng)時間是否小于相對時間戳的判斷結(jié)果,如果所述的 對比結(jié)果為否,則向讀取模塊和顯示模塊發(fā)送顯示指令,如果所述的對比結(jié)果為是,則向第 二休眠模塊發(fā)送休眠指令;
9
顯示模塊,與第二判斷模塊相連,用于接收第二判斷模塊的顯示指令,獲取圖像幀 并顯示;第二休眠模塊,與第二判斷模塊相連,用于接收第二判斷模塊發(fā)送的休眠指令,進(jìn) 入一個等待周期的休眠狀態(tài);接收操作系統(tǒng)發(fā)送的喚醒指令,向第二判斷模塊發(fā)送休眠期 滿指令;所述的等待周期是1000ms/(幀率*2)(取整數(shù));所述的休眠狀態(tài)是指播放裝置的工作線程不再占用CPU ;所述的視頻解碼和播放系統(tǒng)的工作過程如下解碼裝置和播放裝置啟動時,操作系統(tǒng)設(shè)定解碼裝置與播放裝置的優(yōu)先級,播放 裝置的優(yōu)先級高于解碼裝置的優(yōu)先級;解碼模塊對視頻幀解碼生成圖像幀;第一判斷模塊 獲取緩沖模塊的存儲狀態(tài),如果未滿,第一判斷模塊向解碼模塊發(fā)送存儲指令,解碼模塊存 儲圖像幀到緩沖模塊;如果已滿,第一判斷模塊向第一休眠模塊發(fā)送休眠指令,解碼裝置進(jìn) 入一個等待周期的休眠狀態(tài);播放裝置讀取緩沖模塊的圖像幀,第二判斷模塊判斷相對系 統(tǒng)時間是否小于相對時間戳,如果否,第二判斷模塊向讀取模塊和顯示模塊發(fā)送顯示指令, 讀取模塊向顯示模塊發(fā)送圖像幀并顯示;如果是,第二判斷模塊向第二休眠模塊發(fā)送休眠 指令,播放裝置進(jìn)入一個周期的休眠狀態(tài)。本發(fā)明實(shí)施例中操作系統(tǒng)通過控制解碼裝置與播放裝置的優(yōu)先級,播放裝置的優(yōu) 先級比解碼裝置的優(yōu)先級高,確保播放裝置能夠順暢播放,即使解碼裝置在解碼某一幀占 用CPU時間過高時,并不影響播放裝置顯示圖像幀,可以準(zhǔn)確的把緩沖區(qū)里的圖象按時顯 示,解碼裝置因解碼時CPU占用時間不均勻性不會影像圖像的顯示,只是存儲到緩沖模塊 即可。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精 神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
10
權(quán)利要求
一種視頻解碼的方法,其特征在于,所述方法包括以下步驟讀取視頻幀和相對時間戳,對視頻幀進(jìn)行解碼并生成圖像幀;判斷緩沖區(qū)是否已滿,如果是,休眠一個等待周期。
2.如權(quán)利要求1所述的視頻解碼的方法,其特征在于,所述的步驟“判斷緩沖區(qū)是否已 滿”還包括步驟如果否,存儲圖像幀和相對時間戳到緩沖區(qū),并進(jìn)入步驟“讀取視頻幀和相對時間戳, 對視頻幀進(jìn)行解碼并生成圖像幀”。
3.如權(quán)利要求1所述的視頻解碼的方法,其特征在于,所述的步驟“休眠一個等待周 期”之后還包括步驟“等待周期期滿,休眠被喚醒,再次判斷緩沖區(qū)是否已滿”。
4.如權(quán)利要求1所述的視頻解碼的方法,其特征在于,等待周期為1000ms*[(緩沖區(qū)所 能容納的幀數(shù)/2)/幀率]。
5.如權(quán)利要求1所述的視頻解碼的方法,其特征在于,所述的相對時間戳可替換為相 對音頻時間。
6.一種視頻解碼裝置,其特征在于,所述裝置包括解碼模塊,與第一判斷模塊相連,用于獲取視頻幀和相對時間戳,視頻幀解碼,生成圖 像幀,向第一判斷模塊發(fā)送解碼完成的指令,接收第一判斷模塊的存儲指令;第一判斷模塊,與解碼模塊、緩沖模塊和第一休眠模塊相連,用于接收解碼模塊的解碼 完成的指令,請求獲取緩沖模塊的存儲狀態(tài),根據(jù)緩沖模塊的存儲狀態(tài)向解碼模塊發(fā)送存 儲指令或向第一休眠模塊發(fā)送休眠指令;并根據(jù)第一休眠模塊發(fā)送的休眠期滿指令,判斷 所述緩沖模塊的存儲狀態(tài)為未滿或已滿,如果存儲狀態(tài)為未滿,則向解碼模塊發(fā)送存儲指 令,如果存儲狀態(tài)為已滿,第一休眠模塊發(fā)送休眠指令;緩沖模塊,與第一判斷模塊相連,用于接收第一判斷模塊的獲取緩沖模塊的存儲狀態(tài) 的請求,并向第一判斷模塊發(fā)送緩沖模塊的存儲狀態(tài),同時接收解碼模塊發(fā)送的圖像幀和 相對時間戳,并存儲;第一休眠模塊,與第一判斷模塊相連,用于接收第一判斷模塊發(fā)送的休眠指令,進(jìn)入一 個等待周期的休眠狀態(tài),接收操作系統(tǒng)發(fā)送的喚醒指令,向第一判斷模塊發(fā)送休眠期滿指 令。
7.一種視頻播放的方法,其特征在于,所述方法包括以下步驟讀取緩沖區(qū)的圖像幀和相對時間戳;判斷相對系統(tǒng)時間是否小于相對時間戳,如果是,休眠一個等待周期。
8.如權(quán)利要求7所述的視頻播放方法,其特征在于,所述的步驟“判斷相對系統(tǒng)時間是 否小于相對時間戳”還包括步驟如果否,顯示圖像幀,并進(jìn)入步驟“讀取緩沖區(qū)的圖像幀和相對時間戳”。
9.如權(quán)利要求7所述的視頻播放方法,其特征在于,所述的步驟“休眠一個等待周期” 之后還包括步驟“等待周期期滿,休眠被喚醒,再次判斷相對系統(tǒng)時間是否小于相對時間 戳”。
10.如權(quán)利要求7所述的視頻播放方法,其特征在于,所述的一個等待周期是1000ms/ (幀率*2)(取整數(shù))。
11.如權(quán)利要求7所述的視頻播放方法,其特征在于,所述的相對系統(tǒng)時間替換為相對音頻時間。
12.一種視頻播放裝置,其特征在于,所述裝置包括讀取模塊,與第二判斷模塊相連,用于讀取緩存區(qū)的圖像幀和相對時間戳,向第二判斷 模塊發(fā)送讀取完成指令,接收第二判斷模塊的顯示指令,發(fā)送圖像幀;第二判斷模塊,與讀取模塊、顯示模塊和第二休眠模塊相連,用于接收讀取模塊的讀取 完成指令和接收第二休眠模塊發(fā)送的休眠期滿指令,根據(jù)相對系統(tǒng)時間與相對時間戳的對 比結(jié)果,向讀取模塊和顯示模塊發(fā)送顯示指令或向第二休眠模塊發(fā)送休眠指令;顯示模塊,與第二判斷模塊相連,用于接收第二判斷模塊的顯示指令,獲取圖像幀并顯示;第二休眠模塊,與第二判斷模塊相連,用于接收第二判斷模塊發(fā)送的休眠指令,進(jìn)入一 個等待周期的休眠狀態(tài);并用于接收操作系統(tǒng)發(fā)送的喚醒指令,向第二判斷模塊發(fā)送休眠 期滿指令。
13.—種視頻解碼和播放系統(tǒng),其特征在于,所述系統(tǒng)包括 解碼裝置和播放裝置;解碼模塊,與第一判斷模塊相連,用于獲取視頻幀和相對時間戳,視頻幀解碼,生成圖 像幀,向第一判斷模塊發(fā)送解碼完成的指令,接收第一判斷模塊的存儲指令;第一判斷模塊,與解碼模塊、緩沖模塊和第一休眠模塊相連,用于接收解碼模塊的解碼 完成的指令,請求獲取緩沖模塊的存儲狀態(tài),根據(jù)緩沖模塊的存儲狀態(tài)向解碼模塊發(fā)送存 儲指令或向第一休眠模塊發(fā)送休眠指令;并根據(jù)第一休眠模塊發(fā)送的休眠期滿指令,判斷 所述緩沖模塊的存儲狀態(tài)為未滿或已滿,如果存儲狀態(tài)為未滿,則向解碼模塊發(fā)送存儲指 令,如果存儲狀態(tài)為已滿,第一休眠模塊發(fā)送休眠指令;緩沖模塊,與第一判斷模塊相連,用于接收第一判斷模塊的獲取緩沖模塊的存儲狀態(tài) 的請求,并向第一判斷模塊發(fā)送緩沖模塊的存儲狀態(tài),同時接收解碼模塊發(fā)送的圖像幀和 相對時間戳,并存儲;第一休眠模塊,與第一判斷模塊相連,用于接收第一判斷模塊發(fā)送的休眠指令,進(jìn)入一 個等待周期的休眠狀態(tài),接收操作系統(tǒng)發(fā)送的喚醒指令,向第一判斷模塊發(fā)送休眠期滿指 令;讀取模塊,與第二判斷模塊相連,用于讀取緩存區(qū)的圖像幀和相對時間戳,向第二判斷 模塊發(fā)送讀取完成指令,接收第二判斷模塊的顯示指令,發(fā)送圖像幀;第二判斷模塊,與讀取模塊、顯示模塊和第二休眠模塊相連,用于接收讀取模塊的讀取 完成指令和接收第二休眠模塊發(fā)送的休眠期滿指令,根據(jù)相對系統(tǒng)時間與相對時間戳的對 比結(jié)果,向讀取模塊和顯示模塊發(fā)送顯示指令或向第二休眠模塊發(fā)送休眠指令;顯示模塊,與第二判斷模塊相連,用于接收第二判斷模塊的顯示指令,獲取圖像幀并顯示;第二休眠模塊,與第二判斷模塊相連,用于接收第二判斷模塊發(fā)送的休眠指令,進(jìn)入一 個等待周期的休眠狀態(tài);并用于接收操作系統(tǒng)發(fā)送的喚醒指令,向第二判斷模塊發(fā)送休眠 期滿指令。
14.一種包括如權(quán)利要求13所述視頻解碼和播放系統(tǒng)的終端設(shè)備。
全文摘要
本發(fā)明公開一種視頻解碼和播放的方法、系統(tǒng)、終端設(shè)備,通過操作系統(tǒng)控制解碼與播放的工作線程的優(yōu)先級,解碼視頻幀生成圖像幀后,根據(jù)緩沖區(qū)的存儲狀態(tài)控制圖像幀的存儲或者解碼線程的休眠,播放的工作線程讀取緩沖區(qū)中的圖像幀和相對時間戳,根據(jù)相對系統(tǒng)時間與相對時間戳的對比結(jié)果控制圖像幀的顯示或者播放線程的休眠。即使在解碼某一幀占用CPU時間過高時,并不影響播放裝置顯示圖像幀,可以準(zhǔn)確的把緩沖區(qū)里的圖像按時顯示。在解碼和顯示過程中,設(shè)定的休眠時間,確保工作線程無需工作的情況下進(jìn)入休眠狀態(tài),避免占用CPU,兼容CPU運(yùn)行頻率低又能處理高碼率高幀率的終端嵌入式終端設(shè)備,適用無音頻的視頻解碼和播放。
文檔編號H04N7/24GK101951517SQ20101029484
公開日2011年1月19日 申請日期2010年9月27日 優(yōu)先權(quán)日2010年9月27日
發(fā)明者劉驍 申請人:深圳市融創(chuàng)天下科技發(fā)展有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1