專利名稱:視頻與音頻再現(xiàn)設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于再現(xiàn)MPEG流的視頻與音頻再現(xiàn)設(shè)備(MPEG-1系統(tǒng)流或MPEG-2節(jié)目流)。
背景技術(shù):
在MPEG流中,將視頻數(shù)據(jù)和音頻數(shù)據(jù)分別封裝到包括預(yù)定數(shù)量的數(shù)據(jù)的包內(nèi)。每個(gè)包包括包報(bào)頭和數(shù)據(jù)包,每個(gè)數(shù)據(jù)包包括數(shù)據(jù)包報(bào)頭和壓縮的視頻數(shù)據(jù)或音頻數(shù)據(jù),而數(shù)據(jù)包報(bào)頭具有諸如PTS(顯示時(shí)間戳)或DTS(解碼時(shí)間戳)的時(shí)間戳。DTS是表示用于解碼壓縮數(shù)據(jù)包中的數(shù)據(jù)的定時(shí)的時(shí)間數(shù)據(jù),而PTS是表示用于顯示解碼數(shù)據(jù)的定時(shí)的時(shí)間數(shù)據(jù)。在DTS表示的定時(shí),解碼該數(shù)據(jù)包中的壓縮數(shù)據(jù),然后,在PTS表示的定時(shí)顯示該壓縮數(shù)據(jù)。只讀光盤的DVD技術(shù)規(guī)范/部分3-視頻技術(shù)規(guī)范說(shuō)明了關(guān)于DTS和PTS的標(biāo)準(zhǔn),并利用DTS和PTS再現(xiàn)MPEG流。
在光盤上,特別是在個(gè)人用戶在其上進(jìn)行寫作的諸如視頻CD的光盤上(或者第三方的寫作系統(tǒng)),時(shí)間戳的可靠性差。在在其上記錄了MPEG流的光盤上,當(dāng)記錄在光盤上的時(shí)間戳存在差錯(cuò)時(shí),不能正確執(zhí)行同步再現(xiàn)視頻圖像和聲音的過(guò)程。例如,再現(xiàn)視頻圖像和聲音,而使視頻圖像和聲音互相移位。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種即使在其時(shí)間戳有錯(cuò)誤的MPEG流記錄在光盤上的情況下,仍可以同步再現(xiàn)視頻圖像和聲音的視頻與音頻再現(xiàn)設(shè)備和方法。
根據(jù)本發(fā)明的一個(gè)實(shí)施例,提供了一種用于再現(xiàn)記錄在媒體上、分別包括視頻基本流和音頻基本流的MPEG流的視頻與音頻再現(xiàn)設(shè)備,該設(shè)備包括讀取單元,用于從媒體上讀取MPEG流;第一獲取單元,用于從讀取單元讀取的MPEG流中獲取視頻PTS(表示時(shí)間戳);第一計(jì)算單元,在每次從讀取的MPEG流上檢測(cè)到圖像報(bào)頭時(shí),根據(jù)第一獲取單元獲取的PTS,計(jì)算新視頻PTS;第二獲取單元,從讀取的MPEG流中獲取音頻PTS;第二計(jì)算單元,對(duì)包括在讀取的MPEG流的音頻數(shù)據(jù)包中的音頻幀的數(shù)量進(jìn)行計(jì)數(shù),然后,根據(jù)第二獲取單元獲取的PTS和音頻幀的再現(xiàn)時(shí)間,計(jì)算新音頻PTS;視頻解碼器,根據(jù)第一計(jì)算單元計(jì)算的PTS,解碼讀取的MPEG流的視頻數(shù)據(jù),以提供視頻信號(hào);以及音頻解碼器,根據(jù)第二計(jì)算單元計(jì)算的PTS,解碼第二計(jì)算單元讀取的MPEG流的音頻數(shù)據(jù),以提供音頻信號(hào)。
根據(jù)該再現(xiàn)設(shè)備,在再現(xiàn)設(shè)備再現(xiàn)其上記錄了MPEG流的諸如視頻CD的光盤時(shí),再現(xiàn)設(shè)備計(jì)算時(shí)間戳(PTS/DTS),以利用計(jì)算的值進(jìn)行解碼和再現(xiàn)(顯示)。
即使在其時(shí)間戳存在錯(cuò)誤的MPEG流記錄在光盤上時(shí),仍可以同步再現(xiàn)視頻圖像和聲音。
附圖引入本說(shuō)明書作為本說(shuō)明書的一部分,它示出本發(fā)明實(shí)施例,而且它與以上所做的一般說(shuō)明和以下對(duì)實(shí)施例所做的詳細(xì)說(shuō)明一起用于解釋本發(fā)明原理。
圖1是本發(fā)明的DVD視頻設(shè)備進(jìn)行再現(xiàn)期間的方框圖;圖2示出MPEG系統(tǒng)流的結(jié)構(gòu);圖3是流分離單元的處理流程圖;圖4A至4C示出流分離單元的標(biāo)志和寄存器的細(xì)節(jié);圖5示出MPEG系統(tǒng)流的層結(jié)構(gòu);圖6示出視頻CD的視頻扇區(qū)的結(jié)構(gòu);圖7示出視頻CD的音頻扇區(qū)的結(jié)構(gòu);圖8示出包報(bào)頭的內(nèi)容;
圖9示出視頻數(shù)據(jù)包中的數(shù)據(jù)包報(bào)頭的內(nèi)容;圖10示出音頻數(shù)據(jù)包中的數(shù)據(jù)包報(bào)頭的內(nèi)容;圖11是流分離單元的“視頻包處理”的處理流程圖;圖12是流分離單元的“音頻包處理”的處理流程圖;圖13是流分離單元的“視頻數(shù)據(jù)包處理”的處理流程圖;圖14是流分離單元的“音頻數(shù)據(jù)包處理”的處理流程圖;圖15是流分離單元的“視頻數(shù)據(jù)處理”的處理流程圖;圖16示出MPEG視頻的sequence_header中的標(biāo)志;圖17是流分離單元的“視頻數(shù)據(jù)初始處理”的處理流程圖;圖18示出MPEG視頻的picture_header中的標(biāo)志;圖19示出視頻時(shí)間戳的關(guān)系;圖20示出音頻時(shí)間戳計(jì)算過(guò)程的概況;圖21是流分離單元的“sequence_header分析”的處理流程圖;圖22是流分離單元的“視頻數(shù)據(jù)常規(guī)處理”的處理流程圖;圖23是流分離單元的“音頻數(shù)據(jù)處理”的處理流程圖;圖24是流分離單元的“音頻PTS計(jì)算”的處理流程圖;圖25示出MPEG-1音頻的音頻幀的報(bào)頭中的標(biāo)志;圖26是MPEG-1音頻的bit_rate_index的表格;圖27是流分離單元的“音頻PTS校正處理”的處理流程圖;圖28示出視頻CD的光道結(jié)構(gòu);以及圖29示出視頻CD的系統(tǒng)報(bào)頭的內(nèi)容。
具體實(shí)施例方式
現(xiàn)在,將參考附圖詳細(xì)說(shuō)明本發(fā)明的優(yōu)選實(shí)施例。
圖1是根據(jù)本發(fā)明實(shí)施例的視頻與音頻再現(xiàn)設(shè)備的配置的方框圖。
主軸電機(jī)101使裝在轉(zhuǎn)盤(未示出)上的記錄媒體100旋轉(zhuǎn)。伺服單元103執(zhí)行光盤徑向上的饋送控制、聚焦控制以及對(duì)拾取單元102進(jìn)行跟蹤控制。在再現(xiàn)期間,拾取單元102讀取記錄在記錄媒體100上的信息。伺服單元103還將控制信號(hào)發(fā)送到電機(jī)驅(qū)動(dòng)單元104,以對(duì)主軸電機(jī)101進(jìn)行旋轉(zhuǎn)控制,即對(duì)記錄媒體100進(jìn)行旋轉(zhuǎn)控制。
拾取單元102的輸出輸入到解調(diào)/糾錯(cuò)單元105,進(jìn)行解調(diào)和糾錯(cuò)。通過(guò)流緩沖器106,糾錯(cuò)的數(shù)據(jù)輸入到流分離單元107。通過(guò)管理信息緩沖器111,將糾錯(cuò)的數(shù)據(jù)發(fā)送到系統(tǒng)控制單元200。將諸如TOC(內(nèi)容表(Table of Contents))的管理信息寫入管理信息緩沖器111,然后,系統(tǒng)控制單元200讀取該管理信息以進(jìn)行再現(xiàn)控制。流分離單元107執(zhí)行對(duì)每個(gè)包進(jìn)行分離的處理。通過(guò)視頻緩沖器121,將從流分離單元107提取的視頻包(V_PCK)輸入到視頻解碼器123,然后,被視頻解碼器123解碼。視頻解碼器123與視頻解碼器緩沖器124相連。將視頻解碼器123輸出的視頻信號(hào)送到顯示器。通過(guò)音頻緩沖器129,將從流分離單元107提取的音頻包(A_PCK)輸入到音頻解碼器130,然后,被音頻解碼器130解碼。音頻解碼器130與音頻解碼器緩沖器131相連。對(duì)音頻解碼器130的輸出進(jìn)行A/D變換(未示出),然后,將它送到揚(yáng)聲器。因此,記錄媒體100包括視頻信息和音頻信息,而且在流分離單元107內(nèi)對(duì)視頻信息和音頻信息進(jìn)行分離,然后,獲得視頻信息和音頻信息。
通過(guò)操作單元201,用戶的操作輸入送到系統(tǒng)控制單元200。在視頻解碼器123內(nèi)進(jìn)行與顯示裝置的類型對(duì)應(yīng)的解碼處理,視頻解碼器用于解碼視頻信息。例如,將視頻信息變換為NTSC、PAL等。用戶規(guī)定的流的音頻信息輸入到音頻解碼器130,然后,被音頻解碼器130解碼。
下面將說(shuō)明流分離單元107的工作原理。
圖2示出MPEG系統(tǒng)流(MPEG-2節(jié)目流或MPEG-1系統(tǒng)流)的結(jié)構(gòu)。
假定MPEG流包括視頻包和音頻包。包報(bào)頭401描述關(guān)于包分別到達(dá)每個(gè)基本解碼器的輸入緩沖器(圖1所示的視頻緩沖器121和音頻緩沖器129)時(shí)的時(shí)間的信息SCR(系統(tǒng)時(shí)鐘基準(zhǔn))。每個(gè)包至少可以具有一個(gè)數(shù)據(jù)包。數(shù)據(jù)包的有效載荷(數(shù)據(jù)包報(bào)頭102之外的部分)403可以僅具有一個(gè)基本數(shù)據(jù)。例如,可以不將視頻數(shù)據(jù)和音頻數(shù)據(jù)混合在一起作為數(shù)據(jù)包的一個(gè)有效載荷。在每個(gè)數(shù)據(jù)包的數(shù)據(jù)包報(bào)頭402上,描述stream_id。
當(dāng)圖像數(shù)據(jù)的前沿包括在該數(shù)據(jù)包內(nèi)時(shí),可以在視頻包的數(shù)據(jù)包報(bào)頭402內(nèi)描述時(shí)間DTS或時(shí)間PTS,在時(shí)間DTS,對(duì)包括前沿的圖像解碼圖像數(shù)據(jù),在時(shí)間PTS,對(duì)包括前沿的圖像顯示圖像數(shù)據(jù)。在圖像是I圖像或P圖像時(shí),可以在數(shù)據(jù)包報(bào)頭402內(nèi)描述DTS和PTS。在圖像是B圖像時(shí),可以僅在數(shù)據(jù)包報(bào)頭402內(nèi)描述PTS。
在音頻幀的前沿包括在該數(shù)據(jù)包內(nèi)時(shí),可以在音頻數(shù)據(jù)包的數(shù)據(jù)包報(bào)頭402內(nèi)描述時(shí)間PTS,在時(shí)間PTS,對(duì)包括前沿的音頻幀解碼并顯示音頻數(shù)據(jù)。
在流分離單元107檢測(cè)到其steam_id的值與系統(tǒng)控制單元200設(shè)置的steam_id的值相同的數(shù)據(jù)包時(shí),流分離單元107對(duì)數(shù)據(jù)包的有效載荷進(jìn)行分離,然后,將數(shù)據(jù)包的有效載荷輸入到相應(yīng)基本解碼器的輸入緩沖器(圖1所示的視頻緩沖器121和音頻緩沖器129)。在起動(dòng)系統(tǒng)期間,利用數(shù)據(jù)包的SCR,流分離單元107對(duì)該系統(tǒng)內(nèi)的所有系統(tǒng)時(shí)鐘STC進(jìn)行重置,然后,將從每個(gè)基本流的數(shù)據(jù)包中分離出來(lái)的PTS和DTS分別發(fā)送到每個(gè)基本解碼器(圖2所示的視頻解碼器123和音頻解碼器130)?;窘獯a器分別將每個(gè)基本解碼器擁有的時(shí)間(STC)與從流分離單元107接收的PTS和DTS進(jìn)行比較,以在該時(shí)間例如與PTS和DTS一致時(shí)進(jìn)行解碼或顯示。
下面將說(shuō)明根據(jù)本發(fā)明實(shí)施例的流分離單元107執(zhí)行的更新時(shí)間戳的過(guò)程。在圖1中,假定記錄媒體100是視頻CD。視頻CD的流符合MPEG-1系統(tǒng)流(ISO/IEC 11172-2),視頻數(shù)據(jù)符合MPEG-1視頻(ISO/IEC 11172-2),音頻數(shù)據(jù)符合MPEG-1音頻(ISO/IEC 11172-3)的Layer-II。
通常,根據(jù)90Hz的時(shí)鐘產(chǎn)生時(shí)間戳(PTS/DTS)。即,時(shí)間戳的一個(gè)單位相當(dāng)于1/90000秒。在視頻CD上,一個(gè)扇區(qū)包括一個(gè)包,而該光盤的傳送速率是75扇區(qū)/秒。因此,連續(xù)包之間的SCR的差值ΔSCR始終是ΔSCR=90000/75=1200(單位90Hz)。
在系統(tǒng)控制單元200起動(dòng)該系統(tǒng)時(shí),系統(tǒng)控制單元200將停止命令發(fā)送到解調(diào)/糾錯(cuò)單元105、流分離單元107、視頻解碼器123以及音頻解碼器130。在系統(tǒng)控制單元200確認(rèn)解調(diào)/糾錯(cuò)單元105、流分離單元107、視頻解碼器123以及音頻解碼器130被停止時(shí),系統(tǒng)控制單元200清除流緩沖器106、視頻緩沖器121以及音頻緩沖器129。在系統(tǒng)控制單元200確認(rèn)每個(gè)緩沖器均被清除時(shí),系統(tǒng)控制單元200將起動(dòng)命令發(fā)送到解調(diào)/糾錯(cuò)單元105、流分離單元107、視頻解碼器123以及音頻解碼器130,以便重新設(shè)置伺服單元103內(nèi)的記錄媒體100上的捕獲地址。
伺服單元103控制拾取單元102。解調(diào)/糾錯(cuò)單元105對(duì)拾取單元102的輸出進(jìn)行解調(diào)和糾錯(cuò),然后,將它輸入到流緩沖器106。為了防止流緩沖器106下溢,在將特定數(shù)量的數(shù)據(jù)存儲(chǔ)到流緩沖器106后,流分離單元107開始讀取扇區(qū)數(shù)據(jù),然后,流分離單元107使該扇區(qū)數(shù)據(jù)臨時(shí)保存在流分離單元的內(nèi)部緩沖器中。保存的扇區(qū)數(shù)據(jù)被劃分為視頻扇區(qū)數(shù)據(jù)、音頻扇區(qū)數(shù)據(jù)、空扇區(qū)數(shù)據(jù)等,以通過(guò)分析它們的子報(bào)頭,處理各扇區(qū)數(shù)據(jù)。
在起動(dòng)后,流分離單元107保存初始檢測(cè)到的I圖像DTS和PTS和初始檢測(cè)到的音頻PTS。然后,流分離單元107計(jì)算視頻時(shí)間戳和音頻時(shí)間戳,而不使用系統(tǒng)描述的視頻和音頻時(shí)間戳(PTS/DTS),通過(guò)將視頻和音頻時(shí)間戳的計(jì)算值發(fā)送到視頻解碼器123和音頻解碼器130,進(jìn)行STC控制。
下面將說(shuō)明流分離單元107執(zhí)行的計(jì)算時(shí)間戳(PTS/DTS)的過(guò)程。圖3是示出流分離單元107執(zhí)行的處理過(guò)程的原理流程圖,圖4示出流分離單元的標(biāo)志和寄存器的細(xì)節(jié),圖5示出MPEG系統(tǒng)流的層結(jié)構(gòu),圖6示出視頻CD的視頻扇區(qū)的結(jié)構(gòu),圖7示出視頻CD的音頻扇區(qū)的結(jié)構(gòu),圖8示出數(shù)據(jù)包報(bào)頭的內(nèi)容,圖9示出視頻數(shù)據(jù)包中的數(shù)據(jù)包報(bào)頭的內(nèi)容,圖10示出音頻數(shù)據(jù)包中的數(shù)據(jù)包報(bào)頭的內(nèi)容。
流分離單元107具有圖4A所示的標(biāo)志F1至F7;圖4B所示的寄存器108A至108g,用于視頻;以及圖4C所示的寄存器109a至109j,用于音頻。正如圖3中的步驟ST001所示,流分離單元107首先置位參數(shù)(標(biāo)志和寄存器)。即,流分離單元107將1st_AV_pck_detect的標(biāo)志F1、seq_H_detect的標(biāo)志F2、1st_Ipic_Detect的標(biāo)志F3、1st_Afrm_detect的標(biāo)志F4以及count_A的標(biāo)志F5置位為0,然后,將2351寫入afp的寄存器109i內(nèi)。
在步驟ST002,流分離單元107從流緩沖器106讀取扇區(qū)數(shù)據(jù),以使該扇區(qū)數(shù)據(jù)保存在內(nèi)部緩沖器110內(nèi)。然后,流分離單元107確定扇區(qū)數(shù)據(jù)的類型。正如圖5所示MPEG系統(tǒng)流的層結(jié)構(gòu)所示,在讀取的扇區(qū)數(shù)據(jù)是視頻扇區(qū)(V-PCK)(ST003中的YES)時(shí),流分離單元107進(jìn)行音頻數(shù)據(jù)包處理(ST004)。
圖11是示出視頻包處理過(guò)程的流程圖。
流分離單元107確定在扇區(qū)上讀取數(shù)據(jù)的位置是否到達(dá)扇區(qū)的后端(步驟ST101)。當(dāng)讀取的數(shù)據(jù)未到達(dá)扇區(qū)的后端時(shí),流分離單元107進(jìn)一步讀取扇區(qū)數(shù)據(jù)內(nèi)部緩沖器110內(nèi)的內(nèi)容(ST102)。在步驟ST103,流分離單元107確定是否檢測(cè)到包報(bào)頭401的pack_start_code(參考圖8)。在檢測(cè)到pack_start_code時(shí),如步驟ST104所示,流分離單元107確定1st_AV_pck_detect的標(biāo)志F1是否為0。在標(biāo)志F1是0時(shí),流分離單元107從包報(bào)頭401獲取SCR(ST105),以將SCR的值寫入寄存器108c,作為SCR
的值(ST106)。然后,流分離單元107將1st_AV_pck_detect的標(biāo)志F1置位為1(ST107)。在標(biāo)志F1不是0時(shí),即在讀取的視頻包是第二或后續(xù)視頻包時(shí),流分離單元107將其中將1200與SCR值SCR[k-1]相加的值寫入SCR的寄存器108c。1200是相鄰包的SCR值之間的差值,而且該差值始終是常數(shù)。然后,流分離單元107進(jìn)行視頻包處理(ST108)。
圖12是視頻包處理的流程圖。
流分離單元107將數(shù)據(jù)包有效載荷傳送啟動(dòng)標(biāo)志F5置位為1(步驟ST201),然后,確定數(shù)據(jù)的位置是否到達(dá)包的后端(步驟ST202)。在數(shù)據(jù)的位置未到達(dá)包的后端時(shí),流分離單元107讀取扇區(qū)數(shù)據(jù)內(nèi)部緩沖器110上的預(yù)定位的內(nèi)容(ST203)。然后,流分離單元107確定是否檢測(cè)到packet_start_code_prefix 501(參考圖6和9)(ST204)。在檢測(cè)到packet_start_code_prefix 501時(shí),流分離單元107確定stream_id 502(參考圖6和9)是否是Exh(步驟205)?!癊xh”是系統(tǒng)控制單元200在流分離單元107內(nèi)置位的視頻stream_id,而且“Exh”示出運(yùn)動(dòng)圖像、靜止正常分辨率以及靜止高分辨率之一。在stream_id是Exh的情況下,在存在PTS和DTS時(shí),流分離單元107保存PTS和DTS,然后,流分離單元107將PTS值寫入PTS_Vd寄存器108a,而將DTS的值寫入DTS_V的寄存器108b(ST206)。然后,流分離單元107進(jìn)行視頻數(shù)據(jù)處理(ST207)。
當(dāng)在步驟ST205,stream_id不是Exh時(shí),流分離單元107確定當(dāng)前讀取的數(shù)據(jù)包是填充數(shù)據(jù)包,然后,將傳送啟動(dòng)標(biāo)志F5置位為0(ST208)。因此,流分離單元107禁止數(shù)據(jù)包數(shù)據(jù)傳送到視頻緩沖器121,并使數(shù)據(jù)包數(shù)據(jù)跳越到數(shù)據(jù)包數(shù)據(jù)的后端(ST209)。
圖13是示出視頻數(shù)據(jù)處理過(guò)程的流程圖。
流分離單元107確定數(shù)據(jù)位置是否到達(dá)扇區(qū)的后端(步驟ST301)。在數(shù)據(jù)的位置未到達(dá)扇區(qū)的后端時(shí),流分離單元107讀取扇區(qū)數(shù)據(jù)內(nèi)部寄存器110上預(yù)定位的內(nèi)容(ST302)。在步驟ST303,流分離單元107確定1st_Ipic_Detect的標(biāo)志F3是否是0。在標(biāo)志F3是0時(shí),流分離單元107進(jìn)行視頻數(shù)據(jù)初始處理(ST304)。
圖14是示出視頻數(shù)據(jù)初始處理的流程圖。
流分離單元107確定seq_H_detect的標(biāo)志F2是否是0。在標(biāo)志F2是0時(shí),流分離單元檢測(cè)到序列報(bào)頭506(參考圖5)(ST402),將序列報(bào)頭檢測(cè)(seq_H_detect)標(biāo)志F2置位為1(ST403),然后,分析序列報(bào)頭506(ST404)。
圖15是示出對(duì)序列報(bào)頭進(jìn)行分析的流程圖。圖16示出MPEG視頻的sequence_header中的標(biāo)志。
流分離單元107確定picture_rate(參考圖16)是否是0001b,即,讀取的視頻是否是FILM標(biāo)準(zhǔn)(步驟ST501)。在該視頻是FILM標(biāo)準(zhǔn)時(shí),流分離單元107將3754寫入vfp(視頻幀周期)的寄存器108d(ST502)。3754表示以90Hz繼續(xù)3754個(gè)時(shí)鐘的時(shí)間。
在該視頻不是FILM標(biāo)準(zhǔn)時(shí),流分離單元107確定picture_rate是否是0011b,即讀取的視頻是否是PAL標(biāo)準(zhǔn)(ST503)。在視頻是PAL標(biāo)準(zhǔn)時(shí),流分離單元107將3754寫入vfr的寄存器108d(ST504)。
當(dāng)在步驟ST503確定該視頻不是PAL標(biāo)準(zhǔn)時(shí),流分離單元107確定picture_rate是否是0100b,即讀取的視頻是否是NTSC標(biāo)準(zhǔn)(ST505)。在該視頻是NTSC標(biāo)準(zhǔn)時(shí),流分離單元107將3003寫入vfr的寄存器108d(ST506)。
當(dāng)在步驟ST505確定該視頻不是NTSC標(biāo)準(zhǔn)時(shí),流分離單元107根據(jù)picture_rate計(jì)算視頻幀周期vfp(ST509)。
現(xiàn)在回頭說(shuō)明圖14,在標(biāo)志F2不是0時(shí),流分離單元107確定是否檢測(cè)到I_picture的前沿(ST405)。在檢測(cè)到I_picture的前沿時(shí),流分離單元107寫入在步驟ST206寫入的、DTS_V的寄存器108b的值作為DTS_V[i]的寄存器108e的第0個(gè)DTS_V的值,然后,流分離單元107寫入寄存器108a的值作為PTS_V[i]的寄存器108f的第0個(gè)PTS_V的值。
流分離單元107將圖像的時(shí)間戳PTS_V
和PTS_V
的值發(fā)送到視頻解碼器123(ST407),然后,將1st_Ipic_Detect的標(biāo)志F3置位為1(ST408)。
回到圖13,當(dāng)在步驟ST303確定步驟F3不是0時(shí),即,當(dāng)已經(jīng)檢測(cè)到I圖像時(shí),流分離單元107執(zhí)行視頻數(shù)據(jù)正常處理(ST305)。
圖17是視頻數(shù)據(jù)正常處理的流程圖,圖18示出MPEG視頻的picture_header中的標(biāo)志,圖19示出視頻時(shí)間戳的關(guān)系。
流分離單元107確定是否檢測(cè)到picture_header 505(參考圖5)(ST601)。在檢測(cè)到picture_header 505時(shí)(參考圖5),流分離單元107寫入將視頻幀周期(vfp)與DTS_V[i]的寄存器108e內(nèi)的先前值DTS_V[i-1]相加的值(ST602)。在步驟ST603,流分離單元107讀取temporal_reference和picture_coding_type的標(biāo)志(參考圖18)。當(dāng)picture_coding_type是“I”,即I圖像(ST604)時(shí),流分離單元107寫入將(temporal_reference+1)×vfp與DTS_V[i]相加的值。temporal_reference表示GOP(圖像組)中每個(gè)圖像的顯示順序。例如,在圖19中,temporal_reference在I2中顯示“2”,或在B0中顯示“0”。如圖19所示,由于記錄順序與I圖像的顯示順序不同,所以需要進(jìn)行步驟ST605所示的處理過(guò)程。
流分離單元107將temporal_reference的值寫入temporal_reference_of_Iorp的寄存器108g(ST606),然后,發(fā)送寄存器108e和108f的值作為該圖像的時(shí)間戳DTS_V[i]和PTS_V[i](ST607)。以與I圖像同樣的方式,對(duì)P圖像進(jìn)行處理。對(duì)于P圖像,因?yàn)閠emporal_reference的順序與顯示順序相同,所以流分離單元107將DTS[i]的寄存器108e的值寫入PTS_V[i]的寄存器,然后,流分離單元107將寄存器108e的值作為圖像的時(shí)間戳PTS_V[i]發(fā)送到視頻解碼器123。
因此,在流分離單元107每次從讀取的MPEG流中檢測(cè)到圖像報(bào)頭時(shí),根據(jù)在步驟ST406初始獲取的PTS和在圖像報(bào)頭內(nèi)描述的picture_coding_type和temporal_reference,流分離單元107計(jì)算該視頻的新PTS。
回到圖13,當(dāng)在步驟ST301,讀取的數(shù)據(jù)的位置到達(dá)扇區(qū)的后端時(shí),流分離單元107確定seq_H_Detect的標(biāo)志F2是否是0(ST306)。在標(biāo)志F2不是0時(shí),流分離單元107使該處理過(guò)程轉(zhuǎn)移到圖12所示的步驟ST210。在標(biāo)志F2是0時(shí),流分離單元107將transport_enable的標(biāo)志F6置位為0(流分離單元107禁止將有效載荷傳送到視頻緩沖器121),然后,使該處理過(guò)程轉(zhuǎn)移到步驟ST210。
在圖12所示的步驟ST210,流分離單元107確定transport_enable的標(biāo)志F6是否是1(是否可以傳送標(biāo)志F6)。在不能傳送標(biāo)志F6時(shí),流分離單元107丟棄數(shù)據(jù)包的有效載荷(ST212)。在可以傳送標(biāo)志F6時(shí),流分離單元107將該數(shù)據(jù)包的有效載荷傳送到視頻緩沖器121(ST211)。
回到圖3,當(dāng)讀取的扇區(qū)數(shù)據(jù)是音頻扇區(qū)(A_PCK)(ST005中的YES)時(shí),流分離單元107執(zhí)行音頻包處理(ST006)。
圖20示出音頻時(shí)間戳計(jì)算過(guò)程的概況。
在圖20中,參考編號(hào)402A1至402A3不是音頻數(shù)據(jù)包報(bào)頭,而參考編號(hào)402V1至402V3不是視頻數(shù)據(jù)包報(bào)頭。數(shù)據(jù)包報(bào)頭402A1的音頻數(shù)據(jù)包包括音頻幀frm0和frm1,數(shù)據(jù)包報(bào)頭402A2的音頻數(shù)據(jù)包包括音頻幀frm1和frm2,而數(shù)據(jù)包報(bào)頭402A3的音頻數(shù)據(jù)包包括音頻幀frm2、frm3、和frm4。音頻幀frm0的PTS記錄在數(shù)據(jù)包報(bào)頭402A1上,音頻幀frm2的PTS記錄在數(shù)據(jù)包報(bào)頭402A2上,音頻幀frm3的PTS記錄在數(shù)據(jù)包報(bào)頭402A3上。此時(shí),假定利用數(shù)據(jù)包報(bào)頭402A1的PTS描述PTS_A。
參數(shù)count_A是對(duì)音頻幀的數(shù)量進(jìn)行計(jì)數(shù)的值。在檢測(cè)到在音頻數(shù)據(jù)包報(bào)頭之后檢測(cè)到的音頻幀的前沿時(shí),重置參數(shù)count_A。例如,在音頻幀frm0的前沿、在音頻幀frm2的前沿以及在音頻幀frm3的前沿,重置參數(shù)count_A。參數(shù)num_A保存剛好在重置參數(shù)count_A之前的值。因此,參數(shù)num_A表示在從特定音頻數(shù)據(jù)包之后的音頻幀的前沿(例如,frm0的前沿)到下一個(gè)音頻數(shù)據(jù)包之后的音頻幀的前沿(例如,frm2的前沿)的范圍內(nèi)存在的音頻幀的數(shù)量。
通過(guò)將先前PTS_A[j-1]與num_A*afp相加,獲得PTS_A[j]。此時(shí),afp是音頻幀的再現(xiàn)時(shí)間。例如,在圖20中,PTS_A[1]是PTS_A
+2*afp。
圖21是示出音頻包處理過(guò)程的流程圖。音頻包處理與圖11所示的視頻包處理過(guò)程相同。
流分離單元107確定讀取的數(shù)據(jù)的位置是否到達(dá)扇區(qū)的后端(ST701)。在讀取的數(shù)據(jù)的位置未到達(dá)扇區(qū)的后端時(shí),流分離單元107進(jìn)一步讀取扇區(qū)數(shù)據(jù)內(nèi)部緩沖器110的內(nèi)容(ST702)。在步驟ST703,流分離單元107確定是否檢測(cè)到包報(bào)頭401的pack_start_code(參考圖8)。當(dāng)在步驟ST704,檢測(cè)到pack_start_code時(shí),流分離單元107確定1st_AV_pck_detect的標(biāo)志F1是0。在標(biāo)志F1是0時(shí),流分離單元107從包報(bào)頭401獲取SCR(ST705),流分離單元705將SCR的值寫入SCT[k]的寄存器109b內(nèi)(ST706),然后,將1st_AV_pck_detect的標(biāo)志F1置位為1(ST707)。在1st_AV_pck_detect的標(biāo)志F1不是0時(shí),即,在讀取的音頻包是第二或者后續(xù)音頻包時(shí),流分離單元107將其中1200與先前SCR值SCR[k-1]相加的值寫入SCR寄存器109b。然后,流分離單元107進(jìn)行音頻數(shù)據(jù)包處理(ST708)。
圖22是示出音頻數(shù)據(jù)包處理過(guò)程的流程圖。音頻數(shù)據(jù)包處理過(guò)程與圖12所示的視頻數(shù)據(jù)包處理過(guò)程相同。
流分離單元107將數(shù)據(jù)包有效載荷傳送啟動(dòng)標(biāo)志F5置位為1(步驟ST801)。流分離單元107確定該數(shù)據(jù)的位置是否到達(dá)包的后端(步驟ST802)。在該數(shù)據(jù)的位置未到達(dá)包的后端時(shí),流分離單元107讀取扇區(qū)數(shù)據(jù)內(nèi)部緩沖器110上的預(yù)定位內(nèi)容(ST803)。然后,流分離單元107確定是否檢測(cè)到packet_start_code_prefix 503(參考圖7和10)(步驟ST804)。在檢測(cè)到packet_start_code_prefix 503時(shí),流分離單元107確定stream_id 504(參考圖7和10)是否是CXh(ST605)?!癈Xh”是系統(tǒng)控制單元200在流分離單元107內(nèi)置位的音頻stream_id。在stream_id 504是CXh時(shí),流分離單元107將packet_in的標(biāo)志F7設(shè)置為1(ST806)。在存在PTS時(shí),流分離單元107保存PTS,而將PTS的值寫入PTS_Ad jcq 109a(ST807)。然后,流分離單元107進(jìn)入音頻數(shù)據(jù)處理過(guò)程(ST808)。
當(dāng)在步驟ST805確定stream_id不是CXh時(shí),流分離單元107確定當(dāng)前讀取的數(shù)據(jù)包是填充數(shù)據(jù)包,然后,將傳送啟動(dòng)標(biāo)志F5置位為0(ST809)。因此,流分離單元107禁止將數(shù)據(jù)包數(shù)據(jù)傳送到視頻緩沖器121,并使數(shù)據(jù)包數(shù)據(jù)跳越到數(shù)據(jù)包數(shù)據(jù)的后端(ST810)。
圖23是示出音頻數(shù)據(jù)處理過(guò)程的流程圖。
流分離單元107確定讀取的扇區(qū)數(shù)據(jù)的位置是否到達(dá)數(shù)據(jù)包的后端(ST901)。在讀取的扇區(qū)數(shù)據(jù)的位置未到達(dá)該數(shù)據(jù)包的后端時(shí),流分離單元107進(jìn)一步讀取扇區(qū)數(shù)據(jù)內(nèi)部緩沖器110的內(nèi)容(ST902)。在步驟ST903,流分離單元107確定是否檢測(cè)到音頻幀的前沿。當(dāng)在步驟ST904,檢測(cè)到音頻幀的前沿時(shí),流分離單元107使count_A的寄存器109j的值加1。流分離單元107確定pack_in的標(biāo)志F7是否是1(步驟905)。在標(biāo)志F7是1時(shí),流分離單元107將count_A的寄存器109j的值寫入num_A的寄存器109h(ST906),以進(jìn)行音頻PTS計(jì)算(ST907)。
圖24是示出音頻PTS計(jì)算的流程圖,圖25示出MPEG-1音頻的音頻幀的報(bào)頭中的標(biāo)志,圖26是MPEG-1音頻的bit_rate_index的表格。
流分離單元107確定1st_Afrm_Detect的標(biāo)志F4是0(ST1001)。在標(biāo)志F4是0時(shí)(對(duì)于第一音頻幀),流分離單元107寫入PTS_A的寄存器109a的值作為PTS_A[i]的寄存器109c上的第
個(gè)PTS_A的值(ST1002)。然后,流分離單元107將1st_Afrm_Detect的標(biāo)志F4置位為1(ST1003),然后,分析Audio_frame_header 507(參考圖7),以bit_rate_index(參考圖25和26)(ST1004)。
如果需要,在步驟ST1005,流分離單元107執(zhí)行下述音頻PTS校正處理,然后,流分離單元107將數(shù)據(jù)包的時(shí)間戳PTS_A[j](寄存器109c的值)發(fā)送到音頻解碼器130(ST1006)。因此,例如,將PTS_A(在步驟ST807保存的PTS)作為圖2所示數(shù)據(jù)包層的流內(nèi)的數(shù)據(jù)包報(bào)頭的PTS_A
發(fā)送到音頻解碼器130。流分離單元107將count_A的寄存器109j的值重置為0(ST1007),而將pack_in的標(biāo)志F7重置為0(ST1008)。
當(dāng)在步驟ST1001確定標(biāo)志F4不是0時(shí),通過(guò)將num_A*afp與先前PTS值PTS_A[j-1]相加,流分離單元107計(jì)算當(dāng)前PTS_A[j]。因此,流分離單元107對(duì)包括在MPEG流的音頻數(shù)據(jù)包內(nèi)的音頻幀(num_A)的數(shù)量進(jìn)行計(jì)數(shù),然后,根據(jù)音頻幀的數(shù)量、在步驟ST807初始獲取的PTS以及音頻幀的再現(xiàn)時(shí)間afp,計(jì)算新音頻PTS。
然后,將說(shuō)明步驟ST1005的音頻PTS校正處理過(guò)程。
當(dāng)在根據(jù)上述處理流程計(jì)算音頻PTS的過(guò)程中在該流的某個(gè)中點(diǎn)中斷視頻數(shù)據(jù)時(shí),假定音頻數(shù)據(jù)包的PTS(=PTS_A[j])和包括該音頻數(shù)據(jù)包的包的SCR(SCR[k])的關(guān)系變成PTS_A[j]<=SCR[k]。這明顯違背原則,因?yàn)樵诎竭_(dá)音頻緩沖器129之前,對(duì)包括在該數(shù)據(jù)包內(nèi)的音頻數(shù)據(jù)進(jìn)行解碼。在滿足該時(shí)間關(guān)系時(shí),流分離單元107執(zhí)行音頻PTS校正處理。圖27是示出音頻PTS校正處理的流程圖,圖28示出視頻CD的光道結(jié)構(gòu),以及圖29示出視頻CD的系統(tǒng)報(bào)頭的內(nèi)容。
根據(jù)MPEG流的扇區(qū)Vs和As(參考圖28)的系統(tǒng)報(bào)頭描述的STD緩沖器容量(STD_buffer_bound_scale和STD_buffer_size_bound)(參考圖29)以及在音頻基本流內(nèi)描述的位速率,可以計(jì)算音頻幀保存在音頻緩沖器129內(nèi)時(shí)的最長(zhǎng)保存時(shí)間。例如,在視頻CD(音頻緩沖器129的實(shí)際容量被設(shè)計(jì)為32kbit或者更大)內(nèi)確定的音頻緩沖器容量為32kbit(4kbyte),在光道2或后續(xù)光道2(參考圖25和26)的MPEG AV內(nèi),以224kbps的位速率描述MPEG-1音頻(層II)數(shù)據(jù)。因此,音頻幀在音頻緩沖器129內(nèi)的最長(zhǎng)保存時(shí)間T_max是T_max=32/224=1/7=約0.14秒。
在滿足關(guān)系PTS_A[j]<=SCR[k]時(shí)(ST1101中的YES),根據(jù)90kHz的單位(=1/90000秒),即PTS的時(shí)間單位,在音頻緩沖器129內(nèi)將其與PTS_A[j]相加的音頻幀的保存時(shí)間delta_t變成delta_t=(T_max/n)×90000(n是自然數(shù))。在代入n=2時(shí),delta_t成為平均保存時(shí)間。
此時(shí),根據(jù)PTS_A_temp=SCR[k]+delta_t,計(jì)算對(duì)應(yīng)于音頻幀的PTS。為了將先前PTS_A[j-1]與PTS_A[j]的差值設(shè)置為倍數(shù)(multiple),計(jì)算N=(PTS_A_temp-PTS_A[j-1])/audio_frame_period,然后,計(jì)算校正之后的音頻幀的PTS,PTS_A[j]=PTS_A[j-1]+N*audio_frame_period。
如上所述,當(dāng)數(shù)據(jù)包的PTS不大于在步驟ST709計(jì)算的SCR時(shí)(步驟ST1101中的YES),根據(jù)音頻緩沖器容量和先前獲得的音頻位速率,流分離單元107計(jì)算音頻解碼器130的最長(zhǎng)延遲時(shí)間T_max(ST1102)。此外,根據(jù)計(jì)算的SCR、在步驟ST1102計(jì)算的最長(zhǎng)延遲時(shí)間T_max以及音頻幀的再現(xiàn)時(shí)間afp,流分離單元107更新音頻數(shù)據(jù)包的PTS。
根據(jù)本發(fā)明,即使在該流的某個(gè)中點(diǎn)中斷該音頻數(shù)據(jù),仍可以同步再現(xiàn)音頻數(shù)據(jù)和視頻數(shù)據(jù)。
本技術(shù)領(lǐng)域內(nèi)的熟練技術(shù)人員容易設(shè)想其它優(yōu)點(diǎn)和修改。因此,本發(fā)明在其更廣泛的方面并不局限于在此描述和說(shuō)明的特定細(xì)節(jié)和說(shuō)明性實(shí)施例。因此,在所附權(quán)利要求及其等效物所述的一般發(fā)明原理的實(shí)質(zhì)范圍內(nèi),可以進(jìn)行各種修改。
權(quán)利要求
1.一種用于再現(xiàn)包括記錄在媒體上的各個(gè)視頻基本流和音頻基本流的MPEG流的視頻與音頻再現(xiàn)設(shè)備,該設(shè)備的特征在于包括讀取單元,用于從媒體上讀取MPEG流;第一獲取單元,用于從讀取單元讀取的MPEG流中獲取視頻PTS(顯示時(shí)間戳);第一計(jì)算單元,在每次從讀取的MPEG流上檢測(cè)到圖像報(bào)頭時(shí),根據(jù)第一獲取單元獲取的PTS,計(jì)算新視頻PTS;第二獲取單元,從讀取的MPEG流中獲取音頻PTS;第二計(jì)算單元,對(duì)包括在讀取的MPEG流的音頻數(shù)據(jù)包中的音頻幀的數(shù)量進(jìn)行計(jì)數(shù),并根據(jù)第二獲取單元獲取的PTS和音頻幀的再現(xiàn)時(shí)間,計(jì)算新音頻PTS;視頻解碼器,根據(jù)第一計(jì)算單元計(jì)算的PTS,解碼讀取的MPEG流的視頻數(shù)據(jù),以提供視頻信號(hào);以及音頻解碼器,根據(jù)第二計(jì)算單元計(jì)算的PTS,解碼第二計(jì)算單元讀取的MPEG流的音頻數(shù)據(jù),以提供音頻信號(hào)。
2.根據(jù)權(quán)利要求1所述的視頻與音頻再現(xiàn)設(shè)備,其特征在于,第一獲取單元從讀取單元讀取的MPEG流中獲取初始檢測(cè)的視頻PTS,而第二獲取單元從讀取的MPEG流中獲取初始檢測(cè)的音頻PTS。
3.根據(jù)權(quán)利要求1所述的視頻與音頻再現(xiàn)設(shè)備,其特征在于,根據(jù)第一獲取單元獲得的PTS以及在圖像報(bào)頭內(nèi)描述的圖像編碼類型(picture_coding_type)和時(shí)間基準(zhǔn)(temporal_reference),第一計(jì)算單元計(jì)算視頻PTS。
4.根據(jù)權(quán)利要求2所述的視頻與音頻再現(xiàn)設(shè)備,其特征在于,根據(jù)第一獲取單元獲得的PTS以及在圖像報(bào)頭內(nèi)描述的圖像編碼類型(picture_coding_type)和時(shí)間基準(zhǔn)(temporal_reference),第一計(jì)算單元計(jì)算視頻PTS。
5.根據(jù)權(quán)利要求1所述的視頻與音頻再現(xiàn)設(shè)備,其特征在于,該視頻與音頻再現(xiàn)設(shè)備進(jìn)一步包括第三計(jì)算單元,用于從讀取單元讀取的MPEG流中檢測(cè)音頻包SCR(系統(tǒng)時(shí)鐘基準(zhǔn)),并通過(guò)將預(yù)定量的偏移與先前SCR相加,在每次檢測(cè)音頻包中,計(jì)算當(dāng)前SCR;確定單元,用于確定包括在音頻包內(nèi)的數(shù)據(jù)包的PTS是否大于檢測(cè)到的SCR;第四計(jì)算單元,在數(shù)據(jù)包的PTS不大于計(jì)算的SCR時(shí),根據(jù)先前獲取的音頻緩沖器的容量和音頻位速率,計(jì)算音頻解碼器產(chǎn)生的最長(zhǎng)延遲時(shí)間;以及更新單元,根據(jù)計(jì)算的SCR、第四計(jì)算單元計(jì)算的最長(zhǎng)延遲時(shí)間以及音頻幀的再現(xiàn)時(shí)間,更新音頻數(shù)據(jù)包的PTS。
6.一種用于再現(xiàn)包括記錄在媒體上的各個(gè)視頻基本流和音頻基本流的MPEG流的方法,該方法的特征在于包括從媒體上讀取MPEG流;從讀取的MPEG流中獲取視頻PTS(顯示時(shí)間戳);在每次從讀取的MPEG流上檢測(cè)到圖像報(bào)頭時(shí),根據(jù)獲取的視頻PTS,計(jì)算新視頻PTS;從讀取的MPEG流中獲取音頻PTS;對(duì)包括在讀取的MPEG流的音頻數(shù)據(jù)包中的音頻幀的數(shù)量進(jìn)行計(jì)數(shù),并根據(jù)獲取的音頻PTS和音頻幀的再現(xiàn)時(shí)間,計(jì)算新音頻PTS;根據(jù)計(jì)算的視頻PTS,解碼讀取的MPEG流的視頻數(shù)據(jù),以提供視頻信號(hào);以及根據(jù)計(jì)算的音頻PTS,解碼讀取的MPEG流的音頻數(shù)據(jù),以提供音頻信號(hào)。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,在計(jì)算視頻PTS的步驟,根據(jù)獲得的視頻PTS以及在圖像報(bào)頭內(nèi)描述的圖像編碼類型(picture_coding_type)和時(shí)間基準(zhǔn)(temporal_reference),計(jì)算視頻PTS。
全文摘要
在每次檢測(cè)到圖像報(bào)頭時(shí),根據(jù)從記錄媒體(100)讀取的MPEG流中初始檢測(cè)到的視頻PTS,流分離單元(107)計(jì)算新視頻PTS(ST605)。流分離單元(107)還根據(jù)從MPEG流中初始檢測(cè)到的音頻PTS、包括在MPEG流的音頻數(shù)據(jù)包中的音頻幀的數(shù)量以及音頻幀的再現(xiàn)時(shí)間,計(jì)算新音頻PTS(ST1009)。根據(jù)分別計(jì)算的PTS,視頻解碼器(123)和音頻解碼器(130)解碼數(shù)據(jù),以提供視頻信號(hào)和音頻信號(hào)。
文檔編號(hào)H04N9/804GK1627418SQ200410095899
公開日2005年6月15日 申請(qǐng)日期2004年11月26日 優(yōu)先權(quán)日2003年11月28日
發(fā)明者鈴木信幸 申請(qǐng)人:株式會(huì)社東芝