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

一種多線程的音視頻同步控制方法及系統(tǒng)的制作方法

文檔序號(hào):7555495閱讀:409來源:國知局
專利名稱:一種多線程的音視頻同步控制方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明屬于數(shù)字音視頻技術(shù)領(lǐng)域,涉及一種多線程的音視頻同步控制方法及系統(tǒng)。
背景技術(shù)
目前流行的視頻編解碼標(biāo)準(zhǔn),例如MPEG-1、MPEG-2、MPEG-4、H.26x等都是采用傳統(tǒng)的混合編碼結(jié)構(gòu),該結(jié)構(gòu)采用時(shí)間和空間的預(yù)測(cè)、變換、量化和熵編碼方法,將視頻幀編碼為不同的幀類型:幀內(nèi)預(yù)測(cè)幀(I幀)、幀間預(yù)測(cè)幀(P幀)和雙向預(yù)測(cè)幀(B幀),這必將導(dǎo)致視頻解碼速度因視頻內(nèi)容而有所不同,而視頻的播放幀率是固定的,從而導(dǎo)致了視頻解碼速度與顯示速度不匹配等問題,而且音頻和視頻是分開編碼和傳輸,而在播放時(shí)要求同步輸出,如果不采用比較好的控制方法,很容易導(dǎo)致音視頻輸出不同步的現(xiàn)象。解決這個(gè)問題的方法,現(xiàn)有技術(shù)一般是采用較大的緩沖區(qū)來緩沖編碼數(shù)據(jù)和編碼后的圖像和音頻幀。由于圖像內(nèi)容的不確定性又給緩沖區(qū)大小的確定帶來了困難,緩沖區(qū)太小則數(shù)據(jù)溢出,緩沖區(qū)太大又造成內(nèi)存空間的浪費(fèi)。

發(fā)明內(nèi)容
為了解決現(xiàn)有技術(shù)所存在的以上問題,本發(fā)明的目的在于提供了一種多線程的音視頻同步控制方法,所述方法采用操作系統(tǒng)信號(hào)量、條件變量、系統(tǒng)層定義的節(jié)目參考時(shí)鐘PCR(Program Clock Reference)和顯不時(shí)間戮PTS(Presentation Time Stamp),從而使得音視頻在同一的本地系統(tǒng)時(shí)鐘STC (System Time clock)的參考下按照PTS時(shí)刻嚴(yán)格輸出,從而實(shí)現(xiàn)了音視頻同步播放。本發(fā)明的另一 目的在于提供一種多線程的音視頻同步控制系統(tǒng)。本發(fā)明的目的通過以下技術(shù)方案實(shí)現(xiàn):一種多線程的音視頻同步控制方法,包括以下步驟:步驟1、創(chuàng)建五個(gè)線程,分別是解復(fù)用線程、音頻解碼線程、視頻解碼線程、音頻同步輸出線程和視頻同步輸出線程;步驟2、啟動(dòng)解復(fù)用線程完成對(duì)系統(tǒng)層的傳輸流或節(jié)目流的解復(fù)用處理,將傳輸流或節(jié)目流拆分成音頻基本流、視頻基本流以及時(shí)間信息;然后將音頻基本流插入音頻基本流隊(duì)列尾部,將視頻基本流插入視頻基本流隊(duì)列尾部,激活解碼線程;若音頻基本流隊(duì)列或視頻基本流隊(duì)列溢出則解復(fù)用線程掛起等待;步驟3、啟動(dòng)音頻解碼線程和視頻解碼線程分別解碼音頻基本流隊(duì)列和視頻基本流隊(duì)列中的比特流,并將時(shí)間信息和解碼后的音頻數(shù)據(jù)和圖像數(shù)據(jù),分別插入音頻輸出隊(duì)列尾部和視頻輸出隊(duì)列尾部,激活音頻輸出線程或視頻輸出線程;若音頻輸出隊(duì)列或視頻輸出隊(duì)列溢出則解碼線程掛起等待;步驟4、啟動(dòng)音頻同步輸出線程和視頻同步輸出線程,根據(jù)解碼后的時(shí)間戳與本地系統(tǒng)時(shí)鐘的差值,選擇符合輸出時(shí)間的數(shù)據(jù)進(jìn)行輸出;并根據(jù)視頻與音頻的時(shí)間戳的差值,對(duì)視頻播放進(jìn)行重復(fù)與跳幀處理,從而使得音視頻同步輸出。在上述控制方法中,步驟2所述激活解碼線程通過對(duì)信號(hào)量進(jìn)行P操作完成。在上述控制方法中,步驟3所述激活音頻輸出線程或視頻輸出線程通過激活條件變量完成。在上述控制方法中,步驟3所述的音頻解碼過程如下:(a)音頻解碼線程阻塞于音頻信號(hào)量,在解復(fù)用線程激活信號(hào)量后開始解碼;(b)對(duì)音頻基本流隊(duì)列頭的音頻基本流進(jìn)行解碼;(C)將解碼后一幀音頻數(shù)據(jù)插入音頻輸出隊(duì)列尾部,并激活音頻輸出條件變量;
(d)將音頻基本流隊(duì)列中的時(shí)間戳值保存在音頻輸出隊(duì)列對(duì)應(yīng)節(jié)點(diǎn)中;所述音頻輸出隊(duì)列通過該隊(duì)列的長(zhǎng)度判斷其是否溢出,若音頻輸出隊(duì)列溢出則音頻解碼線程掛起等待;步驟3所述的視頻解碼過程如下:(a)視頻解碼線程阻塞于視頻信號(hào)量,在解復(fù)用線程激活信號(hào)量后開始解碼;(b)對(duì)視頻基本流隊(duì)列頭的視頻基本流進(jìn)行解碼;(c)將解碼后的一幀圖像數(shù)據(jù)插入視頻輸出隊(duì)列尾部,并激活視頻輸出條件變量;(d)將視頻基本流隊(duì)列中的時(shí)間戳值保存在視頻輸出隊(duì)列對(duì)應(yīng)節(jié)點(diǎn)中;所述視頻輸出隊(duì)列通過該隊(duì)列的長(zhǎng)度判斷其是否溢出,若視頻輸出隊(duì)列溢出則視頻解碼線程掛起等待。在上述控制方法中,步驟4所述的音頻輸出過程如下:(a)音頻輸出線程阻塞于音頻輸出條件變量;(b)在音頻解碼線程激活條件變量后,計(jì)算當(dāng)前時(shí)刻的本地系統(tǒng)時(shí)鐘;
(c)查找音頻輸出隊(duì)列中時(shí)間戳值與本地系統(tǒng)時(shí)鐘值最接近的隊(duì)列節(jié)點(diǎn),將該隊(duì)列節(jié)點(diǎn)的音頻數(shù)據(jù)輸出;步驟4所述的視頻輸出過程如下:(a)視頻輸出線程阻塞于視頻輸出條件變量;(b)在視頻解碼線程激活條件變量后,計(jì)算當(dāng)前時(shí)刻的本地系統(tǒng)時(shí)鐘;(c)查找視頻輸出隊(duì)列中時(shí)間戳值與本地系統(tǒng)時(shí)鐘值最接近的隊(duì)列節(jié)點(diǎn),計(jì)算視頻時(shí)間戳值與音頻時(shí)間戳值的差值,如果視頻時(shí)間戳值大于音頻時(shí)間戳值,則重復(fù)顯示該隊(duì)列節(jié)點(diǎn)中的圖像,如果視頻時(shí)間戳值小于音頻時(shí)間戳值,則跳過該隊(duì)列節(jié)點(diǎn)。 在上述控制方法中,步驟2與步驟3線程間的同步處理采用的是信號(hào)量機(jī)制,通過對(duì)信號(hào)的PV操作協(xié)調(diào)解復(fù)用線程與解碼線程間的同步。在上述控制方法中,步驟3與步驟4線程間的同步處理采用的是條件變量,通過激活條件變量協(xié)調(diào)解碼線程與輸出線程間的同步。本發(fā)明的另一目的采用如下技術(shù)方案實(shí)現(xiàn):一種多線程的音視頻同步控制系統(tǒng),包括解復(fù)用模塊、音頻解碼器、視頻解碼器、音頻同步輸出模塊、視頻同步輸出模塊、用于保存首頻基本流的首頻基本流隊(duì)列、用于保存視頻基本流的視頻基本流隊(duì)列、用于保存解碼后的音頻數(shù)據(jù)的音頻輸出隊(duì)列、用于保存解碼后的視頻數(shù)據(jù)的視頻輸出隊(duì)列;其中解復(fù)用模塊用于對(duì)系統(tǒng)層的傳輸流或節(jié)目流進(jìn)行解復(fù)用,將其拆分成音頻基本流和視頻基本流后分別插入音頻基本流隊(duì)列和視頻基本流隊(duì)列,并獲取相應(yīng)的時(shí)間戳;音頻解碼器和視頻解碼器分別對(duì)音頻基本流隊(duì)列和視頻基本流隊(duì)列中的數(shù)據(jù)進(jìn)行解碼,將解碼后的音頻數(shù)據(jù)和視頻數(shù)據(jù)分別插入音頻輸出隊(duì)列和視頻輸出隊(duì)列;音頻輸出模塊、視頻輸出模塊根據(jù)解碼后數(shù)據(jù)的時(shí)間戳與本地系統(tǒng)時(shí)鐘的差值,選擇符合輸出時(shí)間的數(shù)據(jù)進(jìn)行輸出,并根據(jù)視頻與音頻的時(shí)間戳的差值,對(duì)視頻播放進(jìn)行重復(fù)與跳幀處理。本發(fā)明由于采用了上述技術(shù)方案,不僅有效地實(shí)現(xiàn)了音視頻的同步輸出,而且不需要緩沖大量的視頻編碼數(shù)據(jù)和音頻圖像數(shù)據(jù),從而很大程度地降低了對(duì)系統(tǒng)資源的使用,適合于嵌入式平臺(tái) ;此外軟件架構(gòu)采用并行處理,運(yùn)行效率高,實(shí)現(xiàn)復(fù)雜度低。


圖1是本發(fā)明的多線程控制流程 圖2是本發(fā)明的系統(tǒng)框圖。
具體實(shí)施例方式下面結(jié)合實(shí)施例及附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)的描述,但本發(fā)明的實(shí)施方式不限于此。本發(fā)明多線程的音視頻同步控制方法是基于嵌入式Linux操作系統(tǒng)的平臺(tái)開發(fā)與實(shí)現(xiàn)的,由操作系統(tǒng)對(duì)音視頻傳輸流或節(jié)目流進(jìn)行多線程的并行處理,其具體實(shí)施過程如圖1所示,包括下述步驟:
步驟1、創(chuàng)建五個(gè)線程,分別是解復(fù)用線程、音頻解碼線程、視頻解碼線程、音頻同步輸出線程和視頻同步輸出線程。步驟2、啟動(dòng)解復(fù)用線程完成對(duì)系統(tǒng)層的傳輸流或節(jié)目流的解復(fù)用處理,將傳輸流或節(jié)目流拆分成音頻基本流、視頻基本流以及時(shí)間信息;然后將音頻基本流插入音頻基本流隊(duì)列尾部,將視頻基本流插入視頻基本流隊(duì)列尾部,激活解碼線程;若音頻基本流隊(duì)列或視頻基本流隊(duì)列溢出則解復(fù)用線程掛起等待。對(duì)于傳輸流,本步驟所述的音頻基本流和視頻基本流是通過PID值(進(jìn)程標(biāo)識(shí)符)區(qū)分的,首先解析PID值為0x00的數(shù)據(jù)包,從該數(shù)據(jù)包中的節(jié)目關(guān)聯(lián)表PAT獲得各個(gè)節(jié)目的節(jié)目映射表PMT的PID值,解碼某個(gè)節(jié)目則解析該節(jié)目對(duì)應(yīng)的節(jié)目映射表,從而獲得該節(jié)目中音頻基本流的PID值以及視頻基本流的PID值,然后接收相應(yīng)PID值的數(shù)據(jù)包,將數(shù)據(jù)重組成PES (Packetized Elementary Streams,帶有包頭的基本碼流)分組后插入基本流隊(duì)列。對(duì)于節(jié)目流,則是通過各個(gè)PES數(shù)據(jù)分組中的Stream ID (流標(biāo)識(shí)符)標(biāo)志位區(qū)分音頻和視頻基本流。本步驟所述的時(shí)間信息是指PES分組中的時(shí)間戳PTS與節(jié)目參考時(shí)鐘PCR,將解析得到的PTS值保存在相應(yīng)的隊(duì)列節(jié)點(diǎn)中。解復(fù)用線程在將一整個(gè)PES分組的基本流插入基本流隊(duì)列后,對(duì)信號(hào)量進(jìn)行P操作(即對(duì)信號(hào)量申請(qǐng)資源)來激活解碼線程;所述音頻基本流隊(duì)列或視頻基本流隊(duì)列通過該隊(duì)列的長(zhǎng)度判斷其是否溢出,若溢出則解復(fù)用線程掛起等待。步驟3、啟動(dòng)音頻解碼線程和視頻解碼線程分別解碼音頻基本流隊(duì)列和視頻基本流隊(duì)列中的比特流,并將時(shí)間信息和解碼后的音頻數(shù)據(jù)和圖像數(shù)據(jù),分別插入音頻輸出隊(duì)列尾部和視頻輸出隊(duì)列尾部,激活音頻輸出線程或視頻輸出線程,若音頻輸出隊(duì)列或視頻輸出隊(duì)列溢出則解碼線程掛起等待。其中解碼后的音頻數(shù)據(jù)為PCM數(shù)據(jù)(Pulse CodeModulation,脈沖調(diào)制編碼數(shù)據(jù))。本步驟所述的音頻解碼過程如下:(a)音頻解碼線程阻塞于音頻信號(hào)量,在解復(fù)用線程激活信號(hào)量后開始解碼;(b)對(duì)音頻基本流隊(duì)列頭的音頻基本流進(jìn)行解碼;(c)將解碼后一幀音頻PCM數(shù)據(jù)插入音頻輸出隊(duì)列尾部,并激活音頻輸出條件變量;(d)將音頻基本流隊(duì)列中的時(shí)間戳PTS值保存在音頻輸出隊(duì)列對(duì)應(yīng)節(jié)點(diǎn)中;所述音頻輸出隊(duì)列通過該隊(duì)列的長(zhǎng)度判斷其是否溢出,若音頻輸出隊(duì)列溢出則音頻解碼線程掛起等待。

本步驟所述的視頻解碼過程如下:(a)視頻解碼線程阻塞于音頻信號(hào)量,在解復(fù)用線程激活信號(hào)量后開始解碼;(b)對(duì)視頻基本流隊(duì)列頭的視頻基本流進(jìn)行解碼;(C)將解碼后的一幀圖像數(shù)據(jù)插入視頻輸出隊(duì)列尾部,并激活視頻輸出條件變量;(d)將視頻基本流隊(duì)列中的時(shí)間戳PTS值保存在視頻輸出隊(duì)列對(duì)應(yīng)節(jié)點(diǎn)中;所述視頻輸出隊(duì)列通過該隊(duì)列的長(zhǎng)度判斷其是否溢出,若視頻輸出隊(duì)列溢出則視頻解碼線程掛起等待。步驟4、啟動(dòng)音頻同步輸出線程和視頻同步輸出線程,根據(jù)解碼后的時(shí)間戳與本地系統(tǒng)時(shí)鐘的差值,選擇符合輸出時(shí)間的數(shù)據(jù)進(jìn)行輸出;并根據(jù)視頻與音頻的時(shí)間戳的差值,對(duì)視頻播放進(jìn)行重復(fù)與跳幀處理,從而使得音視頻同步輸出。本步驟所述的音頻輸出過程由以下步驟實(shí)現(xiàn):(a)音頻輸出線程阻塞于音頻輸出條件變量;(b)在音頻解碼線程激活條件變量后,計(jì)算當(dāng)前時(shí)刻的本地系統(tǒng)時(shí)鐘STC ; (C)查找音頻輸出隊(duì)列中時(shí)間戳PTS值與STC值最接近的隊(duì)列節(jié)點(diǎn),將該隊(duì)列節(jié)點(diǎn)的音頻PCM數(shù)據(jù)輸出。

本步驟所述的視頻輸出過程由以下步驟實(shí)現(xiàn):(a)視頻輸出線程阻塞于視頻輸出條件變量;(b)在視頻解碼線程激活條件變量后,計(jì)算當(dāng)前時(shí)刻的本地系統(tǒng)時(shí)鐘STC ; (c)查找視頻輸出隊(duì)列中PTS值與STC值最接近的隊(duì)列節(jié)點(diǎn),計(jì)算視頻PTS與音頻PTS的差值,如果視頻PTS值大于音頻PTS值,則重復(fù)顯示該隊(duì)列節(jié)點(diǎn)中的圖像,如果視頻PTS值小于音頻PTS值,則跳過該隊(duì)列節(jié)點(diǎn)。步驟2與步驟3線程間的同步處理采用的是信號(hào)量機(jī)制,通過對(duì)信號(hào)的PV操作協(xié)調(diào)解復(fù)用線程與解碼線程間的同步,其中PV操作由p操作(即信號(hào)量加一)和V操作(即信號(hào)量減一,若信號(hào)量為零則掛起線程)組成。步驟2和步驟3緩沖基本流數(shù)據(jù)與解碼后的數(shù)據(jù)采用的是隊(duì)列,在隊(duì)列尾插入數(shù)據(jù),在隊(duì)列頭對(duì)數(shù)據(jù)進(jìn)行解碼。步驟3與步驟4線程間的同步處理采用的是條件變量,即通過激活條件變量來激活相應(yīng)的輸出線程。
本發(fā)明采用多線程的音視頻同步控制系統(tǒng)來實(shí)現(xiàn)上述控制方法。如圖2所示,本發(fā)明控制系統(tǒng)包括解復(fù)用模塊、音頻解碼器、視頻解碼器、音頻同步輸出模塊、視頻同步輸出模塊、用于保存音頻基本流的音頻基本流隊(duì)列、用于保存視頻基本流的視頻基本流隊(duì)列、用于保存解碼后的音頻數(shù)據(jù)的音頻輸出隊(duì)列、用于保存解碼后的視頻數(shù)據(jù)的視頻輸出隊(duì)列,其中解復(fù)用模塊用于對(duì)系統(tǒng)層的傳輸流或節(jié)目流進(jìn)行解復(fù)用,將其拆分成音頻基本流和視頻基本流后分別插入音頻基本流隊(duì)列和視頻基本流隊(duì)列,并獲取相應(yīng)的時(shí)間戳;音頻解碼器和視頻解碼器分別對(duì)音頻基本流隊(duì)列和視頻基本流隊(duì)列中的數(shù)據(jù)進(jìn)行解碼,將解碼后的音頻數(shù)據(jù)和視頻數(shù)據(jù)分別插入音頻輸出隊(duì)列和視頻輸出隊(duì)列;音頻輸出模塊、視頻輸出模塊根據(jù)解碼后數(shù)據(jù)的時(shí)間戳與本地系統(tǒng)時(shí)鐘的差值,選擇符合輸出時(shí)間的數(shù)據(jù)進(jìn)行輸出,并根據(jù)視頻與音頻的時(shí)間戳的差值,對(duì)視頻播放進(jìn)行重復(fù)與跳幀處理,從而使得音視頻同步輸出。其中解碼后的音頻數(shù)據(jù)為PCM數(shù)據(jù)。上述實(shí)施例為本發(fā)明較佳的實(shí)施方式,但本發(fā)明的實(shí)施方式并不受上述實(shí)施例的限制,其他的任何未背離本發(fā)明的精神實(shí)質(zhì)與原理下所作的改變、修飾、替代、組合、簡(jiǎn)化,均應(yīng)為等效的置換方式,都包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種多線程的音視頻同步控制方法,其特征在于包括以下步驟:步驟1、創(chuàng)建五個(gè)線程,分別是解復(fù)用線程、音頻解碼線程、視頻解碼線程、音頻同步輸出線程和視頻同步輸出線程; 步驟2、啟動(dòng)解復(fù)用線程完成對(duì)系統(tǒng)層的傳輸流或節(jié)目流的解復(fù)用處理,將傳輸流或節(jié)目流拆分成音頻基本流、視頻基本流以及時(shí)間信息;然后將音頻基本流插入音頻基本流隊(duì)列尾部,將視頻基本流插入視頻基本流隊(duì)列尾部,激活解碼線程;若音頻基本流隊(duì)列或視頻基本流隊(duì)列溢出則解復(fù)用線程掛起等待; 步驟3、啟動(dòng)音頻解碼線程和視頻解碼線程分別解碼音頻基本流隊(duì)列和視頻基本流隊(duì)列中的比特流,并將時(shí)間信息和解碼后的音頻數(shù)據(jù)和圖像數(shù)據(jù),分別插入音頻輸出隊(duì)列尾部和視頻輸出隊(duì)列尾部,激活音頻輸出線程或視頻輸出線程;若音頻輸出隊(duì)列或視頻輸出隊(duì)列溢出則解碼線程掛起等待; 步驟4、啟動(dòng)音頻同步輸出線程和視頻同步輸出線程,根據(jù)解碼后的時(shí)間戳與本地系統(tǒng)時(shí)鐘的差值,選擇符合輸出時(shí)間的數(shù)據(jù)進(jìn)行輸出;并根據(jù)視頻與音頻的時(shí)間戳的差值,對(duì)視頻播放進(jìn)行重復(fù)與跳幀處理,從而使得音視頻同步輸出。
2.如權(quán)利要求1所述的多線程的音視頻同步控制方法,其特征在于:步驟2所述時(shí)間信息包括時(shí)間戳。
3.如權(quán)利要求1所述的多線程的音視頻同步控制方法,其特征在于:步驟2所述激活解碼線程通過對(duì)信號(hào)量進(jìn)行P操作完成。
4.如權(quán)利要求1所述的多線程的音視頻同步控制方法,其特征在于:步驟3所述激活音頻輸出線程或視頻輸出線程通過激活條件變量完成。
5.如權(quán)利要求1所述的多線程的音視頻同步控制方法,其特征在于: 步驟3所述的音頻解碼過程如下:(a)音頻解碼線程阻塞于音頻信號(hào)量,在解復(fù)用線程激活信號(hào)量后開始解碼;(b)對(duì)音頻基本流隊(duì)列頭的音頻基本流進(jìn)行解碼;(c)將解碼后一幀音頻數(shù)據(jù)插入音頻輸出隊(duì)列尾部,并激活音頻輸出條件變量;(d)將音頻基本流隊(duì)列中的時(shí)間戳值保存在音頻輸出隊(duì)列對(duì)應(yīng)節(jié)點(diǎn)中;所述音頻輸出隊(duì)列通過該隊(duì)列的長(zhǎng)度判斷其是否溢出,若音頻輸出隊(duì)列溢出則音頻解碼線程掛起等待; 步驟3所述的視頻解碼過程如下:(a)視頻解碼線程阻塞于視頻信號(hào)量,在解復(fù)用線程激活信號(hào)量后開始解碼;(b)對(duì)視頻基本流隊(duì)列頭的視頻基本流進(jìn)行解碼;(c)將解碼后的一幀圖像數(shù)據(jù)插入視頻輸出隊(duì)列尾部,并激活視頻輸出條件變量;(d)將視頻基本流隊(duì)列中的時(shí)間戳值保存在視頻輸出隊(duì)列對(duì)應(yīng)節(jié)點(diǎn)中;所述視頻輸出隊(duì)列通過該隊(duì)列的長(zhǎng)度判斷其是否溢出,若視頻輸出隊(duì)列溢出則視頻解碼線程掛起等待。
6.如權(quán)利要求1所述的多線程的音視頻同步控制方法,其特征在于:步驟4所述的音頻輸出過程如下:(a)音頻輸出線程阻塞于音頻輸出條件變量;(b)在音頻解碼線程激活條件變量后,計(jì)算當(dāng)前時(shí)刻的本地系統(tǒng)時(shí)鐘;(C)查找音頻輸出隊(duì)列中時(shí)間戳值與本地系統(tǒng)時(shí)鐘值最接近的隊(duì)列節(jié)點(diǎn),將該隊(duì)列節(jié)點(diǎn)的音頻數(shù)據(jù)輸出; 步驟4所述的視頻輸出過程如下:(a)視頻輸出線程阻塞于視頻輸出條件變量;(b)在視頻解碼線程激活條件變量后,計(jì)算當(dāng)前時(shí)刻的本地系統(tǒng)時(shí)鐘;(C)查找視頻輸出隊(duì)列中時(shí)間戳值與本地系統(tǒng)時(shí)鐘值最接近的隊(duì)列節(jié)點(diǎn),計(jì)算視頻時(shí)間戳值與音頻時(shí)間戳值的差值,如果視頻時(shí)間戳值大于音頻時(shí)間戳值,則重復(fù)顯示該隊(duì)列節(jié)點(diǎn)中的圖像,如果視頻時(shí)間戳值小于音頻時(shí)間戳值,則跳過該隊(duì)列節(jié)點(diǎn)。
7.如權(quán)利要求1所述的多線程的音視頻同步控制方法,其特征在于:步驟2與步驟3線程間的同步處理采用的是信號(hào)量機(jī)制,通過對(duì)信號(hào)的PV操作協(xié)調(diào)解復(fù)用線程與解碼線程間的同步。
8.如權(quán)利要求1所述的多線程的音視頻同步控制方法,其特征在于:步驟3與步驟4線程間的同步處理采用的是條件變量,通過激活條件變量協(xié)調(diào)解碼線程與輸出線程間的同止/J/ o
9.一種多線程的音視頻同步控制系統(tǒng),其特征在于:包括解復(fù)用模塊、音頻解碼器、視頻解碼器、音頻同步輸出模塊、視頻同步輸出模塊、用于保存音頻基本流的音頻基本流隊(duì)列、用于保存視頻基本流的視頻基本流隊(duì)列、用于保存解碼后的音頻數(shù)據(jù)的音頻輸出隊(duì)列、用于保存解碼后的視頻數(shù)據(jù)的視頻輸出隊(duì)列;其中解復(fù)用模塊用于對(duì)系統(tǒng)層的傳輸流或節(jié)目流進(jìn)行解復(fù)用,將其拆分成首頻基本流和視頻基本流后分別插入首頻基本流隊(duì)列和視頻基本流隊(duì)列,并獲取相應(yīng)的時(shí)間戳;音頻解碼器和視頻解碼器分別對(duì)音頻基本流隊(duì)列和視頻基本流隊(duì)列中的數(shù)據(jù)進(jìn)行解碼,將解碼后的音頻數(shù)據(jù)和視頻數(shù)據(jù)分別插入音頻輸出隊(duì)列和視頻輸出隊(duì)列;音頻輸出模塊、視頻輸出模塊根據(jù)解碼后數(shù)據(jù)的時(shí)間戳與本地系統(tǒng)時(shí)鐘的差值,選擇符合輸出時(shí)間的數(shù)據(jù)進(jìn)行輸出,并根據(jù)視頻與音頻的時(shí)間戳的差值,對(duì)視頻播放進(jìn)行重復(fù)與跳幀處理。
10.如權(quán)利要求9所述的多線程的音視頻同步控制系統(tǒng),其特征在于:所述解碼后的音頻數(shù)據(jù)為脈沖調(diào)制編碼·數(shù)據(jù)。
全文摘要
本發(fā)明涉及多線程的音視頻同步控制方法及系統(tǒng),其方法包括創(chuàng)建解復(fù)用線程、音視頻解碼線程、音視頻同步輸出線程;啟動(dòng)解復(fù)用線程完成對(duì)傳輸流或節(jié)目流的解復(fù)用處理,將音、視頻基本流分別插入音、視頻基本流隊(duì)列尾部,激活解碼線程;啟動(dòng)音、視頻解碼線程分別解碼音、視頻基本流隊(duì)列中的比特流,并將時(shí)間信息和解碼后的音頻數(shù)據(jù)和圖像數(shù)據(jù),分別插入音、視頻輸出隊(duì)列;根據(jù)解碼后的時(shí)間戳與本地系統(tǒng)時(shí)鐘的差值,啟動(dòng)音、視頻同步輸出線程,選擇符合輸出時(shí)間的數(shù)據(jù)進(jìn)行輸出;根據(jù)視頻與音頻的時(shí)間戳差值,對(duì)視頻播放進(jìn)行重復(fù)與跳幀處理,使音視頻同步輸出。本發(fā)明不需大量?jī)?nèi)存空間來緩沖數(shù)據(jù),運(yùn)行效率高,實(shí)現(xiàn)復(fù)雜度低,適用于嵌入式操作系統(tǒng)。
文檔編號(hào)H04N21/439GK103237255SQ20131014422
公開日2013年8月7日 申請(qǐng)日期2013年4月24日 優(yōu)先權(quán)日2013年4月24日
發(fā)明者陳勇, 王衛(wèi)東, 吳少校, 喬崇, 祁云嵩, 徐釗, 孟凡偉 申請(qǐng)人:南京龍淵微電子科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
鹤山市| 西城区| 连城县| 定边县| 桐庐县| 丹巴县| 瓮安县| 鲜城| 建宁县| 正宁县| 清镇市| 灵川县| 滕州市| 荣昌县| 凌海市| 梁河县| 宁武县| 津市市| 防城港市| 玉环县| 谷城县| 景洪市| 邓州市| 汉川市| 浙江省| 富平县| 梁河县| 金坛市| 嘉峪关市| 南木林县| 河源市| 双江| 蕉岭县| 象山县| 新干县| 安化县| 洛扎县| 深水埗区| 桃园县| 京山县| 蓝田县|