背景技術(shù):
在現(xiàn)代通信系統(tǒng)中,可以通過諸如有線和/或無線網(wǎng)絡(luò)之類的介質(zhì)(常常是諸如互聯(lián)網(wǎng)之類的基于分組的網(wǎng)絡(luò))將視頻信號從一個(gè)設(shè)備發(fā)送至另一個(gè)設(shè)備。通常而言,視頻內(nèi)容,即表示在視頻切片中的個(gè)體采樣的值(例如,色度、亮度)的數(shù)據(jù),在發(fā)送設(shè)備處由編碼器編碼以便壓縮視頻內(nèi)容以用于通過網(wǎng)絡(luò)傳輸。應(yīng)當(dāng)注意的是,文本中的術(shù)語“像素”指的是視頻內(nèi)容本身的個(gè)體采樣,并且由此是可以與視頻內(nèi)容要在其上顯示的顯示器的顯示元件對應(yīng)或不對應(yīng)的視頻內(nèi)容的固有屬性。“切片”指的是視頻幀或視頻幀的區(qū)域,即一幀是由一個(gè)或多個(gè)切片組成的。
針對給定切片的編碼可以包括幀內(nèi)編碼,由此16×16像素(宏)塊相對于相同切片中的其他塊而進(jìn)行編碼。在該情況下,目標(biāo)塊是根據(jù)該塊與相鄰塊之間的差(殘差)來編碼的??商娲兀槍σ恍蚯衅木幋a可以包括幀間編碼,由此,目標(biāo)切片中的塊通?;谶\(yùn)動(dòng)預(yù)測來相對于先前的幀中的對應(yīng)的部分而進(jìn)行編碼。在該情況下,目標(biāo)塊是根據(jù)運(yùn)動(dòng)向量來編碼的,所述運(yùn)動(dòng)向量標(biāo)識(shí)所述塊與要從其預(yù)測所述塊的對應(yīng)的部分之間的偏置、以及所述塊與要從其預(yù)測所述塊的對應(yīng)的部分之間的差(殘差)。接著,殘差數(shù)據(jù)可以受到轉(zhuǎn)換而變成頻域系數(shù),所述頻域系數(shù)接著受到量化由此將所述頻域系數(shù)的范圍壓縮成單個(gè)值。最后,諸如熵編碼之類的無損編碼可以被應(yīng)用于經(jīng)量化的系數(shù)。對應(yīng)的解碼器在接收設(shè)備處基于合適類型的預(yù)測來解碼所接收到視頻信號的切片,以便將它們解壓以在顯示器上輸出。在壓縮和隨后的解壓之前,將視頻內(nèi)容的每個(gè)視頻幀在空間域中表示為以像素值為形式的圖像數(shù)據(jù)的二維陣列(2維數(shù)據(jù)集)。在本文中,術(shù)語陣列的“頂行”和“底行”指的是表示圖像的最上面和最底下部分的像素,如其將分別被顯示的。以像素為單位陣列具有以像素為單位的列高度h(像素高度)和以像素為單位行寬度w(像素寬度);“w×h”被定義為視頻幀的分辨率,而比率“w:h”被定義為視頻幀的縱橫比。為了完整性,應(yīng)當(dāng)注意的是,在本文中所使用的分辨率和縱橫比也是視頻內(nèi)容的固有屬性。記法“hp”表示像素高度,例如240p指的是240像素的像素高度。
一旦視頻內(nèi)容已經(jīng)被編碼,則編碼的視頻內(nèi)容被結(jié)構(gòu)化以經(jīng)由網(wǎng)絡(luò)傳輸。可以將經(jīng)編碼的視頻內(nèi)容分成分組,每個(gè)分組包含經(jīng)編碼的切片。例如,h.264和hevc(高效率視頻編碼)標(biāo)準(zhǔn)定義視頻編碼層(vcl)和網(wǎng)絡(luò)抽象層(nal),其中在vcl處發(fā)生(例如,幀間/幀內(nèi))編碼以生成經(jīng)編碼的視頻內(nèi)容(vcl數(shù)據(jù)),并且在nal處將vcl數(shù)據(jù)封裝在分組(被稱為nal單元(nalu))中以供傳輸。vcl數(shù)據(jù)表示視頻切片的像素值。通常包括適用于相對大數(shù)量的幀的編碼參數(shù)的非vcl數(shù)據(jù)也在nal處被封裝在nalu中。每個(gè)nalu具有包含字節(jié)(8比特)格式的vcl或非vcl數(shù)據(jù)(不是兩者)的有效載荷,并且兩字節(jié)標(biāo)頭標(biāo)識(shí)nalu的類型及其他。也在smptevc-1標(biāo)準(zhǔn)中采用類似的格式。
nal表示旨在與各種網(wǎng)絡(luò)傳輸層格式以及與不同類型的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)兼容。一些面向分組的傳輸層協(xié)議提供了一種機(jī)制,通過該機(jī)制vcl/非vcl可以在由傳輸層協(xié)議自身形成幀的分組中運(yùn)送。其他的面向流動(dòng)傳輸層協(xié)議不提供這樣的機(jī)制。著眼于后者,定義了h.264字節(jié)流格式,由此包括經(jīng)編碼的vcl數(shù)據(jù)、非vcl數(shù)據(jù)、以及nalu標(biāo)頭數(shù)據(jù)的原始nal數(shù)據(jù)可以被表示并且在網(wǎng)絡(luò)的傳輸層處被接收以供解碼、或者從本地計(jì)算機(jī)存儲(chǔ)器中接收以作為字節(jié)的流,其中,分組是由包括在經(jīng)編碼的數(shù)據(jù)本身中的特殊標(biāo)記字節(jié)序列形成的。應(yīng)當(dāng)注意的是,“分組流”指的是分組(例如,nalu)的序列,其被接收并且因此變得隨著事件可用,以使得對流的先前部分的處理可以在接收到了流的之后的部分之前開始。術(shù)語“分組流”不限于任何特定的分組成幀機(jī)制(并且為了完整起見,應(yīng)當(dāng)注意的是,前述兩種類型的成幀機(jī)制都被該術(shù)語覆蓋),也不需要以正確的順序(即,其旨在被輸出的順序)來接收分組。
技術(shù)實(shí)現(xiàn)要素:
提供了該發(fā)明內(nèi)容以用簡化的形式引入了在下文的具體實(shí)施方式中進(jìn)一步描述的概念的選擇。該發(fā)明內(nèi)容不旨在標(biāo)識(shí)所要求保護(hù)的主題的關(guān)鍵特征或本質(zhì)特征,也不旨在用于幫助確定所要求保護(hù)的主題的范圍。
經(jīng)由視頻中繼服務(wù)器將視頻內(nèi)容從發(fā)送設(shè)備中繼至接收設(shè)備。所述內(nèi)容包括多個(gè)幀。在編碼之前,多個(gè)幀中的每一幀是由要在接收設(shè)備處顯示的期望的圖像數(shù)據(jù)的相應(yīng)的陣列形成的。在編碼之前,水平地跨多個(gè)幀中的每一幀的頂部和底部延伸的填充圖像數(shù)據(jù)被添加至多個(gè)幀中的每一幀。例如,出于傳統(tǒng)原因,發(fā)送設(shè)備可以包括該填充數(shù)據(jù)。生成控制數(shù)據(jù),其包括剪裁數(shù)據(jù),所述剪裁數(shù)據(jù)指示在顯示多個(gè)幀之前不應(yīng)該剪裁掉填充圖像數(shù)據(jù)中的數(shù)據(jù)或者剪裁掉僅僅一些數(shù)據(jù)。例如,填充圖像數(shù)據(jù)可以例如以黑色(零值)像素為形式。如在本文中所使用的,術(shù)語“黑條”指的是已經(jīng)由編碼器添加但是編碼器還沒有指示其應(yīng)該被剪裁掉的填充數(shù)據(jù)。將經(jīng)編碼的視頻內(nèi)容和控制數(shù)據(jù)發(fā)送至服務(wù)器。在服務(wù)器處,填充圖像數(shù)據(jù)是自動(dòng)檢測的;作為響應(yīng),剪裁數(shù)據(jù)被修改以指示所有的填充數(shù)據(jù)都應(yīng)該在顯示所述幀之前被剪裁掉。即,如果存在任何這樣的另外的填充,為了指示黑條應(yīng)該被剪裁,則編碼器已經(jīng)指示的另外的填充數(shù)據(jù)也應(yīng)該被剪裁掉。
本主題的第一方面針對一種用于將視頻內(nèi)容從通信系統(tǒng)的發(fā)送設(shè)備中繼至通信系統(tǒng)的接收設(shè)備的方法。以下步驟是在發(fā)送設(shè)備處執(zhí)行的。接收要被發(fā)送至接收設(shè)備的視頻內(nèi)容。所述視頻內(nèi)容包括多個(gè)幀,多個(gè)幀中的每一幀是由要在接收設(shè)備處顯示的期望的圖像數(shù)據(jù)的相應(yīng)的陣列形成的。當(dāng)多于預(yù)先確定的數(shù)量的額外的行在頂部并且多于預(yù)先確定的數(shù)量的額外的行在相應(yīng)的陣列的底部時(shí),視頻內(nèi)容被預(yù)先處理以將填充圖像數(shù)據(jù)添加至多個(gè)幀中的每一幀。對經(jīng)預(yù)先處理的視頻內(nèi)容進(jìn)行編碼。生成用于對多個(gè)視頻幀進(jìn)行解碼和顯示的控制數(shù)據(jù)。所述控制數(shù)據(jù)包括剪裁數(shù)據(jù),所述剪裁數(shù)據(jù)指示包含性的零到所述預(yù)先確定的數(shù)量之間的最頂部的行以及包含性的零到所述預(yù)先確定的數(shù)量之間的最底部的行應(yīng)當(dāng)在顯示所述多個(gè)幀之前從所述多個(gè)幀中的每一幀中被剪裁掉,由此指示應(yīng)當(dāng)在輸出所述視頻內(nèi)容時(shí)顯示所述額外的行中的至少一些行。經(jīng)編碼的視頻內(nèi)容和控制數(shù)據(jù)作為分組流而被發(fā)送至系統(tǒng)的視頻中繼服務(wù)器。在所述視頻中繼服務(wù)器處執(zhí)行以下步驟。接收所述分組流。在視頻中繼服務(wù)器的處理器上執(zhí)行流處理代碼以引起以下操作。處理所接收的分組流中的至少一部分來自動(dòng)地檢測填充圖像數(shù)據(jù)。響應(yīng)于所述檢測,通過以下方式來修改所述分組流:將剪裁數(shù)據(jù)修改為指示應(yīng)該在顯示多個(gè)視頻幀之前從多個(gè)視頻幀中的每一視頻幀中剪裁掉所有額外的行。將經(jīng)修改的流發(fā)送至接收設(shè)備。
本主題的第二方面針對一種視頻中繼服務(wù)器,其包括:被配置為接收前述數(shù)據(jù)流的網(wǎng)絡(luò)接口、處理器、以及保存用于在中繼服務(wù)器的處理器上執(zhí)行的前述流處理代碼的存儲(chǔ)器。本主題的第三方面針對一種計(jì)算機(jī)程序產(chǎn)品,其包括存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上的前述流處理代碼。本主題的第四方面針對一種通信系統(tǒng),其包括前述發(fā)送設(shè)備和中繼服務(wù)器。應(yīng)當(dāng)注意的是,本主題的這些各種方面中的任何一個(gè)方面的流處理代碼可以根據(jù)在本文中所公開的實(shí)施例中的任何一個(gè)實(shí)施例而被配置。
附圖說明
為了幫助理解本主題并且為了示出可以如何實(shí)施本主題,現(xiàn)在對以下附圖進(jìn)行參考,其中:
圖1示出了通信系統(tǒng)的示意性框圖;
圖2示意性示出了網(wǎng)絡(luò)抽象層和視頻編碼層處的視頻數(shù)據(jù)的表示;
圖3示出了視頻解碼器的功能框圖;
圖4示意性示出了一種用于經(jīng)由視頻互操作性服務(wù)器(vis)在網(wǎng)真會(huì)議系統(tǒng)(vtc)與用戶設(shè)備之間進(jìn)行通信的機(jī)制,并且包括vtc的功能框圖和vis的框圖。
圖5是針對通過執(zhí)行流處理代碼來實(shí)現(xiàn)的流處理算法的流程圖;
圖6a和6b示出了在現(xiàn)有類型的通信系統(tǒng)中客戶端用戶界面可以如何對視頻流中的變化進(jìn)行響應(yīng)的示例;
圖7a和7b示出了在現(xiàn)有類型的通信系統(tǒng)中客戶端用戶界面可以如何對視頻流中的變化進(jìn)行響應(yīng)的另一示例。
具體實(shí)施方式
圖1示出了通信系統(tǒng)100,其包括網(wǎng)絡(luò)116、以可由用戶102(alice)訪問的用戶設(shè)備104為形式的接收設(shè)備、以可由另一用戶118(bob)訪問的視頻網(wǎng)真會(huì)議系統(tǒng)(vtc)120為形式的發(fā)送設(shè)備、以及視頻互操作性服務(wù)器(vis)122(視頻中繼服務(wù)器)。用戶設(shè)備104、vis122、和vtc120連接至網(wǎng)絡(luò)116。網(wǎng)絡(luò)116具有包括傳輸層的網(wǎng)絡(luò)層,所述傳輸層在諸如設(shè)備104、120、和服務(wù)器122之類的不同的網(wǎng)絡(luò)端點(diǎn)之間提供端到端通信。
用戶設(shè)備104包括:處理器,例如,形成一個(gè)或多個(gè)cpu(中央處理單元)108,向其連接有網(wǎng)絡(luò)接口144,用戶設(shè)備114經(jīng)由該網(wǎng)絡(luò)接口連接至網(wǎng)絡(luò)116;計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)(存儲(chǔ)器)110,其保存軟件(即可執(zhí)行代碼);并且特別地,通信客戶端112;以及顯示器106。用戶設(shè)備104是計(jì)算機(jī)設(shè)備,其可以采取多種形式,例如臺(tái)式計(jì)算機(jī)或膝上型計(jì)算機(jī)設(shè)備、移動(dòng)電話(例如,智能電話)、平板計(jì)算設(shè)備、可穿戴計(jì)算設(shè)備、電視機(jī)(例如,智能tv)、機(jī)頂盒、游戲操縱臺(tái)等的形式。
客戶端112(其可以是獨(dú)立的通信客戶端應(yīng)用,諸如網(wǎng)絡(luò)瀏覽器等之類的另一應(yīng)用的插件)使能夠經(jīng)由網(wǎng)絡(luò)116在用戶設(shè)備104與vtc120之間建立實(shí)時(shí)視頻通過(例如,voip(“通過ip的語音”)),以使得用戶102和其他用戶118能夠經(jīng)由網(wǎng)絡(luò)116彼此進(jìn)行通信。該通話是經(jīng)由vis120建立的,其在設(shè)備104、102之間提供了互操作性(參見下文)。vtc的相機(jī)121捕獲原始的(即,未經(jīng)壓縮的)視頻內(nèi)容,其由vtc120編碼并作為分組流而經(jīng)由網(wǎng)絡(luò)116發(fā)送至vis122。例如,該流可以根據(jù)h.264、vc-1、或hevc標(biāo)準(zhǔn)來編碼。該流包括視頻數(shù)據(jù)分組以及一個(gè)或多個(gè)相關(guān)控制分組,所述視頻數(shù)據(jù)分組包含經(jīng)編碼的視頻內(nèi)容,而所述一個(gè)或多個(gè)相關(guān)控制分組每個(gè)包含控制數(shù)據(jù),其中如果客戶端112將能夠解碼并正確地顯示控制分組與其相關(guān)的視頻內(nèi)容的部分,則任何其他設(shè)備將需要所述控制數(shù)據(jù)。
互操作性服務(wù)器122處理該流,并且在必需的情況下,修改該流以便其針對由客戶端112回放而被優(yōu)化。這在下文進(jìn)行了詳細(xì)描述。接著,vis122將經(jīng)修改的流發(fā)送至在用戶設(shè)備104上運(yùn)行的客戶端112。
客戶端112接收經(jīng)修改的流,并且使用控制數(shù)據(jù)來解碼和顯示包含在其中的視頻內(nèi)容。
客戶端112提供了用于從用戶102接收信息并向用戶102輸出信息的用戶界面(ui),其包括經(jīng)解碼的視頻內(nèi)容。例如,客戶端112可以控制顯示器106來以可視的形式向用戶102輸出信息,其包括輸出經(jīng)解碼的視頻內(nèi)容。顯示器104可以包括觸摸屏以使其充當(dāng)輸入設(shè)備和輸出設(shè)備兩者,并且可以集成或不集成在用戶設(shè)備104中,例如,其可以是能夠經(jīng)由合適的接口連接至用戶設(shè)備104的單獨(dú)的設(shè)備(例如,耳機(jī)、智能手表等)的一部分。
用戶界面可以包括例如經(jīng)由顯示器106輸出信息的圖形用戶界面(gui)和/或使得用戶能夠以自然的方式與設(shè)備進(jìn)行交互的自然用戶界面(nui),其免受由諸如鼠標(biāo)、鍵盤、遠(yuǎn)程控制器等之類的某些輸入設(shè)備所施加的人工約束。nui方法的示例包括利用以下這些的方法:觸摸感應(yīng)顯示器、語音和話音識(shí)別、意圖和目標(biāo)理解、使用深度相機(jī)(例如,立體或飛行時(shí)間相機(jī)系統(tǒng)、紅外相機(jī)系統(tǒng)、rgb相機(jī)系統(tǒng)、以及這些的組合)的運(yùn)動(dòng)姿勢檢測、使用加速度計(jì)/陀螺儀的運(yùn)動(dòng)姿勢檢測、臉部識(shí)別、3d顯示、標(biāo)頭、眼睛、和視線追蹤、浸入式增強(qiáng)現(xiàn)實(shí)和虛擬現(xiàn)實(shí)系統(tǒng)等。
圖2示出了根據(jù)h.264標(biāo)準(zhǔn)的在網(wǎng)絡(luò)抽象層202處的分組流206的一部分。流206包括非vclnalu208、209和vclnalu210的混合。
vclnalu210具有有效載荷,其中每個(gè)有效載荷包括一段經(jīng)編碼的視頻內(nèi)容,具體地,經(jīng)編碼的幀切片214;非vlcnalu具有有效載荷,其包括與經(jīng)編碼的切片相關(guān)聯(lián)的額外的信息,例如參數(shù)集215。
存在兩種類型的參數(shù)集:序列參數(shù)集(sps),其適用于一系列連續(xù)的經(jīng)編碼的視頻幀(經(jīng)編碼的視頻序列);以及圖片參數(shù)集(pps),其適用于對經(jīng)編碼的視頻序列內(nèi)的一個(gè)或多個(gè)個(gè)體的幀的解碼。spsnalu208(相應(yīng)地,ppsanlu209)具有包含sps(相應(yīng)地,pps)的有效載荷。
sps包含正確地解碼和顯示其所適用的vclnalu所需的信息。具體而言,sps包含指示(除此之外還有其他)以下內(nèi)容的參數(shù):與其相關(guān)的視頻內(nèi)容的幀速率、與其相關(guān)的視頻內(nèi)容的分辨率、短期和長期參考幀的最大數(shù)量、簡檔和等級數(shù)據(jù)等?!暗燃墶笔侵甘踞槍啓n所需的解碼器性能的程度的一組指定的約束。“簡檔”是由標(biāo)準(zhǔn)多定義的編碼能力的(子)集合;當(dāng)在sps中指出特定的簡檔時(shí),這指示編碼器還沒有使用該(子)集合之外的能力。
每個(gè)vclnalu包含sps標(biāo)識(shí)符,其標(biāo)識(shí)并且因此將vclnalu鏈接至相關(guān)的sps(即,包含適用于該vclnalu的參數(shù)的sps);每個(gè)vclnalu還包含將其鏈接至相關(guān)的pps的類似的pps標(biāo)識(shí)符。
可以在與其相關(guān)的vclnalu之前向解碼器發(fā)送sps或pps??梢酝ㄟ^將新鮮的sps/ppsnalu包括在流中來周期性地更新sps/pps,接著,其被傳遞至解碼器。因此,解碼器有改變流206的不同部分的參數(shù)的自由,例如,從而例如通過將新的sps/pps插入到流206中來實(shí)現(xiàn)更好的質(zhì)量或壓縮。
在視頻編碼層204處,經(jīng)編碼的切片214包括經(jīng)編碼的宏塊216的集合,一個(gè)集合針對切片中的每個(gè)宏塊,其可以是幀間或幀內(nèi)編碼。宏塊數(shù)據(jù)216的每個(gè)集合包括宏塊的類型218(即,幀間還是幀內(nèi))的標(biāo)識(shí)符、所述宏塊相對其編碼的參考宏塊的標(biāo)識(shí)符220(例如,其可以包括運(yùn)動(dòng)向量)、以及宏塊的殘差222,其表示宏塊的采樣在頻域中相對于參考的實(shí)際值。宏塊數(shù)據(jù)216的每個(gè)集合還可以包括其他參數(shù),例如由編碼器應(yīng)用于宏塊的量化的量化參數(shù)。
一種類型的vclnalu是idr(即時(shí)解碼器刷新)nalu,其包含經(jīng)編碼的idr切片。idr切片僅僅包含經(jīng)幀內(nèi)編碼的宏塊并且idr切片的出現(xiàn)指示在流中編碼的未來的切片將不使用比idr切片更早的任何切片作為參考,即,以使得解碼器能夠隨便丟棄其當(dāng)前保存的任何參考幀,這是因?yàn)樗鼈儗⒉辉俦挥米鲄⒖?。另一類型的vclnalu是非idrnalu,其包含非idr切片。非idr切片可以包含經(jīng)幀間編碼的宏塊和/或經(jīng)幀內(nèi)編碼的宏塊,并且不提供任何這樣的指示。
nalu208、209、210也具有標(biāo)頭212,其指示nalu的類型及其他,例如,將其標(biāo)識(shí)為spsnalu、pspnalu、idrnalu、非idrnalu等。
h.264協(xié)議以spsnalu參數(shù)的形式定義了某些語法元素,其可以被包括在sps中,并且針對其使用以下語法:
1、pic_width_in_mbs_minus1(幀高度參數(shù))
2、pic_height_in_mbs_minus1(幀寬度參數(shù))
3、aspect_ratio_idc(縱橫比顯示參數(shù))
4、frame_cropping_flag(剪裁標(biāo)記參數(shù))
5、frame_crop_top_offsets(頂部剪裁參數(shù))
6、frame_crop_bottom_offsets(底部剪裁參數(shù))
7、frame_crop_left_offsets(左剪裁參數(shù))
8、frame_crop_right_offsets(右剪裁參數(shù))
幀寬度參數(shù)和幀高度參數(shù)是經(jīng)編碼的視頻內(nèi)容本身的參數(shù),這是就它們描述與sps相關(guān)的視頻內(nèi)容的固有特性的意義而言的。具體地,它們分別指示與sps相關(guān)的經(jīng)編碼的幀的列高度h和行寬度w,如以宏塊為單元測量的,每個(gè)宏塊是16×16像素。即,這些參數(shù)最終定義相關(guān)的視頻幀的像素寬度和高度,盡管是以宏塊為單位來表示的。這些參數(shù)是由h.264協(xié)議定義的,以使得“x”的值表示“x-1”個(gè)宏塊的幀寬度或幀高度。
縱橫比顯示參數(shù)是顯示參數(shù),這是就其不描述視頻內(nèi)容的固有特性而是描述旨在顯示視頻內(nèi)容的方式而言的。具體地,縱橫比顯示參數(shù)指示視頻內(nèi)容應(yīng)該在顯示器上的顯示的縱橫比,即,視頻在顯示器本身上占用的水平距離與視頻在顯示器本身上占用的豎直距離之間的期望的比率,與如在上文中所定義的視頻幀的固有縱橫比w:h無關(guān)。應(yīng)當(dāng)注意的是,如由縱橫比顯示參數(shù)所指示的期望的縱橫比可以與實(shí)際的縱橫比匹配或不匹配;為了適應(yīng)后者,當(dāng)視頻被相應(yīng)地顯示時(shí),可以不成比例地被縮放。h.264標(biāo)準(zhǔn)不需要縱橫比顯示參數(shù)——在被省略的情況下,解碼器將以其實(shí)際的縱橫比來顯示經(jīng)解碼的視頻,即沒有任何不成比例的縮放。應(yīng)當(dāng)注意的是,顯示縱橫比參數(shù)是相對于如在上文中所定義的實(shí)際縱橫比w:h來定義的。例如,在實(shí)際縱橫比是11:9的情況下,被設(shè)置為12:11的aspect_ratio_idc告訴解碼器視頻應(yīng)該以(11*12:9*11)=4:3的縱橫比來顯示。即,aspect_ratio_idc=12:11指示針對11:9的視頻的期望的顯示縱橫比是4:3。
還應(yīng)當(dāng)注意的是,可以間接地設(shè)置縱橫比顯示參數(shù),即通過參考同一sps中的其他參數(shù)。特別地,h.264定義了“sar_width”和“sar_height”參數(shù),而aspect_ratio_idc可以相對于這些參數(shù)而被設(shè)置為aspect_ratio_idc=extended_sar,這表示顯示縱橫比為“sar_height:sar_width”。
h.264僅僅允許對具有整數(shù)數(shù)量個(gè)宏塊的分辨率的視頻內(nèi)容進(jìn)行編碼,其中在h.264中宏塊是16×16像素(其他視頻協(xié)議施加類似的限制)。即,幀在寬度和高度方面都必須是整數(shù)數(shù)量個(gè)宏塊。
然而,有時(shí)候期望被編碼的未經(jīng)壓縮的視頻內(nèi)容不符合該要求。在該場景下,編碼器能夠做的最好的是故意編碼一些額外的“不想要的”像素,以便將寬度和/或高度補(bǔ)充至整數(shù)數(shù)量的宏塊。例如,當(dāng)期望編碼60×64像素的視頻幀時(shí),編碼器能夠做的最好的是編碼64×64像素的幀,所述64×64像素的幀包括期望的60×64的幀,而且具有一些額外的不想要的像素來將寬度補(bǔ)充至64像素。如果該60×64像素是更大的視頻幀的子區(qū)域,則不想要的像素可以是“真”像素(例如,如由相機(jī)所捕獲的),否則它們可能是人工生成的“填充”像素,例如零值像素。
這些不想要的像素將與期望的像素一起由解碼器來解碼。然而,h.264標(biāo)準(zhǔn)提供了各種剪裁參數(shù)(上文中的4至8),以使得編碼器能夠向解碼器標(biāo)識(shí)不想要的像素,從而避免實(shí)際上顯示經(jīng)標(biāo)識(shí)的不想要的像素;即,其可以被設(shè)置為一旦視頻內(nèi)容已經(jīng)被解碼就指示應(yīng)該將經(jīng)標(biāo)識(shí)的像素剪裁掉。剪裁標(biāo)記參數(shù)是二進(jìn)制值的參數(shù),當(dāng)被設(shè)置為“0”(非剪裁狀態(tài))時(shí),這指示該視頻內(nèi)容根本不應(yīng)該被剪裁,即,一旦視頻內(nèi)容被解碼就應(yīng)該將其整體顯示。因此,當(dāng)解碼器檢測到在sps中的剪裁標(biāo)記被設(shè)置為零時(shí),一旦相關(guān)的幀被解壓,解碼器就以其整體來對其進(jìn)行顯示。當(dāng)剪裁標(biāo)記被設(shè)置為“1”(剪裁狀態(tài))時(shí),這指示在經(jīng)編碼的視頻內(nèi)容中存在不想要的像素,以及對視頻內(nèi)容的一些剪裁應(yīng)該在其被部署之前發(fā)生。這些不想要的像素實(shí)際上是通過在sps中包括被設(shè)置為合適的值的頂部/底部/左/右剪裁參數(shù)中的一個(gè)或多個(gè)參數(shù)來標(biāo)識(shí)的。例如,如果在以上的示例中,編碼器通過在視頻內(nèi)容的最左邊包括寬度為4像素的列來將視頻內(nèi)容的寬度補(bǔ)充成64像素,則其可以包括相關(guān)的sps中的“剪裁左邊”參數(shù),該參數(shù)被設(shè)置為值“4”(即,4個(gè)像素)以指示相關(guān)的視頻幀的最左邊的四列應(yīng)該在顯示視頻幀之前被剪裁掉。
換句話說,h.264(以及其他類似的標(biāo)準(zhǔn))定義旨在由編碼器使用以向解碼器發(fā)送信號的剪裁參數(shù),其不得不在與sps相關(guān)的經(jīng)編碼的視頻內(nèi)容中包含一些不想要的填充像素。在沒有這些剪裁參數(shù)的情況下,編碼器將沒有辦法通知解碼器存在這些不想要的像素,且解碼器將沒有辦法知道其已經(jīng)解碼的像素中的任何一個(gè)實(shí)際上是不想要的。
圖3示出了視頻解碼器300的功能框圖,其功能是通過在用戶設(shè)備104的處理器108上運(yùn)行客戶端112來實(shí)現(xiàn)的(然而不排除專用硬件實(shí)現(xiàn)和組合的專用硬件/軟件實(shí)現(xiàn))。解碼器300包括內(nèi)容分離器302、控制器316、視頻解壓器304、以及具有連接至解壓器304的輸出端的第一輸入端的剪裁模塊318。
視頻解碼器包括熵解碼器306、逆量化和變換模塊308、幀間解碼器310、幀內(nèi)解碼器312、以及參考切片緩沖器314,其協(xié)作以實(shí)現(xiàn)視頻解壓過程。
內(nèi)容分離器302具有輸入端,內(nèi)容分離器302通過該輸入端接收流206,其處理該流206以將經(jīng)編碼的切片214與流206的剩余部分分離。內(nèi)容分離器302具有第一輸出端,內(nèi)容分離器302通過該第一輸出端向解壓器304提供經(jīng)分離的切片214,其以每片為基礎(chǔ)解碼經(jīng)分離的切片214。熵解碼器306具有連接至內(nèi)容分離器302的第一輸出端的輸入端,并且被配置為將在編碼器處應(yīng)用的熵逆轉(zhuǎn)。逆量化和變換模塊308具有連接至熵解碼器的輸出端的輸入端,逆量化和變換模塊308利用該輸入端來接收經(jīng)熵解碼的切片,并應(yīng)用逆量化和逆變換以將每個(gè)切片中的宏塊恢復(fù)至其空間域表示。為了完成該解壓,適當(dāng)?shù)貙g解碼或幀內(nèi)解碼應(yīng)用至每個(gè)切片中的宏塊以將所述切片解壓,并且將經(jīng)解壓的切片從解壓器304輸出至剪裁模塊318。經(jīng)解壓的切片還被選擇性地提供至切片參考緩沖器314,其中它們被保留以供幀間解碼器310使用。
內(nèi)容分離器302還將諸如參數(shù)集和任何補(bǔ)充信息之類的控制數(shù)據(jù)與流206的剩余部分分離。內(nèi)容分離器302具有連接至控制器316的輸入端的第二輸出端,通過該第二輸出端將參數(shù)集和補(bǔ)充信息提供至控制器316??刂破?16基于參數(shù)集/補(bǔ)充信息來控制視頻解壓過程。
控制器316還基于在流206中所接收到剪裁參數(shù)來控制剪裁模塊318。具體地,控制器316控制剪裁模塊318以根據(jù)在其相關(guān)的sps中所接收的剪裁參數(shù)來剪裁經(jīng)解壓的每一幀。即,在將經(jīng)解壓到視頻內(nèi)容提供至顯示器106之前,將從經(jīng)解壓的視頻內(nèi)容中移除由相關(guān)的sps標(biāo)識(shí)為不想要的任何像素。
該公開呈現(xiàn)了h.264的新穎的應(yīng)用以及由其他視頻協(xié)議所提供的類似的剪裁參數(shù),以在不同視頻類型的視頻通話技術(shù)之間提供互操作性,例如基于軟件客戶端的系統(tǒng)(例如,已知的microsoft(r)lync(r)系統(tǒng))與第三方vtc硬件之間的系統(tǒng)間操作,例如,如由已知的實(shí)體“ciscosystem”所提供的?,F(xiàn)在將參考圖4來對其進(jìn)行描述。
圖4示出了用戶設(shè)備104的vtc120、vis122、和解碼器300在視頻通話期間在使用她的設(shè)備104的alice102與使用vtc120的bob118之間協(xié)作的方式。bob的通話視頻是由vtc120的相機(jī)112所捕獲的,作為示例該相機(jī)被示出為暫時(shí)地朝向bob的貓418(charles)。在vtc120與vis122之間建立了第一信道,而vis122與用戶設(shè)備104之間是第二信道。所述信道是經(jīng)由網(wǎng)絡(luò)116的,而bob的通話視頻是作為初始的nalu流206i經(jīng)由第一信道而流式傳輸至vis122的。vis在vtc120與客戶端112之間提供互操作性。例如,在vtc根據(jù)第一通信協(xié)議發(fā)送和接收視頻,并且客戶端112根據(jù)不同的且不兼容的第二通信協(xié)議發(fā)送和接收視頻情況下,vis122執(zhí)行協(xié)議轉(zhuǎn)換以使得視頻通話能夠在否則不兼容的系統(tǒng)之間進(jìn)行。
如在下文中詳細(xì)描述的,vis修改初始流206i并且經(jīng)由第二信道將經(jīng)修改的流206m發(fā)送至用戶設(shè)備104。bob的通話視頻經(jīng)由vis122而被實(shí)時(shí)地流式傳輸給alice。vtc120和客戶端112兩者使用同一視頻協(xié)議(例如,h.264),但是可以例如使用不同的通信協(xié)議。因此,執(zhí)行視頻轉(zhuǎn)碼以提供互操作性對于vis122而言不是必須的,這是因?yàn)閎ob的通話視頻已經(jīng)是與bob的設(shè)備兼容的格式,并且反之亦然;前述修改被限制于包含在流中的控制數(shù)據(jù),并且出于在下文中所描述的原因而被執(zhí)行。
vtc120包括預(yù)先處理模塊412以及視頻編碼器414,預(yù)先處理模塊412具有連接至相機(jī)121的輸入端,視頻編碼器414具有連接至預(yù)先處理組件412的輸出端的輸入端和連接至vtc的網(wǎng)絡(luò)接口416的輸出端。組件412、414被實(shí)現(xiàn)為軟件,即作為在vtc的處理器(未示出)上執(zhí)行的代碼,但是不排除專用硬件實(shí)現(xiàn)或組合的專用硬件/軟件實(shí)現(xiàn)。
由相機(jī)121所捕獲的通話視頻包括多個(gè)視頻幀f,這些視頻幀是由相機(jī)121以數(shù)字形式輸出的。由此,幀f中的每一幀是以具有構(gòu)成期望的圖像(在該示例中,charles的圖像)數(shù)據(jù)的值的像素px的相應(yīng)的陣列為形式的。如將顯而易見的,在圖4中所示出的像素在尺寸或數(shù)量上都不是按比例的。通常而言,通話視頻將是由圖1中的相機(jī)121以相對高的分辨率捕獲的——例如,1024×769的分辨率(再一次,這僅僅是示例)。在將視頻編碼通過網(wǎng)絡(luò)流式傳輸之前,預(yù)先處理模塊412可以首先將通話視頻的分辨率降低(例如,通過丟棄像素,或者將多個(gè)像素組合成單個(gè)像素)至新的、較低的分辨率,從而降低流式傳輸通話視頻所需的開銷。關(guān)于是否降低分辨率以及將分辨率降低到什么程度的決策可以基于諸如第一和第二信道的當(dāng)前可用的帶寬之類的當(dāng)前的網(wǎng)絡(luò)條件的。即,新的分辨率響應(yīng)于網(wǎng)絡(luò)條件改進(jìn)(例如,帶寬增加)或惡化(例如,帶寬降低)??商娲鼗蝾~外地,這可以是基于編碼器414和/或解碼器300的能力的,這也可以例如當(dāng)相關(guān)處的處理資源變得可用或不可用時(shí)而隨著時(shí)間改變。
當(dāng)以16:9的分辨率來對所捕獲的通話視頻進(jìn)行編碼時(shí),在提供(例如)lync-vtc互操作性方面出現(xiàn)了一個(gè)挑戰(zhàn)。出于傳統(tǒng)原因,ciscovtc不以240p或180p來直接流式傳輸視頻。在該上下文中,“直接”指的是以240p或180p打開相機(jī)并且允許編碼器直接對來自捕獲的輸入樣本進(jìn)行工作,而沒有諸如附加黑條或拉伸樣本之類的預(yù)先處理。相反,已經(jīng)觀察到ciscovtc通過將黑條引入到頂部和底部來將16:9的圖像嵌入到4:3的圖像中,并且接著根據(jù)來自遠(yuǎn)端的請求通過將4:3的圖像(具有黑條)不成比例地縮放至cif(通用中間格式)或qcif(四分之一cif)圖像來調(diào)整4:3的圖像的大小。cif和qcif是11:9分辨率格式,它們分別具有352×288個(gè)像素和176×144個(gè)像素的分辨率。
即,在圖4的上下文中,當(dāng)網(wǎng)絡(luò)條件變得足夠差和/或當(dāng)編碼/解碼能力足夠受限時(shí),預(yù)先處理組件412開始將由相機(jī)121所捕獲的具有16:9的縱橫比的、相對較高分辨率的通話視頻轉(zhuǎn)換成具有11:9的縱橫比的cif或qcif視頻(即,每幀具有較少的像素)。為此,預(yù)先處理模塊412生成填充圖像數(shù)據(jù)并且將所述填充圖像數(shù)據(jù)添加至每一幀以作為相應(yīng)的像素陣列的額外的最高和最低的行rt、rb。如將顯而易見的,在預(yù)先處理中所添加的額外的行改變了視頻幀的固有縱橫比(如在上文中所定義的)。行r是零像素值的行,其被解譯并且被顯示為黑色。因此,填充圖像數(shù)據(jù)在每一幀的頂部和底部創(chuàng)造了“黑條”。
然而,黑條效應(yīng)在大于或等于360p的16:9的圖像中不存在。即,當(dāng)新的像素高度是360p或以上時(shí),預(yù)先處理模塊不將通話視頻轉(zhuǎn)換成不同的分辨率,而替代地簡單地在保持16:9的分辨率的同時(shí)降低分辨率(在必要的情況下)。
分辨率在分離的步驟中改變,例如,從cif到qcif/從qcif到cif、從360p到cif/從cif到360p等。
要點(diǎn)是,出于傳統(tǒng)原因,某些vtc輸出相對較低分辨率的通話視頻流(其具有等于或小于288像素的閾值的像素高度),其具有11:9的縱橫比,并且黑條被包括在每一幀的頂部和底部,例如在相對較差的網(wǎng)絡(luò)條件/受約束的處理環(huán)境中,但是輸出相對較高分辨率的通話視頻流(具有高于288像素閾值的像素高度),具有16:9縱橫比并且沒有黑條,例如在相對較好的網(wǎng)絡(luò)條件/不受約束的處理環(huán)境中。當(dāng)在會(huì)議中由于帶寬波動(dòng)或編碼/解碼能力改變而vtc發(fā)送分辨率上下改變時(shí),這引起了差的視覺體驗(yàn),這是因?yàn)榻K端用戶在通話中可能看到黑條出現(xiàn)和消失以及顯示視頻放大和縮小(如果ui未被配備成處理變化的縱橫比,而是替代地縮放所有視頻以適配例如顯示器的固定可用的顯示區(qū)域,則這可能發(fā)生)。
在圖6a和6b中示出了該效應(yīng)的示例,它們示出了在顯示器上所呈現(xiàn)的客戶端ui602可以如何在現(xiàn)有的通信系統(tǒng)中波動(dòng)。圖6a描繪了在vtc以等于或低于240p(例如,在相對差的網(wǎng)絡(luò)條件下)來流式傳輸視頻v的時(shí)刻的ui602;如在經(jīng)由ui602所顯示的視頻v中,黑條b的出現(xiàn)是明顯的。圖6b描繪了在vtc以等于或高于360p來流式傳輸時(shí)的不同的時(shí)間點(diǎn)處的ui602,以使得在視頻v中沒有黑條出現(xiàn)。
在圖7a和7b中示出了該效應(yīng)的另一示例,它們示出了在顯示器上所呈現(xiàn)的客戶端ui702可以如何在現(xiàn)有的通信系統(tǒng)中波動(dòng)。圖7a描繪了在vtc以等于或低于240p(例如,在相對差的網(wǎng)絡(luò)條件下)來流式傳輸視頻v的時(shí)刻的ui702;如在經(jīng)由ui702所顯示的視頻v中,黑條b的出現(xiàn)是明顯的。圖7b描繪了在vtc以等于或高于360p來流式傳輸以使得在視頻v中沒有黑條出現(xiàn)時(shí)的不同的時(shí)間點(diǎn)處的ui702。在該情況下,客戶端ui通過水平地重新縮放視頻以使得其填滿與圖7a中的240p視頻相同的顯示區(qū)域來響應(yīng)在視頻的縱橫比(即,其像素寬度與像素高度之間的比率)方面的改變。如果ui未被適當(dāng)?shù)嘏鋫涑商幚碓谝曨l的縱橫比方面的改變,則可能出現(xiàn)該類型或類似類型的失真。
處理該黑條問題的典型解決方案將是經(jīng)由vis122(視頻互操作性服務(wù)器)上進(jìn)行全轉(zhuǎn)碼。這將意味著,當(dāng)vis122檢測從vtc120所發(fā)送的cif/qcif視頻時(shí),其將不得不對該視頻進(jìn)行解碼、通過將黑條剪裁掉來將該視頻剪裁成16:9格式、并且接著將經(jīng)剪裁的視頻重新編碼。該方法將涉及服務(wù)器上的額外的視頻編碼和處理資源。
可替代的解決方案將針對vis將元信息插入到比特流中以指示黑條的區(qū)域。接著,接收器可以解譯元信息并且在渲染該幀之前相應(yīng)地將黑條剪裁掉。然而,該方法針對不理解元信息的傳統(tǒng)客戶端而言不適用。即,這將需要更新客戶端邏輯以使得客戶端能夠解譯新類型的元數(shù)據(jù)。
該公開提供了對黑條問題的有成本效益且向后兼容的解決方案。其利用spsnal單元中的h.264語法元素frame_crop_top_offset和frame_crop_bottom_offset參數(shù)以使得黑條在接收設(shè)備104的解碼器300處被剪裁掉。當(dāng)其利用h.264標(biāo)準(zhǔn)語法時(shí),所有的h.264一致解碼器(包括hw和sw解碼器兩者)將自動(dòng)地對其進(jìn)行處理,以提供向后兼容性。應(yīng)當(dāng)注意的是,盡管是作為示例在h.264的上下文中呈現(xiàn)的,但是本主題不是特定于h.264的,并且可以通過利用類似的語法元素而被擴(kuò)展至例如vc1和hevc。因此,在沒有轉(zhuǎn)碼并且無需更新當(dāng)前使用的客戶端的情況下解決了黑條問題。
如所提及的,這些語法元素最初是在h.264規(guī)范中定義的以用于處理不是16像素的倍數(shù)的輸入幀高度;然而,本公開呈現(xiàn)了對這些參數(shù)的新的應(yīng)用以解決黑條問題。
具體地,當(dāng)vis122看到來自vtc120的cif(352×288)視頻時(shí),vis122操縱spsnal單元中的h.264語法元素frame_crop_top_offset和frame_crop_bottom_offset,以使得一旦所述視頻已經(jīng)被接收設(shè)備104的解碼器300解壓和剪裁,分辨率變成352×198。類似地,針對qcif(176×144)視頻,vis使用相同的方法來確保已經(jīng)將解壓了視頻的解碼器在所述視頻被顯示在顯示器106上之前將所述視頻剪裁到176×99的分辨率。
返回至圖4,vis被示出為包括處理器402、保存流處理代碼406的存儲(chǔ)器404、以及網(wǎng)絡(luò)接口410。處理器402連接至存儲(chǔ)器404和網(wǎng)絡(luò)接口410。流處理代碼被配置為當(dāng)在處理器402上被執(zhí)行時(shí)實(shí)現(xiàn)流處理算法?,F(xiàn)在將參考圖5描述流處理算法,其中圖5是針對該算法的流程圖。
編碼器414根據(jù)h.264標(biāo)準(zhǔn)來操作,并且存在兩個(gè)可能的場景。在第一場景中,vic120對具有都是整數(shù)個(gè)宏塊的像素寬度和像素高度的視頻進(jìn)行編碼;由此,就標(biāo)準(zhǔn)化的編碼器而言,無需使用剪裁參數(shù)并且因此編碼器414將初始流206i的sps中的剪裁標(biāo)記設(shè)置為“0”以指示在第一場景中不需要剪裁。在第一場景中,初始流206i中的sps指示所有的通話視頻(包括黑條,當(dāng)其被添加時(shí))應(yīng)該在輸出視頻時(shí)被顯示。同樣地,vtc120可以對具有不是16像素的整數(shù)倍的像素寬度和/或高度的視頻進(jìn)行編碼(第二場景)。在第二場景中,標(biāo)準(zhǔn)化的編碼器以它們最初意圖的方式來使用剪裁偏置,即,通過添加額外的填充(多于黑條本身)來彌補(bǔ)差距,將剪裁標(biāo)記設(shè)置為“1”并且設(shè)置頂部、底部、左、和/或右剪裁參數(shù)以指示額外的填充(盡管不是黑條)應(yīng)該被剪裁掉,從不從幀的頂部、底部、左、或右的任何一個(gè)中剪裁掉超過15個(gè)像素。如果由編碼器將任何另外的頂部填充(多于黑條)添加至幀的頂部和/或底部,則另外的頂部填充將具有包含性的1與15個(gè)像素之間的高度。如果任何另外的底部填充作為另外的頂部填充的替代物或補(bǔ)充而被添加,則其也將具有包含性的1與15個(gè)像素之間的高度。這是因?yàn)?,?dāng)h.264剪裁參數(shù)僅僅被用于其意圖的用途時(shí),人們將永遠(yuǎn)沒有好的理由來剪裁掉超過15個(gè)像素,這是因?yàn)槿藗儗⒂肋h(yuǎn)沒有好的理由來引入超過15個(gè)不想要的填充像素從而將幀高度補(bǔ)充到16像素的整數(shù)倍。
應(yīng)當(dāng)注意的是,在前述段落中所引用的額外的填充數(shù)據(jù)可以是與黑條相同類型的填充數(shù)據(jù)(例如,整體零值像素),并且可以同時(shí)被添加。然而,兩種類型的填充是有區(qū)別的,這在于編碼器設(shè)置剪裁參數(shù)以剪裁掉額外的填充數(shù)據(jù),而不剪裁掉黑條填充數(shù)據(jù)。換句話說,當(dāng)以240p或180p操作時(shí),vtc編碼器總是將頂部和底部填充數(shù)據(jù)添加到每一幀的頂部和底部,并且頂部和底部填充數(shù)據(jù)中的每個(gè)填充數(shù)據(jù)具有嚴(yán)格大于15像素(即,16或更多)的相應(yīng)的像素高度;然而,vtc編碼器永不指示所有這些都應(yīng)當(dāng)被剪裁掉——其可以通過將剪裁標(biāo)記設(shè)置為“0”來指示沒有像素要被剪裁掉,或其可以通過將剪裁標(biāo)記設(shè)置為“1”來指示僅僅一些像素要被剪裁掉,并且頂部和/或底部剪裁參數(shù)指示要從每一幀的頂部和/或底部剪裁掉包含性的1與15行之間的像素(并且因此最多15個(gè)像素)。在本文中,術(shù)語“黑條”僅僅是指i)已經(jīng)由編碼器添加的、并且ii)編碼器已經(jīng)指示了不應(yīng)該在相關(guān)的sps中被剪裁掉的填充數(shù)據(jù)。
針對如從vtc120所接收的初始流206i的每個(gè)nalu而執(zhí)行圖5的算法。在步驟s2處接收nalu單元,并且在步驟s4處,從nalu的標(biāo)頭來確定其是否為spsnalu(在圖4中被標(biāo)記為sps)。如果是,則處理在其中所包含的sps以檢測與在其中所包含的sps相關(guān)的視頻幀中是否存在黑條。即,檢測在幀中是否存在已經(jīng)由編碼器添加但是編碼器還沒有指示應(yīng)該被剪裁掉的任何填充數(shù)據(jù)。
可以通過利用vtc120的行為的知識(shí)來實(shí)現(xiàn)該檢測。如在上文中所描述的,已知某些現(xiàn)有vtc僅僅在以等于或小于288p的閾值的幀高度而流式傳輸時(shí)包括黑條,而不是在以高于閾值(例如,在360p或更高)而流式傳輸時(shí)包括黑條。如在上文中所指示的,h.264標(biāo)準(zhǔn)(以及其他類似的標(biāo)準(zhǔn))需要vtc120的編碼器414指示:編碼器414在初始流206i中的每個(gè)sps中包括與sps相關(guān)的視頻幀的列高度和行寬度,這是通過將幀寬度和幀高度參數(shù)(上文中的1、和2、)設(shè)置為與幀的實(shí)際寬度和高度相匹配來進(jìn)行的;編碼器414相應(yīng)地這樣做。因此,僅僅通過例如讀取任何給定的sps中的幀高度參數(shù)來確定與其相關(guān)的視頻幀的高度,并且因此確定它們是低于閾值被編碼(即,以cif或qcif格式)還是高于閾值(即,以360p)被編碼還是更高而不用看所述幀本身是直截了當(dāng)?shù)?。?yīng)當(dāng)注意的是,幀高度參數(shù)不是僅有的指示幀高度的參數(shù);例如,由于在幀的高度與寬度之間存在已知的關(guān)系,因此在其他的實(shí)施例中,可以替代地讀取幀寬度參數(shù)。從而,在某些實(shí)施例中,通過讀取sps中的幀高度參數(shù)并且確定其是等于或低于閾值(意味著存在黑條)還是高于閾值(意味著不存在黑條)來實(shí)現(xiàn)s6的檢測步驟。
在步驟s8處,如果在步驟s6處檢測到黑條,則計(jì)算用于將黑條剪裁掉的幀剪裁偏置,且將sps修改成i)如果剪裁標(biāo)記還不是“1”,則將剪裁標(biāo)記設(shè)置為“1”,ii)如果頂部和底部剪裁參數(shù)還沒有被包括,則將頂部和底部剪裁參數(shù)添加至sps,并且iii)將頂部和底部剪裁參數(shù)設(shè)置為大于15且足夠高的相應(yīng)的值以指示一旦相關(guān)的視頻幀被解碼且在它們被顯示之前應(yīng)該將黑條剪裁掉。
在編碼器已經(jīng)指示了編碼器已經(jīng)添加了的填充數(shù)據(jù)中的一些(但是,必須僅僅是一些)填充數(shù)據(jù)應(yīng)該被剪裁掉的情況下,通過使用新的剪裁偏置值來對其進(jìn)行處理,所述剪裁偏置各自是對應(yīng)的原始值加上移除黑條所需的值的和。
在該情況下,頂部和底部剪裁參數(shù)將具有大于15像素的值,這指示要從視頻幀的頂部和底部兩者中剪裁掉超過15行像素——針對cif從頂部和底部至少45個(gè)像素(1/2*(288-198)),而針對qcif從頂部和底部至少22(1/2*(144-99))。在某種意義上,這是不同尋常的,因?yàn)楫?dāng)h.264剪裁參數(shù)僅僅被用于其原始的用途以處理高度不是16像素的整數(shù)倍的輸入視頻時(shí)(如在上文中所討論的),人們永遠(yuǎn)不會(huì)有好的理由來剪裁掉超過15個(gè)像素,這是因?yàn)槿藗儗⒂肋h(yuǎn)不會(huì)有好的理由來引入超過15個(gè)不想要的填充像素從而將幀高度補(bǔ)充到16像素的整數(shù)倍。
應(yīng)當(dāng)注意的是,在vtc120已經(jīng)包括了sps中的縱橫比顯示參數(shù)(aspect_ratio_idc)并且已經(jīng)將其設(shè)置為指示期望的4:3的顯示縱橫比的情況下,左邊的未經(jīng)檢查的一些現(xiàn)有的解碼器會(huì)將這解釋為意指經(jīng)解碼和經(jīng)剪裁的視頻(已經(jīng)通過將頂部和底部行的像素移除而被剪裁到16:9)應(yīng)當(dāng)在僅僅通過在水平方向上縮放視頻而被顯示時(shí)被不成比例地縮放回4:3。出于該原因,縱橫比顯示參數(shù)還可以在步驟s8處被設(shè)置為與由vis所包括的剪裁參數(shù)相匹配,即,以使得縱橫比顯示參數(shù)與每一幀中的未經(jīng)剪裁的像素的剩余的子陣列的實(shí)際縱橫比相匹配,從而防止當(dāng)在接收設(shè)備處顯示時(shí)對視頻幀的不成比例的縮放。在該示例中,縱橫比顯示參數(shù)被設(shè)置為指示期望的16:9的顯示分辨率(如在預(yù)先處理期間添加黑條之前,在發(fā)送設(shè)備處接收的幀的分辨率)。針對ciscovtc,發(fā)明人已經(jīng)在qcif和cif上觀察到黑條。此外,在這些情況下,他們已經(jīng)發(fā)現(xiàn)比特流總是包含被設(shè)置為12:11的aspect_ratio_idc。這暗示了vtc首先通過添加黑條將16:9的圖像轉(zhuǎn)換成4:3的圖像,并且將4:3的視頻拉伸至11:9(cif/qcif),并且將aspect_ratio設(shè)置為12:11以告訴解碼器在顯示視頻之前逆轉(zhuǎn)該拉伸。
在步驟s10處,經(jīng)修改的sps(在圖4中被標(biāo)記為sps’)作為經(jīng)修改的流206m的一部分而被轉(zhuǎn)發(fā)至在用戶設(shè)備104上運(yùn)行的客戶端112。經(jīng)修改的sps是由解碼器300接收的。解碼器300檢測到sps中剪裁標(biāo)記為“1”,并且作為響應(yīng),一旦與sps相關(guān)的視頻幀已經(jīng)被解碼,就將如由頂部和底部剪裁值所標(biāo)識(shí)的黑條從與sps相關(guān)的所有視頻幀中剪裁掉。即,以此方式修改sps使得解碼器300僅僅顯示與sps相關(guān)的每個(gè)視頻幀的相應(yīng)的部分(所述部分不包括額外的行)。
返回至步驟s2,如果確定nalu不是spsnalu,則算法直接進(jìn)行到步驟s10并且將nalu未經(jīng)修改地發(fā)送至客戶端112。類似地,如果在步驟s6處,在sps中未檢測到黑條,則算飯進(jìn)行到步驟s10且將sps不修改地轉(zhuǎn)發(fā)到客戶端112。
因此,對流的僅有的修改是對編碼為4:3分辨率的視頻幀相關(guān)的sps的修改。初始流206i中的大多數(shù)nalu不是spsnalu——大多數(shù)是包含實(shí)際視頻內(nèi)容的vclnalu,并且單個(gè)sps通常將應(yīng)用于相對大數(shù)量的這些。因此,圖5的算法僅僅對流206i中相對小比例的nalu執(zhí)行實(shí)質(zhì)性的處理,并且因此表示對服務(wù)器資源的高效使用。
應(yīng)當(dāng)注意的是,每當(dāng)vtc120改變流式傳輸?shù)囊曨l的分辨率時(shí),并且因此每當(dāng)vtc120開始或停止包括黑條時(shí),其必須根據(jù)h.264標(biāo)準(zhǔn)在流中生成新的spsnalu以傳達(dá)該改變,其中水平和豎直的圖片尺寸參數(shù)被設(shè)置為指示新的分辨率。因此,黑條的添加或移除將總是精確地與流中的新的sps同步,這意味著將立即從新的sps檢測到所述黑條的添加/移除。
應(yīng)當(dāng)注意的是,在步驟s6處使用可替代的黑條檢測是在本公開的范圍之內(nèi)的。例如,可以在vis122處解碼每個(gè)視頻幀并且圖像識(shí)別過程被應(yīng)用于經(jīng)解碼的視頻,以例如通過利用當(dāng)存在黑條時(shí)黑色的像素在相同的區(qū)域中跨幀重復(fù)的事實(shí)來檢測黑條的存在。與全轉(zhuǎn)碼視頻相比,這將仍然表示效率節(jié)省,這是因?yàn)橐曨l將僅僅出于檢測的目的而被解碼并且將無需在vis122處被剪裁和重新編碼(vis122將仍然通過在適用的情況下修改sps來實(shí)現(xiàn)最終的剪裁,并且因此剪裁將仍然由接收設(shè)備104的解碼器300來執(zhí)行)。即,當(dāng)由vis解碼時(shí),經(jīng)解碼的視頻內(nèi)容不由vis重新編碼或者被發(fā)送至接收設(shè)備??商娲兀瑅is可以例如僅僅將編碼序列的前幾幀解碼以推斷針對該編碼序列是否存在黑色幀,或者其可以分析dct系數(shù)以推斷黑條的存在/尺寸而不是將幀完全解碼。
應(yīng)當(dāng)注意的是,“實(shí)質(zhì)上w:h”的縱橫比是指縱橫比是w:h到一個(gè)像素的數(shù)量級的精確度。
“實(shí)時(shí)”指的是在發(fā)送設(shè)備處所捕獲的視頻幀與在接收設(shè)備處所播放的視頻幀之間僅僅存在短的延遲(例如,﹤2秒),短的延遲包括從接收設(shè)備到vis的傳輸時(shí)間,在vis處對流的處理和可能的修改,以及從vis到接收設(shè)備的傳輸時(shí)間。
一般而言,可以使用軟件、固件、硬件(例如,固定的邏輯電路)、或這些實(shí)現(xiàn)的組合來實(shí)現(xiàn)在本文中所描述的功能中的任何功能。如在本文中使用的術(shù)語“模塊”、功能、“組件”、和“邏輯”通常表示軟件、固件、硬件、或其組合。在軟件實(shí)現(xiàn)的情況下,模塊、功能、或邏輯表示當(dāng)在處理器(例如,cpu或多個(gè)cpu)上執(zhí)行時(shí),執(zhí)行指定任務(wù)的程序代碼。程序代碼可以被存儲(chǔ)在一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)器設(shè)備中。在下文中所描述的技術(shù)的特征是與平臺(tái)無關(guān)的,這指的是所述技術(shù)可以在具有多種處理器的多種商業(yè)計(jì)算平臺(tái)上被實(shí)現(xiàn)。
例如,諸如用戶設(shè)備104、vtc120、和vis122之類的設(shè)備還可以包括使得設(shè)置的硬件執(zhí)行操作的實(shí)體(例如,軟件),例如處理器功能塊等。例如,設(shè)備可以包括計(jì)算機(jī)可讀介質(zhì),其可以被配置為保存使得設(shè)備,且更加具體地,使得操作系統(tǒng)和相關(guān)聯(lián)的設(shè)備的硬件執(zhí)行操作的指令。因此,所述指令用于配置操作系統(tǒng)和相關(guān)聯(lián)的硬件以執(zhí)行操作,并且以此方式引起操作系統(tǒng)和相關(guān)聯(lián)的硬件的轉(zhuǎn)換以執(zhí)行功能。所述指令可以是由計(jì)算機(jī)可讀介質(zhì)通過多種不同的配置向設(shè)備提供的。
計(jì)算機(jī)可讀介質(zhì)的一個(gè)這樣的配置是信號承載介質(zhì),并且因此被配置為例如經(jīng)由網(wǎng)絡(luò)向計(jì)算設(shè)備發(fā)送指令(例如,作為載波)。計(jì)算機(jī)可讀介質(zhì)還可以被配置為計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),并且因此不是信號承載介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的示例包括隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、光盤、閃速存儲(chǔ)器、硬盤存儲(chǔ)器、以及可以使用磁的、光學(xué)的、以及其他技術(shù)來存儲(chǔ)指令和其他數(shù)據(jù)的其他存儲(chǔ)器設(shè)備。
多個(gè)幀中的每個(gè)幀的相應(yīng)的陣列具有總數(shù)量的行。在發(fā)明內(nèi)容部分中給出的各個(gè)方面的實(shí)施例中,由發(fā)送設(shè)備進(jìn)行預(yù)先處理還可以另外包括通過至少降低行的總數(shù)量來降低多個(gè)幀的分辨率。添加超過所述預(yù)先確定的數(shù)量的頂部行和超過所述預(yù)先確定的數(shù)量的底部行是以經(jīng)降低的數(shù)量是等于還是低于閾值(例如,288行)為條件性的,并且經(jīng)降低的數(shù)量可以由發(fā)送設(shè)備在控制數(shù)據(jù)中指示。由流處理代碼進(jìn)行的所述處理可以具有在分組流中的控制數(shù)據(jù)以通過檢測經(jīng)降低的數(shù)量等于還是低于閾值(例如,288行)來自動(dòng)地檢測填充圖像數(shù)據(jù)。
數(shù)據(jù)流可以具有數(shù)據(jù)分組,所述數(shù)據(jù)分組具有包含有效載荷數(shù)據(jù)的標(biāo)頭,并且控制數(shù)據(jù)可以作為包含在控制數(shù)據(jù)分組中的有效載荷數(shù)據(jù)來接收。針對在所接收的流中的每個(gè)分組,流處理代碼可以從該分組的標(biāo)頭來確定該分組是否是控制數(shù)據(jù)分組,如果不是,則在不修改包含在該分組中的有效載荷數(shù)據(jù)的情況下將該分組發(fā)送至接收設(shè)備。
數(shù)據(jù)流可以是根據(jù)h.264標(biāo)準(zhǔn)、hevc標(biāo)準(zhǔn)、smptevc-1標(biāo)準(zhǔn)、或提供網(wǎng)絡(luò)抽象層(nal)單元結(jié)構(gòu)的任何其他協(xié)議來格式化的。
分組可以是nal單元,并且所述控制數(shù)據(jù)分組可以是序列參數(shù)集(sps)nal單元,并且針對所接收的流中的每個(gè)nal單元,所述流處理代碼可以從該nal單元的標(biāo)頭來確定nalu單元是否在spsnal單元中,并且如果不在,則在不修改包含在該nalu單元中的有效載荷數(shù)據(jù)的情況下將該nal單元發(fā)送至接收設(shè)備。
由流處理代碼進(jìn)行的所述修改還可以包括在控制數(shù)據(jù)中設(shè)置縱橫比顯示參數(shù)以與經(jīng)修改的剪裁數(shù)據(jù)相匹配(例如,通過將其設(shè)置為16:9),從而防止當(dāng)在接收設(shè)備處顯示時(shí)對多個(gè)視頻幀的不成比例的縮放。在預(yù)先處理之后,多個(gè)幀中的每一幀的縱橫比可以例如大體上是11:9。
視頻內(nèi)容可以是在接收設(shè)備的用戶和發(fā)送設(shè)備的另一用戶之間的通話的通話視頻,將分組流從發(fā)送單元向中繼服務(wù)器發(fā)送,且由流處理代碼將其修改,而且將經(jīng)修改的流從中繼服務(wù)器實(shí)時(shí)地向接收設(shè)備發(fā)送。即,流處理代碼可以被配置為實(shí)時(shí)執(zhí)行所述處理、修改和發(fā)送。
可以由發(fā)送設(shè)備所生成剪裁數(shù)據(jù)可以是以下形式:被設(shè)置為剪裁狀態(tài)的剪裁標(biāo)記、以及頂部和底部剪裁參數(shù),它們被設(shè)置為指示:在一到所述預(yù)先確定的數(shù)量之間的最頂部的行(包含性的),以及一到所述預(yù)先確定的數(shù)量之間的最底部的行(包含性的)應(yīng)該在分別地顯示多個(gè)視頻幀之前被剪裁掉;剪裁數(shù)據(jù)可以通過以下方式來修改:將頂部和底部剪裁參數(shù)設(shè)置為指示所有的額外的行都應(yīng)該在顯示多個(gè)視頻幀之前被剪裁掉。
由發(fā)送設(shè)備所生成的剪裁數(shù)據(jù)是以被設(shè)置為非剪裁狀態(tài)的剪裁標(biāo)記為形式的,并且由此指示包括額外的行的多個(gè)幀中的每一幀應(yīng)該在輸出視頻內(nèi)容時(shí)以其整體被顯示;通過以下方式來修改所述剪裁數(shù)據(jù):將剪裁標(biāo)記設(shè)置為剪裁狀態(tài),并且將頂部和底部剪裁參數(shù)添加至控制數(shù)據(jù)以指示在顯示多個(gè)視頻幀之前應(yīng)該將所有額外的行剪裁掉。
流處理代碼可以從所接收的流中解碼視頻內(nèi)容的至少一部分,并且自動(dòng)地檢測填充圖像數(shù)據(jù),以對經(jīng)解碼的視頻內(nèi)容的至少一部分執(zhí)行圖像識(shí)別。
所述預(yù)先確定的數(shù)量可以是15。
盡管已經(jīng)以特定于結(jié)構(gòu)特征和/或方法動(dòng)作的語言描述了本主題,但是應(yīng)當(dāng)理解的是,在所附權(quán)利要求中所定義的主題不一定限于在上文中所描述的特定的特征或動(dòng)作。相反,在上文中所描述的特定的特征和動(dòng)作是作為實(shí)現(xiàn)權(quán)利要求的示例形式而被公開的。