專利名稱:低延時視頻解碼的制作方法
低延時視頻解碼
背景技術(shù):
工程師使用壓縮(也稱為源碼化或者源編碼)來減少數(shù)字視頻的位率。壓縮通過將視頻信息轉(zhuǎn)換為更低位率形式來減少存儲和傳送信息的成本。解壓縮(也稱為解碼)從壓縮的形式重構(gòu)原信息的版本?!熬幗獯a器(codec)”為編碼器/解碼器系統(tǒng)。在過去二十年,已經(jīng)采用包括H. 261、H. 262 (MPEG-2)和H. 263標(biāo)準(zhǔn)以及MPEG-I 和MPEG-4標(biāo)準(zhǔn)的各種視頻編解碼器標(biāo)準(zhǔn)。近來,已經(jīng)采用H. 264標(biāo)準(zhǔn)(有時稱為AVC或者 14496-10)和VC-I標(biāo)準(zhǔn)。關(guān)于更多細(xì)節(jié),參見相應(yīng)標(biāo)準(zhǔn)的代表性版本。視頻編解碼器標(biāo)準(zhǔn)通常為編碼視頻位流的語法定義選項,從而詳述當(dāng)在編碼和解碼中使用特定特征時必須在用于視頻序列的位流中的參數(shù)。在許多情況下,視頻編解碼器標(biāo)準(zhǔn)也提供與解碼器為了在解碼時實現(xiàn)正確結(jié)果而應(yīng)當(dāng)執(zhí)行的解碼操作有關(guān)的細(xì)節(jié)。壓縮的基本目標(biāo)在于提供良好的速率_失真性能。因而,對于特定位率,編碼器嘗試提供最高視頻質(zhì)量?;蛘邔τ谠曨l的特定質(zhì)量/保真度水平,編碼器嘗試提供最低位率的編碼視頻。在實踐中,根據(jù)使用場景,比如編碼時間、編碼復(fù)雜度、編碼資源、解碼時間、 解碼復(fù)雜度、解碼資源、總延遲和/或回放流暢度之類的考慮也影響在編碼和解碼期間作出的決定。例如,考慮比如從存儲設(shè)備的視頻回放、從通過網(wǎng)絡(luò)連接流化的編碼數(shù)據(jù)的視頻回放和視頻轉(zhuǎn)碼(從一種位速率到另一位率或者從一個標(biāo)準(zhǔn)到另一標(biāo)準(zhǔn))之類的使用場景。 在編碼器側(cè),這樣的應(yīng)用可以允許完全對時間不敏感的離線編碼。因此,編碼器可以增加編碼時間并且增加在編碼期間使用的資源,以發(fā)現(xiàn)最高效的視頻壓縮方式,并且由此提高速率_失真性能。如果在解碼器側(cè)也可接受少量延遲(例如在啟動時3-10秒),則編碼器可以例如通過利用來自序列中的向前更遠(yuǎn)畫面的畫面間相關(guān)性來進(jìn)一步提高速率_失真性能。對于多數(shù)視頻回放場景,在解碼器側(cè),在回放開始之前可接受3-10秒或者更多延遲,只要回放在開始之后無中斷即可。受制于這個流暢回放約束,解碼器免于貢獻(xiàn)附加資源用于多線程解碼或者多處理器解碼。事實上,在一些情況下,解碼器可以增加延時以便允許更高效利用解碼資源。另一方面,考慮比如遠(yuǎn)程桌面會議、監(jiān)控視頻、視頻電話和其它實時通信場景之類的使用場景。這樣的應(yīng)用對時間敏感。在記錄輸入畫面與回放輸出畫面之間的低延時是性能方面的關(guān)鍵因素。當(dāng)在實時通信場景中應(yīng)用適合于非實時通信的編碼/解碼工具時,總延時經(jīng)常高到不可接受。這些工具在編碼和解碼期間引入的延遲可以提高普通視頻回放的性能,但是它們破壞實時通信。
發(fā)明內(nèi)容
概括而言,具體實施方式
給出了用于減少視頻解碼時的延時的技術(shù)和工具。該技術(shù)和工具幫助減少延時以便提高實時通信中的響應(yīng)度。例如,這些技術(shù)和工具通過移除或者甚至消除在解碼期間的各種階段處的緩沖來減少總延時,這提高了響應(yīng)度,但是可能在其它方面引起某個量的性能損失。
4
根據(jù)這里描述的技術(shù)和工具的一個方面,一種工具(比如視頻解碼器、具有視頻解碼器的實時通信工具或者具有視頻解碼器的其它工具)選擇低延時解碼模式,該解碼模式的特征在于與其他解碼模式相比的更低延時解碼。至少部分基于所選解碼模式,工具調(diào)節(jié)一個或者多個解碼方面以有助于低延時解碼。例如工具調(diào)節(jié)輸出定時確定、畫面邊界檢測、 飛行中的畫面數(shù)目和/或抖動緩沖器利用率。工具接收用于視頻序列的位流中的編碼數(shù)據(jù),并且利用視頻解碼器根據(jù)所選的解碼模式對編碼數(shù)據(jù)中的至少一些編碼數(shù)據(jù)進(jìn)行解碼以重建畫面。工具然后輸出畫面用于顯示。在低延時解碼模式中,輸出定時確定可以使用位流中的的幀計數(shù)語法元素(如果存在)來設(shè)置用于解碼畫面緩沖器(DPB)(例如,如在H. 264標(biāo)準(zhǔn)中定義)的初始輸出延遲。 幀計數(shù)語法元素指示幀重新排序延遲。例如,幀重新排序延遲是按照編碼順序可以先于給定幀、但是按照顯示順序跟隨給定幀的幀的最大計數(shù)。在一些實施方式中,幀計數(shù)語法元素作為用于視頻序列的視頻可用性信息(VUI)參數(shù)而用信號通知的num_reC0rder_frames語法元素。比較而言,其它解碼模式向視頻回放提供更高延時。在其它解碼模式中,例如當(dāng) DPB已滿時開始從DPB輸出畫面,因而初始輸出延遲依賴于DPB的大小。使用幀計數(shù)語法元素來確定初始輸出延遲可以允許輸出更早5幀或者更多幀(在許多情況下高達(dá)16幀)開始。在低延時解碼模式中,畫面邊界檢測可以使用位流中的輔助定界符語法元素來發(fā)現(xiàn)在畫面之間的邊界。在一些實施方式中,輔助定界符語法元素為具有網(wǎng)絡(luò)抽象層(NAL) 單元類型的網(wǎng)絡(luò)抽象層(NAL)單元,該NAL單元類型向解碼器指定它們?yōu)楫嬅孢吔缍ń绶?比較而言,其它解碼模式例如使用分片層語法元素來檢測畫面邊界,這由于緩沖一個附加單位的分片層編碼數(shù)據(jù)用于畫面邊界發(fā)現(xiàn)而增添延遲。在用于多線程解碼實施方式的低延時解碼模式中,飛行中的畫面數(shù)目可以被減少或者甚至設(shè)置成單個畫面。比較而言,其它解碼模式允許用于多線程解碼實施方式的飛行中的多個畫面,這提高處理器利用率、但是增添延遲和附加畫面緩沖。在低延時解碼模式中,可以調(diào)節(jié)對一個或者多個抖動緩沖器的使用以使總延時減少優(yōu)先于回放流暢度。例如抖動緩沖器為輸入緩沖器(該緩沖器通常在解碼之前存儲編碼數(shù)據(jù)以便平滑編碼數(shù)據(jù)遞送時的波動和/或在畫面之間的位率波動),并且一旦用于給定畫面的編碼數(shù)據(jù)在輸入緩沖器中可用就針對給定畫面開始解碼?;蛘?,抖動緩沖器為輸出緩沖器(該緩沖器通常存儲來自解碼的輸出以便平滑解碼復(fù)雜度的波動),并且輸出緩沖器被設(shè)置成最小大小或者被完全繞過。比較而言,在其它解碼模式中,輸入緩沖器和輸出緩沖器被設(shè)置為使回放流暢度優(yōu)先于總延時減少。例如在解碼開始之前將輸入緩沖器填充至閾值充滿度,并且輸出緩沖器在顯示之前存儲3-5個解碼畫面。根據(jù)這里描述的技術(shù)和工具的另一方面,一種工具(比如視頻編碼器、具有視頻編碼器的實時通信工具或者具有視頻編碼器的其它工具)選擇有助于低延時解碼的編碼模式。工具至少部分基于所選編碼模式調(diào)節(jié)一個或者多個編碼方面以便有助于低延時解碼。 例如工具針對輸出定時確定和/或畫面邊界檢測來調(diào)節(jié)編碼。工具接收用于視頻序列的畫面,并且利用視頻編碼器來根據(jù)所選編碼模式對畫面進(jìn)行編碼以產(chǎn)生編碼數(shù)據(jù)。工具然后在位流中輸出編碼數(shù)據(jù),其中位流包括解碼器可以用于低延時解碼的語法元素。可以將位流中的編碼數(shù)據(jù)構(gòu)造為在其它方面有助于低延時解碼。例如可以根據(jù)畫面組(GOP)布置(比如I P P P I P P P···)來編碼畫面,其中在僅有幀內(nèi)編碼內(nèi)容的畫面(I畫面)之后有具有某些參考先前畫面的前向預(yù)測內(nèi)容、但是無畫面內(nèi)容參考按照顯示順序更晚的畫面的畫面 (P畫面)。根據(jù)這里描述的技術(shù)和工具的另一方面,一種工具接收用于視頻序列的畫面并且對畫面進(jìn)行編碼以產(chǎn)生編碼數(shù)據(jù)。編碼可以通過設(shè)置與幀重新排序延遲一致的畫面間相關(guān)性來有助于低延時解碼。編碼也可以通過在位流中插入輔助定界符語法元素來有助于低延時解碼,其中每個輔助定界符語法元素標(biāo)識畫面邊界。工具在位流中輸出編碼數(shù)據(jù),該位流包括指示幀重新排序延遲的幀計數(shù)語法元素和/或包括輔助定界符語法元素。根據(jù)這里描述的技術(shù)和工具的另一方面,一種工具接收在用于視頻序列的位流中的編碼數(shù)據(jù)。位流包括指示幀重新排序延遲的幀計數(shù)語法元素(例如在視頻可用性信息中)。位流也包括輔助定界符語法元素(例如作為由解碼器理解為指示畫面邊界的NAL單元)。當(dāng)工具對編碼數(shù)據(jù)進(jìn)行解碼以重建畫面時,工具使用輔助定界符語法元素來檢測畫面邊界。工具輸出畫面用于顯示,其中使用幀計數(shù)語法元素來確定用于DPB的初始輸出延遲。 為了進(jìn)一步減少延時,工具可以將飛行中的畫面數(shù)目設(shè)置成一(由此限制可以同時對多少畫面解碼)和/或設(shè)置抖動緩沖器的使用以使延時減少優(yōu)先于回放流暢度。本發(fā)明的前述和其它目的、特征和優(yōu)點將根據(jù)參照附圖進(jìn)行的下文具體實施方式
而變得更清楚。
圖1是本發(fā)明的一些描述實施例可以在其中實現(xiàn)的示例計算環(huán)境的圖。圖2a和2b是一些描述的實施例可以在其中實現(xiàn)的示例網(wǎng)絡(luò)環(huán)境的圖。圖3是與之結(jié)合可以實現(xiàn)一些描述的實施例的示例編碼器的圖。圖4是與之結(jié)合可以實現(xiàn)一些描述的實施例的示例解碼器的圖。圖5是示出經(jīng)受與幀計數(shù)語法元素一致的延遲的、用于示例系列中的畫面的編碼順序和顯示順序的圖。圖6是包括輔助定界符語法元素的示例位流的圖。圖7是示出了用于以有助于低延時解碼的方式對視頻進(jìn)行編碼的示例技術(shù)的流程圖。圖8是示出了用于低延時解碼的示例技術(shù)的流程圖。圖9是示出了用于以有助于低延時解碼的方式對視頻有選擇地進(jìn)行編碼的示例技術(shù)的流程圖。圖10是示出了用于在低延時解碼模式中對視頻有選擇地進(jìn)行解碼的示例技術(shù)的流程圖。
具體實施例方式具體實施方式
給出用于減少視頻解碼時的延時的技術(shù)和工具。這些技術(shù)和工具幫助減少延時以便提高實時通信中的響應(yīng)度。在視頻編碼/解碼場景中,一些在接收輸入畫面的時間與回放畫面的時間之間的
6延遲不可避免。畫面由編碼器編碼、向解碼器遞送并且由解碼器解碼,并且由對編碼資源、 解碼資源和/或網(wǎng)絡(luò)帶寬的實際限制導(dǎo)致某一數(shù)量的延時。然而可避免其它延時。例如編碼器和解碼器可以弓I入延時以提高速率_失真性能 (例如利用來自序列中的向前更遠(yuǎn)畫面的畫面間相關(guān)性)、允許更高效利用處理能力(例如為多線程創(chuàng)造更多機(jī)會)或者使流暢回放更加可能(例如通過在解碼之前緩沖更多編碼數(shù)據(jù),以及在解碼之后緩沖更多解碼數(shù)據(jù))。雖然可能有在速率_失真性能、處理器利用或者回放流暢度方面的代價,但是可以減少這樣的延時。利用這里描述的技術(shù)和工具,解碼延時通過減少或者甚至消除在一個或者多個不同解碼階段的延遲來減少。例如通過使用以下特征中的一個或者多個特征來減少解碼延時
根據(jù)幀計數(shù)語法元素設(shè)置的初始輸出延遲。在一些解碼系統(tǒng)中,解碼器在解碼畫面緩沖器(DPB)中存儲解碼畫面。解碼器可以使用緩沖畫面作為用于運(yùn)動補(bǔ)償?shù)膮⒖籍嬅妗H笔〉?,解碼器也延遲用于顯示的輸出直至DPB已滿。為了減少延時,解碼器可以代之以使用幀計數(shù)語法元素來確定用于DPB的初始輸出延遲。以這一方式,解碼器可以加速從DPB的初始輸出。使用輔助定界符語法元素的畫面邊界檢測。在一些解碼系統(tǒng)中,解碼器通過評估用于畫面部分(分片)的語法元素并且確定該部分是下一畫面而非當(dāng)前畫面的部分,來檢測用于位流中的下一畫面的邊界。為了減少延時,解碼器可以代之以通過掃描尋找編碼器在畫面邊界插入的定界符語法元素來檢測畫面邊界。以這一方式,解碼器可以通過避免緩沖下一畫面的分片來加速畫面邊界發(fā)現(xiàn)。減少輸入和輸出緩沖器。在一些解碼系統(tǒng)中,解碼器在解碼之前在輸入緩沖器中存儲編碼數(shù)據(jù)(以平滑遞送速率或者位率的波動)并且在輸出緩沖器中存儲解碼畫面(以平滑解碼復(fù)雜度的波動)。為了減少延時,解碼器可以代之以一旦在輸入緩沖器中針對給定畫面的編碼數(shù)據(jù)可用就開始進(jìn)行針對該畫面的解碼,并且解碼器可以消除輸出緩沖器。限制飛行中的畫面數(shù)目。在一些解碼系統(tǒng)中,解碼器使用多線程并且同時執(zhí)行針對多個畫面的解碼任務(wù)。這通常提高處理器利用率但是增加了延遲。為了減少延時,解碼器可以減少同時解碼的畫面數(shù)目或者甚至限制解碼為一次單個畫面。利用這些減少解碼延時的方式,可以針對遠(yuǎn)程桌面會議、視頻電話、視頻監(jiān)控、網(wǎng)絡(luò)攝像視頻和其它實時通信應(yīng)用來改善延遲。僅考慮延時,用于實時通信應(yīng)用的理想延遲是可以利用上述設(shè)置來實現(xiàn)0畫面延遲(一個壓縮畫面輸入、一個解碼/未壓縮畫面輸出)。 受制于低延時約束,解碼器仍然可以通過使用多線程或者多個處理核心來提高解碼性能, 但是低延時約束可將這樣的機(jī)會限于利用附加解碼資源。在實時通信場景中,編碼器和解碼器通常為端到端通信系統(tǒng)的部分。即使未按照標(biāo)準(zhǔn)或者格式指定符合低延時解碼的決定,編碼器仍然做出這些決定,并且解碼器預(yù)計視頻被相應(yīng)地編碼。對于這里描述的一些創(chuàng)新,編碼器在位流中插入語法元素以有助于低延時解碼。作為選擇,另一處理工具可以插入這樣的語法元素。這里描述的其它創(chuàng)新無需來自編碼器或者其它處理工具的這種協(xié)作以插入有助于低延時解碼的語法元素。這里描述的一些創(chuàng)新參照H. 264標(biāo)準(zhǔn)特有的語法元素和操作來說明。例如幀計數(shù)語法元素可以是用于視頻序列的視頻可用性信息(VUI)中的num_rec0rder_frames語法元素。作為另一示例,定界符語法元素可以是網(wǎng)絡(luò)抽象層(NAL)單元類型為9的NAL單元。也可以針對其它標(biāo)準(zhǔn)或者格式實現(xiàn)這樣的創(chuàng)新。更一般而言,對這里描述的示例的各種替代是可能的。可以通過改變流程圖中所示階段次序、通過拆分、重復(fù)或者省略某些階段等來更改參照流程圖描述的某些技術(shù)??梢越M合或者單獨(dú)使用針對視頻解碼的減少延時的各種方面。不同實施例使用所描述的技術(shù)和工具中的一種或者多種技術(shù)或者工具。這里描述的技術(shù)和工具中的一些技術(shù)和工具解決背景技術(shù)中提到的問題中的一個或者多個問題。通常,一種給定的技術(shù)/工具未解決所有這樣的問題。I.示例計算環(huán)境。圖1圖示了所描述的技術(shù)和工具中的若干技術(shù)和工具可以在其中實現(xiàn)的適當(dāng)計算環(huán)境(100)的廣義示例。計算環(huán)境(100)并非意圖暗示關(guān)于使用或者功能范圍的任何限制,因為這些技術(shù)和工具可以在多種通用或者專用計算環(huán)境中實現(xiàn)。參照圖1,計算環(huán)境(100)包括一個或者多個處理單元(110,115)和存儲器(120, 125)。在圖1中,在虛線內(nèi)包括這個最基本配置(130)。處理單元(110,115)執(zhí)行計算機(jī)可執(zhí)行指令。處理單元可以是通用中央處理單元(CPU)、在專用集成電路(ASIC)中的處理器或者任何其它類型的處理器。在多處理系統(tǒng)中,多個處理單元執(zhí)行計算機(jī)可執(zhí)行指令以增加處理能力。例如,圖1示出了中央處理單元(110)以及圖形處理單元或者協(xié)處理單元 (115)。存儲器(120,125)可以是處理單元(多個)可訪問的易失性存儲器(例如寄存器、高速緩存器、RAM)、非易失性存儲器(例如R0M、EEPR0M、閃存等)或者二者的某一組合。存儲器 (120,125)以適合于由處理單元(多個)執(zhí)行的計算機(jī)可執(zhí)行指令這一形式存儲實現(xiàn)用于低延時解碼的一種或者多種創(chuàng)新的軟件(180)。計算機(jī)環(huán)境可以具有附加特征。例如計算環(huán)境(100)包括存儲設(shè)備(140)、一個或者多個輸入設(shè)備(150)、一個或者多個輸出設(shè)備(160)和一個或者多個通信連接(170)?;ミB機(jī)制(未示出)(比如總線、控制器或者網(wǎng)絡(luò))互連計算環(huán)境(100)的部件。通常,操作系統(tǒng)軟件(未示出)為在計算環(huán)境(100)中執(zhí)行的其它軟件提供操作環(huán)境,并且協(xié)調(diào)計算環(huán)境 (100)的部件的活動。有形存儲設(shè)備(140 )可以可移動或者不可移動并且包括可以用來以非瞬態(tài)方式存儲信息并且可以在計算機(jī)環(huán)境(100)內(nèi)訪問的磁盤、磁帶或者盒、CD-ROM、DVD或者任何其它介質(zhì)。存儲設(shè)備(140)存儲用于實現(xiàn)用于低延時解碼的一種或者多種創(chuàng)新的軟件(180) 的指令。輸入設(shè)備(多個)(150)可以是向計算環(huán)境(100)提供輸入的觸摸輸入設(shè)備(比如鍵盤、鼠標(biāo)、筆或者跟蹤球)、語音輸入設(shè)備、掃描設(shè)備或者其他設(shè)備。對于視頻編碼,輸入設(shè)備(多個)(150)可以是接受以模擬或者數(shù)字形式的視頻輸入的視頻卡、TV調(diào)諧器卡或者相似設(shè)備,或者將視頻樣本讀入計算環(huán)境(100)中的CD-ROM或者CD-RW。輸出設(shè)備(多個) (160)可以是從計算環(huán)境(100)提供輸出的顯示器、打印機(jī)、揚(yáng)聲器、⑶-寫入器或者其他設(shè)備。通信連接(多個)(170)使能通過通信介質(zhì)與另一計算實體的通信。通信介質(zhì)在調(diào)制數(shù)據(jù)信號中傳送信息(比如計算機(jī)可執(zhí)行指令、音頻或者視頻輸入或者輸出或者其它數(shù)據(jù))。調(diào)制數(shù)據(jù)信號是如下信號,該信號的一個或者多個特性以在信號中編碼信息這樣的方
8式來設(shè)置或者改變。舉例而言而非限制,通信介質(zhì)包括用電、光學(xué)、RF或者其它載體實現(xiàn)的有線或者無線技術(shù)??梢栽谟嬎銠C(jī)可讀介質(zhì)的一般背景中描述技術(shù)和工具。計算機(jī)可讀介質(zhì)是可以在計算環(huán)境內(nèi)訪問的任何可用的有形介質(zhì)。舉例而言而非限制,就計算環(huán)境(100)而言,計算機(jī)可讀介質(zhì)包括存儲器(120)、存儲設(shè)備(140)和任何上述介質(zhì)的組合??梢栽谀繕?biāo)實際或者虛擬處理器上的計算環(huán)境中執(zhí)行的計算機(jī)可執(zhí)行指令(比如在程序模塊中包括的那些計算機(jī)可執(zhí)行指令)的一般背景中描述技術(shù)和工具。一般而言,程序模塊包括執(zhí)行特定任務(wù)或者實現(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、庫、對象、類、部件、數(shù)據(jù)結(jié)構(gòu)等??梢栽诟鞣N實施例中根據(jù)希望在程序模塊之間組合或者拆分程序模塊的功能。 可以在本地或者分布式計算環(huán)境內(nèi)執(zhí)行用于程序模塊的計算機(jī)可執(zhí)行指令。這里可互換使用術(shù)語“系統(tǒng)”和“設(shè)備”。除非上下文另有明示,任何術(shù)語都不意味著對計算系統(tǒng)或者計算設(shè)備類型的任何限制。一般而言,計算系統(tǒng)或者計算設(shè)備可以是本地或者分布式的,并且可以包括專用硬件和/或通用硬件與實現(xiàn)這里描述的功能的軟件的任何組合。為了陳述,具體實施方式
使用比如“確定”和“選擇”這樣的術(shù)語來描述計算環(huán)境中的計算機(jī)操作。這些術(shù)語是針對由計算機(jī)執(zhí)行的操作的高級抽象化而不應(yīng)與人類執(zhí)行的動作混淆。與這些術(shù)語對應(yīng)的實際計算機(jī)操作根據(jù)實施方式而變化。II.示例網(wǎng)絡(luò)環(huán)境。圖2a和2b示出了包括視頻編碼器(220)和視頻解碼器(270)的示例網(wǎng)絡(luò)環(huán)境。 編碼器(220)和解碼器(270)使用適當(dāng)通信協(xié)議通過網(wǎng)絡(luò)(250)連接。網(wǎng)絡(luò)(250)可以包括因特網(wǎng)或者另一計算機(jī)網(wǎng)絡(luò)。在圖2a所示網(wǎng)絡(luò)環(huán)境(200)中,每個實時通信(RTC)工具(210)包括用于雙向通信的編碼器(220)和解碼器(270)。雙向通信可以是視頻會議、視頻電話呼叫或者其它兩方通信場景的部分。雖然圖2a中的網(wǎng)絡(luò)環(huán)境(200)包括兩個實時通信工具(210),但是網(wǎng)絡(luò)環(huán)境(200)可以代之以包括參與多方通信的三個或者更多實時通信工具(210)。實時通信工具(210)管理編碼器(220)的編碼。圖3示出了可以包括在實時通信工具(210)中的示例編碼器(300)。作為選擇,實時通信工具(210)使用其他編碼器。實時通信工具(210)也管理解碼器(270)的解碼。圖4示出了可以包括在實時通信工具(210) 中的示例解碼器(400)以及輸入和輸出緩沖器。作為選擇,實時通信工具(210)使用其他解碼器。在圖2b所示網(wǎng)絡(luò)環(huán)境(201)中,編碼工具(212)包括編碼器(220 ),該編碼器編碼用于向包括解碼器(270)的多個回放工具(214)遞送的視頻。可以針對視頻監(jiān)控系統(tǒng)、網(wǎng)絡(luò)攝像監(jiān)視系統(tǒng)、遠(yuǎn)程桌面會議演示或者其中對視頻編碼并且從一個位置向一個或者多個其它位置發(fā)送視頻的其它場景提供單向通信。雖然圖2b中所示網(wǎng)絡(luò)環(huán)境(201)包括兩個回放工具(214),但是網(wǎng)絡(luò)環(huán)境(201)可以包括更多或者更少的回放工具(214)。一般而言,回放工具(214)與編碼工具(212)進(jìn)行通信以確定回放工具(214)要接收的視頻流。回放工具(214)接收流、緩沖所接收的編碼數(shù)據(jù)適當(dāng)時段并且開始解碼和回放。圖3示出了可以包括在編碼工具(212)中的示例編碼器(300)。作為選擇,編碼工具(212)使用其他編碼器。編碼工具(212)也可以包括用于管理與一個或者多個回放工具(214)的連接的服務(wù)器側(cè)控制器邏輯。圖4示出了可以包括在回放工具(214)中的示例解碼器(400)以及輸入和輸出緩沖器。作為選擇,回放工具(214)使用其他解碼器?;胤殴ぞ?(214)也可以包括用于管理與編碼工具(212)的連接的客戶端側(cè)控制器邏輯。在一些方面,實時通信工具(210)、編碼工具(212)和回放工具(214)獨(dú)立于編解碼器,因為它們可以與任何可用的視頻編碼器和解碼器一起工作。例如給定編碼器(220)可以產(chǎn)生與SMPTE 421M標(biāo)準(zhǔn)(也稱為VC-I標(biāo)準(zhǔn))、ISO-IEC 14496-10標(biāo)準(zhǔn)(也稱為H. 264或者 AVC)、其他標(biāo)準(zhǔn)或者專用格式相符的輸出,而對應(yīng)解碼器(270)接受來自編碼器(220)的編碼數(shù)據(jù)。在其它方面,實時通信工具(210)、編碼工具(212)和回放工具(214)依賴于編解碼器,因為它們做出的決定可能依賴于用于特定標(biāo)準(zhǔn)或者格式的位流語法。例如使用語法元素來標(biāo)記畫面邊界或者使用語法元素來指示最大幀計數(shù)值可以是給定標(biāo)準(zhǔn)或者格式特有的。III.示例編碼器。圖3是與之結(jié)合可以實現(xiàn)一些描述的實施例的示例編碼器系統(tǒng)(300)的框圖。編碼器系統(tǒng)(300)接收源視頻畫面序列(305)并且產(chǎn)生位流中的編碼數(shù)據(jù)(395)作為向存儲設(shè)備、緩沖器或者通信連接的輸出。編碼數(shù)據(jù)(395)包括有助于低延時解碼的語法元素。術(shù)語“畫面” 一般是指源、編碼或者重建的圖像數(shù)據(jù)。對于漸進(jìn)視頻,畫面為漸進(jìn)視頻幀。對于交織視頻,畫面根據(jù)上下文可以指示交織視頻幀、幀的頂場或者幀的底場。源視頻畫面一般為來自視頻源(比如相機(jī)、存儲介質(zhì)或者通信連接)的視頻畫面。圖3按照顯示順序示出了輸入幀F(xiàn)7、F8和F9。編碼器系統(tǒng)(300)可以包括在編碼之前執(zhí)行視頻畫面預(yù)處理(例如濾波)的預(yù)處理器(未示出)。編碼系統(tǒng)(300)包括壓縮視頻畫面(305)并且輸出編碼數(shù)據(jù)位流(395)的核心編碼器(330)。一般而言,核心編碼器(330)包括執(zhí)行編碼任務(wù)(比如運(yùn)動估計和補(bǔ)償、 頻率變換、量化和熵編碼)以及用于重建在運(yùn)動估計和補(bǔ)償時使用的參考畫面的解碼任務(wù)的多個編碼模塊(340)。畫面緩沖器(350)存儲用于在運(yùn)動估計和補(bǔ)償時使用的重建畫面。 圖3示出了在畫面緩沖器(350)中的重建幀?。、&、&、&、?4和?6。核心編碼器(330)和編碼模塊(340)執(zhí)行的確切操作可以根據(jù)壓縮格式而變化。輸出位流的格式可以是Windows Media Video 格式、VC-1 格式、MPEG-x 格式(例如 MPEG_1、MPEG_2 或者 MPEG_4)、H. 26x 格式 (例如H. 261、H. 262、H. 263或者H. 264)或者其它格式。在封閉的端到端系統(tǒng)中,解碼器和編碼器系統(tǒng)(300)可以被配置成使用擴(kuò)展或者偏離壓縮格式的附加特征。具體而言,來自編碼器系統(tǒng)300的輸出位流可以包括有助于低延時解碼的附加語法元素。例如位流包括對應(yīng)解碼器可以使用來減少解碼延時的幀計數(shù)語法元素和/或輔助定界符語法元素。編碼器系統(tǒng)(300)可以是能夠以多個編碼模式(比如用于實時通信的低延時編碼模式、轉(zhuǎn)碼轉(zhuǎn)模式和用于從文件或者流回放的媒體的普通編碼模式)中的任何編碼模式進(jìn)行操作的通用編碼工具。核心編碼器(330)可以實現(xiàn)為操作系統(tǒng)模塊、應(yīng)用庫的部分或者獨(dú)立應(yīng)用。在圖3中,核心編碼器(330)顯露接口(332),其它軟件(例如實時通信工具、媒體編碼工具)可以通過該接口控制對用于編碼器系統(tǒng)(300)的編碼模式的選擇。例如,其它軟
10件可以設(shè)置或者不設(shè)置低延時模式標(biāo)志,該標(biāo)志又控制其它編碼參數(shù)/操作。如果設(shè)置低延時模式標(biāo)志,則核心編碼器(330)在位流中的畫面邊界處插入輔助定界符語法元素并且發(fā)信號通知在位流中的幀計數(shù)語法元素以控制DPB輸出定時。在低延時模式中,核心編碼器(330)也可以做出符合低延時編碼和解碼的各種編碼決定。例如核心編碼器(330)設(shè)置編碼類型使得畫面按照諸如I PPPIPP P…之類的GOP布置,其中在I畫面(僅有幀內(nèi)編碼內(nèi)容)之后有一個或者多個P畫面(每個P畫面具有參考先前畫面的前向預(yù)測內(nèi)容),但是無畫面內(nèi)容參考根據(jù)顯示順序的更晚畫面。如果未設(shè)置低延時模式標(biāo)志,則核心編碼器 (330)不發(fā)信號通知輔助定界符語法元素以指示畫面邊界。更一般而言,通過接口(332), 其它軟件可以控制用于編碼器系統(tǒng)(300)的其它編碼參數(shù)或者設(shè)置。IV.示例解碼器。圖4是與之結(jié)合可以實現(xiàn)一些描述的實施例的示例解碼器系統(tǒng)(400)的框圖。解碼器系統(tǒng)(400)接收位流中的編碼數(shù)據(jù)(405)并且產(chǎn)生重建畫面(495)作為用于顯示、存儲或者通信連接的輸出。編碼數(shù)據(jù)(405)包括有助于低延時解碼的語法元素。解碼系統(tǒng)(400)包括接收編碼數(shù)據(jù)(405)(例如來自網(wǎng)絡(luò)連接)并且暫存編碼數(shù)據(jù) (405)的輸入緩沖器(410)。在常規(guī)解碼場景中,缺省地,輸入緩沖器(410)暫存編碼數(shù)據(jù) (405)直至達(dá)到充滿度閾值(406)為止。在那一點處,在逐個畫面的基礎(chǔ)上(按照編碼順序) 從輸入緩沖器(410)向核心解碼器(430)傳送編碼數(shù)據(jù)(405)。隨著解碼繼續(xù),向輸入緩沖器添加新編碼數(shù)據(jù),而向解碼器傳送剩余在輸入緩沖器中的最舊編碼數(shù)據(jù)。對于常規(guī)解碼場景,輸入緩沖器(410)平滑網(wǎng)絡(luò)遞送速率的波動(例如由網(wǎng)絡(luò)帶寬的改變引起)、平滑在視頻序列中的畫面之間的輸入間隔的變化和/或平滑畫面編碼大小的波動(例如由相應(yīng)畫面的復(fù)雜度差異引起)??梢愿鶕?jù)用于位流的預(yù)計數(shù)據(jù)速率和/或緩沖器(410)的大小設(shè)置充滿度閾值(406)。輸入緩沖器(410)因此引入解碼和回放延遲,而目的在于提高回放流暢度,以便回放一旦開始就無中斷。輸入緩沖器(410)引入的延遲也可以向解碼器(430)提供使用附加解碼資源用于多線程解碼的機(jī)會。在低延時解碼場景中, 可以明顯減少輸入緩沖器(410)引入的延遲。解碼系統(tǒng)(400)包括解壓編碼數(shù)據(jù)(405)并且輸出重建畫面(495)的核心解碼器 (430)。一般而言,核心解碼器(430)包括執(zhí)行解碼任務(wù)(比如熵解碼、逆量化、逆頻率變換和運(yùn)動補(bǔ)償)的多個解碼模塊(440)。DPB (450)存儲用于在運(yùn)動補(bǔ)償時使用的重建畫面。 圖4示出了在畫面緩沖器(450)中的重建幀F(xiàn)。、F2, F3、F3> F4和F60核心解碼器(430)和解碼模塊(440)執(zhí)行的確切操作可以根據(jù)壓縮格式而變化。輸入位流的格式可以是Windows Media Video 格式、VC-1 格式、MPEG-x 格式(例如 MPEG_1、MPEG_2 或者 MPEG_4)、H. 26x 格式 (例如H. 261、H. 262、H. 263或者H. 264)或者其它格式。DPB (450)暫存在運(yùn)動補(bǔ)償時使用的重建畫面。在常規(guī)視頻解碼和回放中,缺省地,一旦DPB (450)已滿就從DPB (450)輸出重建畫面。用于輸出定時的規(guī)則依賴于DPB (450)的大小(如在位流中的語法元素所指示)和在位流中的其它語法元素(例如畫面順序計數(shù)語法元素)。例如DPB (450)在向輸出緩沖器(480)輸出任何幀之前緩沖10幀。DPB (450)因此添加在回放開始之前的延遲。對照而言,在低延時解碼場景中,輸出定時可以依賴于位流中的幀計數(shù)語法元素,并且可以在DPB (450)已滿之前從DPB (450)輸出重建畫
輸出緩沖器(480)在解碼之后暫存重建畫面。輸出緩沖器(480)由重建畫面填充直至達(dá)到默認(rèn)畫面數(shù)目為止,在這一點處,按照顯示順序輸出重建畫面。隨著解碼繼續(xù),向輸出緩沖器(480)添加新重建畫面,而輸出該輸出緩沖器(480)中剩余的最舊重建畫面用于顯示。對于常規(guī)解碼場景,緩沖重建畫面幫助平滑用于相應(yīng)畫面的解碼時間的波動(例如歸因于解碼復(fù)雜度的差異)。輸出緩沖延遲例如為解碼器設(shè)置的恒定畫面數(shù)目。圖4示出了在輸出緩沖器(480)中緩沖的用于常規(guī)解碼的三幀F(xiàn)2、F3和&。輸出緩沖器(480)因此引入目的在于提高回放流暢度以便回放一旦開始就無中斷的延遲。在低延時解碼場景中, 可以明顯減少輸出緩沖器(480)引入的延遲或者繞過輸出緩沖器(480)。圖4示出了無用于低延時解碼的輸出緩沖器,因而回放更早三幀開始。在封閉的端到端系統(tǒng)中,解碼器系統(tǒng)(400)和編碼器可以被配置成使用擴(kuò)展或者偏離壓縮格式的附加特征。具體而言,到解碼器系統(tǒng)(400)的輸入位流可以包括有助于低延時解碼的附加語法元素。例如位流包括對應(yīng)解碼器可以使用來減少解碼延時的幀計數(shù)語法元素和/或輔助定界符語法元素。作為封閉的端到端系統(tǒng)的部分,解碼器系統(tǒng)(400)以在編碼器將適合于低延時解碼地編碼視頻并且在位流中包括可用于低延時解碼的語法元素這樣的理解來進(jìn)行操作。在一些實施方式中,在封閉的端到端系統(tǒng)以外的解碼器可以忽略這樣的附加語法元素而仍然對編碼數(shù)據(jù)進(jìn)行解碼。解碼器系統(tǒng)(400)可以是能夠以多個編碼模式(比如用于實時通信的低延時解碼模式、轉(zhuǎn)碼模式和用于從文件或者流回放的媒體的普通解碼模式)中的任何編碼模式進(jìn)行操作的通用解碼工具。核心解碼器(430)可以實現(xiàn)為操作系統(tǒng)模塊、應(yīng)用庫的部分或者獨(dú)
立應(yīng)用。在圖4中,核心解碼器(430)顯露如下接口(432),其它軟件(例如實時通信工具、 媒體回放工具)可以通過該接口控制對用于解碼器系統(tǒng)(400)的解碼模式的選擇。例如,其它軟件可以設(shè)置或者不設(shè)置低延時模式標(biāo)志,該標(biāo)志又控制其它解碼參數(shù)/操作。如果設(shè)置低延時模式標(biāo)志,則核心解碼器(430)根據(jù)幀計數(shù)語法元素控制DPB輸出定時、檢查輔助定界符語法元素以標(biāo)識畫面邊界,并且禁用或者減少用于抖動緩沖器的延遲。如果未設(shè)置低延時模式標(biāo)志,則核心解碼器(430)根據(jù)傳統(tǒng)回放設(shè)置使用用于DPB輸出的缺省定時、使用分片層語法元素來標(biāo)識畫面邊界并且使用缺省抖動緩沖器延遲值。作為另一示例,通過接口(432),其它軟件可以單獨(dú)地設(shè)置用于解碼的飛行中的畫面數(shù)目。更一般而言,通過接口(432),其它軟件可以根據(jù)解碼模式或者獨(dú)立于解碼模式控制用于解碼器系統(tǒng)(400)的其它解碼參數(shù)或者設(shè)置。V.低延時解碼適配。利用這里描述的技術(shù)和工具,通過減少或者甚至消除在一個或者多個不同解碼階段的延遲來減少解碼延時,以便與為了媒體回放流暢和解碼資源利用而初始優(yōu)化的解碼相比,減少或者完全消除整個解碼中的延遲源。A.減少從DPB的輸出延遲。H. 264標(biāo)準(zhǔn)意味著從DPB輸出的定時應(yīng)當(dāng)依賴于DPB大小和畫面順序計數(shù)信息。 傳統(tǒng)上,H. 624解碼器在DPB已滿之后開始輸出畫面,這引入在回放開始之前的延遲、但是提供可靠的回放。
12
對于低延時視頻解碼和回放,解碼器可以代之以使用幀計數(shù)語法元素來控制從 DPB輸出的定時。使用幀計數(shù)語法元素來設(shè)置從DPB初始輸出的延遲幫助減少延時。具體而言,使用幀計數(shù)語法元素,從DPB輸出畫面可以在DPB已滿之前開始、但是仍然可以提供相符的解碼(即對所有畫面進(jìn)行解碼,以使得畫面是與使用另一常規(guī)方案來解碼的畫面逐位匹配)。這在當(dāng)幀計數(shù)語法元素指示的延遲(以幀為單位)比DPB的大小(以幀為單位)低得多時明顯減少延遲。一般而言,幀計數(shù)語法元素指示幀重新排序延遲。幀重新排序延遲對應(yīng)于根據(jù)編碼順序(或者解碼順序)可以先于給定幀、但是根據(jù)顯示順序(或者輸出順序)跟隨給定幀的幀的最大計數(shù)。根據(jù)幀計數(shù)語法元素的值設(shè)置在從DPB輸出之前的初始延遲。例如,如果幀計數(shù)語法元素為零(這意味著沒有畫面可以參考按照顯示順序更晚的畫面以便為了解碼目的),則初始DPB延遲為零幀。或者如果幀計數(shù)語法元素為二,則初始DPB延遲為兩幀。圖5示出了用于示例幀系列(500)的編碼順序和顯示順序。幀的顯示順序為它們的數(shù)字順序…并且一般對應(yīng)于它們的原順序。幀的編碼順序為‘F^F^FpFe、 F5、F4、F8、F7和F9。這意味著先對Ftl解碼、繼而為可以依賴于Ftl的F3。接著對F1和F2解碼。 即使F3按照顯示順序更晚,當(dāng)仍然在F1和F2之前對F3解碼,因為對F1和F2的解碼可以使用F3的重建版本。類似地,F(xiàn)5和F4按照編碼順序跟隨F6并且可以依賴于F6 (或者在理論上為按照編碼順序的任何其它先前幀)。在圖5的示例中,兩個幀F(xiàn)5和F6按照編碼順序先于F4、但是按照輸出順序跟隨F4,這在幀重新排序延遲為二時是有效的。對于圖5中的示例系列(500),用于從DPB輸出的初始延遲為兩幀。當(dāng)對F1解碼并且添加到DPB時從DPB輸出F。,當(dāng)對F2解碼并且添加到DPB時從DPB輸出F1,當(dāng)對F6解碼并且添加到DPB時從DPB輸出F2,以此類推。給定兩幀的初始延遲,幀F(xiàn)tl至F9可用于在適當(dāng)時間從DPB輸出。對照而言,如果初始輸出延遲減少至一幀,則當(dāng)在對F3進(jìn)行解碼并且添加到DPB 時會從DPB輸出&。會類似地正確輸出FpF2和F3,但是F4會未準(zhǔn)備好及時輸出。這是因為,兩幀F(xiàn)5和F6按照編碼順序先于F4、但是按照輸出順序跟隨F4。在使用H. 264解碼的實施方式中,幀計數(shù)語法元素為num_recorder_frames語法元素。用信號通知num_recorder_frames語法元素作為用于視頻序列的VUI參數(shù)。num_ reCOrder_frames語法元素指示按照解碼順序先于視頻序列中的任何幀(或者互補(bǔ)場對或者非配對場)、但是按照輸出順序跟隨該幀的幀(或者場對或者非配對場)的最大數(shù)目。作為選擇,對于另一格式或者標(biāo)準(zhǔn),幀計數(shù)語法元素為適合于另一格式或者標(biāo)準(zhǔn)的另一語法元
οnum_recorder_frames語法元素并非強(qiáng)制,并且H. 264編碼器在理論上可以向 num_recorder_frames語法元素賦以任意值。(如果語法元素不存在,則解碼器根據(jù)在H. 264 標(biāo)準(zhǔn)中指定的規(guī)則賦以缺省值。)這樣,一般而言,解碼器不能依賴于存在并且用有意義的值設(shè)置的num_reC0rder_frames語法元素。然而在典型實時通信場景中,編碼器和解碼器為封閉系統(tǒng)的部分。編碼器因此可以為num_reC0rder_frames語法元素分配的符合在編碼期間關(guān)于畫面之間相關(guān)性做出的決定有意義的值,其中理解解碼器將使用該值來減少從 DPB輸出的畫面延時。以這一方式,編碼器和解碼器將用于DPB輸出定時的傳統(tǒng)機(jī)制替換為用于控制從DPB輸出的定時的更低延時機(jī)制。
在其它解碼模式中,解碼器仍然可以使用DPB大小和畫面順序計數(shù)信息來根據(jù)常規(guī)DPB管理規(guī)則控制從DPB輸出的定時。在一些情況下,DPB在輸出任何幀用于顯示之前存儲7-16幀。B.輔助定界符語法元素。根據(jù)H. 264標(biāo)準(zhǔn),解碼器使用分片層參數(shù)來檢測在用于位流中的不同畫面的編碼數(shù)據(jù)之間的邊界。為了檢測當(dāng)前畫面的結(jié)尾,解碼器在位流中向前掃描以評估用于下一分片的編碼數(shù)據(jù)。如果下一分片為當(dāng)前畫面的部分,則解碼器繼續(xù)在位流中向前掃描以發(fā)現(xiàn)畫面邊界。當(dāng)解碼器發(fā)現(xiàn)并非當(dāng)前畫面的部分的下一分片時,解碼器已經(jīng)檢測到當(dāng)前畫面的結(jié)尾和下個畫面的開始。以這一方式檢測畫面邊界涉及到緩沖和掃描一個附加單位的用于下一畫面的分片的編碼數(shù)據(jù),以便檢測當(dāng)前畫面的結(jié)尾,這引入一個附加畫面的解碼延遲。對于低延時視頻解碼和回放,解碼器可以代之以使用輔助定界符語法元素來在位流中檢測用于不同畫面的編碼數(shù)據(jù)之間的邊界。編碼器在在位流中適當(dāng)位置插入輔助定界符語法元素,并且解碼器向前掃描以基于輔助定界符語法元素來標(biāo)識畫面邊界。例如,在使用H. 264解碼的實施方式中,輔助定界符語法元素是網(wǎng)絡(luò)抽象層(NAL)單元類型為9的四字節(jié)NAL單元,該單元類型將NAL單元標(biāo)記為輔助單元定界符(AUD)。作為選擇,對于其他格式或者標(biāo)準(zhǔn),輔助定界符語法元素為適合于其他格式或者標(biāo)準(zhǔn)的另一語法元素。使用輔助定界符語法元素來檢測畫面邊界可以通過避免緩沖用于接下來的分片的編碼數(shù)據(jù)來減少延遲、但是在位流中引入了少量附加數(shù)據(jù)。圖6示出了包括輔助定界符語法元素的示例H. 264位流(600)。位流(600)包括序列參數(shù)集(SPS)元素和畫面參數(shù)集(PPS)元素以及用于畫面的編碼數(shù)據(jù)。對于給定畫面, 編碼數(shù)據(jù)事實上為用于畫面的相應(yīng)分片O…η的編碼數(shù)據(jù)。位流(600)包括對用于相應(yīng)畫面的編碼數(shù)據(jù)之間的邊界進(jìn)行標(biāo)記的AUD語法元素。H. 264標(biāo)準(zhǔn)未指定類型為9的NAL單元應(yīng)當(dāng)以這一方式標(biāo)記畫面邊界。這樣,一般而言,解碼器不能依賴于存在這樣的NAL單元來標(biāo)記畫面邊界。然而在典型的實時通信場景中,編碼器和解碼器為封閉的端到端系統(tǒng)的部分。編碼器因此可以在適當(dāng)位置插入輔助定界符語法元素,而解碼器可以可靠地使用輔助定界符語法元素來檢測畫面邊界。以這個方式,編碼器和解碼器將用于畫面邊界檢測的常規(guī)機(jī)制替換為更低延時機(jī)制。當(dāng)解碼器也能夠以不同于低延時解碼模式的解碼模式進(jìn)行操作時,對于常規(guī)視頻解碼和回放,解碼器可以使用傳統(tǒng)的畫面邊界檢測機(jī)制、通過掃描編碼數(shù)據(jù)中的分片層語法元素來標(biāo)識當(dāng)前畫面的結(jié)尾和下個畫面的開始。C.限制飛行中的畫面數(shù)目。解碼器可以使用多線程以在解碼期間同時執(zhí)行不同任務(wù)、甚至將任務(wù)分布到不同處理單元以便利用更多可用計算資源。關(guān)于H. 264解碼的多線程實施方式的附加細(xì)節(jié),例如參見公開號為2009/0003447的美國專利申請。一般而言,術(shù)語“飛行中的畫面數(shù)目”指示可以在解碼期間針對其同時執(zhí)行解碼任務(wù)的不同畫面的最大數(shù)目。例如,如果解碼允許飛行中的四個畫面,則可以同時執(zhí)行針對多達(dá)四個畫面的解碼任務(wù)。具有飛行中的一個畫面可能造成計算資源利用不充分,因為針對畫面的解碼任務(wù)經(jīng)常拖延從而致使針對畫面的其它解碼任務(wù)暫停完成。具有飛行中的更多畫面趨向提供更多利用可用計算資源的機(jī)會,因為可能有更多解碼任務(wù)準(zhǔn)備好處理。然而具有飛行中的多個畫面引入解碼延遲。在示例多線程實施方式中,對于常規(guī)視頻解碼和回放,將飛行中的畫面數(shù)目設(shè)置為高效地利用可用計算資源,而代價為在解碼期間由于飛行中的多個畫面所致的延遲。對于低延時解碼,將飛行中的畫面數(shù)目設(shè)置成更低數(shù)目或者甚至設(shè)置成一。當(dāng)飛行中的畫面數(shù)目設(shè)置成1時,如果針對畫面的不同解碼任務(wù)在它們之間無相關(guān)性,則解碼器可能仍然能夠在多個處理核心之間分布這樣的解碼任務(wù)。然而在多數(shù)情況下,減少飛行中的畫面數(shù)目在減少延遲的同時不利于資源利用。D.抖動緩沖器利用。如圖4中所示,解碼器通常使用一個或者多個抖動緩沖器來提高多線程性能和/ 或提高回放流暢度。一般而言,抖動緩沖器為了平滑在到緩沖器的輸入中的波動的目的而添加延遲。對于常規(guī)視頻解碼和回放,解碼器可以使用被設(shè)置成缺省值的輸入緩沖器。輸入緩沖器由編碼數(shù)據(jù)填充直至達(dá)到閾值充滿度為止,在這一點處,在逐個畫面的基礎(chǔ)上(按照編碼順序)向解碼器傳送編碼數(shù)據(jù)用于解碼。例如,閾值充滿度值對應(yīng)于用于序列的按照平均位率的八幀的編碼數(shù)據(jù),這向整個解碼添加約八幀的預(yù)計延遲。在解碼之前的輸入緩沖因此添加延遲、但是趨向于提高對解碼資源的利用并且使回放更流暢。對于低延時解碼,解碼器可以減少輸入緩沖器引入的延遲。例如減少用于輸入緩沖器的閾值充滿度值。或者一旦用于給定畫面的編碼數(shù)據(jù)在輸入緩沖器中可用,就向解碼器傳送用于畫面的編碼數(shù)據(jù)用于解碼。在這個情況下,解碼器未等待直至達(dá)到固定閾值為止以保證流暢回放體驗。關(guān)于在解碼之后對輸出緩沖器的使用,對于常規(guī)視頻解碼和回放,解碼器可以使用被設(shè)置成缺省大小的輸出緩沖器。輸出緩沖器存儲η個重建畫面。例如輸出緩沖器缺省存儲三個重建畫面,這增添三幀的恒定延遲。同樣,在解碼之后的輸出緩沖添加延遲、但是趨于提高對解碼資源的利用并且使回放更流暢。對于低延時解碼,解碼器可以減少輸出緩沖器引入的延遲。例如可以減少存儲于輸出緩沖器中的重建畫面的數(shù)目或者可以繞過/去除輸出緩沖器。Ε.結(jié)果。前述機(jī)制可以組合用來減少解碼延遲。例如,編碼器將幀計數(shù)語法元素設(shè)置成零(在該情況下,對于當(dāng)前畫面,運(yùn)動補(bǔ)償不使用按照顯示順序的任何更晚畫面作為參考畫面),并且插入用于畫面邊界檢測的輔助定界符語法元素。對應(yīng)解碼器使用幀計數(shù)語法元素來控制DPB輸出定時、使用輔助定界符語法元素來檢測畫面邊界、將飛行中的畫面數(shù)目設(shè)置成一、一旦可用就從輸入緩沖器去除用于畫面的編碼數(shù)據(jù),以及不使用輸出緩沖器用于重建畫面。在四核心機(jī)器上的示例實施方式中,利用這些改變,將解碼延遲從 (W-I)+X+Y+(Z-I)幀的延遲減少至零幀的延遲。X指示輸入緩沖中的延遲(以幀為單位),其中X可以是0至8。Y指示輸出緩沖中的延遲(以幀為單位),其中Y可以是0至8。Z指示由于DPB中的緩沖所致的延遲(以幀為單位),其中Z可以是1至16。W-I是由于飛行中的畫面數(shù)目所致的延遲,其中W為1至16。簡言之,X+Y+ (Z-I) + (W-I)可以是高達(dá)8+8+15+15=46 幀的延遲。對照而言,利用如這里描述的所有用于針對低延時模式減少延遲的設(shè)置,延遲可
15以是0幀(對于飛行中的一幀)。然而,利用這樣的最小延遲設(shè)置,多線程解碼示出20-30% 的性能損失。當(dāng)然可以引入延遲以提高多線程解碼中的資源利用。VI.具有針對低延時解碼的適配的編碼。圖7示出了用于具有針對低延時解碼的適配的編碼的示例技術(shù)(700)。例如,參照圖加和2b描述的實時通信工具或者編碼工具執(zhí)行技術(shù)(700)。作為選擇,另一工具執(zhí)行技術(shù)(700)。開始時,工具接收(710)用于視頻序列的一個或者多個畫面。例如工具從視頻源 (比如相機(jī)或者其它捕獲設(shè)備、存儲介質(zhì)或者通信連接)按照顯示順序接收畫面。工具對一個或者多個畫面進(jìn)行編碼(720)以產(chǎn)生在位流中的編碼數(shù)據(jù),其中編碼 (720)有助于低延時解碼。例如,作為編碼(720)的部分,工具設(shè)置符合為序列設(shè)置的幀重新排序延遲的畫面間相關(guān)性?;蛘?,作為編碼(720)的部分,工具在位流中插入輔助定界符語法元素以指示畫面邊界。作為選擇,編碼以其它和/或附加方式有助于低延時解碼。工具輸出(730)位流中的編碼數(shù)據(jù)。位流可以包括指示幀重新排序延遲的幀計數(shù)語法元素、在畫面邊界處的輔助定界符語法元素和/或為了有助于低延時解碼而添加的其它語法元素。工具檢查(740)是否完成編碼,而如果沒有則以序列中接下來的畫面(多個)繼續(xù)。 為了描述起見,圖7示出了在逐個畫面的基礎(chǔ)上或者針對畫面組重復(fù)的技術(shù)(700)。作為選擇,在某個其它基礎(chǔ)上重復(fù)該技術(shù)。在任何情況下,可以針對整個序列發(fā)信號通知影響整個序列的編碼決定(例如幀計數(shù)語法元素)。VII.針對低延時解碼的適配。圖8示出了針對低延時解碼的示例技術(shù)(800)。例如,參照圖加和2b描述的實時通信工具或者回放工具執(zhí)行該技術(shù)(800 )。作為選擇,另一工具執(zhí)行該技術(shù)(800 )。開始時,工具接收(810)位流中的編碼數(shù)據(jù)。位流可以包括指示幀重新排序延遲的幀計數(shù)語法元素、在畫面邊界處的輔助定界符語法元素和/或為了有助于低延時解碼而添加的其它語法元素。工具使用如在第V節(jié)中描述的一個或者多個低延時解碼機(jī)制對一個或者多個畫面進(jìn)行解碼(820)。例如工具使用位流中的幀計數(shù)語法元素來確定用于DPB的初始輸出延遲?;蛘?,工具使用輔助定界符語法元素來檢測位流中的畫面邊界。或者,工具將飛行中的畫面數(shù)目設(shè)置成一,由此限制可以同時對多少畫面進(jìn)行解碼?;蛘撸ぞ咴O(shè)置用于抖動緩沖器的抖動緩沖器利用率以使總延時減少優(yōu)先于回放流暢度。作為選擇,工具使用其它和/ 或附加低延時解碼機(jī)制。工具輸出(830) 一個或者多個解碼畫面用于顯示。當(dāng)工具已經(jīng)根據(jù)幀計數(shù)語法元素確定初始輸出延遲時,工具輸出(830)受到該初始輸出延遲的畫面。工具檢查(840)是否完成解碼,而如果未完成則利用針對序列中的接下來的畫面 (多個)的解碼來繼續(xù)。為了描述起見,圖8示出了在逐個畫面的基礎(chǔ)上或者針對畫面組重復(fù)該技術(shù)(800)。作為選擇,在某一其它基礎(chǔ)上重復(fù)該技術(shù)。在任何情況下,可以針對整個序列做出對整個序列的解碼有影響的解碼決定(例如根據(jù)幀計數(shù)語法元素確定延遲、設(shè)置抖動緩沖器利用率、設(shè)置飛行中的畫面數(shù)目)。VIII.在多個編碼模式之間選擇。
圖9示出了用于在有助于低延時解碼的模式中有選擇地編碼的示例技術(shù)(900)。 例如,參照圖加和2b描述的實時通信工具或者編碼工具執(zhí)行技術(shù)(900)。作為選擇,另一工具執(zhí)行技術(shù)(900)。開始時,工具選擇(910)有助于低延時解碼的編碼模式,該編碼模式的特征在于與根據(jù)另一編碼模式產(chǎn)生的結(jié)果相比更低的延時解碼。工具至少部分基于所選編碼模式調(diào)節(jié) (920)編碼。例如,工具針對解碼器的輸出定時確定和/或畫面邊界檢測來調(diào)節(jié)編碼。作為選擇,工具基于所選編碼模式以其它和/或附加方式調(diào)節(jié)編碼。工具接收(930) —個或者多個畫面、根據(jù)所選編碼模式執(zhí)行(940)編碼并且輸出 (950)位流中的編碼數(shù)據(jù)。工具檢查(960)編碼是否完成,而如果未完成,則利用對序列中的接下來的畫面(多個)的編碼來繼續(xù)。對于有助于低延時解碼的編碼,作為編碼的部分(940),工具有助于使用如在第V 節(jié)中描述的一個或者多個低延時解碼機(jī)制。例如對于輸出定時確定,工具在位流中插入指示幀重新排序延遲的幀計數(shù)語法元素,并且工具設(shè)置符合允許的幀重新排序延遲的畫面間相關(guān)性。或者,對于畫面邊界檢測,工具在位流中插入用于標(biāo)記畫面邊界的輔助定界符語法元素。作為選擇,作為編碼(940)的部分,工具有助于使用其它和/或附加低延時解碼機(jī)制。 輸出位流可以包括指示幀重新排序延遲的幀計數(shù)語法元素、在畫面邊界的輔助定界符語法元素和/或為了有助于低延時解碼而添加的其它語法元素。另一方面,對于其他編碼模式,作為編碼(940)的部分,工具使用傳統(tǒng)編碼機(jī)制。IX.在多個解碼模式之間選擇。圖10示出了用于有選擇地使用低延時解碼模式的示例技術(shù)(1000)。例如,參照圖 2a和2b描述的實時通信工具或者回放工具執(zhí)行技術(shù)(1000)。作為選擇,另一工具執(zhí)行技術(shù)(1000)。開始時,工具選擇(1010)特征在于與另一解碼模式相比的更低延時解碼的低延時解碼模式。工具至少部分基于所選解碼模式調(diào)節(jié)(1020)解碼。例如工具調(diào)節(jié)輸出定時確定、畫面邊界檢測、飛行中的畫面數(shù)目和抖動緩沖器利用率的任何組合。作為選擇,工具基于所選解碼模式以其它和/或附加方式調(diào)節(jié)解碼。工具接收(1030)位流中的編碼數(shù)據(jù)并且根據(jù)所選解碼模式執(zhí)行(1040)解碼。解碼產(chǎn)生工具輸出(1050)的一個或者多個重建畫面。工具檢查(1060)解碼是否完成,而如果未完成,則利用對序列中的接下來的畫面(多個)的解碼來繼續(xù)。對于低延時解碼,位流可以包括指示幀重新排序延遲的幀計數(shù)語法元素、在畫面邊界的輔助定界符語法元素和/或為了有助于低延時解碼而添加的其它語法元素。作為解碼(1040)的部分,工具使用如在第V節(jié)中描述的一個或者多個低延時解碼機(jī)制。例如,對于輸出定時確定,工具使用位流中的幀計數(shù)語法元素來確定幀重新排序延遲,工具使用該幀重新排序延遲來設(shè)置用于DPB的初始輸出延遲?;蛘撸瑢τ诋嬅孢吔鐧z測,工具使用輔助定界符語法元素來檢測位流中的畫面邊界。或者工具將飛行中的畫面數(shù)目設(shè)置成一,從而允許飛行中的單個畫面用于解碼?;蛘?,對于抖動緩沖器利用率,工具設(shè)置用于輸入緩沖器和 /或輸出緩沖器的利用率以使總延時減少優(yōu)先于回放流暢度。作為選擇,作為在低延時解碼模式中的解碼(1040)的部分,工具使用其它和/或附加的低延時解碼機(jī)制。當(dāng)工具已經(jīng)根據(jù)幀計數(shù)語法元素確定初始輸出延遲時,工具輸出(1050)受到初始輸出延遲的畫面(多
17個)。另一方面,對于其他解碼模式,作為解碼(1040)的部分,工具使用傳統(tǒng)解碼機(jī)制。 例如,對于輸出定時確定,工具使用DPB大小和畫面順序計數(shù)信息來管理DPB并且控制從 DPB輸出的定時。或者,對于畫面邊界檢測,工具使用分片層語法元素來檢測畫面邊界?;蛘撸ぞ邔w行中的畫面數(shù)目設(shè)置成兩個、三個或者更多畫面。或者,對于抖動緩沖器利用率,工具設(shè)置用于輸入緩沖器和/或輸出緩沖器的利用率以使回放流暢度優(yōu)先于總延時減少。鑒于公開的本發(fā)明原理可以應(yīng)用于的多個可能實施例,應(yīng)當(dāng)認(rèn)識到,所示實施例僅為本發(fā)明的優(yōu)選實施例而不應(yīng)視為限制本發(fā)明的范圍。實際上,本發(fā)明的范圍由所附權(quán)利要求限定。因此要求保護(hù)全部落入這些權(quán)利要求的范圍和精神實質(zhì)內(nèi)的發(fā)明。
權(quán)利要求
1.一種在實現(xiàn)視頻解碼器的計算設(shè)備中的方法,包括選擇低延時解碼模式,所述低延時解碼模式的特征在于與其他解碼模式相比的更低延時解碼;至少部分基于所選擇的解碼模式調(diào)節(jié)輸出定時確定、畫面邊界檢測、飛行中的畫面數(shù)目和抖動緩沖器利用率中的一個或者多個;接收用于視頻序列的位流中的編碼數(shù)據(jù);利用實現(xiàn)所述視頻解碼器的計算設(shè)備根據(jù)所選擇的解碼模式來對所述編碼的數(shù)據(jù)中的至少一些進(jìn)行解碼以重建視頻序列的畫面;以及輸出所述畫面用于顯示。
2.根據(jù)權(quán)利要求1所述的方法,其中調(diào)節(jié)所述輸出定時確定,其中所述位流中的幀計數(shù)語法元素指示幀重新排序延遲,并且其中用于解碼畫面緩沖器的初始輸出延遲至少部分依賴于幀重新排序延遲。
3.根據(jù)權(quán)利要求1所述的方法,其中調(diào)節(jié)所述畫面邊界檢測,所述方法還包括在解碼期間使用所述位流中的輔助定界符語法元素來檢測畫面邊界。
4.根據(jù)權(quán)利要求1所述的方法,其中調(diào)節(jié)所述飛行中的畫面數(shù)目,使得允許飛行中的單個畫面用于解碼,而多線程解碼有某一性能損失。
5.根據(jù)權(quán)利要求1所述的方法,其中調(diào)節(jié)對所述抖動緩沖器的利用,使得將多個抖動緩沖器設(shè)置為以使總延時減少優(yōu)于回放流暢度,所述多個抖動緩沖器包括輸入緩沖器和輸出緩沖器,將對所述輸入緩沖器的利用設(shè)置為使得一旦用于給定畫面的編碼數(shù)據(jù)在輸入緩沖器中可用就針對給定畫面開始解碼,而將對輸出緩沖器的利用設(shè)置為使得繞過輸出緩沖ο
6.根據(jù)權(quán)利要求1所述的方法,其中核心解碼模塊執(zhí)行所述解碼,并且顯露接口,所述接口允許其它軟件控制對解碼模式的選擇。
7.一種計算機(jī)可讀介質(zhì),具有編碼于其中的計算機(jī)可執(zhí)行指令,所述計算機(jī)可執(zhí)行指令用于使由此編程的計算設(shè)備執(zhí)行方法,所述方法包括接收用于視頻序列的多個畫面;對所述多個畫面進(jìn)行編碼以產(chǎn)生位流中的編碼數(shù)據(jù),其中所述編碼通過以下操作來有助于低延時解碼設(shè)置符合幀重新排序延遲的畫面間相關(guān)性;以及在所述位流中插入多個輔助定界符語法元素,其中所述多個輔助定界符語法元素中的每個元素標(biāo)識畫面邊界;以及輸出所述位流中的編碼數(shù)據(jù),其中所述位流包括指示幀重新排序延遲的幀計數(shù)語法元素,以及其中所述位流還包括多個輔助定界符語法元素。
8.根據(jù)權(quán)利要求7所述的計算機(jī)可讀介質(zhì),其中所述幀重新排序延遲是按照編碼順序可以先于給定幀、但是按照顯示順序跟隨所述給定幀的幀的最大計數(shù),并且其中所述多個輔助定界符語法元素中的每個為具有網(wǎng)絡(luò)抽象層(NAL)單元類型的NAL單元。
9.一種實現(xiàn)視頻解碼器的計算設(shè)備,所述計算設(shè)備包括一個或者多個處理單元和存儲器,該計算設(shè)備適于執(zhí)行方法,所述方法包括接收用于視頻序列的位流中的編碼數(shù)據(jù),其中所述位流包括視頻可用性信息中的幀計數(shù)語法元素,所述幀計數(shù)語法元素指示幀重新排序延遲,并且其中所述位流還包括用于指示畫面邊界的輔助定界符語法元素的網(wǎng)絡(luò)抽象層(NAL)單元;使用所述幀計數(shù)語法元素來確定用于解碼畫面緩沖器的初始輸出延遲; 對編碼數(shù)據(jù)中的至少一些進(jìn)行解碼以重建所述視頻序列的畫面,包括使用所述輔助定界符語法元素之一來檢測畫面邊界;以及輸出所述畫面用于顯示,其中根據(jù)所述幀計數(shù)語法元素設(shè)置用于所述解碼畫面緩沖器的初始輸出延遲。
10.根據(jù)權(quán)利要求9所述的計算設(shè)備,其中所述方法還包括 將飛行中的畫面數(shù)目設(shè)置成一、由此限制可以同時對多少畫面進(jìn)行解碼;以及設(shè)置用于抖動緩沖器的抖動緩沖器利用,以使總延時減少優(yōu)先于回放流暢度。
全文摘要
用于針對強(qiáng)調(diào)低延遲的實時通信應(yīng)用減少視頻解碼中的延時的技術(shù)和工具。例如,工具(比如視頻解碼器)選擇低延時解碼模式。基于所選解碼模式,工具調(diào)節(jié)輸出定時確定、畫面邊界檢測、飛行中的畫面數(shù)目和/或抖動緩沖器利用。對于低延時解碼,工具可以使用幀計數(shù)語法元素來設(shè)置用于解碼畫面緩沖器的初始輸出延遲,并且工具可以使用輔助定界符語法元素來檢測畫面邊界。為了進(jìn)一步減少低延時解碼時的延遲,工具可以減少用于多線程解碼的飛行中的畫面數(shù)目并且減少或者去除抖動緩沖器。工具接收編碼數(shù)據(jù)、根據(jù)所選解碼模式執(zhí)行解碼以重建畫面、并且輸出畫面用于顯示。
文檔編號H04N7/50GK102447906SQ20111041422
公開日2012年5月9日 申請日期2011年12月13日 優(yōu)先權(quán)日2010年12月13日
發(fā)明者紀(jì) G., 薩瓦尼 S., 吳勇軍 申請人:微軟公司