200826689 九、發明說明: L号务明戶斤屬^_ ^々員3 發明領域 [0001] 本發明一般係關於可縮放視訊編碼之領域。尤 5 其是,本發明係關於在可縮放視訊編碼中之可拋棄低層調 適技術。 發明背景 [0002] 這部份將提供在申請專利範圍中被引起之本發 10明背景或文脈。此處之說明可包含可被執行的概念,但並 不必定得是先前已被表達或被執行之一者。因此,除非於 此處指示,否則對於在這部份中被說明者並不是本申請中 的說明以及申請專利範圍之先前技術並且在這部份中之内 容不被承認為先前技術。 15 [0003]有一些視訊編碼標準,其包含ITU-T H.261、 ISO/IEC MPEG-1 視訊標準、ITU-T H.262 或 ISO/IEC MPEG-2視訊標準、ITU-T H.263、ISO/IEC MPEG-4視訊標 準以及ITU-T H.264或ISO/IEC MPEG-4AVC。H.264/AVC是 ITU-T視訊編碼專家群(VCEG)以及ISO/IEC MPEG之一聯 20 合視訊團隊(JVT)的作業輸出。同時也有對於視訊編碼的專 門解決辦法,(例如,VC-1,其同時也是依據微軟公司之視 窗媒體視訊第9版的習知SMPTE標準421M),以及國家標準 化提議,例如,在中國之音訊與視訊編碼標準作業團隊的 AVS編/解碼器。這些標準中一些已經指定一種可縮放延 5 200826689 伸,例如,MPEG-2視訊標準以及MPEG-4視訊標準。對於 H.264/AVC,該可縮放視訊編碼延伸SVC,有時也被稱為 SVC標準,目前是正發展中。 [0004] SVC之最近稿本被說明於,2006年7月在奥地利 5 之克拉根福(Klagenfurt)舉行的第20次J VT會議之ff S VC修正 案聯合稿本7”的JVT-T201中,其可自
http://ftp3.itu.ch/av-arch/jvt-site/2006_07_Klagenfurt/JVT-T 20 l.zip獲知。 [0005] SVC可提供可縮放視訊位元訊流。可縮放視訊 10 位元訊流之一部份可被抽取並且被解碼而具有劣化播放視 品質。可縮放視訊位元訊流包含一非可縮放基本層以及 一個或多個增強層。一增強層可增強時間的解析度(亦即, 訊框率)、空間解析度,或利用底層或其部份被表示之視訊 内容品質。在一些情況中,增強層之資料可在某個位置之 15後被截短,甚至在任意位置,並且各截斷位置可包含一竑 代表漸增地增強之視訊品質的另外資料。此可縮放性被稱 為精細顆粒(粒度)可縮放性(FGS)。相對於FGS,由不提供 精細顆粒可縮放性之品質增強層所提供的可縮放性被稱為 粗糙顆粒可縮放性(CGS)。基本層也可被設計為可縮放之 20 FGS。 [_6]在最近SVC規格中用於提供時間可縮放性的機 構被稱為"階層式B圖像”編碼結構。這特點完全地為先進視 訊編碼(AVC)所支援,並且其發訊部份可藉由使用子序列相 關增補增強資訊(SEI)訊息被進行。 6 200826689 _7]在最近svc規财驗提科間可縮放性的機 構被稱為該"階層式B圖像"編碼結構。這特點完全地為桃 敎援,並且該發訊部份可藉由❹子相相關增補加強 M sfL(SEI)訊息被進行。 5 陶]對於提供空間以及CGS可縮放性之機構,相似 於在早先標準中被使用之-種習見的堆層編碼技術被使用 而具有-些新的層間預測方法。可作為層間預測之資料包 含紋路間、移動以及餘留資料。單迴路解碼利用一種限制 的紋路間預測模式被引動,因而該層間紋路間預測可被應 10用至巨區塊(MB),其中基本層之對應區塊被安置在MB内 部。同時,基本層中的MB内部使用受限制之内部預測。在 單迴路解碼中,編碼器僅需要對播放所需的可縮放層(被稱 為需求層)進行移動補償以及完整圖像重建。由於這理由, 解碼複雜性大大地被降低。除了所需的層之外的所有層不 15需要完全地被解碼,因為不被使用於層間預測之所有的或 邛伤的mb資料(作為其層間紋路間預測、層間移動預測或 層間餘留預測)不是用於所需的層之重建所需要的。 [0009] 該空間可縮放性已被一般化以使該基本層能夠 成為增強層之被裁剪以及增加版本。量化以及熵編碼模組 被肩正以k供FGS性能。該編碼模式被稱為漸進精細,其 中轉換係數的連續精細藉由重複地減少量化步驟尺度以及 應用一種類同子位元平面編碼之”循環”熵編碼而被編碼。 [0010] 在目前稿本svc標準中之可縮放層結構具特徵 於—種變1 ’其被稱為:時間_位準(temporal_level)、附屬_ 7 200826689 辨識(dependency—id)、以及品質〜位準(qualityjevel),其等 於位元流形式被示訊或可根據規格被導出。時間位準被使 用以指示時間層階系或訊框率。包含較小時間位準數值之 圖像的一個層比包含較大時間—位準之圖像的一個層具有 5較小的訊框率。附屬-辨識被使用以指示層間編碼附屬階 系。在任何時間位置中,較小附屬〜辨識數值的圖像可被使 用於具有較大附屬-辨識數值的圖像之編碼的層間預測。品 質—位準被使用以指示FGS層階系。在任何時間位置且具有 相同附屬—辨識數值,具有品質—位準數值等於QL之一FGS 10圖像在層間預測時使用FGS圖像或具有品質位準數值等 於QL-1之基本品質圖像(亦即’當QL-l=〇時,則使用非FGS 圖像)。 [0011] 在包含至少^一^固CGS或空間可縮放層之可縮放 視訊的單迴路解碼中,僅在一低層中之編碼圖像的一部份 15 被使用作為一較高層中對應的編碼圖像之預測(亦即,作為 層間預測)。因此,如果一傳送器了解用於在接收器中播放 所需的可縮放層,則被使用於發送之位元率可藉由省略不 被使用於層間預測以及不被使用於任何播放所需的可縮放 層的那些部分而被降低。應注意到,於多重播放或廣播之 20 情況中,其中不同的客戶可能要求不同的播放層次,這些 層次被稱為所需的層次。 [0012] 聯合視訊團隊(JVT)目前致力於SVC標準之發 展。JVT-R050rl(於2006年1月14-20日在泰國曼谷舉行的第 18屆之”對於單一迴路解碼之可拋棄位元以及多階層尺〇估 8 200826689 計’’會議,其可由http://ftp3.itu.ch/av-arch/jvt-site/2006_01— Bangkok/JVT-R050.zip獲知),以及JVT-R064(於2006年 1 月 14-20日在泰國曼谷舉行的第18屆之"選擇層間預測”會議, 其可自 http://ftp3.itu.ch/av-arch/jvt-site/2006一 01— 5 Bangkok/JVT-R064.zip獲知)提供先前嘗試採用之”非所需 的資料π以在某些應用情節中改進SVC的性能。JVT-R050rl 概要地提出將在一分別的網路提取層(NAL)單元或具有 NAL discardable一flag集合的片段中之可拋棄的餘留加以編 碼,其中該discardable一flag指示一 NAL單元不是為解碼較高 10層所需。但是,僅餘留資料被提及並且其不指定如何編碼 那些"可拋棄的”餘留者至一分別的NAL單元或片段。根據 目前SVC設計,這是不可能的,除非那些具有不是用於層 間預測所需的餘留資料之MB在光點掃描順序中是連續 的,而其是很不可能。JVT-R064提議強迫將所有的mb不使 15用於高時間位準的某些層中之一組圖像的層間預測(亦 即,各被編碼作為一片段)。一訊框_為主的選擇性層間預測 方法已在JVT-S051 (於2006年3月31曰-4月7日在曰内瓦舉 行之第19次π訊框為主的選擇層間預測"會議,其可自 Mto;//ftp3.itu.ch/av_arch/ivt-site/20f^」^GeneYa/jYT 〇〇5χ 20 ziP獲知)中被提出,其中對於某些圖像(各被編碼作為一片 段者),在該等圖像中的所有MB被迫將不被使用於層間預 測。某些圖像之選擇被模式化如同—背包問題並且使用動 態規劃被解決。美國暫定專利申請序號6〇/786496申請案以 及JVT-S039(於2006年3月31日-4月7日在日内瓦舉行之第19 9 200826689 次之π可拋棄低層調適技術”會議,其可自 http: //ftpSjtu.ctiZ^Yzarch/jvt-sitg^QOjJ^eneva/JVT- S039 zip獲知),於此後將整體地被合併,提出使用片段群及/或 資料分割用以分離用於層間預測之所需的資料(非可拋棄 5賓料)以及用於層間預測之非所需的資料(可拋棄資料),以 至於該可拋棄資料可被拋棄以避免非必要的發送及/或解 碼0 [0013] 在SVC中,如果空間可縮放性被提供,當 base一mode—flag 或 base—mode—refinement flag 的任一者是等 ίο於1時,則一高層mb可使用可縮放基本層移動資料分解層 間預測。在這情節中,一高層MB藉由自該基本層被推論的 原定移動資料被重建。例如,如果一基本層是為QCIF尺寸 且一增強層是為CIF尺寸,則在基本層中的一個區塊之移動 向ϊ將以2倍方式被縮放並且對於增強層中的四個共置區 15 塊將以2 X 2移動向量被向上取樣。 [0014] 對於層間紋理預測,如果在增強層和基本層圖 像之間的空間解析度是不同的,則需要一内插過濾以將該 基本層向上取樣。在施加該内插過濾之前,基本層之Mb内 部使用一種邊緣延伸處理在各個方向被延伸4個取樣邊 20緣。在進行該邊緣延伸之前,一去塊過濾被施加至所有在 一 MB内部之内或在該等MB内部之間的邊界上。 [0015] 在SVC之層間餘留預測,如果一先前的層代表 具有目前層之半個空間解析度的一個層,則餘留信號在其 被使用作為預測信號之前使用一可分離的雙線性過濾而被 200826689 向上取樣。對於不同於1和2的層間空間解析率,内插處理 是依據如在AVC中被指定的四分之—像素内插處理。 _6]假設有二層存在,亦即,-較低層以及-較高 層’則在目前SVC中,其可能標示在較低層中之一被編: 5片段NAL單元為可拋麟且當解簡較高層時該可抛棄片 段不需要被呈現。因此’該較高層解瑪不必定得依據在可 拋棄片段中被傳送的任何資料’即使該可拋棄片段是呈 現。當各圖像被編碼作為一片段時,這需求可被滿足,其 中在一可抛棄低層片段/圖像之上的較高層片段/圖像之 10 base_id_PlUSl被設定為0。但是,當—低層圖像被編碼成為 多於一個片段並且一些片段是可拋棄而其他的則不可拋棄 時,在確保上面的需求被滿足時問題將出現。 [0017] 當在一高層圖像中的一片段涵蓋被在低層中之 可拋棄和非可拋棄片段所涵蓋區域時,第一個問題出現。 15對於涵蓋被在低層中之可拋棄片段所涵蓋的區域之各該等 MB,6吾法元素 base—mode—flag、base—mode—refinement —flag、intra_base_flag、motion 一 prediction—flag 10 []、motion prediction 一 flag—11□'以及 residual—prediction」lag 的所有實 例必須被設定等於0。但是,這些語法元素仍然以位元訊流 20 方式被發送’當比較於這些語法元素不針對MB被發送的情 況時,其將導致降低編碼效能。 [0018] 當較高層是一空間可縮放層時則第二個問題將 出現。解碼處理包含在那些數值被使用於層間預測之前對 於較低層圖像之取樣或餘留值的向上取樣處理。但是,該 11 200826689 向上取樣結果可能由於該等可拋棄mb之非啟始化數值而 使鄰近於可拋棄MB的那些mb成為非可預料的。因此,不 易確保解碼結果是正確的。 L号务明内】 5 發明概要 [0019]本發明提供一種能夠使由多於一個之編碼片段 所構成的一編碼圖像中之一編碼片段以有效方式被編碼成 為對較高層為可拋棄(亦即,不是用於高層之解碼所需的) 之系統和方法。首先,避免發送必須被設定為固定數值之 10語法元素,因此改善編碼效能。尤其是,各種旗幟可被添 加至在可縮放延伸中之片段檔頭中及/或被添加至各種MB 語法列表中,因而可避免在可變的…^語法列表中發送某些 語法兀素。第二,同樣地可避免來自在被使用於層間預測 之取樣或餘留資料的向上取樣處理中可能被忽略之資料的 15干擾’因此允許較高層的正確解碼。尤其是,在編碼和解 碼兩處理期間之可拋棄片段的取樣或餘留數值被填塞而無 視於該可拋棄片段是否為可用。另外地,一些限制可被施 加至該編碼處理上,以至於在低層圖像中之可拋棄片段的 取樣或餘留數值不被使用於向上取樣處理中。 20 [0020]本發明的這些及其他優點和特點,以及其機構 和操作方式,當配合附圖的詳細說明時,將成為明顯,在 下面將被說明之圖形中,相同元件將具有相同的號碼。 圖式簡單說明 [0021]第1圖展示本發明使用之一種一般的多媒體通 12 200826689 訊糸統, [0022] 第2圖是一種可被使用於本發明實作中之行動 電话的透視圖;以及 [0023] 第3圖是第2圖之行動電話的電話電路之分解表 5 tjt 圖。 【万包】 車父佳實施例之詳細說明 [0024] 本發明提供一種系統和方法,其使在由多於一 個編碼片段所構成之編碼圖像中的一編碼片段能夠以有效 1〇方式被編碼成為對於較高層為可拋棄(亦即,非高層解碼所 需要的)。首先,可避免發送必須被設定為固定數值之語法 元素’因此改善編碼效能。第二,同樣地可避免來自在被 使用於層間預測之取樣或餘留資料的向上取樣處理中可能 被忽略之資料的干擾,因此允許較高層的正確解碼。 15 [0025]本發明包含一種用於分離層間預測所需要的以 及層間預測所不需要的資料之視訊編碼器(以及編碼方 法)。此外,本發明同時也包含一種視訊編碼器(以及解碼方 法)’其辨識層間預測所不需要的與非播放所需的層之資 料,以及省略此辨識資料之解碼,並且不必該可拋棄資料 20 而可解碼用於播放所需的層。 [0026]第1圖展示一種供本發明使用之一般的多媒體 通訊系統。如第1圖之展示,資料來源1〇〇提供一種類比、 未被壓縮數位、或被壓縮數位格式、或這些格式之任何組 合的來源信號。編碼器11〇編碼該來源信號成為一種編碼媒 13 200826689 體位元訊流。編碼器110可編碼多於一種的媒體型式,例 如,音訊和視訊,或需多於一個的編碼器110以編碼不同媒 體型式的來源信號。編碼器110同時也可取得綜合地產生之 輸入,例如,圖形和文字,或其可能產生綜合媒體之編碼 5 位元訊流。為簡化說明,此後僅考慮一媒體型式之一個編 碼媒體位元訊流的處理。但是,應注意到,一般即時廣播 服務包含許多訊流(一般至少一個音訊、視訊以及文字子標 題訊流)。同時也應注意到,系統可包含許多編碼器,但是 為簡化說明且不失其概括性’後面僅考慮一個編碼器11 〇。 10 [〇〇27]被編碼之媒體位元訊流被轉移至儲存部12〇。儲 存部120可包含任何型式之大量的記憶體以儲存被編碼之 媒體位元訊流。在儲存部120中之被編碼的媒體位元訊流之 格式可以是一基本的自足式位元訊流格式,或一個或多個 被編碼的媒體位元訊流可以是壓縮成為一種包容式檔案。 1S 一些系統”現場地”操作,亦即,省略儲存部並且自編碼器 11〇將被編碼之媒體位元訊流直接地轉移至傳送器13〇。被 編碼之媒體位元訊流接著依其之需要而被轉移至傳送器 130,同時也被稱為伺服器。被使用於發送中之格式可以是 種基本的自足式位元訊流格式,—種封包訊流格式,或 2 〇们或夕们被編碼的媒體位元訊流可以被壓縮成為-種包 令式“案〜4碼⑨UG、儲存部⑽、以及傳送㈣◦可存在 於相同的實際襄置中或它們可被包含於分別之裝置中。編 碼器卿傳送器130可以與現場之即時内容方式而操作, 於其情况巾’破編碼之媒體位元訊流_般不永久地被儲 14 200826689 存,但是卻在内容編碼器110及/或傳送器130中於小的時間 週斯時被緩衝以穩定處理延遲、轉移延遲以及被編碼之媒 體位元率之變化。 [0028] 傳送器130使用一種通訊協定堆疊以傳送被編 5碼之媒體位元訊流。該堆疊可包含,但是不受限制於,即 時輸送協定(RTP)、使用者數據報協定(UDp)、以及網際網 路協定(IP)。當該通訊協定堆疊是以封包為取向時,傳送器 130將被編碼之媒體位元訊流壓縮成為封包。例如,當RTp 被使用時,傳送器130根據一RTP有效負載格式而將被編碼 10之媒體位元訊流壓縮成為RTP封包。一般,各媒體型式具有 一種接收RTP有效負載格式。應該再次地注意到,一系統可 包含多於-個的傳送器13G,但是為簡明起見,此後之說明 僅考慮一個傳送器130。 [0029] 傳送器13G可以是或可以不是經由通訊網路被 15連接到-閘道140。該閘道140可以進行不同型式的功能, 例如,根據-個通訊協定堆疊將一封包串流轉發至另一通 訊協定堆疊、資料串流之合併和分開、以及根據下傳鍵路 及/或接收器能力之資料訊流的運用,例如,根據主要的下 傳鏈路之網路情況而控制被傳送之訊流的位元率。間道14〇 20之範例包含多點協商控制單元(MCU),在電路切換和封包 切換視訊通訊之間的閘道、隨壓即説手提電話(p〇c)祠服 器、數位視訊廣播手持(則__統中之IP封裝器、或區域 f生也傳U廣播傳輪至豕庭無線網路之機上盒。當κτρ被使用 時’間道M0被稱為—RTp混合器並且作用如同—RTp連接 15 200826689 點。 [0030]該系統包含一個或多個接收器15〇,其一般能夠 接收、解調變、並且解封裝被發送之信號成為編碼之媒體 位元訊流。該編/解碼器媒體位元訊流一般進一步地利用解 5 碼裔160被處理,其之輸出是一個或多個解壓縮媒體訊流。 最後,一產生器170可以重現未被壓縮之媒體訊流,例如, 利用擴聲器或顯示器。接收器15〇、解碼器16〇、以及產生 器170可存在於相同的實際裝置中或它們可被包含於分別 之裝置中。 10 [0031]就位元率、解碼複雜性、以及圖像尺寸而論, 可縮放性疋對於由不同成分形成的以及有錯誤傾向的環境 所需的性質。這性質是為計數限制所需的,例如,在接收 裝置中之位元率限制、顯示解析度、網路總處理能力、以 及計算能力。 15 [0032]本發明之通訊裝置可使用各種發送技術而通 汛,其包含,但是不受限制於,分碼多重存取(CDMA)、移 動式通吼廣域系統(GSM)、通用移動式電信系統(UMTS” 为日π多重存取(TDMA)、分頻多重存取(FDMA)、傳輸控制 協疋/網際網路協定(Tcp/Ip)、簡訊業務(SMS)、乡媒體通訊 2〇業務(MMS)、電子郵件、即時通訊業務(IMS)、藍芽、正四 802.11等等。-通訊裝置可使用各種媒體而通訊,其包含, 但疋不叉限制於,無線電、紅外線、雷射、電纔連接、以 及其類似者。 [0033]第2和3圖展示—種本發明可以在其中被製作之 16 200826689 代表式行動電話12。但是,應了解,本發明不欲受限於一 朴疋型式的行動電話η或其他的電子式裝ϊ。在第2和3 圖中所展+ 、的一些或所有特點可被包含於第1圖所顯示之 任何或所有的裝置中。 5 [〇〇34]第2和3圖之行動電話12包含外罩30、液晶顯示 〇〇形式之顯不器32、袖珍鍵盤34、麥克風36、耳機38、電 池40、紅外線埠幻、天線44、依據本發明一實施例之Die。 形式的智慧卡46、讀卡器48、無線電界面電路52、編/解碼 為电路54、控制器56以及記憶體58。所有分別的電路和元 1〇件疋習知技術的型式,例如,在Nokia的行動電話範圍中。 [〇〇35]根據各種實施例之本發明實作是依據於svc標 準以及漸近式編碼。但是,應注意到,本發明同時也可應 用至其他的可縮放編碼方法中,以及交錯編碼中。 [0036] 考慮到,例如,二個層,(亦即,低層和高層) 15之存在,低層之MB可被分類成為下列的二種型式之一種·· 1·來自MB之資料是用於層間預測所需要(型式A)。 2·來自MB之資料不是用於層間預測所需(型式B)。 在一圖像中之型式B的MB以具有語法元素 discardable_flagbeing被設定為1被編碼於一個或多個片段 20 中。如果適合的話,此種型式B之]MB可被忽略。 [0037] 當針對上述的第一個問題時,就編碼而論, base_discardable_flag_present_flag被添加至可縮放延伸之 片段檔頭中,以指示該base_discardable_flag是否呈現於MB 語法列表 macroblock—layer_in_scalable—extension()中。該 17 200826689 base—discardable flag被添加至MB語法歹^ 表 macroblock_layer_in_scalable_extension() ,指 示當 base_discardable_flag是等於 1 時,涵蓋在利用 base_id_plus 1 被指示的基本層圖像中之相同區域的基本片段是否為可拋 5 棄。當 based_discardable—flag 是等於 0 時, base—discardable—flag不被添加至MB語法列表 macroblock_layer」n—scalable_extension()。因此,下列在可 縮放延伸中之片段檔頭的語法是可應用的: slice—header_in_scalable_extension() { C 描述符 first_mb_in_slice 2 ue(v) slicetype 2 ue(v) if( slice type = = PR ) { fragmented_flag 2 u⑴ if( fragmented flag == 1 ) { fragmentorder 2 ue(v) if ( fragment一order != 0) lastfragmentflag 2 u(l) } if( fragment order == 0 ) { num一mbsinsliceminusl 2 ue(v) luma chroma sep flag 2 u⑴ } } if( slice type != PR | fragment_order == 0) { pic_parameter_set_id 2 ue(v) frame_num 2 u(v) if( !frame_mbs—only flag ) { fieldpicflag 2 u(l) if( field_pic flag ) bottom_field_fIag 2 u⑴ } if( nal unit一type == 21 ) idrpicid 2 ue(v) if( pic_order_cnt—type 二=0 ) { pic_order_cnt_lsb 2 u(v) if( pic_order_present_flag && !field_pic_flag ) deltapicordercntbottom 2 se(v) } if( pic order cnt type = =1 && !delta_pic_order_always_zero_flag) { delta_pic_order_cnt[ 0 ] 2 se(v) 18 200826689 if( pic_order_present_flag && !field_pic_flag ) delta_pic_order_cnt[ 1 ] 2 se(v) } } if( nal ref idc != 0 ) keypicflag 2 u⑴ if( slice type != PR ) { if( redundant_pic_cnt_present_flag ) redundantpiccnt 2 ue(v) if( slice—type == EB ) directspatialmvpredflag 2 u⑴ baseidplusl 2 ue(v) if( base_id_plusl != 0 ) { adaptivepredictionflag 2 u⑴ base一discardableJIag_present」lag 2 u(l) } if( slice type = = EP | | slice type = = EB ) { numrefidxactiveoverrideflag 2 u(l) if( num ref idx active override flag ) { num_ref_idx_10_active_minusl 2 ue(v) if( slice type == EB ) numrefidxllactiyeminusl 2 ue(v) } } ref_pic_list_reordering() 2 if( ( weighted_pred—flag && slice—type = = EP ) | | (weighted bipred idc == 1 && slice type == EB)) { if( adaptive_prediction_flag) basepredweighttableflag 2 u(l) if( basejpred weight table flag = = 0) pred weight—table() } if( nal ref idc != 0 ) { dec_ref_pic_marking() 2 if (key_pic_flag && nal_unit_type != 21) dec_ref_pic_marking—base() } if( entropy coding mode flag && slice type != El) cabacinit—idc 2 ue(v) } if( slice type != PR | | fragment order == 0 ) { sliceqpdelta 2 se(v) if( deblocking_filter_control_present_flag ) { disabledeblockingfilteridc 2 ue(v) if( disable deblocking filter idc != 1 ) { slice_alpha_c0_offset_div2 2 se(v) slice—beta offset一div2 2 se(v) } 19 200826689 } ^-- } ---- it( slice type != PR ) if( num slice groups minusl > 0 && slice group map type >= 3 && slice group map type <= 5) slice_group change cycle 2~ ------- if( slice_type != PR && extended一spatial scalability > 0 ) { if ( chroma_format_idc > 〇 ) { — -__ base_chroma_phase_x_plusl 2 -- basechromaphaseyplusl "^(2)^- } 〜_ if( extended spatial scalability = = 2)( ^—--- scaledbaseleftoffset scaled base top offset 2 se(v) ~se(^) scaled_base_right_offset scaledbasebottomoffset ~se(v) } } -- it( slice—type == PR && fragment—order = = 0) { — adaptive_ref_fgs一flag 2 u(tt^— ir( adaptive ref fgs flag ) { max—diff一refscale_forzero_base_block 2 "^(5) - max_diff_ref_scale _for_zero_base_coeff ^(5)-— fgsentropyorderflag 2 u(lf^- -- } motionrefinementflag 厂 } -- SpatialScalabilityType = spatial一scalability_type() } [0038]此外,在可縮放延伸中之巨塊層的語法列表是如 下所示: macroblock一layer一in—scalable_extension() { C 描巡符 if( in_crop_window( CurrMbAddr)) if (base discardable _ftag_presentJlag) basediscardable_Jlag 2 u(l) | ae(v) if(adaptive_prediction_flag && !base discardable_JJag) { basemodeflag 2 u(l) | ae(v) if( ! base_mode_flag && SpatialScalabilityType > 0 && ! intra base mb( CurrMbAddr)) base_mode—refinement一flag 2 u(l) | ae(v) } } if( ! base_mode_flag && ! base_mode_refinement_flag ) { mbtype 2 ue(v) | ae(v) if( mb_type = = I NxN && in crop window(CurrMbAddr) && fbase discardable flag&& intra base mb( CurrMbAddr)) 20 200826689 intrabaseflag 2 u(l) | ae(v) } if( mb_type = = I_PCM ) { while( !byte_aligned()) pcm_alignment_zero_bit 2 f(l) for( i = 0; i < 256; i++ ) pcm_sample_luma[ i ] 2 u(v) for( i = 0; i < 2 * MbWidthC * MbHeightC; i++ ) pcm_sample_chroma[ i ] 2 u(v) } else { NoSubMbPartSizeLessThan8x8Flag = 1 if( mb_type != I NxN && MbPartPredMode( mb_type,0) != Intra_16xl6 && NumMbPart(mb type) == 4 ) { sub_mb_pred_in_scalable_extension( mb type ) 2 for( mbPartldx = 0; mbPartldx < 4; mbPartIdx++ ) if( sub_mb_type[mbPartIdx] != B_Direct_8x8 ) { if( NumSubMbPart( sub mb type [mbPartldx]) > 1 ) ,NoSubMbPartSizeLessThan8x8Flag = 0 } else if( !direct_8x8_inference_flag ) NoSubMbPartSizeLessThan8x8Flag = 0 } else { if( transform_8x8_mode_flag && mb type == I_NxN) transform_size_8x8 一 flag 2 u(l) | ae(v) mb 一 pred_in—scalable_extension(mb—type) 2 } if( MbPartPredMode(mb_type,0) != Intra—16x16 ) { coded_block pattern 2 me(v) | ae(v) if( CodedBlockPatternLuma > 0 && transform_8x8_mode_flag && mb type != I_NxN && NoSubMbPartSizeLessThan8x8Flag && !(MbPartPredMode(mb_type, 0) = = B Direct l 6x16 && ! direct 8x8 inference flag )) transform_size_8x8_flag 2 u(l) | ae(v) } if( CodedBlockPatternLuma >0 | CodedBlockPattemChroma >0 11 MbPartPredMode( mb type, 0 ) == Intra 16x16 ) { mb—qp—delta 2 se(v) | ae(v) residual_in_scalable_extension() 3 |4 } } } 1 [0039]在可縮放延伸中之巨塊預測的語法是如下所示: mb_pred_in_scalable_extension( mb_type ) { C 描述符 if( MbPartPredMode( mb type, 0 ) == Intra_4x4 | | MbPartPredMode( mb type, 0 ) == Intra_8x8 | MbPartPredMode( mb type, 0 ) == Intra 16x16 ) { if( MbPartPredMode( mb type, 0 ) == Intra_4x4 ) for( luma4x4BlkIdx = 0; luma4x4BlkIdx <16; luma4x4BlkIdx++) { 21 200826689 prev_intra4x4_pred_mode flag[ luma4x4BlkIdx ] 2 u(l) | ae(v) if( !prev_intra4x4_pred_mode_flag[ luma4x4BlkIdx ]) rem_intra4x4_pred_mode[ luma4x4BlkIdx ] 2 u(3) | ae(v) } if( MbPartPredMode( mb—type,0 ) == Intra—8x8 ) for( luma8x8BlkIdx = 0; luma8x8BlkIdx < 4; luma8x8BlkIdx++) { prev_intra8x8_pred_mode flag[ luma8x8BlkIdx ] 2 u(l) | ae(v) if( !prev_intra8x8_pred_mode_flag[ luma8x8BlkIdx ]) rem_intra8x8_pred_mode[ luma8x8BlkIdx ] 2 u(3) | ae(v) } if( chroma一format一idc != 0 ) intra_chroma_pred_mode 2 ue(v) | ae(v) } else if( MbPartPredMode( mb type, 0 ) != Direct && MbPartPredMode( mb—type, 0 ) != Intra Base && ! base mode flag ) { if( !base_mode_refinement_flag ) { if( base—id_plus 1 != 0 && !base_discardable_Jlag ) { for( mbPartldx = 0; mbPartldx < NumMbPart( mb」ype ); mbPartIdx++) if( MbPartPredMode( mb_type, mbPartldx) != Pred Ll && base mb_part_pred mode( mb type, mbPartldx ) != Pred LI ) ~ ~ ~ motion_prediction_flag_10[ mbPartldx ] 2 u(l) | ae(v) for( mbPartldx = 0; mbPartldx < NumMbPart( mb type ); mbPartIdx++) if( MbPartPredMode( mb_type, mbPartldx) != Pred LO && base_mb_part_pred_mode( mb_type, mbPartldx ) != Pred LO ) motion_prediction_flag_ll[ mbPartldx ] 2 u(l) | ae(v) } for( mbPartldx = 0; mbPartldx < NumMbPart( mb—type ); mbPartIdx++) — if( (num_ref_idx_10_active_minusl > 0 | | mb field decoding flag ) && MbPartPredMode( mb type, mbPartldx) != Pred Ll && ! motion_prediction flag 10[ mbPartldx ]) ref一idx一 10 [ mbPartldx 】 2 te(v) | ae(v) for( mbPartldx = 0; mbPartldx < NumMbPart( mb type ); mbPartIdx++) if( (num_ref_idx_ll_active_minusl > 0 | | mb_field_decoding_flag ) && MbPartPredMode( mb type, mbPartldx) != Pred LO && ! motion_prediction flag 11 [ mbPartldx ]) ref一idx—11 [ mbPartldx ] 2 te(v) | ae(v) for( mbPartldx = 0; mbPartldx < NumMbPart( mb_type ); mbPartIdx++) if( MbPartPredMode ( mb type, mbPartldx) != Pred Ll ) for( compldx = 0; compldx < 2; compIdx++ ) mvd—10[ mbPartldx ][ 0 】[compldx 】 2 se(v) | ae(v) for( mbPartldx = 0; mbPartldx < NumMbPart( mb_type ); mbPartIdx++) if( MbPartPredMode( mb_type, mbPartldx) != Pred LO ) for( compldx = 0; compldx < 2; compIdx++ ) mvd—11 [ mbPartldx 】[0 ][ compldx 】 2 se(v) ae(v) 22 200826689 } else { /* base_mode_refinement_flag */ for( mbPartldx = 0; mbPartldx < NumMbPart( mb type ); mbPartIdx++) if( MbPartPredMode (mb_type, mbPartldx) != Pred Ll ) for( compldx = 0; compldx < 2; compIdx++ ) mvd_ref_10[ mbPartldx ][ 0 ][ compldx ] 2 se(v) | ae(v) for( mbPartldx = 0; mbPartldx < NumMbPart( mb—type ); mbPartIdx++) if( MbPartPredMode( mb type, mbPartldx ) != Pred L0 ) ~ for( compldx = 0; compldx < 2; compIdx++ ) mvd_ref_ll[ mbPartldx ][ 0 ][ compldx ] 2 se(v) | ae(v) } } } [0040]在可縮放延伸中之子巨塊預測的語法是如下所 示: sub_mb_pred_in_scalable_extension( MbType ) { C 描述符 if( Ibase mode flag && !base mode refinement flag ) { for( mbPartldx = 0; mbPartldx < 4; mbPartIdx++ ) sub_mb_type[ mbPartldx ] 2 ue(v) | ae(v) if( base id plusl != 0 && Ibase discardable flag) { for( mbPartldx = 0; mbPartldx < 4; mbPartIdx++ ) if( SubMbPredMode( sub_mb_type[ mbPartldx ]) != Pred_Ll && base mb part pred mcde(Qm-MbAddr,mbPartldx) != Pred LI) motion_prediction_flag_10[ mbPartldx ] 2 u(l) | ae(v) for( mbPartldx = 0; mbPartldx < 4; mbPartIdx++ ) SubMbPredMode( sub_mb_type[ mbPartldx ]) != Pred LO && base mb part pred mode(QraMbAddr,mbPartldx) \= Pred L0) motion_prediction_flag_ll[ mbPartldx ] 2 u(l) | ae(v) I for( mbPartldx = 0; mbPartldx < 4; mbPartIdx++ ) if((num一re^jidx—lOjactive一minusl > 0 " mb—field_decoding_flag)&& sub mb typef mbPartldx ] != B_Direct_8x8 && SubMbPredMode( sub_mb_type[ mbPartldx ]) != Pred Ll && Imotion prediction flag 10[ mbPartldx ]) ref_idx_10[ mbPartldx ] 2 te(v) | ae(v) for( mbPartldx = 0; mbPartldx < 4; mbPartIdx++ ) if((num_rcLidx_ll_active_minusl > 0 || mb_field_decoding_flag)&& sub_mb」ype[ mbPartldx ] != B_Direct_8x8 && SubMbPredMode( sub_mb_type[ mbPartldx ]) != Pred LO && Imotion prediction flag 11 [ mbPartldx ]) ref一idx_ll[ mbPartldx 】 2 te(v) | ae(v) for( mbPartldx = 0; mbPartldx < 4; mbPartIdx++ ) if( sub_mb_type[ mbPartldx ] != B_Direct_8x8 && SubMbPredMode( sub mb type[ mbPartldx ]) != Pred LI) for( subMbPartldx = 0; subMbPartldx < NumSubMbPart( sub mb typef mbPartldx ]); subMbPartIdx++) ~ for( compldx = 0; compldx < 2; compIdx++ ) mvd_10[ mbPartldx ][ subMbPartldx ][ compldx ] 2 se(v) | ae(v) for( mbPartldx = 0; mbPartldx < 4; mbPartIdx++ ) 23 200826689
if( sub_mb_type[ mbPartldx ] != B_Direct_8x8 && SubMbPredMode( sub mb type『 mbPartldx ]) != Pred L0 ) for( subMbPartldx = 0; subMbPartldx < NumSubMbPart( sub_mb_type[ mbPartldx ]); subMbPartIdx++) for( compldx = 0; compldx < 2; compIdx++ ) mvd_ll[ mbPartldx ][ subMbPartldx ][ compldx ] 2 se(v) | ae(v) } else if( base mode refinement flag ) { for( mbPartldx = 0; mbPartldx < 4; mbPartIdx++ ) if( SubMbPredMode( sub mb type[ mbPartldx ] ) != Pred LI ) for( subMbPartldx = 0; subMbPartldx < NumSubMbPart( sub_mb_type[ mbPartldx ]); subMbPartIdx++) for( compldx = 0; compldx < 2; compIdx++ ) mvd_ref_10[ mbPartldx ][ subMbPartldx ][ compldx ] 2 se(v) | ae(v) for( mbPartldx = 0; mbPartldx < 4; mbPartIdx++ ) if( SubMbPredMode( sub mb type[ mbPartldx ]) != Pred L0) for( subMbPartldx = 0; subMbPartldx < NumSubMbPart( sub_mb_type[ mbPartldx ]); subMbPartIdx++) for( compldx = 0; compldx < 2; compIdx++ ) mvd_ref_ll[ mbPartldx ][ subMbPartldx ][ compldx ] 2 se(v) | ae(v) ) I
[0041]在可縮放延伸中餘留之語法是如下所示: residual_in_scalable_extension( ) { C 描述符 if ( adaptive_prediction_flag && !base discardable Jlag ScSc MbPartPredType( mb type, 0 ) != Intra_16xl6 && MbPartPredType( mb type, 0 ) != Intra_8x8 && MbPartPredType( mb type, 0 ) != Intra_4x4 && MbPartPredType( mb type, 0 ) != Intra Base ) { residualpredictionflag 3 |4 u(l) | ae(v) if ( residual prediction flag && base mode flag && constrained inter layer pred()) smoothed_reference_flag 3 |4 u(l) | ae(v) } if( !entropy_coding_mode_flag ) residualblock = residualblockcavlc else residual—block = residualblockcabac if( MbPartPredMode( mb type, 0 ) == Intra_16xl6 ) residual_block_cabac( Intral6xl6DCLevel, 16 ) 3 for( i8x8 = 0; i8x8 < 4; i8x8++ ) /* each luma 8x8 block */ if( !transform_size_8x8一flag ) for( i4x4 = 0; i4x4 < 4; i4x4++ ) { /* each 4x4 sub-block of block */ if( CodedBlockPatternLuma & ( 1 « i8x8 )) if( MbPartPredMode( mb type, 0 ) == Intra 16x16 ) residual一block( Intral6xl6ACLevel[i8x8 * 4 + i4x4],15 ) 3 else residual_block( LumaLevel[ i8x8 * 4 + i4x4 ], 16 ) 3 |4 else if( MbPartPredMode( mb type, 0 ) == Intra_16xl6 ) for( i = 0; i < 15; i++ ) 24 200826689
Intral6xl6ACLevel[ i8x8 * 4 + i4x4 ][ i ] = 0 else for( i = 0; i < 16; i++ ) LumaLevel[ i8x8 * 4 + i4x4 ][ i ] = 0 } else if( CodedBlockPatternLuma & ( 1 « i8x8 )) residual_block( LumaLevel8x8[ i8x8 ], 64 ) 3 |4 else for( i = 0; i < 64; i++ ) LumaLevel8x8[ i8x8 ][ i ] = 〇 if( chroma format idc != 0 ) { NumC8x8 = 4/( SubWidthC * SubHeightC ) for( iCbCr = 0; iCbCr < 2; iCbCr++ ) CodedBlockPattemChroma & 3 ) /* chroma DC residual present */ residual—block( ChromaDCLevel[ iCbCr ],4 * NumC8x8 ) 3 |4 else for( i = 0; i < 4 * NumC8x8; i++ ) ChromaDCLevel[ iCbCr ][ i ] = 0 for( iCbCr = 0; iCbCr < 2; iCbCr++ ) for( i8x8 = 0; i8x8 < NumC8x8; i8x8++ ) for( i4x4 = 0; i4x4 < 4; i4x4++ ) if( CodedBlockPattemChroma & 2 ) /* chroma AC residual present */ residual block( ChromaACLevel[ iCbCr ][ i8x8*4+i4x4 ], ~ 15) 3 |4 Else for( i = 0; i < 15; i++ ) ChromaACLevel[ iCbCr ][ i8x8*4+i4x4 ][ i ] = 0 } 為避免在各MB中具有base_discardable_flag的另一選 擇是如下所示。一個pps_discardable_info_flag被添加至可 縮放延伸中之片段標頭,其指示由base_id_phisl所指示之 其基本層圖像所使用的圖像參數集合(PPS)是否包含片段 5 群映射資訊,其中各片段群對應至可拋棄或非可拋棄片 段。片段群0包含非可拋棄片段,而片段群1包含可拋棄片 段。一個變量,BaseDiscardableFlag,根據該片段群資訊被 導出。如果一目前MB涵蓋一可拋棄片段之一基本層MB, 則該BaseDiscardableFlag被設定為等於1。否貝q,該 10 BaseDiscardableFlag被設定為等於0。如果對於各被編碼的 25 200826689 圖像僅有一個片段群,則MB位準或片段位準映像資訊可被 示訊,例如,在PPS中,相似於當多於一個片段群是正使用 中之情況。該變量BaseDiscardableFlag接著可同樣地被指 定。該BaseDiscardableFlag變量接著可被使用以取代在上面 5 MB 語法列表中的 base—discardable—flag,並且 base—discardable—flag之示訊可被移除。 當JVT-T079(於2006年7月在奥地利國克拉根福市舉行 之第20次JVT會議,”空間和CGS層之獨立語法分析的更新 結果’’’可自 http://ftp3.itu.ch/av-arch/jvt_site/2006 07 10 Klagenfurt/JVT-T079.zip獲知)中之獨立語法分析的語法改 變被考慮時,該被改變之語法列表如下所示地解決第一個 問題。應注意到,使用pps—discardable—info flag和 BaseDiscardableFlag之不同的處理被使用。 在可縮放延伸中之片段檔頭的語法是如下所示: slice_header_in_scalable_extension( ) { C 描瓦赛 firstmbinslice 2 ue(v) slice_type 2 一 ~ue(v) ' if( slice type = = PR ) { fragmentedflag 2 if( fragmented—flag == 1 ) { fragmentorder 2 ue(v) if ( fragment order != 0) ----- last_fragment_flag 2 u(l) '^ } if( fragment order == 〇 ) { num_mbs_in_slice_minusl 2 ue(^)-- luma_chroma_sep_flag 2 } — } ---- if( slice—type != PR II fragment_order == 0 ) { ------ pic_parameter_set_id 2 ue(v)' frame num 2 u(vT^ ' if( !frame_mbs_only_flag ) { -~--- fieldpicflag 2 "^(l) 26 200826689 if( field pic flag ) bottomfieldflag 2 u(l) } if( nal unit type == 21 ) idrpicid 2 ue(v) if( pic_order_cnt_type :: = 0 ) { picordercntlsb 2 U(v) if( pic order present flag && !field_pic_flag ) deltapicordercntbottom 2 se(v) } if( pic order cnt type = =1 && !delta_pic_order_always_zero_flag) { delta_pic_order_cnt[ 0 ] 2 se(v) if( pic order present flag && !field_pic_flag ) deltapic_order_cnt[ 1 】 2 se(v) } } if( nal—ref idc != 0 ) key_pic_flag 2 u(l) if( slice—type != PR ) { if( redundant pic cnt present flag ) redundantpiccnt 2 ue(v) if( slice type == EB ) directspatialmvpredflag 2 u⑴ baseidplusl 2 ue(v) if( base_id_plusl != 0 ) { adaptivepredictionflag 2 u(l) ppsdiscardableinfo 2 u(l) } if( slice type = = EP | | slice type = = EB ) { numrefidxactiveoverrideflag 2 u(l) if( num ref idx active override flag ) { numrefidxlOactiveminusl 2 ue(v) if( slice type = = EB ) numrefidxllactiveminusl 2 ue(v) } } ref—pic list—reordering() 2 if( ( weighted pred flag && slice type = = EP ) | | (weighted bipred idc == 1 && slice type == EB)) { if( adaptive prediction flag) basepredweighttableflag 2 u⑴ if( base pred weight table flag = = 0) pred_weight_table() } if( nal—ref idc != 0 ) { dec_ref_pic_marking() 2 if ( key pic flag && nal unit type != 21 ) dec_ref_pic_marking_base() 27 200826689 } if( entropy coding mode flag && slice type != El ) cabacinitidc 2 ue(v) } if( slice type != PR | fragment order = = 0 ) { sliceqpdelta 2 se(v) if( deblocking filter control present flag ) { disabledeblockingfilteridc 2 ue(v) if( disable deblocking filter idc != 1 ) { slice_alpha_c0_offset_div2 2 se(v) slice_beta_offset_div2 2 se(v) } } } if( slice type != PR ) if( num slice groups minusl > 0 && slice group map type >= 3 && slice group map type <= 5) slicegroupchangecycle 2 u(v) if( slice type != PR && extended spatial scalability > 0 ) { if ( chroma format idc > 0 ) { basechromaphasexplusl 2 u(2) basechromaphaseyplusl 2 u(2) } if( extended spatial scalability = = 2)( scaledbase—leftoffset 2 se(v) scaledbasetopoffset 2 se(v) scaledbaserightoffset 2 se(v) scaledbasebottomoffset 2 se(v) } } if( slice type == PR && fragment order == 0) { adaptiveref—fgsflag 2 u(l) if( adaptive_ref_fgs_flag ) { max diff ref scale for zero base block 2 u(5) max diff ref scale for zero base coeff 2 u(5) fgsentropyorderflag 2 u(l) } motionrefinementflag 2 u⑴ } SpatialScalabilityType = spatial_scalability_type() } 在可縮放延伸語法中之巨塊層是如下所示: macroblock—layer_in_scalable_extension( ) { C 描述符 if( in_crop_window( CurrMbAddr )) if(adaptive_prediction_flag && ! BaseDiscardableFlag) { basemodeflag 2 u(l) | ae(v) 28 200826689 } } if( ! base mode flag ) { mbtype 2 ue(v) | ae(v) } if( mb_type == I PCM ) { while( !byte_aligned()) pcm_alignment_zero_bit 2 肋 for( i = 0; i < 256; i++ ) pcm_sample_luma[ i ] 2 u(v) for( i = 0; i < 2 * MbWidthC * MbHeightC; i++ ) pcm_sample_chroma[ i ] 2 u(v) } else { if( !base_mode_flag ) { NoSubMbPartSizeLessThan8x8Flag = 1 if( mb_type != I_NxN && MbPartPredMode( mb_type,0 ) != Intra_16xl6 && NumMbPart( mb type ) == 4 ) { sub_mb_pred_in_scalable_extension( mb type ) 2 for( mbPartldx = 0; mbPartldx < 4; mbPartIdx++ ) if( sub_mb_type[ mbPartldx ] != B_Direct_8x8 ) { if( NumSubMbPart( sub_mb_type [ mbPartldx ] ) > 1 ) NoSubMbPartSizeLessThan8x8Flag = 0 } else if( !direct_8x8_inference_flag ) NoSubMbPartSizeLessThan8x8Flag = 0 } else { if( transform_8x8_mode_flag && mb type == I—NxN) transform_size_8x8_flag 2 u(l) | ae(v) mb_pred_in_scalable_extension( mb type ) 2 } } if( MbPartPredMode( mb_type, 0 ) != Intra_16xl6 ) { coded_block_pattern 2 me(v) | ae(v) if( CodedBlockPatternLuma > 0 && transform_8x8_mode_flag && (base_mode_flag | | (mb_type != I_NxN && NoSubMbPartSizeLessThan8x8Flag && !(MbPartPredMode(mb_type, 0) == B_Direct_16xl6 && Idirect 8x8 inference flag )))) transform_size_8x8_flag 2 u(l) | ae(v) } if( CodedBlockPatternLuma >0 11 CodedBlockPattemChroma >0 11 MbPartPredMode( mb type, 0 ) == Intra 16x16 ) { mb_qp_delta 2 se(v) | ae(v) residual_in_scalable_extension() 3 |4 } } } 29 200826689 在可縮放延伸語法中之巨塊預測是如下所示: mb_pred_in_scalable_extension( mb type ) { C 描述符 if( MbPartPredMode( mb type, 0 ) = = Intra_4x4 | MbPartPredMode( mb—type, 0 )=二 Intra—8x8 | | MbPartPredMode( mb type, 0 ) == Intra 16x16 ) { if( MbPartPredMode( mb」ype,0 ) == Intra_4x4 ) for( luma4x4BlkIdx = 0; luma4x4BMdx <16; luma4x4BlkIdx++ ) { prev_intra4x4_pred_mode_flag[ luma4x4BlkIdx ] 2 u(l) | ae(v) if( !prev_intra4x4_pred_mode_flag[ luma4x4BlkIdx ]) rem_intra4x4_pred_mode[ luma4x4BlkIdx ] 2 u(3) | ae(v) } if( MbPartPredMode( mb type, 0 ) == Intra_8x8 ) for( luma8x8BlkIdx = 0; luma8x8BlkIdx < 4; luma8x8BlkIdx++ ) { prev_intra8x8_pred_mode_flag[ luma8x8BlkIdx ] 2 u(l) | ae(v) if( !prev_intra8x8_pred_mode_flag[ luma8x8BlkIdx ]) rem_intra8x8_pred_mode[ luma8x8BlkIdx ] 2 u(3) | ae(v) } if( chroma_format_idc != 0 ) intra_chroma_pred_mode 2 ue(v) | ae(v) } else if( MbPartPredMode( mb type, 0 ) != Direct ) { if( base」d—plusl != 0 && ! BaseDiscardableFlag ) { for( mbPartldx = 0; mbPartldx < NumMbPart( mb type ); mbPartIdx++) if( MbPartPredMode( mb type, mbPartldx) != Pred Ll) motion_prediction_flag_10[ mbPartldx ] 2 u(l) | ae(v) for( mbPartldx = 0; mbPartldx < NumMbPart( mb type ); mbPartIdx++) if( MbPartPredMode( mb type, mbPartldx) != Pred LO ) motion_prediction_flag_ll[ mbPartldx ] 2 u(l) | ae(v) } for( mbPartldx = 0; mbPartldx < NumMbPart( mb type ); mbPartIdx++) if( ( num_ref_idx_10_active_minusl >0 | | mb_field_decoding flag ) && MbPartPredMode( mb type, mbPartldx) != Pred Ll && ! motion prediction flag 10[ mbPartldx ] ) ref_idx_10[ mbPartldx ] 2 te(v) | ae(v) for( mbPartldx = 0; mbPartldx < NumMbPart( mb_type ); mbPartIdx++) if( ( num ref idx ll active minusl >0 | | mb field decoding flag ) && MbPartPredMode( mb type, mbPartldx) != Pred LO && ! motion prediction flag 11 [ mbPartldx ] ) ref_idx_ll[ mbPartldx ] 2 te(v) | ae(v) for( mbPartldx = 0; mbPartldx < NumMbPart( mb type ); mbPartIdx++) if( MbPartPredMode ( mb type, mbPartldx ) != Pred Ll ) for( compldx = 0; compldx < 2; compIdx++ ) mvd_10[ mbPartldx ][ 0 ][ compldx 】 2 se(v) | ae(v) for( mbPartldx = 0; mbPartldx < NumMbPart( mb type ); mbPartIdx++) 30 200826689 if( MbPartPredMode( mb type, mbPartldx ) != Pred LO ) for( compldx = 0; compldx < 2; compIdx++ ) mvd_ll[ mbPartldx ][ 0 ][ compldx ] 2 se(v) | ae(v) } } 在可縮放延伸語法中之子巨塊預測是如下所示: sub mb pred_in_scalable_extension( MbType ) { C 描述符 if( !base mode flag ) { for( mbPartldx = 0; mbPartldx < 4; mbPartIdx++ ) sub_mb_type[ mbPartldx ] 2 ue(v) | ae(v) if( base id plusl != 0 && ! BaseDiscardableFlag) { for( mbPartldx = 0; mbPartldx < 4; mbPartIdx++ ) if( SubMbPredMode( sub mb type[ mbPartldx ] ) != Pred LI) motion_prediction_flag_10[ mbPartldx ] 2 u(l) 1 ae(v) for( mbPartldx = 0; mbPartldx < 4; mbPartIdx++ ) if( SubMbPredMode( sub mb type[ mbPartldx ]) != Pred L0) motion_prediction_flag_ll[ mbPartldx ] 2 u(l) | ae(v) I for( mbPartldx = 0; mbPartldx < 4; mbPartIdx++ ) if((num_re^_idx—10—active—minusl > 0 || mb field—decoding_flag)&& sub_mb_type[ mbPartldx ] != B_Direct_8x8 && SubMbPredMode( sub_mb_type[ mbPartldx ]) != Pred Ll && imotion prediction flag 10[ mbPartldx ]) ref idxj0[ mbPartldx 】 2 te(v) | ae(v) for( mbPartldx = 0; mbPartldx < 4; mbPartIdx++ ) 1¾ (num_ref^ick_ll_active_minusl〉011 mb_field—decoding flag) && sub_mb_type[ mbPartldx ] != B_Direct_8x8 && SubMbPredMode( sub_mb_type[ mbPartldx ]) != Pred LO && Imotion prediction flag 11 [ mbPartldx ]) ref_idx ll[ mbPartldx 】 2 te(v) | ae(v) for( mbPartldx = 0; mbPartldx < 4; mbPartIdx++ ) if( sub_mb_type[ mbPartldx ] != B_Direct_8x8 && SubMbPredMode( sub mb type[ mbPartldx ]) != Pred LI ) for( subMbPartldx = 0; subMbPartldx < NumSubMbPart( sub_mb_type[ mbPartldx ]); subMbPartIdx++) for( compldx = 0; compldx < 2; compIdx++ ) mvd_10[ mbPartldx ][ subMbPartldx ][ compldx ] 2 se(v) | ae(v) for( mbPartldx = 0; mbPartldx < 4; mbPartIdx++ ) if( sub_mb_type[ mbPartldx ] != B_Direct_8x8 && SubMbPredMode( sub mb type[ mbPartldx ]) != Pred L0 ) for( subMbPartldx = 0; subMbPartick < NumSubMbPart( sub_mb_type[ mbPartldx ]); subMbPartIdx++) for( compldx = 0; compldx < 2; compIdx++ ) mvd_ll[ mbPartldx ][ subMbPartldx ][ compldx ] 2 se(v) | ae(v) } } 在可縮放延伸語法中之餘留是如下所示: residual_in_scalable_extension( ) { C 描述符 31 200826689 if ( adaptive_prediction flag && ! BaseDiscardableFlag && slicetype != I && slicetype != IE && MbPartPredType( mb type, 0 ) != Intra_16xl6 && MbPartPredType( mb type, 0 ) != Intra_8x8 && MbPartPredType( mb type, 0 ) != Intra 4x4 ) { residualpredictionflag 3 |4 u(l) | ae(v) if ( residual prediction flag && base mode flag smoothedreferenceflag 3 |4 u(l) | ae(v) } if( !entropy—coding_mode_flag ) residualblock = residualblockcavlc else residualblock = residualblockcabac if( MbPartPredMode( mb type, 0 ) == Intra_16xl6 ) residual block—cabac( Intral6xl6DCLevel, 16 ) 3 for( i8x8 = 0; i8x8 < 4; i8x8++ ) /* each luma 8x8 block */ if( !transform size_8x8_flag ) for( i4x4 = 0; i4x4 < 4; i4x4++ ) { /* each 4x4 sub-block of block */ if( CodedBlockPatternLuma & ( 1 « i8x8 )) if( MbPartPredMode( mb—type, 0 ) == Intra_16xl6 ) residual_block( Intra 16x16ACLevel[i8x8 * 4 + i4x4], 15 ) 3 else residual block( LumaLevel[ i8x8 * 4 + i4x4 ], 16 ) 3 |4 else if( MbPartPredMode( mb—type, 0 ) == Intra_16xl6 ) for( i = 0; i < 15; i++ ) Intral6xl6ACLevel[ i8x8 * 4 + i4x4 ][ il ] = 0 else for( i = 0; i < 16; i++ ) LumaLevel[ i8x8 * 4 + i4x4 ][ i ] = 0 } else if( CodedBlockPatternLuma & ( 1 << i8x8 )) residual_block( LumaLevel8x8[ i8x8 ], 64 ) 3 |4 else for( i = 0; i < 64; i++ ) LumaLevel8x8[ i8x8 ][ i ] = 〇 if( chroma format idc != 0 ) { NumC8x8 = 4/( SubWidthC * SubHeightC ) for( iCbCr = 0; iCbCr < 2; iCbCr++ ) if( CodedBlockPattemChroma & 3 ) /* chroma DC residual present */ residual_block( ChromaDCLevel[ iCbCr ], 4 * NumC8x8 ) 3 |4 else for( i = 0; i < 4 * NumC8x8; i++ ) ChromaDCLevel[ iCbCr ][ i ] = 0 for( iCbCr = 0; iCbCr < 2; iCbCr++ ) for( i8x8 = 0; i8x8 < NumC8x8; i8x8++ ) for( i4x4 = 0; i4x4 < 4; i4x4++ ) if( CodedBlockPattemChroma & 2 ) /* chroma AC residual present */ 32 200826689
ChromaACLevel[ iCbCr ][ i8x8*4+i4x4 ][ i ] = Q - [0042]針對上述第二個問題,就編碼和解碼兩者而 論,可拋棄片段之取樣或餘留值被填塞,而無視於該可拋 棄片段是否為可用的。可被採用於本發明各實施例之—填 塞演算法範例包含:以光點掃描順序檢查各個MB&決定該 5 MB是否在一可拋棄片段中。如果其是在一可拋棄片段中, 則在該填基處理期間該可拋棄片段中的一MB被考慮是在 一非可拋棄片段中。如果一左鄰的MB是可用的且是在—非 可拋棄片段中,則在MB中一個列取樣之數值被設定為等於
該左鄰的MB之相同列的最右方之取樣數值。這處理可被稱 10為一種水平填塞處理。如果該左鄰的MB是不可用的(亦 即,目前MB是在圖像之左方邊界内)且上方鄰近的Μβ是可 用的並且是在-非可拋棄片段中,則一垂直填塞處理被應 用,其中在MB中之一個行取樣之數值被設定為等於該上方 鄰近MB之相同行的最底部之取樣數值。該水平和該垂直填 I5塞處理可應用於取樣和餘留的信號兩者上。如果左方和上 方鄰近的MB都不是可用作為一取樣信號,則趣的所有取 樣數值被設定為128,而對於MB的所有餘留數值被設定為 -餘留信號之〇值。應注意到,其他的填塞演算法亦可配合 本發明各實施例而被採用。例如,底部和右鄰的應可被使 20用於填塞作為相對於上述之左方和上方鄰近的填塞處理。 [0043]另外地,針對上述第二個問題,可施加限制至編碼步 33 200826689 驟,以至於在低層圖像中之可抛棄片段的取樣或餘留數值不被使 用於向上取樣處理中。這需要在非可樾棄片段巾之_以及在可 拋棄片段中之鄰近的MB不使用取樣或餘留數值之層間預測。換 言之,對於在非可拋棄片段中的那些MB,語法元細ra— 5及reSidUal』rediCti〇n_flag兩者皆被設定為〇。當在jvtt〇79(於 2006年7月在奥地利國克拉根福市舉彳_ 和CGS層之獨立語法分析的更新結果",其可自 htttp://ftp3ituxh/av-arch/jvt-site/2006_07_Klagenfurt/^ 獲知)中被提出之語法被包含於svc稿本巾時,這針對第二 10問題之另外的解決辦法生效。 [0044] 本發明之方法步㈣—般文字被制,其可在 -實施例中利用包含電腦可執行指令(例如,程式碼)之程式 產品被製作,該程式碼可被實施在一電腦可讀取媒體上並 且可利用在網路環境中電腦被執行。電腦可讀取媒體之範 15例可包含各翻式之儲存制,其包含,但是*受限制於, 電子裝置5己憶體單TG、隨機存取記憶體(RAM)、唯讀記憶 體(ROM)、小型碟片(CD)、數位多工碟片(dvd)以及Π其他^ 部或外部儲存裝置。-般,程式模組包含進行特定任務或 執行特定抽象資料型式之子程式、程式、物件、構件、資 2〇料結構等等。電腦可執行指令、相關資料結構、以及程式 模組代表用錢行域被揭社料的步狀程式碼範 例。此等可執行指令或相關資料結構之特定序列代表用以 執行於此等步驟中所說明的功能之對應行動的範例。 [0045] 本發明之軟體和網路製作可藉由具有法則為主 34 200826689 邏輯和其他邏輯之標準程式技術而被達成以進行各種資料 庫搜尋步驟'相關步驟、比較步驟以及決定步驟。同時也 應注意到,構件和"模組”字組,如於此處和申請專利範圍 中所使用者,將包含使用_個或多個軟體碼行、及/或硬體 5實作、及/或用以接收手動輸入之設備。 [0046]本發明實施例的前面說明被呈現作為展示和說 明目的。其不欲排除或限制本發明於所揭示之刻板形式, 亚且依照上面之教不,本發明是可有許多的修改和變化或 可自本發明之實施例而被取得。熟習本技術者應明白,上 1〇述實施例被選擇且被說明以便說明本發明之原理以及其之 實際應用,以在各種實施例中採用本發明並且其各種修改 是適合於預期的特定使用。 / I[圖簡言兒明]j 第1圖展示本發明使用之—種—般的多媒體通訊系統; 15 第2圖是-種可被使用於本發明實作中之行動電話的 透視圖;以及 第3圖是第2圖之行動電話的電話電路之分解表示圖。 【主要元件符號說明】 12···行動電話 40…電池 30···外罩 42…紅外線琿 32···顯示器 44…天線 34…袖珍鍵盤 46…智慧卡 36…麥克風 48…讀卡器 38…耳機 52…無線電界面 35 200826689 54… 56·· 58·· 100· 110· 120. 編/解碼器 130…傳送器 •控制器 140…閘道 •記憶體 150…接收器 ••來源 160…解碼器 ••編碼|§ 170…產生器 ••儲存部 36