Encoding method and apparatus thereof, decoding method and apparatus thereof
The video encoding and decoding method optimizes quantization parameters using block partitioning and size information, addressing bandwidth limitations and image quality degradation by efficiently managing quantization groups and units.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- SAMSUNG ELECTRONICS CO LTD
- Filing Date
- 2025-09-10
- Publication Date
- 2026-07-28
AI Technical Summary
Existing video encoding methods face challenges in achieving high compression ratios while minimizing image quality degradation due to limited bandwidth and the need to efficiently manage quantization parameters based on block division and size information.
A video encoding and decoding method that determines quantization parameters using block partitioning and size information, employing a tree-structured encoding unit to optimize quantization groups and units, and a computer-readable recording medium for executing these methods.
This approach efficiently compresses information necessary for determining quantization parameters, enhancing the encoding and decoding processes by optimizing block division and size considerations.
Smart Images

Figure 0007896150000001 
Figure 0007896150000002 
Figure 0007896150000003
Abstract
Description
Technical Field
[0001] The present invention relates to a method for encoding and decoding video, and more specifically, to a method for efficiently encoding and decoding information about motion vectors.
Background Art
[0002] High-quality video requires a large amount of data during encoding. However, the bandwidth allowed for transmitting video data is limited, and the data rate applied during the transmission of video data is restricted. Therefore, for efficient video data transmission, there is a need for an encoding method and a decoding method for video data that increase the compression ratio while minimizing image quality degradation.
[0003] Video data is also compressed by removing spatial and temporal redundancies between pixels. Since it is common for adjacent pixels to have common features, in order to remove the redundancy between adjacent pixels, encoding information is transmitted in data units consisting of pixels.
[0004] The pixel values of the pixels included in the data unit are not directly transmitted, but the method necessary to obtain the pixel values is transmitted. A prediction method for predicting the pixel value to be similar to the original value is determined for each data unit, and the encoding information related to the prediction method is transmitted from the encoder to the decoder. Also, since the predicted value is not exactly the same as the original value, the residual data related to the difference between the original value and the predicted value is transmitted from the encoder to the decoder.
[0005] The more accurate the prediction, the more the encoding information required for specifying the prediction method increases, but the size of the residual data decreases. Therefore, considering the sizes of the encoding information and the residual data, the prediction method is determined. In particular, the data units divided from a picture have various sizes, but the larger the data unit, the higher the possibility that the prediction accuracy decreases, and instead, the encoding information decreases. Therefore, the size of the block is determined to suit the characteristics of the picture.
[0006] Furthermore, there are two prediction methods: intra-prediction and inter-prediction. Intra-prediction predicts the pixels of a block from the surrounding pixels of the block. Inter-prediction predicts pixels by referencing the pixels of other pictures referenced by the picture containing the block. Therefore, intra-prediction eliminates spatial overlap, and inter-prediction eliminates temporal overlap.
[0007] As the number of prediction methods increases, the amount of coded information required to indicate a prediction method also increases. Therefore, the coded information applied to a block can also be predicted from other blocks, reducing the size of the coded information.
[0008] While loss of video data is acceptable to the extent that it cannot be perceived by human vision, residual data can be reduced in amount by lossy compression through conversion and quantization processes. [Overview of the Initiative] [Problems that the invention aims to solve]
[0009] A video encoding method and a video encoding apparatus are disclosed for determining quantization parameters of quantization groups based on block division information and block size information. A video decoding method and a video decoding apparatus are also disclosed for determining quantization parameters of quantization groups based on block division information and block size information.
[0010] Furthermore, a video encoding method and video encoding apparatus are disclosed that perform matching between a current block and a current quantization parameter unit based on at least one of the current block's position and size. Furthermore, a video decoding method and video decoding apparatus are disclosed that perform matching between a current block and a current quantization parameter unit based on at least one of the current block's position and size.
[0011] In addition, a computer-readable recording medium is disclosed, which contains a program for causing a computer to execute a video encoding method and a video decoding method according to one embodiment of the present disclosure. [Means for solving the problem]
[0012] A video decoding method is provided, which includes the steps of: determining a predicted quantization parameter for a current quantization group determined by at least one of block partitioning information and block size information; determining a differential quantization parameter for the current quantization group; determining a quantization parameter for the current quantization group based on the predicted quantization parameter and the differential quantization parameter for the current quantization group; and dequantizing the current blocks included in the current quantization group using the quantization parameter for the current quantization group.
[0013] A video decoding device is provided, which includes a processor that determines a predicted quantization parameter for the current quantization group determined by at least one of block partitioning information and block size information, determines a differential quantization parameter for the current quantization group, determines a quantization parameter for the current quantization group based on the predicted quantization parameter and the differential quantization parameter for the current quantization group, and dequantizes the current block using the quantization parameter for the current quantization group.
[0014] A video decoding method is provided, which includes the steps of: matching the current block with a current quantization parameter unit based on at least one of the current block's position and size; obtaining a predicted quantization parameter related to the current quantization parameter unit; obtaining a differential quantization parameter related to the current quantization parameter unit; determining the quantization parameter of the current quantization parameter unit based on the predicted quantization parameter and the differential quantization parameter; and dequantizing the current block using the quantization parameter of the current quantization parameter unit.
[0015] A video decoding device is provided, which includes a processor that matches the current block with a current quantization parameter unit based on at least one of the current block's position and size, obtains a predicted quantization parameter related to the current quantization parameter unit, obtains a differential quantization parameter related to the current quantization parameter unit, determines the quantization parameter of the current quantization parameter unit based on the predicted quantization parameter and the differential quantization parameter, and dequantizes the current block using the quantization parameter of the current quantization parameter unit.
[0016] A recording medium that can be recorded on a computer is provided, on which a program for performing the aforementioned video encoding method and video decoding method is recorded.
[0017] The technical problems addressed by this embodiment are not limited to those described above, and other technical problems can be inferred from the following embodiments. [Effects of the Invention]
[0018] By determining the quantization parameters of a block using quantization groups or quantization parameter units, the information necessary for determining the quantization parameters is efficiently compressed. [Brief explanation of the drawing]
[0019] [Figure 1A] This figure illustrates a block diagram of a video encoding device based on a tree-structured encoding unit according to one embodiment of the present disclosure. [Figure 1B] This figure illustrates a block diagram of a video decoding device based on a tree-structured encoding unit according to one embodiment. [Figure 2] This figure illustrates the process by which, according to one embodiment, a coding unit is currently divided and at least one coding unit is determined. [Figure 3] This diagram illustrates the process by which a non-square coding unit is divided and at least one coding unit is determined, according to one embodiment. [Figure 4] A diagram illustrating a process in which an encoding unit is divided based on at least one of block form information and division form information. [Figure 5] A diagram illustrating a method for determining a predetermined encoding unit among an odd number of encoding units according to an embodiment. [Figure 6] A diagram illustrating an order in which a plurality of encoding units are processed when a current encoding unit is divided and a plurality of encoding units are determined according to an embodiment. [Figure 7] A diagram illustrating a process in which a current encoding unit is determined to be divided into an odd number of encoding units when the encoding units cannot be processed in a predetermined order according to an embodiment. [Figure 8] A diagram illustrating a process in which a first encoding unit is divided and at least one encoding unit is determined according to an embodiment. [Figure 9] A diagram illustrating that when a non-square second encoding unit determined by dividing the first encoding unit satisfies a predetermined condition, the form in which the second encoding unit can be divided is restricted according to an embodiment. [Figure 10] A diagram illustrating a process in which a square encoding unit is divided when division form information cannot indicate division into four square encoding units according to an embodiment. [Figure 11] A diagram illustrating that the processing order among a plurality of encoding units can be different depending on the division process of the encoding units according to an embodiment. [Figure 12] A diagram illustrating a process in which the depth of an encoding unit is determined by a change in the form and size of the encoding unit when the encoding unit is recursively divided and a plurality of encoding units are determined according to an embodiment. [Figure 13] A diagram illustrating the depth determined by the form and size of an encoding unit according to an embodiment, and an index (PID: part index) for encoding unit classification. [Figure 14]This figure illustrates one embodiment in which multiple encoding units are determined from multiple predetermined data units contained in a picture. [Figure 15] This figure illustrates a processing block that serves as a criterion for determining the order in which reference coding units included in a picture are determined, according to one embodiment. [Figure 16] This figure shows a video decoding device that determines the quantization parameters of a block and decodes the residual data of the block using the determined quantization parameters. [Figure 17A] This figure illustrates an embodiment in which the quantization group is determined by the number of quadtree divisions. [Figure 17B] This figure illustrates an embodiment in which the quantization group is determined by the number of quadtree divisions. [Figure 17C] This figure illustrates an embodiment in which the quantization group is determined by the number of quadtree divisions. [Figure 17D] This figure illustrates an embodiment in which the quantization group is determined by the number of quadtree divisions. [Figure 18A] This figure illustrates one embodiment of a method for determining the quantization group in the largest encoded block to which a non-quadtree partitioning is applied. [Figure 18B] This figure illustrates one embodiment of a method for determining the quantization group in the largest encoded block to which a non-quadtree partitioning is applied. [Figure 18C] This figure illustrates one embodiment of a method for determining the quantization group in the largest encoded block to which a non-quadtree partitioning is applied. [Figure 19] This diagram illustrates the syntax for decoding the differential quantization parameters contained in a bitstream, given that both quadtree and non-quadtree partitioning are permitted. [Figure 20] This diagram illustrates a video decoding method in which the quantization parameters of a block are determined by the quantization group, and the residual data of the block is decoded using the determined quantization parameters. [Figure 21]This figure shows one embodiment of a quantized parameter unit structure and an encoded block tree structure. [Figure 22A] This diagram illustrates the method for determining the quantization parameter unit corresponding to the current block. [Figure 22B] This diagram illustrates the method for determining the quantization parameter unit corresponding to the current block. [Figure 23A] The correspondence between blocks and quantization parameter units is illustrated. [Figure 23B] The correspondence between blocks and quantization parameter units is illustrated. [Figure 24] This diagram illustrates a video decoding method in which a quantization parameter unit determines the quantization parameters of a block, and the residual data of the block is decoded using the determined quantization parameters. [Modes for carrying out the invention]
[0020] A video decoding method is provided, which includes the steps of: determining a predicted quantization parameter for a current quantization group determined by at least one of block partitioning information and block size information; determining a differential quantization parameter for the current quantization group; determining a quantization parameter for the current quantization group based on the predicted quantization parameter and the differential quantization parameter for the current quantization group; and dequantizing the current blocks included in the current quantization group using the quantization parameter for the current quantization group. A video decoding apparatus is also provided, which includes a process for performing the video decoding method.
[0021] A video decoding method is provided, which includes the steps of: matching the current block with a current quantization parameter unit based on at least one of the current block's position and size; obtaining a predicted quantization parameter related to the current quantization parameter unit; obtaining a differential quantization parameter related to the current quantization parameter unit; determining the quantization parameter of the current quantization parameter unit based on the predicted quantization parameter and the differential quantization parameter; and dequantizing the current block using the quantization parameter of the current quantization parameter unit. A video decoding apparatus is also provided, which includes a process for performing the video decoding method.
[0022] The advantages, features, and methods for achieving the disclosed embodiments will become clearer with reference to the embodiments described below, along with the accompanying drawings. However, this disclosure is not limited to the embodiments disclosed below and can be embodied in a variety of other forms, and these embodiments are provided only to complete the disclosure and to fully inform those skilled in the art of the scope of the invention of the field to which this disclosure belongs.
[0023] This specification briefly explains the terms used herein and then describes the disclosed embodiments in detail.
[0024] The terminology used herein has been selected as widely used and common terms as possible, taking into account the function described herein, although this may vary depending on the intent of engineers in the relevant field, case law, or the emergence of new technologies. In certain cases, the applicant has also selected terms at their discretion, in which case their meaning will be described in detail in the description of the invention. Accordingly, the terminology used herein should not be merely a set of names, but should be defined based on the meaning of the term and the overall content of this disclosure.
[0025] In this specification, singular expressions include plural expressions unless the context clearly identifies them as singular.
[0026] Throughout the specification, when a part "includes" a component, it means, unless otherwise specifically stated, that it does not exclude other components, but may include other components. Furthermore, the term "part" as used in the specification refers to software, hardware components such as FPGAs or ASICs, and a "part" performs a certain role. However, "part" is not limited to software or hardware. A "part" can also be configured to reside on an addressable recording medium and to cause one or more processors to regenerate. Thus, as an example, a "part" includes components such as software components, object-oriented software components, class components, and task components, as well as processes, functions, attributes, procedures, subroutines, segments of program code, drivers, firmware, microcode, circuits, data, databases, data structures, tables, arrays, and variables. The components and the functions provided in a "part" may be combined into a further number of components and "parts," or further separated into additional components and "parts."
[0027] The "current block" refers to one of the coding unit, prediction unit, and transformation unit currently being coded or decoded. If, for the sake of clarity, it is necessary to distinguish other types of blocks such as prediction units and transformation units, the terms "current coding block," "current prediction block," and "current transformation block" may also be used. A "lower block" refers to a data unit separated from the "current block," and a "higher block" refers to the data unit containing the "current block."
[0028] Hereinafter, "sample" refers to data assigned to a sampling position in the video, and thus data that is subject to processing. For example, in a video in the spatial domain, pixel values and transformation coefficients on the transformation domain are also samples. A unit containing at least one such sample can be defined as a block.
[0029] In the following description, with reference to the attached drawings, this embodiment will be described in detail so that it can be easily implemented by those skilled in the art in which this disclosure pertains. In order to clearly illustrate this disclosure, parts of the drawings that are not relevant to the description will be omitted.
[0030] Figure 1A illustrates a block diagram of a video encoding device 100 based on a tree-structured encoding unit according to one embodiment of the present disclosure.
[0031] The video encoding device 100 includes an encoding unit 110 and a bitstream generation unit 120.
[0032] The encoding unit 110 divides a picture, or slices contained within a picture, into multiple maximum encoding units based on the size of the maximum encoding unit. These maximum encoding units are data units with sizes such as 32x32, 64x64, 128x128, and 256x256, and are also square data units with dimensions of 2 squared on both sides. The encoding unit 110 can provide the bitstream generation unit 120 with maximum encoding unit size information indicating the size of the maximum encoding unit. The bitstream generation unit 120 can then include this maximum encoding unit size information in the bitstream.
[0033] The encoding unit 110 divides the maximum encoding unit to determine the encoding units. Whether or not the encoding units are divided is determined by rate-distortion optimization, which assesses whether or not the division of the encoding units is efficient. Then, division information indicating whether or not the encoding units have been divided may be generated. This division information can also be expressed in flag form.
[0034] A coding unit can also be divided in various ways. For example, a square coding unit can be divided into four square coding units, each having half the width and height. The square coding unit can also be divided into two rectangular coding units, each having half the width. The square coding unit can also be divided into two rectangular coding units, each having half the height. The square coding unit can also be divided into three coding units by dividing its width or height in a 1:2:1 ratio.
[0035] A rectangular coding unit with a width twice its height can also be divided into two square coding units. A rectangular coding unit with a width twice its height can also be divided into two rectangular coding units with a width four times its height. A rectangular coding unit with a width twice its height can also be divided into two rectangular coding units and one square coding unit by dividing its width in a 1:2:1 ratio.
[0036] Similarly, a rectangular coding unit whose height is twice its width can be divided into two square coding units. Furthermore, a rectangular coding unit whose height is twice its width can also be divided into two rectangular coding units whose height is four times its width. Similarly, a rectangular coding unit whose height is twice its width can be divided into two rectangular coding units and one square coding unit by dividing its height in a 1:2:1 ratio.
[0037] If two or more division methods are available in the video encoding device 100, information about the division method used for the encoding unit is determined for each picture from among the division methods available in the video encoding device 100. Therefore, it is also determined that only a specific division method is used for each picture. If the video encoding device 100 uses only one division method, information about the division method used for the encoding unit is not determined separately.
[0038] For coding units of a specific size, they can also be divided using a specific division method. For example, if the coding unit size is 256x265, the coding unit can be configured to be divided into only four square coding units, each with half the width and height.
[0039] When the partitioning information of an encoded unit indicates that the encoded unit is partitioned, partitioning format information indicating the partitioning method of the encoded unit may be generated. If there is only one partitioning method that can be used in the picture to which the encoded unit belongs, partitioning format information is not generated. If the partitioning method is determined adaptively based on the encoded information surrounding the encoded unit, partitioning format information is not generated.
[0040] As mentioned above, the current picture's video data is divided into the largest encoding unit, depending on the maximum size of the encoding unit. This largest encoding unit may include encoding units that are hierarchically divided from the largest encoding unit. The division pattern of the higher-level encoding unit can determine the shape and position of the lower-level encoding units. Furthermore, a minimum encoding unit size that limits the division of encoding units is predetermined.
[0041] The encoding unit 110 compares the encoding efficiency when the encoding unit is hierarchically divided with the encoding efficiency when the encoding unit is not divided. Based on the comparison result, the encoding unit 110 decides whether or not to divide the encoding unit. If it is determined that dividing the encoding unit is more efficient, the encoding unit 110 divides the encoding unit hierarchically. If the comparison result is determined that not dividing the encoding unit is more efficient, the encoding unit is not divided. The decision on whether or not to divide the encoding unit is made independently of the decision on whether or not to divide other adjacent encoding units.
[0042] The finally divided coding units are also predicted by intra-prediction or inter-prediction. Intra-prediction is a method of predicting the samples of a prediction unit by utilizing reference samples around the prediction unit. Inter-prediction is a method of predicting the samples of a prediction unit by obtaining reference samples from the reference picture currently referenced by the picture.
[0043] The encoding unit 110 can apply multiple intra-prediction methods to each prediction unit for intra-prediction and select the most efficient intra-prediction method. These intra-prediction methods include directional modes such as DC mode, planar mode, vertical mode, and horizontal mode.
[0044] This intra-prediction is also performed for each prediction unit when the restored samples around the coding unit are used as reference samples. However, when the restored samples inside the coding unit are used as reference samples, the restoration of the reference samples inside the coding unit must take precedence over the prediction, so the prediction order of the prediction units may be subordinate to the transformation order of the transformation units. Therefore, when the restored samples inside the coding unit are used as reference samples, for each prediction unit, only the intra-prediction method relating to the transformation unit corresponding to the prediction unit is determined, and the actual intra-prediction is also performed for each transformation unit.
[0045] The encoding unit 110 can select the most efficient interpretation method by determining the optimal motion vector and reference picture. The encoding unit determination unit 120 can determine multiple motion vector candidates from spatially and temporally adjacent encoding units from the current encoding unit for interpretation, and determine the most efficient motion vector among them as the motion vector. Similarly, it can determine multiple reference picture candidates from spatially and temporally adjacent encoding units from the current encoding unit, and determine the most efficient reference picture among them. In this embodiment, the reference picture is also determined from a pre-determined list of reference pictures for the current picture. In this embodiment, for prediction accuracy, the most efficient motion vector among the multiple motion vector candidates is determined as the predicted motion vector, the predicted motion vector is corrected, and the motion vector is determined. This interpretation is also performed in parallel for each prediction unit within the encoding unit.
[0046] The encoding unit 110 can recover the encoding unit by obtaining only the information indicating the motion vector and the reference picture in skip mode. In skip mode, all encoding information, including the residual signal, is omitted except for the information indicating the motion vector and the reference picture. Since the residual signal is omitted, skip mode can be used when the accuracy of the prediction is very high.
[0047] The partition mode used may be restricted depending on the prediction method related to the prediction unit. For example, only partition modes related to prediction units of size 2Nx2N,NxN are applicable to intra prediction, while partition modes related to prediction units of size 2Nx2N,2NxN,Nx2N,NxN may be applicable to inter prediction. Furthermore, only partition modes related to prediction units of size 2Nx2N may be applicable to the skip mode of inter prediction. In the video encoding device 100, the partition modes permitted for each prediction method are also changed by the encoding efficiency.
[0048] The video encoding device 100 can perform conversions based on encoding units. The video encoding device 100 can convert residual data, which is the difference between the original value and the predicted value related to a pixel included in an encoding unit, through a predetermined process. For example, the video encoding device 100 can perform lossy compression on the residual data via quantization and DCT / DST conversion. Alternatively, the video encoding device 100 can perform lossless compression on the residual data without quantization.
[0049] In conclusion, the coding unit 110 determines the most efficient prediction method for the current coding unit from among multiple intra-prediction methods and inter-prediction methods. Then, the coding unit 110 determines the prediction method for the current coding unit based on the coding efficiency of the prediction result. Similarly, the coding unit 110 can determine the conversion method based on the coding efficiency of the conversion result. The coding efficiency of the coding unit is finally determined by the method for determining the most efficient prediction method and conversion method for the coding unit. The coding unit 110 finally determines the hierarchical structure of the largest coding unit based on the coding efficiency of the divided coding units.
[0050] The coding unit 110 can measure the coding efficiency of the coding unit, the prediction efficiency of the prediction method, etc., using a rate-distortion optimization technique based on the Lagrangian multiplier.
[0051] The encoding unit 110 can generate partitioning information indicating the partitioning of the encoding unit based on the determined hierarchical structure of the maximum encoding unit. The encoding unit 110 can then generate partition mode information for determining the prediction unit and conversion unit partitioning information for determining the conversion unit for the encoding unit after partitioning is complete. Furthermore, if there are two or more partitioning methods for the encoding unit, the encoding unit 110 can generate partitioning form information indicating the partitioning method along with the partitioning information. Finally, the encoding unit 110 can generate information about the prediction method and conversion method used for the prediction unit and conversion unit.
[0052] The bitstream generation unit 120 can output the information generated by the encoding unit 110 in bitstream format using a hierarchical structure of the largest encoding unit.
[0053] A method for determining the coding unit, prediction unit, and transformation unit using a tree structure of the maximum coding unit according to one embodiment will be described in detail later with reference to Figures 3 to 12.
[0054] Figure 1B illustrates a block diagram of a video decoding device 150 based on a tree-structured encoding unit according to one embodiment.
[0055] The video decoding device 150 includes a receiving unit 160 and a decoding unit 170.
[0056] The definitions of various terms such as coding unit, prediction unit, conversion unit, and various division information for the decoding operation of the video decoding device 150 according to one embodiment are the same as those explained with reference to Figure 1 and the video coding device 100. Furthermore, although the purpose of the video decoding device 150 is to restore video data, the various coding methods used in the video coding device 100 are also applied to the video decoding device 150.
[0057] The receiving unit 160 receives and parses the bitstream related to the encoded video. The decoding unit 170 extracts the information necessary for decoding from the parsed bitstream, categorized by the maximum encoding unit, and provides it to the decoding unit 170. The decoding unit 170 can extract information about the maximum size of the encoding unit of the current picture from the header, sequence parameter set, or picture parameter set related to the current picture.
[0058] Furthermore, the decoding unit 170 extracts partitioning information related to the encoding unit in a tree structure from the purged bitstream, for each maximum encoding unit. The extracted partitioning information is output to the decoding unit 170. The decoding unit 170 can then partition the maximum encoding unit using the extracted partitioning information and determine the tree structure of the maximum encoding unit.
[0059] The segmentation information extracted by the decoding unit 170 is segmentation information for a tree structure determined by the video encoding device 100 to generate the minimum encoding error. Therefore, the video decoding device 150 can decode the data using an encoding scheme that generates the minimum encoding error and restore the video.
[0060] The decoding unit 170 can extract partitioning information related to data units such as prediction units and transformation units contained within the coding unit. For example, the decoding unit 170 can extract information about the most efficient partition mode related to the prediction unit. Furthermore, the decoding unit 170 can extract transformation partitioning information related to the most efficient tree structure in the transformation unit.
[0061] Furthermore, the decoding unit 170 can obtain information on the most efficient prediction method for the prediction units separated from the coding units. The decoding unit 170 can also obtain information on the most efficient conversion method for the conversion units separated from the coding units.
[0062] The decoding unit 170 extracts information from the bitstream using the method by which the bitstream generation unit 120 of the video encoding device 100 constructs the bitstream.
[0063] The decoding unit 170 can divide the largest coding unit into coding units with the most efficient tree structure based on the partitioning information. Then, the decoding unit 170 can divide the coding unit into prediction units based on information about the partition mode. The decoding unit 170 can divide the coding unit into transformation units based on transformation partitioning information.
[0064] The decoding unit 170 can predict the prediction unit based on information about the prediction method. The decoding unit 170 can then dequantize and detransform the residual data corresponding to the difference between the original value and the predicted value of the pixel, based on information about the transformation method. Furthermore, the decoding unit 170 can reconstruct the pixel of the encoding unit using the prediction result of the prediction unit and the transformation result of the transformation unit.
[0065] Figure 2 illustrates the process by which the video decoding device 150 divides the current encoding unit and determines at least one encoding unit, according to one embodiment.
[0066] In one embodiment, the video decoding device 150 can determine the shape of the encoded unit using block shape information, and can determine how the encoded unit will be divided using division shape information. That is, the method of dividing the encoded unit indicated by the division shape information can be determined by the block shape indicated by the block shape information used by the video decoding device 150.
[0067] In one embodiment, the video decoding device 150 can utilize block shape information indicating that the current encoding unit is square-shaped. For example, the video decoding device 150 can determine, based on the division shape information, whether to leave the square encoding unit undivided, divide it vertically, divide it horizontally, or divide it into four encoding units. Referring to Figure 2, if the block shape information of the current encoding unit 200 indicates that it is square-shaped, the decoding unit 180 can determine, based on the division shape information indicating that it will not be divided, whether to leave the encoding unit 210a, which has the same size as the current encoding unit 200, undivided, or to divide it into encoding units 210b, 210c, 210d, etc., based on the division shape information indicating a predetermined division method.
[0068] Referring to Figure 2, in one embodiment, the video decoding device 150 can determine two coding units 210b obtained by vertically dividing the current coding unit 200 based on division pattern information indicating that it is divided vertically. The video decoding device 150 can determine two coding units 210c obtained by horizontally dividing the current coding unit 200 based on division pattern information indicating that it is divided horizontally. The video decoding device 150 can determine four coding units 210d obtained by vertically and horizontally dividing the current coding unit 200 based on division pattern information indicating that it is divided vertically and horizontally. However, the division patterns in which a square coding unit can be divided are not limited to the above-described patterns, and may include a variety of patterns that the division pattern information can indicate. The predetermined division patterns in which a square coding unit is divided will be described in detail below through various embodiments.
[0069] Figure 3 illustrates the process by which, in one embodiment, the video decoding device 150 divides a non-square encoding unit and determines at least one encoding unit.
[0070] In one embodiment, the video decoding device 150 can utilize block shape information indicating that the current encoding unit is non-square. The video decoding device 150 can determine, based on the division shape information, whether to divide the non-square current encoding unit or to divide it in a predetermined way. Referring to Figure 3, if the block shape information of the current encoding unit 300 or 350 indicates that it is non-square, the video decoding device 150 can determine, based on the division shape information indicating that it will not divide the encoding unit 310 or 360 which has the same size as the current encoding unit 300 or 350, or it can determine the divided encoding units 320a, 320b, 330a, 330b, 330c, 370a, 370b, 380a, 380b, and 380c based on the division shape information indicating a predetermined division method. The predetermined division method for dividing the non-square encoding unit will be specifically described below through various embodiments.
[0071] In one embodiment, the video decoding device 150 can use the division pattern information to determine the form in which the coding unit is divided, in which case the division pattern information can indicate the number of at least one coding unit generated by dividing the coding unit. Referring to Figure 3, if the division pattern information indicates that the current coding unit 300 or 350 is divided into two coding units, the video decoding device 150 can divide the current coding unit 300 or 350 based on the division pattern information and determine the two coding units 320a, 320b, or 370a, 370b included in the current coding unit.
[0072] In one embodiment, when the video decoding device 150 divides a non-square current coding unit 300 or 350 based on the division shape information, it can divide the current coding unit by considering the position of the longer side of the non-square current coding unit 300 or 350. For example, the video decoding device 150 can consider the shape of the current coding unit 300 or 350 and divide the current coding unit 300 or 350 in a direction that divides the longer side of the current coding unit 300 or 350, thereby determining a plurality of coding units.
[0073] In one embodiment, if the division information indicates that the encoding unit is divided into an odd number of blocks, the video decoding device 150 can determine the odd number of encoding units currently included in the encoding unit 300 or 350. For example, if the division information indicates that the current encoding unit 300 or 350 is divided into three encoding units, the video decoding device 150 can divide the current encoding unit 300 or 350 into three encoding units 330a, 330b, 330c, 380a, 380b, and 380c. In one embodiment, the video decoding device 150 can determine the odd number of encoding units currently included in the encoding unit 300 or 350, and the sizes of the determined encoding units are not all the same. For example, among the determined odd number of coding units 330a, 330b, 330c, 380a, 380b, and 380c, the size of a given coding unit 330b or 380b may be different from the size of the other coding units 330a, 330c, 380a, and 380c. In other words, the coding units that can be determined by dividing the currently coding unit 300 or 350 may have multiple types of sizes.
[0074] In one embodiment, if the division information indicates that the coding unit is divided into an odd number of blocks, the video decoding device 150 can determine the odd number of coding units currently included in the coding unit 300 or 350, and furthermore, the video decoding device 150 can impose a predetermined restriction on at least one of the odd number of coding units generated by the division. Referring to Figure 3, the video decoding device 150 can make the decoding process for the central coding unit 330b, 380b among the three coding units 330a, 330b, 330c, 380a, 380b, 380c generated by the division of the current coding unit 300 or 350 different from that for the other coding units 330a, 330c, 380a, 380c. For example, the video decoding device 150 can restrict the centrally located coding units 330b and 380b from being further divided, or restrict them to being divided only a predetermined number of times, unlike the other coding units 330a, 330c, 380a, and 380c.
[0075] Figure 4 illustrates the process by which the video decoding device 150 divides an encoded unit based on at least one of block-type information and division-type information, according to one embodiment.
[0076] In one embodiment, the video decoding device 150 can decide whether or not to divide a square-shaped first coding unit 400 into coding units based on at least one of block shape information and division shape information. In one embodiment, if the division shape information indicates that the first coding unit 400 is divided horizontally, the video decoding device 150 can divide the first coding unit 400 horizontally and determine the second coding unit 410. In one embodiment, the terms first coding unit, second coding unit, and third coding unit used are terms used to understand the before-and-after relationship between coding units. For example, if the first coding unit is divided, the second coding unit is determined, and if the second coding unit is divided, the third coding unit may be determined. In the following, the relationship between the first coding unit, second coding unit, and third coding unit used is understood to be due to the aforementioned features.
[0077] In one embodiment, the video decoding device 150 can decide whether to divide the determined second coding unit 410 into coding units or not, based on at least one of the block shape information and the division shape information. Referring to Figure 4, the video decoding device 150 divides the first coding unit 400 based on at least one of the block shape information and the division shape information, and divides the determined non-square second coding unit 410 into at least one third coding unit 420a, 420b, 420c, 420d, etc., or does not divide the second coding unit 410. The video decoding device 150 can acquire at least one of block shape information and division shape information, and based on at least one of the acquired block shape information and division shape information, the video decoding device 150 can divide the first coding unit 400 into, for example, a plurality of second coding units 410 of various shapes, and the second coding unit 410 can also be divided in the same way that the first coding unit 400 was divided, based on at least one of the block shape information and division shape information. In one embodiment, when the first coding unit 400 is divided into second coding units 410 based on at least one of the block shape information and division shape information relating to the first coding unit 400, the second coding unit 410 can also be divided into, for example, third coding units 420a, 420b, 420c, 420d, etc., based on at least one of the block shape information and division shape information relating to the second coding unit 410. In other words, each coding unit is recursively divided based on at least one of the division form information and block form information associated with each coding unit. Methods that can be used for the recursive division of coding units will be described later through various embodiments.
[0078] In one embodiment, the video decoding device 150 can decide whether to divide each of the third coding units 420a, 420b, 420c, 420d, etc. into coding units, or whether to leave the second coding unit 410 undivided, based on at least one of the block shape information and the division shape information. In one embodiment, the video decoding device 150 can divide a non-square second coding unit 410 into an odd number of third coding units 420b, 420c, 420d. The video decoding device 150 can set predetermined restrictions on a predetermined third coding unit among the odd number of third coding units 420b, 420c, 420d. For example, the video decoding device 150 can restrict the coding unit 420c located in the middle of the odd number of third coding units 420b, 420c, 420d so that it cannot be divided any further, or so that it must be divided up to a set number of times. Referring to Figure 4, the video decoding device 150 can restrict the middle coding unit 420c, among the odd number of third coding units 420b, 420c, and 420d contained in the non-square second coding unit 410, so that it is not further divided, or so that it is divided into a predetermined division pattern (for example, so that it is divided into only four coding units, or so that it is divided into a pattern corresponding to the pattern in which the second coding unit 410 is divided), or so that it is divided only a predetermined number of times (for example, so that it is divided only n times; n>0). However, the above restrictions on the middle coding unit 420c are merely embodiments and should not be interpreted as being limited to the above embodiments, but rather should be interpreted as including a variety of restrictions that allow the middle coding unit 420c to be decoded differently from the other coding units 420b and 420d.
[0079] In one embodiment, the video decoding device 150 can acquire at least one of the block shape information and the division shape information used to divide the currently encoded unit at a predetermined position within the currently encoded unit.
[0080] In one embodiment, the video decoding device 150 can select one encoding unit when the encoding unit is currently divided into a predetermined number of encoding units. There are various methods for selecting one of multiple encoding units, and such methods will be described later through the various embodiments described below.
[0081] In one embodiment, the video decoding device 150 can divide the current encoding unit into multiple encoding units and determine the encoding unit at a predetermined position.
[0082] Figure 5 illustrates a method by which the video decoding device 150 determines a coding unit at a predetermined position among an odd number of coding units, according to one embodiment.
[0083] In one embodiment, the video decoding device 150 can utilize information indicating the position of each of the odd-numbered coding units in order to determine the coding unit located in the middle of the odd-numbered coding units. Referring to Figure 5, the video decoding device 150 can divide the current coding unit 500 and determine the odd-numbered coding units 520a, 520b, and 520c. The video decoding device 150 can utilize information about the positions of the odd-numbered coding units 520a, 520b, and 520c to determine the middle coding unit 520b. For example, the video decoding device 150 can determine the middle coding unit 520b by determining the positions of the coding units 520a, 520b, and 520c based on information indicating the positions of predetermined samples contained in the coding units 520a, 520b, and 520c. Specifically, the video decoding device 150 can determine the coding unit 520b located in the middle by determining the positions of coding units 520a, 520b, and 520c based on information indicating the positions of samples 530a, 530b, and 530c at the upper left end of coding units 520a, 520b, and 520c.
[0084] In one embodiment, the information indicating the position of the upper left-hand sample 530a, 530b, 530c included in the coding units 520a, 520b, 520c, respectively, may include information about the position or coordinates of the coding units 520a, 520b, 520c within the picture. In one embodiment, the information indicating the position of the upper left-hand sample 530a, 530b, 530c included in the coding units 520a, 520b, 520c, respectively, may include information indicating the width or height of the coding units 520a, 520b, 520c currently included in coding unit 500, and such width or height corresponds to information indicating the difference between coordinates within the picture of the coding units 520a, 520b, 520c. In other words, the video decoding device 150 can determine the middle coding unit 520b by directly using information about the position or coordinates of coding units 520a, 520b, and 520c within the picture, or by using information about the width or height of coding units corresponding to the difference between coordinates.
[0085] In one embodiment, information indicating the position of sample 530a at the upper left end of upper coding unit 520a can be expressed in (xa,ya) coordinates, information indicating the position of sample 530b at the upper left end of middle coding unit 520b can be expressed in (xb,yb) coordinates, and information indicating the position of sample 530c at the upper left end of lower coding unit 520c can be expressed in (xc,yc) coordinates. The video decoding device 150 can determine the middle coding unit 520b by using the coordinates of the upper left end samples 530a, 530b, and 530c included in coding units 520a, 520b, and 520c, respectively. For example, when the coordinates of samples 530a, 530b, and 530c at the top left are sorted in ascending or descending order, the coding unit 520b containing the coordinates (xb,yb) of sample 530b located in the middle can be determined as the middle coding unit among the coding units 520a, 520b, and 520c determined by the division of the currently selected coding unit 500. However, the coordinates indicating the positions of samples 530a, 530b, and 530c at the top left can represent absolute positions within the picture. Furthermore, it is also possible to use the (dxb,dyb) coordinates, which indicate the relative position of sample 530b at the top left of the middle coding unit 520b, and the (dxc,dyc) coordinates, which indicate the relative position of sample 530c at the top left of the bottom coding unit 520c, based on the position of sample 530a at the top left of the top coding unit 520a. Furthermore, the method of determining the coding unit at a predetermined position by using the coordinates of a sample as information indicating the position of the sample included in the coding unit should not be interpreted as being limited to the method described above, but rather as a variety of arithmetic methods that can utilize the coordinates of a sample.
[0086] In one embodiment, the video decoding device 150 can divide the currently encoded unit 500 into multiple encoded units 520a, 520b, and 520c, and can select an encoded unit from among the encoded units 520a, 520b, and 520c according to a predetermined criterion. For example, the video decoding device 150 can select an encoded unit 520b of a different size from the encoded units 520a, 520b, and 520c.
[0087] In one embodiment, the video decoding device 150 can determine the width or height of each coding unit 520a, 520b, and 520c by using the (xa,ya) coordinates, which are information indicating the position of sample 530a at the upper left end of the upper coding unit 520a; the (xb,yb) coordinates, which are information indicating the position of sample 530b at the upper left end of the middle coding unit 520b; and the (xc,yc) coordinates, which are information indicating the position of sample 530c at the upper left end of the lower coding unit 520c. The video decoding device 150 can also determine the size of each coding unit 520a, 520b, and 520c by using the coordinates (xa,ya), (xb,yb), and (xc,yc), which are coordinates indicating the positions of the coding units 520a, 520b, and 520c.
[0088] In one embodiment, the video decoding device 150 can determine the width of the upper coding unit 520a as xb-xa and its height as yb-ya. In another embodiment, the video decoding device 150 can determine the width of the middle coding unit 520b as xc-xb and its height as yc-yb. In another embodiment, the video decoding device 150 can determine the width or height of the lower coding unit using the width or height of the current coding unit and the widths and heights of the upper coding unit 520a and the middle coding unit 520b. Based on the determined widths and heights of the coding units 520a, 520b, and 520c, the video decoding device 150 can determine a coding unit having a different size from the other coding units. Referring to Figure 5, the video decoding device 150 can determine the middle coding unit 520b, which has a different size from the upper coding unit 520a and the lower coding unit 520c, as the coding unit at a predetermined position. However, the process by which the aforementioned video decoding device 150 determines an encoding unit having a different size from other encoding units is merely one embodiment of determining an encoding unit at a predetermined position by utilizing the size of the encoding unit determined based on the sample coordinates. Therefore, various processes can be used to determine an encoding unit at a predetermined position by comparing the sizes of the encoding units determined by predetermined sample coordinates.
[0089] However, the sample positions considered in determining the position of the coding unit are not limited to the upper left corner as described above; it can also be interpreted that information about the positions of any sample included in the coding unit may be used.
[0090] In one embodiment, the video decoding device 150 can consider the shape of the current coding unit and select a coding unit at a predetermined position from an odd number of coding units determined by dividing the current coding unit. For example, if the current coding unit is non-square in shape, with a width greater than its height, the video decoding device 150 can determine a coding unit at a predetermined position along the horizontal direction. That is, the video decoding device 150 can determine one of the coding units that are located at different positions in the horizontal direction and impose restrictions on that coding unit. If the current coding unit is non-square in shape, with a height greater than its width, the video decoding device 150 can determine a coding unit at a predetermined position along the vertical direction. That is, the video decoding device 150 can determine one of the coding units that are located at different positions in the vertical direction and impose restrictions on that coding unit.
[0091] In one embodiment, the video decoding device 150 can utilize information indicating the position of each of the even-numbered coding units in order to determine the coding unit at a predetermined position among the even-numbered coding units. The video decoding device 150 can currently divide the coding unit and determine the even-numbered coding units, and can use information about the positions of the even-numbered coding units to determine the coding unit at the predetermined position. The specific process involved is the same as the process for determining the coding unit at a predetermined position (for example, the middle position) among the odd-numbered coding units described in Figure 5, so it will be omitted here.
[0092] In one embodiment, when a non-square current coding unit is divided into multiple coding units, predetermined information relating to the coding unit at a predetermined position can be used during the division process to determine the coding unit at a predetermined position among the multiple coding units. For example, the video decoding device 150 can use at least one of the block shape information and division shape information stored in the sample included in the middle coding unit during the division process to determine the coding unit located in the middle among the multiple coding units into which the current coding unit has been divided.
[0093] Referring to Figure 5, the video decoding device 150 can divide the current encoded unit 500 into multiple encoded units 520a, 520b, and 520c based on at least one of the block shape information and the division shape information, and can determine the encoded unit 520b located in the middle of the multiple encoded units 520a, 520b, and 520c. Furthermore, the video decoding device 150 can determine the encoded unit 520b located in the middle by considering the position from which at least one of the block shape information and the division shape information is acquired. That is, if at least one of the block shape information and the division shape information of the current encoded unit 500 is acquired from a sample 540 located in the middle of the current encoded unit 500, and the current encoded unit 500 is divided into multiple encoded units 520a, 520b, and 520c based on at least one of the block shape information and the division shape information, the encoded unit 520b containing the sample 540 can be determined to be the encoded unit located in the middle. However, the information used to determine the central coding unit is not limited to interpreting at least one of the block-type information and segment-type information; rather, various types of information are used in the process of determining the central coding unit.
[0094] In one embodiment, predetermined information for identifying an encoding unit at a predetermined location can be obtained from a predetermined sample included in the encoding unit to be determined. Referring to Figure 5, the video decoding device 150 can use at least one of block shape information and division shape information obtained from a sample at a predetermined location within the current encoding unit 500 (for example, a sample located in the middle of the current encoding unit 500) in order to determine an encoding unit at a predetermined location (for example, an encoding unit located in the middle of the multiple encoding units that have been divided into multiple encoding units) among the multiple encoding units 520a, 520b, and 520c that have been determined by dividing the current encoding unit 500. That is, the video decoding device 150 can determine the sample at the predetermined location by considering the block shape of the current encoding unit 500, and the video decoding device 150 can determine an encoding unit 520b in which a sample from which predetermined information (for example, at least one of block shape information and division shape information) can be obtained can be obtained among the multiple encoding units 520a, 520b, and 520c that have been determined by dividing the current encoding unit 500 can be determined, and can set a predetermined restriction. Referring to Figure 5, in one embodiment, the video decoding device 150 can determine a sample 540 located in the middle of the currently encoded unit 500 as a sample from which predetermined information can be obtained, and the video decoding device 150 can impose predetermined restrictions on the encoded unit 520b containing such sample 540 during the decoding process. However, the position of the sample from which predetermined information can be obtained is not limited to the aforementioned position, but can also be interpreted as any sample at any position within the encoded unit 520b that is being determined in order to impose restrictions.
[0095] In one embodiment, the location of a sample from which predetermined information can be obtained is also determined by the shape of the currently encoded unit 500. In one embodiment, block shape information can determine whether the shape of the currently encoded unit is square or non-square, and the location of a sample from which predetermined information can be obtained can be determined by the shape. For example, the video decoding device 150 can use at least one of the information about the width of the currently encoded unit and the information about its height to determine that a sample located on a boundary that divides at least one of the width and height of the currently encoded unit in half is a sample from which predetermined information can be obtained. Another example is when the block shape information related to the currently encoded unit indicates that it is non-square, the video decoding device 150 can determine that one of the samples adjacent to the boundary that divides the longer side of the currently encoded unit in half is a sample from which predetermined information can be obtained.
[0096] In one embodiment, when the current coding unit is divided into multiple coding units, the video decoding device 150 can use at least one of block shape information and division shape information to determine the coding unit at a predetermined position among the multiple coding units. In one embodiment, the video decoding device 150 can obtain at least one of block shape information and division shape information from a sample at a predetermined position included in the coding unit, and the video decoding device 150 can divide the multiple coding units generated by the division of the current coding unit using at least one of the division shape information and block shape information obtained from a sample at a predetermined position included in each of the multiple coding units. That is, the coding unit is also divided recursively using at least one of the block shape information and division shape information obtained from a sample at a predetermined position included in each coding unit. The recursive division process of the coding unit has been explained with reference to Figure 4, so a detailed explanation is omitted.
[0097] In one embodiment, the video decoding device 150 can divide the current encoding unit and determine at least one encoding unit, and can determine the order in which such at least one encoding unit is decoded by a predetermined block (e.g., the current encoding unit).
[0098] Figure 6 illustrates the order in which multiple encoding units are processed when the video decoding device 150 divides the current encoding unit and determines multiple encoding units according to one embodiment.
[0099] In one embodiment, the video decoding device 150 can, based on block shape information and division shape information, vertically divide the first encoding unit 600 and determine second encoding units 610a and 610b, horizontally divide the first encoding unit 600 and determine second encoding units 630a and 630b, or divide the first encoding unit 600 vertically and horizontally and determine second encoding units 650a, 650b, 650c, and 650d.
[0100] Referring to Figure 6, the video decoding device 150 can determine the order in which the second coding units 610a and 610b, determined by dividing the first coding unit 600 vertically, are processed in the horizontal direction 610c. The video decoding device 150 can determine the processing order of the second coding units 630a and 630b, determined by dividing the first coding unit 600 horizontally, in the vertical direction 630c. The video decoding device 150 can process the second coding units 650a, 650b, 650c, and 650d, determined by dividing the first coding unit 600 vertically and horizontally, in a predetermined order (for example, a raster scan order or z scan order 650e, etc.) in which the coding units located in one row are processed before the coding units located in the next row are processed.
[0101] In one embodiment, the video decoding device 150 can recursively divide an encoding unit. Referring to Figure 6, the video decoding device 150 can divide the first encoding unit 600 and determine a plurality of encoding units 610a, 610b, 630a, 630b, 650a, 650b, 650c, and 650d, and can recursively divide each of the determined plurality of encoding units 610a, 610b, 630a, 630b, 650a, 650b, 650c, and 650d. The method for dividing the plurality of encoding units 610a, 610b, 630a, 630b, 650a, 650b, 650c, and 650d also corresponds to the method for dividing the first encoding unit 600. As a result, the multiple coding units 610a, 610b, 630a, 630b, 650a, 650b, 650c, and 650d are each independently divided into multiple coding units. Referring to Figure 6, the video decoding device 150 can vertically divide the first coding unit 600 to determine the second coding units 610a and 610b, and further decide whether to divide the second coding units 610a and 610b independently or not.
[0102] In one embodiment, the video decoding device 150 can divide the left second encoding unit 610a horizontally into third encoding units 620a and 620b, while the right second encoding unit 610b is not divided.
[0103] In one embodiment, the processing order of an encoded unit is also determined based on the process of dividing the encoded unit. In other words, the processing order of a divided encoded unit is also determined based on the processing order of the encoded unit immediately before division. The video decoding device 150 can determine the processing order of the third encoded units 620a and 620b, which are determined when the left second encoded unit 610a is divided, independently of the processing order of the right second encoded unit 610b. Since the left second encoded unit 610a is divided horizontally and the third encoded units 620a and 620b are determined, the third encoded units 620a and 620b are also processed vertically 620c. Furthermore, since the processing order of the left second encoded unit 610a and the right second encoded unit 610b corresponds to the horizontal direction 610c, the right encoded unit 610b may be processed after the third encoded units 620a and 620b included in the left second encoded unit 610a are processed vertically 620c. The above description is intended to explain the process by which the processing order of each encoding unit is determined by the encoding units before division. Therefore, it should not be interpreted as being limited to the above-described embodiment, but rather as being used in various ways in which encoding units, determined by being divided into various forms, can be processed independently in a predetermined order.
[0104] Figure 7 illustrates, in one embodiment, the process by which the video decoding device 150 determines that if a predetermined sequence of coding units cannot be processed, the current coding unit will be divided into an odd number of coding units.
[0105] In one embodiment, the video decoding device 150 can determine that the current coding unit is divided into an odd number of coding units based on the acquired block shape information and division shape information. Referring to Figure 7, the square-shaped first coding unit 700 is divided into non-square-shaped second coding units 710a and 710b, and the second coding units 710a and 710b are each independently divided into third coding units 720a, 720b, 720c, 720d, and 720e. In one embodiment, the video decoding device 150 can divide the left coding unit 710a of the second coding unit horizontally to determine multiple third coding units 720a and 720b, and the right coding unit 710b can be divided into an odd number of third coding units 720c, 720d, and 720e.
[0106] In one embodiment, the video decoding device 150 can determine whether the third coding units 720a, 720b, 720c, 720d, and 720e are processed in a predetermined order, and whether there are coding units that have been divided into an odd number of parts. Referring to Figure 7, the video decoding device 150 can recursively divide the first coding unit 700 and determine the third coding units 720a, 720b, 720c, 720d, and 720e. Based on at least one of the block shape information and the division shape information, the video decoding device 150 can determine whether the first coding unit 700, the second coding units 710a, 710b, or the third coding units 720a, 720b, 720c, 720d, and 720e are divided into an odd number of coding units in the form in which they are divided. For example, the encoding unit located on the right side of the second encoding units 710a and 710b is divided into an odd number of third encoding units 720c, 720d, and 720e. The order in which the multiple encoding units contained in the first encoding unit 700 are processed can be a predetermined order (for example, a z-scan order 730), and the video decoding device 150 can determine whether the third encoding units 720c, 720d, and 720e, which are determined by dividing the right-side second encoding unit 710b into an odd number of units, satisfy the conditions for being processed in the predetermined order.
[0107] In one embodiment, the video decoding device 150 can determine whether the third coding units 720a, 720b, 720c, 720d, and 720e included in the first coding unit 700 satisfy a condition that allows them to be processed in a predetermined order, and the condition relates to whether at least one of the width and height of the second coding units 710a and 710b is divided in half along the boundary of the third coding units 720a, 720b, 720c, 720d, and 720e. For example, the third coding units 720a and 720b, determined by dividing the height of the non-square left second coding unit 710a in half, satisfy the conditions. However, the boundaries of the third coding units 720c, 720d, and 720e, determined by dividing the right second coding unit 710b into three coding units, cannot divide the width or height of the right second coding unit 710b in half. Therefore, the third coding units 720c, 720d, and 720e are determined not to satisfy the conditions. In such cases of unsatisfied conditions, the video decoding device 150 determines that there is a disconnection in the scan order, and based on this determination, it can decide that the right second coding unit 710b is divided into an odd number of coding units. In one embodiment, when the video decoding device 150 divides the divided coding units into an odd number of coding units, it can set predetermined restrictions on the coding units at predetermined positions among the divided coding units. Since the content of such restrictions or predetermined positions have been explained through various embodiments, a detailed explanation is omitted here.
[0108] Figure 8 illustrates the process by which the video decoding device 150 divides the first coding unit 800 and determines at least one coding unit, according to one embodiment. According to one embodiment, the video decoding device 150 can divide the first coding unit 800 based on at least one of the block shape information and division shape information obtained via the receiving unit 160. The square-shaped first coding unit 800 can be divided into coding units having four square shapes, or into a plurality of non-square coding units. For example, referring to Figure 8, if the block shape information indicates that the first coding unit 800 is square, and the division shape information indicates that it is divided into non-square coding units, the video decoding device 150 can divide the first coding unit 800 into a plurality of non-square coding units. Specifically, if the division pattern information indicates that the first coding unit 800 is divided horizontally or vertically to determine an odd number of coding units, the video decoding device 150 can divide the square-shaped first coding unit 800 into second coding units 810a, 810b, 810c determined by vertical division as an odd number of coding units, or into second coding units 820a, 820b, 820c determined by horizontal division.
[0109] In one embodiment, the video decoding device 150 can determine whether the second coding units 810a, 810b, 810c, 820a, 820b, and 820c included in the first coding unit 800 satisfy the condition that they can be processed in a predetermined order. This condition relates to whether at least one of the width and height of the first coding unit 800 is divided in half along the boundaries of the second coding units 810a, 810b, 810c, 820a, 820b, and 820c. Referring to Figure 8, the boundaries of the second coding units 810a, 810b, and 810c, determined by vertically dividing the square-shaped first coding unit 800, cannot divide the width of the first coding unit 800 in half. Therefore, it is also determined that the first coding unit 800 cannot satisfy the condition that it can be processed in a predetermined order. Furthermore, since the boundaries of the second coding units 820a, 820b, and 820c, which are determined by horizontally dividing the square-shaped first coding unit 800, cannot divide the width of the first coding unit 800 in half, it is also determined that the first coding unit 800 cannot satisfy the condition for being processed in a predetermined order. In the event that such a condition is not satisfied, the video decoding device 150 determines that there is a discontinuation in the scan order, and based on the determination result, it can decide that the first coding unit 800 is divided into an odd number of coding units. In one embodiment, when the video decoding device 150 is divided into an odd number of coding units, it can set predetermined restrictions on the coding units at predetermined positions among the divided coding units, and such restrictions or predetermined positions have been explained through various embodiments, so a detailed explanation is omitted here.
[0110] In one embodiment, the video decoding device 150 can divide the first encoding unit and determine various forms of encoding units.
[0111] Referring to Figure 8, the video decoding device 150 can divide the square-shaped first coding unit 800, the non-square-shaped first coding unit 830, or 850 into coding units of various shapes.
[0112] Figure 9 illustrates, in one embodiment, that when the non-square-shaped second encoding unit determined by dividing the first encoding unit 900 satisfies predetermined conditions, the form in which the second encoding unit can be divided is limited.
[0113] In one embodiment, the video decoding device 150 can determine to divide the square-shaped first coding unit 900 into non-square-shaped second coding units 910a, 910b, 920a, and 920b based on at least one of the block shape information and division shape information obtained via the receiving unit 160. The second coding units 910a, 910b, 920a, and 920b can also be divided independently. As a result, the video decoding device 150 can determine whether to divide each of the second coding units 910a, 910b, 920a, and 920b into multiple coding units or not to divide them, based on at least one of the block shape information and division shape information relating to each of them. In one embodiment, the video decoding device 150 can determine third coding units 912a and 912b by dividing the non-square-shaped left second coding unit 910a, which was determined by dividing the first coding unit 900 vertically, horizontally. However, if the left second coding unit 910a is divided horizontally, the video decoding device 150 can restrict the right second coding unit 910b from being divided in the same horizontal direction as the left second coding unit 910a. If the right second coding unit 910b is divided in the same direction and the third coding units 914a and 914b are determined, the left second coding unit 910a and the right second coding unit 910b can be divided independently horizontally, thereby determining the third coding units 912a, 912b, 914a, and 914b. However, this is the same result as if the video decoding device 150 had divided the first coding unit 900 into four square second coding units 930a, 930b, 930c, and 930d based on at least one of the block shape information and the division shape information, which is inefficient from a video decoding perspective.
[0114] In one embodiment, the video decoding device 150 can divide the non-square second coding units 920a or 920b, which are determined by dividing the first coding unit 330 horizontally, vertically to determine third coding units 922a, 922b, 924a, and 924b. However, if the video decoding device 150 divides one of the second coding units (for example, the upper second coding unit 920a) vertically, for the reasons mentioned above, it can restrict the other second coding units (for example, the lower coding unit 920b) from being divided in the same vertical direction as the upper second coding unit 920a.
[0115] Figure 10 illustrates the process by which the video decoding device 150 divides the square-shaped encoding units, in a case where one embodiment cannot demonstrate that the divided information is divided into four square-shaped encoding units.
[0116] In one embodiment, the video decoding device 150 can divide the first coding unit 1000 based on at least one of block shape information and division shape information, and determine second coding units 1010a, 1010b, 1020a, 1020b, etc. The division shape information may include information about various shapes in which the coding unit can be divided, but the information about various shapes may not include information for dividing it into four square coding units. According to such division shape information, the video decoding device 150 cannot divide the square first coding unit 1000 into four square second coding units 1030a, 1030b, 1030c, 1030d. Based on the division shape information, the video decoding device 150 can determine non-square second coding units 1010a, 1010b, 1020a, 1020b, etc.
[0117] In one embodiment, the video decoding device 150 can independently divide non-square second coding units 1010a, 1010b, 1020a, 1020b, etc. Each of the second coding units 1010a, 1010b, 1020a, 1020b, etc. can also be divided in a predetermined order via a recursive method, which is also a division method corresponding to a method in which the first coding unit 1000 is divided based on at least one of block shape information and division shape information.
[0118] For example, the video decoding device 150 can determine square-shaped third coding units 1012a and 1012b by horizontally dividing the left second coding unit 1010a, and can determine square-shaped third coding units 1014a and 1014b by horizontally dividing the right second coding unit 1010b. Furthermore, the video decoding device 150 can also determine square-shaped third coding units 1016a, 1016b, 1016c, and 1016d by horizontally dividing either the left second coding unit 1010a or the right second coding unit 1010b. In such a case, the coding units can be determined in the same form as when the first coding unit 1000 is divided into four square-shaped second coding units 1030a, 1030b, 1030c, and 1030d.
[0119] To give another example, the video decoding device 150 can determine square-shaped third coding units 1022a and 1022b by vertically dividing the upper second coding unit 1020a, and can determine square-shaped third coding units 1024a and 1024b by vertically dividing the lower second coding unit 1020b. Furthermore, the video decoding device 150 can also determine square-shaped third coding units 1022a, 1022b, 1024a, and 1024b by vertically dividing either the upper second coding unit 1020a or the lower second coding unit 1020b. In such a case, the coding units can be determined in the same form as when the first coding unit 1000 is divided into four square-shaped second coding units 1030a, 1030b, 1030c, and 1030d.
[0120] Figure 11 illustrates, in one embodiment, that the processing order between multiple coding units may differ depending on the coding unit division process.
[0121] In one embodiment, the video decoding device 150 can divide the first coding unit 1100 based on block shape information and division shape information. If the block shape information indicates a square shape and the division shape information indicates that the first coding unit 1100 is divided in at least one direction, either horizontal or vertical, the video decoding device 150 can divide the first coding unit 1100 and determine, for example, second coding units 1110a, 1110b, 1120a, 1120b, 1130a, 1130b, 1130c, 1130d, etc. Referring to Figure 11, the non-square second coding units 1110a, 1110b, 1120a, 1120b, which are determined by dividing the first coding unit 1100 only in the horizontal or vertical direction, can also be divided independently based on the block shape information and division shape information related to each. For example, the video decoding device 150 can determine third coding units 1116a, 1116b, 1116c, and 1116d by dividing the second coding units 1110a and 1110b, which are generated by dividing the first coding unit 1100 vertically, horizontally, and can determine third coding units 1126a, 1126b, 1126c, and 1126d by dividing the second coding units 1120a and 1120b, which are generated by dividing the first coding unit 1100 horizontally, horizontally. The division process of such second coding units 1110a, 1110b, 1120a, and 1120b has been explained in relation to Figure 9, so a detailed explanation will be omitted.
[0122] In one embodiment, the video decoding device 150 can process coding units in a predetermined order. The features related to the processing of coding units in a predetermined order have been explained in relation to Figure 6, so a detailed explanation will be omitted. Referring to Figure 11, the video decoding device 150 can divide the square-shaped first coding unit 1100 and determine four square-shaped third coding units 1116a, 1116b, 1116c, 1116d, 1126a, 1126b, 1126c, and 1126d. In one embodiment, the video decoding device 150 can determine the processing order of the third coding units 1116a, 1116b, 1116c, 1116d, 1126a, 1126b, 1126c, and 1126d depending on the form in which the first coding unit 1100 is divided.
[0123] In one embodiment, the video decoding device 150 can divide the second coding units 1110a and 1110b, which are generated by vertical division, horizontally and determine the third coding units 1116a, 1116b, 1116c, and 1116d. The video decoding device 150 can process the third coding units 1116a, 1116b, 1116c, and 1116d in the order (1117) of first processing the third coding units 1116a and 1116b contained in the left second coding unit 1110a vertically, and then processing the third coding units 1116c and 1116d contained in the right second coding unit 1110b vertically.
[0124] In one embodiment, the video decoding device 150 can divide the second coding units 1120a and 1120b, which are generated by dividing them horizontally, vertically, and determine the third coding units 1126a, 1126b, 1126c, and 1126d. The video decoding device 150 can process the third coding units 1126a, 1126b, 1126c, and 1126d in the order (1127) of first processing the third coding units 1126a and 1126b contained in the upper second coding unit 1120a horizontally, and then processing the third coding units 1126c and 1126d contained in the lower second coding unit 1120b horizontally.
[0125] Referring to Figure 11, the second coding units 1110a, 1110b, 1120a, and 1120b are each divided, and the square-shaped third coding units 1116a, 1116b, 1116c, 1116d, 1126a, 1126b, 1126c, and 1126d can be determined. The second coding units 1110a and 1110b determined by vertical division, and the second coding units 1120a and 1120b determined by horizontal division, are divided into different forms from each other. However, according to the third coding units 1116a, 1116b, 1116c, 1116d, 1126a, 1126b, 1126c, and 1126d determined thereafter, the result is that the first coding unit 1100 is divided into coding units of the same form. As a result, the video decoding device 150 can recursively divide the coding unit through different processes based on at least one of the block shape information and the division shape information, thereby determining coding units of the same shape, and processing multiple coding units determined to be of the same shape in different orders.
[0126] Figure 12 illustrates the process by which the coding unit depth is determined when, according to one embodiment, a coding unit is recursively divided and multiple coding units are determined, as the shape and size of the coding unit change.
[0127] In one embodiment, the video decoding device 150 can determine the depth of an encoding unit according to a predetermined criterion. For example, the predetermined criterion can also be the length of the long side of the encoding unit. If the length of the long side of the current encoding unit is divided into 2n (n>0) times the length of the long side of the encoding unit before division, the video decoding device 150 can determine that the depth of the current encoding unit has increased by n compared to the depth of the encoding unit before division. Hereinafter, the encoding unit with increased depth will be referred to as the lower-depth encoding unit.
[0128] Referring to Figure 12, in one embodiment, based on block shape information indicating that it is square (for example, the block shape information can indicate "0:SQUARE"), the video decoding device 150 can divide the square-shaped first coding unit 1200 and determine the lower-depth second coding unit 1202, third coding unit 1204, etc. If the size of the square-shaped first coding unit 1200 is 2Nx2N, then the second coding unit 1202, determined by dividing the width and height of the first coding unit 1200 by half, can have a size of NxN. Furthermore, the third coding unit 1204, determined by dividing the width and height of the second coding unit 1202 by half, can have a size of N / 2xN / 2. In that case, the width and height of the third coding unit 1204 correspond to 1 / 22 times that of the first coding unit 1200. If the depth of the first coding unit 1200 is D, then the depth of the second coding unit 1202, which is 1 / 21 times the width and height of the first coding unit 1200, is D+1, and the depth of the third coding unit 1204, which is 1 / 22 times the width and height of the first coding unit 1200, is D+2.
[0129] In one embodiment, based on block shape information indicating a non-square shape (for example, the block shape information can indicate "1:NS_VER" which indicates that the height is greater than the width and that it is a non-square shape, or "2:NS_HOR" which indicates that the width is greater than the height and that it is a non-square shape), the video decoding device 150 can divide the non-square first coding unit 1210 or 1220 and determine the lower depth second coding unit 1212 or 1222, the third coding unit 1214 or 1224, and so on.
[0130] The video decoding device 150 can divide at least one of the width and height of the first coding unit 1210, which is of size Nx2N, to determine, for example, second coding units 1202, 1212, 1222, etc. That is, the video decoding device 150 can divide the first coding unit 1210 horizontally to determine a second coding unit 1202 of size NxN, or a second coding unit 1222 of size NxN / 2, and can also divide it horizontally and vertically to determine a second coding unit 1212 of size N / 2xN.
[0131] In one embodiment, the video decoding device 150 can divide at least one of the width and height of the 2NxN size first coding unit 1220 to determine, for example, second coding units 1202, 1212, 1222, etc. That is, the video decoding device 150 can divide the first coding unit 1220 vertically to determine an NxN size second coding unit 1202 or an N / 2xN size second coding unit 1212, and can also divide it horizontally and vertically to determine an NxN / 2 size second coding unit 1222.
[0132] In one embodiment, the video decoding device 150 can divide at least one of the width and height of the NxN size second coding unit 1202 to determine, for example, third coding units 1204, 1214, 1224, etc. That is, the video decoding device 150 can divide the second coding unit 1202 vertically and horizontally to determine an N / 2xN / 2 size third coding unit 1204, an N / 2xN / 2 size third coding unit 1214, or an N / 2xN / 2 size third coding unit 1224.
[0133] In one embodiment, the video decoding device 150 can divide at least one of the width and height of the N / 2xN size second coding unit 1212 to determine, for example, third coding units 1204, 1214, 1224, etc. That is, the video decoding device 150 can divide the second coding unit 1212 horizontally to determine an N / 2xN / 2 size third coding unit 1204 or an N / 2xN / 2 size third coding unit 1224, or divide it vertically and horizontally to determine an N / 2xN / 2 size third coding unit 1214.
[0134] In one embodiment, the video decoding device 150 can divide at least one of the width and height of the NxN / 2 size second coding unit 1214 to determine, for example, third coding units 1204, 1214, 1224, etc. That is, the video decoding device 150 can divide the second coding unit 1212 vertically to determine an N / 2xN / 2 size third coding unit 1204 or an N / 2xN / 2 size third coding unit 1214, or divide it vertically and horizontally to determine an N / 2xN / 2 size third coding unit 1224.
[0135] In one embodiment, the video decoding device 150 can divide, for example, square-shaped coding units 1200, 1202, and 1204 horizontally or vertically. For example, a 2Nx2N size first coding unit 1200 can be divided vertically to determine an Nx2N size first coding unit 1210, or it can be divided horizontally to determine a 2NxN size first coding unit 1220. In one embodiment, if the depth is determined based on the longest side length of the coding unit, the depth of the coding unit determined by dividing a 2Nx2N size first coding unit 1200, 1202, or 1204 horizontally or vertically is the same as the depth of the first coding unit 1200, 1202, or 1204.
[0136] In one embodiment, the width and height of the third coding unit 1214 or 1224 are 1 / 22 times that of the first coding unit 1210 or 1220. If the depth of the first coding unit 1210 or 1220 is D, then the depth of the second coding unit 1212 or 1214, which is 1 / 21 times the width and height of the first coding unit 1210 or 1220, is also D+1, and the depth of the third coding unit 1214 or 1224, which is 1 / 22 times the width and height of the first coding unit 1210 or 1220, is also D+2.
[0137] Figure 13 illustrates, in one embodiment, the depth, which is also determined by the shape and size of the coding unit, and the index (PID: part index) for the coding unit division.
[0138] In one embodiment, the video decoding device 150 can divide a square-shaped first coding unit 1300 and determine second coding units of various shapes. Referring to Figure 13, the video decoding device 150 can divide the first coding unit 1300 in at least one direction from the vertical and horizontal directions based on the division shape information and determine second coding units 1302a, 1302b, 1304a, 1304b, 1306a, 1306b, 1306c, and 1306d. That is, the video decoding device 150 can determine second coding units 1302a, 1302b, 1304a, 1304b, 1306a, 1306b, 1306c, and 1306d based on the division shape information relating to the first coding unit 1300.
[0139] In one embodiment, the depth of the second coding units 1302a, 1302b, 1304a, 1304b, 1306a, 1306b, 1306c, and 1306d, which are determined by the division shape information relating to the square-shaped first coding unit 1300, can be determined based on the length of the longer side. For example, since the length of one side of the square-shaped first coding unit 1300 is the same as the length of the longer side of the non-square-shaped second coding units 1302a, 1302b, 1304a, and 1304b, the depth of the first coding unit 1300 and the non-square-shaped second coding units 1302a, 1302b, 1304a, and 1304b can be considered to be the same as D. Conversely, if the video decoding device 150 divides the first coding unit 1300 into four square-shaped second coding units 1306a, 1306b, 1306c, and 1306d based on the division pattern information, the length of one side of the square-shaped second coding units 1306a, 1306b, 1306c, and 1306d is half the length of one side of the first coding unit 1300. Therefore, the depth of the second coding units 1306a, 1306b, 1306c, and 1306d is also D+1, which is one depth lower than the depth D of the first coding unit 1300.
[0140] In one embodiment, the video decoding device 150 can divide a first coding unit 1310, which has a height greater than its width, horizontally according to the division configuration information, and divide it into a plurality of second coding units 1312a, 1312b, 1314a, 1314b, and 1314c. In another embodiment, the video decoding device 150 can divide a first coding unit 1320, which has a width greater than its height, vertically according to the division configuration information, and divide it into a plurality of second coding units 1322a, 1322b, 1324a, 1324b, and 1324c.
[0141] In one embodiment, the depth of the second coding units 1312a, 1312b, 1314a, 1314b, 1316a, 1316b, 1316c, and 1316d, which are determined by the division shape information relating to the non-square first coding unit 1310 or 1320, can be determined based on the length of the longer side. For example, since the side length of the square second coding units 1312a and 1312b is half the side length of the non-square first coding unit 1310, whose height is greater than its width, the depth of the square second coding units 1302a, 1302b, 1304a, and 1304b is D+1, which is one depth lower than the depth D of the non-square first coding unit 1310.
[0142] Furthermore, the video decoding device 150 can divide the non-square first coding unit 1310 into an odd number of second coding units 1314a, 1314b, and 1314c based on the division shape information. The odd number of second coding units 1314a, 1314b, and 1314c may include non-square second coding units 1314a and 1314c, and a square second coding unit 1314b. In that case, the length of the longer side of the non-square second coding units 1314a and 1314c, and the length of one side of the square second coding unit 1314b are 1 / 2 the length of one side of the first coding unit 1310, so the depth of the second coding units 1314a, 1314b, and 1314c is also a depth of D+1, which is one depth lower than the depth D of the first coding unit 1310. The video decoding device 150 can determine the depth of an encoding unit related to a non-square first encoding unit 1320, in a manner corresponding to the method for determining the depth of an encoding unit related to the first encoding unit 1310.
[0143] In one embodiment, the video decoding device 150 can determine the index (PID) for the division of divided coding units based on the size ratio between the coding units when the odd number of divided coding units are not the same size. Referring to Figure 13, the middle coding unit 1314b among the odd number of divided coding units 1314a, 1314b, and 1314c may have the same width as the other coding units 1314a and 1314c, but with a different height, and the middle coding unit 1314b may have twice the height of the other coding units 1314a and 1314c. In other words, in that case, the middle coding unit 1314b may contain both of the other coding units 1314a and 1314c. Therefore, depending on the scan order, if the index (PID) of the middle coding unit 1314b is 1, then the next coding unit 1314c in the sequence may have an index of 3, which is an increase of 2. In other words, a discontinuity in index values may exist. In one embodiment, the video decoding device 150 can determine whether or not an odd number of divided coding units are of the same size, based on the presence or absence of discontinuities in the indices for the divisions between such divided coding units.
[0144] In one embodiment, the video decoding device 150 can determine whether or not a plurality of coding units, which have been divided and determined from the current coding unit, have been divided into a specific division pattern, based on the value of an index used to distinguish them. Referring to Figure 13, the video decoding device 150 can divide a rectangular first coding unit 1310, where the height is greater than the width, and determine an even number of coding units 1312a, 1312b, or an odd number of coding units 1314a, 1314b, 1314c. The video decoding device 150 can use an index (PID) that represents each coding unit to distinguish each of the plurality of coding units. In one embodiment, the PID can be obtained from a sample at a predetermined position in each coding unit (for example, the upper left sample).
[0145] In one embodiment, the video decoding device 150 can determine a coding unit at a predetermined position among the coding units determined by division using an index for the division of coding units. In one embodiment, if the division pattern information relating to a rectangular first coding unit 1310, whose height is greater than its width, indicates that it is divided into three coding units, the video decoding device 150 can divide the first coding unit 1310 into three coding units 1314a, 1314b, and 1314c. The video decoding device 150 can assign an index relating to each of the three coding units 1314a, 1314b, and 1314c. The video decoding device 150 can compare the indices relating to each coding unit in order to determine the middle coding unit among the odd number of coding units divided into. Based on the index of the coding units, the video decoding device 150 can determine the coding unit 1314b, which has an index corresponding to the middle value among the indices, as the coding unit at the middle position among the coding units determined by the division of the first coding unit 1310. In one embodiment, the video decoding device 150 can determine the index for a divided coding unit based on the size ratio between coding units when the coding units are not the same size. Referring to Figure 13, the coding unit 1314b generated by dividing the first coding unit 1310 has the same width as the other coding units 1314a and 1314c, but its height is different, and the coding unit 1314b is twice the height of the coding units 1314a and 1314c. In that case, if the index (PID) of the coding unit 1314b located in the middle is 1, then the coding unit 1314c located in the next order will have an index of 3, which is an increase of 2. In cases like that, where the index increases uniformly but the magnitude of the increase differs, the video decoding device 150 can determine that the encoding unit has been divided into multiple encoding units, including encoding units having different sizes from other encoding units. In one embodiment, if the division configuration information indicates that the encoding unit is divided into an odd number of encoding units, the video decoding device 150 can divide the current encoding unit into a configuration in which an encoding unit at a predetermined position among the odd number of encoding units (for example, the middle encoding unit) has a different size from the other encoding units.In that case, the video decoding device 150 can determine a middle coding unit of a different size by using an index (PID) related to the coding unit. However, the aforementioned index, the size of the coding unit at the predetermined position to be determined, or the position are specified for the purpose of explaining one embodiment and should not be interpreted as being limited to them, but rather as various indices, coding unit positions, and sizes can be used.
[0146] In one embodiment, the video decoding device 150 can utilize a predetermined data unit in which the recursive division of the encoding unit begins.
[0147] Figure 14 illustrates how, in one embodiment, multiple encoding units are determined from multiple predetermined data units contained in a picture.
[0148] In one embodiment, a predetermined data unit is also defined as a data unit from which an encoded unit begins to recursively divide using at least one of block-type information and division-type information. That is, it corresponds to the highest-depth encoded unit used in the process of determining multiple encoded units that currently divide the picture. For the sake of explanation, such a predetermined data unit will be referred to as a reference data unit below.
[0149] In one embodiment, the reference data unit can exhibit a predetermined size and shape. In one embodiment, the reference coding unit may contain MxN samples, where M and N are identical to each other and are integers expressed as powers of 2. That is, the reference data unit can exhibit a square or non-square shape and can subsequently be divided into an integer number of coding units.
[0150] In one embodiment, the video decoding device 150 can divide the current picture into multiple reference data units. In another embodiment, the video decoding device 150 can divide the current picture into multiple reference data units using the division information associated with each reference data unit. Such a division process of reference data units corresponds to a division process using a quad-tree structure.
[0151] In one embodiment, the video decoding device 150 can predetermine the minimum size that a reference data unit currently included in a picture can have. This allows the video decoding device 150 to determine reference data units of various sizes that are larger than or equal to the minimum size, and, using the determined reference data units as a basis, to determine at least one encoding unit using block shape information and segmentation shape information.
[0152] Referring to Figure 14, the video decoding device 150 can utilize a square-shaped reference coding unit 1400, or it can utilize a non-square-shaped reference coding unit 1402. In one embodiment, the shape and size of the reference coding unit can also be determined by various data units (e.g., sequence, picture, slice, slice segment, maximum coding unit, etc.) which may include at least one reference coding unit.
[0153] In one embodiment, the receiving unit 160 of the video decoding device 150 can obtain at least one of the following from the bitstream for each of the various data units: information about the shape of the reference coding unit and information about the size of the reference coding unit. The process for determining at least one coding unit included in the square-shaped reference coding unit 1400 was explained through the process of dividing the current coding unit 300 in Figure 10, and the process for determining at least one coding unit included in the non-square-shaped reference coding unit 1400 was explained through the process of dividing the current coding unit 1100 or 1150 in Figure 11, so a detailed explanation is omitted.
[0154] In one embodiment, the video decoding device 150 can use an index to identify the size and shape of a reference coding unit in order to determine the size and shape of a reference coding unit based on a subset of data units predetermined based on predetermined conditions. That is, the receiving unit 160 can obtain only an index for identifying the size and shape of a reference coding unit from the bitstream, for each data unit such as a slice, slice segment, or maximum coding unit, that satisfies predetermined conditions (for example, a data unit having a size less than or equal to a slice) from among the various data units (for example, a sequence, picture, slice, slice segment, or maximum coding unit). By using the index, the video decoding device 150 can determine the size and shape of a reference data unit for each data unit that satisfies the predetermined conditions. When information about the shape of a reference coding unit and information about the size of a reference coding unit are obtained and used from the bitstream for each relatively small data unit, the bitstream utilization efficiency is not good. Therefore, instead of directly obtaining information about the shape of a reference coding unit and information about the size of a reference coding unit, only the index can be obtained and used. In that case, at least one of the sizes and shapes of the reference coding units corresponding to the index indicating the size and shape of the reference coding unit is predetermined. That is, the video decoding device 150 can determine at least one of the sizes and shapes of the reference coding units included in the data unit that serves as the basis for index acquisition by selecting at least one of the predetermined sizes and shapes of the reference coding units using the index.
[0155] In one embodiment, the video decoding device 150 can utilize at least one reference coding unit included in one maximum coding unit. That is, the maximum coding unit that divides the video includes at least one reference coding unit, and coding units can be determined through a recursive division process of each reference coding unit. In one embodiment, at least one of the width and height of the maximum coding unit is an integer multiple of at least one of the width and height of the reference coding unit. In one embodiment, the size of the reference coding unit is also the size obtained by dividing the maximum coding unit n times using a quadtree structure. That is, the video decoding device 150 can determine the reference coding unit by dividing the maximum coding unit n times using a quadtree structure, and in various embodiments, the reference coding unit can be divided based on at least one of block shape information and division shape information.
[0156] Figure 15 illustrates a processing block that serves as a criterion for determining the order in which reference coding units are included in picture 1500, according to one embodiment.
[0157] In one embodiment, the video decoding device 150 can determine at least one processing block for dividing a picture. A processing block is a data unit that includes at least one reference coding unit for dividing the video, and the at least one reference coding unit included in the processing block is also determined in a specific order. That is, the order in which the at least one reference coding unit determined in each processing block is one of a variety of possible orders in which the reference coding unit can be determined, and the order in which the reference coding unit is determined differs for each processing block. The order in which the reference coding unit is determined for each processing block is one of a variety of orders such as raster scan, Z scan, N scan, up-right diagonal scan, horizontal scan, and vertical scan, but the possible orders are not limited to the aforementioned scan orders.
[0158] In one embodiment, the video decoding device 150 can acquire information about the size of a processing block and determine the size of at least one processing block contained in the video. The video decoding device 150 can acquire information about the size of a processing block from the bitstream and determine the size of at least one processing block contained in the video. The size of such a processing block is also a predetermined size of the data unit indicated by the information about the size of the processing block.
[0159] In one embodiment, the receiving unit 160 of the video decoding device 150 can acquire information about the size of processing blocks from the bitstream for each specific data unit. For example, information about the size of processing blocks is also acquired from the bitstream for data units such as video, sequence, picture, slice, and slice segment. That is, the receiving unit 160 can acquire information about the size of processing blocks from the bitstream for each of the aforementioned data units, and the video decoding device 150 can use the acquired information about the size of processing blocks to determine the size of at least one processing block that divides a picture, the size of which is also an integer multiple of the reference coding unit.
[0160] In one embodiment, the video decoder 150 can determine the size of processing blocks 1502 and 1512 contained in the picture 1500. For example, the video decoder 150 can determine the size of a processing block based on information about the size of the processing block obtained from the bitstream. Referring to Figure 15, in one embodiment, the video decoder 150 can determine the horizontal size of processing blocks 1502 and 1512 to be four times the horizontal size of the reference coding unit, and the vertical size to be four times the vertical size of the reference coding unit. The video decoder 150 can determine the order in which at least one reference coding unit is determined within at least one processing block.
[0161] In one embodiment, the video decoding device 150 can determine each processing block 1502, 1512 contained in the picture 1500 based on the size of the processing blocks, and can determine the order in which at least one reference coding unit contained in the processing blocks 1502, 1512 is determined. In one embodiment, the determination of the reference coding unit may include determining the size of the reference coding unit.
[0162] In one embodiment, the video decoding device 150 can obtain information from the bitstream about the determination order of at least one reference coding unit contained in at least one processing block, and can determine the order in which at least one reference coding unit is determined based on the obtained information about the determination order. The information about the determination order is also defined as the order or direction in which the reference coding unit is determined within a processing block. That is, the order in which the reference coding unit is determined can be determined independently for each processing block.
[0163] In one embodiment, the video decoding device 150 can obtain information about the determination order of reference coding units from the bitstream for each specific data unit. For example, the receiving unit 160 can obtain information about the determination order of reference coding units from the bitstream for each data unit such as video, sequence, picture, slice, slice segment, and processing block. Since the information about the determination order of reference coding units indicates the determination order of reference coding units within a processing block, information about the determination order is also obtained for each specific data unit containing an integer number of processing blocks.
[0164] The video decoding device 150 can determine at least one reference coding unit based on the sequence determined by one embodiment.
[0165] In one embodiment, the receiving unit 160 can obtain information about the reference coding unit determination order as information relating to processing blocks 1502 and 1512 from the bitstream, and the video decoding device 150 can determine the order in which to determine at least one reference coding unit included in the processing blocks 1502 and 1512, and determine at least one reference coding unit included in the picture 1500 based on the coding unit determination order. Referring to Figure 15, the video decoding device 150 can determine the determination order (1504, 1514) of at least one reference coding unit relating to each processing block 1502 and 1512. For example, if information about the reference coding unit determination order is obtained for each processing block, the reference coding unit determination order relating to each processing block 1502 and 1512 will differ for each processing block. If the reference coding unit determination order (1504) related to processing block 1502 is the raster scan order, the reference coding units included in processing block 1502 are also determined by the raster scan order. Conversely, if the reference coding unit determination order (1514) related to another processing block 1512 is the reverse of the raster scan order, the reference coding units included in processing block 1512 are also determined by the reverse of the raster scan order.
[0166] Figures 1 to 15 illustrate a method for dividing video into the largest encoding unit and then dividing that largest encoding unit into encoding units in a hierarchical tree structure. Figures 16 to 24 illustrate a method for determining the quantization parameters of the current block.
[0167] The video encoding device 100 in Figure 1 can convert residual data, which is the difference between the original value and the predicted value related to a pixel included in an encoding unit, through a predetermined process. At this time, the video encoding device 100 can reduce the size of the residual data by quantizing the converted residual data, instead of losing some residual data.
[0168] Quantization of residual data can also be performed based on quantization parameters. These parameters are indices used to derive the scaling matrices required for quantizing the residual data of the current block. Larger quantization parameters result in scaling matrices with relatively larger elements. Therefore, larger quantization parameters lead to increased compression of the residual data, but at the cost of greater residual data loss. Conversely, smaller quantization parameters result in scaling matrices with relatively smaller elements. Therefore, smaller quantization parameters lead to decreased compression of the residual data, but at the cost of less residual data loss.
[0169] In other words, if the subjective degradation of image quality is small even when the compression ratio of residual data increases, high quantization parameters may be used. However, if subjective degradation of image quality is perceptible when the compression ratio of residual data increases, low quantization parameters must be used. Therefore, even between blocks of the same picture, different quantization parameters must be used, taking into account factors such as the degree of image quality degradation.
[0170] Figure 16 shows a video decoding device that determines the quantization parameters of a block and decodes the residual data of the block using the determined quantization parameters.
[0171] The video decoding device 1600 includes a quantization parameter determination unit 1610 and an inverse quantization unit 1620. In Figure 16, the quantization parameter determination unit 1610 and the inverse quantization unit 1620 are represented as separate components, but depending on the embodiment, the quantization parameter determination unit 1610 and the inverse quantization unit 1620 can be combined and realized as a single component.
[0172] In Figure 16, the quantization parameter determination unit 1610 and the inverse quantization unit 1620 are represented as a single unit located in one device. However, the devices responsible for each function of the quantization parameter determination unit 1610 and the inverse quantization unit 1620 do not necessarily need to be physically adjacent. Therefore, depending on the embodiment, the quantization parameter determination unit 1610 and the inverse quantization unit 1620 may also be dispersed.
[0173] The quantization parameter determination unit 1610 and the inverse quantization unit 1620 can be implemented by a single processor, or by multiple processors, depending on the embodiment.
[0174] The video decoding device 1600 can perform inverse quantization based on quantization groups containing one or more blocks. The method of inverse quantization based on quantization groups will be described below.
[0175] When quantization parameters differ for each block, the amount of information about those parameters increases. Therefore, determining quantization parameters on a block-by-block basis reduces coding efficiency. Consequently, methods for determining the same quantization parameters for multiple blocks are being discussed to improve coding efficiency.
[0176] Generally, adjacent blocks have the same or similar quantization parameters. Therefore, the video decoding device 1600 can use the same quantization parameters for adjacent blocks. Multiple adjacent blocks that use the same quantization parameters are called a quantization group.
[0177] The quantization group is also determined based on the largest coding unit. For example, a quantization group may be set for a block generated by dividing the largest coding unit a predetermined number of times. If the block to which the quantization group is set is not further divided, the quantization parameters of the quantization group apply only to the single block to which the quantization group is set. Conversely, if the block corresponding to the quantization group is further divided, the quantization parameters of the quantization group also apply to all the subblocks generated by the division of the block to which the quantization group is set.
[0178] Alternatively, the quantization group can also be determined based on size. For example, if the size of a block is the same as or smaller than the quantization group reference size, a quantization group may be assigned to that block. If a block to which a quantization group has been assigned is not further subdivided, the quantization parameters of the quantization group apply only to the single block to which the quantization group has been assigned. Conversely, if the block corresponding to the quantization group is further subdivided, the quantization parameters of the quantization group also apply to all the subblocks generated by the subdivision of the block to which the quantization group has been assigned. Thus, determining the quantization parameters of a block based on the quantization group reduces the amount of information available about the quantization parameters.
[0179] The quantization parameter determination unit 1610 can obtain a differential quantization parameter permission flag for the higher data unit of the current quantization group. Then, when the differential quantization parameter permission flag indicates that the determination of quantization parameters using differential quantization parameters is permitted, the quantization parameter determination unit 1610 can obtain the differential quantization parameters for the current block.
[0180] The aforementioned higher-level data unit is one of the following: video parameter set (VPS), sequence parameter set (SPS), or picture parameter set (PPS). Therefore, the quantization parameter determination unit 1610 can apply the quantization parameter determination method by the quantization group to all blocks included in the higher-level data unit.
[0181] The quantization parameter determination unit 1610 can acquire quantization group information for the higher-level data unit of the current quantization group. The quantization group information indicates a method for determining the quantization group. For example, the quantization group information may include block partitioning information or block size information. The quantization parameter determination unit 1610 can acquire quantization group information if the differential quantization parameter allowance flag allows differential quantization parameters.
[0182] The quantization parameter determination unit 1610 determines the predicted quantization parameters for the current quantization group, which are determined by at least one of the block partitioning information and block size information.
[0183] Block partitioning information may include the number of quadtree partitions and the number of non-quadtree partitions. The number of quadtree partitions indicates the number of times a quadtree partition was performed to obtain the current quantization group from the largest encoded block. For example, the partition by 210d in Figure 2 corresponds to a quadtree partition.
[0184] The number of non-quadtree partitions indicates the number of times a partition other than a quadtree partition was performed to obtain the current quantization group from the largest encoded block. For example, the partitioning method disclosed in Figure 3 is a non-quadtree partition.
[0185] Block size information may include the block size, or the binary log value of the block size. It may also include the block height and width, or the binary log values of the block height and width.
[0186] According to one embodiment, the quantization parameter determination unit 1610 can determine the current quantization group based on the number of quadtree divisions. If only quadtree divisions are used for the maximum coding unit division, quantization groups can be set for blocks of a predetermined size or larger based on the number of quadtree divisions. For example, if the size of the maximum coding unit is 256x256 and the number of quadtree divisions is 2, quantization groups will be set for blocks of 64x64 size or larger.
[0187] Figures 17A to 17D illustrate an embodiment in which the quantization group is determined by the number of quadtree divisions.
[0188] According to Figure 17A, the largest encoded block 1700 is divided into four blocks 1702, 1704, 1706, and 1708 by quadtree partitioning. The number of quadtree partitions for blocks 1702, 1704, 1706, and 1708 is set to 1. Block 1704 is divided into four blocks 1710, 1712, 1714, and 1716 by quadtree partitioning. The number of quadtree partitions for blocks 1710, 1712, 1714, and 1716 is set to 2. Block 1716 is divided into four blocks 1718, 1720, 1722, and 1724 by quadtree partitioning. The number of quadtree partitions for blocks 1718, 1720, 1722, and 1724 is set to 3. Based on blocks 1702, 1706, 1708, 1710, 1712, 1714, 1718, 1720, 1722, and 1724, determined by the completion of the division of the maximum coding block 1700, prediction and transform coding, and decoding are performed.
[0189] As can be seen from Figure 17A, the size of the divided block is halved with each increase of quadtree divisions. Therefore, if only quadtree divisions are allowed, the size of the block can be determined by the number of quadtree divisions.
[0190] Figure 17B illustrates an embodiment of determining quantization groups for blocks with a quadtree partition count of 1. According to Figure 17B, quantization groups are set for four blocks 1702, 1704, 1706, and 1708, which have a quadtree partition count of 1.
[0191] The quantization groups associated with blocks 1702, 1706, and 1708 each contain only one block. However, the quantization group associated with block 1704 includes its subblocks 1710, 1712, 1714, 1718, 1720, 1722, and 1724. Therefore, the subblocks 1710, 1712, 1714, 1718, 1720, 1722, and 1724 can be subjected to quantization and inverse quantization using the same quantization parameters.
[0192] Figure 17C illustrates an embodiment for determining quantization groups for blocks with 2 quadtree divisions. According to Figure 17C, quantization groups are set for blocks 1702, 1706, 1708, 1710, 1712, 1714, and 1716, which have 2 or fewer quadtree divisions. In the case of blocks 1702, 1706, and 1708, since there is no additional division (only 1 quadtree division), quantization groups are set for blocks 1702, 1706, and 1708.
[0193] The quantization groups associated with blocks 1702, 1706, 1708, 1710, 1712, and 1714 each contain only one block. However, the quantization group associated with block 1716 includes its subblocks 1718, 1720, 1722, and 1724. Therefore, the subblocks 1718, 1720, 1722, and 1724 of block 1716 can be subjected to quantization and inverse quantization using the same quantization parameters.
[0194] Figure 17D illustrates an embodiment for determining quantization groups for blocks with 3 quadtree divisions. In Figure 17D, there are no blocks with 4 quadtree divisions, so quantization groups are set for all blocks 1702, 1706, 1708, 1710, 1712, 1714, 1718, 1720, 1722, and 1724.
[0195] According to Figures 17A to 17D, the size of the quantization group decreases as the number of quadtree divisions of the block partitioning information increases. Conversely, the size of the quantization group increases as the number of quadtree divisions of the block partitioning information decreases. Therefore, the size of the quantization parameter information increases or decreases depending on the number of quadtree divisions of the block partitioning information.
[0196] The quantization parameter determination unit 1610 can currently determine the quantization group based on the number of quadtree partitions and the number of non-quadtree partitions. If non-quadtree partitions are applied to block partitioning in addition to quadtree partitions, the quantization group determination method shown in Figures 17A to 17D is not applicable. Therefore, a method can be applied in which the number of non-quadtree partitions is also considered when determining the quantization group, or a method can be applied in which the quantization group is determined by the size of the quantization group. Figures 18A to 18C illustrate one embodiment of the quantization group determination method in the largest encoded block to which non-quadtree partitions are applied.
[0197] Figure 18A illustrates how the maximum coding block 1800 is divided. The numbers displayed inside the blocks indicate the number of divisions from the maximum coding block 1800.
[0198] The largest coded block 1800 is divided into four blocks 1802, 1804, 1806, and 1808 in a quadtree. Block 1802 is not further divided, so the number of divisions for block 1802 is 1. The following explanation assumes that the size of the largest coded block 1800 is 4N x 4N.
[0199] Block 1804 is divided into two 2NxN blocks 1810 and 1812. Block 1810 is then divided into two NxN blocks 1814 and 1816, and block 1812 is divided into two N / 2xN blocks 1818 and 1822 and one NxN block 1820. The number of divisions of the subblocks 1814, 1816, 1818, 1820, and 1822 of block 1804 is 3 each.
[0200] Block 1806 is divided into two Nx2N blocks 1824 and 1826. Block 1824 is then divided into two NxN blocks 1828 and 1830, and block 1826 is divided into two NxN / 2 blocks 1840 and 1844 and one NxN block 1842. Block 1828 is then divided into two N / 2xN blocks 1832 and 1834. Block 1834 is then divided into two N / 2xN / 2 blocks 1836 and 1838. The number of divisions of the subblocks 1828, 1830, 1840, 1842, and 1844 from block 1806 is 3. The number of divisions of block 1832, which was divided from block 1828, is 4, and the number of divisions of blocks 1836 and 1838 is 5.
[0201] Block 1808 is divided into four NxN blocks 1846, 1848, 1850, and 1852. Block 1846 is then divided into four NxN blocks 1854, 1856, 1858, and 1860. Block 1848 is divided into two Nx2N blocks 1862 and 1864, and block 1862 is divided into two NxN blocks 1866 and 1868. Blocks 1850 and 1852 are divided 2 times, blocks 1854, 1856, 1858, 1860, and 1864 are divided 3 times, and blocks 1866 and 1868 are divided 4 times.
[0202] If the quantization group is determined by the number of block divisions, there is a problem in that the size of the quantization group is not uniform. Specifically, the non-uniformity of the quantization group size is explained in Figure 18B.
[0203] Figure 18B illustrates an embodiment for setting quantization groups for blocks with 3 divisions. According to Figure 18B, quantization groups are set for blocks 1802, 1814, 1816, 1818, 1820, 1822, 1828, 1830, 1840, 1842, 1844, 1850, 1852, 1854, 1856, 1858, 1860, 1862, and 1864, which have 3 or fewer divisions.
[0204] However, although block 1814 and block 1854 have the same number of divisions, block 1814 is four times larger than block 1854. Furthermore, although block 1836 and block 1854 are the same size, block 1836 is applied to the quantization parameters of the quantization group corresponding to block 1828, while block 1854 is applied to the quantization parameters of the quantization group corresponding to block 1854.
[0205] As shown in the embodiments of Figures 17A to 17D, when only quadtree partitioning is performed, the size of the quantization groups is the same. However, as explained earlier, when non-quadtree partitioning is performed, there is a problem in that the size of the quantization groups differs depending on the number of partitions.
[0206] Figure 18C illustrates a method for solving the aforementioned problems. For example, the quantization parameter determination unit 1610 can determine the current quantization group by a weighted sum of the number of quadtree partitions and the number of non-quadtree partitions. This quadtree partition is equivalent to applying vertical and horizontal partitions consecutively. Therefore, one quadtree partition is essentially equivalent to two non-quadtree partitions.
[0207] Therefore, the quantization parameter determination unit 1610 subdivides the number of partitions into quadtree partitions and non-quadtree partitions, and sets quantization groups based on a weighted sum of the quadtree partitions and non-quadtree partitions using a 2:1 weighting value.
[0208] For example, block 1814 is generated from the maximum encoding block 1800 by one quadtree split and two non-quadtree splits. Therefore, the weighted sum of the number of quadtree splits and non-quadtree splits for block 1814 with a 2:1 weighting is 4. Similarly, block 1846 is generated from the maximum encoding block 1800 by two quadtree splits. Therefore, the weighted sum of the number of quadtree splits and non-quadtree splits for block 1846 with a 2:1 weighting is 4. Consequently, when a quantization group is set for a block whose weighted sum is 4, unlike in Figure 18B, in Figure 18C, block 1854 will obtain its quantization parameters from the quantization group set for block 1846.
[0209] In another embodiment, the quantization parameter determination unit 1610 can determine the current quantization group based on the sum of the heights and widths of the blocks, or the average of the heights and widths of the blocks. For example, if a quantization group is set for an NxN size block, then a quantization group is set for blocks 1814 and 1846. Thus, unlike in Figure 18B, in Figure 18C, block 1854 will obtain its quantization parameters from the quantization group set for block 1846. Since the upper blocks 1812 and 1826 are larger than NxN size and do not have corresponding quantization groups, blocks 1818, 1822, 1840, and 1844 are given quantization groups despite being smaller than NxN size.
[0210] Similarly, the quantization parameter determination unit 1610 can determine the current quantization group based on the sum of the binary log values of the block height and width, or the average of the binary log values of the block height and width. Alternatively, the quantization parameter determination unit 1610 can determine the current quantization group based on the block size, or the binary log value of the size.
[0211] The quantization parameter determination unit 1610 can determine the predicted quantization parameter of the current block based on the quantization parameter of the upper adjacent block of the current quantization group, the quantization parameter of the left adjacent block of the current quantization group, and the quantization parameter of the quantization group that was decoded immediately before the current quantization group.
[0212] For example, the quantization parameter determination unit 1610 can determine the quantization parameter of the current quantization group as the average of the quantization parameter of the upper adjacent block and the quantization parameter of the left adjacent block. If there is no quantization parameter for the upper adjacent block, the quantization parameter determination unit 1610 can use the quantization parameter of the quantization group decoded immediately before the current quantization group instead of the quantization parameter of the upper adjacent block to determine the quantization parameter of the current quantization group. Similarly, if there is no quantization parameter for the left adjacent block, the quantization parameter determination unit 1610 can use the quantization parameter of the quantization group decoded immediately before the current quantization group instead of the quantization parameter of the left adjacent block to determine the quantization parameter of the current quantization group. Furthermore, the quantization parameter determination unit 1610 can determine the basic quantization parameters of a slice or picture as predicted quantization parameters. For example, if there are no quantization parameters for the upper adjacent block referenced by the current quantization group, no quantization parameters for the left adjacent block, and no quantization parameters for the quantization group decoded immediately before the current quantization group, the basic quantization parameters may be used.
[0213] The quantization parameter determination unit 1610 determines the differential quantization parameters for the current quantization group. The quantization parameter determination unit 1610 can obtain differential quantization parameter size information and differential quantization parameter code information from the bitstream. Then, the quantization parameter determination unit 1610 can determine the differential quantization parameters for the current quantization group using the differential quantization parameter size information and differential quantization parameter code information.
[0214] The quantization parameter determination unit 1610, if the current quantization group contains two or more blocks, can obtain differential quantization parameter size information and differential quantization parameter code information for the block that is decoded first in the scan order. Then, the quantization parameter determination unit 1610 does not obtain differential quantization parameter size information and differential quantization parameter code information for the remaining blocks of the current quantization group, and applies the quantization parameters determined for the block that is decoded first to the remaining blocks. Consequently, the quantization parameter determination unit 1610 applies the same quantization parameters to all blocks of the current quantization group.
[0215] The quantization parameter determination unit 1610 can initialize the differential quantization parameters and information related to the differential quantization parameters when decoding all blocks of the current quantization group and decoding blocks of a new quantization group. The information related to the differential quantization parameters may include differential quantization parameter decoding information indicating whether or not the differential quantization parameters have already been decoded, and quantization group position information indicating the position of the quantization group.
[0216] The quantization parameter determination unit 1610 initializes the differential quantization parameters and information related to the differential quantization parameters, and can obtain new differential quantization parameter size information and differential quantization parameter code information from the bitstream.
[0217] The quantization parameter determination unit 1610 determines the quantization parameters of the current quantization group based on the predicted quantization parameters and the differential quantization parameters of the current quantization group. Specifically, the quantization parameter determination unit 1610 can determine the quantization parameters based on the sum of the predicted quantization parameters and the differential quantization parameters of the current quantization group. In some embodiments, the quantization parameter determination unit 1610 can obtain quantization parameter offset information from the bitstream and adjust the determined quantization parameters using the quantization parameter offset information.
[0218] The inverse quantization unit 1620 inversely quantizes the current blocks included in the current quantization group using the quantization parameters of the current quantization group.
[0219] Figure 19 illustrates the syntax for decoding the differential quantization parameters contained in a bitstream when both quadtree and non-quadtree partitioning are permitted.
[0220] The top table in Figure 19 describes the quadtree partitioning syntax structure (coding_quadtree). The quadtree partitioning syntax structure in Figure 19 discloses a configuration for determining the initialization of the differential quantization parameters and the information related to those differential quantization parameters before deciding on the quadtree partitioning.
[0221] In the quadtree partitioning syntax structure shown in Figure 19, "cu_qp_delta_enabled_flag" indicates the differential quantization parameter enablement flag, "cqtDepth" indicates the number of quadtree partitions, and "diff_cu_qp_delta_depth" indicates block partitioning information. Furthermore, "CuQpDeltaVal" indicates the differential quantization parameter, "IsCuQpDeltaCoded" indicates the differential quantization parameter decoding information, and "CuQgTopLeftX" and "CuQgTopLeftY" indicate the quantization group position information.
[0222] According to Figure 19, when "cu_qp_delta_enabled_flag" is 1 and "cqtDepth" is less than or equal to "diff_cu_qp_delta_depth", "CuQpDeltaVal" and "IsCuQpDeltaCoded" are determined to be 0, and "CuQgTopLeftX" and "CuQgTopLeftY" are determined to be x0, y0, which represent the upper left sample position of the current block.
[0223] A value of 1 for "cu_qp_delta_enabled_flag" means that the acquisition of differential quantization parameters is permitted.
[0224] Furthermore, if "cqtDepth" is less than or equal to "diff_cu_qp_delta_depth", it means that the number of quadtree divisions of the current block is less than or equal to the number of divisions that form the basis of the quantization group indicated by the block division information. This means that the current block is not included in the quantization group of blocks that were decoded before it.
[0225] When the above conditions are met, "CuQpDeltaVal" and "IsCuQpDeltaCoded" are determined to be 0, and new differential quantization parameters relating to the quantization groups located at "CuQgTopLeftX" and "CuQgTopLeftY" are obtained from the newly acquired differential quantization parameter information from the bitstream.
[0226] The central table in Figure 19 illustrates the non-quadtree partitioning syntax structure. The non-quadtree partitioning syntax structure in Figure 19 discloses a configuration for determining the initialization of the differential quantization parameters and the information related to those differential quantization parameters before deciding whether to perform a non-quadtree partition.
[0227] In the non-quadtree partitioning syntax structure of Figure 19, "cu_qp_delta_enabled_flag" indicates the differential quantization parameter enablement flag, "cqtDepth" indicates the number of quadtree partitions, "mttDepth" indicates the number of non-quadtree partitions, and "diff_cu_qp_delta_depth" indicates block partitioning information. Furthermore, "CuQpDeltaVal" indicates the differential quantization parameter, "IsCuQpDeltaCoded" indicates the differential quantization parameter decoding information, and "CuQgTopLeftX" and "CuQgTopLeftY" indicate quantization group position information.
[0228] According to Figure 19, when "cu_qp_delta_enabled_flag" is 1 and the sum of "cqtDepth" and "mttDepth" is less than or equal to "diff_cu_qp_delta_depth", "CuQpDeltaVal" and "IsCuQpDeltaCoded" are determined to be 0, and "CuQgTopLeftX" and "CuQgTopLeftY" are determined to be x0, y0, which represent the upper left sample position of the current block.
[0229] Similar to the quadtree partitioning syntax, the non-quadtree partitioning syntax also initializes the difference quantization parameters and information related to them. However, unlike the quadtree partitioning syntax, the non-quadtree partitioning syntax compares the sum of "cqtDepth" and "mttDepth" with "diff_cu_qp_delta_depth" instead of "cqtDepth". In Figure 19, the sum of "cqtDepth" and "mttDepth" was compared with "diff_cu_qp_delta_depth", but in some embodiments, the weighted sum of "cqtDepth" and "mttDepth" is also compared with "diff_cu_qp_delta_depth".
[0230] The table at the bottom of Figure 19 describes the transformation block syntax structure. tu_cbf_luma[x0][y0] indicates whether residual data exists in the current Luma block located at (x0,y0). tu_cbf_cb[x0][y0] and tu_cbf_cr[x0][y0] indicate whether residual data exists in the current Cb block and current Cr block located at (x0,y0), respectively. If no residual data exists for the current Luma block, current Cb block, and current Cr block, the difference quantization parameter information is not obtained.
[0231] Conversely, if any of the current Luma block, current Cb block, and current Cr block contain residual data, then "cu_qp_delta_abs," which indicates the size information of the differential quantization parameter, and "cu_qp_delta_sign_flag," which indicates the code information of the differential quantization parameter, are obtained from the bitstream. Then, "CuQpDeltaVal," which indicates the differential quantization parameter, is determined from "cu_qp_delta_abs" and "cu_qp_delta_sign_flag." In addition, "IsCuQpDeltaCoded," which indicates whether or not the differential quantization parameter exists, is set to 1.
[0232] If the block to be decoded next to the current block belongs to the same quantization group as the current block (i.e., if the (weighted) sum of "cqtDepth" or "cqtDepth" and "mttDepth" is greater than "diff_cu_qp_delta_depth"), then "CuQpDeltaVal" and "IsCuQpDeltaCoded" are not initialized, and the block to be decoded next to the current block is inversely quantized by the "CuQpDeltaVal" used in the decoding process of the current block.
[0233] In Figure 19, the configuration for obtaining differential quantization parameter information is embodied by the transformation block syntax, but depending on the embodiment, it can also be embodied by other syntax.
[0234] Figure 20 illustrates a video decoding method in which the quantization group determines the quantization parameters of a block, and the residual data of the block is decoded using the determined quantization parameters.
[0235] In step 2010, the predicted quantization parameters for the current quantization group are determined by at least one of the block partitioning information and block size information.
[0236] Currently, the quantization group is also determined by the number of quadtree partitions and the number of non-quadtree partitions. Specifically, the current quantization group is also determined by the weighted sum of the number of quadtree partitions and the number of non-quadtree partitions.
[0237] Currently, the quantization group is also determined based on the sum of the block height and width, or the average of the block height and width. Alternatively, the quantization group is also determined based on the sum of the binary logarithms of the block height and width, or the average of the binary logarithms of the block height and width. Alternatively, the quantization group is also determined based on the block area, or the binary logarithm of the area.
[0238] The predicted quantization parameters of the current block can be determined based on the quantization parameters of the upper adjacent block of the current quantization group, the quantization parameters of the left adjacent block of the current quantization group, and the quantization parameters of the quantization group decoded immediately before the current quantization group.
[0239] In stage 2020, the differential quantization parameters of the current quantization group are determined. Specifically, differential quantization parameter size information and differential quantization parameter code information can be obtained from the bitstream. Then, the differential quantization parameters of the current quantization group can be determined using the differential quantization parameter size information and differential quantization parameter code information.
[0240] In one embodiment, the difference quantization parameter can be obtained in the current block when the difference quantization parameter allowance flag indicates that the determination of the quantization parameter by the difference quantization parameter is permitted.
[0241] In stage 2030, the quantization parameters of the current quantization group are determined based on the predicted quantization parameters and the difference quantization parameters of the current quantization group. For example, the quantization parameters of the current quantization group may be determined based on the sum of the predicted quantization parameters and the difference quantization parameters.
[0242] At stage 2040, the current blocks included in the current quantization group are inversely quantized by the quantization parameters of the current quantization group.
[0243] Furthermore, the video decoding method in Figure 20 may include various embodiments of the method for determining quantization parameters by the quantization group of the video decoding device in Figure 16.
[0244] The video decoding device 1600 can perform inverse quantization based on quantization parameter units that indicate regions where the same quantization parameters are used. The method of inverse quantization based on quantization parameter units will be described below.
[0245] Figure 21 shows one embodiment of the quantization parameter unit structure and the coding block tree structure.
[0246] Each part of a picture or slice exhibits different levels of subjective image quality degradation. Therefore, to optimize the coding rate, other quantization parameters must be set according to the characteristics of each part of the picture or slice. The distribution of quantization parameters is not the same as that of the coding block tree structure, which is the basic unit of coding. Therefore, the quantization parameter unit map is determined independently of the coding block tree structure.
[0247] In Figure 21, the quantization parameter unit 2110 is also an MxN size rectangle. In this case, the picture is represented by a quantization parameter map 2120 composed of multiple quantization parameter units. In the quantization parameter map 2120, each quantization parameter unit has a quantization parameter. In Figure 21, the quantization parameter unit 2110 is represented as a rectangle, but in some embodiments, the quantization parameter unit 2110 can also be represented in other irregular shapes that are not rectangles.
[0248] The quantization parameters of the quantization parameter unit 2110 are also determined by the features of a portion of the corresponding picture. The quantization parameters of the quantization parameter unit map 2120 and the quantization parameter unit 2110 are independently encoded and decoded with respect to the predicted encoded information from the encoded block structure 2140. Then, during the encoding and decoding processes of the residual data of the encoded block 2130, quantization parameters can be obtained from the quantization parameter unit 2110 corresponding to the position of the encoded block 2130.
[0249] The quantization parameter determination unit 1610 can match the current block with the current quantization parameter unit based on at least one of the current block's position and size.
[0250] For example, the quantization parameter determination unit 1610 can determine that the quantization parameter unit including the coordinate values of the upper left sample of the current block is the current quantization parameter unit of the current block.
[0251] As another example, if the current block contains multiple quantization parameter units, the quantization parameter determination unit 1610 can determine that the multiple quantization parameter units are the current quantization parameter units of the current block. In this case, the quantization parameter determination unit 1610 can determine that the average value of the multiple quantization parameters of the current quantization parameter units is the quantization parameter of the current block.
[0252] Figures 22A and 22B illustrate the method for determining the quantization parameter unit corresponding to the current block.
[0253] Figure 22A shows an embodiment in which a quantization parameter unit 2200 corresponds to a plurality of coding blocks 2202 to 2224. Blocks 2202, 2204, 2206, 2210, 2212, and 2214, which are all included in the quantization parameter unit 2200, are dequantized by the quantization parameters corresponding to the quantization parameter unit 2200.
[0254] Furthermore, for blocks that are only partially included in the quantization parameter unit 2200, it can be determined whether or not the quantization parameters of the quantization parameter unit 2200 are applied based on the upper left sample of the block. Therefore, blocks 2208, 2216, 2218, 2220, 2222, and 2224, whose upper left samples are included in the quantization parameter unit 2200, are also dequantized by the quantization parameters corresponding to the quantization parameter unit 2200.
[0255] In Figure 22A, an embodiment was described in which the quantization parameter unit is determined based on the upper left sample of the block. However, in this embodiment, the quantization parameter unit of the block can also be determined by the central sample, the idol-side sample, the lower left sample, the lower right sample, and so on.
[0256] Figure 22B shows an embodiment in which a plurality of quantization parameter units 2252 to 2274 correspond to block 2250.
[0257] Quantization parameter units 2252, 2254, 2258, 2260, 2264, and 2266 are all contained within block 2250. Therefore, block 2250 can also be dequantized by at least one quantization parameter from quantization parameter units 2252, 2254, 2258, 2260, 2264, and 2266. For example, the quantization parameter of block 2250 can be determined as the average of the quantization parameters of quantization parameter units 2252, 2254, 2258, 2260, 2264, and 2266.
[0258] Alternatively, quantization parameter units 2256, 2262, 2268, 2270, 2272, and 2274, which partially overlap block 2250, are also used to determine the quantization parameters of block 2250. Therefore, block 2250 can be dequantized by the quantization parameters determined from at least one of the quantization parameter units 2252 through 2274.
[0259] Figures 23A and 23B illustrate the correspondence between blocks and quantization parameter units.
[0260] Figure 23A illustrates a block tree structure and a quantization parameter map according to one embodiment. According to one embodiment, the quantization parameter unit corresponding to the upper left sample of a block corresponds to the block. Therefore, block 2308 corresponds to quantization parameter unit 2300, block 2310 corresponds to quantization parameter unit 2302, block 2312 corresponds to quantization parameter unit 2304, and block 2314 corresponds to quantization parameter unit 2306. If the correspondence criteria between blocks and quantization parameter units are different, then block 2308 will correspond to the other quantization parameter units 2302, 2304, and 2306.
[0261] Figure 23B illustrates a block tree structure and quantization parameter map according to one embodiment. Similar to Figure 23A, when the quantization parameter unit corresponding to the upper left sample of a block corresponds to a block, blocks 2328, 2330, 2332, and 2334 all correspond to quantization parameter unit 2334. Since the quantization parameters of quantization parameter unit 2334 are applied to blocks 2328, 2330, 2332, and 2334, the quantization parameters are calculated first for block 2328, which has the earliest decoding order. Then, the quantization parameters used for block 2328 can be used directly for blocks 2330, 2332, and 2334.
[0262] For blocks without residual data, the quantization parameters are not determined. For example, if block 2328 has no residual data, inverse quantization of block 2328 is unnecessary, and therefore the quantization parameters for block 2328 are not determined. If block 2330, which is decoded after block 2328, has residual data, then the quantization parameters for block 2330 can be determined. Then, the quantization parameters used for block 2330 can be used directly for blocks 2332 and 2334.
[0263] The quantization parameter determination unit 1610 can obtain the predicted quantization parameters related to the currently assigned quantization parameter unit.
[0264] The quantization parameter determination unit 1610 can obtain predicted quantization parameters from at least one of the following: the quantization parameter unit to the left of the current quantization parameter unit, the quantization parameter unit above the current quantization parameter unit, and the block decoded immediately before the current block.
[0265] Alternatively, the quantization parameter determination unit 1610 can determine the predicted quantization parameters relating to the picture or slice currently containing the quantization parameter unit as the predicted quantization parameters relating to the current quantization parameter unit.
[0266] The quantization parameter determination unit 1610 can obtain the difference quantization parameters related to the currently quantization parameter unit.
[0267] The quantization parameter determination unit 1610 can determine the quantization parameters of the current quantization parameter unit based on the predicted quantization parameters and the differential quantization parameters.
[0268] The inverse quantization unit 1620 can inverse quantize the current block using the quantization parameters of the current quantization parameter unit.
[0269] Figure 24 illustrates a video decoding method in which a quantization parameter unit determines the quantization parameters of a block, and the residual data of the block is decoded using the determined quantization parameters.
[0270] In step 2410, based on at least one of the current block's position and size, the current block is matched with the current quantization parameter unit.
[0271] In one embodiment, the quantization parameter unit containing the coordinate values of the upper left sample of the current block is also determined as the current quantization parameter unit of the current block.
[0272] In one embodiment, if the current block includes multiple quantization parameter units, the multiple quantization parameter units are also determined as the current quantization parameter units of the current block. In this case, the current quantization parameter of the current block can be determined from at least one of the multiple quantization parameter units.
[0273] In step 2420, the predicted quantization parameter related to the current quantization parameter unit is obtained.
[0274] According to one embodiment, the predicted quantization parameter can also be obtained from at least one of the left quantization parameter unit of the current quantization parameter unit, the upper quantization parameter unit of the current quantization parameter unit, and the block decoded immediately before the current block.
[0275] Alternatively, it is also determined as the predicted quantization parameter related to the picture or slice including the current quantization parameter unit and the predicted quantization parameter related to the current quantization parameter unit.
[0276] In step 2430, the differential quantization parameter related to the current quantization parameter unit is obtained.
[0277] In step 2440, based on the predicted quantization parameter and the differential quantization parameter, the quantization parameter of the current quantization parameter unit is determined.
[0278] In step 2450, the current block is inverse quantized by the quantization parameter of the current quantization parameter unit.
[0279] Also, the video decoding method in FIG. 24 may include various embodiments of the quantization parameter determination method by the quantization group of the video decoding apparatus in FIG. 16.
[0280] Based on the video encoding technique for the tree-structured coding unit described with reference to FIGS. 1 to 24, for each tree-structured coding unit, the video data in the spatial region is encoded, and based on the video decoding technique for the tree-structured coding unit, while decoding is performed for each maximum coding unit, the video data in the spatial region is restored, and a video that is a picture and a picture sequence can be restored. The restored video can be played by a playback device, stored in a recording medium, or transmitted via a network.
[0281] Furthermore, the embodiments of this disclosure described above can be created as programs that can be executed on a computer, and can also be realized in a general-purpose digital computer that runs such programs using a computer-readable recording medium.
[0282] While this disclosure has been described in relation to certain best embodiments, other inventions to which alternative, modified, and altered inventions are applied will be obvious to those skilled in the art in light of the foregoing description. That is, the claims shall be construed to include all such alternative, modified, and altered inventions. Accordingly, all content described in the specification and drawings of this application should be interpreted as illustrative and non-restrictive.
Claims
1. The steps include dividing a higher-level coded block into multiple lower-level coded blocks based on block partitioning information, A step of determining the current quantization group based on the value of the partition information of the current encoding block and the value of the partition information of the current quantization group among the plurality of lower-level encoding blocks, A step of obtaining the quantization parameters of the current quantization group based on the predicted quantization parameters and differential quantization parameters, The step includes dequantizing the transformation coefficients in the current transformation block within the current coding block using the quantization parameters, The predicted quantization parameter is obtained using at least one of the quantization parameters of the upper adjacent block of the current quantization group and the quantization parameter of the left adjacent block of the current quantization group. When the upper-level coded block is divided into two lower-level coded blocks by a non-quadtree partition to obtain the current coded block, the value of the partition information of the current coded block increases by 1. A video decoding method wherein, when the upper-level encoded block is divided into four lower-level encoded blocks by quadtree partitioning to obtain the current encoded block, the value of the partition information of the current encoded block increases by 2.
2. The block partitioning information divides the upper-level encoded block into multiple lower-level encoded blocks. Based on the division information values of the current encoding block and the division information values of the current quantization group among the plurality of lower encoding blocks, the current quantization group is determined. Based on the predicted quantization parameters and differential quantization parameters, the quantization parameters for the current quantization group are obtained. The processor includes a processor that dequantizes the transformation coefficients in the current transformation block within the current coding block using the aforementioned quantization parameters, The predicted quantization parameter is obtained using at least one of the quantization parameters of the upper adjacent block of the current quantization group and the quantization parameter of the left adjacent block of the current quantization group. When the upper-level coded block is divided into two lower-level coded blocks by a non-quadtree partition to obtain the current coded block, the value of the partition information of the current coded block increases by 1. A video decoding device in which, when the upper-level coded block is divided into four lower-level coded blocks by quadtree partitioning to obtain the current coded block, the value of the partition information of the current coded block increases by 2.
3. The stage of dividing the upper-level coded block into multiple lower-level coded blocks, A step of determining the current quantization group based on the value of the partition information of the current encoding block and the value of the partition information of the current quantization group among the plurality of lower-level encoding blocks, The steps include obtaining the quantization parameters for the current quantization group, The step includes quantizing the transformation coefficients in the current transformation block within the current coding block using the quantization parameters, Based on the quantization parameters of the current quantization group and the predicted quantization parameters, the difference quantization parameters are obtained. The predicted quantization parameter is obtained using at least one of the quantization parameters of the upper adjacent block of the current quantization group and the quantization parameter of the left adjacent block of the current quantization group. When the upper-level coded block is divided into two lower-level coded blocks by a non-quadtree partition to obtain the current coded block, the value of the partition information of the current coded block increases by 1. A method for storing data generated by a video encoding method, wherein when the upper-level encoded block is divided into four lower-level encoded blocks by quadtree partitioning to obtain the current encoded block, the value of the partition information of the current encoded block increases by 2.
4. Divide the upper-level coded block into multiple lower-level coded blocks, Based on the division information values of the current encoding block and the division information values of the current quantization group among the plurality of lower encoding blocks, the current quantization group is determined. The quantization parameters of the current quantization group are obtained, The processor includes a processor that quantizes the transformation coefficients in the current transformation block within the current encoding block using the aforementioned quantization parameters, Based on the quantization parameters of the current quantization group and the predicted quantization parameters, the difference quantization parameters are obtained. The predicted quantization parameter is obtained using at least one of the quantization parameters of the upper adjacent block of the current quantization group and the quantization parameter of the left adjacent block of the current quantization group. When the upper-level coded block is divided into two lower-level coded blocks by a non-quadtree partition to obtain the current coded block, the value of the partition information of the current coded block increases by 1. A video encoding device in which, when the upper-level encoded block is divided into four lower-level encoded blocks by quadtree partitioning to obtain the current encoded block, the value of the partition information of the current encoded block increases by 2.