同步影音碼流的解碼器與解碼方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明系關(guān)于影音播放,特別系關(guān)于影音播放的影像與聲音之間的同步。
【背景技術(shù)】
[0002]觀賞影片是現(xiàn)代生活中不可或缺的一部分。無論是工作需要或是娛樂,現(xiàn)代人可以從光盤、網(wǎng)絡(luò)視訊數(shù)據(jù)庫、智能型電子裝置、數(shù)字電視頻道上播放影片?,F(xiàn)代工業(yè)界也制定了許多影音壓縮與播放的標(biāo)準(zhǔn),例如動畫專家組(MPEG)、高階視訊編碼H.264、數(shù)字音視頻編解碼技術(shù)標(biāo)準(zhǔn)AVS、視訊編解碼器VC-1等。
[0003]在這些工業(yè)標(biāo)準(zhǔn)所指涉的影片的壓制與播放當(dāng)中,都定義了影像與聲音的同步機(jī)制(Aud1 Video Synchronizat1n, AV Sync)。然而,在播放端方面,如果遇到了影像與聲音不同步的影片,依然需要完成播放的任務(wù)。由于播放端或解碼端無法保證壓制端或編碼端完全遵照工業(yè)標(biāo)準(zhǔn)來壓制影片,因此,播放端實(shí)際上需要某一種影音同步的機(jī)制,盡可能地矯正影片中影音不同步的情況,以提供更佳的使用者體驗(yàn)。
【發(fā)明內(nèi)容】
[0004]在本發(fā)明的一實(shí)施例中,提供一種同步影音碼流的解碼方法。其中上述的影音碼流包含多個時鐘參考值與多個視訊及音訊的數(shù)據(jù)封包,每一個數(shù)據(jù)封包均對應(yīng)至一顯示值。該解碼方法包含:利用一第一時鐘參考值重建一時鐘值;判斷該時鐘值與該多個顯示值中的一第一顯示值的誤差是否大于一第一范圍;當(dāng)該時鐘值與該第一顯示值的誤差大于該第一范圍時,更改該時鐘值為該多個顯示值中的一第二顯示值;以及利用該第二顯示值所設(shè)定的該時鐘值執(zhí)行至少一影音同步步驟。
[0005]在本發(fā)明的另一實(shí)施例中,提供一種同步影音碼流的解碼器,其中上述的影音碼流包含多個時鐘參考值與多個視訊及音訊的數(shù)據(jù)封包,每一個數(shù)據(jù)封包均對應(yīng)至一顯示值,該解碼器包含:一碼流讀取模塊,用于根據(jù)一第一時鐘參考值重建一時鐘值;一管理模塊,用于判斷該時鐘值與該多個顯示值的一第一顯示值中的誤差是否大于一第一范圍,當(dāng)該時鐘值與該第一顯不值的誤差大于該第一范圍時,更改該時鐘值為該多個顯不值中的一第二顯示值;以及一影音同步模塊,用于根據(jù)該第二顯示值所設(shè)定的該時鐘值執(zhí)行至少一影音同步步驟。
【附圖說明】
[0006]圖1為根據(jù)本發(fā)明的一實(shí)施例的一播放端的狀態(tài)機(jī)的一示意圖。
[0007]圖2為根據(jù)本發(fā)明另一實(shí)施例的一播放端的狀態(tài)機(jī)的一示意圖。
[0008]圖3為根據(jù)本發(fā)明一實(shí)施例的一播放方法的一流程的示意圖。
[0009]圖4為根據(jù)本發(fā)明另一實(shí)施例的一播放方法的一流程的示意圖。
[0010]圖5為根據(jù)本發(fā)明一實(shí)施例的一影片播放器的一方塊示意圖。
【具體實(shí)施方式】
[0011]本發(fā)明將詳細(xì)描述一些實(shí)施例如下。然而,除了所揭露的實(shí)施例外,本發(fā)明的范圍并不受該些實(shí)施例的限定,乃以其后的申請專利范圍為準(zhǔn)。而為了提供更清楚的描述及使該項(xiàng)技藝的普通人員能理解本發(fā)明的
【發(fā)明內(nèi)容】
,圖示內(nèi)各部分并沒有依照其相對的尺寸進(jìn)行繪圖,某些尺寸或其它相關(guān)尺度的比例可能被凸顯出來而顯得夸張,且不相關(guān)的細(xì)節(jié)部分并沒有完全繪出,以求圖示的簡潔。
[0012]以下的說明將舉動畫專家組(MPEG)作為范例,本領(lǐng)域的普通技術(shù)人員可以理解至IJ,除了 MPEG之外,尚有其它可適用的工業(yè)標(biāo)準(zhǔn)。本發(fā)明的范圍并不限定在MPEG當(dāng)中。接下來將要簡述根據(jù)MPEG標(biāo)準(zhǔn)如何壓制影片,特別是關(guān)于影音同步的部分。
[0013]模擬的影音信號經(jīng)過取樣、量化、及壓縮之后,將會形成基本碼流(ES,elementarystream)。每一個基本碼流包含幾個存取單元(AU, access unit)。存取單元可以包含視訊數(shù)據(jù)或音訊數(shù)據(jù)。每一個存取單元包含一個視訊幀(frame)或一個音訊幀的數(shù)據(jù)。
[0014]連續(xù)的基本碼流得先分割成段,成為封包化基本碼流(PES, packetizedelementary stream)。在形成封包化基本碼流時,可以在其頭端訊息內(nèi)加入顯示時間戳(PTS, presentat1n time stamp)與解碼時間戮(DTS, decode time stamp)。上述的顯不時間戳PTS會告知播送端何時要顯示或播放該封包化基本碼流內(nèi)的第一個存取單元的視訊數(shù)據(jù)或音訊數(shù)據(jù)。換言之,視訊數(shù)據(jù)會對應(yīng)到一個顯示時間戳PTS,音訊數(shù)據(jù)也會對應(yīng)到一個顯示時間戳PTS。上述的解碼時間戳DTS則用于告知播送端何時要進(jìn)行解碼。
[0015]接下來,影片的壓制端再將封包化基本碼流分割成具有固定長度的傳輸碼流(TS, transport stream)或是可變長度的節(jié)目流(PS, program stream)。在傳輸碼流TS的頭端訊息當(dāng)中,包含節(jié)目時鐘參考值(PCR, program clock reference)。
[0016]壓制端或編碼端當(dāng)中需要具備一個系統(tǒng)時鐘(STC, system timing clock),其頻率為27MHz。系統(tǒng)時鐘STC系用來指示上述的顯示時間戳PTS與節(jié)目時鐘參考值PCR。編碼端必須在節(jié)目時鐘參考值PCR字段要被編入的最后一刻,才將系統(tǒng)時鐘STC的瞬間取樣值作為節(jié)目時鐘參考值PCR,存入該字段當(dāng)中。
[0017]在解碼端的部分,會利用節(jié)目時鐘參考值PCR重建與編碼端同步的系統(tǒng)時鐘STC。每一次接收到新的節(jié)目時鐘參考值PCR時,就會重新重建系統(tǒng)時鐘STC。接著在解開封包化基本碼流的頭端訊息時,會解出視訊數(shù)據(jù)的顯示時間戳PTS以及音訊數(shù)據(jù)的顯示時間戳PTS,也會解出相關(guān)的解碼時間戳DTS。顯示時間戳PTS與解碼時間戳DTS,連同被解開的基本碼流會被送入到存儲器內(nèi)儲存。
[0018]在基本碼流的每個存取單元開始解碼之前,會先比較其對應(yīng)的解碼時間戳DTS與節(jié)目時鐘參考值PCR,當(dāng)兩者相等時即開始解碼。在每個存取單元的視訊數(shù)據(jù)或音訊數(shù)據(jù)開始播放之前,會先比較其對應(yīng)的顯示時間戳PTS與節(jié)目時鐘參考值PCR,當(dāng)兩者相等時即開始播放該存取單元的視訊數(shù)據(jù)或音訊數(shù)據(jù)。
[0019]上述所提及的是理想狀態(tài),也就是影片的壓制端或編碼端嚴(yán)格按照標(biāo)準(zhǔn)來實(shí)作時的情況。要是編碼端不按照這樣的標(biāo)準(zhǔn)進(jìn)行影片的壓制,節(jié)目時鐘參考值PCR往往就會出現(xiàn)誤差。在這種情況之下,解碼端依然要繼續(xù)播放影片。本發(fā)明的主要精神之一,在于節(jié)目時鐘參考值PCR的誤差值在某個范圍之內(nèi),會利用顯示時間戳PTS回頭校正編碼端重建的系統(tǒng)時鐘STC,盡可能使得視訊與音訊數(shù)據(jù)同步播送。本發(fā)明的另一個主要精神,在于當(dāng)節(jié)目時鐘參考值PCR的誤差值在某個范圍之外時,直接放棄視訊與音訊數(shù)據(jù)同步過程,減少浪費(fèi)解碼器的計(jì)算資源與能源。
[0020]請參考圖1所示,其為根據(jù)本發(fā)明的一實(shí)施例的一播放端的狀態(tài)機(jī)100的一示意圖。該播放端系用于播放一影音碼流,該影音碼流包含多個視訊與音訊的數(shù)據(jù)封包,視訊與音訊的數(shù)據(jù)封包各自包含有一顯示時間戳PTS。該影音碼流還包含多個節(jié)目時鐘參考值PCR,當(dāng)該播放端接收每一個該節(jié)目時鐘參考值PCR時,就會重建一系統(tǒng)時鐘STC的值。當(dāng)系統(tǒng)時鐘STC與顯示時間戳PTS相符時,該播放端即播放該顯示時間戳PTS所屬的視訊或音訊的數(shù)據(jù)封包的內(nèi)容。
[0021]該狀態(tài)機(jī)100包含有三個狀態(tài),一正常狀態(tài)110、一檢查狀態(tài)120、與一非正常狀態(tài)130。當(dāng)上述的系統(tǒng)時鐘STC與顯示時間戳PTS的誤差在一第一范圍內(nèi)時,也就是節(jié)目時鐘參考值PCR合理時,正常狀態(tài)110會循著路徑112,維持在正常狀態(tài)110。然而,當(dāng)上述的系統(tǒng)時鐘STC與顯示時間戳PTS的誤差超過該第一范圍時,亦即節(jié)目時鐘參考值PCR不合理,則狀態(tài)機(jī)100將會循著路徑114,從正常狀態(tài)110轉(zhuǎn)變?yōu)闄z查狀態(tài)120。
[0022]在某一實(shí)施例中,上述的系統(tǒng)時鐘STC與顯不時間戳PTS的誤差的第一范圍,可以是系統(tǒng)時鐘STC領(lǐng)先顯示時間戳PTS未達(dá)到一第一下限,或者是顯示時間戳PTS領(lǐng)先系統(tǒng)時鐘STC未達(dá)到一第二下限時。在一范例中,該第一下限等于該第二下限。舉例來說,第一下限與第二下限都等于0.5秒。在另一范例中,該第一下限等于該第二下限。舉例來說,第一下限為I秒,而第二下限為0.7秒。
[0023]當(dāng)處在檢查狀態(tài)120時,若上述的節(jié)目時鐘參考值PCR/系統(tǒng)時鐘STC與顯示時間戳PTS的誤差又回復(fù)到該第一范圍以內(nèi)時,則狀態(tài)機(jī)將循著路徑122回到上述的正常狀態(tài)110。如果上述的節(jié)目時鐘參考值PCR/系統(tǒng)時鐘STC與顯示時間戳PTS的誤差持續(xù)超出該第一范圍,但還未超過某一時限(如十秒內(nèi)),則狀態(tài)機(jī)100仍循著路徑124,維持在檢查狀態(tài)120。不過,當(dāng)上述的節(jié)目時鐘參考值PCR/系統(tǒng)時鐘STC與顯示時間戳PTS的誤差持續(xù)超出該第一范圍,而且超過上述時限(如十秒)的時候,則狀態(tài)機(jī)100會循著路徑126,轉(zhuǎn)變成非正常狀態(tài)130。
[0024]在處在非正常狀態(tài)130時,播放端會使用音訊數(shù)據(jù)或視訊數(shù)據(jù)的顯示時間戳PTS來的值來設(shè)定系統(tǒng)時鐘STC的值。在一實(shí)施例中,上述用于設(shè)定系統(tǒng)時鐘STC的顯示時間戳PTS是對應(yīng)到音訊數(shù)據(jù)。因此,音訊數(shù)據(jù)的顯示時間戳PTS就馬上與系統(tǒng)時鐘STC同步。然而,視訊數(shù)據(jù)未必與系統(tǒng)時鐘STC同步。所以播放端可能需要看視訊數(shù)據(jù)的顯示時間戳PTS與系統(tǒng)時鐘STC的關(guān)系,進(jìn)行重復(fù)播放某些