JP7523856B2 - Video encoding device and video decoding device - Google Patents

Video encoding device and video decoding device Download PDF

Info

Publication number
JP7523856B2
JP7523856B2 JP2023079788A JP2023079788A JP7523856B2 JP 7523856 B2 JP7523856 B2 JP 7523856B2 JP 2023079788 A JP2023079788 A JP 2023079788A JP 2023079788 A JP2023079788 A JP 2023079788A JP 7523856 B2 JP7523856 B2 JP 7523856B2
Authority
JP
Japan
Prior art keywords
tile
unit
ctu
coordinate
size
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2023079788A
Other languages
Japanese (ja)
Other versions
JP2023100982A (en
Inventor
将伸 八杉
知宏 猪飼
友子 青野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sharp Corp
Original Assignee
Sharp Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sharp Corp filed Critical Sharp Corp
Priority to JP2023079788A priority Critical patent/JP7523856B2/en
Publication of JP2023100982A publication Critical patent/JP2023100982A/en
Application granted granted Critical
Publication of JP7523856B2 publication Critical patent/JP7523856B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)

Description

本発明の実施形態は、動画像復号装置、および動画像符号化装置に関する。 Embodiments of the present invention relate to a video decoding device and a video encoding device.

動画像を効率的に伝送または記録するために、動画像を符号化することによって符号化データを生成する動画像符号化装置、および、当該符号化データを復号することによって復号画像を生成する動画像復号装置が用いられている。 To efficiently transmit or record video, video encoding devices are used that generate encoded data by encoding video, and video decoding devices are used that generate decoded images by decoding the encoded data.

具体的な動画像符号化方式としては、例えば、H.264/AVCやHEVC(High-Efficiency Video Coding)にて提案されている方式などが挙げられる。 Specific video coding methods include, for example, methods proposed in H.264/AVC and HEVC (High-Efficiency Video Coding).

このような動画像符号化方式においては、動画像を構成する画像(ピクチャ)は、画像を分割することにより得られるスライス、スライスを分割することにより得られる符号化ツリーユニット(CTU:Coding Tree Unit)、符号化ツリーユニットを分割することで得
られる符号化単位(符号化ユニット(Coding Unit:CU)と呼ばれることもある)、及び
、符号化単位を分割することより得られる変換ユニット(TU:Transform Unit)からなる階層構造により管理され、CU毎に符号化/復号される。
In such a video coding method, images (pictures) constituting a video are managed in a hierarchical structure consisting of slices obtained by dividing images, coding tree units (CTUs) obtained by dividing slices, coding units (sometimes called coding units: CUs) obtained by dividing coding tree units, and transform units (TUs) obtained by dividing coding units, and are coded/decoded for each CU.

また、このような動画像符号化方式においては、通常、入力画像を符号化/復号することによって得られる局所復号画像に基づいて予測画像が生成され、当該予測画像を入力画像(原画像)から減算して得られる予測誤差(「差分画像」または「残差画像」と呼ぶこともある)が符号化される。予測画像の生成方法としては、画面間予測(インター予測)、および、画面内予測(イントラ予測)が挙げられる。 In such video coding methods, a predicted image is usually generated based on a locally decoded image obtained by encoding/decoding an input image, and the prediction error (sometimes called a "difference image" or "residual image") obtained by subtracting the predicted image from the input image (original image) is coded. Methods for generating predicted images include inter-frame prediction (inter prediction) and intra-frame prediction (intra prediction).

また、画面を複数の単位に分割し並列処理を行う方法としては、スライス、CTUライン(ウェーブフロントセグメント)、タイルに分割する方法が知られている。タイルに分割する方法では従来CTU単位での分割に限定されていた。 Also, methods of dividing a screen into multiple units for parallel processing include dividing into slices, CTU lines (wavefront segments), and tiles. Conventionally, dividing into tiles was limited to division in CTU units.

また、近年の動画像符号化及び復号の技術として非特許文献1が挙げられる。 Another recent example of video encoding and decoding technology is Non-Patent Document 1.

"Algorithm Description of Joint Exploration Test Model 7", JVET-G1001, Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 2017-08-19"Algorithm Description of Joint Exploration Test Model 7", JVET-G1001, Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 2017-08-19

上記で説明したように、タイルサイズがCTUの整数倍という制限があり、ロードバラン
スのために同じサイズに分割することや、360度動画のフェース(face)サイズに合わせ
たタイルを構成することが難しいという課題がある。
As explained above, there is a restriction that the tile size must be an integer multiple of the CTU, which poses the challenge of making it difficult to divide tiles into equal sizes for load balancing or to configure tiles that match the face size of a 360-degree video.

また、タイルサイズが、CTUサイズの整数倍に限定されない場合、時間動きベクトル参
照を行うために、参照ピクチャの動きベクトルを参照すると、CTU境界を越えて多くの位
置から動きベクトルを参照する可能性があるという、課題がある。
In addition, if the tile size is not limited to an integer multiple of the CTU size, there is a problem in that when referring to a motion vector of a reference picture to perform temporal motion vector reference, there is a possibility that motion vectors will be referenced from many positions across CTU boundaries.

また、タイルサイズが、CTUサイズの整数倍に限定されない場合、マルチラインイント
ラ予測において、CTU境界を越えて複数ラインを参照する可能性があるという課題がある
Furthermore, if the tile size is not limited to an integer multiple of the CTU size, there is a problem in that multiple lines may be referenced across CTU boundaries in multi-line intra prediction.

そこで、本発明は、上記の課題に鑑みてなされたものであり、その目的は、CTUの整数
倍の制限がないタイル分割と効率的な時間動きベクトル参照、マルチラインイントラ予測を提供することである。
Therefore, the present invention has been made in consideration of the above problems, and its purpose is to provide tile division without restrictions on integer multiples of CTU, efficient temporal motion vector reference, and multi-line intra prediction.

本発明の一態様に係る動画像復号装置は、タイル単位サイズの整数倍のタイルサイズを復号するヘッダ情報復号部と、ピクチャ内座標とタイルサイズを用いて4分木、2分木、3分木のマルチツリー分割を行うCT分割部と、参照ブロックのピクチャ内座標yColBrInPicと、対象ピクチャのピクチャ内座標から導出した仮想CTU座標yVirCtbBを比較して、参照ブロックの参照可能性を判定し、時間動きベクトルを導出する時間動き予測部を備えることを特徴とする。また、タイル単位サイズの整数倍のタイルサイズを復号するヘッダ情報復号部と、ピクチャ内座標とタイルサイズを用いて4分木、2分木、3分木のマルチツリー分割を行うCT分割部と、ピクチャ内座標からタイル内座標に変換してCTU境界の判定を行うイントラ予測部を備えることを特徴とする。 The video decoding device according to one aspect of the present invention is characterized by comprising a header information decoding unit that decodes a tile size that is an integer multiple of the tile unit size, a CT partitioning unit that performs multi-tree partitioning into quadtrees, binary trees, and ternary trees using intra-picture coordinates and tile size, and a temporal motion prediction unit that compares the intra-picture coordinates yColBrInPic of a reference block with the virtual CTU coordinates yVirCtbB derived from the intra-picture coordinates of a target picture to determine the referenceability of the reference block and derive a temporal motion vector. The video decoding device also comprises a header information decoding unit that decodes a tile size that is an integer multiple of the tile unit size, a CT partitioning unit that performs multi-tree partitioning into quadtrees, binary trees, and ternary trees using the intra-picture coordinates and tile size, and an intra prediction unit that converts from intra-picture coordinates to intra-tile coordinates to determine CTU boundaries.

符号化ストリームのデータの階層構造を示す図である。FIG. 2 is a diagram showing a hierarchical structure of data in an encoded stream. CTUの分割例を示す図である。FIG. 13 is a diagram illustrating an example of division of a CTU. タイルを説明する図である。FIG. 1 is a diagram illustrating tiles. タイル情報等に関するシンタックス表である。13 is a syntax table relating to tile information, etc. 動画像復号装置の構成を示す概略図である。FIG. 1 is a schematic diagram showing a configuration of a video decoding device. 動画像復号装置の概略的動作を説明するフローチャートである。11 is a flowchart illustrating a schematic operation of the video decoding device. CT情報復号部の動作を説明するフローチャートである。13 is a flowchart illustrating an operation of a CT information decoding unit. CTUおよびQT情報のシンタックス表の構成例を示す図である。FIG. 13 is a diagram showing an example of the structure of a syntax table of CTU and QT information. MT(Multi Tree)情報のシンタックス表の構成例を示す図である。FIG. 11 is a diagram showing an example of the structure of a syntax table of MT (Multi Tree) information. MT(Multi Tree)情報のシンタックス表の構成例を示す図である。FIG. 11 is a diagram showing an example of the structure of a syntax table of MT (Multi Tree) information. 非CTUサイズでのタイル分割を説明する図である。FIG. 13 is a diagram illustrating tile division at a non-CTU size. 非CTUサイズでのタイル分割を説明する図である。FIG. 13 is a diagram illustrating tile division at a non-CTU size. 符号化スライスデータのシンタックス構成である。13 is a syntax structure of encoded slice data. 仮想CTUライン制限を行いながら参照ピクチャの動きベクトルを参照する場合の参照範囲を示す図である。11 is a diagram showing a reference range when referring to a motion vector of a reference picture while performing virtual CTU line restriction. FIG. 仮想CTUライン制限を行いながら参照ピクチャの動きベクトルを参照する場合のフローチャートである。13 is a flowchart for referring to a motion vector of a reference picture while performing virtual CTU line restriction. 仮想CTUライン制限を行いながら参照ピクチャの動きベクトルを参照する場合の参照範囲を示す図である。11 is a diagram showing a reference range when referring to a motion vector of a reference picture while performing virtual CTU line restriction. FIG. 仮想CTUライン制限を行いながら参照ピクチャの動きベクトルを参照する場合のフローチャートである。13 is a flowchart for referring to a motion vector of a reference picture while performing virtual CTU line restriction. 時間動き導出(時間動きベクトル導出)において、参照ピクチャの参照位置を示す図である。FIG. 13 is a diagram showing the reference position of a reference picture in temporal motion derivation (temporal motion vector derivation). 動画像符号化装置の構成を示すブロック図である。FIG. 1 is a block diagram showing a configuration of a video encoding device. 本実施形態に係る動画像符号化装置を搭載した送信装置、および、動画像復号装置を搭載した受信装置の構成について示した図である。(a)は動画像符号化装置を搭載した送信装置を示しており、(b)は動画像復号装置を搭載した受信装置を示している。1 is a diagram showing the configuration of a transmitting device equipped with a video encoding device according to the present embodiment, and a receiving device equipped with a video decoding device, where (a) shows the transmitting device equipped with the video encoding device, and (b) shows the receiving device equipped with the video decoding device. 本実施形態に係る動画像符号化装置を搭載した記録装置、および、動画像復号装置を搭載した再生装置の構成について示した図である。(a)は動画像符号化装置を搭載した記録装置を示しており、(b)は動画像復号装置を搭載した再生装置を示している。1 is a diagram showing the configuration of a recording device equipped with a video encoding device according to the present embodiment, and a playback device equipped with a video decoding device, where (a) shows the recording device equipped with the video encoding device, and (b) shows the playback device equipped with the video decoding device. 本実施形態に係る画像伝送システムの構成を示す概略図である。1 is a schematic diagram showing a configuration of an image transmission system according to an embodiment of the present invention. タイル情報等に関するシンタックス表の別の例である。13 is another example of a syntax table relating to tile information, etc. タイル情報等に関するシンタックス表の別の例である。13 is another example of a syntax table relating to tile information, etc. タイル情報等に関するシンタックス表の別の例である。13 is another example of a syntax table relating to tile information, etc. タイル情報等に関するシンタックス表の別の例である。13 is another example of a syntax table relating to tile information, etc. 符号化スライスデータ、CTU情報のシンタックス構成例を示す図である。A diagram showing an example of the syntax configuration of encoded slice data and CTU information. QT情報のシンタックス表の構成例を示す図である。FIG. 13 is a diagram showing an example of the structure of a syntax table of QT information. MT情報のシンタックス表の構成例を示す図である。FIG. 2 is a diagram showing an example of the structure of a syntax table of MT information. CTU情報のシンタックス構成例を示す図である。A diagram showing an example of the syntax configuration of CTU information. 符号化タイルデータのシンタックス構成である。13 shows a syntax structure of encoded tile data. CTUおよびQT情報のシンタックス表の構成例を示す図である。FIG. 13 is a diagram showing an example of the structure of a syntax table of CTU and QT information. MT(Multi Tree)情報のシンタックス表の構成例を示す図である。FIG. 11 is a diagram showing an example of the structure of a syntax table of MT (Multi Tree) information. CTUおよびQT情報のシンタックス表の構成例を示す図である。FIG. 13 is a diagram showing an example of the structure of a syntax table of CTU and QT information. マルチラインイントラ予測において、タイル内のCTU境界に応じて、イントラ参照ラインを定める動作を説明する図である。13 is a diagram illustrating an operation of determining an intra reference line according to a CTU boundary within a tile in multi-line intra prediction. マルチラインイントラ予測において、タイル内のCTU境界に応じて、イントラ参照ラインを定める動作を説明するフローチャートである。13 is a flowchart illustrating an operation of determining an intra reference line according to a CTU boundary within a tile in multi-line intra prediction. マルチラインイントラ予測において、タイル内のCTU境界に応じて、イントラ参照ラインを定める動作を説明するフローチャートである。13 is a flowchart illustrating an operation of determining an intra reference line according to a CTU boundary within a tile in multi-line intra prediction. マージ予測パラメータ導出部の構成を示す概略図である。FIG. 13 is a schematic diagram showing a configuration of a merge prediction parameter derivation unit. 参照ピクチャ内の動きベクトルを時間動きベクトルとして参照する処理の例を示す図である。FIG. 11 is a diagram illustrating an example of a process of referring to a motion vector in a reference picture as a temporal motion vector. 参照ピクチャと対象ピクチャが同じタイル分割である場合の対象CTUと動きベクトルを参照範囲の関係を示す図である。A diagram showing the relationship between a target CTU, a motion vector, and a reference range when the reference picture and the target picture are divided into the same tiles. マルチラインイントラ予測における、シンタックス構成を示す図である。FIG. 13 is a diagram showing a syntax configuration in multi-line intra prediction. ピクチャをCTUの整数倍に制限されないサイズのタイルに分割する場合における、MPM導出処理を示すフローチャートである。13 is a flowchart showing an MPM derivation process when a picture is divided into tiles of a size not limited to an integer multiple of a CTU. ピクチャをCTUの整数倍に制限されないサイズのタイルに分割する場合における、MPM導出処理を示すフローチャートである。13 is a flowchart showing an MPM derivation process when a picture is divided into tiles of a size not limited to an integer multiple of a CTU.

(第1の実施形態)
以下、図面を参照しながら本発明の実施形態について説明する。
(First embodiment)
Hereinafter, an embodiment of the present invention will be described with reference to the drawings.

図22は、本実施形態に係る画像伝送システム1の構成を示す概略図である。 Figure 22 is a schematic diagram showing the configuration of an image transmission system 1 according to this embodiment.

画像伝送システム1は、符号化対象画像を符号化した符号化ストリームを伝送し、伝送された符号化ストリームを復号し画像を表示するシステムである。画像伝送システム1は、動画像符号化装置(画像符号化装置)11、ネットワーク21、動画像復号装置(画像復号装置)31、及び動画像表示装置(画像表示装置)41を含んで構成される。 The image transmission system 1 is a system that transmits an encoded stream obtained by encoding an image to be encoded, and decodes the transmitted encoded stream to display an image. The image transmission system 1 includes a video encoding device (image encoding device) 11, a network 21, a video decoding device (image decoding device) 31, and a video display device (image display device) 41.

動画像符号化装置11には画像Tが入力される。 Image T is input to video encoding device 11.

ネットワーク21は、動画像符号化装置11が生成した符号化ストリームTeを動画像復号装置31に伝送する。ネットワーク21は、インターネット(Internet)、広域ネットワーク(WAN:Wide Area Network)、小規模ネットワーク(LAN:Local Area Network)またはこれ
らの組み合わせである。ネットワーク21は、必ずしも双方向の通信網に限らず、地上デジタル放送、衛星放送等の放送波を伝送する一方向の通信網であっても良い。また、ネットワーク21は、DVD(Digital Versatile Disc:登録商標)、BD(Blue-ray Disc:登録商標)
等の符号化ストリームTeを記録した記憶媒体で代替されても良い。
The network 21 transmits the encoded stream Te generated by the video encoding device 11 to the video decoding device 31. The network 21 is the Internet, a wide area network (WAN), a local area network (LAN), or a combination of these. The network 21 is not necessarily limited to a bidirectional communication network, and may be a unidirectional communication network that transmits broadcast waves such as terrestrial digital broadcasting and satellite broadcasting. The network 21 may also be a network that transmits digital media such as DVDs (Digital Versatile Discs: registered trademark), BDs (Blue-ray Discs: registered trademark), etc.
The encoded stream Te may be replaced by a storage medium having recorded thereon the encoded stream Te.

動画像復号装置31は、ネットワーク21が伝送した符号化ストリームTeのそれぞれを復号し、復号した1または複数の復号画像Tdを生成する。 The video decoding device 31 decodes each of the encoded streams Te transmitted by the network 21 and generates one or more decoded images Td.

動画像表示装置41は、動画像復号装置31が生成した1または複数の復号画像Tdの全部または一部を表示する。動画像表示装置41は、例えば、液晶ディスプレイ、有機EL(Electro-luminescence)ディスプレイ等の表示デバイスを備える。ディスプレイの形態としては、据え置き、モバイル、HMD等が挙げられる。また、動画像復号装置31が高い処理能力
を有する場合には、画質の高い画像を表示し、より低い処理能力しか有しない場合には、高い処理能力、表示能力を必要としない画像を表示する。
The video display device 41 displays all or part of one or more decoded images Td generated by the video decoding device 31. The video display device 41 includes a display device such as a liquid crystal display or an organic EL (Electro-luminescence) display. Examples of the display form include a stationary display, a mobile display, and an HMD. When the video decoding device 31 has high processing power, it displays high quality images, and when it has only low processing power, it displays images that do not require high processing power or display power.

<演算子>
本明細書で用いる演算子を以下に記載する。
<Operator>
The operators used in this specification are listed below.

>>は右ビットシフト、<<は左ビットシフト、&はビットワイズAND、|はビットワイズOR
、|=はOR代入演算子であり、||は論理和を示す。
>> is a right bit shift, << is a left bit shift, & is a bitwise AND, | is a bitwise OR
, |= is the OR assignment operator, and || indicates logical OR.

x?y:zは、xが真(0以外)の場合にy、xが偽(0)の場合にzをとる3項演算子である。 x?y:z is a ternary operator that takes y if x is true (non-zero) and z if x is false (0).

!は0を1、0以外を0に変換する演算を示す。 ! indicates an operation that converts 0 to 1 and non-zero to 0.

Clip3(a,b,c)は、cをa以上b以下の値にクリップする関数であり、c<aの場合にはaを返
し、c>bの場合にはbを返し、その他の場合にはcを返す関数である(ただし、a<=b)。
Clip3(a,b,c) is a function that clips c to a value greater than or equal to a and less than or equal to b. If c<a, it returns a, if c>b, it returns b, and otherwise it returns c (where a<=b).

abs(a)はaの絶対値を返す関数である。 abs(a) is a function that returns the absolute value of a.

Int(a)はaの整数値を返す関数である。 Int(a) is a function that returns the integer value of a.

floor(a)はa以下の最大の整数を返す関数である。 floor(a) is a function that returns the largest integer less than or equal to a.

ceil(a)はa以上の最大の整数を返す関数である。 ceil(a) is a function that returns the largest integer greater than or equal to a.

a/dはdによるaの除算(小数点以下切り捨て)を表す。 a/d represents the division of a by d (truncated to an integer).

<符号化ストリームTeの構造>
本実施形態に係る動画像符号化装置11および動画像復号装置31の詳細な説明に先立って、動画像符号化装置11によって生成され、動画像復号装置31によって復号される符号化ストリームTeのデータ構造について説明する。
<Structure of the coded stream Te>
Before describing in detail the video encoding device 11 and the video decoding device 31 according to this embodiment, the data structure of the encoded stream Te generated by the video encoding device 11 and decoded by the video decoding device 31 will be described.

図1は、符号化ストリームTeにおけるデータの階層構造を示す図である。符号化ストリ
ームTeは、例示的に、シーケンス、およびシーケンスを構成する複数のピクチャを含む。図1の(a)~(f)は、それぞれ、シーケンスSEQを既定する符号化ビデオシーケンス、ピクチャPICTを規定する符号化ピクチャ、スライスSを規定する符号化スライス、スライスデー
タを規定する符号化スライスデータ、符号化スライスデータに含まれる符号化ツリーユニット、符号化ツリーユニットに含まれる符号化ユニットを示す図である。
Fig. 1 is a diagram showing a hierarchical structure of data in an encoded stream Te. The encoded stream Te illustratively includes a sequence and a plurality of pictures constituting the sequence. (a) to (f) of Fig. 1 are diagrams showing an encoded video sequence that defines a sequence SEQ, an encoded picture that defines a picture PICT, an encoded slice that defines a slice S, encoded slice data that defines slice data, an encoding tree unit included in the encoded slice data, and an encoding unit included in the encoding tree unit, respectively.

(符号化ビデオシーケンス)
符号化ビデオシーケンスでは、処理対象のシーケンスSEQを復号するために動画像復号
装置31が参照するデータの集合が規定されている。シーケンスSEQは、図1(a)に示すよう
に、ビデオパラメータセット(Video Parameter Set)、シーケンスパラメータセットSPS(Sequence Parameter Set)、ピクチャパラメータセットPPS(Picture Parameter Set)、ピクチャPICT、及び、付加拡張情報SEI(Supplemental Enhancement Information)を
含んでいる。
(Coded Video Sequence)
In the coded video sequence, a set of data that the video decoding device 31 refers to in order to decode the sequence SEQ to be processed is specified. As shown in Fig. 1(a), the sequence SEQ includes a video parameter set (Video Parameter Set), a sequence parameter set SPS (Sequence Parameter Set), a picture parameter set PPS (Picture Parameter Set), a picture PICT, and supplemental enhancement information SEI (Supplemental Enhancement Information).

ビデオパラメータセットVPSは、複数のレイヤから構成されている動画像において、複
数の動画像に共通する符号化パラメータの集合および動画像に含まれる複数のレイヤおよび個々のレイヤに関連する符号化パラメータの集合が規定されている。
The video parameter set VPS specifies a set of coding parameters common to multiple videos composed of multiple layers, as well as a set of coding parameters related to multiple layers and each individual layer included in the video.

シーケンスパラメータセットSPSでは、対象シーケンスを復号するために動画像復号装
置31が参照する符号化パラメータの集合が規定されている。例えば、ピクチャの幅や高さが規定される。なお、SPSは複数存在してもよい。その場合、PPSから複数のSPSの何れか
を選択する。
The sequence parameter set SPS specifies a set of coding parameters that the video decoding device 31 refers to in order to decode the target sequence. For example, the width and height of a picture are specified. Note that there may be multiple SPSs. In that case, one of the multiple SPSs is selected from the PPS.

ピクチャパラメータセットPPSでは、対象シーケンス内の各ピクチャを復号するために
動画像復号装置31が参照する符号化パラメータの集合が規定されている。例えば、ピクチャの復号に用いられる量子化幅の基準値(pic_init_qp_minus26)や重み付き予測の適用
を示すフラグ(weighted_pred_flag)が含まれる。なお、PPSは複数存在してもよい。そ
の場合、対象シーケンス内の各ピクチャから複数のPPSの何れかを選択する。
The picture parameter set PPS specifies a set of coding parameters that the video decoding device 31 refers to in order to decode each picture in the target sequence. For example, the picture parameter set PPS includes a reference value of the quantization width (pic_init_qp_minus26) used in decoding the picture and a flag (weighted_pred_flag) indicating the application of weighted prediction. Note that there may be multiple PPSs. In that case, one of the multiple PPSs is selected for each picture in the target sequence.

(符号化ピクチャ)
符号化ピクチャでは、処理対象のピクチャPICTを復号するために動画像復号装置31が参照するデータの集合が規定されている。ピクチャPICTは、図1(b)に示すように、スライス0~スライスNS-1を含む(NSはピクチャPICTに含まれるスライスの総数)。
(Encoded Picture)
A coded picture defines a set of data that the video decoding device 31 refers to in order to decode a picture PICT to be processed. As shown in FIG. 1B, the picture PICT includes slices 0 to NS-1 (NS is the total number of slices included in the picture PICT).

なお、以下、スライス0~スライスNS-1のそれぞれを区別する必要が無い場合、符号の
添え字を省略して記述することがある。また、以下に説明する符号化ストリームTeに含まれるデータであって、添え字を付している他のデータについても同様である。
In the following description, when there is no need to distinguish between slices 0 to NS-1, the subscripts of the symbols may be omitted. The same applies to other data that are included in the coded stream Te and that are to be described below and that have subscripts.

(符号化スライス)
符号化スライスでは、処理対象のスライスSを復号するために動画像復号装置31が参照
するデータの集合が規定されている。スライスは、図1(c)に示すように、スライスヘッダ、および、スライスデータを含んでいる。
(Coding Slice)
A coded slice defines a set of data to be referenced by the video decoding device 31 in order to decode a target slice S. As shown in Fig. 1(c), a slice includes a slice header and slice data.

スライスヘッダには、対象スライスの復号方法を決定するために動画像復号装置31が参照する符号化パラメータ群が含まれる。スライスタイプを指定するスライスタイプ指定情報(slice_type)は、スライスヘッダに含まれる符号化パラメータの一例である。 The slice header includes a set of coding parameters that the video decoding device 31 refers to in order to determine the decoding method for the target slice. Slice type specification information (slice_type) that specifies the slice type is an example of a coding parameter included in the slice header.

スライスタイプ指定情報により指定可能なスライスタイプとしては、(1)符号化の際にイントラ予測のみを用いるIスライス、(2)符号化の際に単方向予測、または、イントラ予測を用いるPスライス、(3)符号化の際に単方向予測、双方向予測、または、イントラ予測を用いるBスライスなどが挙げられる。なお、インター予測は、単予測、双予測に限定されず、より多くの参照ピクチャを用いて予測画像を生成してもよい。以下、P
、Bスライスと呼ぶ場合には、インター予測を用いることができるブロックを含むスライ
スを指す。
Slice types that can be specified by the slice type specification information include (1) an I slice that uses only intra prediction when encoding, (2) a P slice that uses unidirectional prediction or intra prediction when encoding, and (3) a B slice that uses unidirectional prediction, bidirectional prediction, or intra prediction when encoding. Note that inter prediction is not limited to uni-prediction or bi-prediction, and a predicted image may be generated using more reference pictures. Hereinafter, P
, B slice refers to a slice that includes blocks for which inter prediction can be used.

なお、スライスヘッダは、ピクチャパラメータセットPPSへの参照(pic_parameter_set_id)を含んでいても良い。 Note that the slice header may also include a reference to the picture parameter set PPS (pic_parameter_set_id).

(符号化スライスデータ)
符号化スライスデータでは、処理対象のスライスデータを復号するために動画像復号装置31が参照するデータの集合が規定されている。スライスデータは、図1(d)に示すように、CTUを含んでいる。CTUは、スライスを構成する固定サイズ(例えば128x128)のブロック
であり、最大符号化単位(LCU:Largest Coding Unit)と呼ぶこともある。
(Encoded slice data)
The coded slice data defines a set of data to be referenced by the video decoding device 31 in order to decode the slice data to be processed. As shown in Fig. 1(d), the slice data includes a CTU. A CTU is a block of a fixed size (e.g., 128x128) that constitutes a slice, and is also called a Largest Coding Unit (LCU).

(タイル)
図3(a)はピクチャをN個のタイル(実線の矩形、図はN=9の例)に分割した例を示す図
である。タイルはさらに複数のCTU(破線の矩形)に分割される。図3(a)の中央に示すように、タイルの左上座標を(xTile,yTile)、幅をwTile、高さをhTileと記す。またピクチ
ャの幅をwPict、高さをhPictと記す。なお、タイルの分割数やサイズに関する情報をタイル情報と呼び、詳細は後述する。xTile、yTile、wTile、hTile、wPict、hPictの単位は画素である。ピクチャの幅、高さは図4(a)に示すsequence_parameter_set_rbsp()(SPSと
称す)で通知される、pic_width_in_luma_samples、pic_height_in_luma_samplesをセッ
トする。
(tile)
FIG. 3(a) is a diagram showing an example of dividing a picture into N tiles (solid rectangles, the diagram shows an example where N=9). The tiles are further divided into multiple CTUs (dashed rectangles). As shown in the center of FIG. 3(a), the upper left coordinates of the tile are denoted as (xTile, yTile), its width as wTile, and its height as hTile. The width of the picture is denoted as wPict, and its height as hPict. Note that information about the number of tiles divided and their sizes is called tile information, and will be described in detail later. The units of xTile, yTile, wTile, hTile, wPict, and hPict are pixels. The width and height of the picture are set in pic_width_in_luma_samples and pic_height_in_luma_samples, which are notified by sequence_parameter_set_rbsp() (referred to as SPS) shown in FIG. 4(a).

wPict = pic_width_in_luma_samples
hPict = pic_height_in_luma_samples
図3(b)はピクチャをタイルに分割した時の、CTUの符号化、復号順序を示す図である。各タイルに記載されている番号はTileId(ピクチャ内のタイルの識別子)であり、ピクチャ内のタイルに対し左上から右下にラスタスキャン順で番号TileIdを割り当ててもよい。また、CTUは各タイル内を左上から右下へラスタスキャン順に処理され、1つのタイル内
での処理が終わると、次のタイル内のCTUが処理される。
wPict = pic_width_in_luma_samples
hPict = pic_height_in_luma_samples
Fig. 3(b) shows the coding and decoding order of CTUs when a picture is divided into tiles. The number written on each tile is a TileId (a tile identifier within a picture), and The tiles in the image may be assigned TileId numbers in raster scan order from top left to bottom right. Also, the CTU is processed in raster scan order from top left to bottom right within each tile, and processing within one tile is completed. Then, the CTU in the next tile is processed.

図3(c)は時間方向に連続するタイルを示す図である。図3(c)に示されるように、ビデオシーケンスは、時間方向に連続する複数のピクチャから構成されている。タイルシーケンスは、時間方向に連続する1つ以上の時刻のタイルから構成されている。図中wのTile(n,tk)は、時刻tkにおけるTileId=nのタイルを表す。なお、図中のCVS(Coded Video Sequence)は、あるイントラピクチャから復号順で別のイントラピクチャの直前のピクチャまでのピクチャ群である。 Figure 3(c) is a diagram showing tiles that are consecutive in the time direction. As shown in Figure 3(c), a video sequence is composed of multiple pictures that are consecutive in the time direction. A tile sequence is composed of tiles at one or more times that are consecutive in the time direction. Tile(n,tk) in the figure w represents the tile with TileId=n at time tk. Note that the CVS (Coded Video Sequence) in the figure is a group of pictures from one intra picture to the picture immediately preceding another intra picture in decoding order.

図4は、タイル情報等に関するシンタックスの例である。 Figure 4 is an example of syntax for tile information, etc.

図4(b)に示すPPS(pic_parameter_set_rbsp())で、タイルに関するパラメータtile_parameters()を通知する。以下、パラメータを通知するとは、パラメータを符号化データ
(ビットストリーム)に含めることを意味し、動画像符号化装置では当該パラメータを符号化し、動画像復号装置では当該パラメータを復号する。tile_parameters()には、図4(c)に示すように、tileが存在するか否かを示すtile_enabled_flagが1の場合、タイル情報tile_info()を通知する。また、tile_enabled_flagが1の場合、タイルが時間的に連続す
る複数のピクチャにわたって独立に復号できるか否かを示すindependent_tiles_flag(independent_decoding_tile_flag)を通知する。independent_tiles_flagが0の場合、タイル
は、参照ピクチャ中の隣接タイルを参照して復号する(独立に復号できない)。independent_tiles_flagが1の場合、参照ピクチャ中の隣接タイルを参照せずに復号する。タイル
を用いる場合、independent_tiles_flagの値によらず、対象ピクチャ中の隣接タイルを参照せずに復号するため、複数のタイルを並列に復号することができる。このindependent_tiles_flagフラグは、タイルグループ単位やタイル単位など領域単位のフラグindependent_decoding_picture_region_flagであってもよい。なおindependent_tiles_flagは1の場合に独立(ピクチャ間参照なし)、0の場合に従属(ピクチャ間参照あり)であったが、0と1が逆のフラグでもよい。例えば、タイル時ピクチャ間参照可能フラグtile_inpicture_ref_enabled_flagという名前で0の時に独立、1の時に従属となるフラグでもよい。
図4(c)に示すように、independent_tiles_flagが0の場合に参照ピクチャにかけるタイル
境界でのループフィルタのオンオフを示す、loop_filter_across_tiles_enable_flagを伝送(present)する。independent_tiles_flagが1の場合において、loop_filter_across_tiles_enable_flagを伝送(present)せずに常に0としてもよい。
In the PPS (pic_parameter_set_rbsp()) shown in FIG. 4B, a tile-related parameter tile_parameters() is notified. Hereinafter, notifying a parameter means including the parameter in the encoded data (bit stream), and the video encoding device encodes the parameter, and the video decoding device decodes the parameter. As shown in FIG. 4C, when tile_enabled_flag indicating whether a tile exists is 1, tile_parameters() notifies tile information tile_info(). When tile_enabled_flag is 1, independent_tiles_flag (independent_decoding_tile_flag) indicating whether a tile can be decoded independently across multiple pictures that are consecutive in time is notified. When independent_tiles_flag is 0, the tile is decoded by referring to adjacent tiles in the reference picture (it cannot be decoded independently). When independent_tiles_flag is 1, the tile is decoded without referring to adjacent tiles in the reference picture. When tiles are used, decoding is performed without referring to adjacent tiles in the target picture regardless of the value of independent_tiles_flag, so that multiple tiles can be decoded in parallel. This independent_tiles_flag flag may be a flag independent_decoding_picture_region_flag for each region, such as a tile group unit or a tile unit. Note that independent_tiles_flag is independent (no inter-picture reference) when it is 1 and dependent (with inter-picture reference) when it is 0, but a flag with 0 and 1 reversed may also be used. For example, a flag named tile_inpicture_ref_enabled_flag, which is independent when it is 0 and dependent when it is 1, may be used.
As shown in Fig. 4(c), loop_filter_across_tiles_enable_flag is transmitted (presented), which indicates whether the loop filter at the tile boundary to be applied to the reference picture is on or off when independent_tiles_flag is 0. When independent_tiles_flag is 1, loop_filter_across_tiles_enable_flag may be always set to 0 without being transmitted (presented).

なお、シーケンスを通してタイルを独立に処理する場合、独立タイルフラグindependent_tiles_flagは図4(a)に示すようにSPSで通知してもよい。 When processing tiles independently throughout a sequence, the independent tile flag independent_tiles_flag may be signaled in the SPS as shown in Figure 4(a).

タイル情報tile_info()は、例えば図4(d)に示すように、num_tile_columns_minus1、num_tile_rows_minus1、tile_unit_width_idc、tile_unit_height_idc、uniform_spacing_flag、column_width_in_unit_minus1[i]、row_height_in_unit_minus1[i]である。ここで、num_tile_columns_minus1、num_tile_rows_minus1は各々ピクチャ内の水平、垂直方向
のタイル数M、Nから各々1を引いた値である。uniform_spacing_flagはピクチャが可能な
限り均等にタイル分割されるか否かを示すフラグである。uniform_spacing_flagの値が1
の場合、ピクチャの各タイルの幅、高さは所定のサイズを単位として可能な限り等しくなるよう、ピクチャ内の水平、垂直方向のタイル数と、タイルの最小単位を示す識別子(タイルユニット識別子)(tile_unit_width_idc、tile_unit_height_idc)から動画像符号
化装置、動画像復号装置(ヘッダ復号部3020)において、タイルの幅、高さを導出する。
The tile information tile_info() is, for example, num_tile_columns_minus1, num_tile_rows_minus1, tile_unit_width_idc, tile_unit_height_idc, uniform_spacing_flag, column_width_in_unit_minus1[i], and row_height_in_unit_minus1[i], as shown in FIG. 4(d). Here, num_tile_columns_minus1 and num_tile_rows_minus1 are the values obtained by subtracting 1 from the number of tiles M and N in the horizontal and vertical directions in the picture, respectively. uniform_spacing_flag is a flag indicating whether the picture is divided into tiles as evenly as possible. When the value of uniform_spacing_flag is 1,
In this case, the width and height of each tile in the picture are derived in the video encoding device and video decoding device (header decoding unit 3020) from the number of tiles in the horizontal and vertical directions in the picture and an identifier indicating the smallest unit of a tile (tile unit identifier) (tile_unit_width_idc, tile_unit_height_idc) so that the width and height of each tile in the picture are as equal as possible, using a specified size as a unit.

ヘッダ復号部3020は、タイルユニット識別子tile_unit_width_idc、tile_unit_height_idcからタイルの最小単位(タイルの単位サイズ)wUnitTile、hUnitTileを導出する(詳
細は後述)。タイルの単位サイズをCTUのサイズの整数倍に限定されないタイルを、以下、フレキシブルタイルと呼ぶ。
The header decoding unit 3020 derives the minimum unit of a tile (unit size of a tile) wUnitTile and hUnitTile from the tile unit identifiers tile_unit_width_idc and tile_unit_height_idc (details will be described later). A tile whose unit size is not limited to an integer multiple of the CTU size will be referred to as a flexible tile hereinafter.

wUnitTile = 1<<(log2CbSize+tile_unit_width_idc)
hUnitTile = 1<<(log2CbSize+tile_unit_height_idc)
ヘッダ復号部3020は、ピクチャ内の水平、垂直方向のタイル数M、Nを以下で導出する。MはnumTileColumns、NはnumTileRowsである。
wUnitTile = 1<<(log2CbSize+tile_unit_width_idc)
hUnitTile = 1<<(log2CbSize+tile_unit_height_idc)
The header decoding unit 3020 derives the number of tiles M and N in the horizontal and vertical directions in a picture as follows, where M is numTileColumns and N is numTileRows.

M = num_tile_columns_minus1+1
N = num_tile_rows_minus1+1
numTileColumns = M = num_tile_columns_minus1+1
numTileRows = N = num_tile_columns_minus1+1
ヘッダ復号部3020は、タイルの最小サイズ(最小単位)wUnitTile、hUnitTileの倍数となるように、タイルサイズを以下で導出する。ここで、wPictInUnitTileとhPictInUnitTileは、それぞれ、wPictおよびhPictをwUnitTileおよびhUnitTileを単位として表した値である。
M = num_tile_columns_minus1+1
N = num_tile_rows_minus1+1
numTileColumns = M = num_tile_columns_minus1+1
numTileRows = N = num_tile_columns_minus1+1
The header decoder 3020 derives the tile size as follows so that the tile size is a multiple of the minimum tile size (minimum unit) wUnitTile and hUnitTile: Here, wPictInUnitTile and hPictInUnitTile are values that express wPict and hPict in units of wUnitTile and hUnitTile, respectively.

wPictInUnitTile = ceil(wPict/wUnitTile)
hPictInUnitTile = ceil(hPict/hUnitTile)
wTile[m] = ceil(wPictInUnitTile/M)*wUnitTile (0<=m<M)
hTile[n] = ceil(hPictInUnitTile/N)*hUnitTile (0<=n<N)
あるいはヘッダ復号部3020は、下式で導出してもよい。
wPictInUnitTile = ceil(wPict/wUnitTile)
hPictInUnitTile = ceil(hPict/hUnitTile)
wTile[m] = ceil(wPictInUnitTile/M)*wUnitTile (0<=m<M)
hTile[n] = ceil(hPictInUnitTile/N)*hUnitTile (0<=n<N)
Alternatively, the header decoder 3020 may derive it using the following formula.

wTile[m] = floor(wPict/M/wUnitTile)*wUnitTile (0<=m<M)
hTile[n] = floor(hPict/N/hUnitTile)*hUnitTile (0<=n<N)
あるいはヘッダ復号部3020は、下式で導出してもよい。
wTile[m] = floor(wPict/M/wUnitTile)*wUnitTile (0<=m<M)
hTile[n] = floor(hPict/N/hUnitTile)*hUnitTile (0<=n<N)
Alternatively, the header decoder 3020 may derive it using the following formula.

for(m=0;m<M;m++)
wTile[m] = ((m+1)*wPictInUnitTile/M-m*wPictInUnitTile/M)*wUnitTile
for(n=0;n<N;n++)
hTile[n] = ((n+1)*hPictInUnitTile/N-n*hPictInUnitTile/N)*hUnitTile
uniform_spacing_flagの値が0の場合、ピクチャの各タイルの幅、高さは個別に設定さ
れる。動画像符号化装置では、各タイルの幅column_width_in_unit_minus1[i](図3のwTileを、wUnitTileを単位として表現した値)、高さrow_height_in_unit_minus1[i](図3のhTileを、hUnitTileを単位として表現した値)をタイル毎に符号化する。動画像復号装置のヘッダ復号部3020では、符号化された(column_width_in_unit_minus1[],row_width_in_unit_minus1[])に基づいてタイル毎に、タイルサイズwTile[m]、hTile[n]を下記のように復号する。
for(m=0;m<M;m++)
wTile[m] = ((m+1)*wPictInUnitTile/Mm*wPictInUnitTile/M)*wUnitTile
for(n=0;n<N;n++)
hTile[n] = ((n+1)*hPictInUnitTile/Nn*hPictInUnitTile/N)*hUnitTile
When the value of uniform_spacing_flag is 0, the width and height of each tile of the picture are set individually. The video encoding device encodes the width column_width_in_unit_minus1[i] (a value obtained by expressing wTile in FIG. 3 in units of wUnitTile) and height row_height_in_unit_minus1[i] (a value obtained by expressing hTile in FIG. 3 in units of hUnitTile) of each tile for each tile. The header decoding unit 3020 of the video decoding device decodes the tile sizes wTile[m] and hTile[n] for each tile based on the encoded (column_width_in_unit_minus1[], row_width_in_unit_minus1[]) as follows:

wTile[m] = (column_width_in_unit_minus1[m]+1)*wUnitTile (0<=m<M-1)
hTile[n] = (row_height_in_unit_minus1[m]+1)*hUnitTile (0<=n<N-1)
wTile[M-1] = ceil((wPict-sum_m(wTile[m]))/wUnitTile)*wUnitTile
hTile[N-1] = ceil((hPict-sum_n(hTile[n]))/hUnitTile)*hUnitTile
ここで、sum_m(wTile[m])は、wTile(0<=m<M-1)の総和、sum_n(hTile[n])はhTile(0<=n<N-1)の総和を表す。
wTile[m] = (column_width_in_unit_minus1[m]+1)*wUnitTile (0<=m<M-1)
hTile[n] = (row_height_in_unit_minus1[m]+1)*hUnitTile (0<=n<N-1)
wTile[M-1] = ceil((wPict-sum_m(wTile[m]))/wUnitTile)*wUnitTile
hTile[N-1] = ceil((hPict-sum_n(hTile[n]))/hUnitTile)*hUnitTile
Here, sum_m(wTile[m]) represents the sum of wTile (0<=m<M-1), and sum_n(hTile[n]) represents the sum of hTile (0<=n<N-1).

あるいは、画面端にあたるwTile[M-1]およびhTile[N-1]は、ピクチャサイズがタイルの最小単位の整数倍でない場合には、単に下記のようにしてもよい。 Alternatively, if the picture size is not an integer multiple of the smallest unit of a tile, wTile[M-1] and hTile[N-1], which correspond to the edges of the screen, can simply be set as follows:

wTile[M-1] = wPict-sum_m(wTile[m])
hTile[N-1] = hPict-sum_n(hTile[n])
ただしこの場合は、処理単位がタイルの最小単位あるいは最小CUサイズに合致するように、パディングやクロッピングなどにより画面端が適切に処理されることが望ましい。
wTile[M-1] = wPict-sum_m(wTile[m])
hTile[N-1] = hPict-sum_n(hTile[n])
In this case, however, it is desirable to appropriately process the screen edges by padding, cropping, or the like so that the processing unit matches the minimum unit of a tile or the minimum CU size.

なお、位置(m,n)のタイルは識別子TileIdでも表され、TileIdは下記で算出してもよい
The tile at position (m, n) is also represented by an identifier TileId, which may be calculated as follows:

TileId = n*M+m
あるいは、TileIdが既知の場合、TileIdからタイルの位置を示す(m,n)を算出してもよ
い。
TileId = n*M+m
Alternatively, if the TileId is known, (m, n) indicating the position of the tile may be calculated from the TileId.

m = TileId%M
n = TileId/M
ヘッダ復号部3020は、タイルの大きさの単位を示すタイルユニット情報を復号する。タイルの幅と高さの最小単位をwUnitTile、hUnitTileとする場合、タイルの幅と高さは、各々wUnitTile、hUnitTileの整数倍に設定される。
m = TileId%M
n = TileId/M
The header decoder 3020 decodes tile unit information indicating the unit of the tile size. If the minimum units of the tile width and height are wUnitTile and hUnitTile, the tile width and height are set to integer multiples of wUnitTile and hUnitTile, respectively.

例えば、ヘッダ復号部3020は、符号化データからタイルユニット識別子としてtile_unit_width_idcとtile_unit_height_idcを復号する。タイルの大きさの単位は符号化ユニッ
トCUの最小サイズの定数倍(1を含む)としてもよい。CTUの幅と高さが等しい正方形
であれば、tile_unit_size_idcのみ復号して、tile_unit_height_idc=tile_unit_width_idc=tile_unit_size_idcとし、タイルの大きさの単位を導出してもよい。このとき以下の
明細書ではtile_unit_width_idc、tile_unit_height_idcをtile_unit_size_idcと読みか
えてもよい(この場合常に、wUnitTile=hUnitTile=UnitTileSizeY)。
For example, the header decoding unit 3020 decodes tile_unit_width_idc and tile_unit_height_idc as tile unit identifiers from the encoded data. The unit of the tile size may be a constant multiple (including 1) of the minimum size of the coding unit CU. If the CTU is a square with the same width and height, only tile_unit_size_idc may be decoded and the unit of the tile size may be derived by setting tile_unit_height_idc = tile_unit_width_idc = tile_unit_size_idc. In this case, in the following specification, tile_unit_width_idc and tile_unit_height_idc may be read as tile_unit_size_idc (in this case, wUnitTile = hUnitTile = UnitTileSizeY at all times).

(設定方法1)
ヘッダ復号部3020は、タイルユニット識別子が0である場合には、タイルの大きさの単位をCTU単位として設定する。具体的には、tile_unit_width_idc=0の場合にwUnitTile=ctuWidth、tile_unit_width_idc=0の場合にhUnitTile=ctuHeightに設定する。ここで、ctuWidthはCTUの幅、ctuHeightはCTUの高さである。
(Setting method 1)
If the tile unit identifier is 0, the header decoding unit 3020 sets the unit of the tile size as a CTU unit. Specifically, if tile_unit_width_idc=0, it sets wUnitTile=ctuWidth, and if tile_unit_width_idc=0, it sets hUnitTile=ctuHeight. Here, ctuWidth is the width of the CTU, and ctuHeight is the height of the CTU.

さらにヘッダ復号部3020は、以下のように、タイルユニット識別子が0以外である場合には、タイルの大きさの単位を符号化ユニットCUの最小サイズの定数倍になるように設定しても良い。 Furthermore, the header decoding unit 3020 may set the unit of tile size to be a constant multiple of the minimum size of the coding unit CU when the tile unit identifier is other than 0, as follows:

wUnitTile = (tile_unit_width_idc==0) ? ctuWidth : 1<<(log2CbSize+tile_unit_width_idc-1)
hUnitTile = (tile_unit_height_idc==0) ? ctuHeight : 1<<(log2CbSize+tile_unit_height_idc-1)
ここで、log2CbSize=log2(minCU)、minCUは符号化ユニットCUの最小サイズである。
wUnitTile = (tile_unit_width_idc==0) ? ctuWidth : 1<<(log2CbSize+tile_unit_width_idc-1)
hUnitTile = (tile_unit_height_idc==0) ? ctuHeight : 1<<(log2CbSize+tile_unit_height_idc-1)
where log2CbSize=log2(minCU), where minCU is the minimum size of a coding unit CU.

なおCTUサイズctuSize=ctuWidth=ctuHeightは、以下のように、最小CUサイズを定める
シンタックス要素log2_min_luma_coding_block_size_minus3と、CUサイズを最小CUサイズとの差分との対数で示すシンタックス要素log2_diff_max_min_luma_coding_block_sizeを復号して導出しても良い。
Note that the CTU size ctuSize=ctuWidth=ctuHeight may be derived by decoding the syntax element log2_min_luma_coding_block_size_minus3 that defines the minimum CU size and the syntax element log2_diff_max_min_luma_coding_block_size that indicates the CU size as a logarithm of the difference from the minimum CU size, as follows.

log2CbSize = log2_min_luma_coding_block_size_minus3+3
log2CtuSize = log2CbSize+log2_diff_max_min_luma_coding_block_size
minCU = 1 << log2CbSize
ctuSize = 1 << log2CtuSize
なお、タイルユニット識別子!=0の場合には、タイル単位を符号化ユニットCUの最小サ
イズの定数倍(2の指数乗)に設定しても良い。
log2CbSize = log2_min_luma_coding_block_size_minus3+3
log2CtuSize = log2CbSize+log2_diff_max_min_luma_coding_block_size
minCU = 1 << log2CbSize
ctuSize = 1 << log2CtuSize
Note that when the tile unit identifier !=0, the tile unit may be set to a constant multiple (an exponential power of 2) of the minimum size of a coding unit CU.

wUnitTile = (tile_unit_width_idc==0) ? ctuWidth : 1<<(log2CbSize+ Log2DiffTileUnitSize)
hUnitTile = (tile_unit_height_idc==0) ? ctuHeight : 1<<(log2CbSize+ Log2DiffTileUnitSize)
ここでLog2DiffTileUnitSizeは、タイル単位を定める定数である。例えば1、2、3に設
定することで、タイル単位が最小CUサイズの4、8、16倍に設定される。例えば、CUサイズが4の場合には、8、16、32に設定される。さらに最大値をCTUサイズとなるようにクリッ
プしても良い。
wUnitTile = (tile_unit_width_idc==0) ? ctuWidth : 1<<(log2CbSize+ Log2DiffTileUnitSize)
hUnitTile = (tile_unit_height_idc==0) ? ctuHeight : 1<<(log2CbSize+ Log2DiffTileUnitSize)
Here, Log2DiffTileUnitSize is a constant that determines the tile unit. For example, by setting it to 1, 2, or 3, the tile unit is set to 4, 8, or 16 times the minimum CU size. For example, if the CU size is 4, In some cases, it is set to 8, 16, or 32. Furthermore, the maximum value may be clipped to the CTU size.

(設定方法2)
タイル情報は0から所定の範囲の数のタイルユニット識別子tile_unit_width_idcであ
り、タイルの大きさの単位を1<<(log2(minCU)+タイルユニット識別子)で設定して
もよい。すなわち、ヘッダ復号部3020は、tile_unit_width_idc、tile_unit_height_idc
(もしくはtile_unit_size_idc)を復号し、タイル単位を以下のように設定してもよい。
(Setting method 2)
The tile information is a tile unit identifier tile_unit_width_idc ranging from 0 to a predetermined number, and the unit of the tile size may be set as 1 << (log2(minCU) + tile unit identifier).
(or tile_unit_size_idc) and set the tile unit as follows:

wUnitTile = 1<<(log2CbSize+tile_unit_width_idc)
hUnitTile = 1<<(log2CbSize+tile_unit_height_idc)
CTUの幅と高さが等しい正方形であれば、以上はtile_unit_size_idcを復号し以下のよ
うに設定することと同値である。以下、自明であるので、正方形のみの場合の説明は省略する。
wUnitTile = 1<<(log2CbSize+tile_unit_width_idc)
hUnitTile = 1<<(log2CbSize+tile_unit_height_idc)
If the CTU is a square with equal width and height, the above is equivalent to decoding tile_unit_size_idc and setting it as follows. The following is self-explanatory, so explanations for squares only will be omitted.

wUnitTile = hUnitTile = ctuSize>>tile_unit_size_idc
なお、タイルユニット識別子を明示的に符号化せず、タイル単位を符号化ユニットCUの最小サイズの定数倍(2の指数乗)に設定しても良い。
wUnitTile = hUnitTile = ctuSize>>tile_unit_size_idc
Note that the tile unit identifier may not be explicitly coded, and the tile unit may be set to a constant multiple (an exponential power of 2) of the minimum size of a coding unit CU.

wUnitTile = 1<<(log2CbSize+Log2DiffTileUnitSize)
hUnitTile = 1<<(log2CbSize+Log2DiffTileUnitSize)
ここでLog2DiffTileUnitSizeは、タイル単位を定める定数である。さらに最大値がCTU
サイズにクリップしても良い。
wUnitTile = 1<<(log2CbSize+Log2DiffTileUnitSize)
hUnitTile = 1<<(log2CbSize+Log2DiffTileUnitSize)
Here, Log2DiffTileUnitSize is a constant that defines the tile unit. Furthermore, the maximum value is CTU
You may clip it to size.

wUnitTile = min(ctuWidth,1<<(log2CbSize+Log2DiffTileUnitSize))
hUnitTile = min(ctuHeight1<<(log2CbSize+Log2DiffTileUnitSize))
(設定方法3)
タイル情報は、0から所定の範囲の数のタイルユニット識別子であり、タイルの大きさの単位をCTUサイズの2の指数乗分の1となるように、1<<(log2(CTUサイズ)-タ
イルユニット識別子)で設定することを特徴とする。すなわち、ヘッダ復号部3020は、tile_unit_width_idc、tile_unit_height_idc(もしくはtile_unit_size_idc)を復号し、
タイル単位を以下のように設定してもよい。
wUnitTile = min(ctuWidth,1<<(log2CbSize+Log2DiffTileUnitSize))
hUnitTile = min(ctuHeight1<<(log2CbSize+Log2DiffTileUnitSize))
(Setting method 3)
The tile information is a tile unit identifier ranging from 0 to a predetermined number, and the unit of tile size is set to 1/(log2(CTU size)-(CTU size)) so that the unit of tile size is 1/(exponential power of 2) of the CTU size. That is, the header decoding unit 3020 decodes tile_unit_width_idc, tile_unit_height_idc (or tile_unit_size_idc),
The tile units may be set as follows:

wUnitTile = 1<<(log2CtuWidthY-tile_unit_width_idc)
hUnitTile = 1<<(log2CtuHeightY-tile_unit_height_idc)
ここで、log2CtuWidthY=log2(ctuWidth)、log2CtuHeightY=log2(ctuHeight)である。
wUnitTile = 1<<(log2CtuWidthY-tile_unit_width_idc)
hUnitTile = 1<<(log2CtuHeightY-tile_unit_height_idc)
Here, log2CtuWidthY = log2(ctuWidth) and log2CtuHeightY = log2(ctuHeight).

なお、CTUサイズの幅と高さを同じ値に設定しても良い。 You can also set the width and height of the CTU size to the same value.

wUnitTile = 1<<(log2CtuSize-tile_unit_width_idc)
hUnitTile = 1<<(log2CtuSize-tile_unit_height_idc)
ここで、log2CtuSize=log2(ctuWidth)=log2(ctuHeight)である。
この場合、差分の対数での表現になるのでtile_unit_width_idcをlog2_diff_luma_tile_unit_sizeと呼ぶのも適当である。
wUnitTile = 1<<(log2CtuSize-tile_unit_width_idc)
hUnitTile = 1<<(log2CtuSize-tile_unit_height_idc)
Here, log2CtuSize = log2(ctuWidth) = log2(ctuHeight).
In this case, since the difference is expressed in logarithm, it is also appropriate to call tile_unit_width_idc log2_diff_luma_tile_unit_size.

なお、以下のようにタイル単位が8の倍数の最小サイズとなるようにクリップしても良
い。
Note that the tile unit may be clipped to the minimum size that is a multiple of 8 as follows:

wUnitTile = max(8, ctuWidth>>tile_unit_width_idc)
hUnitTile = max(8, ctuHeight>>tile_unit_height_idc)
これによって、常にタイル幅が8の倍数となるため(設定方法5)に示す効果も奏する。
wUnitTile = max(8, ctuWidth>>tile_unit_width_idc)
hUnitTile = max(8, ctuHeight>>tile_unit_height_idc)
This also produces the effect shown in (setting method 5) since the tile width is always a multiple of 8.

また、以下のように単位サイズをminCTUサイズとなるようにクリップしても良い。 You can also clip the unit size to the minCTU size as follows:

wUnitTile = max(minCTU, ctuWidth>>tile_unit_width_idc)
hUnitTile = max(minCTU, ctuHeight>>tile_unit_height_idc)
これによって、常にタイル幅がCTUの最小サイズの倍数となるため(設定方法5)に示す
効果も奏する。
wUnitTile = max(minCTU, ctuWidth>>tile_unit_width_idc)
hUnitTile = max(minCTU, ctuHeight>>tile_unit_height_idc)
This also produces the effect shown in (setting method 5) since the tile width is always a multiple of the minimum size of the CTU.

さらに、tile_unit_width_idcの取り得る範囲を制限しても良い。例えば、ctuWidth>>tile_unit_width_idcの最小値をminCTUとする場合、
ctuWidth>>tile_unit_width_idc >= minCTU
ctuWidth >= minCTU<< tile_unit_width_idc
ctuWidth >= minCTU * (1<<tile_unit_width_idc)
(1<<tile_unit_width_idc) <= ctuWidth/minCTU
tile_unit_width_idc <= log2(ctuWidth)-log2(minCTU)
であるから、tile_unit_width_idcを0以上log2(ctuWidth)-log2(minCTU)以下に制限する
。すなわち、動画像復号装置は、0以上log2(ctuWidth)-log2(minCTU)以下に制限された符号化データを復号することにより、minCTUの倍数であるタイル単位を用いることができる。
Furthermore, the range of tile_unit_width_idc may be restricted. For example, if the minimum value of ctuWidth>>tile_unit_width_idc is set as minCTU,
ctuWidth>>tile_unit_width_idc >= minCTU
ctuWidth >= minCTU<< tile_unit_width_idc
ctuWidth >= minCTU * (1<<tile_unit_width_idc)
(1<<tile_unit_width_idc) <= ctuWidth/minCTU
tile_unit_width_idc <= log2(ctuWidth)-log2(minCTU)
Therefore, tile_unit_width_idc is limited to be equal to or greater than 0 and equal to or less than log2(ctuWidth)-log2(minCTU). That is, the video decoding device can use a tile unit that is a multiple of minCTU by decoding encoded data that is limited to be equal to or greater than 0 and equal to or less than log2(ctuWidth)-log2(minCTU).

同様に、0以上log2(ctuWidth)-log2(8)=log2(ctuWidth)-3以下に制限された符号化データを復号することにより8の倍数であるタイル単位を用いることができる。8の倍数でなく16、32の倍数の場合には、上記の3(log2(8))を4、5とすればよい。 Similarly, by decoding the encoded data restricted to the range 0 to log2(ctuWidth)-log2(8)=log2(ctuWidth)-3, it is possible to use tile units that are multiples of 8. If the number is not a multiple of 8 but a multiple of 16 or 32, simply change the 3(log2(8)) above to 4 or 5.

(設定方法4)
タイル情報は、0から所定の範囲の数のタイルユニット識別子であり、タイルの大きさの単位をCTUサイズの2の指数乗分の1となるように、CTUサイズ>>タイルユニット
識別子で設定することを特徴とする。すなわち、ヘッダ復号部3020は、tile_unit_width_idc、tile_unit_height_idc(もしくはtile_unit_size_idc)を復号し、タイル単位を以
下のように設定してもよい。
(Setting method 4)
The tile information is a tile unit identifier ranging from 0 to a predetermined number, and is characterized in that the CTU size >> tile unit identifier is set so that the unit size of the tile is 1/the exponential power of the CTU size of 2. That is, the header decoding unit 3020 may decode tile_unit_width_idc and tile_unit_height_idc (or tile_unit_size_idc) and set the tile unit as follows:

wUnitTile = ctuWidth>>tile_unit_width_idc
hUnitTile = ctuHeight>>tile_unit_height_idc
設定方法3と設定方法4は同値であるから、tile_unit_width_idc、tile_unit_height_idc(もしくはtile_unit_size_idc)の制限は(設定方法3)で説明した方法が利用でき
る。
wUnitTile = ctuWidth>>tile_unit_width_idc
hUnitTile = ctuHeight>>tile_unit_height_idc
Since setting method 3 and setting method 4 are equivalent, the method described in setting method 3 can be used to limit tile_unit_width_idc and tile_unit_height_idc (or tile_unit_size_idc).

(設定方法5)
ヘッダ復号部3020は、タイルユニット識別子(tile_unit_width_idc、tile_unit_height_idc)を復号せず、所定の値TileUnitをwUnitTile、hUnitTileに設定する。所定の値TileUnitは8の倍数、特に8、16、32の何れかであることが好ましい。タイル情報tile_info()は図4(d)に替えて図23(d)のように通知され、ヘッダ復号部3020はこのタイル情報を復号
する。
(Setting method 5)
The header decoding unit 3020 does not decode the tile unit identifiers (tile_unit_width_idc, tile_unit_height_idc), but sets a predetermined value TileUnit to wUnitTile and hUnitTile. The predetermined value TileUnit is preferably a multiple of 8, particularly any of 8, 16, and 32. The tile information tile_info() is notified as shown in FIG. 23(d) instead of FIG. 4(d), and the header decoding unit 3020 decodes this tile information.

wUnitTile = TileUnit
hUnitTile = TileUnit
ここで、TileUnitは8あるいは16、32のように8の倍数とする。タイル単位を8の倍数と
すれば、画素のbitDepthが10bitなど8の倍数でない場合にも、タイル幅の画素データは8
の倍数とすることができる。これによりメモリ配置する場合にもタイル境界が常にバイト(8bit)境界となり、タイルをメモリに配置する場合において、タイル間にメモリのギャップが不要である。ギャップがなければ、ギャップ分のメモリは不要で、連続的に転送可能であることから、メモリサイズを低減できるとともに高速転送が可能という効果を奏する。さらに16の倍数であれば、タイル幅のデータを常に128bitの倍数とすることができ(bitDepth=8bitの場合)、多くのメモリ(例えばDDR)のバーストアクセスで高速アクセスが可能となる。
wUnitTile = TileUnit
hUnitTile = TileUnit
Here, TileUnit is a multiple of 8, such as 8, 16, or 32. If the tile unit is a multiple of 8, even if the pixel bitDepth is not a multiple of 8, such as 10 bits, the pixel data of the tile width will be 8 bits.
This allows the tile width to be a multiple of 16. As a result, when arranging in memory, the tile boundaries are always byte (8-bit) boundaries, and no memory gaps are required between tiles when arranging them in memory. If there are no gaps, no memory for the gaps is required and data can be transferred continuously, which has the effect of reducing memory size and enabling high-speed transfer. Furthermore, if the tile width is a multiple of 16, the data can always be a multiple of 128 bits (when bitDepth = 8 bits), enabling high-speed access with burst access to many memories (e.g. DDR).

さらに、16、32の場合には後述の最小CTUサイズと一致するという効果を奏する。 In addition, the values 16 and 32 have the effect of matching the minimum CTU size described below.

(設定方法6)
ヘッダ復号部3020は、タイルユニット識別子(tile_unit_width_idc、tile_unit_height_idc)を復号せず、所定の値TileUnitをwUnitTile、hUnitTileに設定する。所定の値TileUnitはCTUの最小サイズ(最小CTUサイズ)であることが好ましい。この場合、タイル情
報tile_info()は図4(d)に替えて図23(d)のように通知され、ヘッダ復号部3020はこのタイル情報を復号する。
(Setting method 6)
The header decoding unit 3020 does not decode the tile unit identifiers (tile_unit_width_idc, tile_unit_height_idc), and sets a predetermined value TileUnit to wUnitTile and hUnitTile. The predetermined value TileUnit is preferably the minimum size of a CTU (minimum CTU size). In this case, the tile information tile_info() is notified as shown in FIG. 23(d) instead of FIG. 4(d), and the header decoding unit 3020 decodes this tile information.

wUnitTile = TileUnit
hUnitTile = TileUnit
TileUnit = 1<<(log2_min_luma_coding_tree_block_size_minus4+4)
ここで、log2_min_luma_coding_block_size_minus4は、CTUの最小サイズの2のべき乗表
現から4を引いた値である。例えば、0、1、2、3であれば各々最小CTUサイズは、16、32、
64、128である。なお最小CTUサイズを定めるlog2_min_luma_coding_block_size_minus4はシンタックス要素として符号化データで符号化しても良いし定数でもよい。例えば定数の場合には、通例最小CTUサイズは、16、32であるため(設定方法5)と一致する。
wUnitTile = TileUnit
hUnitTile = TileUnit
TileUnit = 1<<(log2_min_luma_coding_tree_block_size_minus4+4)
Here, log2_min_luma_coding_block_size_minus4 is the power-of-two representation of the minimum CTU size minus 4. For example, if the values are 0, 1, 2, and 3, the minimum CTU sizes are 16, 32, and 4, respectively.
The minimum CTU size is 64, 128. The log2_min_luma_coding_block_size_minus4 that determines the minimum CTU size may be coded in the coded data as a syntax element or may be a constant. For example, if it is a constant, the minimum CTU size is usually 16, 32, which coincides with (setting method 5).

最小CTUサイズは、動画像復号装置の機能や能力を規定するプロファイルやレベルで設
定しても良い。プロファイルやレベルは、機器間のネゴーシエ―ションに用いられるため比較的上位のパラメータセットやヘッダ、例えば、SPSのシンタックス要素profile_idc、level_idcで伝送される。
The minimum CTU size may be set by a profile or level that specifies the functions and capabilities of the video decoder. The profile and level are used in negotiation between devices and are transmitted in a relatively high-level parameter set or header, for example, in the syntax elements profile_idc and level_idc of the SPS.

タイル単位を最小CTUサイズの倍数とする場合、タイル幅は常に最小CTUサイズの倍数となる。通例、ピクチャをメモリに格納する場合にはCTUサイズの取り得る範囲が限定的で
ある(例えば、16、32、64)であることに基づいてメモリ配置を最適化する。タイル幅がCTUサイズの整数倍(2の指数乗)であれば、ピクチャと同様の方法でタイルの場合もメモリ配置ができるので、画像を省メモリかつ高速アクセス可能となる効果を奏する。
When the tile unit is a multiple of the minimum CTU size, the tile width is always a multiple of the minimum CTU size. Typically, when storing a picture in memory, memory allocation is optimized based on the fact that the range of possible CTU sizes is limited (for example, 16, 32, 64). If the tile width is an integer multiple (an exponential power of 2) of the CTU size, memory allocation can be performed for tiles in the same way as for pictures, resulting in the effect of saving memory and enabling high-speed access to images.

(設定方法7)
タイル情報は、0から所定の範囲の数のタイルユニット識別子であり、タイルの大きさの単位を最小CTUサイズの整数倍(2の指数乗)となるように、1<<(log2(最小CTUサイズ)+タイルユニット識別子)で設定する。(設定方法7)では、タイルユニット識別子は最
小CTUサイズの倍数を対数表現したものである。すなわち、ヘッダ復号部3020は、tile_unit_width_idcを復号し、タイル単位を以下のように設定してもよい。
(Setting method 7)
The tile information is a tile unit identifier ranging from 0 to a specified number, and is set as 1<<(log2(minimum CTU size) + tile unit identifier) so that the unit of tile size is an integer multiple (an exponential power of 2) of the minimum CTU size. In (setting method 7), the tile unit identifier is a logarithmic representation of a multiple of the minimum CTU size. That is, the header decoding unit 3020 may decode tile_unit_width_idc and set the tile unit as follows:

wUnitTile = 1<<(log2CtuUnitSize+tile_unit_width_idc)
hUnitTile = 1<<(log2CtuUnitSize+tile_unit_height_idc)
ここで、CTUの最小サイズminCTU=ctuUnitSize=1<<(log2_min_luma_coding_tree_block_size_minus4+4)、log2CtuUnitSize=log2_min_luma_coding_tree_block_size_minus4+4で
あってもよい。
wUnitTile = 1<<(log2CtuUnitSize+tile_unit_width_idc)
hUnitTile = 1<<(log2CtuUnitSize+tile_unit_height_idc)
Here, the minimum size of CTU may be minCTU=ctuUnitSize=1<<(log2_min_luma_coding_tree_block_size_minus4+4), or log2CtuUnitSize=log2_min_luma_coding_tree_block_size_minus4+4.

(設定方法8)
タイル情報は、0から所定の範囲の数のタイルユニット識別子であり、タイルの大きさの単位を最大CTUサイズ>>タイルユニット識別子で設定する。(設定方法8)では、タイ
ルユニット識別子は最大CTUサイズの倍数(2のべき乗分の1倍)を対数表現したもので
ある。すなわち、ヘッダ復号部3020は、tile_unit_width_idcを復号し、タイル単位を以
下のように設定してもよい。
(Setting method 8)
The tile information is a tile unit identifier ranging from 0 to a predetermined number, and the unit of tile size is set as maximum CTU size >> tile unit identifier. In (setting method 8), the tile unit identifier is a logarithmic representation of a multiple of the maximum CTU size (1 times a power of 2). That is, the header decoding unit 3020 may decode tile_unit_width_idc and set the tile unit as follows:

wUnitTile = ctuUnitSize>>tile_unit_width_idc
hUnitTile = ctuUnitSize>>tile_unit_height_idc
(設定方法9)
(設定方法9)では、図24(a)に示すように、tile_parameters()およびタイル情報tile_info()をPPSではなく、SPSで通知する。図24(c)に示すように、タイルの最小単位はlog2_min_unit_tile_size_minus3で通知される。ヘッダ復号部3020はこのタイル情報を復号し、タイルの最小単位(wUnitTile、hUnitTile)を導出する。
wUnitTile = ctuUnitSize>>tile_unit_width_idc
hUnitTile = ctuUnitSize>>tile_unit_height_idc
(Setting method 9)
In (setting method 9), as shown in Fig. 24(a), tile_parameters() and tile information tile_info() are notified in SPS, not PPS. As shown in Fig. 24(c), is notified by log2_min_unit_tile_size_minus3. The header decoding unit 3020 decodes this tile information and derives the minimum unit of a tile (wUnitTile, hUnitTile).

wUnitTile = 1<<(log2_min_unit_tile_size_minus3+3)
hUnitTile = 1<<(log2_min_unit_tile_size_minus3+3)
ここでlog2_min_unit_tile_size_minus3は、タイルの最小単位の最小値の2のべき乗表現から3を引いた値であり、0以上の整数である。従ってタイルの最小単位は8以上である。
wUnitTile = 1<<(log2_min_unit_tile_size_minus3+3)
hUnitTile = 1<<(log2_min_unit_tile_size_minus3+3)
Here, log2_min_unit_tile_size_minus3 is the power-of-two representation of the minimum value of the minimum tile unit minus 3, and is an integer equal to or greater than 0. Therefore, the minimum tile unit is 8 or greater.

また別の例として、図25(a)に示すように、タイル情報としてlog2_diff_curr_min_unit_tile_sizeのみを通知してもよい。log2_diff_curr_min_unit_tile_sizeは、当該SPSでの
タイルサイズの最小単位と、CTUの最小サイズとの差分である。ヘッダ復号部3020はこの
タイル情報を復号し、タイルの最小単位(wUnitTile、hUnitTile)を導出する。
As another example, as shown in Fig. 25(a), only log2_diff_curr_min_unit_tile_size may be notified as tile information. log2_diff_curr_min_unit_tile_size is the difference between the minimum unit of tile size in the SPS and the minimum size of the CTU. The header decoding unit 3020 decodes this tile information and derives the minimum unit of the tile (wUnitTile, hUnitTile).

wUnitTile = 1<<( log2CtuSize + log2_diff_curr_min_unit_tile_size )
hUnitTile = 1<<( log2CtuSize + log2_diff_curr_min_unit_tile_size )
(設定方法10)
(設定方法10)では、(設定方法9)に対し、当該SPSでのタイルサイズの最小単位
は当該SPSでのCTUサイズを超えない制約を設ける。従って、log2_diff_curr_min_unit_tile_sizeは下式を満たす値でなければならない。
wUnitTile = 1<<( log2CtuSize + log2_diff_curr_min_unit_tile_size )
hUnitTile = 1<<( log2CtuSize + log2_diff_curr_min_unit_tile_size )
(Setting method 10)
In (Setting method 10), a constraint is imposed on (Setting method 9) that the minimum unit of tile size in the SPS does not exceed the CTU size in the SPS. Therefore, log2_diff_curr_min_unit_tile_size must be a value that satisfies the following formula: It won't happen.

0<=log2_diff_curr_min_unit_tile_size<=log2_diff_max_min_luma_coding_block_sizeここで、log2_diff_max_min_luma_coding_block_sizeは、CTUの最大および最小サイズの
2のべき乗表現の差分である。
0<=log2_diff_curr_min_unit_tile_size<=log2_diff_max_min_luma_coding_block_size, where log2_diff_max_min_luma_coding_block_size is the difference between the power-of-two representation of the maximum and minimum sizes of the CTU.

(設定方法11)
(設定方法11)では、図26に示すように、tile_parameters()およびタイル情報tile_info()をPPSで通知する。図26(a)および(d)に示すように、タイルの最小単位はSPSで通知されるCTUの最小サイズおよびPPSで通知されるタイル情報(log2_diff_curr_min_unit_tile_size)を用いて導出される。log2_diff_curr_min_unit_tile_sizeは、タイルサイズの最小単位とCTUの最小サイズとの差分である。ヘッダ復号部3020はこのタイル情報を復号
し、wUnitTile、hUnitTileを導出する。
(Setting method 11)
In (setting method 11), as shown in Fig. 26, tile_parameters() and tile information tile_info() are notified in the PPS. As shown in Fig. 26(a) and (d), the minimum unit of a tile is derived using the minimum size of a CTU notified in the SPS and the tile information (log2_diff_curr_min_unit_tile_size) notified in the PPS. log2_diff_curr_min_unit_tile_size is the difference between the minimum unit of the tile size and the minimum size of a CTU. The header decoding unit 3020 decodes this tile information and derives wUnitTile and hUnitTile.

wUnitTile = 1<<(log2CtuSize+log2_diff_curr_min_unit_tile_size)
hUnitTile = 1<<(log2CtuSize+log2_diff_curr_min_unit_tile_size)
(設定方法12)
(設定方法12)では、independent_tiles_flagを参照してTileUnitをwUnitTile、hUnitTileを導出する。independent_tiles_flag=1、すなわち各タイルを独立(他のタイルを参照せず)に処理できる場合は、そうでない場合よりもタイルのタイル単位(最小単位)を小さく設定する。例えば、(設定方法5)において、independent_tiles_flag=1の場合は所定の値TileUnitを8に設定し、independent_tiles_flag=0の場合は所定の値TileUnit
を16に設定する。
wUnitTile = 1<<(log2CtuSize+log2_diff_curr_min_unit_tile_size)
hUnitTile = 1<<(log2CtuSize+log2_diff_curr_min_unit_tile_size)
(Setting method 12)
In (Setting method 12), wUnitTile and hUnitTile are derived for TileUnit by referring to independent_tiles_flag. When independent_tiles_flag=1, that is, when each tile can be processed independently (without referring to other tiles), the process is more efficient than when it is not. Set the tile unit (minimum unit) of the tile to a smaller value. For example, in (setting method 5), if independent_tiles_flag=1, set the predetermined value TileUnit to 8, and if independent_tiles_flag=0, set the predetermined value TileUnit to
Set to 16.

また別の例として、(設定方法6)において、independent_tiles_flag=1の場合は所定の値TileUnitをCTUの最小サイズ(最小CTUサイズ)以下の値に設定し、independent_tiles_flag=0の場合は所定の値TileUnitをCTUの最小サイズ(最小CTUサイズ)に設定する。 As another example, in (setting method 6), when independent_tiles_flag=1, a specified value TileUnit is set to a value equal to or less than the minimum size of a CTU (minimum CTU size), and when independent_tiles_flag=0, a specified value TileUnit is set to the minimum size of a CTU (minimum CTU size).

また別の例として、(設定方法6)において、independent_tiles_flag=1の場合は所定の値TileUnitをCTUサイズ以下の値に設定し、independent_tiles_flag=0の場合は所定の
値TileUnitをCTUサイズに設定する。例えば、independent_tiles_flag=1の場合は所定の
値TileUnitを8、16、32の何れか、0の場合にはCTUサイズを用いる。
As another example, in (setting method 6), when independent_tiles_flag = 1, the predetermined value TileUnit is set to a value equal to or smaller than the CTU size, and when independent_tiles_flag = 0, the predetermined value TileUnit is set to the CTU size. For example, when independent_tiles_flag = 1, the predetermined value TileUnit is set to any one of 8, 16, or 32, and when it is 0, the CTU size is used.

あるいは、別の例として、(設定方法6)において、independent_tiles_flag=1の場合は所定の値TileUnitをCTUの最小サイズ(最小CTUサイズ)に設定し、independent_tiles_flag=0の場合は所定の値TileUnitをCTUサイズに設定する。 Alternatively, as another example, in (setting method 6), if independent_tiles_flag=1, a predetermined value TileUnit is set to the minimum size of a CTU (minimum CTU size), and if independent_tiles_flag=0, a predetermined value TileUnit is set to the CTU size.

independent_tiles_flagが1、すなわち、互いに参照することなく、独立に復号されるタイルでは、タイル同士を独立にメモリ配置できる(すなわち、タイル間にメモリ上のギャップが発生しても問題ない)ため、小さな値であってもメモリ配置に問題が生じない。これにより独立復号可能な領域の場合には、フレキシブルにタイルサイズを決定できるという効果を奏する。 When independent_tiles_flag is 1, i.e., tiles that are decoded independently without referencing each other, the tiles can be allocated independently in memory (i.e., there is no problem even if memory gaps occur between tiles), so even a small value does not cause problems in memory allocation. This has the effect of allowing flexible determination of tile size in the case of areas that can be decoded independently.

(設定方法13)
(設定方法13)では、所定の値TileUnitを他の処理の単位に合わせて設定する。例えば予測の単位(サブCU)を所定の値TileUnitとして設定する。あるいはTMVP用に動きベクトルを格納する単位を所定の値TileUnitとして設定する。例えば、TMVP用の動きベクトル格納単位が8x8の場合、TileUnit=8に設定する。あるいは量子化パラメータを更新する単
位を所定の値TileUnitとして設定する。例えば、差分量子化パラメータを通知する単位が16x16の場合、TileUnit=16に設定する。
(Setting method 13)
In (setting method 13), a predetermined value TileUnit is set to match the unit of other processing. For example, the unit of prediction (sub-CU) is set as the predetermined value TileUnit. Or, the unit for storing motion vectors for TMVP is set as the predetermined value TileUnit. For example, if the unit for storing motion vectors for TMVP is 8x8, TileUnit=8 is set. Or, the unit for updating quantization parameters is set as the predetermined value TileUnit. For example, if the unit for notifying differential quantization parameters is 16x16, TileUnit=16 is set.

(設定方法14)
(設定方法14)では、所定の値TileUnitを、タイルの水平方向については最小CTUサ
イズの整数倍ctuSize、垂直方向については8もしくは16に設定する。ヘッダ復号部3020はこのタイル情報を復号する。例えば下式でタイルの最小単位を設定する。
(Setting method 14)
In (setting method 14), a predetermined value TileUnit is set to an integer multiple ctuSize of the minimum CTU size for the horizontal direction of the tile, and to 8 or 16 for the vertical direction. The header decoder 3020 decodes this tile information. For example, the minimum unit of the tile is set using the following formula.

wUnitTile = ctuSize
hUnitTile = 8
(タイル情報設定部)
タイル情報設定部は、タイルの最小単位wUnitTile、hUnitTileに基づいて、タイルの左上座標(xTile, yTile)を設定する。さらに、タイル情報設定部は、タイルのCTU単位の幅tileWidthInCtus(=TileWidthInCtbsY)と高さtileHeightInCtus(=TileHeightInCtbsY)を設
定する。
wUnitTile = ctuSize
hUnitTile = 8
(Tile information setting section)
The tile information setting unit sets the top left coordinates (xTile, yTile) of the tile based on the minimum tile unit wUnitTile and hUnitTile. Furthermore, the tile information setting unit sets the width tileWidthInCtus (=TileWidthInCtbsY) and height tileHeightInCtus (=TileHeightInCtbsY) in CTU units of the tile.

(ステップ1)
タイルの最小単位wUnitTile、hUnitTileと画面幅wPict、hPictから、タイル単位(wUnitTile, hUnitTile)での画面幅wPictInUnitTile, hPictInUnitTileを導出する。
(Step 1)
Derive the screen widths wPictInUnitTile and hPictInUnitTile in tile units (wUnitTile, hUnitTile) from the minimum tile units wUnitTile and hUnitTile and the screen widths wPict and hPict.

wPictInUnitTile = divRoundUp(wPict,wUnitTile)
hPictInUnitTile = divRoundUp(hPict,hUnitTile)
ここでdivRoundUp(x,y) = (x+y-1)/y
つまり、xをyで除算した値以上の最小の整数を返す。すなわち、ceil(x/y)としてもよ
い。
wPictInUnitTile = divRoundUp(wPict,wUnitTile)
hPictInUnitTile = divRoundUp(hPict,hUnitTile)
where divRoundUp(x,y) = (x+y-1)/y
That is, it returns the smallest integer greater than or equal to the value of x divided by y. In other words, it can be expressed as ceil(x/y).

(ステップ2)
タイル情報設定部は、タイル単位の位置(col, row)で示されるタイルのピクチャ内の左上座標(xTile, yTile)を導出する。以下、ピクチャ内の座標とは、ピクチャ左上を(0, 0)とするピクチャ座標系の座標であり、タイル内の座標とは、各タイルの左上を(0, 0)とするタイル座標系の座標を意味する。タイルのコラム位置colを0からタイルのコラム数numTileColumns-1までループし、最小単位wUnitTileを用いて、各colの各タイルのX座標tx[col]と幅tw[col]を導出する。同様に、タイルのrow位置rowを0からタイルのrow数numTileRows-1までループし、最小単位hUnitTileを用いて、各rowの各タイルのY座標ty[row]と高さth[row]を導出する。
(Step 2)
The tile information setting unit derives the top left coordinates (xTile, yTile) of a tile in a picture indicated by a tile unit position (col, row). Hereinafter, the coordinates in a picture refer to the coordinates in the picture coordinate system in which the top left of the picture is (0, 0), and the coordinates in a tile refer to the coordinates in the tile coordinate system in which the top left of each tile is (0, 0). The unit loops through the column positions col of the tiles from 0 to the number of columns numTileColumns-1 of the tiles, and derives the X coordinate tx[col] and width tw[col] of each tile in each col using the minimum unit wUnitTile. Similarly, the unit loops through the row positions row of the tiles from 0 to the number of rows numTileRows-1 of the tiles, and derives the Y coordinate ty[row] and height th[row] of each tile in each row using the minimum unit hUnitTile.

タイル情報設定部は、uniform_spacing_flagが1の場合には、画面をnumTileColumns xnumTileRows (= M x N)にタイル分割し、タイルサイズtw[col]、th[row]とタイルのX座標tx[col]、Y座標ty[row]を導出する。具体的には、以下の擬似コードのように、ピクチャ
の幅wPict、タイルのコラム数numTileColumnsを用いて、tx[col]、tw[col]を導出し、ピ
クチャの幅hPict、タイルのコラム数numTileRowsを用いて、ty[row]、th[row]を導出する。tyおよびtwは、前出のhTileおよびwTileとして先に求めておいた値を用いてもよい。なお、wPict-tx[col]とtw[col]についてmin()を適用しているのは、タイルが画面端を超え
る大きさにならないようにするためである。
When uniform_spacing_flag is 1, the tile information setting unit divides the screen into tiles of numTileColumns x numTileRows (= M x N), and derives the tile size tw[col], th[row], and the X coordinate tx[col] and Y coordinate ty[row] of the tile. Specifically, as shown in the following pseudo code, tx[col] and tw[col] are derived using the picture width wPict and the number of tile columns numTileColumns, and ty[row] and th[row] are derived using the picture width hPict and the number of tile columns numTileRows. For ty and tw, the values previously calculated as the above-mentioned hTile and wTile may be used. Note that min() is applied to wPict-tx[col] and tw[col] to prevent the tiles from exceeding the screen edge.

for(col=0; col < numTileColumns; col++)
{
tx[col] = wUnitTile*(col*wPictInUnitTile/numTileColumns)
tw[col] = wUnitTile*((col+1)*wPictInUnitTile/numTileColumns)-tx[col]
tw[col] = min(wPict-tx[col],tw[col])
}
for(row=0; row < numTileRows; row++)
{
ty[row] = hUnitTile*(row*hPictInUnitTile/numTileRows)
th[row] = hUnitTile*((row+1)*hPictInUnitTile/numTileRows)-ty[row]
th[row] = min(hPict-ty[row],th[row])
}
タイル情報設定部は、uniform_spacing_flagが0の場合には、タイルサイズwTile(col), hTile(row)を用いて画面を分割しタイルのX座標tx[col]、Y座標ty[row]を導出する。
具体的には、以下の擬似コードのように、ピクチャの幅wPictとタイルのコラム幅wTile[col]を用いて、tx[col]を導出し、ピクチャの高さhPict、タイルのロウ高さhTile[row]を
用いて、ty[row]を導出する。
for(col=0; col <numTileColumns; col++)
{
tx[col] = wUnitTile*(col*wPictInUnitTile/numTileColumns)
tw[col] = wUnitTile*((col+1)*wPictInUnitTile/numTileColumns)-tx[col]
tw[col] = min(wPict-tx[col],tw[col])
}
for(row=0; row <numTileRows; row++)
{
ty[row] = hUnitTile*(row*hPictInUnitTile/numTileRows)
th[row] = hUnitTile*((row+1)*hPictInUnitTile/numTileRows)-ty[row]
th[row] = min(hPict-ty[row],th[row])
}
If uniform_spacing_flag is 0, the tile information setting unit divides the screen using the tile sizes wTile(col) and hTile(row) and derives the X coordinate tx[col] and the Y coordinate ty[row] of the tile. .
Specifically, as shown in the following pseudo code, tx[col] is derived using the picture width wPict and the tile column width wTile[col], and the picture height hPict and the tile row height hTile[col] are calculated. Use [row] to derive ty[row].

for(col=0;col<numTileColumns-1;col++)
{
tw[col] = wTile[col] = (column_width_in_unit_minus1[col]+1)*wUnitTile
tx[col+1] = tx[col]+tw[col]
}
tw[numTileColumns-1] = wPict-tx[numTileColumns-1]
for(row=0;row<numTileRows-1;row++)
{
th[row] = hTile[row] = (column_height_in_unit_minus1[row]+1)*hUnitTile
ty[row+1] = ty[row]+th[row]
}
th[numTileRows-1] = hPict-ty[numTileRows-1]
タイル情報設定部は、導出されたタイルのX座標tx[col]、Y座標ty[row]とタイルサイズtw[col]、th[row]を、タイルIDで示されるタイルのピクチャ内左上座標xTile[TileId]、yTile[TileId]、タイルサイズwTile[TileId]、hTile[TileId]に格納する。
for(col=0;col<numTileColumns-1;col++)
{
tw[col] = wTile[col] = (column_width_in_unit_minus1[col]+1)*wUnitTile
tx[col+1] = tx[col]+tw[col]
}
tw[numTileColumns-1] = wPict-tx[numTileColumns-1]
for(row=0;row<numTileRows-1;row++)
{
th[row] = hTile[row] = (column_height_in_unit_minus1[row]+1)*hUnitTile
ty[row+1] = ty[row]+th[row]
}
th[numTileRows-1] = hPict-ty[numTileRows-1]
The tile information setting unit sets the derived X coordinate tx[col], Y coordinate ty[row], and tile size tw[col], th[row] of the tile to the top left coordinate xTile in the picture of the tile indicated by the tile ID. Store in [TileId], yTile[TileId], tile size wTile[TileId], and hTile[TileId].

for(row=0;row<numTileRows;row++)
{
for(col=0;col<numTileColumns;col++)
{
TileId = row*numTileColumns+col
xTile[TileId] = tx[col]
yTile[TileId] = ty[row]
wTile[TileId] = tw[col]
hTile[TileId] = th[row]
tileWidthInCtus[TileId] = divRoundUp(tw[col],ctuWidth)
tileHeightInCtus[TileId] = divRoundUp(th[row],ctuHeight)
}
}
for(PicWidthInCtbsY=0,i=0;i<=num_tile_columns_minus1;i++)
PicWidthInCtbsY += tileWidthInCtus[i]
for(PicHeightInCtbsY=0,j=0;j<=num_tile_rows_minus1;j++)
PicHeightInCtbsY += tileHeightInCtus[j)]
なお、以下の表現でも一時変数は異なるが同じ動作であるのでタイル情報設定部は、以下の動作を行ってもよい。
for(row=0;row<numTileRows;row++)
{
for(col=0;col<numTileColumns;col++)
{
TileId = row*numTileColumns+col
xTile[TileId] = tx[col]
yTile[TileId] = ty[row]
wTile[TileId] = tw[col]
hTile[TileId] = th[row]
tileWidthInCtus[TileId] = divRoundUp(tw[col],ctuWidth)
tileHeightInCtus[TileId] = divRoundUp(th[row],ctuHeight)
}
}
for(PicWidthInCtbsY=0,i=0;i<=num_tile_columns_minus1;i++)
PicWidthInCtbsY += tileWidthInCtus[i]
for(PicHeightInCtbsY=0,j=0;j<=num_tile_rows_minus1;j++)
PicHeightInCtbsY += tileHeightInCtus[j)]
Note that the following expressions have different temporary variables but perform the same operation, so the tile information setting unit may perform the following operation.

if (uniform_spacing_flag) {
for (i=0; i<= num_tile_columns_minus1;i++)
colWidth[i] = ((i+1)*wPictInUnitTile)/(num_tile_columns_minus1+1)-(i*hPictInUnitTile)/(num_tile_columns_minus1+1))
for (j=0; j<= num_tile_rows_minus1;j++)
rowHeight[j] = ((j+1)*hPictInUnitTile)/(num_tile_rows_minus1+1)-(j*hPictInUnitTile)/(num_tile_rows_minus1+1))
else {
colWidth[num_tile_columns_minus1] = wPictInUnitTile
for (i=0; i<= num_tile_columns_minus1;i++) {
colWidth[i] = column_width_minus1[i]+1
colWidth[num_tile_columns_minus1]-=colWidth[i]
}
rowHeight [num_tile_rows_minus1] = hPictInUnitTile
for (j=0; j<= num_tile_rows_minus1;j++) {
rowHeight[j] = row_height_minus1[j]+1
rowHeight[num_tile_rows_minus1]-=rowHeight[j]
}
}
}
for (colX[0]=0,i=0; i <= num_tile_columns_minus1; i++)
colX[i+1] = colX[i]+colWidth[i]*wUnitTile
for (colY[0]=0,j=0; j <= num_tile_rows_minus1; j++)
colY[j+1] = colY[j]+colRow[j]*hUnitTile
for (colBd[0]=0,i=0; i <= num_tile_columns_minus1; i++)
colBd[i+1] = colBd[i]+Ceil(colWidth[i]*wUnitTile÷ctuWidth)
for (rowBd[0]=0,j=0; j <= num_tile_rows_minus1;j++)
rowBd[j+1] = rowBd[j]+Ceil(rowHeight[j]*hUnitTile÷ctuHeight)
for(PicWidthInCtbsY=0,i=0;i<=num_tile_columns_minus1; i++)
PicWidthInCtbsY += Ceil(colWidth[i]*TileUnitSizeY÷ctuSize)
for(PicHeightInCtbsY=0,j=0;j<=num_tile_rows_minus1; j++)
PicHeightInCtbsY += Ceil(rowHeight[j]*TileUnitSizeY÷ctuSize)
なお、画面全体において以下のように導出しても良い。
if (uniform_spacing_flag) {
for (i=0; i<= num_tile_columns_minus1;i++)
colWidth[i] = ((i+1)*wPictInUnitTile)/(num_tile_columns_minus1+1)-(i*hPictInUnitTile)/(num_tile_columns_minus1+1))
for (j=0; j<= num_tile_rows_minus1;j++)
rowHeight[j] = ((j+1)*hPictInUnitTile)/(num_tile_rows_minus1+1)-(j*hPictInUnitTile)/(num_tile_rows_minus1+1))
else {
colWidth[num_tile_columns_minus1] = wPictInUnitTile
for (i=0; i<= num_tile_columns_minus1;i++) {
colWidth[i] = column_width_minus1[i]+1
colWidth[num_tile_columns_minus1]-=colWidth[i]
}
rowHeight [num_tile_rows_minus1] = hPictInUnitTile
for (j=0; j<= num_tile_rows_minus1;j++) {
rowHeight[j] = row_height_minus1[j]+1
rowHeight[num_tile_rows_minus1]-=rowHeight[j]
}
}
}
for (colX[0]=0,i=0; i <= num_tile_columns_minus1; i++)
colX[i+1] = colX[i]+colWidth[i]*wUnitTile
for (colY[0]=0,j=0; j <= num_tile_rows_minus1; j++)
colY[j+1] = colY[j]+colRow[j]*hUnitTile
for (colBd[0]=0,i=0; i <= num_tile_columns_minus1; i++)
colBd[i+1] = colBd[i]+Ceil(colWidth[i]*wUnitTile÷ctuWidth)
for (rowBd[0]=0,j=0; j <= num_tile_rows_minus1;j++)
rowBd[j+1] = rowBd[j]+Ceil(rowHeight[j]*hUnitTile÷ctuHeight)
for(PicWidthInCtbsY=0,i=0;i<=num_tile_columns_minus1; i++)
PicWidthInCtbsY += Ceil(colWidth[i]*TileUnitSizeY÷ctuSize)
for(PicHeightInCtbsY=0,j=0;j<=num_tile_rows_minus1; j++)
PicHeightInCtbsY += Ceil(rowHeight[j]*TileUnitSizeY÷ctuSize)
It should be noted that the following derivation may be performed for the entire screen.

for(i = 0; i < NumTilesInPic; i++ ) {
col = i % ( num_tile_columns_minus1 + 1 )
row = i / ( num_tile_columns_minus1 + 1 )
TileWidth [ i ] = colWidth[ col ] * TileUnitSizeY
TileHeight [ i ] = rowHeight[ row ] * TileUnitSizeY
TileWidthInCtbsY[ i ] = Ceil( wTile [ i ] ÷ ctuSize )
TileHeightInCtbsY[ i ] = Ceil( hTile [ i ] ÷ ctuSize )
TileX[ i ] = TileColX[ col ]
TileY[ i ] = TileRowY[ row ]
TileXInCtbsY[ i ] = colBd[ col ]
TileYInCtbsY[ i ] = rowBd[ row ]
}
ここでTileUnitSizeY=wUnitTile=hUnitTile
上記により、スライスデータ(slice_segment_data())では、図4(b)で示すPPSで通知したタイル情報を用いて、ピクチャ上の(xTile,yTile)の位置から始まるタイルの情報をCTU単位で通知する。具体的には、ピクチャ上の(xTile,yTile)から始まる各タイルの左上
座標(0,0)として、タイルを、CTU(幅ctuWidth、高さctuHeight)に分割し、各CTUの符号化データcoding_quadtree()を通知してもよい。
for(i = 0; i <NumTilesInPic; i++ ) {
col = i % ( num_tile_columns_minus1 + 1 )
row = i / ( num_tile_columns_minus1 + 1 )
TileWidth [ i ] = colWidth[ col ] * TileUnitSizeY
TileHeight [ i ] = rowHeight[ row ] * TileUnitSizeY
TileWidthInCtbsY[ i ] = Ceil( wTile [ i ] ÷ ctuSize )
TileHeightInCtbsY[ i ] = Ceil( hTile [ i ] ÷ ctuSize )
TileX[ i ] = TileColX[ col ]
TileY[ i ] = TileRowY[ row ]
TileXInCtbsY[ i ] = colBd[ col ]
TileYInCtbsY[ i ] = rowBd[ row ]
}
where TileUnitSizeY = wUnitTile = hUnitTile
As described above, the slice data (slice_segment_data()) uses the tile information notified by the PPS shown in FIG. 4(b) to notify the information of the tile starting from the position (xTile, yTile) on the picture in CTU units. Specifically, starting from (xTile, yTile) on the picture, the upper left coordinate of each tile is (0,0), and the tile is divided into CTUs (width ctuWidth, height ctuHeight), and the encoded data of each CTU is coding_quadtree() may also be notified.

ヘッダ復号部3020は、外部から入力され、NAL(network abstraction layer)ユニット単位で符号化された符号化ストリームTeからヘッダ情報を復号する。また、ヘッダ復号部3020は、外部から入力された、ディスプレイ等に表示すべき画像領域を示す制御情報から、表示に必要なタイル(TileId)を導出する。また、ヘッダ復号部3020は、符号化ストリームTeから表示に必要な符号化タイルを抽出する。符号化タイルは、符号化データ中のシンタックスに従って、CT情報復号部3021によってCTUに分割され処理される。タイル情報は、具体的には、num_tile_columns_minus1、num_tile_rows_minus1、uniform_spacing_flag、column_width_in_unit_minus1[i]、row_height_in_unit_minus1[i]等のシンタッ
クスから算出した、タイルの水平方向の個数M、垂直方向の個数N、タイルの幅wTile[m]と高さhTile[n]等である。
The header decoding unit 3020 decodes header information from the coded stream Te that is input from the outside and coded in units of network abstraction layer (NAL) units. The header decoding unit 3020 also derives tiles (TileId) required for display from control information that is input from the outside and indicates an image area to be displayed on a display or the like. The header decoding unit 3020 also extracts coded tiles required for display from the coded stream Te. The coded tiles are divided into CTUs by the CT information decoding unit 3021 according to the syntax in the coded data and processed. Specifically, the tile information includes the number of tiles in the horizontal direction M, the number of tiles in the vertical direction N, the tile width wTile[m] and height hTile[n], etc., calculated from syntax such as num_tile_columns_minus1, num_tile_rows_minus1, uniform_spacing_flag, column_width_in_unit_minus1[i], row_height_in_unit_minus1[i], etc.

図11はCTUサイズの整数倍以外でタイルを分割する例である。図11(a)は、本実施形態の技術であって、1920x1080のHD画像を4x3のタイルに分割する図である。本実施形態では4x3のタイルに分割する時に、全タイルを等サイズに分割できる(480x360に分割される)ため、複数のプロセッサやハードウェアに等しくロードバランスできる効果を有する。タイルサイズはピクチャ境界にかかわらずCTUの整数倍以外のサイズをとることが可能である。
図11(b)は各タイルのCTU分割を表す図である。CTUに分割する際、タイルサイズがCTUサイズの整数倍でない場合は、タイルの外側にクロップオフセット領域を設ける。特にTILE Bに示すように、CTUは各タイルの左上を基準として分割される。したがって、CTUの左上座標は、CTUサイズの整数倍に限定されない。
Fig. 11 is an example of dividing tiles into sizes other than integer multiples of the CTU size. Fig. 11(a) is a diagram showing the technology of this embodiment, in which a 1920x1080 HD image is divided into 4x3 tiles. In this embodiment, when dividing into 4x3 tiles, all tiles can be divided into equal sizes (divided into 480x360), which has the effect of enabling equal load balancing across multiple processors and hardware. The tile size can be a size other than an integer multiple of the CTU, regardless of picture boundaries.
Fig. 11(b) is a diagram showing how each tile is divided into CTUs. When dividing into CTUs, if the tile size is not an integer multiple of the CTU size, a crop offset area is provided outside the tile. As shown in particular in TILE B, the CTUs are divided based on the top left corner of each tile. Therefore, the top left coordinate of a CTU is not limited to being an integer multiple of the CTU size.

図12は、さらに各タイルをCTU分割する場合を示す図である。図ではピクチャを2x2のタイルに分割するが、各タイルはさらにCTUに分割される。本実施形態では図に示す通り、
各タイルをCTUに分割するにあたって、タイルの左上からCTUを開始するように分割を行う。したがってタイルは右側及び下側において、CTUサイズの整数倍以外の位置で終端する
ことがあるが、タイルの左側および上側においてはCTU境界とタイル境界は一致する。
FIG. 12 is a diagram showing a case where each tile is further divided into CTUs. In the figure, a picture is divided into 2x2 tiles, and each tile is further divided into CTUs. In this embodiment, as shown in the figure,
Each tile is divided into CTUs such that the CTU starts at the top left of the tile, so that the tile may end at a position on the right and bottom that is not an integer multiple of the CTU size, but the CTU boundary coincides with the tile boundary on the left and top.

(符号化ツリーユニット)
図1(e)には、処理対象のCTUを復号するために動画像復号装置31が参照するデータの集
合が規定されている。CTUは、再帰的な4分木分割(QT(Quad Tree)分割)、2分木分割(BT(Binary Tree)分割)あるいは3分木分割(TT(Ternary Tree)分割)により符号
化処理の基本的な単位である符号化ユニットCUに分割される。BT分割とTT分割を合わせてマルチツリー分割(MT(Multi Tree)分割)と呼ぶ。再帰的な4分木分割により得られる木構造のノードのことを符号化ノード(Coding Node)と称する。4分木、2分木、及び
3分木の中間ノードは、符号化ノードであり、CTU自身も最上位の符号化ノードとして規
定される。QT分割、BT分割、TT分割を合わせてCT分割と呼ぶ。
(coding tree unit)
In Fig. 1(e), a set of data that the video decoding device 31 refers to in order to decode the CTU to be processed is specified. The CTU is divided into coding units CU, which are basic units of the coding process, by recursive quad tree division (QT (Quad Tree) division), binary tree division (BT (Binary Tree) division), or ternary tree division (TT (Ternary Tree) division). BT division and TT division are collectively called multi tree division (MT (Multi Tree) division). A node of a tree structure obtained by recursive quad tree division is called a coding node. The intermediate nodes of the quad tree, binary tree, and ternary tree are coding nodes, and the CTU itself is also specified as the top coding node. QT division, BT division, and TT division are collectively called CT division.

CTは、CT情報として、QT分割を行うか否かを示すQT分割フラグ(cu_split_flag)、MT
分割の分割方法を示すMT分割モード(split_mt_mode)、MT分割の分割方向を示すMT分割
方向(split_mt_dir)、MT分割の分割タイプを示すMT分割タイプ(split_mt_type)を含
む。cu_split_flag、split_mt_flag、split_mt_dir、split_mt_type は符号化ノード毎に伝送される。
CT includes, as CT information, a QT split flag (cu_split_flag) indicating whether or not to perform QT split, MT
It includes MT split mode (split_mt_mode) indicating the split method, MT split direction (split_mt_dir) indicating the split direction of MT split, and MT split type (split_mt_type) indicating the split type of MT split. cu_split_flag, split_mt_flag, split_mt_dir, and split_mt_type are transmitted for each encoding node.

cu_split_flagが1の場合、符号化ノードは4つの符号化ノードに分割される(図2(b)
)。cu_split_flagが0の時、split_mt_flagが0の場合に符号化ノードは分割されず1つのCUをノードとして持つ(図2(a))。CUは符号化ノードの末端ノードであり、これ以上分割されない。CUは、符号化処理の基本的な単位となる。
If cu_split_flag is 1, the coding node is split into four coding nodes (Figure 2(b)).
). When cu_split_flag is 0, and split_mt_flag is 0, the coding node is not split and has one CU as a node (Figure 2(a)). A CU is the terminal node of a coding node and is not split any further. A CU is the basic unit of coding processing.

split_mt_flagが1の場合に符号化ノードは以下のようにMT分割される。split_mt_typeが0の時、split_mt_dirが1の場合に符号化ノードは2つの符号化ノードに水平分割され(図2(d))、split_mt_dirが0の場合に符号化ノードは2つの符号化ノードに垂直分割される(図2(c))。また、split_mt_typeが1の時、split_mt_dirが1の場合に符号化ノー
ドは3つの符号化ノードに水平分割され(図2(f))、split_mt_dirが0の場合に符号化ノードは3つの符号化ノードに垂直分割される(図2(e))。
When split_mt_flag is 1, the coding node is MT-split as follows: When split_mt_type is 0, if split_mt_dir is 1, the coding node is split horizontally into two coding nodes (Fig. 2(d)), and when split_mt_dir is 0, the coding node is split vertically into two coding nodes (Fig. 2(c)). When split_mt_type is 1, if split_mt_dir is 1, the coding node is split horizontally into three coding nodes (Fig. 2(f)), and when split_mt_dir is 0, the coding node is split vertically into three coding nodes (Fig. 2(e)).

また、CTUのサイズが64x64画素の場合には、CUのサイズは、64x64画素、64x32画素、32x64画素、32x32画素、64x16画素、16x64画素、32x16画素、16x32画素、16x16画素、64x8
画素、8x64画素、32x8画素、8x32画素、16x8画素、8x16画素、8x8画素、64x4画素、4x64
画素、32x4画素、4x32画素、16x4画素、4x16画素、8x4画素、4x8画素、及び、4x4画素の
何れかをとり得る。
Also, when the size of the CTU is 64x64 pixels, the size of the CU is 64x64 pixels, 64x32 pixels, 32x64 pixels, 32x32 pixels, 64x16 pixels, 16x64 pixels, 32x16 pixels, 16x32 pixels, 16x16 pixels, 64x8 pixels, 16x16 ...
Pixels, 8x64 pixels, 32x8 pixels, 8x32 pixels, 16x8 pixels, 8x16 pixels, 8x8 pixels, 64x4 pixels, 4x64
The pixel size can be any of 32x4 pixels, 4x32 pixels, 16x4 pixels, 4x16 pixels, 8x4 pixels, 4x8 pixels, and 4x4 pixels.

(符号化ユニット)
図1(f)に示すように、処理対象の符号化ユニットを復号するために動画像復号装置31が参照するデータの集合が規定されている。具体的には、CUは、CUヘッダCUH、予測パラメ
ータ、変換パラメータ、量子化変換係数等から構成される。CUヘッダでは予測モード等が規定される。
(Encoding Unit)
As shown in Fig. 1(f), a set of data to be referenced by the video decoding device 31 in order to decode a coding unit to be processed is defined. Specifically, a CU is composed of a CU header CUH, prediction parameters, transformation parameters, quantization transformation coefficients, etc. The CU header defines a prediction mode, etc.

予測処理は、CU単位で行われる場合と、CUをさらに分割したサブCU単位で行われる場合がある。CUとサブCUのサイズが等しい場合には、CU中のサブCUは1つである。CUがサブCUのサイズよりも大きい場合、CUは、サブCUに分割される。たとえばCUが8x8、サブCUが4x4の場合、CUは水平2分割、垂直2分割からなる、4つのサブCUに分割される。 Prediction processing may be performed on a CU basis, or on a sub-CU basis, which is a further division of a CU. If the size of the CU and sub-CU are the same, there is one sub-CU in the CU. If the size of the CU is larger than the size of the sub-CU, the CU is divided into sub-CUs. For example, if the CU is 8x8 and the sub-CU is 4x4, the CU is divided into 2 parts horizontally and 2 parts vertically, into 4 sub-CUs.

予測の種類(予測モード)は、イントラ予測と、インター予測の2つがある。イントラ予測は、同一ピクチャ内の予測であり、インター予測は、互いに異なるピクチャ間(例えば、表示時刻間、レイヤ画像間)で行われる予測処理を指す。 There are two types of prediction (prediction modes): intra prediction and inter prediction. Intra prediction is a prediction within the same picture, while inter prediction refers to a prediction process performed between different pictures (e.g., between display times or between layer images).

変換・量子化処理はCU単位で行われるが、量子化変換係数は4x4等のサブブロック単位
でエントロピー符号化してもよい。
The transformation and quantization processes are performed in units of CUs, but the quantized transformation coefficients may be entropy coded in units of subblocks such as 4x4.

(予測パラメータ)
予測画像は、ブロックに付随する予測パラメータによって導出される。予測パラメータには、イントラ予測とインター予測の予測パラメータがある。
(Prediction parameters)
The predicted image is derived from prediction parameters associated with the block, which include intra-prediction and inter-prediction parameters.

(動画像復号装置の構成)
本実施形態に係る動画像復号装置31(図5)の構成について説明する。
(Configuration of video decoding device)
The configuration of a video decoding device 31 (FIG. 5) according to this embodiment will be described.

動画像復号装置31は、パラメータ復号部(予測画像復号装置)302、ループフィルタ305、参照ピクチャメモリ306、予測パラメータメモリ307、予測画像生成部(予測画像生成装置)308、逆量子化・逆変換部311、及び加算部312を含んで構成される。なお、後述の動
画像符号化装置11に合わせ、動画像復号装置31にループフィルタ305が含まれない構成も
ある。パラメータ復号部302は、さらに、エントロピー復号部301、ヘッダ復号部3020、CT情報復号部3021、及びCU復号部3022(予測モード復号部)を備えており、CU復号部3022は
さらにTU復号部3024を備えている。
The video decoding device 31 includes a parameter decoding unit (prediction image decoding device) 302, a loop filter 305, a reference picture memory 306, a prediction parameter memory 307, a prediction image generating unit (prediction image generating device) 308, an inverse quantization and inverse transform unit 311, and an addition unit 312. Note that, in accordance with the video encoding device 11 described below, the video decoding device 31 may also be configured not to include the loop filter 305. The parameter decoding unit 302 further includes an entropy decoding unit 301, a header decoding unit 3020, a CT information decoding unit 3021, and a CU decoding unit 3022 (prediction mode decoding unit), and the CU decoding unit 3022 further includes a TU decoding unit 3024.

(復号モジュール)
以下、各モジュールの概略動作を説明する。パラメータ復号部302はヘッダ情報、分割
情報、予測情報、量子化変換係数等のパラメータの復号処理を行う。
(Decoding module)
The operation of each module will be outlined below: The parameter decoding unit 302 performs a process of decoding parameters such as header information, partition information, prediction information, and quantized transform coefficients.

エントロピー復号部301は、バイナリデータからシンタックス要素を復号する。エント
ロピー復号部301は、より具体的には、供給元から供給されるシンタックス要素に基づい
て、CABAC等のエントロピー符号化方式による符号化データから、シンタックス要素を復
号して供給元に返す。以下に示す例では、シンタックス要素の供給元は、CT情報復号部3021、CU復号部3022である。
The entropy decoding unit 301 decodes syntax elements from binary data. More specifically, the entropy decoding unit 301 decodes syntax elements from data encoded by an entropy encoding method such as CABAC based on syntax elements supplied from a supply source, and returns the decoded syntax elements to the supply source. In the example shown below, the supply sources of the syntax elements are a CT information decoding unit 3021 and a CU decoding unit 3022.

(基本フロー)
図6は、動画像復号装置31の概略的動作を説明するフローチャートである。
(Basic flow)
FIG. 6 is a flowchart illustrating a schematic operation of the video decoding device 31.

(S1100:パラメータセット情報復号)ヘッダ復号部3020は、符号化データからVPS、SPS、PPSなどのパラメータセット情報を復号する。 (S1100: Decoding parameter set information) The header decoding unit 3020 decodes parameter set information such as VPS, SPS, and PPS from the encoded data.

(S1200:スライス情報復号)ヘッダ復号部3020は、符号化データからスライスヘッダ
(スライス情報)を復号する。
(S1200: Decoding slice information) The header decoding unit 3020 decodes the slice header (slice information) from the encoded data.

以下、動画像復号装置31は、対象ピクチャに含まれる各CTUについて、S1300からS5000
の処理を繰り返すことにより各CTUの復号画像を導出する。
Hereinafter, the video decoding device 31 performs steps S1300 to S5000 for each CTU included in the target picture.
By repeating the above process, a decoded image of each CTU is derived.

(S1300:CTU情報復号)CT情報復号部3021は、符号化データからCTUを復号する。 (S1300: Decoding CTU information) The CT information decoding unit 3021 decodes the CTU from the encoded data.

(S1400:CT情報復号)CT情報復号部3021は、符号化データからCTを復号する。 (S1400: CT information decoding) The CT information decoding unit 3021 decodes the CT from the encoded data.

(S1500:CU復号)CU復号部3022はS1510、S1520を実施して、符号化データからCUを復
号する。
(S1500: CU decoding) The CU decoding unit 3022 performs S1510 and S1520 to decode the CU from the encoded data.

(S1510:CU情報復号)CU復号部3022は、符号化データからCU情報、予測情報、TU分割
フラグsplit_transform_flag、CU残差フラグcbf_cb、cbf_cr、cbf_luma等を復号する。
(S1510: Decoding CU information) The CU decoding unit 3022 decodes CU information, prediction information, the TU split flag split_transform_flag, the CU residual flags cbf_cb, cbf_cr, cbf_luma, and the like from the encoded data.

(S1520:TU情報復号)TU復号部3024は、TUに予測誤差が含まれている場合に、符号化
データからQP更新情報(量子化補正値)と量子化予測誤差(residual_coding)を復号す
る。なお、QP更新情報は、量子化パラメータQPの予測値である量子化パラメータ予測値qPpredからの差分値である。
(S1520: TU information decoding) When a prediction error is included in a TU, the TU decoding unit 3024 decodes QP update information (quantization correction value) and quantization prediction error (residual_coding) from the encoded data. Note that the QP update information is a difference value from the quantization parameter predicted value qPpred, which is a predicted value of the quantization parameter QP.

(S2000:予測画像生成)予測画像生成部308は、対象CUに含まれる各ブロックについて、予測情報に基づいて予測画像を生成する。 (S2000: Generation of predicted image) The predicted image generation unit 308 generates a predicted image for each block included in the target CU based on the prediction information.

(S3000:逆量子化・逆変換)逆量子化・逆変換部311は、対象CUに含まれる各TUについて、逆量子化・逆変換処理を実行する。 (S3000: Inverse quantization and inverse transform) The inverse quantization and inverse transform unit 311 performs inverse quantization and inverse transform processing on each TU included in the target CU.

(S4000:復号画像生成)加算器312は、予測画像生成部308より供給される予測画像と
、逆量子化・逆変換部311より供給される予測誤差とを加算することによって、対象CUの
復号画像を生成する。
(S4000: Generation of decoded image) The adder 312 adds the predicted image supplied from the predicted image generation unit 308 and the prediction error supplied from the inverse quantization and inverse transform unit 311 to generate a decoded image of the current CU.

(S5000:ループフィルタ)ループフィルタ305は、復号画像にデブロッキングフィルタ
、SAO、ALFなどのループフィルタをかけ、復号画像を生成する。
(S5000: Loop filter) The loop filter 305 applies a loop filter such as a deblocking filter, SAO, or ALF to the decoded image to generate a decoded image.

(タイルの場合のCTUの復号)
図13は、符号化スライスデータを示す図である。パラメータ復号部302のCT情報復号部3021は、スライス(タイル)を構成するCTUを順に処理する。さらに、CT情報復号部3021は、図示しない対象CTU座標導出部を用いて、対象CTUのCTUラスタスキャンアドレスCtbAddrInRsから、CTUアドレステーブルCtbAddrToCtbX[]、CtbAddrToCtbY[]を参照して対象CTUの左上座標(xCtb, yCtb)を導出する。
(Decoding CTU in case of tiles)
13 is a diagram showing encoded slice data. The CT information decoding unit 3021 of the parameter decoding unit 302 sequentially processes the CTUs constituting a slice (tile). Furthermore, the CT information decoding unit 3021 uses a target CTU coordinate derivation unit (not shown) to derive the upper left coordinates (xCtb, yCtb) of the target CTU from the CTU raster scan address CtbAddrInRs of the target CTU by referring to the CTU address tables CtbAddrToCtbX[], CtbAddrToCtbY[].

xCtb = CtbAddrToCtbX[CtbAddrInRs]
yCtb = CtbAddrToCtbY[CtbAddrInRs]
CT情報復号部3021は対象CTUをルートとする符号化ツリーcoding_quadtree(xCtb,yCtb,log2CbSize,cqtDepth)を符号化データから再帰処理により復号する。
xCtb = CtbAddrToCtbX[CtbAddrInRs]
yCtb = CtbAddrToCtbY[CtbAddrInRs]
The CT information decoding unit 3021 decodes the coding tree coding_quadtree (xCtb, yCtb, log2CbSize, cqtDepth) with the target CTU as the root from the coded data by recursive processing.

ここでCtbAddrToCtbX、CtbAddrToCtbYは、CTUアドレステーブル導出部で導出されるテ
ーブルである。
パラメータ復号部302は、スライスセグメントの終端か否かを示すフラグend_of_slice_segment_flagを復号し、次のCTUの処理の準備のためにCTUアドレスCtbAddrInTsを1だけイ
ンクリメントし(CtbAddrInTs++)、後続CTUのアドレスを導出する。さらに後続CTUに対
応するCTUラスタスキャンアドレスを導出する(CtbAddrInRs = CtbAddrTsToRs[CtbAddrInTs])。ここでCtbAddrInTsは対象CTUのタイルスキャンアドレスである。
Here, CtbAddrToCtbX and CtbAddrToCtbY are tables derived by the CTU address table derivation unit.
The parameter decoding unit 302 decodes the flag end_of_slice_segment_flag indicating whether or not the end of the slice segment is reached, increments the CTU address CtbAddrInTs by 1 (CtbAddrInTs++) in preparation for processing the next CTU, and derives the address of the subsequent CTU. It also derives the CTU raster scan address corresponding to the subsequent CTU (CtbAddrInRs = CtbAddrTsToRs[CtbAddrInTs]). Here, CtbAddrInTs is the tile scan address of the target CTU.

パラメータ復号部302は、スライスセグメントの終端ではなく(!end_of_slice_segment_flag)、タイルが有効であり(tiles_enabled_flag)、後続CTUのタイルID(TileId[CtbAddrInTs]もしくはTildIdTbl[CtbAddrInTs])と対象CTUのCTUのタイルID([CtbAddrInTs-1])が異なる場合、end_of_subset_one_bitを復号し、さらにバイトアライメント用の
ビット(byte_alignment())を復号する。
If the data is not the end of the slice segment (!end_of_slice_segment_flag), the tile is enabled (tiles_enabled_flag), and the tile ID of the subsequent CTU (TileId[CtbAddrInTs] or TildIdTbl[CtbAddrInTs]) is different from the tile ID of the CTU of the target CTU ([CtbAddrInTs-1]), the parameter decoding unit 302 decodes the end_of_subset_one_bit and further decodes the bit for byte alignment (byte_alignment()).

さらに、パラメータ復号部302は、タイルに加え、CTUライン単位に並列処理を行うウェーブフロントに対応し、ウェーブフロントフラグentropy_coding_sync_enabled_flagが1であり、後続CTUがCTUライン先頭の場合(CtbAddrInRs%PicWidthInCtbsY==0)、end_of_subset_one_bitを復号し、さらにバイトアライメント用のビット(byte_alignment())を
復号してもよい。
Furthermore, in addition to tiles, the parameter decoding unit 302 supports a wavefront that performs parallel processing on a CTU line basis, and when the wavefront flag entropy_coding_sync_enabled_flag is 1 and the subsequent CTU is at the beginning of a CTU line (CtbAddrInRs%PicWidthInCtbsY==0), it may decode end_of_subset_one_bit and also decode a bit for byte alignment (byte_alignment()).

なお、end_of_subset_one_bitとbyte_alignment()を復号する条件は、図27(a)に示す条件であってもよい。つまり、パラメータ復号部302は、スライスセグメントの終端ではな
く(!end_of_slice_segment_flag)、タイルが有効である(tiles_enabled_flag)場合、end_of_subset_one_bitとbyte_alignment()を復号する。
The condition for decoding end_of_subset_one_bit and byte_alignment() may be the condition shown in Fig. 27(a). That is, when the end of the slice segment is not reached (!end_of_slice_segment_flag) and the tile is enabled (tiles_enabled_flag), the parameter decoding unit 302 decodes end_of_subset_one_bit and byte_alignment().

ここで、本実施形態では、CTUサイズの整数倍に限定されないサイズのタイルの場合のPicWidthInCtbsYの導出方法に特徴がある。PicWidthInCtbsYはピクチャの幅にCTUが何
個含まれるかを意味するが、本実施形態のようにタイルの有効領域の大きさがCTUサイズの整数倍に限られない場合は、有効領域がCTUサイズに満たないサイズのCTUが複数個存在しうるため、PicWidthInCtbsYの値はceil(wPict/ctuWidth)に等しいとは限らな
い。上述のように、本実施形態のパラメータ復号部302は、PicWidthInCtbsYを、以下の方法で導出する。
Here, in this embodiment, a feature is the method of deriving PicWidthInCtbsY in the case of tiles with sizes not limited to integer multiples of the CTU size. PicWidthInCtbsY means how many CTUs are included in the picture width, but in the case where the size of the effective area of the tile is not limited to an integer multiple of the CTU size as in this embodiment, there may be a plurality of CTUs whose effective area is smaller than the CTU size, so the value of PicWidthInCtbsY is not necessarily equal to ceil(wPict/ctuWidth). As described above, the parameter decoding unit 302 in this embodiment derives PicWidthInCtbsY in the following manner.

for(PicWidthInCtbsY=0,i=0;i<=num_tile_columns_minus1;i++)
PicWidthInCtbsY += tileWidthInCtus[i]
PicHeightInCtbsYについても同様であり、以下の方法で導出する。
for(PicWidthInCtbsY=0,i=0;i<=num_tile_columns_minus1;i++)
PicWidthInCtbsY += tileWidthInCtus[i]
The same applies to PicHeightInCtbsY, which is derived in the following way.

for(PicHeightInCtbsY=0,j=0;j<=num_tile_rows_minus1;j++)
PicHeightInCtbsY += tileHeightInCtus[j]
タイルがCTUサイズの整数倍に限定される場合には、以下の方法で導出しても良い。
for(PicHeightInCtbsY=0,j=0;j<=num_tile_rows_minus1;j++)
PicHeightInCtbsY += tileHeightInCtus[j]
When tiles are limited to integer multiples of the CTU size, they may be derived in the following manner.

PicWidthInCtbsY = Ceil(wPict/ctuWidth)
PicHeightInCtbsY = Ceil(hPict/ctuHeight)
ここでの除算(/)は小数精度とする。
PicWidthInCtbsY = Ceil(wPict/ctuWidth)
PicHeightInCtbsY = Ceil(hPict/ctuHeight)
The division (/) here is with decimal precision.

(CTUアドレステーブル導出部)
CTUアドレステーブル導出部は、以下のステップにより、CTUラスタスキャンアドレス(CtbAddrInRs)からCTUの座標(xCtb, yCtb)を導出するCTUアドレステーブルCtbAddrToCtbX[]、CtbAddrToCtbY[]を導出する。
(CTU address table derivation part)
The CTU address table derivation unit derives the CTU address tables CtbAddrToCtbX[], CtbAddrToCtbY[] that derive the CTU coordinates (xCtb, yCtb) from the CTU raster scan address (CtbAddrInRs) by the following steps.

(ステップ1)
対象CTUのCTUラスタスキャンアドレスCtbAddrInRsからタイルID(TileId)を導出する。
(Step 1)
The tile ID (TileId) is derived from the CTU raster scan address CtbAddrInRs of the target CTU.

TileId = CtbAddrRsToTileID[CtbAddrInRs]
ここでCtbAddrRsToTileIDは、タイルIDテーブル導出部で導出されるテーブルである。
TileId = CtbAddrRsToTileID[CtbAddrInRs]
Here, CtbAddrRsToTileID is a table derived by the tile ID table derivation unit.

(ステップ2)
CTUアドレステーブル導出部は、対象CTUを含むタイルの先頭CTUラスタスキャンアドレ
スfirstCtbAddrInRs[TileId]を導出し、ピクチャの幅に含まれるCTUの個数PicWidthInCtbsYを用いて、CTUを単位としたタイル内座標(xCtbInCtus, yCtbInCtus)を以下の式で導出
する
xCtbInCtus = (CtbAddrInRs-firstCtbAddrInRs[TileId])%PicWidthInCtbsY
yCtbInCtus = (CtbAddrInRs-firstCtbAddrInRs[TileId])/PicWidthInCtbsY
ここでfirstCtbAddrInRsは、タイルIDで示されるタイルの先頭CTUラスタスキャンア
ドレスを導出するテーブルであり、先頭タイルアドレス導出部で導出される。
(Step 2)
The CTU address table derivation unit derives the first CTU raster scan address firstCtbAddrInRs[TileId] of the tile that contains the target CTU, and derives the intra-tile coordinates (xCtbInCtus, yCtbInCtus) in units of CTUs using the following formula, using the number of CTUs included in the picture width PicWidthInCtbsY.
xCtbInCtus = (CtbAddrInRs-firstCtbAddrInRs[TileId])%PicWidthInCtbsY
yCtbInCtus = (CtbAddrInRs-firstCtbAddrInRs[TileId])/PicWidthInCtbsY
Here, firstCtbAddrInRs is a table for deriving the first CTU raster scan address of the tile indicated by the tile ID, and is derived by the first tile address derivation unit.

CTUアドレステーブル導出部は、CTUサイズ(ctuWidth, ctuHeight)をかけて、画素単位
のタイル内座標(xCtbInTile, yCtbInTile)を以下の式で導出する。
The CTU address table derivation unit multiplies the CTU size (ctuWidth, ctuHeight) to derive the pixel-unit coordinates within the tile (xCtbInTile, yCtbInTile) using the following formula.

xCtbInTile = xCtbInCtus*ctuWidth
yCtbInTile = yCtbInCtus*ctuHeight
なお、CTUサイズの対数表示を用いて以下のように導出しても良い。
xCtbInTile = xCtbInCtus*ctuWidth
yCtbInTile = yCtbInCtus*ctuHeight
Alternatively, the logarithmic representation of the CTU size may be used to derive it as follows:

xCtbInTile = xCtbInCtus<<CtbLog2SizeY
yCtbInTile = yCtbInCtus<<CtbLog2SizeY
(ステップ3)
CTUアドレステーブル導出部は、タイル内座標(xCtbInTile, yCtbInTile)とタイル左上
のピクチャ内座標(xTile[TileId],yTile[TileId])の和から、ピクチャ内におけるCTUの左上座標(xCtb, yCtb)を導出する。
xCtbInTile = xCtbInCtus<<CtbLog2SizeY
yCtbInTile = yCtbInCtus<<CtbLog2SizeY
(Step 3)
The CTU address table derivation unit calculates the top left coordinates (xCtb, yCtb) of the CTU in the picture from the sum of the coordinates in the tile (xCtbInTile, yCtbInTile) and the coordinates in the picture of the top left of the tile (xTile[TileId], yTile[TileId]). Derive.

xCtb = xTile[TileId]+xCtbInTile
yCtb = yTile[TileId]+yCtbInTile
(ステップ4)
CTUアドレステーブル導出部は、最後に導出されたCtbAddrInRsに関するCTUの左上座標(xCtb, yCtb)をテーブルに格納する
CtbAddrToCtbX[CtbAddrInRs] = xCtb
CtbAddrToCtbY[CtbAddrInRs] = yCtb
上記の処理は、タイル左上CTUの位置(xTileInCtus, yTileInCtu)を用いて、以下のようにも表現できる。
xCtb = xTile[TileId]+xCtbInTile
yCtb = yTile[TileId]+yCtbInTile
(Step 4)
The CTU address table derivation unit stores the top left coordinates (xCtb, yCtb) of the CTU related to the last derived CtbAddrInRs in the table.
CtbAddrToCtbX[CtbAddrInRs] = xCtb
CtbAddrToCtbY[CtbAddrInRs] = yCtb
The above process can also be expressed as follows, using the position of the top left CTU of the tile (xTileInCtus, yTileInCtu):

xTileInCtus = firstCtbAddrInRs[TileId] % PicWidthInCtbsY
yTileInCtus = firstCtbAddrInRs[TileId] / PicWidthInCtbsY
xCtb = (((CtbAddrInRs-xTileInCtus)%tileWidthInCtus[TileId])<<log2CtuWidthY)+xTile[TileId]
yCtb = (((CtbAddrInRs-yTileInCtus)/tileWidthInCtus[TileId])<<log2CtuHeightY)+yTile[TileId]
ここでlog2CtuWidthY=log2(ctuWidth)、log2CtuHeightY=log2(ctuHeight)である。タイル左上CTUの位置(xTileInCtus, yTileInCtu)やCTUの左上座標(xCtb,yCtb)はしばしば参照されるため、導出済みの値をテーブルに格納して用いてもよい。また、上記の導出を参照の都度行ってもよい。
xTileInCtus = firstCtbAddrInRs[TileId] % PicWidthInCtbsY
yTileInCtus = firstCtbAddrInRs[TileId] / PicWidthInCtbsY
xCtb = (((CtbAddrInRs-xTileInCtus)%tileWidthInCtus[TileId])<<log2CtuWidthY)+xTile[TileId]
yCtb = (((CtbAddrInRs-yTileInCtus)/tileWidthInCtus[TileId])<<log2CtuHeightY)+yTile[TileId]
Here, log2CtuWidthY = log2(ctuWidth), log2CtuHeightY = log2(ctuHeight). The position of the top left CTU of the tile (xTileInCtu, yTileInCtu) and the top left coordinates of the CTU (xCtb, yCtb) are often referenced, so we use the derived values. The above may be stored in a table for use, or the above derivation may be performed each time the table is referenced.

上記処理の全体を擬似コードで示すと以下になる。 The entire process above is shown in pseudocode below.

for (CtbAddrInRs=0;CtbAddrInRs<numCtusInFrame;CtbAddrInRs++)
{
TileId = CtbAddrRsToTileID[CtbAddrInRs]
xCtb = xTile[TileId]+((CtbAddrInRs-firstCtbAddrInRs[TileId])%PicWidthInCtbsY)* ctuUWidth
yCtb = yTile[TileId]+((CtbAddrInRs-firstCtbAddrInRs[TileId])/PicWidthInCtbsY) * ctuHeight
CtbAddrToCtbX[CtbAddrInRs] = xCtb
CtbAddrToCtbY[CtbAddrInRs] = yCtb
}
ここで、numCtusInFrameは1ピクチャ内のCTUの個数であり、numCtusInFrame=numTileColumns*numTileRowsである。
for (CtbAddrInRs=0;CtbAddrInRs<numCtusInFrame;CtbAddrInRs++)
{
TileId = CtbAddrRsToTileID[CtbAddrInRs]
xCtb = xTile[TileId]+((CtbAddrInRs-firstCtbAddrInRs[TileId])%PicWidthInCtbsY)* ctuUWidth
yCtb = yTile[TileId]+((CtbAddrInRs-firstCtbAddrInRs[TileId])/PicWidthInCtbsY) * ctuHeight
CtbAddrToCtbX[CtbAddrInRs] = xCtb
CtbAddrToCtbY[CtbAddrInRs] = yCtb
}
Here, numCtusInFrame is the number of CTUs in one picture, and numCtusInFrame=numTileColumns*numTileRows.

(タイルの場合のCTUの復号・変形例)
上記で説明したタイルのCTUの復号の方法について、xCtbとyCtbの導出にCTUアドレステーブルCtbAddrToCtbX[]およびCtbAddrToCtbY[]を用いず、別の方法を用いてもよい。次にその例を示す。
(Decoding CTU in case of tiles - modified version)
Regarding the above-described method of decoding the CTU of a tile, a different method may be used to derive xCtb and yCtb instead of using the CTU address tables CtbAddrToCtbX[] and CtbAddrToCtbY[]. An example of such a method is shown below.

CT情報復号部3021は、図示しない対象CTU座標導出部を用いて、対象CTUのCTUラ
スタスキャンアドレスCtbAddrInRsから、対象CTUのCTU単位のX座標(CTUのcol位置)およびCTU単位のY座標(CTUのrow位置)であるrxおよびryを導出し、CTU座標変換テーブルCtbColToCtbX[]、CtbRowToCtbY[]を参照して対象CTUの左上座標(xCtb, yCtb)を導出する。
The CT information decoding unit 3021 uses a target CTU coordinate derivation unit (not shown) to derive rx and ry, which are the X coordinate (col position of the CTU) and the Y coordinate (row position of the CTU) of the target CTU, from the CTU raster scan address CtbAddrInRs of the target CTU, and derives the top left coordinate (xCtb, yCtb) of the target CTU by referring to the CTU coordinate conversion tables CtbColToCtbX[] and CtbRowToCtbY[].

rx = CtbAddrInRs % PicWidthInCtbsY
ry = CtbAddrInRs / PicWidthInCtbsY
xCtb = CtbColToCtbX[rx]
yCtb = CtbRowToCtbY[ry]
図30(a)のcoding_tree_unit()は、この変形例の導出方法を用いたシンタックスの例であ
る。対象CTの左上座標(xCtb,yCtb)を、CTU座標変換テーブルを用いて導出し、coding_quadtree()に左上座標(xCtb,yCtb)を渡す。図30(b)に示すように、タイルが利用可能な場合
(tile_enabled_flagが真)と、そうでない場合とで、導出方法を変更してもよい。
rx = CtbAddrInRs % PicWidthInCtbsY
ry = CtbAddrInRs / PicWidthInCtbsY
xCtb = CtbColToCtbX[rx]
yCtb = CtbRowToCtbY[ry]
The coding_tree_unit() in Fig. 30(a) is an example of syntax using the derivation method of this modified example. The upper left coordinate (xCtb, yCtb) of the target CT is derived using the CTU coordinate conversion table, and the coding_quadtree The upper left coordinate (xCtb, yCtb) is passed to (). As shown in Figure 30(b), the derivation method may be changed depending on whether the tile is available (tile_enabled_flag is true) or not. .

(CTU座標変換テーブル導出部)
CTU座標変換テーブル導出部は、以下のステップにより、CTU単位のX座標およびCTU単位のY座標(rx, ry)からCTUの画素単位の座標(xCtb, yCtb)を導出するCTU座標変換テーブルCtbColToCtbX[]、CtbRowToCtbY[]を導出する。
(CTU coordinate conversion table derivation part)
The CTU coordinate conversion table derivation unit derives the CTU coordinate conversion tables CtbColToCtbX[] and CtbRowToCtbY[] that derive the pixel-unit coordinates (xCtb, yCtb) of the CTU from the X coordinate in CTU unit and the Y coordinate in CTU unit (rx, ry) by the following steps.

CTU座標変換テーブル導出部は、CTU単位のX座標rxを0からnum_tile_columns_minus1ま
でループし、以下のステップを実行する。
The CTU coordinate conversion table derivation unit loops the X coordinate rx in CTU units from 0 to num_tile_columns_minus1, and executes the following steps.

(ステップ1x)
CTU座標変換テーブル導出部は、CTU単位のX座標rxから、タイルIDを導出する。この
とき、すべてのY座標についてこのテーブルは同じであるため、CTU単位のY座標(CTUのrow位置)は0とする。したがって、
TileId = CtbAddrRsToTileID[rx]
ここでCtbAddrRsToTileIDは、タイルIDテーブル導出部で導出されるテーブルである。
(Step 1x)
The CTU coordinate conversion table derivation unit derives a tile ID from the X coordinate rx in the CTU unit. At this time, since this table is the same for all Y coordinates, the Y coordinate in the CTU unit (row position of the CTU) is set to 0. Therefore,
TileId = CtbAddrRsToTileID[rx]
Here, CtbAddrRsToTileID is a table derived by the tile ID table derivation unit.

(ステップ2x)
CTU座標変換テーブル導出部は、対象CTUを含むタイルの先頭CTUラスタスキャンアドレ
スfirstCtbAddrInRs[TileId]を導出し、CTUを単位としたタイル内座標xCtbInCtusを以下
の式で導出する。
(Step 2x)
The CTU coordinate conversion table derivation unit derives the first CTU raster scan address firstCtbAddrInRs[TileId] of the tile including the target CTU, and derives the intra-tile coordinate xCtbInCtus in units of CTU using the following formula.

xCtbInCtus = rx - firstCtbAddrInRs[TileId] % PicWidthInCtbsY
ここでfirstCtbAddrInRsは、タイルIDで示されるタイルの先頭CTUラスタスキャンア
ドレスを導出するテーブルであり、先頭タイルアドレス導出部で導出される。
xCtbInCtus = rx - firstCtbAddrInRs[TileId] % PicWidthInCtbsY
Here, firstCtbAddrInRs is a table for deriving the first CTU raster scan address of the tile indicated by the tile ID, and is derived by the first tile address derivation unit.

あるいは、タイルIDで示されるタイルの先頭CTBのCTU単位X座標(col位置)を導出するテーブルfirstCtbCol[]を用いて、次のように導出してもよい。 Alternatively, it can be derived as follows using the table firstCtbCol[], which derives the CTU-unit X coordinate (col position) of the first CTB of the tile indicated by the tile ID.

xCtbInCtus = rx - firstCtbCol[TileId]
テーブルfirstCtbCol[]は、先頭タイルアドレス導出部で、次のように導出する。
xCtbInCtus = rx - firstCtbCol[TileId]
The table firstCtbCol[] is derived in the first tile address derivation unit as follows.

firstCtbCol[TileId] = firstCtbAddrInRs[TileId] % PicWidthInCtbsY
次に、CTU座標変換テーブル導出部は、xCtbInCtusにCTUサイズctuWidthをかけて、画素単位のタイル内座標xCtbInTileを以下の式で導出する。
firstCtbCol[TileId] = firstCtbAddrInRs[TileId] % PicWidthInCtbsY
Next, the CTU coordinate conversion table derivation unit multiplies xCtbInCtus by the CTU size ctuWidth to derive the in-tile coordinate xCtbInTile in pixel units using the following formula.

xCtbInTile = xCtbInCtus*ctuWidth
(ステップ3x)
CTU座標変換テーブル導出部は、タイル内X座標xCtbInTileとタイル左上X座標のピクチ
ャ内座標xTile[TileId]の和から、ピクチャ内におけるCTUの左上X座標xCtbを導出する。
xCtbInTile = xCtbInCtus*ctuWidth
(Step 3x)
The CTU coordinate conversion table derivation unit derives the top-left X coordinate xCtb of the CTU in the picture from the sum of the X coordinate in the tile xCtbInTile and the in-picture coordinate xTile[TileId] of the top-left X coordinate of the tile.

xCtb = xTile[TileId]+xCtbInTile
(ステップ4x)
最後に、CTU座標変換テーブル導出部は、導出されたrxに関するCTUの左上X座標xCtbを
テーブルに格納する。
xCtb = xTile[TileId]+xCtbInTile
(Step 4x)
Finally, the CTU coordinate conversion table derivation unit stores the derived upper left X coordinate xCtb of the CTU related to rx in a table.

CtbColToCtbX[rx] = xCtb
上記の処理は、タイル左上CTUのX座標xTileInCtusを用いて、以下のようにも表現でき
る。
CtbColToCtbX[rx] = xCtb
The above process can also be expressed as follows, using the X coordinate xTileInCtus of the top left CTU of the tile:

xTileInCtus = firstCtbAddrInRs[TileId] % PicWidthInCtbsY
xCtb = ((rx-xTileInCtus)<<log2CtuWidthY)+xTile[TileId]
ここでlog2CtuWidthY=log2(ctuWidth)である。タイル左上CTUのX座標xTileInCtusやCTU
の左上X座標xCtbはしばしば参照されるため、このように導出済みの値をテーブルに格納
して用いてもよいし、上記の導出を参照の都度行ってもよい。
xTileInCtus = firstCtbAddrInRs[TileId] % PicWidthInCtbsY
xCtb = ((rx-xTileInCtus)<<log2CtuWidthY)+xTile[TileId]
Here, log2CtuWidthY = log2(ctuWidth). The X coordinate of the top left corner of the tile, CTU, is xTileInCtus or CTU
Since the upper left X coordinate xCtb is frequently referenced, the derived value may be stored in a table and used, or the above derivation may be performed each time the value is referenced.

上記処理の全体を擬似コードで示すと以下になる。 The entire process above is shown in pseudocode below.

for ( col=0; col<=num_tile_columns_minus1; col++ )
{
TileId = CtbAddrRsToTileID[col]
xCtb = xTile[TileId]+((rx-firstCtbAddrInRs[TileId])%PicWidthInCtbsY)* ctuWidth
CtbColToCtbX[col] = xCtb
}
X座標に関するテーブルと同様に、CTU座標変換テーブル導出部は、CTU単位のY座標ryを0
からnum_tile_rows_minus1までループし、以下のステップを実行する。
for ( col=0; col<=num_tile_columns_minus1; col++ )
{
TileId = CtbAddrRsToTileID[col]
xCtb = xTile[TileId]+((rx-firstCtbAddrInRs[TileId])%PicWidthInCtbsY)* ctuWidth
CtbColToCtbX[col] = xCtb
}
As with the table for the X coordinate, the CTU coordinate conversion table derivation unit converts the Y coordinate ry in CTU units into
Loop through num_tile_rows_minus1 and perform the following steps:

(ステップ1y)
CTU座標変換テーブル導出部は、CTU単位のY座標ryから、タイルIDを導出する。この
とき、すべてのX座標についてこのテーブルは同じであるため、CTU単位のX座標(CTUのcol位置)は0とする。したがって、
TileId = CtbAddrRsToTileID[ry*PicWidthInCtbsY]
ここでCtbAddrRsToTileIDは、タイルIDテーブル導出部で導出されるテーブルである。
(Step 1y)
The CTU coordinate conversion table derivation unit derives a tile ID from the Y coordinate ry in CTU units. At this time, since this table is the same for all X coordinates, the X coordinate in CTU units (col position of the CTU) is set to 0. Therefore,
TileId = CtbAddrRsToTileID[ry*PicWidthInCtbsY]
Here, CtbAddrRsToTileID is a table derived by the tile ID table derivation unit.

(ステップ2y)
CTU座標変換テーブル導出部は、対象CTUを含むタイルの先頭CTUラスタスキャンアドレ
スfirstCtbAddrInRs[TileId]を導出し、CTUを単位としたタイル内座標yCtbInCtusを以下
の式で導出する。
(Step 2y)
The CTU coordinate conversion table derivation unit derives the first CTU raster scan address firstCtbAddrInRs[TileId] of the tile including the target CTU, and derives the intra-tile coordinate yCtbInCtus in units of CTU using the following formula.

yCtbInCtus = ry - firstCtbAddrInRs[TileId] / PicWidthInCtbsY
ここでfirstCtbAddrInRsは、タイルIDで示されるタイルの先頭CTUラスタスキャンア
ドレスを導出するテーブルであり、先頭タイルアドレス導出部で導出される。
yCtbInCtus = ry - firstCtbAddrInRs[TileId] / PicWidthInCtbsY
Here, firstCtbAddrInRs is a table for deriving the first CTU raster scan address of the tile indicated by the tile ID, and is derived by the first tile address derivation unit.

あるいは、タイルIDで示されるタイルの先頭CTBのCTU単位Y座標(row位置)を導出するテーブルfirstCtbRow[]を用いて、次のように導出してもよい。 Alternatively, it can be derived as follows using the table firstCtbRow[], which derives the CTU-unit Y coordinate (row position) of the first CTB of the tile indicated by the tile ID.

yCtbInCtus = ry - firstCtbRow[TileId]
テーブルfirstCtbRow[]は、先頭タイルアドレス導出部で、次のように導出する。
yCtbInCtus = ry - firstCtbRow[TileId]
The table firstCtbRow[] is derived in the first tile address derivation section as follows.

firstCtbRow[TileId] = firstCtbAddrInRs[TileId] / PicWidthInCtbsY
次に、CTU座標変換テーブル導出部は、yCtbInCtusにCTUサイズctuHeightをかけて、画
素単位のタイル内座標yCtbInTileを以下の式で導出する。
firstCtbRow[TileId] = firstCtbAddrInRs[TileId] / PicWidthInCtbsY
Next, the CTU coordinate conversion table derivation unit multiplies yCtbInCtus by the CTU size ctuHeight to derive the in-tile coordinate yCtbInTile in pixel units using the following formula.

yCtbInTile = yCtbInCtus*ctuHeight
(ステップ3y)
CTU座標変換テーブル導出部は、タイル内Y座標yCtbInTileとタイル左上Y座標のピクチ
ャ内座標yTile[TileId]の和から、ピクチャ内におけるCTUの左上Y座標yCtbを導出する。
yCtbInTile = yCtbInCtus*ctuHeight
(Step 3y)
The CTU coordinate conversion table derivation unit derives the top left Y coordinate yCtb of the CTU in the picture from the sum of the in-tile Y coordinate yCtbInTile and the in-picture coordinate yTile[TileId] of the top left Y coordinate of the tile.

yCtb = yTile[TileId]+yCtbInTile
(ステップ4y)
最後に、CTU座標変換テーブル導出部は、導出されたryに関するCTUの左上Y座標yCtbを
テーブルに格納する。
yCtb = yTile[TileId]+yCtbInTile
(Step 4y)
Finally, the CTU coordinate conversion table derivation unit stores the derived top left Y coordinate yCtb of the CTU related to ry in the table.

CtbRowToCtbY[ry] = yCtb
上記の処理は、タイル左上CTUのy位置yTileInCtusを用いて、以下のようにも表現でき
る。
CtbRowToCtbY[ry] = yCtb
The above process can also be expressed as follows, using the y position yTileInCtus of the top left CTU of the tile:

yTileInCtus = firstCtbAddrInRs[TileId] / PicWidthInCtbsY
yCtb = ((ry-yTileInCtus)<<log2CtuHeightY)+yTile[TileId]
ここでlog2CtuHeightY=log2(ctuHeight)である。タイル左上CTUのY座標yTileInCtusやCTUの左上Y座標yCtbはしばしば参照されるため、このように導出済みの値をテーブルに格
納して用いてもよいし、上記の導出を参照の都度行ってもよい。
yTileInCtus = firstCtbAddrInRs[TileId] / PicWidthInCtbsY
yCtb = ((ry-yTileInCtus)<<log2CtuHeightY)+yTile[TileId]
Here, log2CtuHeightY = log2(ctuHeight). Since the Y coordinate yTileInCtus of the upper left corner of the tile CTU and the Y coordinate yCtb of the upper left corner of the CTU are frequently referenced, it is acceptable to store the derived values in a table and use them. , the above derivation may be performed each time a reference is made.

上記処理の全体を擬似コードで示すと以下になる。 The entire process above is shown in pseudocode below.

for ( row=0; row<=num_tile_rows_minus1; row++ )
{
TileId = CtbAddrRsToTileID[row*PicWidthInCtbsY]
yCtb = yTile[TileId]+((ry-firstCtbAddrInRs[TileId])/PicWidthInCtbsY)* ctuHeight
CtbRowToCtbY[row] = yCtb
}
なお、CtbAddrInTsとCtbAddrInRsは互いに変換可能であるため、上記実施例のうちラスタスキャン順CTU位置CtbAddrInRsを添字とするテーブルは、タイルスキャン順CTU位置CtbAddrInTsを添字として導出し、参照時の添字もタイルスキャン順CTU位置に変換したもの
を用いて構成することも可能である。同様に、タイルスキャン順CTU位置CtbAddrInTsを添字とするテーブルは、ラスタスキャン順CTU位置CtbAddrInRsを添字として導出し、参照時の添字もラスタスキャン順CTU位置に変換したものを用いて構成することも可能である。
for ( row=0; row<=num_tile_rows_minus1; row++ )
{
TileId = CtbAddrRsToTileID[row*PicWidthInCtbsY]
yCtb = yTile[TileId]+((ry-firstCtbAddrInRs[TileId])/PicWidthInCtbsY)* ctuHeight
CtbRowToCtbY[row] = yCtb
}
In addition, since CtbAddrInTs and CtbAddrInRs can be converted into each other, the table in the above embodiment with the raster scan order CTU position CtbAddrInRs as an index is derived with the tile scan order CTU position CtbAddrInTs as an index, and the index when referring is also the tile scan order. Similarly, a table with the tile scan order CTU position CtbAddrInTs as an index can be derived with the raster scan order CTU position CtbAddrInRs as an index, and the index at the time of reference can be It is also possible to use the CTU positions converted into raster scan order.

ラスタスキャン順CTUアドレスからタイルスキャン順CTUアドレスを導出するテーブルCtbAddrRsToTs[]の導出例を以下に擬似コードで示す。CtbAddrRsToTileId[]は、タイルIDテーブル導出部によって導出された、ラスタスキャン順CTUアドレスからタイルIDを導
出する、タイルIDテーブルである。
An example of derivation of the table CtbAddrRsToTs[] that derives a tile scan order CTU address from a raster scan order CTU address is shown below in pseudo code: CtbAddrRsToTileId[] is a tile ID table that derives a tile ID from a raster scan order CTU address derived by a tile ID table derivation unit.

for( ctbAddrRs = 0; ctbAddrRs < numCtusInFrame; ctbAddrRs++ ) {
tileId = CtbAddrRsToTileId[ ctbAddrRs ]
tbX = ctbAddrRs % PicWidthInCtbsY
tbY = ctbAddrRs / PicWidthInCtbsY
CtbAddrRsToTs[ ctbAddrRs ] = 0
for( t = 0; t < tileId; t++ ) {
CtbAddrRsToTs[ctbAddrRs] += TileWidthInCtbsY[tileId]*TileHeightInCtbsY[tileId]
}
CtbAddrRsToTs[ctbAddrRs] += (tbY-TileYInCtbsY[tileId])*TileWidthInCtbsY[tileId]+
tbX-TileXInCtbsY[tileId]
}
以上の構成により、画像をCTUに分割し、CTU単位に動画像を復号する動画像復号装置において、タイルをCTUに分割して再帰的に分割するCT情報復号部を備え、対象CTUのラスタスキャンアドレスから、1つ以上のタイルのサイズを参照して、対象CTUのピクチャ上の左上座標を導出するヘッダ復号部(対象CTU座標導出部)を備え、上記CT情報復号部は、導出された対象CTUのピクチャ上の左上座標に基づいて、対象C
TUを符号化ツリーに分割し、分割されたCTの右下位置のタイル内座標がタイルサイズ以内である場合に、符号化ツリーを処理する手段を備える。
for( ctbAddrRs = 0; ctbAddrRs <numCtusInFrame; ctbAddrRs++ ) {
tileId = CtbAddrRsToTileId[ ctbAddrRs ]
tbX = ctbAddrRs % PicWidthInCtbsY
tbY = ctbAddrRs / PicWidthInCtbsY
CtbAddrRsToTs[ ctbAddrRs ] = 0
for( t = 0; t <tileId; t++ ) {
CtbAddrRsToTs[ctbAddrRs] += TileWidthInCtbsY[tileId]*TileHeightInCtbsY[tileId]
}
CtbAddrRsToTs[ctbAddrRs] += (tbY-TileYInCtbsY[tileId])*TileWidthInCtbsY[tileId]+
tbX-TileXInCtbsY[tileId]
}
With the above configuration, a video decoding device that divides an image into CTUs and decodes a video in units of CTUs includes a CT information decoding unit that divides tiles into CTUs and recursively divides them, and performs raster scanning of a target CTU. The header decoding unit (target CTU coordinate derivation unit) derives the top left coordinate of the target CTU on the picture by referring to the size of one or more tiles from the address, and the CT information decoding unit Based on the top left coordinate of the CTU on the picture,
The method includes means for dividing a TU into coding trees, and processing the coding tree when the coordinates in the tile of the bottom right position of a divided CT are within the tile size.

画像をタイルに分割し、タイル単位に動画像を復号する動画像復号装置において、対象CTUのラスタスキャンアドレスから、対象CTUの左上座標を導出するCTUアドレステ
ーブルを参照するヘッダ復号部(対象CTU座標導出部)を備え、上記CTUアドレステー
ブルを、1つ以上のタイルのサイズから導出するヘッダ復号部(CTUアドレステーブル導
出部)を備える。
A video decoding device that divides an image into tiles and decodes video on a tile-by-tile basis is provided with a header decoding unit (target CTU coordinate derivation unit) that references a CTU address table that derives the top left coordinate of a target CTU from the raster scan address of the target CTU, and a header decoding unit (CTU address table derivation unit) that derives the CTU address table from the size of one or more tiles.

(タイルIDテーブル導出部)
タイルIDテーブル導出部は以下のステップでタイルIDテーブルCtbAddrRsToTileID[]を導出する。
(Tile ID table derivation unit)
The tile ID table derivation unit derives the tile ID table CtbAddrRsToTileID[] in the following steps.

(ステップ1)
画面内CTUアドレスCtbAddrInRsに対応するCTUのタイル座標(columnIdx,rowIdx)を導出
する。
(Step 1)
The tile coordinates (columnIdx, rowIdx) of the CTU corresponding to the on-screen CTU address CtbAddrInRs are derived.

(ステップ2)
タイル座標(columnIdx, rowIdx)から画面内タイルIDを導出する。
(Step 2)
Derive the in-screen tile ID from the tile coordinates (columnIdx, rowIdx).

TileId = rowIdx*numTileColumns+columnIdx
ここでnumTileColumnsはピクチャ内の水平方向のタイルの個数である。
TileId = rowIdx*numTileColumns+columnIdx
where numTileColumns is the number of tiles horizontally in the picture.

(ステップ3)
導出したタイルIDをタイルIDテーブルCtbAddrRsToTileID[]に格納する。
(Step 3)
The derived tile ID is stored in the tile ID table CtbAddrRsToTileID[].

CtbAddrRsToTileID[CtbAddrInRs] = TileId
上記の処理の擬似コードを以下に示す。
CtbAddrRsToTileID[CtbAddrInRs] = TileId
The pseudocode for the above process is shown below.

for(CtbAddrInRs=0;CtbAddrInRs<numCtusInFrame;CtbAddrInRs++)
{
for(col=0;col<numTileColumns;col++)
{
if(CtbAddrInRs%PicWidthInCtbsY<=rightEdgePosInCtus[col])
{
columnIdx = col
break
}
}
for(row=0;row<numTileRows;row++)
{
if(CtbAddrInRs/PicWidthInCtbsY<=bottomEdgePosInCtus[row*numTileColumns])
{
rowIdx = row
break
}
}
CtbAddrRsToTileID[CtbAddrInRs] = rowIdx*numTileColumns+columnIdx
}
(先頭タイルアドレス導出部)
先頭タイルアドレス導出部は以下のステップで先頭タイルアドレステーブルfirstCtbAddrInRs[]を導出する。
for(CtbAddrInRs=0;CtbAddrInRs<numCtusInFrame;CtbAddrInRs++)
{
for(col=0;col<numTileColumns;col++)
{
if(CtbAddrInRs%PicWidthInCtbsY<=rightEdgePosInCtus[col])
{
columnIdx = col
break
}
}
for(row=0;row<numTileRows;row++)
{
if(CtbAddrInRs/PicWidthInCtbsY<=bottomEdgePosInCtus[row*numTileColumns])
{
rowIdx = row
break
}
}
CtbAddrRsToTileID[CtbAddrInRs] = rowIdx*numTileColumns+columnIdx
}
(First tile address derivation part)
The first tile address derivation unit derives the first tile address table firstCtbAddrInRs[] in the following steps.

(ステップ1)
タイル単位の座標で(col, row)に対応するTileIdについて、col列までの各タイルi(0<=i<col)のCTU単位の幅tileWidthInCtus[i]を参照して、TileIdの示すタイルのCTU単位の右端位置rightEdgePosInCtus[TileId]を導出する。同様に、row列までの各タイルj(0<=j<row)のCTU単位の高さtileHeightInCtus[j]を参照して、TileIdの示すタイルのCTU単位の下
端位置bottomEdgePosInCtus[TileId]を導出する。
(Step 1)
For TileId corresponding to (col, row) in tile coordinates, derive the right edge position in CTU units of the tile indicated by TileId, rightEdgePosInCtus[TileId], by referencing the width in CTU units of each tile i (0<=i<col) up to the col column, tileWidthInCtus[i]. Similarly, derive the bottom edge position in CTU units of the tile indicated by TileId, bottomEdgePosInCtus[TileId], by referencing the height in CTU units of each tile j (0<=j<row) up to the row column.

(ステップ2)
TileIdで示すタイルのCTU単位の右端位置rightEdgePosInCtus[TileId]、および、TileIdで示すタイルのCTU単位の幅tileWidthInCtus[TileId]から、TileIdで示すタイルのCTU単位の左端位置xCtbInCtusを導出する。
(Step 2)
The left edge position xCtbInCtus of the tile indicated by TileId in CTU units is derived from the right edge position rightEdgePosInCtus[TileId] of the tile indicated by TileId in CTU units and the width tileWidthInCtus[TileId] of the tile indicated by TileId in CTU units.

TileIdで示すタイルのCTU単位の下端位置bottomEdgePosInCtus[TileId]、および、TileIdで示すタイルのCTU単位の高さtileHeightInCtus[TileId]から、TileIdで示すタイルのCTU単位の上端位置yCtbInCtusを導出する。 The top edge position yCtbInCtus in CTU units of the tile indicated by TileId is derived from the bottom edge position bottomEdgePosInCtus[TileId] in CTU units of the tile indicated by TileId and the height tileHeightInCtus[TileId] in CTU units of the tile indicated by TileId.

xCtbInCtus = rightEdgePosInCtus[TileId]-tileWidthInCtus[TileId]+1
yCtbInCtus = bottomEdgePosInCtus[TileId]-tileHeightInCtus[TileId]+1
TileIdで示すCTU単位のタイル左上画素の画面内位置(xCtbInCtus, yCtbInCtus)から、CTUラスタスキャンアドレスCtbAddrInRsを導出する。
xCtbInCtus = rightEdgePosInCtus[TileId]-tileWidthInCtus[TileId]+1
yCtbInCtus = bottomEdgePosInCtus[TileId]-tileHeightInCtus[TileId]+1
The CTU raster scan address CtbAddrInRs is derived from the on-screen position (xCtbInCtus, yCtbInCtus) of the top left pixel of the CTU tile indicated by TileId.

CtbAddrInRs = yCtbInCtus*PicWidthInCtbsY+xCtbInCtus
ここで、tileWidthInCtus[]、tileHeightInCtus[]はタイル情報設定部が導出する。
CtbAddrInRs = yCtbInCtus*PicWidthInCtbsY+xCtbInCtus
Here, tileWidthInCtus[] and tileHeightInCtus[] are derived by the tile information setting unit.

(ステップ3)
導出したCTUアドレスを先頭タイルアドレステーブルfirstCtbAddrInRs[]に格納する
firstCtbAddrInRs[TileId] = CtbAddrInRs
上記の処理の擬似コードを以下に示す。
(Step 3)
Store the derived CTU address in the first tile address table firstCtbAddrInRs[]
firstCtbAddrInRs[TileId] = CtbAddrInRs
The pseudocode for the above process is shown below.

for(row=0; row < numTileRows; row++)
{
for(col=0; col < numTileColumns; col++)
{
TileIdx = row*numTileColumns+col;
rightEdgePosInCTU = 0;
for(i=0; i <= col; i++)
{
rightEdgePosInCTU += tileWidthInCtus[row*numTileColumns+i]
}
rightEdgePosInCtus[TileId] = rightEdgePosInCTU-1
bottomEdgePosInCTU = 0;
for(i=0 ;i <= row; i++)
{
bottomEdgePosInCTU += tileHeightInCtus[i*numTileColumns+col]
}
bottomEdgePosInCtus[tileId] = bottomEdgePosInCTU-1
xCtbInCtus = rightEdgePosInCtus[TileId]-tileWidthInCtus[TileId]+1
yCtbInCtus = bottomEdgePosInCtus[TileId]-tileHeightInCtus[TileId]+1
CtbAddrInRs = yCtbInCtus*PicWidthInCtbsY+xCtbInCtus
firstCtbAddrInRs[TileId] = CtbAddrInRs
}
}
(CT情報復号の処理)
以下、CT情報復号の処理を、図7、図8、図9を参照して説明する。図7は、本発明の一実施形態に係るCT情報復号部3021の動作を説明するフローチャートである。また、図8は、
本発明の一実施形態に係るCTUおよびQT情報のシンタックス表の構成例を示す図であり、
図9は、本発明の一実施形態に係るMT分割情報のシンタックス表の構成例を示す図である
。また図7~図9の別の例を、図27~図29に示す。
for(row=0; row <numTileRows; row++)
{
for(col=0; col <numTileColumns; col++)
{
TileIdx = row*numTileColumns+col;
rightEdgePosInCTU = 0;
for(i=0; i <= col; i++)
{
rightEdgePosInCTU += tileWidthInCtus[row*numTileColumns+i]
}
rightEdgePosInCtus[TileId] = rightEdgePosInCTU-1
bottomEdgePosInCTU = 0;
for(i=0 ; i <= row ; i++)
{
bottomEdgePosInCTU += tileHeightInCtus[i*numTileColumns+col]
}
bottomEdgePosInCtus[tileId] = bottomEdgePosInCTU-1
xCtbInCtus = rightEdgePosInCtus[TileId]-tileWidthInCtus[TileId]+1
yCtbInCtus = bottomEdgePosInCtus[TileId]-tileHeightInCtus[TileId]+1
CtbAddrInRs = yCtbInCtus*PicWidthInCtbsY+xCtbInCtus
firstCtbAddrInRs[TileId] = CtbAddrInRs
}
}
(CT information decoding process)
The CT information decoding process will be described below with reference to Fig. 7, Fig. 8, and Fig. 9. Fig. 7 is a flowchart illustrating the operation of the CT information decoding unit 3021 according to one embodiment of the present invention. Also, Figure 8 shows
FIG. 1 is a diagram showing an example of a syntax table of CTU and QT information according to an embodiment of the present invention;
Fig. 9 is a diagram showing an example of the structure of a syntax table of MT division information according to an embodiment of the present invention. Other examples of Figs. 7 to 9 are shown in Figs. 27 to 29.

図8(a)のcoding_tree_unit()のシンタックスの復号においてCT情報復号は、対象CTUの
左上座標(xCtb,yCtb)を導出し、coding_quadtree()のシンタックスを再帰的に復号する。coding_quadtree()のCTの左上座標(xCb, yCb)の初期値には、CTUの左上座標(xCtb,yCtb)
を用いる。(xCtb,yCtb)の別の導出方法として、図27(b)に示すように、タイルを利用する場合(tile_enabled_flagが真)と、そうでない場合とで、導出方法を変更してもよい。
すなわち、タイルを利用する場合には、CTU左上座標(xCtb, yCtb)を、画面内のタイル左
上座標(xTile[TileId], yTile[TileId])とタイル内のCTU左上座標の和から導出する。つ
まり、タイル内のCTU左上座標は、CTU単位のCTUの画面内座標(rx, ry)とCTU単位のタイルの画面内座標(TileXInCtbY, TileYInCtbY)の差分から、CTU単位のタイル内座標を導出し
、CTUサイズをかける(CtbLog2SizeYで左シフトする)。
In the decoding of the coding_tree_unit() syntax in Fig. 8(a), the CT information decoding derives the top left coordinate (xCtb, yCtb) of the target CTU, and recursively decodes the coding_quadtree() syntax. The initial value of the top left coordinate (xCtb, yCb) of the CT of coding_quadtree() is the top left coordinate (xCtb, yCtb) of the CTU.
As another method of deriving (xCtb, yCtb), as shown in FIG. 27(b), the derivation method may be changed depending on whether tiles are used (tile_enabled_flag is true) or not.
That is, when tiles are used, the CTU top-left coordinate (xCtb, yCtb) is derived from the sum of the top-left coordinate of the tile on the screen (xTile[TileId], yTile[TileId]) and the top-left coordinate of the CTU in the tile. In other words, the top-left coordinate of the CTU in a tile is derived from the difference between the in-screen coordinate (rx, ry) of the CTU in CTU unit and the in-screen coordinate (TileXInCtbY, TileYInCtbY) of the tile in CTU unit, and then multiplied by the CTU size (shifted left by CtbLog2SizeY).

CurrTileId = TileIdTbl[ CtbAddrInRs ]
xCtb = xTile[TileId]+(rx-TileXInCtbsY[CurrTileId]) <<CtbLog2SizeY
yCtb = yTile[TileId]+(ry-TileYInCtbsY[CurrTileId]) <<CtbLog2SizeY
逆に、タイルを利用しない場合には、CTU左上座標(xCtb, yCtb)を、CTU単位のCTUの画面
内座標から導出する。つまり、タイル内のCTU左上座標は、CTU単位のCTUの画面内座標(rx, ry)にCTUサイズをかける(CtbLog2SizeYで左シフトする)。
CurrTileId = TileIdTbl[ CtbAddrInRs ]
xCtb = xTile[TileId]+(rx-TileXInCtbsY[CurrTileId]) <<CtbLog2SizeY
yCtb = yTile[TileId]+(ry-TileYInCtbsY[CurrTileId]) <<CtbLog2SizeY
Conversely, when tiles are not used, the top left coordinates of the CTU (xCtb, yCtb) are derived from the screen coordinates of the CTU in the CTU unit. In other words, the top left coordinates of the CTU in the tile are calculated from the screen coordinates of the CTU in the CTU unit. Multiply the coordinates (rx, ry) by the CTU size (shift left by CtbLog2SizeY).

rx = CtbAddrInRs % PicWidthInCtbsY
ry = CtbAddrInRs / PicWidthInCtbsY
xCtb = rx << CtbLog2SizeY
yCtb = ry << CtbLog2SizeY
また、タイルを利用しない場合も、画面全体が一つのタイルであるとして、タイルの利用する利用しないに限らずに処理をしてもよい。
rx = CtbAddrInRs % PicWidthInCtbsY
ry = CtbAddrInRs / PicWidthInCtbsY
xCtb = rx << CtbLog2SizeY
yCtb = ry << CtbLog2SizeY
Even when tiles are not used, the entire screen may be regarded as one tile and processing may be performed regardless of whether tiles are used or not.

(CTU以下の復号)
(ピクチャ内座標系を用いたフレキシブルタイルのCT分割)
CT情報復号部3021は符号化データからCT情報を復号し、再帰的に符号化ツリーCT(coding_quadtree)を復号する。具体的には、CT情報復号部3021はQT情報を復号し、対象CT coding_quadtree(x0,y0,log2CbSize,cqtDepth)を復号する。なお、(x0,y0)は対象CTの左上
座標、log2CbSizeはCTのサイズであるCTサイズの2を底とした対数である対数CTサイズ、cqtDepthはCTの階層を示すCTデプス(QT深度)である。
(Decryption below CTU)
(CT division of flexible tiles using intra-picture coordinate system)
The CT information decoding unit 3021 decodes the CT information from the coded data, and recursively decodes the coding tree CT (coding_quadtree). Specifically, the CT information decoding unit 3021 decodes the QT information, and decodes the target CT coding_quadtree (x0, y0, log2CbSize, cqtDepth). Note that (x0, y0) is the upper left coordinate of the target CT, log2CbSize is the logarithm of the CT size, which is the size of the CT, and cqtDepth is the CT depth (QT depth) indicating the hierarchy of the CT.

(S1411)CT情報復号部3021は復号したCT情報にQT分割フラグがあるか否かを判定する
。QT分割フラグがある場合にはS1421に遷移し、それ以外の場合にはS1422に遷移する。
(S1411) The CT information decoding unit 3021 determines whether or not the decoded CT information has a QT division flag. If the QT division flag is present, the process proceeds to S1421, and otherwise the process proceeds to S1422.

(S1421)CT情報復号部3021は、対数CTサイズlog2CbSizeがMinCbLog2SizeYより大きい
と判定された場合には、QT分割フラグ(split_cu_flag)を復号する。
ここで、下式のように、タイルを用いる場合にはCTUの左上座標(xCtb,yCtb)とタイルサイズを考慮して、さらなる四分木分割を実施するか否かを示すsplit_cu_flagを通知する。
(S1421) If it is determined that the logarithmic CT size log2CbSize is larger than MinCbLog2SizeY, the CT information decoding unit 3021 decodes the QT split flag (split_cu_flag).
Here, when tiles are used, as shown in the formula below, split_cu_flag is notified, indicating whether or not to perform further quadtree division, taking into consideration the upper left coordinates (xCtb, yCtb) of the CTU and the tile size.

if (x0+(1<<log2CbSize)-xTile<=wT && y0+(1<<log2CbSize)-yTile<=hT && log2CbSize>MinCbLog2SizeY)
split_cu_flag[x0][y0]
ここで、(x0,y0)はブロックの左上座標、(xTile,yTile)はタイルの左上座標、log2CbSizeはブロックサイズの対数値、wTとhTはタイル有効領域(もしくはタイル符号化領域)の幅と高さ、MinCbLog2SizeYはブロックの最小サイズの対数値である。
if (x0+(1<<log2CbSize)-xTile<=wT &&y0+(1<<log2CbSize)-yTile<=hT&&log2CbSize>MinCbLog2SizeY)
split_cu_flag[x0][y0]
Here, (x0, y0) is the upper left coordinate of the block, (xTile, yTile) is the upper left coordinate of the tile, log2CbSize is the logarithmic value of the block size, wT and hT are the widths of the tile effective area (or tile coding area), The height, MinCbLog2SizeY, is the logarithm of the minimum size of a block.

ブロックの右端の座標x0+(1<<log2CbSize)、下端の座標y0+(1<<log2CbSize)が、タイル有効領域の右端の座標xTile+wTileと下端の座標yTile+hTileよりも小さい場合、対象ブロックはタイル有効領域内に存在する。ブロックがタイル内に存在し、ブロックサイズが最小値よりも大きい場合(log2CbSize>MinCbLog2SizeY)、ブロックをさらに分割するか否か
を示すフラグsplit_cu_flagを通知する。ブロックをさらに四分木分割する場合、split_cu_flagを1にセットし、ブロックを四分木分割しない場合、split_cu_flagを0にセット
する。
If the coordinate x0 + (1 << log2CbSize) of the right edge of the block and the coordinate y0 + (1 << log2CbSize) of the bottom edge are smaller than the coordinate xTile + wTile of the right edge of the tile valid area and the coordinate yTile + hTile of the bottom edge of the tile valid area, the target block exists within the tile valid area. If the block exists within the tile and the block size is larger than the minimum value (log2CbSize > MinCbLog2SizeY), a flag split_cu_flag is notified indicating whether the block should be further divided. If the block should be further quadtree divided, split_cu_flag is set to 1, and if the block should not be quadtree divided, split_cu_flag is set to 0.

(S1422)CT情報復号部3021は、それ以外の場合には、符号化データからのQT分割フラ
グsplit_cu_flagの復号を省略し、QT分割フラグsplit_cu_flagに0をセットする。
(S1422) In other cases, the CT information decoding unit 3021 omits decoding of the QT split flag split_cu_flag from the encoded data, and sets the QT split flag split_cu_flag to 0.

(S1450)QT分割フラグsplit_cu_flagが0以外である場合にはS1451に遷移し、それ以
外の場合にはS1471に遷移する。
(S1450) If the QT split flag split_cu_flag is other than 0, the process transitions to S1451; otherwise, the process transitions to S1471.

(S1451)CT情報復号部3021はQT分割を行う。具体的には、CT情報復号部3021は、CTデ
プスcqtDepth+1の位置(x0,y0)、(x1,y0)、(x0,y1)、(x1,y1)において、対数CTサイズlog2CbSize-1の4つのCTを復号する。タイル内での各CTの右下座標(xi-xTile[TileId], yi-yTile[TileId])がタイルサイズ(wTile[TileId], hTile[TileId])未満のCTを復号する。逆に、各CTの右下座標(xi-xTile[TileId], yi+yTile[TileId])の何れかがタイルサイズ(wTile[TileId], hTile[TileId])以上のCTは復号しない。すなわち、CT情報復号部3021は、対象CTUを再帰的に符号化ツリーに分割し、分割されたCTの左上座標(x1, y0), (x0, y1), (x1, y1)が対象タイル内である場合に、符号化ツリーを処理する。
(S1451) The CT information decoding unit 3021 performs QT division. Specifically, the CT information decoding unit 3021 decodes four CTs with a logarithmic CT size log2CbSize-1 at positions (x0, y0), (x1, y0), (x0, y1), and (x1, y1) of the CT depth cqtDepth+1. The CTs whose bottom right coordinates (xi-xTile[TileId], yi-yTile[TileId]) of each CT in the tile are less than the tile size (wTile[TileId], hTile[TileId]) are decoded. Conversely, the CTs whose bottom right coordinates (xi-xTile[TileId], yi+yTile[TileId]) of each CT are equal to or greater than the tile size (wTile[TileId], hTile[TileId]) are not decoded. That is, the CT information decoding unit 3021 recursively divides the target CTU into a coding tree, and processes the coding tree if the top left coordinates (x1, y0), (x0, y1), (x1, y1) of the divided CT are within the target tile.

coding_quadtree(x0,y0,log2CbSize-1,cqtDepth+1)
if (x1-xTile[TileId] < wTile[TileId])
coding_quadtree(x1,y0,log2CbSize-1,cqtDepth+1)
if (y1-yTile[TileId] < hTile[TileId])
coding_quadtree(x0,y1,log2CbSize-1,cqtDepth+1)
if (x1-xTile[TileId] < wTile[TileId] && y1-yTile[TileId] < hTile[TileId])
coding_quadtree(x1,y1,log2CbSize-1,cqtDepth+1)
上記に置いて、例えば、4分木分割で得られた、(x1,y0)に位置するブロックであるcoding_quadtree(x1,y0,log2CbSize-1,cqtDepth+1,wTile,hTile,xTile,yTile)は、以下のようにx1がタイル内に位置する場合に符号化あるいは復号される。
coding_quadtree(x0,y0,log2CbSize-1,cqtDepth+1)
if (x1-xTile[TileId] < wTile[TileId])
coding_quadtree(x1,y0,log2CbSize-1,cqtDepth+1)
if (y1-yTile[TileId] < hTile[TileId])
coding_quadtree(x0,y1,log2CbSize-1,cqtDepth+1)
if (x1-xTile[TileId] < wTile[TileId] && y1-yTile[TileId] < hTile[TileId])
coding_quadtree(x1,y1,log2CbSize-1,cqtDepth+1)
In the above example, the block located at (x1, y0) obtained by quadtree division, coding_quadtree(x1, y0, log2CbSize-1, cqtDepth+1, wTile, hTile, xTile, yTile) is , is encoded or decoded if x1 is located within the tile as follows:

if (x1-xTile[TileId]<wTile[TileId])
coding_quadtree(x1,y0,log2CbSize-1,cqtDepth+1)
ここで、(x0,y0)は対象CTの左上座標、(x1,y1)は以下の式のように(x0,y0)にCTサイズ
(1<<log2CbSize)の1/2を加えて導出される。
if (x1-xTile[TileId]<wTile[TileId])
coding_quadtree(x1,y0,log2CbSize-1,cqtDepth+1)
Here, (x0, y0) is the upper left coordinate of the target CT, and (x1, y1) is calculated by adding 1/2 of the CT size (1<<log2CbSize) to (x0, y0) as shown in the following formula. do.

x1 = x0+(1<<(log2CbSize-1))
y1 = y0+(1<<(log2CbSize-1))
1<<Nは2のN乗と同値である(以下同様)。
x1 = x0 + (1<<(log2CbSize-1))
y1 = y0 + (1 << (log2CbSize-1))
1<<N is equivalent to 2 to the Nth power, and so on.

そして、CT情報復号部3021は、下式のように、CTの階層を示すCTデプスcqtDepthと対数CTサイズlog2CbSizeを更新する。 Then, the CT information decoding unit 3021 updates the CT depth cqtDepth and the logarithmic CT size log2CbSize, which indicate the CT hierarchy, as shown in the following formula.

cqtDepth = cqtDepth+1
log2CbSize = log2CbSize-1
CT情報復号部3021は、下位のCTにおいても、更新された左上座標、対数CTサイズ、CTデプスを用いて、S1411から開始されるQT情報復号を継続する。
cqtDepth = cqtDepth+1
log2CbSize = log2CbSize-1
The CT information decoding unit 3021 continues the QT information decoding started from S1411 using the updated upper left coordinate, logarithmic CT size, and CT depth for the lower CTs as well.

QT分割終了後、CT情報復号部3021は符号化データからCT情報を復号し、再帰的に符号化ツリーCT(MT、coding_multitree(図9)あるいはmulti_type_tree(図29))を復号する。具体的には、CT情報復号部3021は、MT分割情報を復号し、対象CT coding_multitree(x0,y0,log2CbWidth,log2CbHeight,cbtDepth)、あるいは、multi_type_tree(x0,y0,cbWidth,cbHeight,mttDepth,depthOffset,partIdx,treeType)を復号する。なお、log2CbWidthはCTの幅の対数値、log2CbHeightはCTの高さの対数値、cbtDepthはマルチツリーの階層を示すCTデプス(MT深度)である。以下では、coding_multitreeについて説明する。 After QT division is completed, the CT information decoding unit 3021 decodes the CT information from the encoded data, and recursively decodes the coding tree CT (MT, coding_multitree (Figure 9) or multi_type_tree (Figure 29)). Specifically, the CT information decoding unit 3021 decodes the MT division information, and decodes the target CT coding_multitree(x0, y0, log2CbWidth, log2CbHeight, cbtDepth) or multi_type_tree(x0, y0, cbWidth, cbHeight, mttDepth, depthOffset, partIdx, treeType). Note that log2CbWidth is the logarithmic value of the CT width, log2CbHeight is the logarithmic value of the CT height, and cbtDepth is the CT depth (MT depth) that indicates the hierarchy of the multitree. Below, coding_multitree is explained.

(S1471)CT情報復号部3021は、復号したCT情報にMT分割フラグ(分割情報)があるか
否かを判定する。MT分割フラグがある場合にはS1481に遷移する。それ以外の場合にはS1482に遷移する。
(S1471) The CT information decoding unit 3021 determines whether or not the decoded CT information has an MT division flag (division information). If the MT division flag is present, the process proceeds to S1481. Otherwise, the process proceeds to S1482.

(S1481)CT情報復号部3021はMT分割フラグsplit_mt_flagを復号する。 (S1481) The CT information decoding unit 3021 decodes the MT split flag split_mt_flag.

(S1482)CT情報復号部3021は符号化データからMT分割フラグsplit_mt_flagを復号せず、0に設定する。 (S1482) The CT information decoding unit 3021 does not decode the MT split flag split_mt_flag from the encoded data, but sets it to 0.

(S1490)CT情報復号部3021は、MT分割フラグsplit_mt_flagが0以外の場合には、S1491に遷移する。それ以外の場合には、CT情報復号部3021は対象CTを分割せず、処理を終了
する(CUの復号に移行する)。
(S1490) The CT information decoding unit 3021 transitions to S1491 if the MT split flag split_mt_flag is other than 0. In other cases, the CT information decoding unit 3021 does not split the target CT and ends the process (transitions to decoding of the CU).

(S1491)CT情報復号部3021はMT分割を行う。MT分割の方向を示すフラグsplit_mt_dir
と、MT分割が2分木であるか3分木であるかを示すシンタックス要素split_mt_typeを復
号する。CT情報復号部3021は、分割されたCTの左上座標が対象タイル内である場合に、符号化ツリーを処理する。CTの左上座標は2分木では、(x0, y1)もしくは(x1, y0)、3分木では(x0, y1), (x0, y2)もしくは(x1, y0), (x2, y0)。である。ここで先頭CTの左上座標(x0, y0)がタイル外になる場合には分割自体されないため、(x0, y0)は常にタイル内であると仮定する。
(S1491) The CT information decoding unit 3021 performs MT division. The flag split_mt_dir indicating the direction of MT division is set to
and decodes a syntax element split_mt_type indicating whether the MT division is a binary tree or a ternary tree. The CT information decoding unit 3021 processes the coding tree when the top left coordinate of the divided CT is within the target tile. The top left coordinate of the CT is (x0, y1) or (x1, y0) in a binary tree, and (x0, y1), (x0, y2) or (x1, y0), (x2, y0) in a ternary tree. Here, if the top left coordinate (x0, y0) of the leading CT is outside the tile, the division itself is not performed, so it is assumed that (x0, y0) is always within the tile.

CT情報復号部3021は、MT分割タイプsplit_mt_typeが0(2分割)、かつ、MT分割方向split_dir_flagが1(水平分割)の場合は、以下の2つのCTを復号(BT分割情報復号)す
る。タイル内でのCT(x0, y1)の下座標y1-yTile[TileId]がタイルサイズhTile[TileId]未
満のCTを復号する。逆に、タイル内での各CTの下座標y1-yTile[TileId]がタイルサイズhTile[TileId]以上のCTは復号しない。
When the MT split type split_mt_type is 0 (two splits) and the MT split direction split_dir_flag is 1 (horizontal split), the CT information decoding unit 3021 decodes the following two CTs (BT split information decoding). It decodes the CT whose bottom coordinate y1-yTile[TileId] of CT(x0, y1) in the tile is less than the tile size hTile[TileId]. Conversely, it does not decode the CT whose bottom coordinate y1-yTile[TileId] of each CT in the tile is equal to or greater than the tile size hTile[TileId].

coding_multitree(x0,y0,log2CbWidth,log2CbHeight-1,cbtDepth+1)
if (y1-yTile[TileId] < hTile[TileId])
coding_multitree(x0,y1,log2CbWidth,log2CbHeight-1,cbtDepth+1)
一方、MT分割方向split_dir_flagが0(垂直分割)の場合は、以下の2つのCTを復号(
BT分割情報復号)する。タイル内でのCT(x1, y0)の右座標x1-xTile[TileId]がタイルサイズwTile[TileId]未満のCTを復号する。逆に、タイル内での各CTの右座標x1-xTile[TileId]がタイルサイズwTile[TileId]以上のCTは復号しない。
coding_multitree(x0,y0,log2CbWidth,log2CbHeight-1,cbtDepth+1)
if (y1-yTile[TileId] < hTile[TileId])
coding_multitree(x0,y1,log2CbWidth,log2CbHeight-1,cbtDepth+1)
On the other hand, if the MT split direction split_dir_flag is 0 (vertical split), the following two CTs are decoded (
Decode the CT whose right coordinate x1-xTile[TileId] of CT(x1, y0) in the tile is less than the tile size wTile[TileId]. Conversely, A CT whose right coordinate x1-xTile[TileId] is equal to or larger than the tile size wTile[TileId] is not decoded.

coding_multitree(x0,y0,log2CbWidth-1,log2CbHeight,cbtDepth+1)
if (x1-xTile[TileId] < wTile[TileId])
coding_multitree(x1,y0,log2CbWidth-1,log2CbHeight,cbtDepth+1)
ここで、(x1,y1)は以下の式で導出される。
coding_multitree(x0,y0,log2CbWidth-1,log2CbHeight,cbtDepth+1)
if (x1-xTile[TileId] < wTile[TileId])
coding_multitree(x1,y0,log2CbWidth-1,log2CbHeight,cbtDepth+1)
Here, (x1, y1) is derived using the following formula:

x1 = x0+(1<<(log2CbWidth-1))
y1 = y0+(1<<(log2CbHeight-1))
さらに、log2CbWidth、または、log2CbHeightを下式のように更新する。
x1 = x0 + (1<<(log2CbWidth-1))
y1 = y0 + (1 << (log2CbHeight - 1))
Furthermore, log2CbWidth or log2CbHeight is updated according to the following formula.

log2CbWidth = log2CbWidth-1
log2CbHeight = log2CbHeight-1
CT情報復号部3021は、MT分割タイプsplit_mt_typeが1(3分割)を示す場合には、3
つのCTを復号(TT分割情報復号)する。
log2CbWidth = log2CbWidth-1
log2CbHeight = log2CbHeight-1
When the MT division type split_mt_type indicates 1 (3 divisions), the CT information decoding unit 3021
Decode one CT (TT division information decode).

MT分割方向split_dir_flagが1(水平分割)の場合は、以下の3つのCTを復号する。タイル内でのi=0, 1の各CT(x0, yi)の下座標yi-yTile[TileId]がタイルサイズhTile[TileId]未満のCTを復号する。逆に、タイル内での各CTの下座標yi-yTile[TileId]がタイルサイ
ズhTile[TileId]以上のCTは復号しない。
When the MT split direction split_dir_flag is 1 (horizontal split), the following three CTs are decoded. CTs whose bottom coordinate yi-yTile[TileId] of each CT(x0, yi) for i=0, 1 in the tile is less than the tile size hTile[TileId] are decoded. Conversely, CTs whose bottom coordinate yi-yTile[TileId] of each CT in the tile is equal to or greater than the tile size hTile[TileId] are not decoded.

coding_multitree(x0,y0,log2CbWidth,log2CbHeight-2,cbtDepth+1)
if (y1-yTile[TileId] < hTile[TileId])
coding_multitree(x0,y1,log2CbWidth,log2CbHeight-1,cbtDepth+1)
if (y2-yTile[TileId] < hTile[TileId])
coding_multitree(x0,y2,log2CbWidth,log2CbHeight-2,cbtDepth+1)
一方、MT分割方向split_dir_flagが1(垂直分割)の場合は、以下の3つのCTを復号(TT分割情報復号)する。タイル内でのi=0, 1の各CT(xi, y0)の右座標xi-xTile[TileId]がタイルサイズwTile[TileId]未満のCTを復号する。逆に、タイル内での各CTの右座標xi-xTile[TileId]がタイルサイズwTile[TileId]以上のCTは復号しない。
coding_multitree(x0,y0,log2CbWidth,log2CbHeight-2,cbtDepth+1)
if (y1-yTile[TileId] < hTile[TileId])
coding_multitree(x0,y1,log2CbWidth,log2CbHeight-1,cbtDepth+1)
if (y2-yTile[TileId] < hTile[TileId])
coding_multitree(x0,y2,log2CbWidth,log2CbHeight-2,cbtDepth+1)
On the other hand, if the MT split direction split_dir_flag is 1 (vertical split), the following three CTs are decoded (TT split information decoded). Decode CTs whose coordinates xi-xTile[TileId] are less than the tile size wTile[TileId]. Conversely, CTs whose right coordinates xi-xTile[TileId] of each CT in the tile are equal to or greater than the tile size wTile[TileId] are decoded. Do not decrypt.

coding_multitree(x0,y0,log2CbWidth-2,log2CbHeight,cbtDepth+1)
if (x1-xTile[TileId] < wTile[TileId])
coding_multitree(x1,y0,log2CbWidth-1,log2CbHeight,cbtDepth+1)
if (x2-xTile[TileId] < wTile[TileId])
coding_multitree(x2,y0,log2CbWidth-2,log2CbHeight,cbtDepth+1)
ここで、(x1,y1)、(x2,y2)は、以下の式のように、導出される。
coding_multitree(x0,y0,log2CbWidth-2,log2CbHeight,cbtDepth+1)
if (x1-xTile[TileId] < wTile[TileId])
coding_multitree(x1,y0,log2CbWidth-1,log2CbHeight,cbtDepth+1)
if (x2-xTile[TileId] < wTile[TileId])
coding_multitree(x2,y0,log2CbWidth-2,log2CbHeight,cbtDepth+1)
Here, (x1, y1) and (x2, y2) are derived as follows:

x1 = x0+(1<<(log2CbWidth-2))
y1 = y0+(1<<(log2CbHeight-2))
x2 = x0+(3<<(log2CbWidth-2))
y2 = y0+(3<<(log2CbHeight-2))
CT情報復号部3021は、下位のCTにおいても、更新された左上座標、CTの幅及び高さ、MT深度を用いて、S1471から開始されるBT分割情報復号、あるいは、TT分割情報復号を継続
する。
x1 = x0 + (1<<(log2CbWidth-2))
y1 = y0 + (1 << (log2CbHeight - 2))
x2 = x0 + (3<<(log2CbWidth-2))
y2 = y0 + (3 << (log2CbHeight - 2))
The CT information decoding unit 3021 continues the BT partition information decoding started from S1471 or the TT partition information decoding, using the updated top left coordinate, CT width and height, and MT depth, even for the lower CT.

また、CT情報復号部3021は、MT分割フラグsplit_mt_flagが0の場合、すなわちQT分割
もMT分割も行われない場合には、CU復号部3022でCU(coding_unit(x0,y0,log2CbSize, cq
tDepth))を復号する。
In addition, when the MT split flag split_mt_flag is 0, that is, when neither QT splitting nor MT splitting is performed, the CT information decoding unit 3021 decodes a CU (coding_unit(x0, y0, log2CbSize, cq
tDepth)

以下、画面内座標系とは、対象画面の左上座標を基準とする対象ブロックの輝度左上座標を用いることであり、タイル内座標系とは、対象タイルの左上座標を基準とする対象ブロックの輝度左上座標をもちいることであってもよい。 In the following, the in-screen coordinate system refers to using the luminance top-left coordinate of the target block based on the top-left coordinate of the target screen, and the in-tile coordinate system may refer to using the luminance top-left coordinate of the target block based on the top-left coordinate of the target tile.

以上のように、画面内座標系で表現される各CUの左上座標(xi, yi)から、タイル左上座標(xTile, yTile)を引いて、タイル内座標系の左上座標を導出し、それをタイルサイズ(wTile, hTile)と比較することで、分割フラグを復号し、各CTを復号する。これによって、タイルサイズがCTUサイズの整数倍ではない場合においても、無駄な分割フラグ、無駄なCTを復号することなく、効率的にCU分割を行うことが可能であるという効果を奏する。 As described above, the top left coordinate of the tile (xTile, yTile) is subtracted from the top left coordinate (xi, yi) of each CU expressed in the on-screen coordinate system to derive the top left coordinate in the tile coordinate system, and this is compared with the tile size (wTile, hTile) to decode the split flag and decode each CT. This has the effect of making it possible to efficiently split CUs without decoding unnecessary split flags and unnecessary CTs, even when the tile size is not an integer multiple of the CTU size.

(タイル分割の別の例)
図31のシンタックステーブルを用いてタイル分割の別の例を説明する。この例では、画面を矩形のタイルに分割し、タイルをグループとした単位を用いて符号化データを構成する。タイルの左上座標はxTile, yTile、タイルの幅、高さはwTile, hTileである。タイルの先頭位置を格納するテーブルFirstCtbAddrTsとタイルグループの位置tile_group_addressから、先頭タイルのCTUアドレスctbAddrInTsを導出する。0からnum_tiles_in_tile_group_minus1までのタイルを復号する。num_tiles_in_tile_group_minus1は、ピクチャ内の
タイルの個数から1を引いた値である。TileIdで示される各タイルについて0からNumCtusInTile[tileIdx]までのCTUを復号する。タイルの終端でend_of_tile_one_bitとバイトア
ライン用ビットbyte_alignment()を復号する。またタイル内におけるCTU位置jをcoding_tree_unitの引数としてCTUを復号する。jは、CtbAddrInTileの値として設定される。
(Another example of tiling)
Another example of tile division will be described using the syntax table in FIG. 31. In this example, the screen is divided into rectangular tiles, and encoded data is constructed using a unit in which tiles are groups. The upper left coordinates of the tile are xTile, yTile, and the tile width and height are wTile, hTile. The CTU address ctbAddrInTs of the first tile is derived from the table FirstCtbAddrTs that stores the start position of the tile and the tile group position tile_group_address. Tiles from 0 to num_tiles_in_tile_group_minus1 are decoded. num_tiles_in_tile_group_minus1 is a value obtained by subtracting 1 from the number of tiles in the picture. CTUs from 0 to NumCtusInTile[tileIdx] are decoded for each tile indicated by TileId. At the end of the tile, end_of_tile_one_bit and the byte alignment bit byte_alignment() are decoded. The CTU is decoded using the CTU position j in the tile as an argument to coding_tree_unit, where j is set as the value of CtbAddrInTile.

図31(b)は、タイル座標系におけるCTU位置CtbAddrInTileを用いて、各CTUを復号する例を示す。タイル内のCTU単位のラスタスキャン位置CtbAddrInTileと、タイルのCTU
単位のサイズTileWidthInCtusから、タイル内のCTU単位の位置(rx,ry)とタイル内の画素
単位の位置(xCtb,yCtb)を導出する。導出したタイル内座標系のCTU位置を用いて、以下のようにCTUを復号する。なお、タイル内のCTU単位のラスタ位置CtbAddrInTileは、画面単
位のCTU位置CtbAddrInTsからタイルの先頭位置FirstCtbAddrTsを引いて導出してもよい。
Fig. 31B shows an example of decoding each CTU using the CTU position CtbAddrInTile in the tile coordinate system.
The position (rx, ry) of the CTU unit within the tile and the position (xCtb, yCtb) of the pixel unit within the tile are derived from the unit size TileWidthInCtus. The CTU is decoded using the derived CTU position in the tile coordinate system as follows: Note that the raster position CtbAddrInTile of the CTU unit within the tile may also be derived by subtracting the start position of the tile FirstCtbAddrTs from the CTU position CtbAddrInTs in screen units.

CtbAddrInTile = CtbAddrInTs - FirstCtbAddrTs[tile_group_id]
(CTU以下の復号)
(タイル内座標系を用いたフレキシブルタイルのCT分割)
図7、図32、図33のシンタックステーブルを復号する場合のCT情報復号部3021の動作を
説明する。本構成のタイル左上の座標を原点とするタイル内座標系を用いて、CTU座標(xCtb, yCtb)を導出し、そのCTU座標とタイルサイズ(wTile, hTile)に基づいて再帰的にCT情報及びMT分割情報を復号して、CT情報を復号する。
CtbAddrInTile = CtbAddrInTs - FirstCtbAddrTs[tile_group_id]
(Decryption below CTU)
(CT division of flexible tile using intra-tile coordinate system)
The operation of the CT information decoding unit 3021 when decoding the syntax tables of Figs. 7, 32, and 33 will be described. Using the intra-tile coordinate system with the top left corner of the tile as the origin, the CTU coordinates ( The CT information is decoded by deriving the CTU coordinates (xCtb, yCtb) and recursively decoding the CT information and MT division information based on the CTU coordinates and the tile size (wTile, hTile).

まず、CT情報復号部3021は符号化データからCT情報を復号し、再帰的に符号化ツリーCT(coding_quadtree)を復号する。具体的には、CT情報復号部3021はQT情報を復号し、対
象CT coding_quadtree(x0,y0,log2CbSize,cqtDepth,treeType)を復号する。
First, the CT information decoding unit 3021 decodes the CT information from the coded data, and recursively decodes the coding tree CT (coding_quadtree). Specifically, the CT information decoding unit 3021 decodes the QT information, and decodes the target CT coding_quadtree (x0, y0, log2CbSize, cqtDepth, treeType).

(S1411)CT情報復号部3021は復号したCT情報にQT分割フラグがあるか否かを判定する
。QT分割フラグがある場合にはS1421に遷移し、それ以外の場合にはS1422に遷移する。
(S1411) The CT information decoding unit 3021 determines whether or not the decoded CT information has a QT division flag. If the QT division flag is present, the process proceeds to S1421, and otherwise the process proceeds to S1422.

(S1421)CT情報復号部3021は、対数CTサイズlog2CbSizeがMinCbLog2SizeYより大きい
と判定された場合には、QT分割フラグ(qt_split_cu_flag)を復号する。
ここで、下式のように、タイルを用いる場合にはタイル内座標系におけるCTの左上座標 (x0,y0)とタイルサイズを考慮して、さらなる四分木分割を実施するか否かを示すqt_split
_cu_flagが通知される。
(S1421) If it is determined that the logarithmic CT size log2CbSize is larger than MinCbLog2SizeY, the CT information decoding unit 3021 decodes the QT split flag (qt_split_cu_flag).
Here, as shown in the formula below, when tiles are used, the qt_split function is used to determine whether or not to perform further quadtree division, taking into account the upper left coordinate (x0, y0) of CT in the tile coordinate system and the tile size.
_cu_flag is notified.

if ((((x0+(1<<log2CbSize) <= wTile[TileId])?1:0)+
((y0+(1<<log2CbSize) <= hTile[TileId])?1:0)+
(((1<<log2CbSize) <= MaxBtSizeY)?1:0)) >= 2 &&
log2CbSize > MinQtLog2SizeY)
qt_split_cu_flag[x0][y0]
つまり、ブロックの右端の座標x0+(1<<log2CbSize)、下端の座標y0+(1<<log2CbSize)の両方が、タイル幅wTileとタイル高さhTile以下の場合、
(x0+(1<<log2CbSize) <= wTile[TileId])?1:0)+
((y0+(1<<log2CbSize) <= hTile[TileId])?1:0)>=2
もしくは、ブロックの右端の座標x0+(1<<log2CbSize)がタイル幅wTile以下で、CTサイ
ズが最大BTサイズMaxBtSizeY以上の場合、
(x0+(1<<log2CbSize) <= wTile[TileId])?1:0)+
(((1<<log2CbSize) <= MaxBtSizeY)?1:0)) >= 2
もしくは、ブロックの下端の座標y0+(1<<log2CbSize)がタイル高さhTile以下で、CTサ
イズが最大BTサイズMaxBtSizeY以上の場合、
(y0+(1<<log2CbSize) <= hTile[TileId])?1:0)+
(((1<<log2CbSize) <= MaxBtSizeY)?1:0)) >= 2
の場合に、QT分割フラグqt_split_cu_flagを符号化データから復号する。
if (((x0+(1<<log2CbSize) <= wTile[TileId])?1:0)+
((y0+(1<<log2CbSize) <= hTile[TileId])?1:0)+
(((1<<log2CbSize) <= MaxBtSizeY)?1:0)) >= 2 &&
log2CbSize > MinQtLog2SizeY)
qt_split_cu_flag[x0][y0]
In other words, if the coordinate x0+(1<<log2CbSize) of the right edge of the block and the coordinate y0+(1<<log2CbSize) of the bottom edge are both less than the tile width wTile and tile height hTile,
(x0+(1<<log2CbSize) <= wTile[TileId])?1:0)+
((y0+(1<<log2CbSize) <= hTile[TileId])?1:0)>=2
Or, if the coordinate x0+(1<<log2CbSize) of the right edge of the block is less than or equal to the tile width wTile and the CT size is greater than or equal to the maximum BT size MaxBtSizeY,
(x0+(1<<log2CbSize) <= wTile[TileId])?1:0)+
(((1<<log2CbSize) <= MaxBtSizeY)?1:0)) >= 2
Or, if the bottom coordinate y0+(1<<log2CbSize) of the block is less than or equal to the tile height hTile and the CT size is greater than or equal to the maximum BT size MaxBtSizeY,
(y0+(1<<log2CbSize) <= hTile[TileId])?1:0)+
(((1<<log2CbSize) <= MaxBtSizeY)?1:0)) >= 2
If so, the QT split flag qt_split_cu_flag is decoded from the encoded data.

(S1422)CT情報復号部3021は、それ以外の場合には、符号化データからのQT分割フラ
グqt_split_cu_flagの復号を省略し、QT分割フラグqt_split_cu_flagを、タイルサイズ(wTile, hTile)を用いて以下のように導出する。
(S1422) In other cases, the CT information decoding unit 3021 omits decoding of the QT split flag qt_split_cu_flag from the encoded data, and derives the QT split flag qt_split_cu_flag using the tile size (wTile, hTile) as follows.

以下の何れかが真の場合、qt_split_cu_flagに1を導出する。 If any of the following is true, qt_split_cu_flag is set to 1.

x0+(1<<log2CbSize) > wTile[TileId] && (1<<log2CbSize) > MaxBtSizeY
y0+(1<<log2CbSize) > hTile[TileId] && (1<<log2CbSize) > MaxBtSizeY
以下の全てが真の場合、qt_split_cu_flagに1を導出する。
x0+(1<<log2CbSize) > wTile[TileId] &&(1<<log2CbSize)> MaxBtSizeY
y0+(1<<log2CbSize) > hTile[TileId] &&(1<<log2CbSize)> MaxBtSizeY
If all of the following are true, set qt_split_cu_flag to 1.

x0+(1<<log2CbSize) > wTile[TileId]
y0+(1<<log2CbSize) > hTile[TileId]
(1<<log2CbSize) > MinQtSizeY
上記以外の場合、qt_split_cu_flagに1を導出する。
x0+(1<<log2CbSize) > wTile[TileId]
y0+(1<<log2CbSize) > hTile[TileId]
(1<<log2CbSize) > MinQtSizeY
In all other cases, 1 is derived for qt_split_cu_flag.

すなわち、CT右座標がタイルサイズ幅を超えており、かつ、CTサイズが最大BT分割サイズMaxBtSizeYを超えている場合には必ず分割する(qt_split_cu_flagに1を導出)。 In other words, if the CT right coordinate exceeds the tile size width and the CT size exceeds the maximum BT split size MaxBtSizeY, it will always be split (1 is derived for qt_split_cu_flag).

CT下座標がタイルサイズ高さを超えており、かつ、CTサイズが最大BT分割サイズMaxBtSizeYを超えている場合には必ず分割する(qt_split_cu_flagに1を導出)。 If the CT bottom coordinate exceeds the tile size height and the CT size exceeds the maximum BT split size MaxBtSizeY, it will always be split (1 is derived for qt_split_cu_flag).

CT右下座標がタイルサイズを超えている場合にも必ず分割する(qt_split_cu_flagに1を導出)。 Split is always performed if the bottom right coordinate of the CT exceeds the tile size (1 is derived for qt_split_cu_flag).

(S1450)QT分割フラグsplit_cu_flagが0以外である場合にはS1451に遷移し、それ以
外の場合にはS1471に遷移する。
(S1450) If the QT split flag split_cu_flag is other than 0, the process transitions to S1451; otherwise, the process transitions to S1471.

(S1451)CT情報復号部3021はQT分割を行う。具体的には、CT情報復号部3021は、CTデ
プスcqtDepth+1の位置(x0,y0)、(x1,y0)、(x0,y1)、(x1,y1)において、対数CTサイズlog2
CbSize-1の4つのCTを復号する。タイル内での各CTの右下座標(xi-xTile[TileId], yi+yTile[TileId])がタイルサイズ(wTile[TileId], hTile[TileId])以下のCTを復号する。逆に、各CTの右下座標(xi, yi)の何れかがタイルサイズ(wTile[TileId], hTile[TileId])より大きいCTは復号しない。すなわち、CT情報復号部3021は、対象CTUを再帰的に符号化ツリーに分割し、分割されたCTの左上座標(x1, y0)、(x0, y1)、(x1, y1)が対象タイル内である場合に、符号化ツリーを処理する。
(S1451) The CT information decoding unit 3021 performs QT division. Specifically, the CT information decoding unit 3021 performs QT division on the logarithmic CT size log2
Four CTs of CbSize-1 are decoded. CTs whose bottom right coordinates (xi-xTile[TileId], yi+yTile[TileId]) of each CT in the tile are equal to or smaller than the tile size (wTile[TileId], hTile[TileId]) are decoded. Conversely, CTs whose bottom right coordinates (xi, yi) of each CT are larger than the tile size (wTile[TileId], hTile[TileId]) are not decoded. That is, the CT information decoding unit 3021 recursively divides the target CTU into coding trees, and processes the coding trees when the top left coordinates (x1, y0), (x0, y1), and (x1, y1) of the divided CTs are within the target tile.

coding_quadtree(x0,y0,log2CbSize-1,cqtDepth+1)
if (x1 < wTile[TileId])
coding_quadtree(x1,y0,log2CbSize-1,cqtDepth+1)
if (y1 < hTile[TileId])
coding_quadtree(x0,y1,log2CbSize-1,cqtDepth+1)
if (x1 < wTile[TileId] && y1 < hTile[TileId])
coding_quadtree(x1,y1,log2CbSize-1,cqtDepth+1)
上記において、例えば、4分木分割で得られた、(x1,y0)に位置するブロックであるcoding_quadtree(x1,y0,log2CbSize-1,cqtDepth+1)は、以下のようにx1がタイル内に位置する場合に符号化あるいは復号される。
coding_quadtree(x0,y0,log2CbSize-1,cqtDepth+1)
if (x1 < wTile[TileId])
coding_quadtree(x1,y0,log2CbSize-1,cqtDepth+1)
if (y1 < hTile[TileId])
coding_quadtree(x0,y1,log2CbSize-1,cqtDepth+1)
if (x1 < wTile[TileId] && y1 < hTile[TileId])
coding_quadtree(x1,y1,log2CbSize-1,cqtDepth+1)
In the above, for example, the block located at (x1, y0) obtained by quadtree division, coding_quadtree(x1, y0, log2CbSize-1, cqtDepth+1), is determined as follows: The signal is encoded or decoded when it is located.

if (x1<wTile[TileId])
coding_quadtree(x1,y0,log2CbSize-1,cqtDepth+1)
ここで、(x0,y0)は対象CTの左上座標、(x1,y1)は以下の式のように(x0,y0)にCTサイズ
(1<<log2CbSize)の1/2を加えて導出される。
if (x1<wTile[TileId])
coding_quadtree(x1,y0,log2CbSize-1,cqtDepth+1)
Here, (x0, y0) is the upper left coordinate of the target CT, and (x1, y1) is calculated by adding 1/2 the CT size (1<<log2CbSize) to (x0, y0) as shown in the following formula.

x1 = x0+(1<<(log2CbSize-1))
y1 = y0+(1<<(log2CbSize-1))
1<<Nは2のN乗と同値である(以下同様)。
x1 = x0 + (1<<(log2CbSize-1))
y1 = y0 + (1 << (log2CbSize-1))
1<<N is equivalent to 2 to the Nth power, and so on.

そして、CT情報復号部3021は、下式のように、CTの階層を示すCTデプスcqtDepthと対数CTサイズlog2CbSizeを更新する。 Then, the CT information decoding unit 3021 updates the CT depth cqtDepth and the logarithmic CT size log2CbSize, which indicate the CT hierarchy, as shown in the following formula.

cqtDepth = cqtDepth+1
log2CbSize = log2CbSize-1
CT情報復号部3021は、下位のCTにおいても、更新された左上座標、対数CTサイズ、CTデプスを用いて、S1411から開始されるQT情報復号を継続する。
cqtDepth = cqtDepth+1
log2CbSize = log2CbSize-1
The CT information decoding unit 3021 continues the QT information decoding started from S1411 using the updated upper left coordinate, logarithmic CT size, and CT depth for the lower CTs as well.

QT分割終了後、CT情報復号部3021は符号化データからCT情報を復号し、再帰的に符号化ツリーCT(MT、multi_type_tree)を復号する。具体的には、CT情報復号部3021は、タイ
ル内座標とタイルサイズを用いて、MT分割情報を復号し、対象CT multi_type_tree (x0,y0,CbWidth,CbHeight,mttDepth,depthOffset,partIdx,treeType)を復号する。なお、CbWidthはCTの幅、CbHeightはCTの高さ、mttDepthはマルチツリーの階層を示すCTデプス(MT深度)である。
After QT division is completed, the CT information decoding unit 3021 decodes CT information from the encoded data and recursively decodes the coding tree CT (MT, multi_type_tree). Specifically, the CT information decoding unit 3021 decodes MT division information using the coordinates in the tile and the tile size, and decodes the target CT multi_type_tree (x0, y0, CbWidth, CbHeight, mttDepth, depthOffset, partIdx, treeType). Note that CbWidth is the width of the CT, CbHeight is the height of the CT, and mttDepth is the CT depth (MT depth) indicating the hierarchy of the multi-tree.

(S1471)CT情報復号部3021は、復号したCT情報にMT分割フラグ(分割情報、すなわちmtt_split_cu_flag、mtt_split_cu_vertical_flag、mtt_split_cu_binary_flag)があるか否かを判定する。以下の判定により、MT分割フラグがある場合にはS1481に遷移する。そ
れ以外の場合にはS1482に遷移する。
(S1471) The CT information decoding unit 3021 determines whether or not the decoded CT information has an MT split flag (split information, i.e., mtt_split_cu_flag, mtt_split_cu_vertical_flag, mtt_split_cu_binary_flag). If the MT split flag is present as determined below, the process transitions to S1481. Otherwise, the process transitions to S1482.

(allowSplitBtVer || allowSplitBtHor || allowSplitTtVer || allowSplitTtHor)
&& (x0+cbWidth<=wTile[TileId]) && (y0+cbHeight<=hTile[TileId])
ここで、allowSplitBtVer、allowSplitBtHorは以下の処理により導出する。
(allowSplitBtVer || allowSplitBtHor || allowSplitTtVer || allowSplitTtHor)
&&(x0+cbWidth<=wTile[TileId])&&(y0+cbHeight<=hTile[TileId])
Here, allowSplitBtVer and allowSplitBtHor are derived by the following process.

以下の何れかが真の場合、allowBtSplitを偽(FALTH)とする。
・cbSize <= MinBtSizeY
・cbWidth > MaxBtSizeY
・cbHeight > MaxBtSizeY
・mttDepth >= MaxMttDepth + depthOffset
上記以外で以下の全てが真の場合、allowBtSplitを偽とする。
・btSplit = SPLIT_BT_VER
・y0 + cbHeight > hTile[TileId]
上記以外で以下の全てが真の場合、allowBtSplitを偽とする。
・btSplit = SPLIT_BT_HOR
・x0 + cbWidth > wTile[TileId]
上記以外で以下の全てが真の場合、allowBtSplitを偽とする。
・mttDepth > 0
・partIdx = 1
・MttSplitMode[ x0 ][ y0 ][ mttDepth - 1 ] = parallelTtSplit
上記以外の場合、allowBtSplitを真とする。
・allowBtSplit = TRUE
ここでcbSize、parallelTtSplitは、以下のように設定する。
If any of the following is true, set allowBtSplit to false:
・cbSize <= MinBtSizeY
・cbWidth > MaxBtSizeY
・cbHeight > MaxBtSizeY
・mttDepth >= MaxMttDepth + depthOffset
If all of the following are true except for the above, set allowBtSplit to false.
・btSplit = SPLIT_BT_VER
・y0 + cbHeight > hTile[TileId]
If all of the following are true except for the above, set allowBtSplit to false.
・btSplit = SPLIT_BT_HOR
・x0 + cbWidth > wTile[TileId]
If all of the following are true except for the above, set allowBtSplit to false.
・mttDepth > 0
・partIdx = 1
・MttSplitMode[ x0 ][ y0 ][ mttDepth - 1 ] = parallelTtSplit
Otherwise, set allowBtSplit to true.
・allowBtSplit = TRUE
Here, cbSize and parallelTtSplit are set as follows:

SPLIT_BT_VER(allowSplitBtVer)の場合、cbSize=cbWidth、parallelTtSplit= SPLIT_TT_VER
SPLIT_BT_HOR(allowSplitBtHor)の場合、cbSize=cbHeight、parallelTtSplit=SPLIT_TT_HOR
なお、allowSplitTtVer、allowSplitTtHorは以下の処理により導出する。
If SPLIT_BT_VER(allowSplitBtVer), cbSize=cbWidth, parallelTtSplit= SPLIT_TT_VER
If SPLIT_BT_HOR(allowSplitBtHor), cbSize=cbHeight, parallelTtSplit=SPLIT_TT_HOR
Note that allowSplitTtVer and allowSplitTtHor are derived by the following process.

以下の何れかが真の場合、allowTtSplit(allowTtSplirHor, allowTtSplirVer)を偽(FALTH)とする。
・cbSize <= 2 * MinTtSizeY
・cbWidth > MaxTtSizeY
・cbHeight > MaxTtSizeY
・mttDepth >= MaxMttDepth + depthOffset
・x0 + cbWidth > wTile[TileId]
・y0 + cbHeight > hTile[TileId]
上記以外の場合、allowTtSplit(allowTtSplirHor, allowTtSplirVer)を真とする。
・allowTtSplit = TRUE
ここでcbSizeは、以下のように設定する。
If any of the following is true, set allowTtSplit(allowTtSplirHor, allowTtSplirVer) to false.
・cbSize <= 2 * MinTtSizeY
・cbWidth > MaxTtSizeY
・cbHeight > MaxTtSizeY
・mttDepth >= MaxMttDepth + depthOffset
・x0 + cbWidth > wTile[TileId]
・y0 + cbHeight > hTile[TileId]
In all other cases, allowTtSplit(allowTtSplirHor, allowTtSplirVer) is set to true.
・allowTtSplit = TRUE
Here, cbSize is set as follows:

SPLIT_TT_VER(allowSplitTtVer)の場合、cbSize=cbWidth
SPLIT_TT_HOR(allowSplitTtHor)の場合、cbSize=cbHeight
すなわち、CT右座標がタイルサイズ幅を超えるか、CT下座標がタイルサイズ高さを超えいるかに応じて、MT分割フラグを符号化するか否かを決定する。
If SPLIT_TT_VER(allowSplitTtVer), cbSize=cbWidth
If SPLIT_TT_HOR(allowSplitTtHor), cbSize=cbHeight
That is, whether or not to code the MT split flag is determined depending on whether the CT right coordinate exceeds the tile size width or the CT bottom coordinate exceeds the tile size height.

(S1481)CT情報復号部3021はMT分割フラグmtt_split_cu_flagを復号する。 (S1481) The CT information decoding unit 3021 decodes the MT split flag mtt_split_cu_flag.

(S1482)CT情報復号部3021は符号化データからMT分割フラグmtt_split_cu_flagを復号せず、以下のように導出する。 (S1482) The CT information decoding unit 3021 does not decode the MT split flag mtt_split_cu_flag from the encoded data, but derives it as follows.

以下のいずれかが真の場合、mtt_split_cu_flagに1を導出する。
・x0 + cbWidth > wTile[TileId]
・x0 + cbHeight > hTile[TileId]
上記以外の場合、mtt_split_cu_flagに0を導出する。すなわち、タイル内座標におけ
るCTの右端および下端座標がタイルサイズを超える場合には、MT分割フラグを復号しない。
If any of the following is true, derive 1 for mtt_split_cu_flag.
・x0 + cbWidth > wTile[TileId]
・x0 + cbHeight > hTile[TileId]
In other cases, 0 is derived for mtt_split_cu_flag. In other words, if the right and bottom coordinates of the CT in the tile coordinate system exceed the tile size, the MT split flag is not decoded.

すなわち、CT右座標がタイルサイズ幅を超えるか、CT下座標がタイルサイズ高さを超えいるかに応じて、TT分割フラグを符号化するか否かを決定する。 In other words, whether or not to encode the TT split flag is determined depending on whether the CT right coordinate exceeds the tile size width or the CT bottom coordinate exceeds the tile size height.

(S1490)CT情報復号部3021は、MT分割フラグsplit_mt_flagが0以外の場合には、S1491に遷移する。それ以外の場合には、CT情報復号部3021は対象CTを分割せず、処理を終了
する(CUの復号に移行する)。
(S1490) The CT information decoding unit 3021 transitions to S1491 if the MT split flag split_mt_flag is other than 0. In other cases, the CT information decoding unit 3021 does not split the target CT and ends the process (transitions to decoding of the CU).

(S1491)CT情報復号部3021はMT分割を行う。BT分割もしくはTT分割が可能な場合(allowSplitBtHor || allowSplitTtHor ) || ( allowSplitBtVer || allowSplitTtVer ))、MT分割の方向を示すフラグmtt_split_cu_vertical_flagを復号する。復号した分割方法mtt_split_cu_vertical_flagにおいて、BT分割とTT分割の両者が可能な場合(( allowSplitBtVer && allowSplitTtVer && mtt_split_cu_vertical_flag ) || ( allowSplitBtHor&& allowSplitTtHor && !mtt_split_cu_vertical_flag)には、MT分割が2分木であるか3分
木であるかを示すシンタックス要素mtt_split_cu_binary_flagを復号する。CT情報復号部3021は、分割されたCTの左上座標が対象タイル内である場合に、符号化ツリーを処理する。CTの左上座標は2分木では、(x0, y1)もしくは(x1, y0)、3分木では(x0, y1), (x0,
y2)もしくは(x1, y0), (x2, y0)である。ここで先頭CTの左上座標(x0, y0)がタイル外にある場合には分割自体が行われないため、(x0, y0)は常にタイル内であると仮定する。
(S1491) The CT information decoding unit 3021 performs MT division. If BT division or TT division is possible (allowSplitBtHor ∥ allowSplitTtHor ∥ ( allowSplitBtVer ∥ allowSplitTtVer )), the flag mtt_split_cu_vertical_flag indicating the MT division direction is decoded. In the decoded division method mtt_split_cu_vertical_flag, if both BT division and TT division are possible ((allowSplitBtVer && allowSplitTtVer && mtt_split_cu_vertical_flag) || (allowSplitBtHor&& allowSplitTtHor && !mtt_split_cu_vertical_flag), the syntax element mtt_split_cu_binary_flag indicating whether the MT division is a binary tree or a ternary tree is decoded. The CT information decoding unit 3021 processes the coding tree when the upper left coordinate of the divided CT is within the target tile. The upper left coordinate of the CT is (x0, y1) or (x1, y0) in a binary tree, and (x0, y1), (x0,
The coordinates are (x1, y0), (x2, y0). If the top left coordinate (x0, y0) of the first CT is outside the tile, the division is not performed, so it is assumed that (x0, y0) is always inside the tile.

CT情報復号部3021は、MT分割タイプsplit_mt_typeが0(2分割)、かつ、MT分割方向split_dir_flagが1(水平分割)の場合は、以下の2つのCTを復号(BT分割情報復号)す
る。タイル内でのCT(x0,y1)の下座標y1がタイルサイズhTile[TileId]未満のCTを復号する。逆に、タイル内での各CTの下座標y1がタイルサイズhTile[TileId]以上のCTは復号しな
い。
When the MT split type split_mt_type is 0 (two splits) and the MT split direction split_dir_flag is 1 (horizontal split), the CT information decoding unit 3021 decodes the following two CTs (BT split information decoding). It decodes the CT whose bottom coordinate y1 of CT(x0,y1) in the tile is less than the tile size hTile[TileId]. Conversely, it does not decode the CT whose bottom coordinate y1 of each CT in the tile is equal to or greater than the tile size hTile[TileId].

multi_type_tree(x0,y0,cbWidth,cbHeight/2,mttDepth,depthOffset,0,treeType)
if (y1 < hTile[TileId])
multi_type_tree(x0,y1,cbWidth,cbHeight/2,mttDepth+1,depthOffset,1,treeType)
一方、MT分割方向split_dir_flagが0(垂直分割)の場合は、以下の2つのCTを復号(BT分割情報復号)する。タイル内でのCT(x1,y0)の右座標x1がタイルサイズwTile[TileId]未満のCTを復号する。逆に、タイル内での各CTの右座標x1がタイルサイズwTile[TileId]
以上のCTは復号しない。
multi_type_tree(x0,y0,cbWidth,cbHeight/2,mttDepth,depthOffset,0,treeType)
if (y1 < hTile[TileId])
multi_type_tree(x0,y1,cbWidth,cbHeight/2,mttDepth+1,depthOffset,1,treeType)
On the other hand, if the MT split direction split_dir_flag is 0 (vertical split), the following two CTs are decoded (BT split information decoded). The right coordinate x1 of CT(x1, y0) in the tile is the tile size wTile[ Conversely, the right coordinate x1 of each CT in the tile is decoded if it is smaller than the tile size wTile[TileId].
The above CTs will not be decoded.

multi_type_tree(x0,y0,cbWidth/2,cbHeight,mttDepth+1,depthOffset,0,treeType)
if (x1 < wTile[TileId])
multi_type_tree(x1,y0,cbWidth/2,cbHeightY,mttDepth+1,depthOffset,1,treeType)ここで、(x1,y1)は以下の式で導出される。
multi_type_tree(x0,y0,cbWidth/2,cbHeight,mttDepth+1,depthOffset,0,treeType)
if (x1 < wTile[TileId])
multi_type_tree(x1, y0, cbWidth/2, cbHeightY, mttDepth+1, depthOffset, 1, treeType) Here, (x1, y1) is derived by the following formula.

x1 = x0+(cbWidth/2)
y1 = y0+(cbHeight/2)
さらに、log2CbWidth、または、log2CbHeightを下式のように更新する。
x1 = x0 + (cbWidth/2)
y1 = y0 + (cbHeight/2)
Furthermore, log2CbWidth or log2CbHeight is updated according to the following formula.

CbWidth = CbWidth/2
CbHeight = CbHeight/2
CT情報復号部3021は、MT分割タイプsplit_mt_typeが1(3分割)を示す場合には、3
つのCTを復号(TT分割情報復号)する。
CbWidth = CbWidth/2
CbHeight = CbHeight/2
When the MT division type split_mt_type indicates 1 (3 divisions), the CT information decoding unit 3021
Decode one CT (TT division information decode).

MT分割方向split_dir_flagが1(水平分割)の場合は、以下の3つのCTを復号する。タイル内でのi=0, 1の各CT(x0, yi)の下座標yiがタイルサイズhTile[TileId]未満のCTを復
号する。逆に、タイル内での各CTの下座標yiがタイルサイズhTile[TileId]以上のCTは復
号しない。
When the MT split direction split_dir_flag is 1 (horizontal split), the following three CTs are decoded. CTs whose bottom coordinate yi of each CT(x0, yi) for i=0, 1 in the tile is less than the tile size hTile[TileId] are decoded. Conversely, CTs whose bottom coordinate yi of each CT in the tile is equal to or greater than the tile size hTile[TileId] are not decoded.

multi_type_tree(x0,y0,cbWidth,cbHeight/4,mttDepth+1,depthOffset,0,treeType)
if (y1 < hTile[TileId])
multi_type_tree(x0,y1,cbWidth,cbHeight/2,mttDepth+1,depthOffset,1,treeType)
if (y2 < hTile[TileId])
multi_type_tree(x0,y2,cbWidth,cbHeight/4,mttDepth+1,depthOffset,2,treeType)
一方、MT分割方向split_dir_flagが1(垂直分割)の場合は、以下の3つのCTを復号(TT分割情報復号)する。タイル内でのi=0, 1の各CT(xi, y0)の右座標xiがタイルサイズwTile[TileId]未満のCTを復号する。逆に、タイル内での各CTの右座標xiがタイルサイズwTile[TileId]以上のCTは復号しない。
multi_type_tree(x0,y0,cbWidth,cbHeight/4,mttDepth+1,depthOffset,0,treeType)
if (y1 < hTile[TileId])
multi_type_tree(x0,y1,cbWidth,cbHeight/2,mttDepth+1,depthOffset,1,treeType)
if (y2 < hTile[TileId])
multi_type_tree(x0,y2,cbWidth,cbHeight/4,mttDepth+1,depthOffset,2,treeType)
On the other hand, if the MT split direction split_dir_flag is 1 (vertical split), the following three CTs are decoded (TT split information decoded). Decode CTs whose coordinate xi is less than the tile size wTile[TileId]. Conversely, do not decode CTs whose right coordinate xi of each CT in the tile is equal to or greater than the tile size wTile[TileId].

multi_type_tree(x0,y0,cbWidth/4,cbHeight,mttDepth+1,depthOffset,0,treeType)
if (x1 < wTile[TileId])
multi_type_tree(x1,y0,cbWidth/2,cbHeight,mttDepth+1,depthOffset,1,treeType)
if (x2 < wTile[TileId])
multi_type_tree(x2,y0,cbWidth/4,cbHeight,mttDepth+1,depthOffset,2,treeType)
ここで、(x1,y1)、(x2,y2)は、以下の式のように、導出される。
multi_type_tree(x0,y0,cbWidth/4,cbHeight,mttDepth+1,depthOffset,0,treeType)
if (x1 < wTile[TileId])
multi_type_tree(x1,y0,cbWidth/2,cbHeight,mttDepth+1,depthOffset,1,treeType)
if (x2 < wTile[TileId])
multi_type_tree(x2,y0,cbWidth/4,cbHeight,mttDepth+1,depthOffset,2,treeType)
Here, (x1, y1) and (x2, y2) are derived as follows:

x1 = x0+(cbHeight/4)
y1 = y0+(3*cbHeight/4)
x2 = x0+(cbWidth/4)
y2 = y0+(3*cbWidth/4)
CT情報復号部3021は、下位のCTにおいても、更新された左上座標、CTの幅及び高さ、MT深度を用いて、S1471から開始されるBT分割情報復号、あるいは、TT分割情報復号を継続
する。
x1 = x0 + (cbHeight/4)
y1 = y0 + (3 * cbHeight / 4)
x2 = x0 + (cbWidth/4)
y2 = y0 + (3 * cbWidth / 4)
The CT information decoding unit 3021 continues the BT partition information decoding started from S1471 or the TT partition information decoding, using the updated top left coordinate, CT width and height, and MT depth, even for the lower CT.

また、CT情報復号部3021は、MT分割フラグsplit_mt_flagが0の場合、すなわちQT分割
もMT分割も行われない場合には、CU復号部3022でCU(coding_unit(x0,y0,cbWidth,cbHeight,treeType))を復号する。
Furthermore, when the MT split flag split_mt_flag is 0, that is, when neither QT splitting nor MT splitting is performed, the CT information decoding unit 3021 decodes the CU (coding_unit(x0, y0, cbWidth, cbHeight, treeType)) in the CU decoding unit 3022.

以上のように、タイル内で表現される各CUの左上座標(xi, yi)をタイルサイズ(wTile, hTile)と比較することで、分割フラグを復号し、各CTを復号する。これによって、タイルサイズがCTUサイズの整数倍ではない場合においても、無駄な分割フラグ、無駄なCTを復
号することなく、効率的にCU分割を行うことが可能であるという効果を奏する。また、タイル内座標系を用いて、CU分割を行うことにより、画面内座標系からタイル内座標系への変換を行うことなく、簡単な処理でCU分割を行うことが可能であるというさらなる効果を奏する。
As described above, the split flag is decoded and each CT is decoded by comparing the top left coordinates (xi, yi) of each CU represented in a tile with the tile size (wTile, hTile). This provides the advantage that, even when the tile size is not an integer multiple of the CTU size, it is possible to perform CU splitting efficiently without decoding unnecessary split flags and unnecessary CTs. Furthermore, by performing CU splitting using the intra-tile coordinate system, it is possible to perform CU splitting with simple processing without converting from the intra-screen coordinate system to the intra-tile coordinate system.

また、パラメータ復号部302は、図示しないインター予測パラメータ復号部303及びイントラ予測パラメータ復号部304を含んで構成される。予測画像生成部308は、図示しないインター予測画像生成部309及びイントラ予測画像生成部310を含んで構成される。 The parameter decoding unit 302 includes an inter-prediction parameter decoding unit 303 and an intra-prediction parameter decoding unit 304, both of which are not shown. The predicted image generating unit 308 includes an inter-prediction image generating unit 309 and an intra-prediction image generating unit 310, both of which are not shown.

(フレキシブルタイルにおけるマルチラインイントラ予測)
図35はマルチラインイントラ予測を示す図である。イントラ予測パラメータ復号部304
及びイントラ予測パラメータ符号化部113は、マルチラインイントラ予測パラメータを復
号もしくは符号化する。イントラ予測画像生成部310においては、シンタックス要素intra_luma_ref_idxに応じて、対象ブロック境界から隣接する参照画素のうち、どのラインを
参照するかを選択する。例えば図35(a)のように、intra_luma_ref_idxが0, 1, 2の場合、参照ピクチャのラインを示すインデックスIntraLumaRefLineIdx(refIdx)を0, 1, 3に設定する。つまり、対象ブロックからみて近い順に0, 1, 3のラインを参照する。
(Multi-line intra prediction in flexible tiles)
FIG. 35 is a diagram showing multi-line intra-prediction. The intra-prediction parameter decoding unit 304
The intra prediction parameter coding unit 113 decodes or codes the multi-line intra prediction parameters. The intra prediction image generation unit 310 selects which line to reference from among the reference pixels adjacent to the current block boundary according to the syntax element intra_luma_ref_idx. For example, as shown in FIG. 35(a), when intra_luma_ref_idx is 0, 1, or 2, the index IntraLumaRefLineIdx (refIdx) indicating the line of the reference picture is set to 0, 1, or 3. That is, lines 0, 1, and 3 are referenced in order of proximity from the current block.

図35(b)は対象ブロックのY座標がCTU境界に接する場合を示す。この場合には、シンタ
ックス要素intra_luma_ref_idxを復号せずに0を導出(infer)する。
35(b) shows a case where the Y coordinate of the current block abuts on the CTU boundary. In this case, the syntax element intra_luma_ref_idx is not decoded and 0 is inferred.

図36は、ピクチャをCTUの整数倍に制限されないサイズのタイルに分割する場合におけ
る、マルチラインイントラ予測の処理を示すフローチャートである。図41(a)は、シンタックステーブル例である。
Fig. 36 is a flowchart showing a process of multi-line intra prediction in a case where a picture is divided into tiles of a size not limited to an integer multiple of a CTU. Fig. 41(a) is an example of a syntax table.

S4001:ヘッダ復号部3020、ヘッダ符号化部1110は、CTUサイズ以下を単位とするタイルサイズ(CTUサイズの整数倍に限定しないタイルサイズ)を復号もしくは符号化する。例えば既に説明したように、tile_unit_size_idcを復号してタイル単位サイズwUnitTileあるいはhUnitTileを導出し、wUnitTileあるいはhUnitTileの倍数からなるタイルサイズを復号してもよい。 S4001: The header decoding unit 3020 and the header encoding unit 1110 decode or encode the tile size in units equal to or smaller than the CTU size (tile size not limited to integer multiples of the CTU size). For example, as already explained, the tile_unit_size_idc may be decoded to derive the tile unit size wUnitTile or hUnitTile, and a tile size that is a multiple of wUnitTile or hUnitTile may be decoded.

S4002:CT情報復号部3021、CT情報符号化部1111(CT分割部)は、タイル内座標系を用いて、CT分割を行う。例えば、既に説明したように図31~図33に示すシンタックス構成を用いて、CT分割を行う。このとき、CTの左上座標(x0, y0)、つまりQT分割coding_quadtree(x0, y0, …)、MTT分割multi_type_tree(x0, y0, …)の引数である(x0, y0)はタ
イル左上座標を原点とする座標を用いる。また、分割シンタックスqt_split_cu_flag、mtt_split_cu_flagはタイル内座標(x0, y0)とタイルサイズwTile、hTileを参照して、復号
あるいは符号化の有無を判定する。
S4002: The CT information decoding unit 3021 and the CT information encoding unit 1111 (CT division unit) perform CT division using the coordinate system in the tile. For example, as already described, CT division is performed using the syntax configuration shown in Figs. 31 to 33. At this time, the upper left coordinate (x0, y0) of CT, that is, the argument (x0, y0) of QT division coding_quadtree(x0, y0, ...) and MTT division multi_type_tree(x0, y0, ...) uses coordinates with the upper left coordinate of the tile as the origin. In addition, the division syntax qt_split_cu_flag and mtt_split_cu_flag refer to the coordinate (x0, y0) in the tile and the tile sizes wTile and hTile to determine whether or not to perform decoding or encoding.

S4004:イントラ予測パラメータ復号部304とイントラ予測パラメータ符号化部113は、タイル内座標系の対象ブロックの座標値(x0, y0)を用いて、対象ブロックがCTU境界
より下であるか否かを判定する。(y0 % ctuSize) > 0の場合に、CTU境界より下と判定す
る。対象ブロックがCTU境界より下の場合には、S4005に遷移して、イントラ参照ラ
インインデックスintra_luma_ref_idxを復号または符号化する。それ以外、対象ブロックがCTU境界と接している場合にはintra_luma_ref_idxを復号せずに0と導出(infer)する。
S4004: The intra prediction parameter decoding unit 304 and the intra prediction parameter coding unit 113 use the coordinate values (x0, y0) of the current block in the intra-tile coordinate system to determine whether the current block is below the CTU boundary. If (y0 % ctuSize)>0, it is determined that the current block is below the CTU boundary. If the current block is below the CTU boundary, the process proceeds to S4005, where the intra reference line index intra_luma_ref_idx is decoded or coded. Otherwise, if the current block is in contact with the CTU boundary, intra_luma_ref_idx is not decoded and is inferred as 0.

S4005:イントラ予測パラメータ復号部304、イントラ予測パラメータ符号化部113は、イントラ参照ラインインデックスintra_luma_ref_idxを復号もしくは符号化する。 S4005: The intra prediction parameter decoding unit 304 and the intra prediction parameter encoding unit 113 decode or encode the intra reference line index intra_luma_ref_idx.

なお、イントラ予測においては、イントラ参照ラインインデックスintra_luma_ref_idxの他に、推定イントラ予測モードMostProbableMode(MPM)の一つであるか否かを示すフ
ラグintra_luma_mpm_flag、MPMを選択するインデックスintra_luma_mpm_idx、MPMでない
場合のイントラ予測モードを示すインデックスintra_luma_mpm_remainderをさらに復号あるいは符号化してもよい。
In addition, in intra prediction, in addition to the intra reference line index intra_luma_ref_idx, a flag intra_luma_mpm_flag indicating whether the mode is one of the estimated intra prediction modes Most Probable Modes (MPM), an index intra_luma_mpm_idx selecting an MPM, and an index intra_luma_mpm_remainder indicating the intra prediction mode when the mode is not MPM may also be decoded or encoded.

イントラ予測画像生成部310は、導出されたIntraLumaRefLineIdx(refIdx)を用いて、以下の範囲の参照ピクチャサンプルp[x][y]を導出する。 The intra-prediction image generation unit 310 uses the derived IntraLumaRefLineIdx(refIdx) to derive reference picture samples p[x][y] in the following range:

p[x][y] with x = -1-refIdx, y = -1-refIdx..refH-1 and x = -refIdx..refW-1, y =
-1-refIdx
ここでrefW, refHは、以下の式で導出する。
p[x][y] with x = -1-refIdx, y = -1-refIdx..refH-1 and x = -refIdx..refW-1, y =
-1-refIdx
Here, refW and refH are derived using the following formula.

refW = (nTbH>nTbW) ? (nTbW+(nTbH>>whRatio)+Ceil(nTbH/32)) : (nTbW*2)
refH = (nTbW>nTbH) ? (nTbH+(nTbW>>whRatio)+Ceil(nTbW/32)) : (nTbH*2)
ここで、nTbW, nTbHは対象ブロックのサイズ、whRatioは、Min(Abs(Log2(nTbW/nTbH), 2)で導出される値で、対象ブロックのサイズの縦横比が大きくなるほど大きくなる値で、正方形の場合に0、nTbH:nTbWが1:2の場合に1, 1:4の場合に2となる値である。
refW = (nTbH>nTbW) ? (nTbW+(nTbH>>whRatio)+Ceil(nTbH/32)) : (nTbW*2)
refH = (nTbW>nTbH) ? (nTbH+(nTbW>>whRatio)+Ceil(nTbW/32)) : (nTbH*2)
Here, nTbW and nTbH are the size of the target block, and whRatio is a value calculated by Min(Abs(Log2(nTbW/nTbH), 2)). The larger the aspect ratio of the target block size, the larger the value becomes. The value is 0 if the shape is a square, 1 if nTbH:nTbW is 1:2, and 2 if nTbH:nTbW is 1:4.

イントラ予測画像生成部310は、参照ピクチャサンプルp[x][y]を用いて予測画像predSamplesを生成する。例えばプレーナモードは以下の式で導出してもよい。
predV[x][y] = ((nTbH-1-y)*p[x][-1]+(y+1)*p[-1][nTbH])<<Log2(nTbW)
predH[x][y] = ((nTbW-1-x)*p[-1][y]+(x+1)*p[nTbW][-1])<<Log2(nTbH)
predSamples[x][y] = (predV[x][y]+predH[x][y]+nTbW*nTbH)>>(Log2(nTbW)+Log2(nTbH)+1)
以上の構成のイントラ予測パラメータ復号部304、イントラ予測パラメータ符号化部113によれば、タイル単位サイズの整数倍のタイルサイズを復号あるいは符号化し、タイル内座標とタイルサイズを用いて4分木、2分木、3分木のマルチツリー分割を行い、タイル内座標(対象タイルの左上座標を基準とする対象ブロックの左上座標)を用いてCTU境界の判定を行うことで、タイルサイズがCTUの整数倍ではない場合においても、容易にCTU境界において追加のラインメモリを利用することなく、マルチラインイントラ予測が可能となる効果を奏する。
The intra-prediction image generator 310 generates a prediction image predSamples using the reference picture samples p[x][y]. For example, the planar mode may be derived by the following formula:
predV[x][y] = ((nTbH-1-y)*p[x][-1]+(y+1)*p[-1][nTbH])<<Log2(nTbW)
predH[x][y] = ((nTbW-1-x)*p[-1][y]+(x+1)*p[nTbW][-1])<<Log2(nTbH)
predSamples[x][y] = (predV[x][y]+predH[x][y]+nTbW*nTbH)>>(Log2(nTbW)+Log2(nTbH)+1)
The intra-prediction parameter decoding unit 304 and intra-prediction parameter encoding unit 113 configured as above decode or encode a tile size that is an integer multiple of the tile unit size, perform multi-tree partitioning into quadtrees, binary trees, and ternary trees using the intra-tile coordinates and the tile size, and determine CTU boundaries using the intra-tile coordinates (the upper left coordinate of the target block based on the upper left coordinate of the target tile). This has the effect of making it possible to easily perform multi-line intra prediction at CTU boundaries without using additional line memory, even when the tile size is not an integer multiple of the CTU.

図37は、ピクチャをCTUの整数倍に制限されないサイズのタイルに分割する場合におけ
る、マルチラインイントラ予測の処理を示すフローチャートである。図41(b)は、シンタックステーブル例である。
Fig. 37 is a flowchart showing a process of multi-line intra prediction in a case where a picture is divided into tiles of a size not limited to an integer multiple of a CTU. Fig. 41(b) is an example of a syntax table.

S4101:ヘッダ復号部3020、ヘッダ符号化部1110は、CTUサイズ以下を単位とするタイルサイズ(CTUサイズの整数倍に限定しないタイルサイズ)を復号もしくは符号化する。例えば既に説明したように、tile_unit_size_idcを復号してタイル単位サイズwUnitTileあるいはhUnitTileを導出し、wUnitTileあるいはhUnitTileの倍数からなるタイルサイズを復号してもよい。 S4101: The header decoding unit 3020 and the header encoding unit 1110 decode or encode the tile size in units equal to or smaller than the CTU size (tile size not limited to integer multiples of the CTU size). For example, as already explained, the tile_unit_size_idc may be decoded to derive the tile unit size wUnitTile or hUnitTile, and a tile size that is a multiple of wUnitTile or hUnitTile may be decoded.

S4102:CT情報復号部3021、CT情報符号化部1111(CT分割部)は、ピクチャ内座標系を用いて、CT分割を行う。例えば、既に説明したように図27~図29に示すシンタックス構成を用いて、CT分割を行う。このとき、CTの左上座標(x0, y0)、つまりQT分割coding_quadtree(x0, y0, …)、MTT分割multi_type_tree(x0, y0, …)の引数である(x0, y0)は
ピクチャ左上座標を原点とする座標を用いる。また、分割シンタックスqt_split_cu_flag、mtt_split_cu_flagは、ピクチャ内座標(x0, y0)とタイル左上座標xTile, yTile、タイ
ルサイズwTile、hTileを参照して判定する。例えば
if (x1-xTile[TileId] < wTile[TileId])
coding_quadtree( x1, y0, log2CbSize-1, cqtDepth+1, treeType)
if (y1-yTile[TileId] < hTile[TileId])
coding_quadtree( x0, y1, log2CbSize-1, cqtDepth+1, treeType)
このように、ピクチャ内座標からタイル左上座標を引くことで導出されたタイル内座標をもとに、CT分割を行ってもよい。
S4102: The CT information decoding unit 3021 and the CT information encoding unit 1111 (CT division unit) perform CT division using the intra-picture coordinate system. For example, as already explained, CT division is performed using the syntax configurations shown in Figs. 27 to 29. At this time, the upper left coordinates (x0, y0) of CT, that is, the arguments (x0, y0) of QT division coding_quadtree(x0, y0, ...) and MTT division multi_type_tree(x0, y0, ...) use coordinates with the upper left coordinates of the picture as the origin. In addition, the division syntax qt_split_cu_flag and mtt_split_cu_flag are determined by referring to the intra-picture coordinates (x0, y0), the upper left coordinates of the tile xTile, yTile, and the tile sizes wTile and hTile. For example,
if (x1-xTile[TileId] < wTile[TileId])
coding_quadtree( x1, y0, log2CbSize-1, cqtDepth+1, treeType)
if (y1-yTile[TileId] < hTile[TileId])
coding_quadtree( x0, y1, log2CbSize-1, cqtDepth+1, treeType)
In this way, CT division may be performed based on the coordinates in the tile derived by subtracting the coordinates of the top left corner of the tile from the coordinates in the picture.

S4103:イントラ予測パラメータ復号部304とイントラ予測パラメータ符号化部113は、ピクチャ内座標からタイル内座標に変換する。ピクチャ内座標(x0, y0)からピクチャ内座標におけるタイル左上座標(xTile, yTile)をひくことで、タイル内座標(x0-xTile, y0-yTile)を導出する。このとき、Y座標のみ導出してもよい。 S4103: The intra-prediction parameter decoding unit 304 and the intra-prediction parameter encoding unit 113 convert from intra-picture coordinates to intra-tile coordinates. The intra-tile coordinates (x0-xTile, y0-yTile) are derived by subtracting the upper left tile coordinates (xTile, yTile) in the intra-picture coordinates from the intra-picture coordinates (x0, y0). At this time, only the Y coordinate may be derived.

S4104:イントラ予測パラメータ復号部304とイントラ予測パラメータ符号化部113は、タイル内座標系の対象ブロックの座標値(x0-xTile, y0-yTile)を用いて、対象ブロックがCTU境界より下であるか否かを判定する。((y0-yTile)%ctuSize)>0の場合に、CTU境界より下と判定される。CTU境界より下の場合には、S4105に遷移して、イントラ参照
ラインインデックスintra_luma_ref_idxを復号あるいは符号化する。それ以外、対象ブロックがCTU境界と接している場合にはintra_luma_ref_idxを復号せず0として導出(infer)
する。言い換えると、タイル内座標系の対象ブロックの座標値である対象タイルの左上座標に対する左上輝度ブロックの左上座標(xCb, yCb)を用いて、CTU境界判定を(yCb%ctuSize)>0で行ってもよい。
S4104: The intra prediction parameter decoding unit 304 and the intra prediction parameter coding unit 113 use the coordinate values (x0-xTile, y0-yTile) of the current block in the intra-tile coordinate system to determine whether the current block is below the CTU boundary. If ((y0-yTile)%ctuSize)>0, it is determined that the current block is below the CTU boundary. If the current block is below the CTU boundary, the process proceeds to S4105, where the intra reference line index intra_luma_ref_idx is decoded or coded. Otherwise, if the current block is in contact with the CTU boundary, intra_luma_ref_idx is not decoded and is derived (inferred) as 0.
In other words, the CTU boundary determination may be performed when (yCb%ctuSize)>0 using the top left coordinates (xCb, yCb) of the top left luminance block relative to the top left coordinates of the target tile, which are the coordinate values of the target block in the tile coordinate system.

S4105:イントラ予測パラメータ復号部304、イントラ予測パラメータ符号化部113は、イントラ参照ラインインデックスintra_luma_ref_idxを復号もしくは符号化する。 S4105: The intra prediction parameter decoding unit 304 and the intra prediction parameter encoding unit 113 decode or encode the intra reference line index intra_luma_ref_idx.

なお、イントラ予測においては、イントラ参照ラインインデックスintra_luma_ref_idxの他に、MPMであるか否かを示すフラグintra_luma_mpm_flag、MPMを選択するインデック
スintra_luma_mpm_idx、MPMでない場合のイントラ予測モードを示すインデックスintra_luma_mpm_remainderをさらに復号あるいは符号化してもよい。つまり、タイル内座標系の
対象ブロックの座標値である、対象タイルの左上座標に対する輝度ブロックの左上座標(xCb, yCb)を用いて、CTU境界判定を(yCb%ctuSize)>0で行ってもよい。
In addition, in intra prediction, in addition to the intra reference line index intra_luma_ref_idx, a flag intra_luma_mpm_flag indicating whether or not it is MPM, an index intra_luma_mpm_idx for selecting MPM, and an index intra_luma_mpm_remainder indicating the intra prediction mode when it is not MPM may be further decoded or encoded. That is, the CTU boundary determination may be performed with (yCb%ctuSize)>0 using the upper left coordinate (xCb, yCb) of the luminance block relative to the upper left coordinate of the target tile, which is the coordinate value of the target block in the intra-tile coordinate system.

イントラ予測画像生成部310は、IntraLumaRefLineIdx(refIdx)を用いて、参照ピクチャサンプルp[x][y]を導出し、導出した参照ピクチャサンプルp[x][y]から予測画像を導出する。 The intra-prediction image generation unit 310 uses IntraLumaRefLineIdx (refIdx) to derive a reference picture sample p[x][y], and derives a prediction image from the derived reference picture sample p[x][y].

以上の構成のイントラ予測パラメータ復号部304、イントラ予測パラメータ符号化部113によれば、タイル単位サイズの整数倍のタイルサイズを復号あるいは符号化し、ピクチャ内座標とタイル左上座標とタイルサイズを用いて4分木、2分木、3分木のマルチツリー分割を行い、ピクチャ内座標(対象ピクチャの左上座標を基準とする対象ブロックの左上座標)からタイル内座標(対象タイルの左上座標を基準とする対象ブロックの左上座標)に変換してCTU境界の判定を行うことで、タイルサイズがCTUの整数倍ではない場合においても、正確にCTU境界判定が可能となり追加のラインメモリを利用することなく、マルチラインイントラ予測が可能となる効果を奏する。 The intra prediction parameter decoding unit 304 and intra prediction parameter encoding unit 113 configured as above decode or encode a tile size that is an integer multiple of the tile unit size, perform multi-tree division into quad trees, binary trees, and ternary trees using the intra-picture coordinates, the top left coordinate of the tile, and the tile size, and perform CTU boundary determination by converting from intra-picture coordinates (the top left coordinate of the target block based on the top left coordinate of the target picture) to intra-tile coordinates (the top left coordinate of the target block based on the top left coordinate of the target tile). This has the effect of enabling accurate CTU boundary determination even when the tile size is not an integer multiple of the CTU, and enabling multi-line intra prediction without using additional line memory.

(MPM導出)
イントラ予測パラメータ復号部304、イントラ予測パラメータ符号化部113は、左上座標(xCb, yCb)、サイズ(cbWidth, cbHeight)の対象ブロックの左と上に各々隣接する隣接
ブロックA, Bの位置(xNbA, yNbA)、(xNbB, yNbB)を以下で導出する。
(MPM derived)
The intra-prediction parameter decoding unit 304 and the intra-prediction parameter encoding unit 113 derive the positions (xNbA, yNbA) and (xNbB, yNbB) of adjacent blocks A and B, respectively, to the left and above of the target block with top left coordinates (xCb, yCb) and size (cbWidth, cbHeight), as follows.

(xNbA, yNbA) = (xCb-1, yCb+cbHeight-1)
(xNbA, yNbA) = (xCb+cbWidth-1, yCb-1)
イントラ予測パラメータ復号部304、イントラ予測パラメータ符号化部113は、ブロックA, Bのイントラ予測モードである隣接イントラ予測モードcandIntraPredModeA、candIntraPredModeBを導出する。具体的には、X=AもしくはBにおいて、以下の条件が1つでも真の場合に、隣接イントラ予測モード(candIntraPredModeA, candIntraPredModeB)にプレーナモードを設定する。
・Xの位置(xNbX, yNbX)が画面外やタイル外であり利用可能(available)ではない。
・Xの位置(xNbX, yNbX)の予測モードCuPredModeがイントラ(MODE_INTRA)ではない。
・Xが上の隣接ブロックBであり、XのY座標(yCb)がCTU境界よりも上にある。
(xNbA, yNbA) = (xCb-1, yCb+cbHeight-1)
(xNbA, yNbA) = (xCb+cbWidth-1, yCb-1)
The intra prediction parameter decoding unit 304 and the intra prediction parameter encoding unit 113 derive adjacent intra prediction modes candIntraPredModeA and candIntraPredModeB, which are the intra prediction modes of blocks A and B. Specifically, when X=A or B, If any one of the above conditions is true, the adjacent intra prediction modes (candIntraPredModeA, candIntraPredModeB) are set to the planar mode.
・The X position (xNbX, yNbX) is outside the screen or tile and is not available.
The prediction mode CuPredMode at the X position (xNbX, yNbX) is not intra (MODE_INTRA).
・X is the upper adjacent block B, and the Y coordinate of X (yCb) is above the CTU boundary.

上記以外の場合、Xの位置(xNbX, yNbX)のイントラ予測モードを隣接予測モードとして
設定する。なお、フレキシブルタイルの場合のCTU境界判定については後述する。
In cases other than the above, the intra prediction mode at the position (xNbX, yNbX) of X is set as the adjacent prediction mode. Note that the CTU boundary determination in the case of flexible tiles will be described later.

candIntraPredModeX = IntraPredModeY[xNbX][yNbX]
イントラ予測パラメータ復号部304、イントラ予測パラメータ符号化部113は、以下の式でMPMリストcandModeListを導出しても良い。
最初に以下の式で初期リストを導出する。
candModeList[ 0 ] = candIntraPredModeA
candModeList[ 1 ] = !candIntraPredModeA
candModeList[ 2 ] = INTRA_ANGULAR50
candModeList[ 3 ] = INTRA_ANGULAR18
candModeList[ 4 ] = INTRA_ANGULAR46
candModeList[ 5 ] = INTRA_ANGULAR54
もしcandIntraPredModeBとcandIntraPredModeAが等しい場合には、以下を行う。
candIntraPredModeX = IntraPredModeY[xNbX][yNbX]
The intra prediction parameter decoding unit 304 and the intra prediction parameter encoding unit 113 may derive the MPM list candModeList using the following formula.
First, derive an initial list using the following formula:
candModeList[ 0 ] = candIntraPredModeA
candModeList[ 1 ] = !candIntraPredModeA
candModeList[ 2 ] = INTRA_ANGULAR50
candModeList[ 3 ] = INTRA_ANGULAR18
candModeList[ 4 ] = INTRA_ANGULAR46
candModeList[ 5 ] = INTRA_ANGULAR54
If candIntraPredModeB is equal to candIntraPredModeA, then do the following.

candIntraPredModeAが1より大きい場合、以下のようにリストを更新する。3, 4, 5の
エントリには、candIntraPredModeAに対して-1, +1, -2のイントラ予測モードが格納される。
candModeList[ 0 ] = candIntraPredModeA
candModeList[ 1 ] = INTRA_PLANAR
candModeList[ 2 ] = INTRA_DC
candModeList[ 3 ] = 2+((candIntraPredModeA+62)%65)
candModeList[ 4 ] = 2+((candIntraPredModeA-1)%65)
candModeList[ 5 ] = 2+((candIntraPredModeA+61)%65)
上記以外(もしcandIntraPredModeBとcandIntraPredModeAが等しくない場合)、当該2つの隣接予測モードをエントリ0, 1に格納する。
candModeList[ 0 ] = candIntraPredModeA
candModeList[ 1 ] = candIntraPredModeB
biggerIdx = candModeList[0]>candModeList[1] ? 0 : 1
さらに、candIntraPredModeAとcandIntraPredModeBが両方とも1より大きい場合(2つの隣接予測モードが両方ともAngular予測(方向予測)の場合)、以下のようにリストを
更新する。
candModeList[ 2 ] = INTRA_PLANAR
candModeList[ 3 ] = INTRA_DC
さらに、candModeList[biggerIdx]-candModeList[!biggerIdx]が64もしくは1の場合(
つまり2つの隣接予測モードの違いが-1もしくは1の場合)、以下を行い、4と5のエント
リに、隣接予測モードの-2, +2のイントラ予測モードを格納する。
candModeList[ 4 ] = 2+((candModeList[biggerIdx]+62)%65)
candModeList[ 5 ] = 2+((candModeList[biggerIdx]-1)%65)
candModeList[biggerIdx]-candModeList[!biggerIdx]が64もしくは1以外の場合、以下を
行い、4と5のエントリに、隣接予測モードの-1, +1のイントラ予測モードを格納する。
candModeList[ 4 ] = 2+((candModeList[biggerIdx]+61)%65)
candModeList[ 5 ] = 2+(candModeList[biggerIdx]%65)
上記以外で、candIntraPredModeAとcandIntraPredModeの和が2以上の場合(2つの隣
接予測モードがDCモードとプレーナモードではない場合)、以下を行う。3, 4と5のエン
トリに、隣接予測モードの-1, +1, -2のイントラ予測モードを格納する。
candModeList[ 2 ] = !candModeList[!biggerIdx]
candModeList[ 3 ] = 2+((candModeList[biggerIdx]+62)%65)
candModeList[ 4 ] = 2+((candModeList[biggerIdx]-1)%65)
candModeList[ 5 ] = 2+((candModeList[biggerIdx]+61)%65)
(フレキシブルタイルにおけるMPM導出における隣接イントラ予測モードの導出)
図42は、ピクチャをCTUの整数倍に制限されないサイズのタイルに分割する場合におけ
る、MPM導出処理を示すフローチャートである。S5001、S5002は、S4001
、S4002と同じ処理であるため説明を省略する。
If candIntraPredModeA is greater than 1, the list is updated as follows: Entries 3, 4, and 5 store intra prediction modes of −1, +1, and −2 for candIntraPredModeA.
candModeList[ 0 ] = candIntraPredModeA
candModeList[ 1 ] = INTRA_PLANAR
candModeList[ 2 ] = INTRA_DC
candModeList[ 3 ] = 2+((candIntraPredModeA+62)%65)
candModeList[ 4 ] = 2+((candIntraPredModeA-1)%65)
candModeList[ 5 ] = 2+((candIntraPredModeA+61)%65)
In any other case (if candIntraPredModeB and candIntraPredModeA are not equal), the two adjacent prediction modes are stored in entries 0 and 1.
candModeList[ 0 ] = candIntraPredModeA
candModeList[ 1 ] = candIntraPredModeB
biggerIdx = candModeList[0]>candModeList[1] ? 0 : 1
Furthermore, if candIntraPredModeA and candIntraPredModeB are both greater than 1 (if both adjacent prediction modes are angular prediction (directional prediction)), the list is updated as follows.
candModeList[ 2 ] = INTRA_PLANAR
candModeList[ 3 ] = INTRA_DC
Furthermore, if candModeList[biggerIdx]-candModeList[!biggerIdx] is 64 or 1 (
That is, when the difference between the two adjacent prediction modes is −1 or 1), the following is performed and the intra prediction modes of −2 and +2 of the adjacent prediction modes are stored in entries 4 and 5.
candModeList[ 4 ] = 2+((candModeList[biggerIdx]+62)%65)
candModeList[ 5 ] = 2+((candModeList[biggerIdx]-1)%65)
If candModeList[biggerIdx]-candModeList[!biggerIdx] is not 64 or 1, the following is performed and intra prediction modes that are −1 and +1 of the adjacent prediction modes are stored in entries 4 and 5.
candModeList[ 4 ] = 2+((candModeList[biggerIdx]+61)%65)
candModeList[ 5 ] = 2+(candModeList[biggerIdx]%65)
In the case other than the above, if the sum of candIntraPredModeA and candIntraPredMode is 2 or more (if the two adjacent prediction modes are not the DC mode and the planar mode), the following is performed: In the entries 3, 4, and 5, the intra prediction modes of −1, +1, and −2 of the adjacent prediction modes are stored.
candModeList[ 2 ] = !candModeList[!biggerIdx]
candModeList[ 3 ] = 2+((candModeList[biggerIdx]+62)%65)
candModeList[ 4 ] = 2+((candModeList[biggerIdx]-1)%65)
candModeList[ 5 ] = 2+((candModeList[biggerIdx]+61)%65)
(Derivation of adjacent intra prediction modes in MPM derivation in flexible tiles)
42 is a flowchart showing the MPM derivation process when a picture is divided into tiles with a size not limited to an integer multiple of the CTU.
Since this is the same processing as S4002, the explanation will be omitted.

S5004:イントラ予測パラメータ復号部304とイントラ予測パラメータ符号化部113は、タイル内座標系の対象ブロックの座標値(xCb, yCb)を用いて、隣接ブロックXのY座標yCbがCTU境界よりも上にあるかを判定する。 S5004: The intra-prediction parameter decoding unit 304 and the intra-prediction parameter encoding unit 113 use the coordinate values (xCb, yCb) of the target block in the intra-tile coordinate system to determine whether the Y coordinate yCb of the adjacent block X is above the CTU boundary.

(yCb-1)<((yCb>>CtbLog2SizeY)<<CtbLog2SizeY)
なお、上記の判定式にさらに、以下の判定式の何れかが真の場合を加えてもよい。
・Xの位置が画面外やタイル外であり利用可能(available)ではない。
・Xの位置(xNbX, yNbX)の予測モードCuPredModeがイントラ(MODE_INTRA)ではない。
(yCb-1)<((yCb>>CtbLog2SizeY)<<CtbLog2SizeY)
In addition to the above determination formula, a case in which any of the following determination formulas is true may be added.
- The X position is off-screen or off-tile and is not available.
The prediction mode CuPredMode at the X position (xNbX, yNbX) is not intra (MODE_INTRA).

S5005: Xの位置(xNbX, yNbX)のイントラ予測モードを隣接予測モードに設定する。 S5005: Set the intra prediction mode for X position (xNbX, yNbX) to adjacent prediction mode.

candIntraPredModeX = IntraPredModeY[xNbX][yNbX]
イントラ予測パラメータ復号部304、イントラ予測パラメータ符号化部113は、以下の条件が真の場合に、隣接イントラ予測モード(candIntraPredModeA, candIntraPredModeB)にプレーナモードを設定する。
・Xが上の隣接ブロックBであり、XのY座標 (yCb)がCTU境界よりも上にある。
candIntraPredModeX = IntraPredModeY[xNbX][yNbX]
When the following condition is true, the intra prediction parameter decoding unit 304 and the intra prediction parameter encoding unit 113 set the adjacent intra prediction modes (candIntraPredModeA, candIntraPredModeB) to the planar mode.
- X is the upper adjacent block B, and the Y coordinate of X (yCb) is above the CTU boundary.

以上の構成のイントラ予測パラメータ復号部304、イントラ予測パラメータ符号化部113によれば、タイル単位サイズの整数倍のタイルサイズを復号あるいは符号化し、タイル内座標とタイルサイズを用いて4分木、2分木、3分木のマルチツリー分割を行い、タイル内座標(対象タイルの左上座標を基準とする対象ブロックの左上座標)を用いてCTU境界の判定を行うことで、タイルサイズがCTUサイズの整数倍ではない場合においても、ラインメモリを利用することなく、MPMを導出することが可能となる効果を奏する。 The intra prediction parameter decoding unit 304 and intra prediction parameter encoding unit 113 configured as above decode or encode a tile size that is an integer multiple of the tile unit size, perform multi-tree partitioning into quad trees, binary trees, and ternary trees using the intra-tile coordinates and tile size, and determine CTU boundaries using the intra-tile coordinates (the top left coordinate of the target block based on the top left coordinate of the target tile), thereby achieving the effect of making it possible to derive an MPM without using line memory, even when the tile size is not an integer multiple of the CTU size.

図43は、ピクチャをCTUの整数倍に制限されないサイズのタイルに分割する場合におけ
る、MPM導出処理を示すフローチャートである。S5101、S5102、S5103は
、S4101、S4102、S4103と同じ処理であるため説明を省略する。
43 is a flowchart showing the MPM derivation process when a picture is divided into tiles with a size that is not limited to an integer multiple of the CTU. S5101, S5102, and S5103 are the same processes as S4101, S4102, and S4103, and therefore description thereof will be omitted.

S5104:イントラ予測パラメータ復号部304とイントラ予測パラメータ符号化部113は、タイル内座標系の対象ブロックの座標値(x0-xTile, y0-yTile)を用いて、隣接ブロックXのY座標(yCb-yTile)がCTU境界よりも上にあるかを判定する。 S5104: The intra-prediction parameter decoding unit 304 and the intra-prediction parameter encoding unit 113 use the coordinate values (x0-xTile, y0-yTile) of the target block in the intra-tile coordinate system to determine whether the Y coordinate (yCb-yTile) of adjacent block X is above the CTU boundary.

(yCb-yTile-1) < ((yCb-yTile)>>CtbLog2SizeY)<<CtbLog2SizeY
なお、上記の判定式にさらに、以下の判定式の何れかが真の場合を加えてもよい。
・Xの位置が画面外やタイル外であり利用可能(available)ではない。
・Xの位置(xNbX, yNbX)の予測モードCuPredModeがイントラ(MODE_INTRA)ではない。
(yCb-yTile-1) <((yCb-yTile)>>CtbLog2SizeY)<<CtbLog2SizeY
In addition to the above determination formula, a case in which any of the following determination formulas is true may be added.
- The X position is off-screen or off-tile and is not available.
The prediction mode CuPredMode at the X position (xNbX, yNbX) is not intra (MODE_INTRA).

S5105:Xの位置(xNbX, yNbX)のイントラ予測モードを隣接予測モードに設定する
S5105: The intra prediction mode at the X position (xNbX, yNbX) is set to the adjacent prediction mode.

candIntraPredModeX = IntraPredModeY[xNbX][yNbX]
・イントラ予測パラメータ復号部304、イントラ予測パラメータ符号化部113は、以下の条件が真の場合に、隣接イントラ予測モード(candIntraPredModeA, candIntraPredModeB)にプレーナモードを設定する。
Xが上の隣接ブロックBであり、XのY座標(yCb)がCTU境界よりも上にある。
candIntraPredModeX = IntraPredModeY[xNbX][yNbX]
When the following condition is true, the intra-prediction parameter decoding unit 304 and the intra-prediction parameter encoding unit 113 set the adjacent intra-prediction modes (candIntraPredModeA, candIntraPredModeB) to the planar mode.
X is the upper neighbor block B, and the Y coordinate of X (yCb) is above the CTU boundary.

以上の構成のイントラ予測パラメータ復号部304、イントラ予測パラメータ符号化部113によれば、タイル単位サイズの整数倍のタイルサイズを復号あるいは符号化し、ピクチャ内座標とタイル左上座標とタイルサイズを用いて4分木、2分木、3分木のマルチツリー分割を行い、ピクチャ内座標からタイル内座標に変換してCTU境界の判定を行うことで、タイルサイズがCTUの整数倍ではない場合においても、ラインメモリを利用することなく、MPM導出が可能となる効果を奏する。 The intra prediction parameter decoding unit 304 and intra prediction parameter encoding unit 113 configured as above decode or encode a tile size that is an integer multiple of the tile unit size, perform multi-tree partitioning into quad trees, binary trees, and ternary trees using the intra-picture coordinates, the top left tile coordinates, and the tile size, and convert from the intra-picture coordinates to intra-tile coordinates to determine the CTU boundaries. This has the effect of making it possible to derive MPM without using line memory, even when the tile size is not an integer multiple of the CTU.

エントロピー復号部301は、インター予測パラメータ(予測モードpredMode、マージフ
ラグmerge_flag、マージインデックスmerge_idx、インター予測識別子inter_pred_idc、
参照ピクチャインデックスrefIdxLX、予測ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLX)をインター予測パラメータ復号部303に出力する。また、イントラ予測パラメータ(輝度予測モードIntraPredModeY、色差予測モードIntraPredModeC)をイントラ予測パラメータ復号部304に出力する。エントロピー復号部301は、量子化変換係数を逆量子化・逆変換部311に出力する。
The entropy decoding unit 301 receives inter prediction parameters (prediction mode predMode, merge flag merge_flag, merge index merge_idx, inter prediction identifier inter_pred_idc,
The entropy decoding unit 301 outputs the quantized transform coefficients to the inverse quantization and inverse transform unit 311. ...

(CCLM予測)
イントラ予測画像生成部310(CCLM予測部)は、輝度から色差を線形予測するCCLM予測(Chroma Component Liner Model)を行ってもよい。CCLM予測では、対象ブロックの隣接画素(上と左に隣接する)において輝度と色差の線形予測関係(線形予測パラメータa, b)を導出し、対象ブロックの輝度画像から、色差画像をy=a*x+bの関係式で導出する。よ
り具体的には、輝度をダウンサンプルして得られる画素値pDsY[x][y]と予測パラメータa,b及び所定のシフト値kから以下の式で、色差の予測画像predSamples[][]を導出する。
(CCLM forecast)
The intra-prediction image generating unit 310 (CCLM prediction unit) may perform CCLM prediction (Chroma Component Linear Model) that linearly predicts chrominance from luminance. In CCLM prediction, a linear prediction relationship (linear prediction parameters a, b) between luminance and chrominance is derived for adjacent pixels (adjacent above and to the left) of the target block, and a chrominance image is derived from the luminance image of the target block using the relational expression y=a*x+b. More specifically, a chrominance prediction image predSamples[][] is derived from the pixel value pDsY[x][y] obtained by downsampling luminance, prediction parameters a, b, and a predetermined shift value k using the following expression.

predSamples[x][y] = Clip1C(((pDsY[x][y]*a)>>k)+b)
(フレキシブルタイルにおけるCCLM予測)
タイルのサイズは、既に説明したように、タイル単位サイズTileUnitSizeYの整数倍の
サイズとして復号もしくは符号化する。またCT分割部は、ピクチャ内座標系を用いて、ピクチャ内座標とタイル左上座標とタイルサイズを用いて4分木、2分木、3分木のマルチツリー分割を行う。もしくは、タイル内座標系を用いて、タイル内座標とタイルサイズを用いて4分木、2分木、3分木のマルチツリー分割を行う。
predSamples[x][y] = Clip1C(((pDsY[x][y]*a)>>k)+b)
(CCLM forecast for flexible tiles)
As described above, the size of the tile is decoded or encoded as an integer multiple of the tile unit size TileUnitSizeY. In addition, the CT division unit uses the intra-picture coordinate system to calculate the intra-picture coordinates, the upper left coordinate of the tile, and the tile Using the size, perform multi-tree division into quad trees, binary trees, and ternary trees. Alternatively, using the intra-tile coordinate system, perform multi-tree division into quad trees, binary trees, and ternary trees using the intra-tile coordinates and tile size. Perform multi-tree partitioning of the 1-ary tree.

CCLM予測部は、タイル内座標系の対象ブロックの座標値である対象タイルの左上座標に対する色差ブロックの左上座標(xCbC, yCbC)を用いて、CTU境界判定を行う。 The CCLM prediction unit performs CTU boundary determination using the top left coordinates (xCbC, yCbC) of the chrominance block relative to the top left coordinates of the target tile, which are the coordinate values of the target block in the tile coordinate system.

bCTUboudary = yCbC & ((1<<(CtbLog2SizeY-1)-1))
また輝度と色差のサンプリングが2:1である4:2:0以外のサンプルを考慮して以下で導出しても良い。SubHeightCが輝度と色差のサンプル比である場合、
bCTUboudary = (SubHeightC==2) ? (yCbC & ((1<<(CtbLog2SizeY-1)-1)) : ((1<<(CtbLog2SizeY)-1))
bCTUboudary = yCbC & ((1<<(CtbLog2SizeY-1)-(SubHeightC-1)))
またchroma_format_idcを用いて切り替えても良い。
bCTUboudary = yCbC &((1<<(CtbLog2SizeY-1)-1))
In addition, the following can be derived considering samples other than 4:2:0 where the luma and chroma sampling is 2:1. If SubHeightC is the luma and chroma sampling ratio,
bCTUboudary = (SubHeightC==2) ? (yCbC &((1<<(CtbLog2SizeY)-1)-1)) : ((1<<(CtbLog2SizeY)-1))
bCTUboudary = yCbC &((1<<(CtbLog2SizeY-1)-(SubHeightC-1)))
You can also switch using chroma_format_idc.

なお、タイル内の輝度左上座標(xCb, yCb)を用いて以下の式で導出してもよい。 You can also use the luminance top left coordinate (xCb, yCb) in the tile to derive the value using the following formula:

bCTUboudary = yCb & ((1<<(CtbLog2SizeY))-1)
ここで、左上色差ブロックの左上座標(xCbC, yCbC)は、タイル左上座標を基準と、左上輝度ブロック座標(xCb, yCb)から導出してもよい。
bCTUboudary = yCb &((1<<(CtbLog2SizeY))-1)
Here, the top left coordinates (xCbC, yCbC) of the top left chrominance block may be derived from the top left luminance block coordinates (xCb, yCb) with reference to the top left coordinates of the tile.

ピクチャ内座標とタイル左上座標とタイルサイズを用いて4分木、2分木、3分木のマ
ルチツリー分割を行い、対象画面の左上座標を基準とする対象ブロックの輝度左上座標(xCbInPic, yCbInPic)と、対象画面の左上座標を基準とする対象タイルの輝度左上座標(xTile, yTile)からタイル内の左上輝度ブロック座標(xCb, yCb)を導出してもよい。
It is also possible to perform multi-tree division into a quadtree, binary tree, or ternary tree using the coordinates within the picture, the top-left coordinate of the tile, and the tile size, and derive the top-left luminance block coordinates (xCb, yCb) within the tile from the top-left luminance coordinate (xCbInPic, yCbInPic) of the target block based on the top-left coordinate of the target screen, and the top-left luminance coordinate (xTile, yTile) of the target tile based on the top-left coordinate of the target screen.

xCb = xCbInPic-xTile[TileId]
yCb = yCbInPic-yTile[TileId]
また、タイル内座標系を用いて、タイル内座標とタイルサイズを用いて4分木、2分木、3分木のマルチツリー分割を行う場合には、対象ブロックの左上座標をそのまま(xCb, yCb)に用いる。
xCb = xCbInPic - xTile[TileId]
yCb = yCbInPic - yTile[TileId]
When performing multi-tree division into quad trees, binary trees, or ternary trees using the intra-tile coordinate system and the intra-tile coordinates and tile size, the upper left coordinates of the target block are used as is as (xCb, yCb).

CCLM予測部は、隣接輝度画像pTopDsYを以下の手順で導出する。CCLM予測部は、上画素
が参照可能(availT = TRUE)であり、CTU境界ではない(bCTUboundary = FALSE)場合にはx=1..nTbW-1に対して以下の式で導出する。つまりbCTUboundary = FALSEの場合にはpY[x][y]のうちpY[x][-1]とpY[x][-2]の2ラインを利用する。
pTopDsY[x] = (pY[2*x-1][-2]+pY[2*x-1][-1]+2*pY[2*x][-2]+2*pY[2*x][-1]+pY[2*x+1][-2]+pY[2*x+1][-1]+4)>>3
ここで、pY[][]は、対象ブロックに隣接する輝度画像である。
The CCLM prediction unit derives the adjacent luminance image pTopDsY as follows: If the upper pixel is available (availT = TRUE) and is not a CTU boundary (bCTUboundary = FALSE), the CCLM prediction unit derives it using the following formula for x = 1..nTbW-1. In other words, if bCTUboundary = FALSE, two lines of pY[x][y], pY[x][-1] and pY[x][-2], are used.
pTopDsY[x] = (pY[2*x-1][-2]+pY[2*x-1][-1]+2*pY[2*x][-2]+2*pY[2*x][-1]+pY[2*x+1][-2]+pY[2*x+1][-1]+4)>>3
Here, pY[][] is a luminance image adjacent to the target block.

左上座標が利用可能であれば、さらに以下の式で導出しても良い。
pTopDsY[0]=(pY[-1][-2]+pY[-1][-1]+2*pY[0][-2]+2*pY[0][-1]+pY[1][-2]+pY[1][-1]+4)>>3
左上隣接座標(添字x、yがともに負で示される座標)が利用可能でなければ、以下の式で導出しても良い。
pTopDsY[0] = (pY[0][-2]+pY[0][-1]+1)>>1
CCLM予測部は、隣接輝度画像pTopDsYを以下の手順で導出する。CCLM予測部は、上画素
が参照可能(availT = TRUE)であり、CTU境界である(bCTUboundary = TRUW)場合には、x=1..nTbW-1に対して以下の式で導出する。
pTopDsY[x] = (pY[2*x-1][-1]+2*pY[2*x][-1]+pY[2*x+1][-1]+2)>>2
つまりbCTUboundary = TRUEの場合には、pY[x][y]のうちpY[x][-1]の1ラインのみを利用する。
If the top left coordinate is available, it may be further derived using the following formula:
pTopDsY[0]=(pY[-1][-2]+pY[-1][-1]+2*pY[0][-2]+2*pY[0][-1]+pY[1][-2]+pY[1][-1]+4)>>3
If the upper left adjacent coordinate (coordinate with negative subscripts x and y) is not available, it may be derived using the following formula:
pTopDsY[0] = (pY[0][-2]+pY[0][-1]+1)>>1
The CCLM prediction unit derives the adjacent luminance image pTopDsY in the following manner. When the upper pixel is available for reference (availT = TRUE) and is a CTU boundary (bCTUboundary = TRUW), the CCLM prediction unit derives the adjacent luminance image pTopDsY for x = 1..nTbW-1 using the following formula:
pTopDsY[x] = (pY[2*x-1][-1]+2*pY[2*x][-1]+pY[2*x+1][-1]+2)>>2
In other words, when bCTUboundary = TRUE, only one line, pY[x][-1], of pY[x][y] is used.

左上隣接座標が利用可能であれば、さらに以下の式で導出しても良い。
pTopDsY[0] = (pY[-1][-1]+2*pY[0][-1]+pY[1][-1]+2)>>2
左上隣接座標が利用可能でなければ、さらに以下の式で導出しても良い。
pTopDsY[0] = pY[0][-1]
CCLM予測部は、さらに隣接輝度画像pLeftDsY[]を導出する。
If the upper left adjacent coordinate is available, it may be further derived using the following formula:
pTopDsY[0] = (pY[-1][-1]+2*pY[0][-1]+pY[1][-1]+2)>>2
If the top left neighbor coordinate is not available, it may be further derived using the following formula:
pTopDsY[0] = pY[0][-1]
The CCLM prediction unit further derives the adjacent luminance image pLeftDsY[ ].

CCLM予測部は、隣接輝度画像pTopDsYの最小値MinLumaと最大値MaxLumaとその位置にお
ける色差画素値ChromaForMinLuma、ChromaForMaxLumaを導出する。
The CCLM prediction unit derives the minimum value MinLuma and maximum value MaxLuma of the adjacent luminance image pTopDsY and the chrominance pixel values ChromaForMinLuma and ChromaForMaxLuma at those positions.

CCLM予測部は、ChromaForMinLuma、ChromaForMaxLumaの差を、MinLumaとMaxLumaの差で割ることで傾きaを導出する。より具体的には整数演算のために、以下の式でCCLMパラメ
ータaを導出する。
The CCLM prediction unit derives the slope a by dividing the difference between ChromaForMinLuma and ChromaForMaxLuma by the difference between MinLuma and MaxLuma. More specifically, for integer arithmetic, the CCLM parameter a is derived using the following formula:

shift = (BitDepthC>8) ? BitDepthC-9 : 0
add = shift ? 1<<(shift-1) : 0
diff = (MaxLuma-MinLuma+add)>>shift
k = 16
diffが正の場合、CCLM予測部は以下の式を用いてaを導出し、それ以外ではa=0とする。
shift = (BitDepthC>8) ? BitDepthC-9 : 0
add = shift ? 1<<(shift-1) : 0
diff = (MaxLuma-MinLuma+add)>>shift
k = 16
If diff is positive, the CCLM prediction unit derives a using the following formula, otherwise a = 0.

div = ((ChromaForMaxLuma-ChromaForMinLuma)*(Floor((65536*65536)/diff)-Floor(65536/diff)*65536)+32768)>>16
a = (((ChromaForMaxLuma-ChromaForMinLuma)*Floor(65536/diff)+div+add)>>shift)
さらに、CCLM予測部はbを導出する。
b = ChromaForMinLuma-((a*MinLuma)>>k)
以上の構成のCCLM予測部によれば、タイル単位サイズの整数倍のタイルサイズを復号あるいは符号化し、ピクチャ内座標とタイル左上座標とタイルサイズを用いて4分木、2分木、3分木のマルチツリー分割を行いピクチャ内座標からタイル内座標(対象タイルの左上座標を基準とする対象ブロックの左上座標)に変換してCTU境界の判定を行う、もしくは、タイル内座標を用いて、4分木、2分木、3分木のマルチツリー分割を行い、タイル内座標を用いてCTU境界判定を行う。これによりタイルサイズがCTUの整数倍ではない場合においても、ラインメモリを利用することなく、CCLM予測が可能となる効果を奏する。
div = ((ChromaForMaxLuma-ChromaForMinLuma)*(Floor((65536*65536)/diff)-Floor(65536/diff)*65536)+32768)>>16
a = (((ChromaForMaxLuma-ChromaForMinLuma)*Floor(65536/diff)+div+add)>>shift)
Furthermore, the CCLM prediction unit derives b.
b = ChromaForMinLuma-((a*MinLuma)>>k)
According to the CCLM prediction unit having the above configuration, a tile size that is an integer multiple of the tile unit size is decoded or encoded, and a quad tree, a binary tree, or a ternary tree is generated using the coordinates in the picture, the coordinates of the upper left corner of the tile, and the tile size. The CTU boundary is determined by converting the coordinates in the picture to coordinates in the tile (the upper left coordinate of the target block based on the upper left coordinate of the target tile), or by using the coordinates in the tile, Multi-tree partitioning is performed using 1-, 2-, and 3-way trees, and CTU boundaries are determined using coordinates within the tile. This makes it possible to use line memory even when the tile size is not an integer multiple of the CTU. This has the effect of making CCLM predictions possible without any need for calculations.

(マージ予測)
図38(a)は、本実施形態に係るマージ予測パラメータ導出部3036の構成を示す概略図で
ある。マージ予測パラメータ導出部3036は、マージ候補導出部30361、マージ候補選択部30362を備える。なお、マージ候補は、予測リスト利用フラグpredFlagLX、動きベクトルmvLX、参照ピクチャインデックスrefIdxLXを含んで構成され、マージ候補リストに格納される。マージ候補リストに格納されたマージ候補には、所定の規則に従ってインデックスが割り当てられる。
(Merge prediction)
38(a) is a schematic diagram showing a configuration of a merge prediction parameter derivation unit 3036 according to this embodiment. The merge prediction parameter derivation unit 3036 includes a merge candidate derivation unit 30361 and a merge candidate selection unit 30362. Note that a merge candidate includes a prediction list use flag predFlagLX, a motion vector mvLX, and a reference picture index refIdxLX, and is stored in a merge candidate list. An index is assigned to the merge candidates stored in the merge candidate list according to a predetermined rule.

マージ候補導出部30361は、復号済の隣接ブロックの動きベクトルと参照ピクチャイン
デックスrefIdxLXをそのまま用いてマージ候補を導出する。それ以外に、マージ候補導出部30361は、後述する空間マージ候補導出処理、時間マージ候補導出処理、結合マージ候
補導出処理、およびゼロマージ候補導出処理、時空間マージ候補導出処理を適用してもよい。
The merge candidate derivation unit 30361 derives merge candidates by directly using the motion vectors of the decoded neighboring blocks and the reference picture indexes refIdxLX. In addition, the merge candidate derivation unit 30361 may apply a spatial merge candidate derivation process, a temporal merge candidate derivation process, a joint merge candidate derivation process, a zero merge candidate derivation process, and a spatio-temporal merge candidate derivation process, which will be described later.

(空間マージ候補導出処理)
空間マージ候補導出処理として、マージ候補導出部30361は、所定の規則に従って、予
測パラメータメモリ307が記憶している予測パラメータ(予測リスト利用フラグpredFlagLX、動きベクトルmvLX、参照ピクチャインデックスrefIdxLX)を読み出し、マージ候補に
設定する。参照ピクチャの指定方法は、例えば、対象ブロックから予め定めた範囲内にある隣接ブロック(例えば、対象ブロックの左端L、左下端BL、左上端AL、上端A、右上端ARにそれぞれ接するブロックの全部または一部)のそれぞれに係る予測パラメータである。各々のマージ候補をL, BL, AL, A, ARと呼ぶ。
(Spatial merge candidate derivation process)
As a spatial merge candidate derivation process, the merge candidate derivation unit 30361 reads out prediction parameters (prediction list use flag predFlagLX, motion vector mvLX, reference picture index refIdxLX) stored in the prediction parameter memory 307 according to a predetermined rule, and sets them as merge candidates. The method of specifying the reference picture is, for example, prediction parameters related to each of adjacent blocks within a predetermined range from the target block (for example, all or part of blocks adjacent to the left end L, the lower left end BL, the upper left end AL, the upper end A, and the upper right end AR of the target block). Each merge candidate is called L, BL, AL, A, and AR.

(時間マージ候補導出処理、時間動きベクトル導出処理)
時間マージ導出処理として、マージ候補導出部30361は、対象ブロックの右下CBR、あるいは、中央の座標を含む参照画像中のブロックCの予測パラメータを、予測パラメータメ
モリ307から読み出してマージ候補とし、マージ候補リストmergeCandList[]に格納する。
(Temporal merge candidate derivation process, temporal motion vector derivation process)
As a temporal merge derivation process, the merge candidate derivation unit 30361 reads prediction parameters of the lower right CBR of the target block or block C in the reference image including the center coordinates from the prediction parameter memory 307, sets it as a merge candidate, and stores it in the merge candidate list mergeCandList[ ].

図18は、参照画像中のブロックC、CBRを示す図である。ブロックCBR(ブロックBR)を
優先してマージ候補リストmergeCandList[]に加え、ブロックCBRが動きベクトルを持たない(例えばイントラ予測ブロック)場合や、ブロックCBRがピクチャ外に位置する場合は
、ブロックCの動きベクトルを予測ベクトル候補に加える。動きの異なる可能性が高いコ
ロケートブロックの動きベクトルを予測候補として加えることで、予測ベクトルの選択肢が増え、符号化効率が高まる。参照画像の指定方法は、例えば、スライスヘッダにおいて指定された参照ピクチャインデックスrefIdxLXでも良いし、隣接ブロックの参照ピクチャインデックスrefIdxLXのうち最小のものを用いて指定しても良い。
FIG. 18 is a diagram showing blocks C and CBR in a reference image. Block CBR (block BR) is added to the merge candidate list mergeCandList[] with priority, and when block CBR does not have a motion vector (for example, an intra-prediction block) or when block CBR is located outside the picture, the motion vector of block C is added to the prediction vector candidate. By adding the motion vector of a collocated block that is likely to have different motion as a prediction candidate, the number of prediction vector options increases and the coding efficiency increases. The method of specifying the reference image may be, for example, the reference picture index refIdxLX specified in the slice header, or the smallest one of the reference picture indexes refIdxLX of adjacent blocks.

例えばマージ候補導出部30361は、ブロックCの位置(xColCtr,yColCtr)とブロックCBRの位置(xColBr、yColBr)を、以下の式で導出してもよい。 For example, the merge candidate derivation unit 30361 may derive the position of block C (xColCtr, yColCtr) and the position of block CBR (xColBr, yColBr) using the following formula.

xColCtr = xCb+(bW>>1)
yColCtr = yCb+(bH>>1)
xColBr = xCb+bW
yColBr = yCb+bH
ここで、(xCb,yCb)は対象ブロックの左上座標、(bW,bH)は対象ブロックの幅と高さである。なお、bW, bHは、cbWidth、cbHeightとも記載する。
ブロックCBRが利用可能であればブロックCBRの動きベクトルを利用してマージ候補COLを
導出する。ブロックCBRが利用可能でなければブロックCを使用してCOLを導出する。
xColCtr = xCb + (bW>>1)
yColCtr = yCb + (bH>>1)
xColBr = xCb+bW
yColBr = yCb + bH
Here, (xCb, yCb) are the upper left coordinates of the target block, and (bW, bH) are the width and height of the target block. Note that bW and bH are also written as cbWidth and cbHeight.
If the block CBR is available, the motion vector of the block CBR is used to derive the merge candidate COL. If the block CBR is not available, the block C is used to derive COL.

(タイル境界を時間マージ候補導出処理の構成)
マージ候補導出部30361(時間動き予測部、時間動きベクトル導出部)は、参照メモリ
中の動きベクトルをCTUライン単位で管理し、対象CTUに必要な範囲のみを内部メモリにフェッチすることが好適である。このときマージ候補導出部30361は、フェッチした
領域以外をアクセスしないように、ブロックCBRの位置(xColBr、yColBr)が対象CTU
ラインを超える場合にはブロックBRを利用せず、以下の処理によりブロックCを利用する
(Configuration of tile boundary time merge candidate derivation process)
The merge candidate derivation unit 30361 (temporal motion prediction unit, temporal motion vector derivation unit) preferably manages the motion vectors in the reference memory in units of CTU lines, and fetches only the range required for the target CTU to the internal memory. At this time, the merge candidate derivation unit 30361 checks whether the position (xColBr, yColBr) of the block CBR is within the range of the target CTU so as not to access areas other than the fetched area.
When the line is crossed, block BR is not used, and block C is used according to the following process.

以下、タイル内座標を用いて対象ブロックの左上座標を処理する場合の処理例を示す。以下の処理では、(yCb>>CtbLog2SizeY)==(yColBr>>CtbLog2SizeY)により、同じCTUラ
インと判定される場合には参照位置(xRef, yRef)に(xColBr, yColBr)を用い、それ以外では(xColCtr, yColCtr)を用いる。さらに、下記の例のように3bit右シフトの後で3bit左シフトすることで8*8単位にアクセスを制限してもよい。なお、参照ピクチャメモリ上の
動きベクトルを参照する場合に、タイル左上座標を参照位置に加算し画面内座標の参照位置を導出するが、この動作は、参照位置の量子化(シフト)の前でも後でもよい。
Below is a processing example in which the upper left coordinate of the target block is processed using the coordinates in the tile. In the following processing, if it is determined that the CTU line is the same because (yCb>>CtbLog2SizeY)==(yColBr>>CtbLog2SizeY), (xColBr, yColBr) is used as the reference position (xRef, yRef), and (xColCtr, yColCtr) is used otherwise. Furthermore, as in the example below, access may be restricted to 8*8 units by shifting 3 bits to the right and then shifting 3 bits to the left. When referring to a motion vector in the reference picture memory, the coordinates of the upper left tile are added to the reference position to derive the reference position in the coordinates in the screen, but this operation may be performed before or after quantization (shifting) of the reference position.

xColBr = xCbInTile + cbWidth
yColBr = yCbInTile + cbHeight
xColCtr = xCbInTile + (cbWidth>>1)
yColCtr = yCbInTile + (cbHeight>>1)
if (((yCb>>CtbLog2SizeY)==(yColBr>>CtbLog2SizeY)) && (yColBr<hPict) && (xColBr<wPict)) {
// (xColBr, yColBr)を用いて参照ピクチャの動きベクトルを参照する。例えば、下記(xRef, yRef)を参照。
xColBr = xCbInTile + cbWidth
yColBr = yCbInTile + cbHeight
xColCtr = xCbInTile + (cbWidth>>1)
yColCtr = yCbInTile + (cbHeight>>1)
if (((yCb>>CtbLog2SizeY)==(yColBr>>CtbLog2SizeY)) &&(yColBr<hPict)&&(xColBr<wPict)) {
// Use (xColBr, yColBr) to look up the motion vector of the reference picture. For example, see (xRef, yRef) below.

xRef = ((xColBr>>3)<<3)+xTile[TileId]
yRef = ((yColBr>>3)<<3)+yTile[TileId]
}
else {
// (xColCtr, yColCtr)を用いて参照ピクチャの動きベクトルを参照する。例えば、
xRef = ((xColCtr>>3)<<3)+xTile[TileId]
yRef = ((yColCtr>>3)<<3)+yTile[TileId]
}
図40は、参照ピクチャのタイル分割と対象ピクチャのタイル分割が等しい場合である。この場合には、対象ピクチャ内のCTU座標と、参照ピクチャ内のCTU座標によって、画面内のCTU座標を導出することができる。また、タイル内のCTUラインごとにMVメモリを
管理する場合において、画面内にあってもタイル内にないCTUラインのMVメモリは参
照することが難しい。したがって、本実施形態では参照範囲をタイル内に限定する。図39(a)に示す。
xRef = ((xColBr>>3)<<3)+xTile[TileId]
yRef = ((yColBr>>3)<<3)+yTile[TileId]
}
else {
// Use (xColCtr, yColCtr) to look up the motion vector of the reference picture. For example,
xRef = ((xColCtr>>3)<<3)+xTile[TileId]
yRef = ((yColCtr>>3)<<3)+yTile[TileId]
}
FIG. 40 shows a case where the tile division of the reference picture and the tile division of the target picture are equal. In this case, the CTU coordinates in the screen are derived from the CTU coordinates in the target picture and the CTU coordinates in the reference picture. In addition, when managing the MV memory for each CTU line in a tile, it is difficult to refer to the MV memory of a CTU line that is not in the tile even if it is in the screen. The range is limited to within a tile, as shown in Figure 39(a).

xColBr = xCbInTile+cbWidth
yColBr = yCbInTile+cbHeight
xColCtr = xCbInTile+(cbWidth>>1)
yColCtr = yCbInTile+(cbHeight>>1)
if (((yCb>>CtbLog2SizeY)==(yColBr>>CtbLog2SizeY)) && (yColBr<hTile[TileId]) &&(xColBr<wTile[TileId])) {
// (xColBr, yColBr)を用いて参照ピクチャの動きベクトルを参照する。例えば、下
記(xRef, yRef)を参照。
xColBr = xCbInTile+cbWidth
yColBr = yCbInTile+cbHeight
xColCtr = xCbInTile+(cbWidth>>1)
yColCtr = yCbInTile+(cbHeight>>1)
if (((yCb>>CtbLog2SizeY)==(yColBr>>CtbLog2SizeY)) &&(yColBr<hTile[TileId])&&(xColBr<wTile[TileId])) {
// Use (xColBr, yColBr) to look up the motion vector of the reference picture. For example, see (xRef, yRef) below.

xRef = ((xColBr>>3)<<3)+xTile[TileId]
yRef = ((yColBr>>3)<<3)+yTile[TileId]
}
else {
// (xColCtr, yColCtr)を用いて参照ピクチャの動きベクトルを参照する。例えば、
xRef = ((xColCtr>>3)<<3)+xTile[TileId]
yRef = ((yColCtr>>3)<<3)+yTile[TileId]
}
また、上記の処理は独立タイル(independent_tiles_flag=1)の場合に行っても良い。
xRef = ((xColBr>>3)<<3)+xTile[TileId]
yRef = ((yColBr>>3)<<3)+yTile[TileId]
}
else {
// Use (xColCtr, yColCtr) to look up the motion vector of the reference picture. For example,
xRef = ((xColCtr>>3)<<3)+xTile[TileId]
yRef = ((yColCtr>>3)<<3)+yTile[TileId]
}
The above process may also be performed in the case of independent tiles (independent_tiles_flag=1).

タイル境界を超える範囲を参照しないように、座標系として、予測ブロックの座標にタイル左上を原点とするタイル内座標(xCbInTile、yCbInTile)を用い、各参照位置がタイルサイズ(wTile, hTile)を超える場合には参照しないことが適当である。さらに、参照ピクチャメモリ上の動きベクトルを参照する場合に、タイル左上座標を参照位置に加算し画面内座標の参照位置を導出する。図31~図34に示すように、タイル内座標でCT分割を行うことにより、予測ブロックの左上座標をタイル内座標で導出し、時間予測で参照する位置を判定することにより、CTU境界にかかるかどうかを簡単に判定することができる効果を奏する。 To avoid referencing ranges beyond tile boundaries, it is appropriate to use intra-tile coordinates (xCbInTile, yCbInTile) with the top left corner of the tile as the coordinate system for the prediction block, and not reference each reference position if it exceeds the tile size (wTile, hTile). Furthermore, when referencing a motion vector in the reference picture memory, the upper left coordinate of the tile is added to the reference position to derive the reference position in intra-screen coordinates. As shown in Figures 31 to 34, by performing CT division in intra-tile coordinates, the upper left coordinate of the prediction block can be derived in intra-tile coordinates, and the position to be referenced in temporal prediction can be determined, which has the effect of easily determining whether or not it crosses a CTU boundary.

画面内座標を用いて対象ブロックの左上座標を処理する場合の処理例を示す。タイル内座標系を用いて処理する場合と異なり、タイル左上座標を減算してタイル内座標に変換した後(yColBr-yTile, xColBr-xTile)で、タイルサイズ(wTile, hTile)との比較を行い、タイルサイズを超えているか否かを判定する。また、タイル境界の判定においても、タイル内座標の対象ブロックの位置(yCb-yTile[TileId])と参照ブロックの位置(yColBr-yTile[TileId])をCTUサイズの対数CtbLog2SizeYで右シフトすることで判定を行う。 Here is an example of processing the top left coordinate of the target block using in-screen coordinates. Unlike processing using the in-tile coordinate system, the top left coordinate of the tile is subtracted and converted to in-tile coordinates (yColBr-yTile, xColBr-xTile), which are then compared with the tile size (wTile, hTile) to determine whether or not they exceed the tile size. The tile boundary is also determined by right-shifting the in-tile coordinates of the target block position (yCb-yTile[TileId]) and the reference block position (yColBr-yTile[TileId]) by the logarithm of the CTU size, CtbLog2SizeY.

xColBr = xCbInPic+cbWidth
yColBr = yCbInPic+cbHeight
xColCtr = xCbInPic+(cbWidth>>1)
yColCtr = yCbInPic+(cbHeight>>1)
if ((((yCb-yTile[TileId])>>CtbLog2SizeY)==((yColBr-yTile[TileId])>>CtbLog2SizeY)) && (yColBr<hPict) && (xColBr<wPict)) {
xRef = ((xColBr>>3)<<3)
yRef = ((yColBr>>3)<<3)
}
else {
xRef = ((xColCtr>>3)<<3)
yRef = ((yColCtr>>3)<<3)
}
図40は、参照ピクチャのタイル分割と対象ピクチャのタイル分割が等しい場合である。この場合、本実施形態では参照範囲をタイル内に限定する。図39(b)に処理の一例を示す。
xColBr = xCbInPic+cbWidth
yColBr = yCbInPic+cbHeight
xColCtr = xCbInPic+(cbWidth>>1)
yColCtr = yCbInPic+(cbHeight>>1)
if (((yCb-yTile[TileId])>>CtbLog2SizeY)==((yColBr-yTile[TileId])>>CtbLog2SizeY)) &&(yColBr<hPict)&&(xColBr<wPict)) {
xRef = ((xColBr>>3)<<3)
yRef = ((yColBr>>3)<<3)
}
else {
xRef = ((xColCtr>>3)<<3)
yRef = ((yColCtr>>3)<<3)
}
Fig. 40 shows a case where the tile division of the reference picture and the tile division of the target picture are equal. In this case, in this embodiment, the reference range is limited to within the tile. Fig. 39(b) shows an example of processing.

xColBr = xCbInPic+cbWidth
yColBr = yCbInPic+cbHeight
xColCtr = xCbInPic+(cbWidth>>1)
yColCtr = yCbInPic+(cbHeight>>1)
if ((((yCb-yTile[TileId])>>CtbLog2SizeY)==((yColBr-yTile[TileId])>>CtbLog2SizeY)) && ((yColBr-yTile[TileId])<hTile[TileId]) && ((xColBr-xTile[TileId])<wTile[TileId])) {
xRef = ((xColBr>>3)<<3)
yRef = ((yColBr>>3)<<3)
}
else {
xRef = ((xColCtr>>3)<<3)
yRef = ((yColCtr>>3)<<3)
}
上記の処理は、独立タイルの場合に行っても良い。
xColBr = xCbInPic+cbWidth
yColBr = yCbInPic+cbHeight
xColCtr = xCbInPic+(cbWidth>>1)
yColCtr = yCbInPic+(cbHeight>>1)
if (((yCb-yTile[TileId])>>CtbLog2SizeY)==((yColBr-yTile[TileId])>>CtbLog2SizeY)) &&((yColBr-yTile[TileId])<hTile[TileId])&&((xColBr-xTile[TileId])<wTile[TileId])) {
xRef = ((xColBr>>3)<<3)
yRef = ((yColBr>>3)<<3)
}
else {
xRef = ((xColCtr>>3)<<3)
yRef = ((yColCtr>>3)<<3)
}
The above process may also be performed in the case of independent tiles.

予測ブロックの座標を画面内座標からタイル内座標に変換することにより、タイル範囲にあるかどうか、及び、CTU境界にかかるかどうかを簡単に判定することができる効果を奏する。 By converting the coordinates of a predicted block from in-screen coordinates to in-tile coordinates, it becomes possible to easily determine whether the block is within the tile range and whether it crosses a CTU boundary.

(仮想CTUラインを用いる方法)
図14は、仮想CTUラインを設定して、参照ピクチャの動きベクトルを参照する場合の参
照範囲を示す図である。本構成では、参照ピクチャを仮想のCTUラインに分割し、対象ブロックに対応する仮想CTUラインの動きベクトルを参照する。
(Method using virtual CTU line)
14 is a diagram showing a reference range when a virtual CTU line is set and a motion vector of a reference picture is referred to. In this configuration, a reference picture is divided into virtual CTU lines, and a motion vector of the virtual CTU line corresponding to a target block is referred to.

一つの構成は、参照ピクチャを固定のCTUサイズで分割し、仮想CTUラインを設定する。 One configuration is to divide the reference picture into fixed CTU size and set virtual CTU lines.

図15は、整数画素ピクチャをCTUの整数倍に制限されないサイズのタイル(フレキシブ
ルタイル)に分割した場合の時間動き予測部の動作を示すフローチャートである。
FIG. 15 is a flowchart showing the operation of the temporal motion prediction unit when an integer pixel picture is divided into tiles (flexible tiles) with a size not limited to an integer multiple of the CTU.

S3001:画面内座標導出
時間動き予測部は、タイル内座標系の(xCbInTile, yCbInTile)から、画面内座標のCTU座標(xCtbInPic, yCtbInPic)、右下座標(xColBr, yColBr)と中心座標(xColCtr, yColCtr)を導出する。なお、タイル内座標系でCT分割(QT, BT, TTなどのマルチツリー分割)を行わない場合などタイル内座標系で処理される場合には、タイル内座標系から画面内座標系への変換は省略できる。
xCtbInPic = xCtbInTile+xTile[currTileId]
yCtbInPic = yCtbInTile+yTile[currTileId]
xColBrInPic = xCbInTile+cbWidth+xTile[currTileId]
yColBrInPic = yCbInTile+cbHeight+yTile[currTileId]
xColCtrInPic = xCbInTile+(cbWidth>>1)+xTile[currTileId]
yColCtrInPic = yCbInTile+(cbHeight>>1)+yTile[currTileId]
S3003:仮想CTUライン内判定
画面内座標で、画面内右下座標(xColBrInPic, yColBrInPic)が、仮想CTUライン内であ
るか否かを判定する。ここでは、さらに右下座標(xColBrInPic, yColBrInPic)が、仮想CT
Uライン内かつ画面内にあるかを判定する。
S3001: Derive in-screen coordinates The temporal motion prediction unit derives the CTU coordinates (xCtbInPic, yCtbInPic), bottom right coordinate (xColBr, yColBr), and center coordinates (xColCtr, yColCtr) of the in-screen coordinates from (xCbInTile, yCbInTile) in the in-tile coordinate system. Note that when processing is performed in the in-tile coordinate system, such as when CT division (multi-tree division such as QT, BT, TT) is not performed in the in-tile coordinate system, conversion from the in-tile coordinate system to the in-screen coordinate system can be omitted.
xCtbInPic = xCtbInTile+xTile[currTileId]
yCtbInPic = yCtbInTile+yTile[currTileId]
xColBrInPic = xCbInTile+cbWidth+xTile[currTileId]
yColBrInPic = yCbInTile+cbHeight+yTile[currTileId]
xColCtrInPic = xCbInTile+(cbWidth>>1)+xTile[currTileId]
yColCtrInPic = yCbInTile+(cbHeight>>1)+yTile[currTileId]
S3003: Judgment within virtual CTU line It is judged whether the bottom right coordinate (xColBrInPic, yColBrInPic) of the screen is within the virtual CTU line.
Determine whether it is within the U line and the screen.

判定式=((yColBrInPic>>CtbLog2SizeY) == (yVirCtb>>CtbLog2SizeY)) && (yColBr<hPict) && (xColBr<wPict)
S3004:参照ピクチャの動きベクトル参照
時間動き予測部は、判定式が真の場合には、右下座標の動きベクトルを参照する。ここではさらに座標を8x8などの単位に間引いて参照しても良い。
Judgment formula = ((yColBrInPic>>CtbLog2SizeY) == (yVirCtb>>CtbLog2SizeY)) &&(yColBr<hPict)&&(xColBr<wPict)
S3004: Referencing the motion vector of the reference picture When the judgment formula is true, the temporal motion prediction unit refers to the motion vector of the lower right coordinate. Here, the coordinates may be further thinned to a unit such as 8x8 for reference. .

((xColBrInPic>>3)<<3, (yColBrInPic>>3)<<3)
S3005:判定式が偽の場合には、中心座標(xColCtrInPic, yColCtrInPic)の動きベクトルを参照する。ここではさらに座標を8x8などの単位で間引いて参照しても良い。
((xColBrInPic>>3)<<3, (yColBrInPic>>3)<<3)
S3005: If the determination formula is false, the motion vector at the center coordinates (xColCtrInPic, yColCtrInPic) is referenced. Here, the coordinates may be thinned out to units such as 8x8 before reference.

((xColCtrInPic>>3)<<3, (yColCtrInPic>>3)<<3)
さらに、中心座標の動きベクトルを参照する前に、以下の判定式を用いて、参照座標が仮想CTUライン内であるか否かを判定してもよい。
((xColCtrInPic>>3)<<3, (yColCtrInPic>>3)<<3)
Furthermore, before referring to the motion vector of the center coordinates, it may be determined whether the reference coordinates are within the virtual CTU line using the following determination formula.

判定式=(yColCtrInPic>yVirCtbB)
図16は、仮想CTUラインを設定して、参照ピクチャの動きベクトルを参照する場合の参
照範囲を示す図である。本構成では、参照ピクチャをVBSize×VBSizeサイズ単位(Log2VBSize=log2(VBSize))に分割し、対象CTUからみて、この区切り位置を参照CTUラインの上側座標yCtbInPicに設定する、この上側座標yCtbInPicから所定の範囲を、参照ピクチャから参照可能な動きベクトルの範囲に設定する。
Judgment formula = (yColCtrInPic>yVirCtbB)
16 is a diagram showing a reference range when a virtual CTU line is set and a motion vector of a reference picture is referred to. In this configuration, the reference picture is set in VBSize×VBSize size units (Log2VBSize=log2(VBSize)). From the perspective of the target CTU, this separator position is set to the upper coordinate yCtbInPic of the reference CTU line, and a predetermined range from this upper coordinate yCtbInPic is set as the range of motion vectors that can be referenced from the reference picture.

図17は、整数画素ピクチャをCTUの整数倍に制限されないサイズのタイル(フレキシブ
ルタイル)に分割した場合の時間動き予測部の動作を示すフローチャートである。
FIG. 17 is a flowchart showing the operation of the temporal motion prediction unit when an integer pixel picture is divided into tiles (flexible tiles) with a size not limited to an integer multiple of the CTU.

S3001:画面内座標導出
時間動き予測部は、タイル内座標系の(xCbInTile, yCbInTile)から、画面内座標のCTU座標(xCtbInPic, yCtbInPic)、右下座標(xColBr, yColBr)と中心座標(xColCtr, yColCtr)を導出する。なお、タイル内座標系でCT分割(QT, BT, TTなどのマルチツリー分割)を行わない場合など画面内座標系で処理が行われている場合には、タイル内座標系から画面内座標系への変換は省略できる。
xCtbInTile = (xCbInTile>>Log2VBSize)<<Log2VBSize
yCtbInTile = (yCbInTile>>Log2VBSize)<<Log2VBSize
xCtbInPic = xCtbInTile+xTile[currTileId]
yCtbInPic = yCtbInTile+yTile[currTileId]
xColBrInPic = xCbInTile+cbWidth+xTile[currTileId]
yColBrInPic = yCbInTile+cbHeight+yTile[currTileId]
xColCtrInPic = xCbInTile+(cbWidth>>1)+xTile[currTileId]
yColCtrInPic = yCbInTile+(cbHeight>>1)+yTile[currTileId]
S3002:仮想CTUライン導出
続いて、時間動き予測部は、yCtbInPicをVBSize単位の座標に変換し、仮想CTUラインの上側座標yVirCtbTを導出する。また、所定のサイズ(ここではCTUサイズctuSize)だけ下の位置の下側座標yVirCtbBを設定する。
yVirCtbT = ((yCtbInPic>>VBLog2Size)<<VBLog2Size)
yVirCtbB = ((yCtbInPic>>VBLog2Size)<<VBLog2Size)+ctuSize
なお、VBLog2SizeをCtbLog2SizeYに設定すると、参照ピクチャを固定のCTUサイズ単位で分割した場合と同じ処理となる。
なお、上記では参照範囲をCTUサイズに限定していたが、それより大きいサイズでもよい。例えば、参照ピクチャ上において、対象CTUサイズ+M画素の範囲の動きベクトル
を参照する場合は以下の式を用いる。
yVirCtbB = ((yCtbInPic>>VBLog2Size)<<VBLog2Size)+ctuSize+M
例えばM=16。
S3001: Derive in-screen coordinates The temporal motion prediction unit derives the CTU coordinates (xCtbInPic, yCtbInPic), bottom right coordinate (xColBr, yColBr), and center coordinates (xColCtr, yColCtr) of the in-screen coordinates from (xCbInTile, yCbInTile) in the in-tile coordinate system. Note that if processing is performed in the in-screen coordinate system, such as when CT division (multi-tree division such as QT, BT, TT) is not performed in the in-tile coordinate system, conversion from the in-tile coordinate system to the in-screen coordinate system can be omitted.
xCtbInTile = (xCbInTile>>Log2VBSize)<<Log2VBSize
yCtbInTile = (yCbInTile>>Log2VBSize)<<Log2VBSize
xCtbInPic = xCtbInTile+xTile[currTileId]
yCtbInPic = yCtbInTile+yTile[currTileId]
xColBrInPic = xCbInTile+cbWidth+xTile[currTileId]
yColBrInPic = yCbInTile+cbHeight+yTile[currTileId]
xColCtrInPic = xCbInTile+(cbWidth>>1)+xTile[currTileId]
yColCtrInPic = yCbInTile+(cbHeight>>1)+yTile[currTileId]
S3002: Derive Virtual CTU Line Next, the temporal motion prediction unit converts yCtbInPic into coordinates in VBSize units, and derives the upper coordinate yVirCtbT of the virtual CTU line. It also sets the lower coordinate yVirCtbB, which is a predetermined size (here, the CTU size ctuSize) below.
yVirCtbT = ((yCtbInPic>>VBLog2Size)<<VBLog2Size)
yVirCtbB = ((yCtbInPic>>VBLog2Size)<<VBLog2Size)+ctuSize
Note that when VBLog2Size is set to CtbLog2SizeY, the processing is the same as when the reference picture is divided into fixed CTU size units.
In the above, the reference range is limited to the CTU size, but it may be a larger size. For example, when referring to a motion vector in a range of the target CTU size + M pixels on the reference picture, the following formula is used.
yVirCtbB = ((yCtbInPic>>VBLog2Size)<<VBLog2Size)+ctuSize+M
For example, M=16.

S3003:仮想CTUライン内判定
時間動き予測部は、画面内座標で、右下座標(xColBrInPic, yColBrInPic)が、仮想CTU
ライン内であるか否かを判定する。ここでは、さらに右下座標(xColBrInPic, yColBrInPic)が、仮想CTUライン内かつ画面内にあるかを判定する。仮想CTUライン内の場合には、その参照位置(xColBrInPic,yColBrInPic)の動きベクトルを参照する。
S3003: Virtual CTU In-line Determination The time motion prediction unit determines whether the bottom right coordinate (xColBrInPic, yColBrInPic) is within the virtual CTU
It is determined whether the bottom right coordinate (xColBrInPic, yColBrInPic) is within the virtual CTU line and within the screen. If it is within the virtual CTU line, the motion vector of the reference position (xColBrInPic, yColBrInPic) is referenced.

判定式=(yColBrInPic<yVirCtbB) && (yColBr<hPict) && (xColBr<wPict)
S3004:参照ピクチャの動きベクトル参照
時間動き予測部は、判定式が真の場合には、参照ピクチャの右下座標の動きベクトルを参照する。ここではさらに座標を8x8などの単位で間引いて参照しても良い。
Judgment formula = (yColBrInPic<yVirCtbB) &&(yColBr<hPict)&&(xColBr<wPict)
S3004: Referencing the motion vector of the reference picture When the judgment formula is true, the temporal motion prediction unit refers to the motion vector of the lower right coordinate of the reference picture. Here, the coordinates are further thinned out to a unit of 8x8, etc. That's fine.

((xColBrInPic>>3)<<3, (yColBrInPic>>3)<<3)
以下、図示しないが以下の処理を行っても良い。
((xColBrInPic>>3)<<3, (yColBrInPic>>3)<<3)
Although not shown, the following process may be carried out.

S3005:参照ピクチャの動きベクトル参照2
時間動き予測部は、判定式が偽の場合には、参照ピクチャの中心座標(xColCtrInPic, yColCtrInPic)の動きベクトルを参照する。ここではさらに座標を8x8などの単位で間引い
て参照しても良い。
S3005: Motion vector reference 2 of reference picture
If the judgment formula is false, the temporal motion prediction unit refers to the motion vector at the center coordinates (xColCtrInPic, yColCtrInPic) of the reference picture. Here, the coordinates may be thinned out to a unit of 8x8 or the like.

((xColCtrInPic>>3)<<3, (yColCtrInPic>>3)<<3)
さらに、中心座標の動きベクトルを参照する前に、以下の判定式を用いて、参照座標が仮想CTUライン内であるか否かを判定してもよい。
((xColCtrInPic>>3)<<3, (yColCtrInPic>>3)<<3)
Furthermore, before referring to the motion vector of the center coordinates, it may be determined whether the reference coordinates are within the virtual CTU line using the following determination formula.

判定式=(yColCtrInPic<yVirCtbB)
以上の処理の擬似コードは以下のとおりである。
if ((yColBrInPic<yVirCtbB) && (yColBr<hPict) && (xColBr<wPict)) {
(xColBrInPic, yColBrInPic)を用いて動きベクトルを参照する
// 例えば8x8 単位にラウンドした以下の座標でもよい。
Judgment formula = (yColCtrInPic<yVirCtbB)
The pseudo code for the above process is as follows:
if ((yColBrInPic<yVirCtbB) &&(yColBr<hPict)&&(xColBr<wPict)) {
Look up the motion vector using (xColBrInPic, yColBrInPic)
// For example, the following coordinates rounded to 8x8 units are acceptable:

// ((xColBrInPic>>3)<<3, (yColBrInPic>>3)<<3)
}
else if (yColCtrInPic<yVirCtbB) { // ブロック中心で仮想CTUライン境界判定
(xColCtr, yColCtr)を用いて動きベクトルを参照する
// 例えば8x8単位にラウンドした以下の座標でもよい。
// ((xColBrInPic>>3)<<3, (yColBrInPic>>3)<<3)
}
else if (yColCtrInPic<yVirCtbB) { // Determine the virtual CTU line boundary at the block center
Look up the motion vector using (xColCtr, yColCtr)
// For example, the following coordinates rounded to 8x8 units are acceptable.

// ((xColCtr>>3)<<3, (yColCtr>>3)<<3)
}
以上の構成の時間動き予測部によれば、参照ブロックのピクチャ内座標yColBrInPicと
、対象ピクチャのピクチャ内座標から導出した仮想CTU座標yVirCtbBを比較して、参照ブ
ロックの参照可能性を判定する。ここでは、仮想CTU座標yVirCtbBの導出において、仮想CTU座標を、VBSizeの整数倍とするためにVBLog2Sizeによる右シフトと左シフトを行う。さらに、参照ブロックのピクチャ内座標yColBrInPicが、対象ピクチャのピクチャ内座標か
ら導出した仮想CTU座標yVirCtbBよりも小さい場合に、参照ピクチャの動きベクトルを参
照する。これによって、対象ピクチャと参照ピクチャのCTUサイズが異なる場合においても、参照ピクチャにおいて動きベクトルを参照する範囲を仮想CTUラインの範囲に制限されているので、参照ピクチャ上の動きベクトルを予めフェッチして処理することが可
能であり、高速に処理が可能である効果を奏する。また、参照ピクチャにおいて動きベクトルを参照する範囲である仮想CTUラインの設定において、できるだけ対象CTUと同じ位置であることを保ちながら、CTUラインを設定することができる。
// ((xColCtr>>3)<<3, (yColCtr>>3)<<3)
}
According to the temporal motion prediction unit having the above configuration, the in-picture coordinate yColBrInPic of the reference block is compared with the virtual CTU coordinate yVirCtbB derived from the in-picture coordinate of the target picture to determine the referenceability of the reference block. In the derivation of the virtual CTU coordinate yVirCtbB, the virtual CTU coordinate is shifted right and left by VBLog2Size to make it an integer multiple of VBSize. If the virtual CTU coordinate yVirCtbB derived from the above is smaller than the virtual CTU coordinate yVirCtbB, the motion vector of the reference picture is referenced. This allows the range of motion vectors in the reference picture to be referenced to be determined by the virtual CTU coordinate yVirCtbB even if the CTU sizes of the target picture and the reference picture are different. Since it is limited to the range of the CTU line, it is possible to pre-fetch and process the motion vector on the reference picture, which has the effect of enabling high-speed processing. In addition, when setting a virtual CTU line, which is the range for referencing a motion vector in a reference picture, the CTU line can be set while maintaining the same position as the target CTU as much as possible.

(変形例)
上記ではVBSizexVBSizeの粒度で、仮想CTUラインを設定したが、仮想CTUラインの粒度(例えば8×8、つまりVBSize=8)が、CTUサイズの粒度(ctuUnitSize)以
下である場合には、仮想CTUラインの導出においてVBSizeに関するシフト処理を省略することができる。
(Modification)
In the above, the virtual CTU line was set with a granularity of VBSize x VBSize, but if the granularity of the virtual CTU line (for example, 8 x 8, i.e. VBSize = 8) is less than or equal to the granularity of the CTU size (ctuUnitSize), the shift processing related to VBSize can be omitted when deriving the virtual CTU line.

図18は、整数画素ピクチャをCTUの整数倍に制限されないサイズのタイル(フレキシブ
ルタイル)に分割する場合に、時間動き予測部の動作を示すフローチャートである。この例ではシフト処理を省略している。この場合のS3002の仮想CTUライン導出は、以下の動作であってもよい。
18 is a flowchart showing the operation of the temporal motion prediction unit when dividing an integer pixel picture into tiles (flexible tiles) of a size not limited to an integer multiple of a CTU. In this example, shift processing is omitted. In this case, the virtual CTU line derivation in S3002 may be the following operation.

仮想CTUラインの上側座標yVirCtbTを、対象CTU座標の画面内座標から導出する。こ
こで対象CTU座標がタイル内座標である場合には、対象CTUのタイル内座標(タイル座標系での対象CTU座標)とタイルの画面内座標を加算して、対象CTUの画面内座標を導出して処理する。また、所定のサイズ(ここではCTUサイズctuSize)だけ下の位
置の下側座標yVirCtbBを設定する。ここではVBSizeに関するシフト処理が省略されている。
yVirCtbT = yCtbInPic
yVirCtbB = yCtbInPic+ctuSize
続く処理の擬似コードは以下のとおりである。
if ((yColBrInPic<yVirCtbB) && (yColBr<hPict) && (xColBr<wPict)) {
(xColBrInPic, yColBrInPic)を用いて動きベクトルを参照する
// 例えば8x8 単位にラウンドした以下の座標でもよい。
The upper coordinate yVirCtbT of the virtual CTU line is derived from the in-screen coordinate of the target CTU coordinate. If the target CTU coordinate is a coordinate in a tile, the in-tile coordinate of the target CTU (the target CTU coordinate in the tile coordinate system) and the in-screen coordinate of the tile are added to derive and process the in-screen coordinate of the target CTU. In addition, the lower coordinate yVirCtbB is set at a position lower by a predetermined size (here, the CTU size ctuSize). Here, the shift processing related to VBSize is omitted.
yVirCtbT = yCtbInPic
yVirCtbB = yCtbInPic+ctuSize
The pseudocode for the process that follows is as follows:
if ((yColBrInPic<yVirCtbB) &&(yColBr<hPict)&&(xColBr<wPict)) {
Look up the motion vector using (xColBrInPic, yColBrInPic)
// For example, the following coordinates rounded to 8x8 units are acceptable:

// ((xColBrInPic>>3)<<3, (yColBrInPic>>3)<<3)
}
else if (yColCtrInPic<yVirCtbB) { // ブロック中心で仮想CTUライン境界判定
(xColCtr, yColCtr)を用いて動きベクトルを参照する
// 例えば8x8単位にラウンドした以下の座標でもよい。
// ((xColBrInPic>>3)<<3, (yColBrInPic>>3)<<3)
}
else if (yColCtrInPic<yVirCtbB) { // Determine the virtual CTU line boundary at the block center
Look up the motion vector using (xColCtr, yColCtr)
// For example, the following coordinates rounded to 8x8 units are acceptable.

// ((xColCtr>>3)<<3, (yColCtr>>3)<<3)
以上の構成の時間動き予測部によれば、参照ブロックのピクチャ内座標yColBrInPicと
、対象ピクチャのピクチャ内座標から導出した仮想CTU座標yVirCtbBを比較して、参照ブ
ロックの参照可能性を判定する。
// ((xColCtr>>3)<<3, (yColCtr>>3)<<3)
The temporal motion prediction unit configured as above compares the intra-picture coordinate yColBrInPic of the reference block with the virtual CTU coordinate yVirCtbB derived from the intra-picture coordinate of the target picture to determine the referenceability of the reference block.

ループフィルタ305は、符号化ループ内に設けたフィルタで、ブロック歪やリンギング
歪を除去し、画質を改善するフィルタである。ループフィルタ305は、加算部312が生成したCUの復号画像に対し、デブロッキングフィルタ、サンプル適応オフセット(SAO)、適
応ループフィルタ(ALF)等のフィルタを施す。
The loop filter 305 is a filter provided in the encoding loop, which removes block distortion and ringing distortion to improve image quality. The loop filter 305 applies filters such as a deblocking filter, a sample adaptive offset (SAO), and an adaptive loop filter (ALF) to the decoded image of the CU generated by the adder 312.

参照ピクチャメモリ306は、加算部312が生成したCUの復号画像を、対象ピクチャ及び対象CU毎に予め定めた位置に記憶する。 The reference picture memory 306 stores the decoded image of the CU generated by the adder 312 in a predetermined location for each target picture and target CU.

予測パラメータメモリ307は、復号対象のCTUあるいはCU毎に予め定めた位置に予測パラメータを記憶する。具体的には、予測パラメータメモリ307は、パラメータ復号部302が復号したパラメータ及びエントロピー復号部301が分離した予測モードpredMode等を記憶す
る。
The prediction parameter memory 307 stores prediction parameters at a predetermined position for each CTU or CU to be decoded. Specifically, the prediction parameter memory 307 stores the parameters decoded by the parameter decoding unit 302 and the prediction mode predMode separated by the entropy decoding unit 301.

予測画像生成部308には、予測モードpredMode、予測パラメータ等が入力される。また
、予測画像生成部308は、参照ピクチャメモリ306から参照ピクチャを読み出す。予測画像生成部308は、予測モードpredModeが示す予測モードで、予測パラメータと読み出した参
照ピクチャ(参照ピクチャブロック)を用いてブロックもしくはサブブロックの予測画像を生成する。ここで、参照ピクチャブロックとは、参照ピクチャ上の画素の集合(通常矩形であるのでブロックと呼ぶ)であり、予測画像を生成するために参照する領域である。
The prediction image generating unit 308 receives a prediction mode predMode, prediction parameters, and the like. The prediction image generating unit 308 also reads a reference picture from the reference picture memory 306. The prediction image generating unit 308 generates a prediction image of a block or sub-block using the prediction parameters and the read reference picture (reference picture block) in the prediction mode indicated by the prediction mode predMode. Here, the reference picture block is a set of pixels on the reference picture (usually rectangular, so called a block), and is an area to be referenced for generating a prediction image.

逆量子化・逆変換部311は、エントロピー復号部301から入力された量子化変換係数を逆量子化して変換係数を求める。この量子化変換係数は、符号化処理において、予測誤差に対してDCT(Discrete Cosine Transform、離散コサイン変換)、DST(Discrete Sine Transform、離散サイン変換)、KLT(Karyhnen Loeve Transform、カルーネンレーベ変換)
等の周波数変換を行い量子化して得られる係数である。逆量子化・逆変換部311は、求め
た変換係数について逆DCT、逆DST、逆KLT等の逆周波数変換を行い、予測誤差を算出する
。逆量子化・逆変換部311は予測誤差を加算部312に出力する。
The inverse quantization and inverse transform unit 311 inverse quantizes the quantized transform coefficients input from the entropy decoding unit 301 to obtain transform coefficients. In the encoding process, the quantized transform coefficients are transformed using a discrete cosine transform (DCT), a discrete sine transform (DST), a Karyhnen Loeve transform (KLT), etc.
The inverse quantization and inverse transform unit 311 performs inverse frequency transform such as inverse DCT, inverse DST, and inverse KLT on the obtained transform coefficients to calculate a prediction error. The inverse quantization and inverse transform unit 311 outputs the prediction error to the adder 312.

加算部312は、予測画像生成部308から入力されたブロックの予測画像と逆量子化・逆変換部311から入力された予測誤差を画素毎に加算して、ブロックの復号画像を生成する。
加算部312はブロックの復号画像を参照ピクチャメモリ306に記憶し、また、ループフィルタ305に出力する。
The adder 312 adds, for each pixel, the predicted image of the block input from the predicted image generation unit 308 and the prediction error input from the inverse quantization and inverse transform unit 311 to generate a decoded image of the block.
The adder 312 stores the decoded image of the block in the reference picture memory 306 , and also outputs it to the loop filter 305 .

(動画像符号化装置の構成)
次に、本実施形態に係る動画像符号化装置11の構成について説明する。図19は、本実施形態に係る動画像符号化装置11の構成を示すブロック図である。動画像符号化装置11は、予測画像生成部101、減算部102、変換・量子化部103、逆量子化・逆変換部105、加算部106、ループフィルタ107、予測パラメータメモリ(予測パラメータ記憶部、フレームメモリ)108、参照ピクチャメモリ(参照画像記憶部、フレームメモリ)109、符号化パラメータ決定部110、パラメータ符号化部111、エントロピー符号化部104を含んで構成される。
(Configuration of the video encoding device)
Next, the configuration of the video encoding device 11 according to this embodiment will be described. Fig. 19 is a block diagram showing the configuration of the video encoding device 11 according to this embodiment. The video encoding device 11 includes a prediction image generating unit 101, a subtraction unit 102, a transformation/quantization unit 103, an inverse quantization/inverse transformation unit 105, an addition unit 106, a loop filter 107, a prediction parameter memory (prediction parameter storage unit, frame memory) 108, a reference picture memory (reference image storage unit, frame memory) 109, an encoding parameter determining unit 110, a parameter encoding unit 111, and an entropy encoding unit 104.

予測画像生成部101は画像Tの各ピクチャを分割した領域であるCU毎に予測画像を生成
する。予測画像生成部101は既に説明した予測画像生成部308と同じ動作であり、説明を省略する。
The predicted image generating unit 101 generates a predicted image for each CU, which is an area obtained by dividing each picture of the image T. The predicted image generating unit 101 operates in the same manner as the predicted image generating unit 308 already described, and therefore a description thereof will be omitted.

減算部102は、予測画像生成部101から入力されたブロックの予測画像の画素値を、画像Tの画素値から減算して予測誤差を生成する。減算部102は予測誤差を変換・量子化部103に出力する。 The subtraction unit 102 subtracts the pixel values of the predicted image of the block input from the predicted image generation unit 101 from the pixel values of image T to generate a prediction error. The subtraction unit 102 outputs the prediction error to the transformation and quantization unit 103.

変換・量子化部103は、減算部102から入力された予測誤差に対し、周波数変換によって変換係数を算出し、量子化によって量子化変換係数を導出する。変換・量子化部103は、
量子化変換係数をエントロピー符号化部104及び逆量子化・逆変換部105に出力する。
The transform/quantization unit 103 calculates transform coefficients by frequency transforming the prediction error input from the subtraction unit 102, and derives quantized transform coefficients by quantizing the prediction error.
The quantized transform coefficients are output to the entropy coding unit 104 and the inverse quantization and inverse transform unit 105 .

逆量子化・逆変換部105は、動画像復号装置31における逆量子化・逆変換部311(図5)
と同じであり、説明を省略する。算出した予測誤差は加算部106に出力される。
The inverse quantization and inverse transform unit 105 is a unit similar to the inverse quantization and inverse transform unit 311 (FIG. 5) in the video decoding device 31.
The calculated prediction error is output to the adder 106.

パラメータ符号化部111は、ヘッダ符号化部1110、CT情報符号化部1111、CU符号化部1112(予測モード符号化部)、エントロピー符号化部104、および図示しないインター予測パラメータ符号化部112とイントラ予測パラメータ符号化部113を備えている。CU符号化部1112はさらにTU符号化部1114を備えている。 The parameter coding unit 111 includes a header coding unit 1110, a CT information coding unit 1111, a CU coding unit 1112 (prediction mode coding unit), an entropy coding unit 104, and an inter-prediction parameter coding unit 112 and an intra-prediction parameter coding unit 113 (not shown). The CU coding unit 1112 further includes a TU coding unit 1114.

以下、各モジュールの概略動作を説明する。パラメータ符号化部111はヘッダ情報、分
割情報、予測情報、量子化変換係数等のパラメータの符号化処理を行う。
The operation of each module will be outlined below: The parameter coding unit 111 performs coding processing of parameters such as header information, division information, prediction information, and quantized transformation coefficients.

CT情報符号化部1111は、QT、MT(BT、TT)分割情報等を符号化する。 The CT information encoding unit 1111 encodes QT, MT (BT, TT) division information, etc.

CU符号化部1112はCU情報、予測情報、TU分割フラグsplit_transform_flag、CU残差フラグcbf_cb、cbf_cr、cbf_luma等を符号化する。 The CU encoding unit 1112 encodes CU information, prediction information, the TU split flag split_transform_flag, the CU residual flags cbf_cb, cbf_cr, cbf_luma, etc.

TU符号化部1114は、TUに予測誤差が含まれている場合に、QP更新情報(量子化補正値)と量子化予測誤差(residual_coding)を符号化する。 When a TU contains a prediction error, the TU encoding unit 1114 encodes the QP update information (quantization correction value) and the quantized prediction error (residual_coding).

エントロピー符号化部104は、供給元から供給されるシンタックス要素をバイナリデー
タに変換し、CABAC等のエントロピー符号化方式により符号化データを生成し、出力する
。図19に示す例では、シンタックス要素の供給元は、CT情報符号化部1111、CU符号化部1112である。シンタックス要素は、インター予測パラメータ(予測モードpredMode、マージフラグmerge_flag、マージインデックスmerge_idx、インター予測識別子inter_pred_idc
、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLX)、イントラ予測パラメータ(prev_intra_luma_pred_flag、mpm_idx、rem_selected_mode_flag、rem_selected_mode、rem_non_selected_mode、)、量子化変換係数等
である。
The entropy encoding unit 104 converts the syntax elements supplied from the supply source into binary data, generates encoded data by an entropy encoding method such as CABAC, and outputs the encoded data. In the example shown in FIG. 19, the syntax elements are supplied from a CT information encoding unit 1111 and a CU encoding unit 1112. The syntax elements include inter prediction parameters (prediction mode predMode, merge flag merge_flag, merge index merge_idx, inter prediction identifier inter_pred_idc, etc.) and the like.
, reference picture index refIdxLX, predicted vector index mvp_LX_idx, difference vector mvdLX), intra prediction parameters (prev_intra_luma_pred_flag, mpm_idx, rem_selected_mode_flag, rem_selected_mode, rem_non_selected_mode), quantized transform coefficients, etc.

加算部106は、予測画像生成部101から入力されたブロックの予測画像の画素値と逆量子化・逆変換部105から入力された予測誤差を画素毎に加算して復号画像を生成する。加算
部106は生成した復号画像を参照ピクチャメモリ109に記憶する。
The adder 106 generates a decoded image by adding, for each pixel, the pixel value of the predicted image of the block input from the predicted image generation unit 101 and the prediction error input from the inverse quantization and inverse transform unit 105. The adder 106 stores the generated decoded image in the reference picture memory 109.

ループフィルタ107は加算部106が生成した復号画像に対し、デブロッキングフィルタ、SAO、ALFを施す。なお、ループフィルタ107は、必ずしも上記3種類のフィルタを含まな
くてもよく、例えばデブロッキングフィルタのみの構成であってもよい。
The loop filter 107 applies a deblocking filter, SAO, and ALF to the decoded image generated by the adder 106. Note that the loop filter 107 does not necessarily have to include the above three types of filters, and may be configured, for example, as only a deblocking filter.

予測パラメータメモリ108は、符号化パラメータ決定部110が生成した予測パラメータを、対象ピクチャ及びCU毎に予め定めた位置に記憶する。 The prediction parameter memory 108 stores the prediction parameters generated by the encoding parameter determination unit 110 in a predetermined location for each target picture and CU.

参照ピクチャメモリ109は、ループフィルタ107が生成した復号画像を対象ピクチャ及びCU毎に予め定めた位置に記憶する。 The reference picture memory 109 stores the decoded image generated by the loop filter 107 in a predetermined location for each target picture and CU.

符号化パラメータ決定部110は、符号化パラメータの複数のセットのうち、1つのセッ
トを選択する。符号化パラメータとは、上述したQT、BTあるいはTT分割情報、予測パラメータ、あるいはこれらに関連して生成される符号化の対象となるパラメータである。予測画像生成部101は、これらの符号化パラメータを用いて予測画像を生成する。
The coding parameter determination unit 110 selects one set from among a plurality of sets of coding parameters. The coding parameters are the above-mentioned QT, BT or TT division information, prediction parameters, or parameters to be coded that are generated in relation to these. The predicted image generation unit 101 generates a predicted image using these coding parameters.

符号化パラメータ決定部110は、複数のセットの各々について情報量の大きさと符号化
誤差を示すRDコスト値を算出する。RDコスト値は、例えば、符号量と二乗誤差に係数λを乗じた値との和である。符号量は、量子化誤差と符号化パラメータをエントロピー符号化して得られる符号化ストリームTeの情報量である。二乗誤差は、減算部102において算出
された予測誤差の二乗和である。係数λは、予め設定されたゼロよりも大きい実数である。符号化パラメータ決定部110は、算出したコスト値が最小となる符号化パラメータのセ
ットを選択する。これにより、エントロピー符号化部104は、選択した符号化パラメータ
のセットを符号化ストリームTeとして出力する。符号化パラメータ決定部110は決定した
符号化パラメータを予測パラメータメモリ108に記憶する。
The coding parameter determination unit 110 calculates an RD cost value indicating the magnitude of the information amount and the coding error for each of the multiple sets. The RD cost value is, for example, the sum of the code amount and the value obtained by multiplying the squared error by a coefficient λ. The code amount is the information amount of the coding stream Te obtained by entropy coding the quantization error and the coding parameters. The squared error is the sum of the squares of the prediction errors calculated in the subtraction unit 102. The coefficient λ is a real number greater than zero that is set in advance. The coding parameter determination unit 110 selects a set of coding parameters that minimizes the calculated cost value. As a result, the entropy coding unit 104 outputs the selected set of coding parameters as the coding stream Te. The coding parameter determination unit 110 stores the determined coding parameters in the prediction parameter memory 108.

なお、上述した実施形態における動画像符号化装置11、動画像復号装置31の一部、例えば、エントロピー復号部301、パラメータ復号部302、ループフィルタ305、予測画像生成
部308、逆量子化・逆変換部311、加算部312、予測画像生成部101、減算部102、変換・量
子化部103、エントロピー符号化部104、逆量子化・逆変換部105、ループフィルタ107、符号化パラメータ決定部110、パラメータ符号化部111をコンピュータで実現するようにしても良い。その場合、この制御機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピュータシステム」とは、動画像符号化装置11、動画像復号装置31のいずれかに内蔵されたコンピュータシステムであって、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD-ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装
置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
In addition, a part of the video encoding device 11 and the video decoding device 31 in the above-mentioned embodiment, for example, the entropy decoding unit 301, the parameter decoding unit 302, the loop filter 305, the predicted image generating unit 308, the inverse quantization and inverse transform unit 311, the addition unit 312, the predicted image generating unit 101, the subtraction unit 102, the transform and quantization unit 103, the entropy encoding unit 104, the inverse quantization and inverse transform unit 105, the loop filter 107, the encoding parameter determination unit 110, and the parameter encoding unit 111 may be realized by a computer. In this case, a program for realizing this control function may be recorded on a computer-readable recording medium, and the program recorded on the recording medium may be read into and executed by a computer system. In addition, the "computer system" referred to here is a computer system built into either the video encoding device 11 or the video decoding device 31, and includes hardware such as an OS and peripheral devices. In addition, the term "computer-readable recording medium" refers to portable media such as flexible disks, optical magnetic disks, ROMs, and CD-ROMs, as well as storage devices such as hard disks built into computer systems. Furthermore, the term "computer-readable recording medium" may also include devices that dynamically hold a program for a short period of time, such as a communication line when transmitting a program via a network such as the Internet or a communication line such as a telephone line, and devices that hold a program for a certain period of time, such as volatile memory inside a computer system that serves as a server or client in such cases. Furthermore, the above-mentioned program may be one that realizes part of the above-mentioned functions, or may be one that can realize the above-mentioned functions in combination with a program already recorded in the computer system.

また、上述した実施形態における動画像符号化装置11、動画像復号装置31の一部、または全部を、LSI(Large Scale Integration)等の集積回路として実現しても良い。動画像符号化装置11、動画像復号装置31の各機能ブロックは個別にプロセッサ化しても良いし、一部、または全部を集積してプロセッサ化しても良い。また、集積回路化の手法はLSIに限らず専用回路、または汎用プロセッサで実現しても良い。また、半導体技術の進歩によりLSIに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いても良い。 In addition, part or all of the video encoding device 11 and video decoding device 31 in the above-mentioned embodiments may be realized as an integrated circuit such as an LSI (Large Scale Integration). Each functional block of the video encoding device 11 and video decoding device 31 may be individually processed, or part or all of them may be integrated into a processor. The integrated circuit method is not limited to LSI, and may be realized by a dedicated circuit or a general-purpose processor. Furthermore, if an integrated circuit technology that can replace LSI appears due to advances in semiconductor technology, an integrated circuit based on that technology may be used.

以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。 One embodiment of the present invention has been described in detail above with reference to the drawings, but the specific configuration is not limited to the above, and various design changes can be made without departing from the spirit of the present invention.

本発明の一態様に係る動画像復号装置は、画像をタイルに分割し、タイルをCTUに分割
し、CTU単位に動画像を復号する動画像復号装置であって、タイルの大きさの最小単位を
所定の値に設定するヘッダ復号部と、符号化ストリームからCTUを復号するCT情報復号部
を備え、上記ヘッダ復号部は、タイルの大きさの最小単位を用いてタイル左上位置とタイルサイズを導出することを特徴とする。
A video decoding device according to one embodiment of the present invention is a video decoding device that divides an image into tiles, divides the tiles into CTUs, and decodes video in CTU units, and is characterized in that it includes a header decoding unit that sets the smallest unit of tile size to a predetermined value, and a CT information decoding unit that decodes the CTUs from the encoded stream, and the header decoding unit derives the top left position of the tile and the tile size using the smallest unit of tile size.

本発明の一態様に係る動画像復号装置において、前記所定の値は、最小CTUサイズであ
ることを特徴とする。
In the video decoding device according to one aspect of the present invention, the predetermined value is a minimum CTU size.

本発明の一態様に係る動画像復号装置において、前記所定の値は、最小CTUサイズの整
数倍であることを特徴とする。
In the video decoding device according to one aspect of the present invention, the predetermined value is an integer multiple of a minimum CTU size.

本発明の一態様に係る動画像復号装置において、前記所定の値は、8もしくは16である
ことを特徴とする。
In the video decoding device according to one aspect of the present invention, the predetermined value is 8 or 16.

本発明の一態様に係る動画像復号装置において、前記所定の値は、水平方向は最小CTU
サイズの整数倍、垂直方向は8もしくは16であることを特徴とする。
In the video decoding device according to an aspect of the present invention, the predetermined value is a minimum CTU in the horizontal direction.
It is characterized in that it is an integer multiple of the size, and 8 or 16 in the vertical direction.

本発明の一態様に係る動画像復号装置において、前記タイルの大きさの最小単位は、最小CTUサイズと、タイルサイズの最小単位と最小CTUサイズとの差分値を用いて導出することを特徴とする。 In a video decoding device according to one aspect of the present invention, the minimum unit of the tile size is derived using a minimum CTU size and a difference value between the minimum unit of the tile size and the minimum CTU size.

本発明の一態様に係る動画像復号装置において、前記差分値はSPSの符号化データから
復号されることを特徴とする。
In the video decoding device according to one aspect of the present invention, the differential value is decoded from SPS encoded data.

本発明の一態様に係る動画像復号装置において、前記差分値はPPSの符号化データから
復号されることを特徴とする。
In the video decoding device according to one aspect of the present invention, the difference value is decoded from PPS encoded data.

本発明の一態様に係る動画像復号装置において、前記タイルの大きさの最小単位はタイルサイズの最小単位はCTUサイズを超えないことを特徴とする。 In a video decoding device according to one aspect of the present invention, the minimum unit of the tile size is not larger than the CTU size.

本発明の一態様に係る動画像復号装置において、前記所定の値は、各タイルを独立に処理できる場合は最小CTUサイズ未満の値に設定し、そうでない場合は最小CTUサイズに設定することを特徴とする。 In a video decoding device according to one aspect of the present invention, the predetermined value is set to a value less than the minimum CTU size if each tile can be processed independently, and is set to the minimum CTU size if not.

本発明の一態様に係る動画像復号装置において、前記所定の値は、各タイルを独立に処理できる場合は、そうでない場合よりもタイルの最小単位を小さく設定することを特徴とする。 In a video decoding device according to one aspect of the present invention, the predetermined value is set to a smaller minimum unit of a tile when each tile can be processed independently than when it cannot.

本発明の一態様に係る動画像復号装置において、前記所定の値は、サブCU、TMVP用の動きベクトル格納単位、差分量子化パラメータを通知する単位のいずれかに合わせて設定することを特徴とする。 In a video decoding device according to one aspect of the present invention, the predetermined value is set according to one of a sub-CU, a motion vector storage unit for TMVP, and a unit for notifying a differential quantization parameter.

本発明の一態様に係る動画像符号化装置は、画像をタイルに分割し、タイルをCTUに分
割し、CTU単位に動画像を符号化する動画像符号化装置において、タイルの大きさの最小
単位を所定の値に設定するヘッダ符号化部と、CTUを符号化して符号化ストリームを生成
するCT情報符号化部を備え、上記ヘッダ符号化部は、タイルの大きさの最小単位を用いてタイル左上位置とタイルサイズを導出することを特徴とする。
A video encoding device according to one embodiment of the present invention divides an image into tiles, divides the tiles into CTUs, and encodes video in units of CTUs.The video encoding device includes a header encoding unit that sets the smallest unit of tile size to a predetermined value, and a CT information encoding unit that encodes the CTUs to generate an encoded stream, and the header encoding unit derives the top left position of the tile and the tile size using the smallest unit of tile size.

〔応用例〕
上述した動画像符号化装置11及び動画像復号装置31は、動画像の送信、受信、記録、再生を行う各種装置に搭載して利用することができる。なお、動画像は、カメラ等により撮像された自然動画像であってもよいし、コンピュータ等により生成された人工動画像(CGおよびGUIを含む)であってもよい。
[Application example]
The above-mentioned video encoding device 11 and video decoding device 31 can be mounted on various devices that transmit, receive, record, and play videos. The video may be a natural video captured by a camera or the like, or an artificial video (including CG and GUI) generated by a computer or the like.

まず、上述した動画像符号化装置11及び動画像復号装置31を、動画像の送信及び受信に利用できることを、図20を参照して説明する。 First, with reference to FIG. 20, it will be explained that the above-mentioned video encoding device 11 and video decoding device 31 can be used to transmit and receive videos.

図20(a)は、動画像符号化装置11を搭載した送信装置PROD_Aの構成を示したブロック図
である。図20(a)に示すように、送信装置PROD_Aは、動画像を符号化することによって符
号化データを得る符号化部PROD_A1と、符号化部PROD_A1が得た符号化データで搬送波を変調することによって変調信号を得る変調部PROD_A2と、変調部PROD_A2が得た変調信号を送信する送信部PROD_A3と、を備えている。上述した動画像符号化装置11は、この符号化部PROD_A1として利用される。
Fig. 20(a) is a block diagram showing the configuration of a transmitting device PROD_A equipped with a video encoding device 11. As shown in Fig. 20(a), the transmitting device PROD_A includes an encoding unit PROD_A1 that obtains encoded data by encoding a video, a modulation unit PROD_A2 that obtains a modulated signal by modulating a carrier wave with the encoded data obtained by the encoding unit PROD_A1, and a transmitting unit PROD_A3 that transmits the modulated signal obtained by the modulation unit PROD_A2. The above-mentioned video encoding device 11 is used as this encoding unit PROD_A1.

送信装置PROD_Aは、符号化部PROD_A1に入力する動画像の供給源として、動画像を撮像
するカメラPROD_A4、動画像を記録した記録媒体PROD_A5、動画像を外部から入力するための入力端子PROD_A6、及び、画像を生成または加工する画像処理部A7を更に備えていて
もよい。図20(a)においては、これら全てを送信装置PROD_Aが備えた構成を例示している
が、一部を省略しても構わない。
The transmitting device PROD_A may further include a camera PROD_A4 for capturing moving images, a recording medium PROD_A5 for recording moving images, an input terminal PROD_A6 for inputting moving images from the outside, and an image processing unit A7 for generating or processing images, as a supply source of moving images to be input to the encoding unit PROD_A1. In Fig. 20(a), a configuration in which the transmitting device PROD_A includes all of these components is illustrated, but some of them may be omitted.

なお、記録媒体PROD_A5は、符号化されていない動画像を記録したものであってもよい
し、伝送用の符号化方式とは異なる記録用の符号化方式で符号化された動画像を記録したものであってもよい。後者の場合、記録媒体PROD_A5と符号化部PROD_A1との間に、記録媒体PROD_A5から読み出した符号化データを記録用の符号化方式に従って復号する復号部(
不図示)を介在させるとよい。
The recording medium PROD_A5 may record unencoded moving images, or may record moving images encoded by an encoding method for recording that is different from the encoding method for transmission. In the latter case, a decoding unit (
It is preferable to use a conductor (not shown) between the two.

図20(b)は、動画像復号装置31を搭載した受信装置PROD_Bの構成を示したブロック図で
ある。図20(b)に示すように、受信装置PROD_Bは、変調信号を受信する受信部PROD_B1と、受信部PROD_B1が受信した変調信号を復調することによって符号化データを得る復調部PROD_B2と、復調部PROD_B2が得た符号化データを復号することによって動画像を得る復号部PROD_B3と、を備えている。上述した動画像復号装置31は、この復号部PROD_B3として利用
される。
Fig. 20(b) is a block diagram showing the configuration of a receiving device PROD_B equipped with a video decoding device 31. As shown in Fig. 20(b), the receiving device PROD_B includes a receiving unit PROD_B1 that receives a modulated signal, a demodulation unit PROD_B2 that obtains coded data by demodulating the modulated signal received by the receiving unit PROD_B1, and a decoding unit PROD_B3 that obtains a video by decoding the coded data obtained by the demodulation unit PROD_B2. The above-mentioned video decoding device 31 is used as this decoding unit PROD_B3.

受信装置PROD_Bは、復号部PROD_B3が出力する動画像の供給先として、動画像を表示す
るディスプレイPROD_B4、動画像を記録するための記録媒体PROD_B5、及び、動画像を外部に出力するための出力端子PROD_B6を更に備えていてもよい。図20(b)においては、これら全てを受信装置PROD_Bが備えた構成を例示しているが、一部を省略しても構わない。
The receiving device PROD_B may further include, as destinations of the moving image output by the decoding unit PROD_B3, a display PROD_B4 for displaying the moving image, a recording medium PROD_B5 for recording the moving image, and an output terminal PROD_B6 for outputting the moving image to the outside. In Fig. 20(b), a configuration in which the receiving device PROD_B includes all of these components is illustrated, but some of them may be omitted.

なお、記録媒体PROD_B5は、符号化されていない動画像を記録するためのものであって
もよいし、伝送用の符号化方式とは異なる記録用の符号化方式で符号化されたものであってもよい。後者の場合、復号部PROD_B3と記録媒体PROD_B5との間に、復号部PROD_B3から
取得した動画像を記録用の符号化方式に従って符号化する符号化部(不図示)を介在させるとよい。
The recording medium PROD_B5 may be for recording unencoded video, or may be encoded by an encoding method for recording that is different from the encoding method for transmission. In the latter case, it is preferable to interpose an encoding unit (not shown) between the decoding unit PROD_B3 and the recording medium PROD_B5, which encodes the video acquired from the decoding unit PROD_B3 according to the encoding method for recording.

なお、変調信号を伝送する伝送媒体は、無線であってもよいし、有線であってもよい。また、変調信号を伝送する伝送態様は、放送(ここでは、送信先が予め特定されていない送信態様を指す)であってもよいし、通信(ここでは、送信先が予め特定されている送信態様を指す)であってもよい。すなわち、変調信号の伝送は、無線放送、有線放送、無線通信、及び有線通信の何れによって実現してもよい。 The transmission medium for transmitting the modulated signal may be wireless or wired. The transmission mode for transmitting the modulated signal may be broadcast (here, this refers to a transmission mode in which the destination is not specified in advance) or communication (here, this refers to a transmission mode in which the destination is specified in advance). In other words, the transmission of the modulated signal may be realized by any of wireless broadcasting, wired broadcasting, wireless communication, and wired communication.

例えば、地上デジタル放送の放送局(放送設備など)/受信局(テレビジョン受像機など)は、変調信号を無線放送で送受信する送信装置PROD_A/受信装置PROD_Bの一例である。また、ケーブルテレビ放送の放送局(放送設備など)/受信局(テレビジョン受像機など)は、変調信号を有線放送で送受信する送信装置PROD_A/受信装置PROD_Bの一例である。 For example, a broadcasting station (such as broadcasting equipment)/receiving station (such as a television receiver) for terrestrial digital broadcasting is an example of a transmitting device PROD_A/receiving device PROD_B that transmits and receives modulated signals via wireless broadcasting. Also, a broadcasting station (such as broadcasting equipment)/receiving station (such as a television receiver) for cable television broadcasting is an example of a transmitting device PROD_A/receiving device PROD_B that transmits and receives modulated signals via cable broadcasting.

また、インターネットを用いたVOD(Video On Demand)サービスや動画共有サービスなどのサーバ(ワークステーションなど)/クライアント(テレビジョン受像機、パーソナルコンピュータ、スマートフォンなど)は、変調信号を通信で送受信する送信装置PROD_A/受信装置PROD_Bの一例である(通常、LANにおいては伝送媒体として無線または有線の何れかが用いられ、WANにおいては伝送媒体として有線が用いられる)。ここで、パーソナルコンピュータには、デスクトップ型PC、ラップトップ型PC、及びタブレット型PCが含まれる。また、スマートフォンには、多機能携帯電話端末も含まれる。 In addition, a server (such as a workstation)/client (such as a television receiver, personal computer, smartphone, etc.) of an Internet-based VOD (Video On Demand) service or video sharing service is an example of a transmitting device PROD_A/receiving device PROD_B that transmits and receives modulated signals by communication (usually, in a LAN, either wireless or wired is used as the transmission medium, and in a WAN, wired is used as the transmission medium). Here, personal computers include desktop PCs, laptop PCs, and tablet PCs. Smartphones also include multi-function mobile phone terminals.

なお、動画共有サービスのクライアントは、サーバからダウンロードした符号化データを復号してディスプレイに表示する機能に加え、カメラで撮像した動画像を符号化してサーバにアップロードする機能を有している。すなわち、動画共有サービスのクライアント
は、送信装置PROD_A及び受信装置PROD_Bの双方として機能する。
The client of the video hosting service has a function to decode the encoded data downloaded from the server and display it on a display, as well as a function to encode the video captured by the camera and upload it to the server. That is, the client of the video hosting service functions as both the transmitting device PROD_A and the receiving device PROD_B.

次に、上述した動画像符号化装置11及び動画像復号装置31を、動画像の記録及び再生に利用できることを、図21を参照して説明する。 Next, with reference to FIG. 21, it will be explained that the above-mentioned video encoding device 11 and video decoding device 31 can be used for recording and playing back video.

図21(a)は、上述した動画像符号化装置11を搭載した記録装置PROD_Cの構成を示したブ
ロック図である。図21(a)に示すように、記録装置PROD_Cは、動画像を符号化することに
よって符号化データを得る符号化部PROD_C1と、符号化部PROD_C1が得た符号化データを記録媒体PROD_Mに書き込む書込部PROD_C2と、を備えている。上述した動画像符号化装置11
は、この符号化部PROD_C1として利用される。
Fig. 21(a) is a block diagram showing the configuration of a recording device PROD_C equipped with the above-mentioned video encoding device 11. As shown in Fig. 21(a), the recording device PROD_C includes an encoding unit PROD_C1 that obtains encoded data by encoding a video, and a writing unit PROD_C2 that writes the encoded data obtained by the encoding unit PROD_C1 onto a recording medium PROD_M.
is used as this encoding unit PROD_C1.

なお、記録媒体PROD_Mは、(1)HDD(Hard Disk Drive)やSSD(Solid State Drive)などのように、記録装置PROD_Cに内蔵されるタイプのものであってもよいし、(2)SDメモリカードやUSB(Universal Serial Bus)フラッシュメモリなどのように、記録装置PROD_Cに接続されるタイプのものであってもよいし、(3)DVD(Digital Versatile Disc:登
録商標)やBD(Blu-ray Disc:登録商標)などのように、記録装置PROD_Cに内蔵されたド
ライブ装置(不図示)に装填されるものであってもよい。
The recording medium PROD_M may be (1) a type built into the recording device PROD_C, such as an HDD (Hard Disk Drive) or SSD (Solid State Drive), (2) a type connected to the recording device PROD_C, such as an SD memory card or USB (Universal Serial Bus) flash memory, or (3) a type loaded into a drive device (not shown) built into the recording device PROD_C, such as a DVD (Digital Versatile Disc: registered trademark) or BD (Blu-ray Disc: registered trademark).

また、記録装置PROD_Cは、符号化部PROD_C1に入力する動画像の供給源として、動画像
を撮像するカメラPROD_C3、動画像を外部から入力するための入力端子PROD_C4、動画像を受信するための受信部PROD_C5、及び、画像を生成または加工する画像処理部PROD_C6を更に備えていてもよい。図21(a)においては、これら全てを記録装置PROD_Cが備えた構成を
例示しているが、一部を省略しても構わない。
The recording device PROD_C may further include a camera PROD_C3 for capturing moving images, an input terminal PROD_C4 for inputting moving images from the outside, a receiving unit PROD_C5 for receiving moving images, and an image processing unit PROD_C6 for generating or processing images, as a supply source of moving images to be input to the encoding unit PROD_C1. Although Fig. 21(a) illustrates a configuration in which the recording device PROD_C includes all of these, some of them may be omitted.

なお、受信部PROD_C5は、符号化されていない動画像を受信するものであってもよいし
、記録用の符号化方式とは異なる伝送用の符号化方式で符号化された符号化データを受信するものであってもよい。後者の場合、受信部PROD_C5と符号化部PROD_C1との間に、伝送用の符号化方式で符号化された符号化データを復号する伝送用復号部(不図示)を介在させるとよい。
The receiving unit PROD_C5 may receive unencoded video, or may receive encoded data encoded by an encoding method for transmission different from the encoding method for recording. In the latter case, a transmission decoding unit (not shown) for decoding the encoded data encoded by the encoding method for transmission may be interposed between the receiving unit PROD_C5 and the encoding unit PROD_C1.

このような記録装置PROD_Cとしては、例えば、DVDレコーダ、BDレコーダ、HDD(Hard Disk Drive)レコーダなどが挙げられる(この場合、入力端子PROD_C4または受信部PROD_C5が動画像の主な供給源となる)。また、カムコーダ(この場合、カメラPROD_C3が動画像の主な供給源となる)、パーソナルコンピュータ(この場合、受信部PROD_C5または画像
処理部C6が動画像の主な供給源となる)、スマートフォン(この場合、カメラPROD_C3
または受信部PROD_C5が動画像の主な供給源となる)なども、このような記録装置PROD_C
の一例である。
Examples of such a recording device PROD_C include a DVD recorder, a BD recorder, and an HDD (Hard Disk Drive) recorder (in this case, the input terminal PROD_C4 or the receiving unit PROD_C5 is the main source of the moving image). Also, there are camcorders (in this case, the camera PROD_C3 is the main source of the moving image), personal computers (in this case, the receiving unit PROD_C5 or the image processing unit PROD_C6 is the main source of the moving image), smartphones (in this case, the camera PROD_C3
or the receiving unit PROD_C5 is the main source of video images), such a recording device PROD_C
This is an example.

図21(B)は、上述した動画像復号装置31を搭載した再生装置PROD_Dの構成を示したブロ
ックである。図21(b)に示すように、再生装置PROD_Dは、記録媒体PROD_Mに書き込まれた
符号化データを読み出す読出部PROD_D1と、読出部PROD_D1が読み出した符号化データを復号することによって動画像を得る復号部PROD_D2と、を備えている。上述した動画像復号
装置31は、この復号部PROD_D2として利用される。
Fig. 21(B) is a block diagram showing the configuration of a playback device PROD_D equipped with the above-mentioned video decoding device 31. As shown in Fig. 21(b), the playback device PROD_D includes a reading unit PROD_D1 that reads out coded data written to a recording medium PROD_M, and a decoding unit PROD_D2 that obtains video by decoding the coded data read by the reading unit PROD_D1. The above-mentioned video decoding device 31 is used as this decoding unit PROD_D2.

なお、記録媒体PROD_Mは、(1)HDDやSSDなどのように、再生装置PROD_Dに内蔵されるタイプのものであってもよいし、(2)SDメモリカードやUSBフラッシュメモリなどのよ
うに、再生装置PROD_Dに接続されるタイプのものであってもよいし、(3)DVDやBDなど
のように、再生装置PROD_Dに内蔵されたドライブ装置(不図示)に装填されるものであってもよい。
The recording medium PROD_M may be (1) a type that is built into the playback device PROD_D, such as an HDD or SSD, (2) a type that is connected to the playback device PROD_D, such as an SD memory card or USB flash memory, or (3) a type that is loaded into a drive device (not shown) built into the playback device PROD_D, such as a DVD or BD.

また、再生装置PROD_Dは、復号部PROD_D2が出力する動画像の供給先として、動画像を
表示するディスプレイPROD_D3、動画像を外部に出力するための出力端子PROD_D4、及び、動画像を送信する送信部PROD_D5を更に備えていてもよい。図21(b)においては、これら全てを再生装置PROD_Dが備えた構成を例示しているが、一部を省略しても構わない。
The playback device PROD_D may further include, as destinations of the video output by the decoding unit PROD_D2, a display PROD_D3 for displaying the video, an output terminal PROD_D4 for outputting the video to the outside, and a transmission unit PROD_D5 for transmitting the video. In Fig. 21(b), a configuration in which the playback device PROD_D includes all of these components is illustrated, but some of them may be omitted.

なお、送信部PROD_D5は、符号化されていない動画像を送信するものであってもよいし
、記録用の符号化方式とは異なる伝送用の符号化方式で符号化された符号化データを送信するものであってもよい。後者の場合、復号部PROD_D2と送信部PROD_D5との間に、動画像を伝送用の符号化方式で符号化する符号化部(不図示)を介在させるとよい。
The transmission unit PROD_D5 may transmit unencoded video, or may transmit encoded data encoded by an encoding method for transmission different from the encoding method for recording. In the latter case, it is preferable to interpose an encoding unit (not shown) that encodes the video by the encoding method for transmission between the decoding unit PROD_D2 and the transmission unit PROD_D5.

このような再生装置PROD_Dとしては、例えば、DVDプレイヤ、BDプレイヤ、HDDプレイヤなどが挙げられる(この場合、テレビジョン受像機等が接続される出力端子PROD_D4が動
画像の主な供給先となる)。また、テレビジョン受像機(この場合、ディスプレイPROD_D3が動画像の主な供給先となる)、デジタルサイネージ(電子看板や電子掲示板等とも称
され、ディスプレイPROD_D3または送信部PROD_D5が動画像の主な供給先となる)、デスクトップ型PC(この場合、出力端子PROD_D4または送信部PROD_D5が動画像の主な供給先となる)、ラップトップ型またはタブレット型PC(この場合、ディスプレイPROD_D3または送
信部PROD_D5が動画像の主な供給先となる)、スマートフォン(この場合、ディスプレイPROD_D3または送信部PROD_D5が動画像の主な供給先となる)なども、このような再生装置PROD_Dの一例である。
Examples of such a playback device PROD_D include a DVD player, a BD player, and an HDD player (in this case, the output terminal PROD_D4 to which a television receiver or the like is connected is the main destination of the video image). Other examples of such a playback device PROD_D include a television receiver (in this case, the display PROD_D3 is the main destination of the video image), a digital signage (also called an electronic billboard or electronic bulletin board, and the display PROD_D3 or the transmission unit PROD_D5 is the main destination of the video image), a desktop PC (in this case, the output terminal PROD_D4 or the transmission unit PROD_D5 is the main destination of the video image), a laptop or tablet PC (in this case, the display PROD_D3 or the transmission unit PROD_D5 is the main destination of the video image), and a smartphone (in this case, the display PROD_D3 or the transmission unit PROD_D5 is the main destination of the video image).

(ハードウェア的実現およびソフトウェア的実現)
また、上述した動画像復号装置31および動画像符号化装置11の各ブロックは、集積回路(ICチップ)上に形成された論理回路によってハードウェア的に実現してもよいし、CPU
(Central Processing Unit)を用いてソフトウェア的に実現してもよい。
(Hardware and Software Realizations)
Furthermore, each block of the above-mentioned video decoding device 31 and video encoding device 11 may be realized in hardware by a logic circuit formed on an integrated circuit (IC chip), or may be realized by a CPU.
This may be realized in software using a Central Processing Unit (Central Processing Unit).

後者の場合、上記各装置は、各機能を実現するプログラムの命令を実行するCPU、上記
プログラムを格納したROM(Read Only Memory)、上記プログラムを展開するRAM(Random
Access Memory)、上記プログラムおよび各種データを格納するメモリ等の記憶装置(記録媒体)などを備えている。そして、本発明の実施形態の目的は、上述した機能を実現するソフトウェアである上記各装置の制御プログラムのプログラムコード(実行形式プログラム、中間コードプログラム、ソースプログラム)をコンピュータで読み取り可能に記録した記録媒体を、上記各装置に供給し、そのコンピュータ(またはCPUやMPU)が記録媒体に記録されているプログラムコードを読み出し実行することによっても、達成可能である。
In the latter case, each of the above devices is composed of a CPU that executes the commands of a program that realizes each function, a ROM (Read Only Memory) that stores the above program, and a RAM (Random Access Memory) that expands the above program.
The present invention also includes a storage device (recording medium) such as a memory for storing the above-mentioned programs and various data, and the like. The object of the embodiment of the present invention can also be achieved by supplying each of the above-mentioned devices with a recording medium on which the program code (executable program, intermediate code program, source program) of the control program of each of the above-mentioned devices, which is software for realizing the above-mentioned functions, is recorded in a computer-readable manner, and the computer (or CPU or MPU) reads and executes the program code recorded on the recording medium.

上記記録媒体としては、例えば、磁気テープやカセットテープ等のテープ類、フロッピー(登録商標)ディスク/ハードディスク等の磁気ディスクやCD-ROM(Compact Disc Read-Only Memory)/MOディスク(Magneto-Optical disc)/MD(Mini Disc)/DVD(Digital Versatile Disc)/CD-R(CD Recordable)/ブルーレイディスク(Blu-ray Disc:登録商標)等の光ディスクを含むディスク類、ICカード(メモリカードを含む)/光カード等のカード類、マスクROM/EPROM(Erasable Programmable Read-Only Memory)/EEPROM(Electrically Erasable and Programmable Read-Only Memory:登録商標)/フラッシ
ュROM等の半導体メモリ類、あるいはPLD(Programmable logic device)やFPGA(Field Programmable Gate Array)等の論理回路類などを用いることができる。
Examples of the recording medium include tapes such as magnetic tapes and cassette tapes, magnetic disks such as floppy disks (registered trademark) and hard disks, disks including optical disks such as CD-ROMs (Compact Disc Read-Only Memory), MO disks (Magneto-Optical discs), MDs (Mini Discs), DVDs (Digital Versatile Discs), CD-Rs (CD Recordable), and Blu-ray Discs (registered trademark), cards such as IC cards (including memory cards) and optical cards, semiconductor memories such as mask ROMs, EPROMs (Erasable Programmable Read-Only Memory), EEPROMs (Electrically Erasable and Programmable Read-Only Memory (registered trademark)), and flash ROMs, and logic circuits such as PLDs (Programmable logic devices) and FPGAs (Field Programmable Gate Arrays).

また、上記各装置を通信ネットワークと接続可能に構成し、上記プログラムコードを通信ネットワークを介して供給してもよい。この通信ネットワークは、プログラムコードを伝送可能であればよく、特に限定されない。例えば、インターネット、イントラネット、エキストラネット、LAN(Local Area Network)、ISDN(Integrated Services Digital N
etwork)、VAN(Value-Added Network)、CATV(Community Antenna television/Cable Television)通信網、仮想専用網(Virtual Private Network)、電話回線網、移動体通信網、衛星通信網等が利用可能である。また、この通信ネットワークを構成する伝送媒体も、プログラムコードを伝送可能な媒体であればよく、特定の構成または種類のものに限定されない。例えば、IEEE(Institute of Electrical and Electronic Engineers)1394、USB、電力線搬送、ケーブルTV回線、電話線、ADSL(Asymmetric Digital Subscriber Line)回線等の有線でも、IrDA(Infrared Data Association)やリモコンのような赤外線、BlueTooth(登録商標)、IEEE802.11無線、HDR(High Data Rate)、NFC(Near Field Communication)、DLNA(Digital Living Network Alliance:登録商標)、携帯電話網、衛星回線、地上デジタル放送網等の無線でも利用可能である。なお、本発明の実施形態は、上記プログラムコードが電子的な伝送で具現化された、搬送波に埋め込まれたコンピュータデータ信号の形態でも実現され得る。
Moreover, each of the above devices may be configured to be connectable to a communication network, and the above program code may be supplied via the communication network. This communication network is not particularly limited as long as it is capable of transmitting the program code. For example, the Internet, an intranet, an extranet, a LAN (Local Area Network), or an ISDN (Integrated Services Digital Network) may be used.
network), VAN (Value-Added Network), CATV (Community Antenna television/Cable Television) communication network, virtual private network, telephone line network, mobile communication network, satellite communication network, etc. can be used. In addition, the transmission medium constituting this communication network is not limited to a specific configuration or type as long as it is a medium capable of transmitting the program code. For example, it can be wired such as IEEE (Institute of Electrical and Electronic Engineers) 1394, USB, power line carrier, cable TV line, telephone line, ADSL (Asymmetric Digital Subscriber Line) line, infrared such as IrDA (Infrared Data Association) or remote control, BlueTooth (registered trademark), IEEE802.11 wireless, HDR (High Data Rate), NFC (Near Field Communication), DLNA (Digital Living Network Alliance: registered trademark), mobile phone network, satellite line, terrestrial digital broadcasting network, etc. It should be noted that the embodiment of the present invention can also be realized in the form of a computer data signal embedded in a carrier wave in which the program code is embodied by electronic transmission.

本発明の実施形態は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。すなわち、請求項に示した範囲で適宜変更した技術的手段を組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。 The embodiments of the present invention are not limited to the above-mentioned embodiments, and various modifications are possible within the scope of the claims. In other words, embodiments obtained by combining technical means that are appropriately modified within the scope of the claims are also included in the technical scope of the present invention.

本発明の実施形態は、画像データが符号化された符号化データを復号する動画像復号装置、および、画像データが符号化された符号化データを生成する動画像符号化装置に好適に適用することができる。また、動画像符号化装置によって生成され、動画像復号装置によって参照される符号化データのデータ構造に好適に適用することができる。 Embodiments of the present invention can be suitably applied to a video decoding device that decodes coded data in which image data is coded, and a video coding device that generates coded data in which image data is coded. They can also be suitably applied to the data structure of coded data that is generated by a video coding device and referenced by the video decoding device.

11 動画像符号化装置
31 動画像復号装置
101、308 予測画像生成部
104 エントロビー符号化部(符号化部)
107、305 ループフィルタ
111 パラメータ符号化部
1111 CT情報符号化部(CT分割部)
112 インター予測パラメータ符号化部
113 イントラ予測パラメータ符号化部(イントラ予測部)
301 エントロピー復号部
302 パラメータ復号部(分割部)
3021 CT情報復号部(CT分割部)
303 インター予測パラメータ復号部
304 イントラ予測パラメータ復号部(イントラ予測部)
308 予測画像生成部
309 インター予測画像生成部
310 イントラ予測画像生成部
3036 マージ予測パラメータ導出部
30361 マージ候補導出部(時間動き予測部)
30362 マージ候補選択部
11 Video encoding device 31 Video decoding device 101, 308 Prediction image generating unit 104 Entropy encoding unit (encoding unit)
107, 305 Loop filter 111 Parameter coding unit 1111 CT information coding unit (CT division unit)
112 Inter prediction parameter encoding unit 113 Intra prediction parameter encoding unit (intra prediction unit)
301 Entropy decoding unit 302 Parameter decoding unit (division unit)
3021 CT information decoding unit (CT division unit)
303 Inter prediction parameter decoding unit 304 Intra prediction parameter decoding unit (intra prediction unit)
308: predicted image generation unit 309: inter predicted image generation unit 310: intra predicted image generation unit 3036: merge prediction parameter derivation unit 30361: merge candidate derivation unit (temporal motion prediction unit)
30362 Merge candidate selection unit

Claims (4)

対象ブロックのマージ候補である時間動きベクトルを、マージ候補リストに格納するマージ候補導出部と、
前記対象ブロックのY座標に、前記対象ブロックの高さを加算することにより、前記対象ブロックの第一の位置のブロックのY座標を導出し、
前記対象ブロックのX座標に、前記対象ブロックの幅を加算することにより、該第一の位置のブロックのX座標を導出し、
前記対象ブロックのY座標に、前記対象ブロックの高さの1/2を加算することにより、前記対象ブロックの第二の位置のブロックのY座標を導出し、
前記対象ブロックのX座標に、前記対象ブロックの幅の1/2を加算することにより、該第二の位置のブロックのX座標を導出する時間動き予測部と、を備え
前記対象ブロックのY座標と前記第一の位置のブロックのY座標が同じCTU内にあり、かつ、前記第一の位置のブロックのY座標から対象タイルのY座標を引いた値が対象タイルの高さより小さく、かつ、前記第一の位置のブロックのX座標から対象タイルのX座標を引いた値が対象タイルの幅より小さい場合、前記時間動き予測部は、前記第一の位置のブロックのY座標及びX座標を用いて特定される参照ピクチャの動きベクトルを用いて、前記時間動きベクトルを導出し、
そうでない場合、前記時間動き予測部は、前記第二の位置のブロックのY座標及びX座標を用いて特定される参照ピクチャの動きベクトルを用いて、前記時間動きベクトルを導出することを特徴とする動画像復号装置。
a merge candidate derivation unit that stores, in a merge candidate list, temporal motion vectors that are merge candidates for the current block;
deriving a Y coordinate of a block at a first position of the target block by adding a height of the target block to the Y coordinate of the target block;
deriving an X-coordinate of the block at the first position by adding a width of the target block to the X-coordinate of the target block;
deriving a Y coordinate of a block at a second position of the target block by adding 1/2 the height of the target block to the Y coordinate of the target block;
a temporal motion prediction unit configured to derive an X coordinate of the block at the second position by adding 1/2 the width of the target block to the X coordinate of the target block, wherein when the Y coordinate of the target block and the Y coordinate of the block at the first position are in the same CTU, and a value obtained by subtracting the Y coordinate of the target tile from the Y coordinate of the block at the first position is smaller than a height of the target tile, and a value obtained by subtracting the X coordinate of the target tile from the X coordinate of the block at the first position is smaller than a width of the target tile, the temporal motion prediction unit derives the temporal motion vector using a motion vector of a reference picture identified using the Y coordinate and the X coordinate of the block at the first position,
If not, the temporal motion prediction unit derives the temporal motion vector using a motion vector of a reference picture identified using the Y coordinate and the X coordinate of the block at the second position.
前記対象ブロックのY座標と前記第一の位置のブロックのY座標が同じCTU内にあるか否かは、前記対象ブロックのY座標をCTUサイズの対数値で右シフトすることによって判定することを特徴とする請求項1に記載の動画像復号装置。 2. The video decoding device according to claim 1, wherein whether or not the Y coordinate of the target block and the Y coordinate of the block at the first position are within the same CTU is determined by right-shifting the Y coordinate of the target block by a logarithmic value of the CTU size. 前記第一の位置のブロック又は前記第二の位置のブロックの座標は、8x8の倍数であることを特徴とする請求項1又は請求項2に記載の動画像復号装置。 The video decoding device according to claim 1 or 2, characterized in that the coordinates of the block at the first position or the block at the second position are multiples of 8x8. 対象ブロックのマージ候補である時間動きベクトルを、マージ候補リストに格納するマージ候補導出部と、
前記対象ブロックのY座標に、前記対象ブロックの高さを加算することにより、前記対象ブロックの第一の位置のブロックのY座標を導出し、
前記対象ブロックのX座標に、前記対象ブロックの幅を加算することにより、該第一の位置のブロックのX座標を導出し、
前記対象ブロックのY座標に、前記対象ブロックの高さの1/2を加算することにより、前記対象ブロックの第二の位置のブロックのY座標を導出し、
前記対象ブロックのX座標に、前記対象ブロックの幅の1/2を加算することにより、該第二の位置のブロックのX座標を導出する時間動き予測部と、を備え
前記対象ブロックのY座標と前記第一の位置のブロックのY座標が同じCTU内にあり、かつ、前記第一の位置のブロックのY座標から対象タイルのY座標を引いた値が対象タイルの高さより小さく、かつ、前記第一の位置のブロックのX座標から対象タイルのX座標を引いた値が対象タイルの幅より小さい場合、前記時間動き予測部は、前記第一の位置のブロックのY座標及びX座標を用いて特定される参照ピクチャの動きベクトルを用いて、前記時間動きベクトルを導出し、
そうでない場合、前記時間動き予測部は、前記第二の位置のブロックのY座標及びX座標を用いて特定される参照ピクチャの動きベクトルを用いて、前記時間動きベクトルを導出することを特徴とする動画像符号化装置。
a merge candidate derivation unit that stores, in a merge candidate list, temporal motion vectors that are merge candidates for the current block;
deriving a Y coordinate of a block at a first position of the target block by adding a height of the target block to the Y coordinate of the target block;
deriving an X-coordinate of the block at the first position by adding a width of the target block to the X-coordinate of the target block;
deriving a Y coordinate of a block at a second position of the target block by adding 1/2 the height of the target block to the Y coordinate of the target block;
a temporal motion prediction unit configured to derive an X coordinate of the block at the second position by adding 1/2 the width of the target block to the X coordinate of the target block, wherein when the Y coordinate of the target block and the Y coordinate of the block at the first position are in the same CTU, and a value obtained by subtracting the Y coordinate of the target tile from the Y coordinate of the block at the first position is smaller than a height of the target tile, and a value obtained by subtracting the X coordinate of the target tile from the X coordinate of the block at the first position is smaller than a width of the target tile, the temporal motion prediction unit derives the temporal motion vector using a motion vector of a reference picture identified using the Y coordinate and the X coordinate of the block at the first position,
If not, the temporal motion prediction unit derives the temporal motion vector using a motion vector of a reference picture identified using the Y coordinate and the X coordinate of the block at the second position.
JP2023079788A 2018-10-24 2023-05-15 Video encoding device and video decoding device Active JP7523856B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2023079788A JP7523856B2 (en) 2018-10-24 2023-05-15 Video encoding device and video decoding device

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2018200186A JP7281890B2 (en) 2018-10-24 2018-10-24 Video encoding device and video decoding device
JP2023079788A JP7523856B2 (en) 2018-10-24 2023-05-15 Video encoding device and video decoding device

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2018200186A Division JP7281890B2 (en) 2018-10-24 2018-10-24 Video encoding device and video decoding device

Publications (2)

Publication Number Publication Date
JP2023100982A JP2023100982A (en) 2023-07-19
JP7523856B2 true JP7523856B2 (en) 2024-07-29

Family

ID=70388683

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2018200186A Active JP7281890B2 (en) 2018-10-24 2018-10-24 Video encoding device and video decoding device
JP2023079788A Active JP7523856B2 (en) 2018-10-24 2023-05-15 Video encoding device and video decoding device

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2018200186A Active JP7281890B2 (en) 2018-10-24 2018-10-24 Video encoding device and video decoding device

Country Status (1)

Country Link
JP (2) JP7281890B2 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014520477A (en) 2011-09-09 2014-08-21 ケィティ、コーポレーション Temporal prediction motion vector induction method and apparatus using such method
JP2015106747A (en) 2013-11-28 2015-06-08 富士通株式会社 Dynamic image encoding device, dynamic image encoding method and dynamic image encoding computer program
JP2015159531A (en) 2014-02-21 2015-09-03 パナソニック株式会社 Image decoding method, image encoding method, image decoding device and image encoding device
JP2018509032A (en) 2015-01-26 2018-03-29 クアルコム,インコーポレイテッド Overlapping motion compensation for video coding

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10205950B2 (en) * 2014-02-21 2019-02-12 Panasonic Corporation Image decoding method, image encoding method, image decoding apparatus, and image encoding apparatus

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014520477A (en) 2011-09-09 2014-08-21 ケィティ、コーポレーション Temporal prediction motion vector induction method and apparatus using such method
JP2015106747A (en) 2013-11-28 2015-06-08 富士通株式会社 Dynamic image encoding device, dynamic image encoding method and dynamic image encoding computer program
JP2015159531A (en) 2014-02-21 2015-09-03 パナソニック株式会社 Image decoding method, image encoding method, image decoding device and image encoding device
JP2018509032A (en) 2015-01-26 2018-03-29 クアルコム,インコーポレイテッド Overlapping motion compensation for video coding

Also Published As

Publication number Publication date
JP7281890B2 (en) 2023-05-26
JP2023100982A (en) 2023-07-19
JP2020068461A (en) 2020-04-30

Similar Documents

Publication Publication Date Title
WO2018037853A1 (en) Image decoding apparatus and image coding apparatus
WO2019069950A1 (en) Image coding device and image decoding device
WO2018199001A1 (en) Image decoding device and image coding device
JP2021002780A (en) Video decoding device and video coding device
WO2020116376A1 (en) Moving image decoding device and moving image encoding device
JP2020061701A (en) Dynamic image coding device and dynamic image decoding device
WO2020045248A1 (en) Video decoding device and video coding device
WO2021015195A1 (en) Image decoding device, image encoding device, image decoding method
WO2019230904A1 (en) Image decoding device and image encoding device
WO2020184366A1 (en) Image decoding device
WO2018037723A1 (en) Image decoding device and image coding device
US11652991B2 (en) Video decoding apparatus with picture tile structure
WO2020067440A1 (en) Moving image coding device and moving image decoding device
JP7523856B2 (en) Video encoding device and video decoding device
JP7409802B2 (en) Video decoding device and video encoding device
JP7378968B2 (en) Predicted image generation device, video decoding device, and video encoding device
JP2020107961A (en) Moving image encoder and moving image decoder
JP2021034848A (en) Image decoding device
JP2021153213A (en) Dynamic image encoder and dynamic image decoder
JP2021106309A (en) Video decoding device and video coding device
JP7425568B2 (en) Video decoding device, video encoding device, video decoding method, and video encoding method
JP7444570B2 (en) Video decoding device, video encoding device, video decoding method, and video encoding method
WO2020045275A1 (en) Image decoding device and image encoding device
JP2021153215A (en) Dynamic image encoder and dynamic image decoder
JP2021153214A (en) Dynamic image encoder and dynamic image decoder

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230515

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240430

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240603

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240618

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240712

R150 Certificate of patent or registration of utility model

Ref document number: 7523856

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150