專利名稱:編碼設(shè)備和編輯設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種編碼設(shè)備,使用通過可變長度編碼來嵌入信息的編碼方法進(jìn)行編碼,以及涉及一種編輯設(shè)備,用于對(duì)所述編碼設(shè)備產(chǎn)生的流進(jìn)行編輯。
背景技術(shù):
可變長度編碼(VLC)是在源數(shù)據(jù)編碼中使用的基本技術(shù),通過根據(jù)特定數(shù)據(jù)源符號(hào)的相似性分配不同長度的碼字,對(duì)數(shù)據(jù)進(jìn)行壓縮。例如,使用如圖24所示的編碼規(guī)則,將大于O的值(codeNum)轉(zhuǎn)換為1、3、5、…比特的可變長度碼字。注意,表示為xn,Xlri…,X0的比特串部分是根據(jù)數(shù)據(jù)值(codeNum)變化的比特串的一部分。例如,將值(codeNum) I或2編碼為3比特碼字,將值7至14轉(zhuǎn)換為7比特碼字。因此,編碼之后的碼字的長度根據(jù)以VLC編碼的數(shù)據(jù)值(codeNum)而變化。VLC用在以MPEG為代表的運(yùn)動(dòng)圖像編碼標(biāo)準(zhǔn)中。更具體地,VLC所應(yīng)用的目標(biāo)可分類為視頻編碼后的數(shù)據(jù)的語法(syntax)(如圖像像素塊的DCT系數(shù)和運(yùn)動(dòng)矢量)、以及報(bào)頭的語法。隨著在圖像壓縮技術(shù)中使用的編碼工具變得更加通用和復(fù)雜,在報(bào)頭中使用的語法類型也增加了,并且VLC越來越多地用于報(bào)頭語法中以減小碼尺寸。H. 264/AVC 標(biāo)準(zhǔn)(IS0/IEC 14496-10)(參見 IS0/IEC 14496-10,Advanced videocoding for generic audio/visual services)也將 VLC 用于包括在序列參數(shù)集合(SPS)、圖像參數(shù)集合(PPS)和片(slice)報(bào)頭中的各種語法。圖21和圖23示出了 SPS、PPS和片報(bào)頭的語法。在這些圖中,“描述符” ue (V)或se(v)表示VLC語法,其中ue(v)表示將大于O的值(codeNum)編碼為1、3、5、…比特的VLC字(如圖24所示),se(v)表示在首先將有符號(hào)值轉(zhuǎn)換為codeNum(如圖25所示)之后米用VLC編碼(如圖24所不)。下面,參考圖26至圖29來描述H. 264字節(jié)流的配置。如圖28所示,將圖像編碼數(shù)據(jù)存儲(chǔ)在片數(shù)據(jù)(Slice_data)中。片是被分成η部分(η彡I)的圖像的一個(gè)片段,并且是一組宏塊的集合。在圖27所示的片層(slice_layer_without_partitioning_rbsp)中,將片數(shù)據(jù)與片頭一起編碼。將SPS、PPS和片層打包成圖26所示的NAL單元(nal_unit)。在將包含SPS、PPS和片層在內(nèi)的NAL單元復(fù)用成單個(gè)流時(shí),將NAL單元打包成連接在單個(gè)字節(jié)流中的字節(jié)流NAL單元(byte_stream_nal_unit,以下稱為“BNU” )。下面,參考圖30描述利用視頻編輯設(shè)備連接多個(gè)H. 264字節(jié)流的過程。更具體地,圖30示出了連接流A (150)中的子流a (153)與流B中的子流b (163)以產(chǎn)生比特流C (170)的過程。流A (150)包括SPS 110 的字節(jié)流 NAL 單元(SPS-BNU) 151、PPSlll 的字節(jié)流 NAL單元(PPS-BNU) 152、以及將要與子流b (163)連接的場景的子流a (153)。子流a (153)和子流b(163)中的每一個(gè)均包含一個(gè)或更多個(gè)包括字節(jié)/NAL報(bào)頭(例如,101)、片報(bào)頭(例如,120)和片數(shù)據(jù)(例如,121)的集合。在該示例中,假設(shè)流A(150)和流B(160)包含IDR(瞬時(shí)解碼刷新)圖像,所有IDR圖像的碼尺寸在流A(150)與流B(160)中是相同的。還假設(shè)SPS和PPS處于字節(jié)流的開頭。H. 264標(biāo)準(zhǔn)將idr_pic_id用作IDR圖像標(biāo)識(shí)符(ID)。如圖23所示,idr_pic_id存在于片報(bào)頭中,并且包含VLC值。為了確保流兼容性,H. 264標(biāo)準(zhǔn)要求將相鄰IDR圖像的idr_pic_id設(shè)置為不同的值?;谇笆黾僭O(shè),為了確??勺x性和兼容性,通過在連接子流a (153)與子流b(163)的同時(shí),將位于流連接處的圖像中的所有片報(bào)頭中所包含的idr_pic_id重寫成相鄰圖像中的不同值,連接子流a(153)與子流b(163)的過程產(chǎn)生了新的字節(jié)流C(170)。更具體地,在連接流之前,為流A(150)和流B(160)中的相鄰圖像中的每一個(gè)指定不同的idr_pic_id, 并且還需要確保在連接流之后,也為位于流連接處的相鄰圖像指定不同的idr_pic_id。
發(fā)明內(nèi)容
為了保證位于兩個(gè)流的連接處(以下還稱作“接縫”)的、新出現(xiàn)的每個(gè)相鄰圖像中的idr_pic_id是不同的,必須在連接了流之后,立即重寫位于接縫處的相鄰圖像中的idr_pic_id 值。idr_pic_id值是通過VLC獲得的。當(dāng)對(duì)一個(gè)IDR圖像中的idr_pic_id值進(jìn)行重寫,以使該idr_pic_id與相鄰IDR圖像中的idr_pic_id不同時(shí),idr_pic_id碼字的長度可能在改變值之前或之后有所不同。這可能需要對(duì)跟隨idr_pic_id的數(shù)據(jù)進(jìn)行修改,并且過程變得越來越復(fù)雜。例如,如圖31所示,為了將不同的idr_pic_id指定給位于記錄于記錄介質(zhì)的流的連接處的相鄰IDR圖像,需要將地址0x80002處的idr_pic_id的碼字011改成碼字00101。因?yàn)樵诟淖僫dr_pic_id之后碼字00101比原始的idr_pic_id的碼字011長2比特,所以還必須在重寫過程中,將從地址0x80002開始的所有數(shù)據(jù)移位2比特。還必須將該比特移位過程應(yīng)用于以線性地址對(duì)幾比特長度的數(shù)據(jù)進(jìn)行管理的所有記錄介質(zhì),包括諸如半導(dǎo)體存儲(chǔ)器之類的主記錄介質(zhì)、以及諸如硬盤驅(qū)動(dòng)器之類的輔記錄介質(zhì)。如以上描述的,在對(duì)根據(jù)H. 264標(biāo)準(zhǔn)編碼的多個(gè)字節(jié)流進(jìn)行連接時(shí),必須對(duì)記錄介質(zhì)上的片報(bào)頭中所包含的idr_pic_id進(jìn)行重寫,以保證兼容性和再現(xiàn)流的能力。然而,當(dāng)必須將idr_pic_id重寫為不同長度的碼字時(shí),必須運(yùn)行以上描述的比特移位過程,并且必須重寫數(shù)據(jù)區(qū)。重寫數(shù)據(jù)區(qū)帶來的問題是在CPU功率有限或記錄介質(zhì)的存取速度較低的情況下,處理可能會(huì)花費(fèi)很長時(shí)間。另一問題是在期望對(duì)記錄介質(zhì)(如光盤介質(zhì))的重寫進(jìn)行限制的情況下,不必要地重寫介質(zhì)可能會(huì)縮短記錄介質(zhì)的使用壽命。對(duì)也包含在片報(bào)頭中的pic_parameter_set的重寫也可能會(huì)引起這些類似的問題。解決手段本發(fā)明旨在解決以上問題,并且目的是提供一種編碼裝置,例如,能夠消除對(duì)符合
H.264標(biāo)準(zhǔn)的字節(jié)流進(jìn)行連接時(shí)的不必要數(shù)據(jù)重寫,以及一種編輯設(shè)備,能夠抑制連接字節(jié)流時(shí)的CPU處理負(fù)載和記錄介質(zhì)的重寫次數(shù)。根據(jù)本發(fā)明的編碼設(shè)備是用于對(duì)輸入數(shù)字信號(hào)進(jìn)行編碼以產(chǎn)生流的設(shè)備。編碼設(shè)備包括編碼單元,用于使用包含在多個(gè)碼字組之一中的碼字對(duì)輸入數(shù)字信號(hào)進(jìn)行編碼,其中所述多個(gè)碼字組中的每一個(gè)均包括可變長度碼字;以及復(fù)用器,用于通過產(chǎn)生描述與流有關(guān)的特定信息的參數(shù)、對(duì)所述參數(shù)進(jìn)行編碼、以及將編碼后的參數(shù)添加到編碼單元的輸出數(shù)據(jù)中,來產(chǎn)生所述流。包含在任意單個(gè)碼字組中的碼字的長度是相同的。復(fù)用器從多個(gè)碼字組中選擇出包含三個(gè)或更多個(gè)碼字在內(nèi)的一個(gè)碼字組,以及使用從所選擇的碼字組中包含的碼字中選擇的一個(gè)碼字對(duì)所述參數(shù)進(jìn)行編碼。 根據(jù)本發(fā)明的編輯設(shè)備是用于對(duì)包含可變長度編碼后的參數(shù)在內(nèi)的第一和第二流進(jìn)行連接的設(shè)備。所述編輯設(shè)備包括判決單元,用于將第一流中包含的編碼后的第一參數(shù)與第二流中包含的編碼后的第二參數(shù)相比較,判定是否將要改變第一參數(shù)和第二參數(shù)中的至少一個(gè);以及替換單元,用于在判決單元判定將要改變第一參數(shù)和第二參數(shù)中的至少一個(gè)的情況下,將第一和第二參數(shù)中的所述至少一個(gè)替換成與為第一和第二參數(shù)而指定的碼字相同長度的另一碼字。因?yàn)榧词垢淖兞藚?shù)也不改變參數(shù)的碼長,本發(fā)明的編碼設(shè)備實(shí)質(zhì)上消除了對(duì)包含可變長度編碼后的參數(shù)在內(nèi)的流(如H. 264標(biāo)準(zhǔn)字節(jié)流)進(jìn)行連接時(shí)的不必要數(shù)據(jù)重寫操作。進(jìn)一步根據(jù)本發(fā)明,如果在連接流時(shí),必須對(duì)包含可變長度編碼后的參數(shù)在內(nèi)的報(bào)頭進(jìn)行重寫,并且通過使用具有與被重寫的原始報(bào)頭相同碼長的碼字能夠保證兼容性,則本發(fā)明的編輯設(shè)備將位于流連接處的報(bào)頭中的碼字替換成相同長度的碼字。相反,如果相同長度的碼字不可用,則編輯設(shè)備重寫報(bào)頭,使得特定數(shù)據(jù)單元的數(shù)據(jù)長度不變。因此,本發(fā)明提供了一種編輯設(shè)備,該編輯設(shè)備通過重寫報(bào)頭而不引起不必要的數(shù)據(jù)重寫,在編輯和連接流時(shí)減小了 CPU的負(fù)載,并且減少了記錄介質(zhì)寫入操作的次數(shù)。通過結(jié)合附圖,參考以下說明書和權(quán)利要求書,本發(fā)明的其他目的和優(yōu)點(diǎn)以及對(duì)本發(fā)明的充分理解將變得更加清楚和顯而易見。
圖I是本發(fā)明第一實(shí)施例中的視頻編碼電路的方框圖;圖2描述了在本發(fā)明第一實(shí)施例中對(duì)idr_pic_id的編碼;圖3描述了在本發(fā)明第一實(shí)施例中連接流的過程;圖4示出了本發(fā)明第一實(shí)施例中的視頻記錄設(shè)備;圖5是本發(fā)明第一實(shí)施例中的視頻記錄設(shè)備的方框圖;圖6示出了本發(fā)明第二實(shí)施例中的、用于存儲(chǔ)和管理圖像參數(shù)集合的表格;圖7描述了在本發(fā)明第二實(shí)施例中對(duì)pic_parameter_set_id的編碼;圖8描述了在本發(fā)明第二實(shí)施例中連接流的過程;圖9描述了在本發(fā)明第二實(shí)施例中連接流的過程;圖10示出了根據(jù)本發(fā)明第三實(shí)施例的視頻編輯設(shè)備;圖11是根據(jù)本發(fā)明第三實(shí)施例的視頻編輯設(shè)備的方框圖;圖12示出了根據(jù)本發(fā)明第三實(shí)施例的、在視頻編輯設(shè)備中顯示的編輯窗口的示例;圖13是本發(fā)明第三實(shí)施例中的流連接過程的流程圖;圖14是本發(fā)明第三實(shí)施例中的SPS和PPS讀取和產(chǎn)生步驟的流程圖;圖15是本發(fā)明第三實(shí)施例中的ID重寫過程的流程圖;圖16描述了本發(fā)明第三實(shí)施例中的ID重寫過程;圖17描述了本發(fā)明第三實(shí)施例中的ID重寫過程;圖18示出了本發(fā)明第三實(shí)施例中的FAT文件系統(tǒng)的卷結(jié)構(gòu);圖19示出了本發(fā)明第三實(shí)施例中的FAT文件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu);圖20描述了本發(fā)明第三實(shí)施例中將流作為文件記錄到記錄介質(zhì)中;圖21示出了 H. 264標(biāo)準(zhǔn)的SPS語法;圖22示出了 H. 264標(biāo)準(zhǔn)的PPS語法;圖23示出了 H. 264標(biāo)準(zhǔn)的片報(bào)頭語法;圖24示出了對(duì)ue (v)描述符進(jìn)行可變長度編碼的編碼規(guī)則;圖25示出了對(duì)se (v)描述符進(jìn)行可變長度編碼的編碼規(guī)則;圖26示出了 H. 264標(biāo)準(zhǔn)中NAL單元的語法;圖27示出了 H. 264標(biāo)準(zhǔn)中片層的語法;圖28示出了 H. 264標(biāo)準(zhǔn)中片數(shù)據(jù)的語法;圖29示出了 H. 264標(biāo)準(zhǔn)中字節(jié)流NAL單元的語法;圖30描述了本發(fā)明第一實(shí)施例的基本字節(jié)流連接過程;圖31描述了根據(jù)現(xiàn)有技術(shù)的流編輯。
具體實(shí)施例方式以下,參考附圖描述本發(fā)明的優(yōu)選實(shí)施例。實(shí)施例II、視頻編碼設(shè)備的配置本實(shí)施例以下描述了一種視頻編碼設(shè)備,其在對(duì)使用IDR(瞬時(shí)解碼刷新)圖像編碼的多個(gè)字節(jié)流進(jìn)行連接時(shí),控制字節(jié)流,以便不必將作為IDR圖像標(biāo)識(shí)符(ID)的idr_pic_id重寫為不同碼長的碼字。圖I示出了根據(jù)本發(fā)明這一實(shí)施例的、包含在視頻編碼設(shè)備中的視頻編碼電路。該視頻編碼電路700包括報(bào)頭發(fā)生器和復(fù)用電路701、DCT電路710、逆DCT電路711、量化電路720、逆量化電路721、量化步長選擇電路730、熵編碼電路740、幀內(nèi)預(yù)測電路750、幀間預(yù)測電路760、運(yùn)動(dòng)預(yù)測電路761、以及去塊效應(yīng)濾波器電路770。在僅對(duì)IDR圖像編碼時(shí),不需要運(yùn)動(dòng)預(yù)測電路761和幀間預(yù)測電路760。2、視頻編碼電路的操作接下來,描述視頻編碼電路700的操作。首先,描述對(duì)幀內(nèi)宏塊的編碼,其中能夠僅使用包含在相同幀中的數(shù)據(jù)來對(duì)所述幀內(nèi)宏塊進(jìn)行解碼。通常,宏塊是16x16的像素塊,并包括多個(gè)塊,所述塊作為DCT和幀內(nèi)預(yù)測編碼的單位。針對(duì)輸入數(shù)字視頻信號(hào)790中將要編碼的宏塊(“目標(biāo)宏塊”)與由幀內(nèi)預(yù)測電路750預(yù)測的目標(biāo)宏塊之間的每個(gè)像素,計(jì)算像素差值,得到16x16的像素差值塊。DCT電路710對(duì)差值塊應(yīng)用DCT處理。通常,將該處理應(yīng)用于4x4或8x8的像素塊,并且輸出頻率分量轉(zhuǎn)換系數(shù)。將轉(zhuǎn)換系數(shù)輸入到量化電路720中,并進(jìn)行量化。然后,由熵編碼電路740對(duì)量化后的轉(zhuǎn)換系數(shù)進(jìn)行編碼。在H. 264標(biāo)準(zhǔn)中,熵編碼使用上下文自適應(yīng)可變長度編碼(CAVLC)或上下文自適應(yīng)二進(jìn)制算術(shù)編碼(CABAC)。將熵編碼后的碼尺寸輸入到量化步長選擇電路730。量化步長選擇電路730對(duì)量化電路720的量化步長值加以控制,以使得碼尺寸趨近于目標(biāo)碼尺寸。在量化之后,利用逆量化電路721和逆DCT電路711對(duì)所述系數(shù)進(jìn)行解碼,并且輸入至幀內(nèi)預(yù)測電路750。幀內(nèi)預(yù)測電路750針對(duì)隨后編碼的相鄰宏塊,產(chǎn)生預(yù)測的像素值。接下來,描述使用幀間預(yù)測對(duì)幀間宏塊的編碼。運(yùn)動(dòng)預(yù)測電路761對(duì)當(dāng)前編碼的塊(該塊是用于運(yùn)動(dòng)補(bǔ)償?shù)膯挝?和基準(zhǔn)幀的像素應(yīng)用匹配處理,并且計(jì)算產(chǎn)生最小誤差 的矢量。計(jì)算在由幀間預(yù)測電路760根據(jù)運(yùn)動(dòng)預(yù)測的結(jié)果而輸出的目標(biāo)宏塊的預(yù)測像素值與輸入數(shù)字視頻信號(hào)790中的目標(biāo)宏塊的像素值之間的誤差,并且將所述誤差輸入至DCT電路710。在輸入至DCT電路710之后的處理基本上與針對(duì)幀內(nèi)宏塊編碼的相同。然而,在中貞間編碼中,通常,去塊效應(yīng)濾波器電路770用于減小可視塊失真。報(bào)頭發(fā)生器和復(fù)用電路701產(chǎn)生片報(bào)頭,將片報(bào)頭添加到由熵編碼電路740編碼的片數(shù)據(jù)中,并且將結(jié)果作為字節(jié)流NAL單元791輸出。此時(shí),報(bào)頭發(fā)生器和復(fù)用電路701將idr_pic_id合并到片報(bào)頭中。在根據(jù)本發(fā)明實(shí)施例的視頻編碼電路700中,報(bào)頭發(fā)生器和復(fù)用電路701在向圖像添加idr_pic_id時(shí),根據(jù)圖24所示的編碼規(guī)則來指定碼字。圖24所示的編碼規(guī)則將數(shù)據(jù)值(codeNum)分成多個(gè)范圍(組),在每個(gè)范圍(組)中碼字長度是相同的,然而在一個(gè)范圍(組)中的碼字的長度與另一個(gè)范圍(組)中的碼字長度不同。例如,針對(duì)范圍3至6中的所有數(shù)據(jù)值的碼字是5比特長,然而針對(duì)范圍7至14中的所有數(shù)據(jù)值的碼字是7比特。更具體地,為了添加idr_pic_id,本發(fā)明的這一實(shí)施例中的視頻編碼電路700 (更具體地,報(bào)頭發(fā)生器和復(fù)用電路701)選擇一個(gè)范圍(其中在多個(gè)codeNum值的范圍中存在3個(gè)或更多個(gè)碼字),選擇包含在所選范圍中的多個(gè)碼字之一,并且將選擇的碼字指定給idr_pic_id。例如,參考圖24,選擇codeNum范圍(每個(gè)包括5比特或更大比特長度的碼字)之一ο也就是,選擇與“ΟΟΙχ^ ΟΟΙχαχ?!?、和UOOOOIX3X2X1Xq'…相對(duì)應(yīng)的codeNum范圍之一。如果選擇了數(shù)據(jù)值3至6(001xlX(l)的范圍,則將idr_pic_id的值指定為3、4、5或6。圖2描述了在選擇了 codeNum 3 6的范圍以指定idr_pic_id時(shí)、指定idr_pic_id的示例。在產(chǎn)生流A(150)和流B(160)時(shí),視頻編碼電路700根據(jù)以下方程確定為第i個(gè)(其中i是大于O的整數(shù))IDR圖像的片報(bào)頭指定的idr_pic_id的值idr_pic_id = 3+ (i % 3)其中%是返回余數(shù)的算子。在H. 264標(biāo)準(zhǔn)中,要求相鄰IDR圖像中的idr_pic_id是不同的。如圖24所示,如果codeNum是3至6的值,則idr_pic_id的碼字是5比特長。因此,如果使用相同范圍中的碼字來重寫idr_pic_id的值,則碼字長度將不會(huì)改變。因此,如果使用該編碼方法來連接圖2中所示的子流a(153)和子流b (163),并且位于流連接處的相鄰圖像#m+3和#n將具有相同的idr_pic_id,于是可以容易地將idr_pic_id改變成不同的值。在該示例中,圖像#m+3和圖像#n具有相同的idr_pic_id(該示例中是3),圖像#n+l的idr_pic_id是4。因此,將圖像#n的idr_pic_id變成5。通過使用codeNum范圍(其中存在3個(gè)或更多個(gè)相同長度的碼字)中的值,能夠?qū)D像#n的idr_pic_id重寫為與相鄰圖像#m+3和#n+l的idr_pic_id不同的、相同長度的值(該示例中是5)。注意,盡管圖2中的子流a(153)和子流b(163)都是4個(gè)圖像長,然而顯而易見的是,能夠以相同的方式重寫idr_pic_id,而與子流中圖像的個(gè)數(shù)無關(guān)。本發(fā)明的這一實(shí)施例中的視頻編碼電路700不需要使用與用于針對(duì)所有編碼后的流指定idr_pic_id的codeNum范圍相同的codeNum范圍。僅在諸如圖像的水平像素計(jì)數(shù)、垂直像素計(jì)數(shù)、以及比特率之類的參數(shù)相同的情況下,或在連接有顯著影響(significant)的情況下,才需要選擇相同的范圍。例如,能夠以2個(gè)不同的比特率(高比特率和低比特率)來對(duì)內(nèi)容進(jìn)行編碼,其中高比特率流是主要內(nèi)容,而低比特率流用于視 頻預(yù)覽。因?yàn)樵谠撉闆r下不需要連接低比特率流,所以可以使用idr_pic_id =i%2,以使低比特率內(nèi)容的碼長最小,而將idr_pic_id = 3+(i% 3)用于高比特率內(nèi)容。3、記錄設(shè)備圖4不出了具有上述視頻編碼電路700的視頻記錄設(shè)備。該視頻記錄設(shè)備600利用所包含的視頻編碼電路700對(duì)通過鏡頭691和麥克風(fēng)692輸入的視頻和音頻信息進(jìn)行編碼,并將編碼后的流記錄到插入驅(qū)動(dòng)器690中的記錄介質(zhì)500上。圖5是視頻記錄設(shè)備600的方框圖。如圖5所不,視頻記錄設(shè)備600具有鏡頭691、麥克風(fēng)692、成像元件687、A/D轉(zhuǎn)換電路688和689、音頻處理電路686、CPU 681、存儲(chǔ)器682、非易失性存儲(chǔ)器683、總線控制器685和視頻編碼電路700。CPU 681控制視頻記錄設(shè)備600的操作。非易失性存儲(chǔ)器683存儲(chǔ)由CPU 681運(yùn)行的程序??偩€控制器685控制記錄介質(zhì)500的輸入/輸出。由鏡頭691將視頻信息光聚焦在成像元件687上。成像元件687將成像信息轉(zhuǎn)換成電信號(hào)。A/D轉(zhuǎn)換電路688將電信號(hào)轉(zhuǎn)換成數(shù)字視頻信號(hào)。然后,視頻編碼電路700將數(shù)字視頻信號(hào)編碼成H. 264標(biāo)準(zhǔn)字節(jié)流,并將H. 264標(biāo)準(zhǔn)字節(jié)流記錄到記錄介質(zhì)500上。然后,可以在記錄完成之后,由編輯設(shè)備(稍后描述)對(duì)記錄到記錄介質(zhì)500上的字節(jié)流進(jìn)行編輯。4、結(jié)論如上所述,本發(fā)明的這一實(shí)施例提供了一種視頻編碼設(shè)備,能夠減小在對(duì)使用IDR圖像編碼的多個(gè)字節(jié)流進(jìn)行連接時(shí)、編輯期間的處理器負(fù)載。在假設(shè)所有圖像都是IDR圖像的前提下,描述了本發(fā)明這一實(shí)施例,然而本發(fā)明不限于此。顯而易見的是,在以上描述的假設(shè)(例如,當(dāng)位于兩個(gè)流的連接處的相鄰圖像是IDR圖像時(shí))不成立的情況下,也可以使用本發(fā)明。在前述實(shí)施例的描述過程中還假設(shè)所有圖像的碼尺寸相同或能夠保持對(duì)虛擬基準(zhǔn)解碼器的緩沖器約束,然而視頻編輯也可以采用以下操作來滿足緩沖器約束。*如果在流連接之前,在子流a(153)結(jié)束之后的緩沖器占用率VA比剛好在子流b(163)開始之前的緩沖器占用率VB大,則可以在子流a(153)結(jié)束之后立即插入(VA-VB)字節(jié)的trailing_zero_8bits (填充比特),使得緩沖器占用率變成VB。*如果VA小于VB,則例如,可以對(duì)處于子流a(153)末尾的幾幅圖像進(jìn)行重新編碼,使得緩沖器占用率變成VB。該方法使得本發(fā)明的構(gòu)思可用,而與以上假設(shè)無關(guān)。本發(fā)明的這一實(shí)施例還假設(shè)SPS或PPS僅位于字節(jié)流的開始,然而PPS不需要處于字節(jié)流的開始,并且如果子流b (163)的SPS不與子流a(153)的SPS相同,則子流b (163)的SPS也不需要處于開始。通過示例,使用對(duì)idr_pic_id的編碼描述了本發(fā)明,然而本發(fā)明可以用于對(duì)包括SPS、PPS和片報(bào)頭在內(nèi)的任一參數(shù)的VLC編碼語法進(jìn)行編碼。這一實(shí)施例還假設(shè)出現(xiàn)字節(jié)流,然而復(fù)用NAL單元的實(shí)施例并不受此限制。 實(shí)施例2下述本實(shí)施例描述了一種視頻編碼設(shè)備,用于對(duì)多個(gè)字節(jié)流進(jìn)行連接和編碼,而不需要重寫作PPS (圖像參數(shù)集合)的標(biāo)識(shí)符的pic_parameter_set_id。這一實(shí)施例在連接多個(gè)字節(jié)流(其中對(duì)多個(gè)PPS進(jìn)行編碼)時(shí)尤為有用。視頻編碼設(shè)備的基本配置與上述本發(fā)明第一實(shí)施例中的相同。在本發(fā)明的這一實(shí)施例中,報(bào)頭發(fā)生器和復(fù)用電路701產(chǎn)生和管理PPS內(nèi)容與pic_parameter_set_id ( “PPSID”)值的組合。更具體地,根據(jù)本發(fā)明這一實(shí)施例,如果對(duì)于由視頻編碼設(shè)備產(chǎn)生的流中的所有編碼后的PPS而言,語法是不同的,則編碼過程為每個(gè)PPS指定不同的PPSID。圖6是報(bào)頭發(fā)生器和復(fù)用電路701中用于產(chǎn)生和管理PPS的表格。當(dāng)PPS語法值不同時(shí),指定不同的 PPSID。如果創(chuàng)建了 pic_init_cip_minus26 = 10 且除了 pic_init_cip_minus26以外的語法均與PPSID = O的PPS相同的PPS,則添加PPSID = I的新PPS0類似地,如果創(chuàng)建了 chroma_cip_index_offset = 3 且除了 chroma_cip_index_offset 以外的語法均與PPSID = O的PPS相同的PPS,則添加PPSID = 2的PPS0如果創(chuàng)建了 pic_init_qp_minus26 = 10>chroma_qp_index_offset = 3 且除了 pic_init_qp_minus26 和 chroma_qp_index_offset以外的語法均與PPSID = O的PPS相同的PPS,則所創(chuàng)建的PPS與PPSID =
0、1和2的PPS不同,因此,添加PPSID = 3的PPS。這樣,對(duì)PPS管理表格進(jìn)行更新,以便為PPS指定唯一的PPSID。視頻編碼設(shè)備的報(bào)頭發(fā)生器和復(fù)用電路701可以參考PPS管理表格(如圖6所示)指定唯一的、不重復(fù)的PPSID值。接下來,參考圖7描述報(bào)頭發(fā)生器和復(fù)用電路701指定PPSID的過程。如果需要PPSID = O和I的2個(gè)不同PPS以在流A(150)中進(jìn)行編碼,則輸出2個(gè)PPS,并且輸出要在片報(bào)頭中引用的PPSID值。類似地,對(duì)于編碼流B(160),如果需要PPSID = 0、2和3的3個(gè)不同的PPS,則輸出3個(gè)PPS,并且輸出要在片報(bào)頭中引用的PPSID值。重要的是,在流A (150)和流B (160)中,始終唯一地定義PPSID值。圖8描述了使用視頻編輯設(shè)備對(duì)圖7中的子流a(153)和子流b(163)進(jìn)行連接的示例。首先,輸出連接流之后所需要的所有PPS。這是因?yàn)?,如果使用根?jù)本發(fā)明這一實(shí)施例的視頻編碼設(shè)備,則片報(bào)頭中的PPSID是唯一的。因此,能夠連接流而不用重寫可變長度編碼后的PPSID值。因?yàn)閷PSID重寫為不同長度碼字的處理負(fù)載與流長度成比例地增加,所以本發(fā)明因?yàn)椴恍枰貙慞PSID參數(shù)而變得尤為有效。在圖7和圖8中,在SPS之后立即輸出PPS,然而如圖9所示,可以緊接在包含第一個(gè)PPSID的圖像之前插入PPS。如以下在第四實(shí)施例中描述的,并不總是將唯一的PPSID指定給由如圖6所示的、這一實(shí)施例的視頻編碼設(shè)備編碼的所有流。僅在諸如圖像的水平像素計(jì)數(shù)、垂直像素計(jì)數(shù)和比特率之類的參數(shù)相同的情況下,或在連接有顯著影響的情況下,才需要選擇唯一的PPSID。如上所述,本發(fā)明的這一實(shí)施例提供了一種視頻編碼設(shè)備,能夠減小在對(duì)包含多個(gè)編碼后的圖像參數(shù)集合在內(nèi)的多個(gè)字節(jié)流進(jìn)行連接時(shí)的處理器負(fù)載。實(shí)施例3本發(fā)明的這一實(shí)施例描述了一種視頻編輯設(shè)備,能夠?qū)DR圖像進(jìn)行編碼,而不復(fù)制位于接縫處的圖像的idr_pic_id,并且能夠在對(duì)采用IDR圖像 編碼的多個(gè)字節(jié)流進(jìn)行連接時(shí),使記錄介質(zhì)上要進(jìn)行值重寫的區(qū)域最小。I、視頻編輯設(shè)備的配置圖10示出了根據(jù)本發(fā)明的這一實(shí)施例的視頻編輯設(shè)備。使用計(jì)算機(jī)502實(shí)施該視頻編輯設(shè)備501。計(jì)算機(jī)502具有用于訪問包含視頻數(shù)據(jù)在內(nèi)的記錄介質(zhì)500的內(nèi)部驅(qū)動(dòng)器509或外部驅(qū)動(dòng)器591。例如,記錄介質(zhì)500是諸如存儲(chǔ)卡、光盤、或可移動(dòng)硬盤驅(qū)動(dòng)器之類的計(jì)算機(jī)可讀介質(zhì)。能夠利用網(wǎng)絡(luò)電纜594或無線地將計(jì)算機(jī)502連接到網(wǎng)絡(luò),以發(fā)送和接收視頻數(shù)據(jù)。還將顯示器592和諸如鼠標(biāo)和鍵盤之類的輸入設(shè)備593連接到計(jì)算機(jī)502,以便由用戶來進(jìn)行視頻編輯。圖11是視頻編輯設(shè)備501的方框圖。視頻編輯設(shè)備501具有CPU581、存儲(chǔ)器582、用于存儲(chǔ)程序和操作系統(tǒng)(OS)的硬盤驅(qū)動(dòng)器583、以及連接這些和其它設(shè)備的內(nèi)部總線584。硬盤驅(qū)動(dòng)器583存儲(chǔ)程序和操作系統(tǒng)。視頻編輯設(shè)備501還具有用于連接記錄介質(zhì)500的總線控制器585、用于通過網(wǎng)絡(luò)輸入和輸出視頻數(shù)據(jù)的網(wǎng)絡(luò)控制器588、用于連接顯示器592的圖形控制器587、以及用于連接輸入設(shè)備593的輸入設(shè)備控制器586。例如,可以使用ATA(AT附加)或USB(通用串行總線)接口來連接記錄介質(zhì)500。將OS和程序存儲(chǔ)在硬盤驅(qū)動(dòng)器583上,并且由CPU 581根據(jù)需要將其載入存儲(chǔ)器582并運(yùn)行。利用在OS下運(yùn)行的適當(dāng)程序來實(shí)現(xiàn)視頻編輯設(shè)備501的視頻編輯功能。圖12示出了在視頻編輯設(shè)備501的顯示器592上顯示的窗口屏幕的示例。顯示器592顯示用于視頻編輯的時(shí)間線571、用于音頻編輯的時(shí)間線572、用于顯示再現(xiàn)的視頻內(nèi)容的預(yù)覽窗口 573、以及用于顯示捕獲的視頻內(nèi)容的列表的庫窗口 574。用戶使用輸入設(shè)備593選擇在庫窗口 574中顯示的多個(gè)視頻內(nèi)容流,并將其拖入視頻時(shí)間線571以輸出(呈現(xiàn))完成的文件,來連接字節(jié)流。對(duì)該過程的以下描述假設(shè)將圖30所示的子流a(153)和子流b(163)存儲(chǔ)在諸如存儲(chǔ)器582、硬盤驅(qū)動(dòng)器583、記錄介質(zhì)500、或由圖11所示的網(wǎng)絡(luò)控制器588連接的網(wǎng)絡(luò)驅(qū)動(dòng)器之類的記錄介質(zhì)中。在這樣的記錄介質(zhì)上產(chǎn)生連接了子流a(153)和子流b(163)的字節(jié)流C(170)。因此,可以通過簡單地重寫記錄介質(zhì)上的目錄管理信息,以便連接子流a (153)和子流b (163),理想地產(chǎn)生字節(jié)流C (170)。本發(fā)明的這一實(shí)施例涉及用于重寫idr_pic_id的ID重寫過程。按照以下方式進(jìn)行重寫idr_pic_id的過程。在對(duì)使用IDR圖像編碼的多個(gè)字節(jié)流進(jìn)行連接時(shí),ID重寫過程改變與接縫相鄰的圖像的圖像ID(idr_pic_id),從而使idr_pic_id值不相同,并且可以通過重寫記錄介質(zhì)上盡可能小的區(qū)域,使其不同。2、流連接過程接下來,參考圖13中的流程圖描述根據(jù)本發(fā)明這一實(shí)施例的、視頻編輯設(shè)備的流連接過程。首先,執(zhí)行讀取和產(chǎn)生SPS和PPS的過程(S11)。在該示例中,讀取流A(150)的SPS-BNU 151 和流 B(160)的 SPS-BNU 161,以產(chǎn)生字節(jié)流 C(153)的 S PS-BNU 171。如果字節(jié)流 C(153)的 SPS-BNU 171 與字節(jié)流 A(150)的 SPS-BNU 151 或流B(160)的 SPS-BNU 161相同,則不需要在記錄介質(zhì)上創(chuàng)建新的SPS-BNU 171。類似地,讀取流A(150)的PPS-BNU152 和流 B(160)的 PPS-BNU 162,以產(chǎn)生字節(jié)流 C(170)的 PPS-BNU 172。然后,讀取子流a(153)中最后一幅圖像的ID(id_Alast)(步驟S12),讀取子流b(163)中的第一幅圖像的ID(id_Bl)(步驟S13),以及讀取子流b(163)中的第二幅圖像的ID(id_B2)(步驟 S14)??梢园凑找韵路绞将@得流ID (也就是idr_pic_id)。首先,在流中搜索start_code_prefix_one_3bytes (圖29),并確定包含在NAL單元(圖26)中的nal_unit_type的值,以找出包含片層的NAL單元??梢酝ㄟ^解譯片層的片報(bào)頭,來找出idr_pic_id。然后,重寫ID (SI5)。在相鄰圖像中的idr_pic_id相同的情況下,該過程重寫idr_pic_id。然后,更新目錄管理信息(步驟S16)。該過程將SPS、PPS、子流a(153)、和子流b(163)連接成單個(gè)流,然后結(jié)束。還更新目錄管理信息,以將SPS和PPS添加到流A中除了子流a(153)的其他部分(150)中,以及添加到流B(160)中除了子流b(163)的其他部分中,以呈現(xiàn)字節(jié)流。接下來,參考圖14中的流程圖描述讀取和產(chǎn)生SPS和PPS的過程(圖13中的步驟 Sll)。讀取流A(150)的 SPS 110 和流 B (160)的 SPS (Slll,S112)。然后,比較兩個(gè) SPS,以確定是否能夠共享這兩個(gè)SPS(S113)。按照以下步驟進(jìn)行上述確定。首先,如果兩個(gè)SPS是相同的字節(jié)串,則確定能夠共享這兩個(gè)SPS。其次,如果僅這兩個(gè) SPS 的 seq_parameter_set_id 不同,則確定能夠共享 SPS,并將 seq_parameter_set_id設(shè)置為兩個(gè)SPS中任一 SPS的seq_parameter_set_id值。在任何其它情況下,確定不能共享這兩個(gè)SPS。如果確定能夠共享SPS,則輸出公共SPS (SI 14)。如果確定不能夠共享,則輸出流A的SPS和流B的SPS (SI 19,S120)。讀取流A (150)的PPS和流B (160)的PPS (SI 15,SI 16)。比較這兩個(gè)PPS,以確定是否能夠共享這兩個(gè)PPS(SI 17)。按照以下方式進(jìn)行上述確定。首先,如果兩個(gè)PPS是相同的字節(jié)串,則確定能夠共享這兩個(gè)PPS。然而,如果在步驟SI 13中,SPS的seq_parameter_set_id值不同,則PPS絕對(duì)不會(huì)是相同的字節(jié)串。其次,如果僅這兩個(gè)PPS的pic_parameter_set_id不同,則確定能夠共享這兩個(gè)PPS,并且將pic_parameter_set_id 設(shè)置為兩個(gè) PPS 中任一 PPS 的 pic_parameter_set_id 值。在任何其它情況下,確定不能夠共享這兩個(gè)PPS。如果確定能夠共享PPS,則輸出公共PPS (SI 18)。如果確定不能共享,則輸出流A的PPS和流B的PPS(S121,S122)。
如果流A中除了子流a (153)的其他部分(150)和流B (160)中除了子流b (163)的其他部分仍作為字節(jié)流保留在記錄介質(zhì)上,則必須將根據(jù)記錄介質(zhì)上的最終流個(gè)數(shù)而確定的SPS和PPS的個(gè)數(shù)輸出至記錄介質(zhì)500。接下來,參考圖15中的流程圖描述重寫圖像ID(圖13中的步驟S15)的過程。CPU 581比較子流b中的第一幅圖像的ID(id_Bl)和子流a中最后一幅圖像的ID(id_Alast),并且確定它們是否重疊(相同)(S151)。如果ID不重疊,則ID重寫過程結(jié)束。如果ID重疊,則按照以下描述繼續(xù)進(jìn)行操作。確定是否存在具有與id_Bl相同并且與ID_Alast或id B2不同的碼長的ID(S152)。例如,使用如圖 24 所示的 VLC,如果 id_Alast = 7,id_Bl = 7 并且 id_B2 = 10,則值8、9、11、12、13、14是具有與id_Bl相同并且與id_Alast或id B2不同的碼長的ID (碼字)。如果這樣的ID可用,則將id_Bl重寫為所述ID(S157)。如果這樣的ID不可用(如 當(dāng)id_Alast = I, id_Bl = I并且id_B2 = 2時(shí)),則可以改變片報(bào)頭的長度。在這種情況下,將包含在codeNum范圍中的、與id_Alast和id_Bl不同的碼字指定給id_Bl。然后,在子流b(163)的第一幅圖像中包含的所有片中,確定entropy_coding_mode_flag是否等于I并且cabac_alignment_one_bit大于或等于I (S153)。在使用上下文自適應(yīng)二進(jìn)制算術(shù)編碼(CABAC)(也就是entropy_coding_mode_flag = I)時(shí),如果在字節(jié)單元中片報(bào)頭的末尾未對(duì)齊,則在片數(shù)據(jù)的開始處存在圖28所示的一個(gè)或更多比特的cabac_alignment_zero_bit。如果在子流b(163)中的第一幅圖像中包含的所有片中cabac_alignment_one_bit ^ I,則減小 I 比特的 cabac_alignment_one_bit,使得能夠米用比現(xiàn)有碼長長一個(gè)比特的碼字來替換id_Bl,而不移位較大的片數(shù)據(jù)。如圖16所示,將id_Bl重寫為尺寸為(當(dāng)前的id_Bl+l比特的碼長)的ID,將直到剛好位于cabac_alignment_one_bit之前的片報(bào)頭120移位I比特(S159)。因此,尺寸為(當(dāng)前的id_Bl的碼長+1比特)的ID將不再與id_Alast或id_B2重復(fù)。在這種情況下,刪除了一個(gè)cabac_alignment_one_bit。注意,在步驟S158中,可以采用比當(dāng)前碼字長N比特(其中N是<7的自然數(shù))的碼字來替換id_Bl。在這種情況下,刪除該片中N個(gè)單位的 cabac_alignment_one_bit。如果步驟S153返回“否”,則確定圖像中trailing_zero_8bits的個(gè)數(shù)是否大于或等于圖像中片的個(gè)數(shù)(S154)。trailing_zero_8bits位于圖29所示的NAL單元(nal_unit)的末尾之后,因此在每個(gè)片層的末尾,存在O個(gè)或更多個(gè)trailing_zero_8bits。如圖17所示,如果在子流b (163)中的第一幅圖像中trailing_zero_8bits的個(gè)數(shù)大于或等于圖像中片的個(gè)數(shù),則將id_Bl重寫為尺寸為(當(dāng)前的id_Bl的碼長+8比特)的ID(S160),將trailing_zero_8bits之前的片層數(shù)據(jù)移位8比特(=I字節(jié))(步驟S161)。在圖17所示的示例中,如果減少緊隨片#1的一個(gè)trailing_zero_8bits,貝U片#1的總碼長不變。即使沒有緊隨片層的trailing_zero_8bits (如在片#1至#3中),也可以將片#1移位I字節(jié),將片#2移位2字節(jié),將片#3移位3字節(jié),以及將片#4移位4字節(jié),并可以減少緊隨片#4的4個(gè)單位的trailing_zero_8bits。因?yàn)樵撨^程不改變圖像的碼長,所以對(duì)下游圖像沒有影響。再次參考圖15,如果圖像中trailing_zero_8bits的個(gè)數(shù)小于圖像中片的個(gè)數(shù),則增大圖像的碼長。步驟S154采用尺寸為(當(dāng)前的id_Bl的碼長+8比特)的ID替換id_BI,然而碼長并不限于該長度。將碼字的尺寸設(shè)置為(當(dāng)前的id_Bl的碼長+8比特)有助于簡化該過程,這是因?yàn)榭梢砸宰止?jié)為單位簡單地移位片層數(shù)據(jù)。將片層數(shù)據(jù)移位步驟sl55中碼長的增加值(S156)。該過程繼續(xù)進(jìn)行,直到使用trailing_zero_8bits吸收了碼長的增加值,或繼續(xù)進(jìn)行直到子流b (163)的末尾。也可以將碼字的增加值設(shè)置為8比特(=I字節(jié))的整數(shù)倍。作為示例,使用簇管理信息,對(duì)圖13的步驟S16中的目錄管理信息更新進(jìn)行描述。簇管理信息記錄了與簇間的鏈接有關(guān)的信息,在所述簇中,將每個(gè)文件的數(shù)據(jù)存儲(chǔ)在盤上,與FAT文件系統(tǒng)中的文件分配表(FAT)相類似。簇是用于對(duì)文件(流)存儲(chǔ)區(qū)進(jìn)行管理的存取單位。一個(gè)文件(流)的記錄區(qū)是一組簇的集合。圖18示出了 FAT文件系統(tǒng)的卷結(jié)構(gòu)。該圖示出了區(qū)域結(jié)構(gòu),在所述區(qū)域結(jié)構(gòu)中,按照FAT文件系統(tǒng),對(duì)設(shè)置在諸如記錄介質(zhì)500之類的物理驅(qū)動(dòng)器800內(nèi)部的e邏輯驅(qū)動(dòng)器801進(jìn)行格式化。文件分配表804是如圖19所示的關(guān)于簇編號(hào)143的表格,并且表明了 記錄在用戶數(shù)據(jù)區(qū)806中的簇單元的數(shù)據(jù)部分144間的鏈接。圖19示出了構(gòu)成了單個(gè)文件145的簇3、4和7的示例。當(dāng)重寫ID(參數(shù))時(shí),僅針對(duì)具有所述ID的簇重寫數(shù)據(jù)。在本發(fā)明實(shí)施例中,在目錄管理信息更新過程(步驟S16)中,在文件分配表805中改變與SPS、PPS、子流a (153)、以及子流b(163)的記錄區(qū)域相對(duì)應(yīng)的簇之間的鏈接,以將SPS、PPS、子流a(153)、以及子流b(163)連接成單個(gè)文件。參考圖20,對(duì)下述情況進(jìn)行描述視頻編碼設(shè)備將用于這一實(shí)施例中的流作為文件記錄到諸如硬盤、光盤之類的記錄介質(zhì)中。如圖20所示,將流A (150)和流B (160)記錄到記錄介質(zhì)500上,使得針對(duì)每個(gè)圖像的數(shù)據(jù)的開始與對(duì)文件系統(tǒng)記錄單元(本實(shí)施例中的簇141)的開始對(duì)齊。在以下情況下,本發(fā)明的這一實(shí)施例尤為有效由于不需要重寫連接后的流,從而將子流a(153)的末尾與子流b (163)的開始按照對(duì)齊的方式進(jìn)行記錄。如果在由視頻編碼設(shè)備對(duì)視頻進(jìn)行編碼時(shí),圖像數(shù)據(jù)塊的末尾未與簇邊界142對(duì)齊,則添加無效數(shù)據(jù)的填充字節(jié)(trailing_zero_8bits) 131。采用以上描述的方法來連接記錄的子流a (153)和子流b (163)。與簇141對(duì)齊的單元不限于圖像。也可以使用片、G0P(圖像組)、或能夠借以連接子流的其它單元。圖20示出了包含在一個(gè)圖像中的2個(gè)片,然而顯然可以在任意個(gè)數(shù)的片的情況下來使用本發(fā)明。在圖像的開始與簇邊界對(duì)齊的情況下,描述了本發(fā)明的這一實(shí)施例,然而也可以在GOP或其它流編輯單元的開始與簇邊界對(duì)齊的情況下來使用本發(fā)明。連接子流a (153)與子流b (163)的接縫也可以與簇邊界對(duì)齊。3、結(jié)論如上所述,在連接包含可變長度編碼的參數(shù)(idr_pic_id)在內(nèi)的流(如H. 264標(biāo)準(zhǔn)字節(jié)流),并且使用與該參數(shù)的可變長度碼字相同碼長的碼字以保證互換性時(shí),這一實(shí)施例對(duì)位于接縫處的圖像的報(bào)頭中的參數(shù)的碼字進(jìn)行重寫,并且在相同長度的碼字不可用的情況下,使重寫數(shù)據(jù)所需的處理器負(fù)載最小。這可以提供一種視頻編輯設(shè)備,能夠?qū)κ褂肐DR圖像編碼的多個(gè)字節(jié)流進(jìn)行連接,而在相鄰圖像中idr_pic_id不重復(fù),并且能夠使記錄介質(zhì)上需要進(jìn)行值重寫的區(qū)域最小。能夠使值重寫區(qū)域最小化的原因在于
I)在能夠利用相同長度的碼字重寫id_Bl時(shí)(S157),僅需要針對(duì)包含在圖像中的所有片來重寫idr_pic_id。2)當(dāng)相同長度的碼字不可用時(shí)(S158),可以使用cabac_alignment_one_bit,而不必重寫較大的片數(shù)據(jù)。3)如果必須重寫片數(shù)據(jù)(S155),則可以通過將id_Bl移位8比特,以字節(jié)為單位來移位片數(shù)據(jù)。本發(fā)明的這一實(shí)施例描述了對(duì)子流b(163)中的第一幅圖像的ID進(jìn)行重寫的情況,然而顯而易見的是,也可以代替地使用相同的過程來重寫子流a(153)中的最后一幅圖像的ID。如果使用子流a (153)能夠減輕ID重寫過程(S15)的負(fù)載,則對(duì)子流a (153)中的最后一幅圖像的ID進(jìn)行重寫是優(yōu)選的。在使用trailing_zero_8bits的情況下描述了本發(fā)明,然而也可以使用cabac_zero_word來代替trailing_zero_8bits,或者可以使用包含NAL單元在內(nèi)的系統(tǒng)流中的其 他無效數(shù)據(jù)。以上,作為示例,使用了根據(jù)H. 264標(biāo)準(zhǔn)來連接流的過程,然而也本發(fā)明也可以用于對(duì)可變長度編碼后的語法進(jìn)行重寫的任何其他視頻編輯設(shè)備。這里,將具有如圖11所示的CPU 581和存儲(chǔ)器582以及在視頻編輯設(shè)備上運(yùn)行的OS和程序的設(shè)備看作視頻編輯設(shè)備,然而顯而易見的是,執(zhí)行上述連接過程的裝置并不局限于這種硬件配置。實(shí)施例4本發(fā)明的這一實(shí)施例是對(duì)第三實(shí)施例進(jìn)行修改后得到的視頻編輯設(shè)備,以在連接多個(gè)字節(jié)流時(shí),正確地重寫pic_parameter_set_id,并且使記錄介質(zhì)上需要進(jìn)行值重寫的區(qū)域最小。該視頻編輯設(shè)備的操作基本上與圖13至圖15的流程圖中描述的第三實(shí)施例的操作相同,不同之處在于將idr_pic_id參數(shù)替換為pic_parameter_set_id。本發(fā)明這一實(shí)施例所應(yīng)用的一個(gè)極端示例是描述特定圖像參數(shù)的PPS在子流a(153)與子流b(163)之間彼此不同,但使用了相同的pic_parameter_set_id。這樣,在圖14所示的SPS/PPS讀取和產(chǎn)生過程Sll中的步驟SI 17確定不能夠共享PPS,步驟SI 12輸出具有改變了流B的PPS中的pic_parameter_set_id的PPS。因?yàn)楦淖兞?PPS的pic_parameter_set_id,所以也必須改變子流b (163)中的所有圖像的片報(bào)頭中所引用的pic_parameter_set_id。在不能重寫為具有不同值的相同長度碼字的情況下,改變子流b (163)的所有片中的可變長度編碼后的pic_parameter_set_id的處理可能需要移位整個(gè)流。本發(fā)明使移位過程最小化,并因而是極為有用的。如上所述,本發(fā)明的這一實(shí)施例提供了一種視頻編輯設(shè)備,能夠在連接多個(gè)字節(jié)流時(shí),正確地重寫pic_parameter_set_id,并使記錄介質(zhì)上需要進(jìn)行值重寫的區(qū)域最小。有利地,本發(fā)明可以用在諸如數(shù)字便攜式攝像機(jī)和記錄器之類的視頻編碼設(shè)備中,以及可以用在對(duì)數(shù)字便攜式攝像機(jī)和記錄器所記錄的視頻流進(jìn)行編輯的視頻編輯設(shè)備中。盡管參考附圖,結(jié)合本發(fā)明的優(yōu)選實(shí)施例,對(duì)本發(fā)明進(jìn)行了描述,然而需要注意的是,對(duì)于本領(lǐng)域技術(shù)人員而言,多種改變和修改都是顯而易見的。這樣的改變和修改應(yīng)該被理解為包含在由權(quán)利要求所限定的本發(fā)明的范圍之內(nèi),除非其脫離該范圍。本申請(qǐng)涉及2006年6月2日提交的日本專利申請(qǐng)No. 2006-154264,將其全部內(nèi)容一并在此作為參考。
權(quán)利要求
1.一種編輯設(shè)備,用于對(duì)第一流和第二流進(jìn)行連接,所述第一流包含可變長度編碼后的第一參數(shù),所述第二流包含可變長度編碼后的第二參數(shù),將第一流和第二流存儲(chǔ)在記錄介質(zhì)中,以及所述記錄介質(zhì)存儲(chǔ)管理信息,所述管理信息用于對(duì)按照特定存取單元的集合來記錄流的區(qū)域進(jìn)行管理,所述編輯設(shè)備包括 判決單元,用于將第一流中包含的可變長度編碼后的第一參數(shù)與第二流中包含的可變長度編碼后的第二參數(shù)相比較,判定是否將要改變可變長度編碼后的第一參數(shù)和可變長度編碼后的第二參數(shù)中的至少一個(gè); 替換單元,用于在判決單元判定將要改變可變長度編碼后的第一參數(shù)和可變長度編碼后的第二參數(shù)中的至少一個(gè)的情況下,將可變長度編碼后的第一參數(shù)和可變長度編碼后的第二參數(shù)中的所述至少一個(gè)替換成與為可變長度編碼后的第一參數(shù)和可變長度編碼后的第二參數(shù)而指定的碼字相同長度的另一碼字; 重寫單元,用于僅對(duì)記錄有由替換單元利用所述另一碼字替換的可變長度編碼后的第一參數(shù)和可變長度編碼后的第二參數(shù)中的所述至少一個(gè)的存取單元進(jìn)行重寫; 連接單元,用于按照管理信息,對(duì)記錄第一流的存取單元集合以及記錄第二流的存取單元集合進(jìn)行連接。
2.根據(jù)權(quán)利要求I所述的編輯設(shè)備,其中,替換單元根據(jù)從多個(gè)碼字組選擇的、并且包含為可變長度編碼后的第一參數(shù)和可變長度編碼后的第二參數(shù)而指定的碼字在內(nèi)的一個(gè)碼字組,確定所述另一碼字。
3.根據(jù)權(quán)利要求I所述的編輯設(shè)備,其中,第一流和第二流分別包括多個(gè)第一數(shù)據(jù)單元,以及所述第一數(shù)據(jù)單元包括多個(gè)第二數(shù)據(jù)單元, 判決單元針對(duì)第一流的每個(gè)第一數(shù)據(jù)單元,判定是否將要改變可變長度編碼后的第一參數(shù),以及針對(duì)第二流的每個(gè)第一數(shù)據(jù)單元,判定是否將要改變可變長度編碼后的第二參數(shù);以及 替換單元相應(yīng)地替換第一流的第一數(shù)據(jù)單元中所包含的所有第二數(shù)據(jù)單元中的可變長度編碼后的第一參數(shù),或者替換第二流的第一數(shù)據(jù)單元中所包含的所有第二數(shù)據(jù)單元中的可變長度編碼后的第二參數(shù)。
4.根據(jù)權(quán)利要求3所述的編輯設(shè)備,其中, 在不存在與作為可變長度編碼后的第一參數(shù)包含在第一流中的碼字和作為可變長度編碼后的第二參數(shù)包含在第二流中的碼字不同、并且與作為可變長度編碼后的第一參數(shù)包含在第一流中的碼字和作為可變長度編碼后的第二參數(shù)包含在第二流中的碼字具有相同長度的碼字的情況下, 替換單元在第一流或第二流中,將由判決單元確定將要改變的、第一數(shù)據(jù)單元中所包含的所有第二數(shù)據(jù)單元中的碼字替換為比所替換的碼字長8比特的整數(shù)倍的不同碼字,并且從第一數(shù)據(jù)單元的無效區(qū)域中刪除8比特的整數(shù)倍。
5.根據(jù)權(quán)利要求3所述的編輯設(shè)備,其中, 第一流和第二流是通過對(duì)視頻信號(hào)進(jìn)行編碼而得到的流,第一數(shù)據(jù)單元是包括多個(gè)片的圖像,以及第二數(shù)據(jù)單元是片。
6.根據(jù)權(quán)利要求5所述的編輯設(shè)備,其中,第一流和第二流是基于H.264標(biāo)準(zhǔn)的流,以及可變長度編碼后的第一參數(shù)和可變長度編碼后的第二參數(shù)是idr_pic_id。
7.根據(jù)權(quán)利要求5所述的編輯設(shè)備,其中,第一流和第二流是基于H.264標(biāo)準(zhǔn)的流,以及可變長度編碼后的第一參數(shù)和可變長度編碼后的第二參數(shù)是pic_parameter_set_id。
8.根據(jù)權(quán)利要求5所述的編輯設(shè)備,其中, 第一流和第二流是基于H. 264標(biāo)準(zhǔn)的流,以及 在不存在與作為可變長度編碼后的第一參數(shù)包含在第一流中的碼字和作為可變長度編碼后的第二參數(shù)包含在第二流中的碼字不同、并且與作為可變長度編碼后的第一參數(shù)包含在第一流中的碼字和作為可變長度編碼后的第二參數(shù)包含在第二流中的碼字具有相同長度的碼字的情況下,替換單元 將為包含由判決單元確定將要改變的可變長度編碼后的第一參數(shù)和可變長度編碼后的第二參數(shù)中的所述至少一個(gè)在內(nèi)的圖像中所包含的所有片中、被確定將要改變的可變長度編碼后的第一參數(shù)和可變長度編碼后的第二參數(shù)中的所述至少一個(gè)而指定的碼字替換成比所替換的碼字長N比特的碼字,其中N是< 7的自然數(shù),以及 刪除片中 N 個(gè)單位的 cabac_alignment_one_bit。
全文摘要
一種編碼設(shè)備,包括編碼單元(740),用于使用多個(gè)可變長度碼字組之一中包含的碼字對(duì)輸入數(shù)字信號(hào)進(jìn)行編碼;以及復(fù)用器(701),用于通過產(chǎn)生描述與流有關(guān)的特定信息的參數(shù)(如idr_pic_id)、對(duì)參數(shù)進(jìn)行編碼、以及將其添加到編碼單元的輸出數(shù)據(jù)中,來產(chǎn)生流。在任意單個(gè)可變長度碼字組中包含的碼字的長度是相同的。復(fù)用器從多個(gè)組中選擇出包含三個(gè)或更多個(gè)碼字在內(nèi)的一個(gè)可變長度碼字組,并且使用從所選擇的組中包含的碼字中選擇的一個(gè)碼字對(duì)所述參數(shù)進(jìn)行編碼。
文檔編號(hào)H04N7/26GK102883162SQ20121037570
公開日2013年1月16日 申請(qǐng)日期2007年5月31日 優(yōu)先權(quán)日2006年6月2日
發(fā)明者田中俊啟, 齋藤浩 申請(qǐng)人:松下電器產(chǎn)業(yè)株式會(huì)社