欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種注入解碼器數(shù)據(jù)的管理方法

文檔序號(hào):7802525閱讀:440來(lái)源:國(guó)知局
專利名稱:一種注入解碼器數(shù)據(jù)的管理方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種注入解碼器數(shù)據(jù)的管理方法,屬于音視頻信號(hào)處理技術(shù)領(lǐng)域。
背景技術(shù)
現(xiàn)有的基于解碼器的數(shù)據(jù)沒(méi)有一定的管理模式,在視頻解碼播放時(shí),機(jī)械地把需要解碼的數(shù)據(jù)直接往解碼器里面送,不管解碼器現(xiàn)有緩沖區(qū)處于什么狀態(tài)。如果解碼器緩沖區(qū)為滿的情況下,往解碼器里面送數(shù)據(jù),就會(huì)失敗,對(duì)于沒(méi)有送到解碼器的數(shù)據(jù)則直接丟棄掉了。這就會(huì)導(dǎo)致音視頻播放不連續(xù),一些音視頻信息丟失,播放效果很差?;诖?,如何發(fā)明一種注入解碼器數(shù)據(jù)的管理方法,通過(guò)增加對(duì)注入解碼器的數(shù)據(jù)進(jìn)行管理,則保證了數(shù)據(jù)在注入失敗的情況下,還能夠保留,并為下次注入提供了原來(lái)的數(shù)據(jù),是本發(fā)明主要解決的問(wèn)題。

發(fā)明內(nèi)容
本發(fā)明為了解決目前還沒(méi)有一種對(duì)注入解碼器的數(shù)據(jù)進(jìn)行管理的方法,本發(fā)明提供了一種注入解碼器數(shù)據(jù)的管理方法,通過(guò)增加對(duì)注入解碼器的數(shù)據(jù)進(jìn)行管理,有效避免了數(shù)據(jù)丟失以及音視頻的播放不連續(xù),播放效果好。為了解決上述技術(shù)問(wèn)題,本發(fā)明采用以下技術(shù)方案予以實(shí)現(xiàn) 一種注入解碼器數(shù)據(jù)的管理方法,其特征在于,包括以下步驟
在內(nèi)存中劃分一塊先進(jìn)先出緩沖區(qū)fifobuffer,待解碼的數(shù)據(jù)首先寫入fifobuffer ; 在高速緩沖寄存器cache中劃分一塊緩沖區(qū)cachebuffer,用于從fifobuffer中讀取數(shù)據(jù),以及將數(shù)據(jù)寫入至解碼器緩沖區(qū)。為了防止接收數(shù)據(jù)與注入數(shù)據(jù)不一致,而導(dǎo)致數(shù)據(jù)丟失,優(yōu)選的,所述的先進(jìn)先出緩沖區(qū)fifobuffer為循環(huán)先進(jìn)先出緩沖區(qū)。進(jìn)一步的,待解碼的數(shù)據(jù)寫入fifobuffer時(shí),包括以下步驟
(11 )、初始化fifobuffer,寫入指針in和讀出指針out歸零,其中,所述fifobuffer的大小為η ;
(12)、注入數(shù)據(jù)a;
(13)、比較fifobuffer剩余空間b與注入數(shù)據(jù)a的大小,若a> b,則返回步驟(12), 否則,執(zhí)行步驟(14);
(14)、將數(shù)據(jù)寫入到fifobuffer;
(15)、修改寫入指針in=in+a。又進(jìn)一步的,為了防止修改后的寫入指針大于fifobuffer空間長(zhǎng)度,導(dǎo)致指針出錯(cuò),在步驟(15)之后還包括
(16)、修正寫入指針in,使其在0 (n-1)的范圍內(nèi)。再進(jìn)一步的,待解碼的數(shù)據(jù)從fifobuffer取出時(shí),包括以下步驟 (21)、接收到取出數(shù)據(jù)量為c的命令;(22)、比較fifobuffer中數(shù)據(jù)量d與c的大小關(guān)系,確定讀取數(shù)據(jù)量為e的數(shù)據(jù),其中 e為d和c中的較小者;
(23)、修改讀出指針out。由于讀出指針out的位置不固定,步驟(22)與步驟(23)之間還包括以下步驟 (2加)、計(jì)算讀出指針out到n-1之間數(shù)據(jù)的大小f,若e小于或等于f,則從out指針
開(kāi)始讀取e大小的數(shù)據(jù),否則,從out指針開(kāi)始讀取到fifobuffer的末尾,再?gòu)?讀取e-f 大小的數(shù)據(jù)。為了防止修改后的讀出指針大于fifobuffer空間長(zhǎng)度,導(dǎo)致指針出錯(cuò),,步驟 (23)之后還包括
(對(duì))、修正讀出指針out,使其在0 (n-1)的范圍內(nèi)。再進(jìn)一步的,cachebuffer從fifobuffer中讀取數(shù)據(jù)時(shí),包括以下步驟
(31)、判斷現(xiàn)有數(shù)據(jù)控制狀態(tài)是開(kāi)始狀態(tài)、sleep狀態(tài)、還是stop狀態(tài),若是開(kāi)始狀態(tài), 則執(zhí)行步驟(32),若是sle印狀態(tài),則執(zhí)行步驟(41),若是stop狀態(tài),則執(zhí)行步驟(42);
(32)、計(jì)算cachebuffer剩余空間;
(33)、如果cachebuffer剩余空間大小為0,則返回步驟(32);否則繼續(xù)步驟(34);
(34)、查看當(dāng)前fifobuffer中數(shù)據(jù)大?。?br> (35)、如果cachebuffer剩余空間小于fifobuffer數(shù)據(jù)大小,繼續(xù)步驟(36);否則繼續(xù)步驟(37);
(36)、在fifobuffer里面取cachebuffer剩余空間大小的數(shù)據(jù),放到cachebuffer里
(37)、在fifobuffer里面取現(xiàn)有所有的fifobuffer數(shù)據(jù),放在cachebuffer里面;
(38)、修改cachebuffer 的寫入 皆針 producer ;
(39)、從cachebuffer中取出數(shù)據(jù)注入解碼器中;
(40)、修改cachebuffer 的讀出 旨針 comsumer ;
(41)、延時(shí)一定時(shí)間后,返回步驟(31);
(42)、停止解碼器注入任務(wù)。更進(jìn)一步的,步驟(39)包括以下子步驟 (39a)、查看解碼器緩沖區(qū)可用空間大??;
(39b)、如果解碼器緩沖區(qū)可用空間為0,則繼續(xù)步驟(41),否則,繼續(xù)步驟(39c); (39c)、計(jì)算可以注入解碼器的數(shù)據(jù)大小如果cachebuffer中數(shù)據(jù)量大于解碼器緩沖區(qū)可用空間大小,繼續(xù)步驟(39d);否則,繼續(xù)步驟(39e);
(39d)、從cachebuffer取解碼器緩沖可用空間大小的數(shù)據(jù),繼續(xù)步驟(39f); (39e)、從cachebuffer取出所有的數(shù)據(jù); (39f)、將取出的數(shù)據(jù)注入解碼器中。與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)和積極效果是本發(fā)明的注入解碼器數(shù)據(jù)的管理方法,通過(guò)在內(nèi)存中劃分出一塊緩沖區(qū),將注入解碼器的數(shù)據(jù)首先注入進(jìn)緩沖區(qū),進(jìn)行管理,有效防止了數(shù)據(jù)丟失,以及音視頻的播放不流暢,馬賽克、丟幀等現(xiàn)象。結(jié)合附圖閱讀本發(fā)明實(shí)施方式的詳細(xì)描述后,本發(fā)明的其他特點(diǎn)和優(yōu)點(diǎn)將變得更加清楚。


圖1是本發(fā)明所提出的數(shù)據(jù)管理方法一種實(shí)施例中緩沖區(qū)fifobuffer初始狀態(tài)示意圖2是本發(fā)明所提出的數(shù)據(jù)管理方法一種實(shí)施例中緩沖區(qū)fifobuffer注入數(shù)據(jù)后狀態(tài)示意圖3是本發(fā)明所提出的數(shù)據(jù)管理方法一種實(shí)施例中緩沖區(qū)fifobuffer注入數(shù)據(jù)后另外一種狀態(tài)示意圖4是本發(fā)明所提出的數(shù)據(jù)管理方法一種實(shí)施例中緩沖區(qū)fifobuffer注入數(shù)據(jù)后再一種狀態(tài)示意圖5是本發(fā)明所提出的數(shù)據(jù)管理方法一種實(shí)施例中緩沖區(qū)fifobuffer注入數(shù)據(jù)流程
圖6是本發(fā)明所提出的數(shù)據(jù)管理方法一種實(shí)施例中緩沖區(qū)fifobuffer取出數(shù)據(jù)流程
圖7是本發(fā)明所提出的數(shù)據(jù)管理方法一種實(shí)施例中cachebuffer從fifobuffer中讀取數(shù)據(jù)時(shí)流程圖。
具體實(shí)施例方式針對(duì)目前還沒(méi)有一種對(duì)注入解碼器的數(shù)據(jù)進(jìn)行管理的方法,在對(duì)視頻解碼時(shí),機(jī)械地把需要解碼的數(shù)據(jù)直接往解碼器里面送,沒(méi)有考慮解碼器現(xiàn)有緩沖區(qū)處于什么狀態(tài)。 如果解碼器緩沖區(qū)為滿的情況下,往解碼器里面送數(shù)據(jù),就會(huì)失敗,對(duì)于沒(méi)有送到解碼器的數(shù)據(jù)則直接丟棄掉了,導(dǎo)致一些音視頻信息丟失,音視頻播放不連續(xù),播放效果很差。針對(duì)上述情況,本發(fā)明提供了一種基于解碼器的數(shù)據(jù)管理技術(shù),通過(guò)增加對(duì)注入解碼器的數(shù)據(jù)進(jìn)行管理,有效避免了數(shù)據(jù)丟失以及音視頻的播放不連續(xù)、丟幀、馬賽克等現(xiàn)象。下面結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施方式
作進(jìn)一步詳細(xì)地說(shuō)明。實(shí)施例一,本實(shí)施例的注入解碼器數(shù)據(jù)的管理方法,包括以下步驟
51、在內(nèi)存中劃分一塊先進(jìn)先出緩沖區(qū)fifobuffer,待解碼的數(shù)據(jù)首先寫入 fifobuffer ;
52、在高速緩沖寄存器cache中劃分一塊緩沖區(qū)cachebuffer,用于從fifobuffer中讀取數(shù)據(jù),以及將數(shù)據(jù)寫入至解碼器緩沖區(qū)。為了防止接收數(shù)據(jù)與注入數(shù)據(jù)不一致,而導(dǎo)致數(shù)據(jù)丟失,以及保證數(shù)據(jù)輸入輸出順序一致,優(yōu)選的,所述的先進(jìn)先出緩沖區(qū)fifobuffer為循環(huán)先進(jìn)先出緩沖區(qū)。作為一個(gè)具體的實(shí)施例,在本實(shí)施例中,參見(jiàn)圖1所示,為緩沖區(qū)fifobuffer的初始狀態(tài)圖,當(dāng)待解碼的數(shù)據(jù)寫入fifobuffer時(shí),流程圖參見(jiàn)圖5所示,包括以下步驟
Sl 1、初始化fifobuffer,寫入指針in和讀出指針out歸零,其中,所述fifobuffer的大小為η ;
512、注入數(shù)據(jù)a;
513、比較fifobuffer剩余空間b與注入數(shù)據(jù)a的大小,若a> b,則返回步驟S12,否貝U,執(zhí)行步驟S14;514、將數(shù)據(jù)寫入到fifobuffer;
515、修改寫入指針in=in+a。緩沖區(qū)fifobuffer注入數(shù)據(jù)后的狀態(tài)圖參見(jiàn)圖2所示,由于本次任務(wù)只注入了數(shù)據(jù),還未取出,因此讀出指針out仍然在0的位置,寫入指針已經(jīng)隨著寫入數(shù)據(jù)的大小調(diào)整到了相應(yīng)位置。當(dāng)然,若本次注入數(shù)據(jù)不是首次注入,也即之前有注入的數(shù)據(jù),所以,緩沖區(qū) fifobuffer注入數(shù)據(jù)后的狀態(tài)圖另外一種示意圖可以參見(jiàn)圖3、圖4所示的狀態(tài)。為了防止修改后的寫入指針大于fifobuffer空間長(zhǎng)度,導(dǎo)致指針出錯(cuò),在步驟 S15之后還包括
516、修正寫入指針in,使其在0 (η-l)的范圍內(nèi)。待解碼的數(shù)據(jù)從fifobuffer取出時(shí),參見(jiàn)圖6所示,包括以下步驟
521、接收到取出數(shù)據(jù)量為c的命令;
522、比較fifobuffer中數(shù)據(jù)量d與c的大小關(guān)系,確定讀取數(shù)據(jù)量為e的數(shù)據(jù),其中 e為d和c中的較小者;
本步驟是為了防止需要取出數(shù)據(jù)與fifobuffer中現(xiàn)有的數(shù)據(jù)量d不一致時(shí),導(dǎo)致取出數(shù)據(jù)出錯(cuò)而設(shè)置的。S23、修改讀出指針out。由于讀出指針out的位置不固定,步驟S22與步驟S23之間還包括以下步驟 S22a、計(jì)算讀出指針out到η-l之間數(shù)據(jù)的大小f,若e小于或等于f,則從out指針開(kāi)
始讀取e大小的數(shù)據(jù),否則,從out指針開(kāi)始讀取到fifobuffer的末尾,再?gòu)?讀取e-f大小的數(shù)據(jù)。為了防止修改后的讀出指針大于fifobuffer空間長(zhǎng)度,導(dǎo)致指針出錯(cuò),步驟S23 之后還包括
S24、修正讀出指針out,使其在0 (η-l)的范圍內(nèi)。當(dāng)cachebuffer從fifobuffer中讀取數(shù)據(jù)時(shí),參見(jiàn)圖7所示,包括以下步驟
531、判斷現(xiàn)有數(shù)據(jù)控制狀態(tài)是開(kāi)始狀態(tài)、sleep狀態(tài)、還是stop狀態(tài),若是開(kāi)始狀態(tài), 則執(zhí)行步驟S32,若是sIe印狀態(tài),則執(zhí)行步驟S41,若是stop狀態(tài),則執(zhí)行步驟S42 ;
532、計(jì)算cachebuffer剩余空間g;
533、如果cachebuffer剩余空間g大小為0,則返回步驟S32;否則繼續(xù)步驟S34 ;
534、查看當(dāng)前fifobuffer中數(shù)據(jù)大小k;
535、如果cachebuffer剩余空間g小于fifobuffer數(shù)據(jù)大小h,繼續(xù)步驟S36;否則繼續(xù)步驟S37 ;
536、在fifobuffer里面取cachebuffer剩余空間大小h的數(shù)據(jù),放到cachebuffer里
面;
537、在fifobuffer里面取現(xiàn)有所有的fifobuffer數(shù)據(jù),放在cachebuffer里面;
538、修改cachebuffer 的寫入 皆針 producer ;
539、從cachebuffer中取出數(shù)據(jù)注入解碼器中;
540、修改cachebuffer 的讀出 旨針 comsumer ;
541、延時(shí)一定時(shí)間后,返回步驟S31;
542、停止解碼器注入任務(wù)。
更進(jìn)一步的,步驟S39包括以下子步驟 S39a、查看解碼器緩沖區(qū)可用空間大小i ;
S39b、如果解碼器緩沖區(qū)可用空間為0,則繼續(xù)步驟S41,否則,繼續(xù)步驟S39c ; S39c、計(jì)算可以注入解碼器的數(shù)據(jù)大小如果cachebuffer中數(shù)據(jù)量h大于解碼器緩沖區(qū)可用空間大小i,繼續(xù)步驟S39d ;否則,繼續(xù)步驟S39e ;
S39d、從cachebuffer取解碼器緩沖可用空間大小i的數(shù)據(jù),繼續(xù)步驟S39f ; S39e、從cachebuffer取出所有的數(shù)據(jù); S39f、將取出的數(shù)據(jù)注入解碼器中。本發(fā)明的注入解碼器數(shù)據(jù)的管理方法,通過(guò)在內(nèi)存中劃分出一塊緩沖區(qū),將注入解碼器的數(shù)據(jù)首先注入進(jìn)緩沖區(qū),進(jìn)行管理,數(shù)據(jù)經(jīng)過(guò)先進(jìn)先出緩沖區(qū)后,再注入解碼器, 有效防止了數(shù)據(jù)丟失,在任何階段注入數(shù)據(jù)之前,均比較所注入數(shù)據(jù)與被注入緩沖區(qū)剩余空間的大小,以決定所實(shí)際注入數(shù)據(jù)的大小,同樣有效防止了數(shù)據(jù)丟失,進(jìn)而防止了音視頻的播放不連續(xù)現(xiàn)象,播放效果好。當(dāng)然,上述說(shuō)明并非是對(duì)本發(fā)明的限制,本發(fā)明也并不僅限于上述舉例,本技術(shù)領(lǐng)域的普通技術(shù)人員在本發(fā)明的實(shí)質(zhì)范圍內(nèi)所做出的變化、改型、添加或替換,也應(yīng)屬于本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種注入解碼器數(shù)據(jù)的管理方法,其特征在于,包括以下步驟在內(nèi)存中劃分一塊先進(jìn)先出緩沖區(qū)fifobuffer,待解碼的數(shù)據(jù)首先寫入fifobuffer ;在高速緩沖寄存器cache中劃分一塊緩沖區(qū)cachebuffer,用于從fifobuffer中讀取數(shù)據(jù),以及將數(shù)據(jù)寫入至解碼器緩沖區(qū)。
2.根據(jù)權(quán)利要求1所述的注入解碼器數(shù)據(jù)的管理方法,其特征在于,所述的先進(jìn)先出緩沖區(qū)fifobuffer為循環(huán)先進(jìn)先出緩沖區(qū)。
3.根據(jù)權(quán)利要求2所述的注入解碼器數(shù)據(jù)的管理方法,其特征在于,待解碼的數(shù)據(jù)寫入fifobuffer時(shí),包括以下步驟(11 )、初始化fifobuffer,寫入指針in和讀出指針out歸零,其中,所述fifobuffer的大小為η ;(12)、注入數(shù)據(jù)a;(13)、比較fifobuffer剩余空間b與注入數(shù)據(jù)a的大小,若a> b,則返回步驟(12), 否則,執(zhí)行步驟(14);(14)、將數(shù)據(jù)寫入到fifobuffer;(15)、修改寫入指針in=in+a。
4.根據(jù)權(quán)利要求3所述的注入解碼器數(shù)據(jù)的管理方法,其特征在于,在步驟(15)之后還包括(16)、修正寫入指針in,使其在0 (n-1)的范圍內(nèi)。
5.根據(jù)權(quán)利要求2所述的注入解碼器數(shù)據(jù)的管理方法,其特征在于,待解碼的數(shù)據(jù)從 fifobuffer取出時(shí),包括以下步驟(21)、接收到取出數(shù)據(jù)量為c的命令;(22)、比較fifobuffer中數(shù)據(jù)量d與c的大小關(guān)系,確定讀取數(shù)據(jù)量為e的數(shù)據(jù),其中 e為d和c中的較小者;(23)、修改讀出指針out。
6.根據(jù)權(quán)利要求5所述的注入解碼器數(shù)據(jù)的管理方法,其特征在于,步驟(22)與步驟 (23)之間還包括以下步驟(2加)、計(jì)算讀出指針out到n-1之間數(shù)據(jù)的大小f,若e小于或等于f,則從out指針開(kāi)始讀取e大小的數(shù)據(jù),否則,從out指針開(kāi)始讀取到fifobuffer的末尾,再?gòu)?讀取e-f 大小的數(shù)據(jù)。
7.根據(jù)權(quán)利要求6所述的注入解碼器數(shù)據(jù)的管理方法,其特征在于,步驟(23)之后還包括(對(duì))、修正讀出指針out,使其在0 (n-1)的范圍內(nèi)。
8.根據(jù)權(quán)利要求2所述的注入解碼器數(shù)據(jù)的管理方法,其特征在于,cachebuffer從 fifobuffer中讀取數(shù)據(jù)時(shí),包括以下步驟(31)、判斷現(xiàn)有數(shù)據(jù)控制狀態(tài)是開(kāi)始狀態(tài)、sleep狀態(tài)、還是stop狀態(tài),若是開(kāi)始狀態(tài), 則執(zhí)行步驟(32),若是sle印狀態(tài),則執(zhí)行步驟(41),若是stop狀態(tài),則執(zhí)行步驟(42);(32)、計(jì)算cachebuffer剩余空間;(33 )、如果cachebuffer剩余空間大小為0,則返回步驟(32 );否則繼續(xù)步驟(34);(34)、查看當(dāng)前fifobuffer中數(shù)據(jù)大??;(35)、如果cachebuffer剩余空間小于fifobuffer數(shù)據(jù)大小,繼續(xù)步驟(36);否則繼續(xù)步驟(37);(36)、在fifobuffer里面取cachebuffer剩余空間大小的數(shù)據(jù),放到cachebuffer里(37)、在fifobuffer里面取現(xiàn)有所有的fifobuffer數(shù)據(jù),放在cachebuffer里面;(38)、修改cachebuffer 的寫入 皆針 producer ;(39)、從cachebuffer中取出數(shù)據(jù)注入解碼器中;(40)、修改cachebuffer 的讀出 旨針 comsumer ;(41)、延時(shí)一定時(shí)間后,返回步驟(31);(42)、停止解碼器注入任務(wù)。
9.根據(jù)權(quán)利要求8所述的注入解碼器數(shù)據(jù)的管理方法,其特征在于,步驟(39)包括以下子步驟(39a)、查看解碼器緩沖區(qū)可用空間大??;(39b)、如果解碼器緩沖區(qū)可用空間為0,則繼續(xù)步驟(41),否則,繼續(xù)步驟(39c); (39c)、計(jì)算可以注入解碼器的數(shù)據(jù)大小如果cachebuffer中數(shù)據(jù)量大于解碼器緩沖區(qū)可用空間大小,繼續(xù)步驟(39d);否則,繼續(xù)步驟(39e);(39d)、從cachebuffer取解碼器緩沖可用空間大小的數(shù)據(jù),繼續(xù)步驟(39f); (39e)、從cachebuffer取出所有的數(shù)據(jù); (39f)、將取出的數(shù)據(jù)注入解碼器中。
全文摘要
本發(fā)明公開(kāi)了一種注入解碼器數(shù)據(jù)的管理方法,包括以下步驟在內(nèi)存中劃分一塊先進(jìn)先出緩沖區(qū)fifobuffer,待解碼的數(shù)據(jù)首先寫入fifobuffer;在高速緩沖寄存器cache中劃分一塊緩沖區(qū)cachebuffer,用于從fifobuffer中讀取數(shù)據(jù),以及將數(shù)據(jù)寫入至解碼器緩沖區(qū)。本注入解碼器數(shù)據(jù)的管理方法,通過(guò)在內(nèi)存中劃分出一塊緩沖區(qū),將注入解碼器的數(shù)據(jù)首先注入進(jìn)緩沖區(qū),進(jìn)行管理,有效防止了數(shù)據(jù)丟失、以及音視頻的播放不流暢、馬賽克、丟幀等現(xiàn)象。
文檔編號(hào)H04N7/26GK102495810SQ20111044665
公開(kāi)日2012年6月13日 申請(qǐng)日期2011年12月28日 優(yōu)先權(quán)日2011年12月28日
發(fā)明者張維 申請(qǐng)人:青島海信寬帶多媒體技術(shù)有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
娄烦县| 无棣县| 博湖县| 娱乐| 文昌市| 信宜市| 日照市| 东辽县| 镇康县| 丹东市| 马尔康县| 长岛县| 绵竹市| 武乡县| 牡丹江市| 泗水县| 蚌埠市| 虎林市| 绍兴县| 洪湖市| 翁源县| 宝丰县| 平昌县| 饶河县| 久治县| 漳平市| 富顺县| 台北县| 平泉县| 资源县| 区。| 隆林| 冀州市| 宁晋县| 哈尔滨市| 大兴区| 惠来县| 庄河市| 罗平县| 金山区| 桐柏县|