Encoders, decoders, and corresponding methods related to intra-predictive mode

By aligning intra-prediction modes for luma and chroma components within coding blocks, the method addresses alignment issues in dual-tree coding, enhancing video compression efficiency and reducing undefined behavior.

JP7866538B2Active Publication Date: 2026-05-27HUAWEI TECH CO LTD
View PDF 1 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
HUAWEI TECH CO LTD
Filing Date
2023-11-30
Publication Date
2026-05-27

Smart Images

  • Figure 0007866538000016
    Figure 0007866538000016
  • Figure 0007866538000017
    Figure 0007866538000017
  • Figure 0007866538000018
    Figure 0007866538000018
Patent Text Reader

Abstract

To provide a coding method for executing derivation of an intra-prediction mode of chroma by using an intra-prediction mode from a corresponding luma component to be executed by a decoding device or an encoding device.SOLUTION: A method includes the steps of: acquiring instruction information related to the position of luma of a present coding block based on a left upper luma sample position of the present coding block; setting a value of an intra-prediction mode of the luma related to the present coding block when the instruction information indicates that intra-prediction (MIP) based on a matrix is applied to a luma component of the position of the luma on the basis of a left upper luma sample position of the present coding block; and acquiring the value of the intra-prediction mode of chroma on the basis of the value of the intra-prediction mode of the luma of the present coding block.SELECTED DRAWING: Figure 9
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] Cross-reference of related applications This application claims priority to PCT application PCT / EP2019 / 072611, filed on 23 August 2019, which in turn claims priority to PCT application PCT / EP2019 / 069944, filed on 24 July 2019. Both applications are incorporated herein by reference.

[0002] Embodiments of this application (disclosure) generally relate to the field of picture processing, and more particularly to deriving intra-predictive modes of chroma by using intra-predictive modes from corresponding luma components. [Background technology]

[0003] Video coding (video encoding and decoding) is used in a wide range of digital video applications, such as broadcast digital TV, video transmission over the internet and mobile networks, real-time conversation applications like video chat, video conferencing, DVD and Blu-ray discs, video content acquisition and editing systems, and camcorders in security applications.

[0004] Even relatively short videos can require a considerable amount of video data to render, which can pose challenges when the data needs to be streamed or otherwise transmitted over communication networks with limited bandwidth. Therefore, video data is generally compressed before being transmitted over modern communication networks. Video size can also be a concern when video is stored on a storage device, as memory resources may be limited. Often, video compression devices use software and / or hardware at the source to encode the video data before transmission or storage, thereby reducing the amount of data required to represent the digital video image. The compressed data is then received at the destination by a video decompression device that decodes the video data. Given limited network resources and the increasing demand for higher video quality, improved compression and decompression techniques that increase the compression ratio with little to no sacrifice of picture quality are desirable. [Overview of the Initiative] [Means for solving the problem]

[0005] Embodiments of this application provide an apparatus and method for encoding and decoding according to an independent claim.

[0006] The other objectives described above are achieved by the subject matter of the independent claims. Further forms of implementation are evident from the dependent claims, specification, and drawings.

[0007] A first aspect of the present invention relates to a coding method performed by a decoding or coding device. The method includes the step of obtaining instructional information regarding the position of a luma (cbWidth / 2, cbHeight / 2) in the current coding block with respect to the upper-left luma sample position (xCb, yCb) of the current coding block, wherein cbWidth represents the width of the luma component in the current coding block and cbHeight represents the height of the luma component in the current coding block. Correspondingly, cbWidth / 2 represents half the width of the luma component in the current coding block and cbHeight / 2 represents half the height of the luma component in the current coding block. The absolute position of the luma position (cbWidth / 2, cbHeight / 2) is (xCb + cbWidth / 2, yCb + cbHeight / 2), that is, the "center" of the prediction block of the corresponding luma.

[0008] The method further includes the steps of setting the value of the intra-prediction mode for the luma associated with the current coding block to a default value when the indicator information indicates that matrix-based intra-prediction (MIP) is applied to the luma component at the luma position (cbWidth / 2, cbHeight / 2) relative to the luma sample position (xCb, yCb) of the current coding block, and obtaining the value of the intra-prediction mode for the chroma based on the value of the intra-prediction mode for the luma of the current coding block.

[0009] Obtaining prediction mode information from a fixed position (cbWidth / 2, cbHeight / 2) of the corresponding luma component ensures that the position of mode MIP and the position of luma's intra-prediction mode are aligned when the division of luma components differs from the division of chroma components in a given block size (for example, when the dual-tree coding method is enabled). The position of mode MIP represents the position where the MIP mode is obtained, and the position of luma's intra-prediction mode represents the position where luma's intra-prediction mode is obtained.

[0010] A second aspect of the present invention relates to a coding method performed by a decoding or coding device. The method includes the step of obtaining instructional information regarding the position of a luma (cbWidth / 2, cbHeight / 2) in the current coding block with respect to the upper-left luma sample position (xCb, yCb) of the current coding block, wherein cbWidth represents the width of the luma component in the current coding block and cbHeight represents the height of the luma component in the current coding block. Correspondingly, cbWidth / 2 represents half the width of the luma component in the current coding block and cbHeight / 2 represents half the height of the luma component in the current coding block. The absolute position of the luma position (cbWidth / 2, cbHeight / 2) is (xCb + cbWidth / 2, yCb + cbHeight / 2), that is, the "center" of the prediction block of the corresponding luma.

[0011] The method further includes the steps of setting the value of the intra-prediction mode for the luma associated with the current coding block to a first default value when the indicator information indicates that the intra-block copy (IBC) mode or palette mode is applied to the luma component at the luma position (cbWidth / 2, cbHeight / 2) relative to the luma sample position (xCb, yCb) of the current coding block, and obtaining the value of the intra-prediction mode for the chroma based on the value of the intra-prediction mode for the luma of the current coding block.

[0012] Obtaining prediction mode information from a fixed position (cbWidth / 2, cbHeight / 2) of the corresponding luma component ensures that the position of mode IBC and the position of the luma intra-prediction mode are aligned when the division of luma components differs from the division of chroma components in a given block size (for example, when the dual-tree coding method is enabled). The position of mode IBC represents the position where the IBC mode is obtained, and the position of the luma intra-prediction mode represents the position where the luma intra-prediction mode is obtained.

[0013] Alternatively, obtaining prediction mode information from a fixed position (cbWidth / 2, cbHeight / 2) of the corresponding luma component ensures that the position of the mode palette and the position of the luma intra-prediction mode are aligned when the division of luma components differs from the division of chroma components in a given block size (for example, when the dual-tree coding method is enabled), where the position of the mode palette represents the position from which the palette mode is obtained, and the position of the luma intra-prediction mode represents the position from which the luma intra-prediction mode is obtained.

[0014] Alignment of mode information acquisition from position (cbWidth / 2, cbHeight / 2) is necessary when the division of luminous components differs from the division of chroma components in a given block size. Otherwise, it may lead to undefined behavior as shown in Figure 7.

[0015] The method according to the first aspect of the present invention can be executed by the apparatus according to the third aspect of the present invention. Further features and implementation forms of the method according to the third aspect of the present invention correspond to the features and implementation forms of the apparatus according to the first aspect of the present invention.

[0016] The method according to the second aspect of the present invention can be executed by the apparatus according to the fourth aspect of the present invention. Further features and implementation forms of the method according to the fourth aspect of the present invention correspond to the features and implementation forms of the apparatus according to the second aspect of the present invention.

[0017] According to a fifth aspect, an embodiment of the present invention relates to an apparatus for decoding or encoding a video stream, including a processor and a memory. The memory stores instructions for causing the processor to execute the method according to the first aspect.

[0018] According to a sixth aspect, an embodiment of the present invention relates to an apparatus for decoding or encoding a video stream, including a processor and a memory. The memory stores instructions for causing the processor to execute the method according to the second aspect.

[0019] According to a seventh aspect, there is proposed a computer-readable storage medium storing instructions for causing one or more processors to code video data when executed. The instructions cause the one or more processors to execute the method according to the first or second aspect or any possible embodiment of the first or second aspect.

[0020] According to an eighth aspect, an embodiment of the present invention relates to a computer program including program code for executing the method according to the first or second aspect or any possible embodiment of the first or second aspect when executed on a computer.

[0021] According to a ninth aspect, an embodiment of the present invention is a device for obtaining an intra prediction mode of chroma, including one or more processors and a non - transient computer - readable storage medium coupled to the processor and storing programming for execution by the processor. When the programming is executed by the processor, it is to obtain first instruction information regarding the luma position (cbWidth / 2, cbHeight / 2) of the current coding block based on the upper - left luma sample position (xCb, yCb) of the current coding block, where cbWidth represents the width of the current coding block of the luma component and cbHeight represents the height of the current coding block of the luma component. The decoder is configured to perform the obtaining. Correspondingly, cbWidth / 2 represents half of the width of the current coding block of the luma component, and cbHeight / 2 represents half of the height of the current coding block of the luma component. The absolute position of the luma position (cbWidth / 2, cbHeight / 2) is (xCb + cbWidth / 2, yCb + cbHeight / 2), that is, the "center" of the corresponding luma prediction block.

[0022] When the first instruction information indicates that matrix - based intra prediction (MIP) is applied to the luma component at the luma position (cbWidth / 2, cbHeight / 2) based on the upper - left luma sample position (xCb, yCb) of the current coding block, set the value of the intra prediction mode of luma related to the current coding block to a first default value, or when the first instruction information indicates that MIP is not applied to the luma component at the luma position (cbWidth / 2, cbHeight / 2) based on the upper - left luma sample position (xCb, yCb) of the current coding block, the one or more processors are further configured to obtain second instruction information regarding the luma position (cbWidth / 2, cbHeight / 2) of the current coding block.

[0023] One or more processors are further configured to set the value of the intra-prediction mode for the chroma associated with the current coding block to a second default value, when the second instruction indicates that the intra-block copy (IBC) mode or palette mode is applied to the chroma component at the chroma position (cbWidth / 2, cbHeight / 2) relative to the chroma sample position (xCb, yCb) of the current coding block, and to obtain the value of the intra-prediction mode for the chroma based on the value of the intra-prediction mode for the chroma of the current coding block.

[0024] Obtaining first instruction information from a fixed position (cbWidth / 2, cbHeight / 2) of the corresponding luma component ensures that the position of mode MIP and the position of the luma intra-prediction mode are aligned when the luma component division differs from the chroma component division in a given block size (for example, when a dual-tree coding method is enabled). If the first instruction information does not indicate that MIP is applied to the luma component at the luma position (cbWidth / 2, cbHeight / 2), obtaining second instruction information from a fixed position (cbWidth / 2, cbHeight / 2) of the corresponding luma component ensures that the position of mode IBC and the position of the luma intra-prediction mode are aligned when the luma component division differs from the chroma component division in a given block size (for example, when a dual-tree coding method is enabled). Alternatively, obtaining second instruction information from a fixed position (cbWidth / 2, cbHeight / 2) of the corresponding luma component ensures that the positions of the mode palette and the intra-prediction modes of the luma are aligned when the division of luma components differs from the division of chroma components in a given block size (for example, when a dual-tree coding method is enabled).

[0025] Details of one or more embodiments are described in the accompanying drawings and the following description. Other features, purposes, and advantages will become apparent from the specification, drawings, and claims.

[0026] Embodiments of the present invention will be described in more detail below with reference to the accompanying figures and drawings. [Brief explanation of the drawing]

[0027] [Figure 1A] This is a block diagram showing an example of a video coding system configured to implement an embodiment of the present invention. [Figure 1B] This is a block diagram showing another example of a video coding system configured to implement embodiments of the present invention. [Figure 2] This is a block diagram showing an example of a video encoder configured to implement an embodiment of the present invention. [Figure 3] This is a block diagram illustrating an exemplary structure of a video decoder configured to implement embodiments of the present invention. [Figure 4] This is a block diagram showing examples of encoding or decoding devices. [Figure 5] This is a block diagram showing another example of an encoding or decoding device. [Figure 6] This figure shows an example of the intra-predictive mode. [Figure 7] This block contains potential issues with undefined behavior in the derivation of the chroma's intra-prediction mode using the current specifications. [Figure 8] This figure shows an example of the position value of a coding block. [Figure 9] This figure shows an embodiment 900 of the method according to the present invention. [Figure 10] This figure shows an embodiment of device 1000 for use according to the present invention. [Figure 11] This is a block diagram showing an exemplary structure of a content supply system 3100 that realizes a content distribution service. [Figure 12] This is a block diagram showing the structure of an example terminal device. [Modes for carrying out the invention]

[0028] In the following, unless otherwise specified, the same reference numeral refers to the same or at least functionally equivalent feature.

[0029] In the following description, references are made to the accompanying drawings, which form part of this disclosure and illustrate as examples certain aspects of the embodiments of the invention or certain aspects in which embodiments of the invention may be used. It is understood that embodiments of the invention may be used in other ways and may include structural or logical modifications not shown in the drawings. Accordingly, the following detailed description should not be understood to be restrictive, and the scope of the invention is defined by the appended claims.

[0030] For example, disclosures relating to a described method may also apply to a corresponding device or system configured to perform the method, and vice versa. For example, if one or more steps of a particular method are described, the corresponding device may include one or more units for performing the steps of the described one or more methods, e.g., functional units (e.g., one unit performing one or more steps, or multiple units each performing one or more of the steps), even if such one or more units are not explicitly described or shown in the figures. On the other hand, for example, if a particular device is described based on one or more units, e.g., functional units, the corresponding method may include one step for performing the function of one or more units (e.g., one step performing the function of one or more units, or multiple steps each performing one or more of the functions of the units), even if such one or more steps are not explicitly described or shown in the figures. Furthermore, it is understood that the various exemplary embodiments and / or features of the aspects described herein may be combined with each other unless otherwise specified.

[0031] Video coding generally refers to the processing of a sequence of pictures that make up a video or video sequence. Instead of the term "picture," the terms "frame" or "image" may be used synonymously in the field of video coding. Video coding (or coding in general) consists of two parts: video encoding and video decoding. Video encoding is performed on the source side and generally involves processing the original video picture (e.g., by compression) to reduce the amount of data required to represent the video picture (for more efficient storage and / or transmission). Video decoding is performed on the destination side and generally involves the reverse processing compared to the encoder to reconstruct the video picture. Embodiments referring to "coding" of a video picture (or picture in general) are understood to be relating to the "encoding" or "decoding" of the video picture or each video sequence. The combination of the encoding and decoding parts is also called a codec (coding and decoding).

[0032] In lossless video coding, the original video picture can be reconstructed (assuming there is no transmission loss or other data loss during storage or transmission), meaning the reconstructed video picture will have the same quality as the original. In lossy video coding, further compression is performed, for example, by quantization, to reduce the amount of data representing the video picture, which cannot be fully reconstructed in the decoder, meaning the quality of the reconstructed video picture will be lower or worse than the quality of the original video picture.

[0033] Some video coding standards belong to the group of "lossy hybrid video codecs" (i.e., they combine spatial and temporal prediction in the sample domain with 2D transform coding to apply quantization in the transform domain). Each picture in a video sequence is generally divided into a set of non-overlapping blocks, and coding is generally performed at the block level. In other words, in an encoder, video is generally processed at the block (video block) level, i.e., encoded, by generating prediction blocks using, for example, spatial (intra-picture) and / or temporal (inter-picture) predictions, obtaining residual blocks by subtracting the prediction blocks from the current blocks (the blocks currently being processed), transforming the residual blocks, and quantizing the residual blocks in the transform domain to reduce (compress) the amount of data being transmitted. In a decoder, the reverse process compared to the encoder is applied to the encoded or compressed blocks in order to reconstruct the current blocks for representation. Furthermore, the encoder duplicates the decoder's processing loop to process subsequent blocks, i.e., to generate identical predictions (e.g., intra and inter predictions) and / or reconstructions for coding.

[0034] Embodiments of the video coding system 10, video encoder 20, and video decoder 30 are described below with reference to Figures 1 to 3.

[0035] Figure 1A is a schematic block diagram showing an exemplary coding system 10 that may utilize the technology of the present application, for example, a video coding system 10 (or short coding system 10). The video encoder 20 (or short encoder 20) and video decoder 30 (or short decoder 30) of the video coding system 10 show an example of a device that may be configured to perform the technology described in various examples in this application.

[0036] As shown in Figure 1A, the coding system 10 includes a source device 12 configured to provide encoded picture data 21 to a destination device 14, for example, in order to decode the encoded picture data 13.

[0037] The source device 12 includes an encoder 20 and may additionally, or optionally, include a picture source 16, a preprocessor (or preprocessing unit) 18, for example, a picture preprocessor 18, and a communication interface or communication unit 22.

[0038] The picture source 16 includes or may include any type of picture-taking device, e.g., a camera for taking pictures of the real world, and / or any type of picture-generating device, e.g., a computer graphics processor for generating computer-animated pictures, or any other type of device for acquiring and / or providing pictures of the real world, computer-generated pictures (e.g., screen content, virtual reality (VR) pictures), and / or any combination thereof (e.g., augmented reality (AR) pictures). The picture source may also include any type of memory or storage for storing any of the pictures described above.

[0039] To distinguish it from the processing performed by the preprocessor 18 and the preprocessing unit 18, the picture or picture data 17 may also be called the raw picture or raw picture data 17.

[0040] The preprocessor 18 is configured to receive (raw) picture data 17 and perform preprocessing on the picture data 17 to obtain a preprocessed picture 19 or preprocessed picture data 19. The preprocessing performed by the preprocessor 18 may include, for example, cropping, color format conversion (e.g., from RGB to YCbCr), color correction, or denoising. It can be understood that the preprocessing unit 18 may be an optional component.

[0041] The video encoder 20 is configured to receive pre-processed picture data 19 and provide encoded picture data 21 (further details are described below, for example, based on Figure 2).

[0042] The communication interface 22 of the source device 12 may be configured to receive the encoded picture data 21 and transmit the encoded picture data 21 (or any further processed version thereof) via the communication channel 13 to another device, such as the destination device 14 or any other device, for storage or direct reconstruction.

[0043] The destination device 14 includes a decoder 30 (for example, a video decoder 30) and may additionally, or optionally, include a communication interface or communication unit 28, a post-processor 32 (or post-processing unit 32), and a display device 34.

[0044] The communication interface 28 of the destination device 14 is configured to receive encoded picture data 21 (or any further processed version thereof) directly from the source device 12 or from any other source, such as a storage device, such as a storage device for encoded picture data, and to provide the encoded picture data 21 to the decoder 30.

[0045] Communication interfaces 22 and 28 may be configured to transmit or receive encoded picture data 21 or encoded data 13 via a direct communication link between the source device 12 and the destination device 14, for example, via a direct wired or wireless connection, or via any type of network, for example, a wired or wireless network or any combination thereof, or any type of private and public network, or any type of combination thereof.

[0046] The communication interface 22 may be configured to process the encoded picture data using any kind of transmission encoding or processing for packaging the encoded picture data 21 into an appropriate format, for example, packets, and / or for sending it over a communication link or communication network.

[0047] The communication interface 28 forming the counterpart of the communication interface 22 may be configured, for example, to receive transmitted data and process the transmitted data using any kind of corresponding decryption or processing and / or depackaging of the transmission to obtain encoded picture data 21.

[0048] Both communication interface 22 and communication interface 28 may be configured as unidirectional or bidirectional communication interfaces, as indicated by the arrows relating to communication channel 13 in Figure 1A pointing from source device 12 to destination device 14, and may be configured, for example, to set up a connection, and to send and receive messages to acknowledge and exchange any other information relating to the communication link and / or data transmission, such as the transmission of encoded picture data.

[0049] The decoder 30 is configured to receive the encoded picture data 21 and provide the decoded picture data 31 or the decoded picture 31 (further details are described below, for example, based on Figure 3 or Figure 5).

[0050] The post-processor 32 of the destination device 14 is configured to obtain post-processed picture data 33, for example, a post-processed picture 33, by post-processing the decoded picture data 31 (also called reconstructed picture data), for example, the decoded picture 31. The post-processing performed by the post-processing unit 32 may include, for example, color format conversion (e.g., from YCbCr to RGB), color correction, cropping, or resampling, or any other processing to prepare the decoded picture data 31 for display by, for example, the display device 34.

[0051] The display device 34 of the destination device 14 is configured to receive, for example, picture data 33 that has been post-processed for displaying the picture to a user or viewer. The display device 34 may be any type of display for showing the reconstructed picture, for example, an integrated or external display or monitor, or may include such a display or monitor. The display may include, for example, a liquid crystal display (LCD), an organic light-emitting diode (OLED) display, a plasma display, a projector, a microLED display, a liquid crystal on silicon (LCoS), a digital light processor (DLP), or any other type of display.

[0052] Figure 1A shows the source device 12 and destination device 14 as separate devices, but the device embodiments may also include both or both functions, such as the source device 12 or its corresponding function and the destination device 14 or its corresponding function. In such embodiments, the source device 12 or its corresponding function and the destination device 14 or its corresponding function may be implemented using the same hardware and / or software, or by separate hardware and / or software, or any combination thereof.

[0053] As will become apparent to those skilled in the art based on the description, the functions of different units or the presence and (strict) division of functions within the source device 12 and / or destination device 14 shown in Figure 1A may vary depending on the actual device and application.

[0054] The encoder 20 (e.g., video encoder 20) or the decoder 30 (e.g., video decoder 30), or both the encoder 20 and the decoder 30, may be implemented by the processing circuitry shown in Figure 1B, such as one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), discrete logic, hardware, or any combination thereof dedicated to video coding. The encoder 20 may be implemented by the processing circuitry 46 to embody various modules considered in relation to the encoder 20 of Figure 2 and / or any other encoder system or subsystem described herein. The decoder 30 may be implemented by the processing circuitry 46 to embody various modules considered in relation to the decoder 30 of Figure 3 and / or any other decoder system or subsystem described herein. The processing circuitry may be configured to perform various operations, which will be considered later. If the technology is partially implemented in software, as shown in Figure 5, the device may store instructions for the software in a suitable non-temporary computer-readable storage medium, or execute the instructions in hardware using one or more processors to perform the technology of this disclosure. Both the video encoder 20 and the video decoder 30 may be incorporated as part of a combined encoder / decoder (codec) within a single device, for example, as shown in Figure 1B.

[0055] The source device 12 and destination device 14 may include any type of handheld or stationary device, including a wide range of devices such as notebook or laptop computers, mobile phones, smartphones, tablets or tablet computers, cameras, desktop computers, set-top boxes, televisions, display devices, digital media players, video game consoles, video streaming devices (such as content service servers or content distribution servers), broadcast receiver devices, and broadcast transmitter devices, and may or may not use an operating system. In some cases, the source device 12 and destination device 14 may be wireless communication devices. Therefore, the source device 12 and destination device 14 may be wireless communication devices.

[0056] In some cases, the video coding system 10 shown in Figure 1A is merely an example, and the techniques of this disclosure may apply to video coding situations (e.g., encoding or decoding video) that do not necessarily involve any data communication between the encoding device and the decoding device. In other examples, the data may be retrieved from local memory or streamed over a network. The video encoding device may encode the data and store it in memory, and / or the video decoding device may retrieve the data from memory and decode it. In some examples, encoding and decoding are performed by devices that do not communicate with each other, but simply encode the data into memory and / or retrieve the data from memory and decode it.

[0057] For convenience of explanation, embodiments of the present invention are described herein by reference to, for example, reference software for next-generation video coding standards developed by the ITU-T Video Coding Experts Group (VCEG) and the ISO / IEC Motion Picture Experts Group (MPEG) Joint Collaboration Team on Video Coding (JCT-VC). Those skilled in the art will understand that embodiments of the present invention are not limited to HEVC or VVC.

[0058] Encoder and encoding method Figure 2 shows a schematic block diagram of an exemplary video encoder 20 configured to implement the technology of the present application. In the example of Figure 2, the video encoder 20 includes an input 201 (or input interface 201), a residual calculation unit 204, a transformation unit 206, a quantization unit 208, an inverse quantization unit 210, an inverse transformation unit 212, a reconstruction unit 214, a loop filter unit 220, a decoded picture buffer (DPB) 230, a mode selection unit 260, an entropy coding unit 270, and an output 272 (or output interface 272). The mode selection unit 260 may include an inter-prediction unit 244, an intra-prediction unit 254, and a segmentation unit 262. The inter-prediction unit 244 may include a motion estimation unit and a motion compensation unit (not shown). The video encoder 20 shown in Figure 2 may also be called a hybrid video encoder or a video encoder with a hybrid video codec.

[0059] The residual calculation unit 204, the conversion processing unit 206, the quantization unit 208, and the mode selection unit 260 may be considered to form the forward signal path of the encoder 20, while the inverse quantization unit 210, the inverse conversion processing unit 212, the reconstruction unit 214, the buffer 216, the loop filter 220, the decoding picture buffer (DPB) 230, the inter-prediction unit 244, and the intra-prediction unit 254 may be considered to form the reverse signal path of the video encoder 20, and the reverse signal path of the video encoder 20 corresponds to the signal path of the decoder (see video decoder 30 in Figure 3). The inverse quantization unit 210, the inverse conversion processing unit 212, the reconstruction unit 214, the loop filter 220, the decoding picture buffer (DPB) 230, the inter-prediction unit 244, and the intra-prediction unit 254 may also be considered to form the "built-in decoder" of the video encoder 20.

[0060] Picture & Picture Separation (Picture & Block) The encoder 20 may be configured to receive, for example, a picture 17 (or picture data 17) via input 201, for example, a picture of a sequence of pictures that form a video or video sequence. The received picture or picture data may also be a preprocessed picture 19 (or preprocessed picture data 19). For simplicity, the following description will refer to picture 17. Picture 17 may also be called the current picture or the picture to be coded (in particular, in video coding, to distinguish the current picture from other pictures, for example, already coded and / or decoded pictures of the same video sequence, i.e., the video sequence that also contains the current picture).

[0061] A (digital) picture can be considered, or may be considered, a two-dimensional array or matrix of samples having intensity values. A sample in an array may also be called a pixel (short for picture element) or pel. The number of samples in the horizontal and vertical (or axis) directions of an array or picture defines the size and / or resolution of the picture. For color representation, generally three color components are used, meaning a picture may represent or contain three sample arrays. In the RGB format or color space, a picture contains corresponding red, green, and blue sample arrays. However, in video coding, each pixel is generally represented by a luminance and chrominance format or color space, for example, YCbCr, which includes a luminance component represented by Y (sometimes L is used instead) and two chrominance components represented by Cb and Cr. The luminance (or luma) component Y represents the brightness or intensity of the gray level (for example, as in a grayscale picture), while the two chrominance (or chroma) components Cb and Cr represent the chromaticity or color information components. Thus, a picture in YCbCr format contains a luminance sample array of luminance sample values ​​(Y) and two chrominance sample arrays of chrominance values ​​(Cb and Cr). A picture in RGB format may be converted to or transformed to YCbCr format, and vice versa, a process also known as transformation or conversion. If the picture is monochrome, it may contain only a luminance sample array. Thus, a picture may be, for example, a luma sample array in a monochrome format, or a luma sample array and two corresponding chroma sample arrays in 4:2:0, 4:2:2, and 4:4:4 color formats.

[0062] Embodiments of the video encoder 20 may include a picture partitioning unit (not shown in Figure 2) configured to partition a picture 17 into multiple (typically non-overlapping) picture blocks 203. These blocks may also be called root blocks, macro blocks (H.264 / AVC), or coding tree blocks (CTB) or coding tree units (CTU) (H.265 / HEVC and VVC). The picture partitioning unit may use the same block size for all pictures and corresponding grids that define the block size for all pictures in the video sequence, or it may change the block size between pictures or subsets or groups of pictures to partition each picture into a corresponding block.

[0063] In a further embodiment, the video encoder may be configured to directly receive a block 203 of picture 17, for example, one, some, or all of the blocks that make up picture 17. The picture block 203 may also be called the current picture block or the coded picture block.

[0064] Similar to picture 17, picture block 203 is smaller in dimensions than picture 17, but can also be considered or may be considered a two-dimensional array or matrix of samples having intensity values ​​(sample values). In other words, block 203 may contain, depending on the applied color format, for example, one sample array (e.g., a luma array for monochrome picture 17, or a luma or chroma array for color picture), or three sample arrays (e.g., a luma and two chroma arrays for color picture 17), or any other number and / or type of arrays. The number of samples in the horizontal and vertical (or axis) directions of block 203 defines the size of block 203. Thus, a block may be, for example, an MxN (M columns × N rows) array of samples or an MxN array of conversion coefficients.

[0065] The embodiment of the video encoder 20 shown in Figure 2 may be configured to encode the picture 17 block by block, for example, encoding and prediction may be performed for each block 203.

[0066] The embodiment of the video encoder 20 shown in Figure 2 may be further configured to divide and / or encode a picture by using slices (also called video slices), the picture may be divided into one or more (generally non-overlapping) slices or encoded using one or more (generally non-overlapping) slices, each slice may contain one or more blocks (e.g., CTUs).

[0067] Embodiments of the video encoder 20 shown in Figure 2 may be further configured to partition and / or encode a picture by using tile groups (also called video tile groups) and / or tiles (also called video tiles), wherein the picture may be partitioned into one or more (generally non-overlapping) tile groups or encoded using one or more (generally non-overlapping) tile groups, each tile group may, for example, contain one or more blocks (e.g., CTUs) or one or more tiles, each tile may, for example, be rectangular in shape and contain one or more blocks (e.g., CTUs), for example, complete or fragmented blocks.

[0068] Calculation of residuals The residual calculation unit 204 may be configured to calculate the residual block 205 (also called residual 205) based on the picture block 203 and the prediction block 265 (further details about the prediction block 265 will be given later), for example, by subtracting the sample value of the prediction block 265 from the sample value of the picture block 203 for each sample (for each pixel) to obtain the residual block 205 in the sample region.

[0069] conversion The transformation processing unit 206 may be configured to apply a transformation, such as a discrete cosine transform (DCT) or discrete sine transform (DST), to the sample values ​​of the residual block 205 to obtain transformation coefficients 207 in the transformation domain. The transformation coefficients 207, also called transformation residual coefficients, may represent the residual block 205 in the transformation domain.

[0070] The conversion processing unit 206 may be configured to apply an integer approximation of DCT / DST, such as the conversion specified for H.265 / HEVC. Compared to the orthogonal DCT conversion, such an integer approximation is generally scaled by a certain rate. An additional scaling factor is applied as part of the conversion process to maintain the norm of the residual blocks processed by the forward and inverse conversions. The scaling factor is generally selected based on certain constraints, such as the scaling factor being a power of 2 for the shift operation, the bit depth of the conversion coefficients, and the trade-off between accuracy and implementation cost. For example, a particular scaling factor may be specified for the inverse conversion by the inverse conversion processing unit 212 (and the corresponding inverse conversion by the inverse conversion processing unit 312 in the video decoder 30, for example), and a corresponding scaling factor for the forward conversion by the conversion processing unit 206 of the encoder 20 may be specified accordingly.

[0071] Embodiments of the video encoder 20 (each a conversion processing unit 206) may be configured to output, for example, one or more conversions of a certain kind, which are either left as they are or encoded or compressed by the entropy coding unit 270, so that the video decoder 30 may receive the conversion parameters and use them for decoding.

[0072] quantization The quantization unit 208 may be configured to quantize the transformation coefficient 207 to obtain the quantized coefficient 209, for example, by applying scalar quantization or vector quantization. The quantized coefficient 209 may also be called the quantized transformation coefficient 209 or the quantized residual coefficient 209.

[0073] The quantization process may reduce the bit depth associated with some or all of the conversion coefficients 207. For example, n-bit conversion coefficients may be truncated to m-bit conversion coefficients during quantization, where n is greater than m. The degree of quantization may be modified by adjusting the quantization parameter (QP). For example, with respect to scalar quantization, different scaling may be applied to achieve finer or coarser quantization. Smaller quantization step sizes correspond to finer quantization, while larger quantization step sizes correspond to coarser quantization. Applicable quantization step sizes may be indicated by the quantization parameter (QP). The quantization parameter may be, for example, an index to a predefined set of applicable quantization step sizes. For example, a small quantization parameter may correspond to finer quantization (smaller quantization step size), a large quantization parameter may correspond to coarser quantization (larger quantization step size), or vice versa. Quantization may involve division by the quantization step size, and the corresponding and / or inverse dequantization by the inverse quantization unit 210 may involve multiplication by the quantization step size. Some standards, e.g., embodiments by HEVC, may be configured to determine the quantization step size using quantization parameters. Generally, the quantization step size may be calculated based on the quantization parameters using a fixed-point approximation of the equations, which involves division. Additional multipliers may be introduced with respect to quantization and dequantization to restore the norm of the residual block, which may be modified due to the scaling used in the fixed-point approximation of the equations with respect to the quantization step size and quantization parameters. In one exemplary implementation, the scaling of the inverse transform and dequantization may be combined. Alternatively, a customized quantization table may be used and signaled, for example, from encoder to decoder in the bitstream. Quantization is an irreversible operation, and the loss increases as the quantization step size increases.

[0074] Embodiments of the video encoder 20 (each a quantization unit 208) may be configured to output quantization parameters (QP) that are either raw or encoded by the entropy coding unit 270, for example, so that the video decoder 30 may receive and apply the quantization parameters for decoding.

[0075] inverse quantization The inverse quantization unit 210 is configured to obtain dequantized coefficients 211 by applying the inverse of the quantization scheme applied by the quantization unit 208 to the quantized coefficients, for example, based on or using the same quantization step size as the quantization unit 208. The dequantized coefficients 211 are also called dequantized residual coefficients 211 and may correspond to the transformation coefficients 207—although they are generally not identical to the transformation coefficients due to losses due to quantization.

[0076] Inverse Transform The inverse transform processing unit 212 is configured to obtain a reconstructed residual block 213 (or the corresponding dequantized coefficient 213) in the sample region by applying the inverse transform of the transform applied by the transform processing unit 206, for example, an inverse discrete cosine transform (DCT) or an inverse discrete sine transform (DST) or other inverse transform. The reconstructed residual block 213 may also be called a transform block 213.

[0077] Rebuild The reconstruction unit 214 (for example, an adder or summer 214) is configured to obtain the reconstructed block 215 in the sample region by adding the transformed block 213 (i.e., the reconstructed residual block 213) to the predicted block 265 by adding the sample values ​​of the reconstructed residual block 213 and the sample values ​​of the predicted block 265 --sample by sample.

[0078] filtering The loop filter unit 220 (or simply "loop filter" 220) is configured to filter the reconstructed block 215 to obtain a filtered block 221, or more generally, to filter the reconstructed sample to obtain a filtered sample. The loop filter unit is configured, for example, to smooth pixel transitions or otherwise improve the quality of the video. The loop filter unit 220 may include one or more loop filters, such as a deblocking filter, a sample-adaptive offset (SAO) filter, or one or more other filters, such as a bilateral filter, an adaptive loop filter (ALF), a sharpening, smoothing filter, or a collaborative filter, or any combination thereof. The loop filter unit 220 is shown in Figure 2 as an in-loop filter, but in other configurations, the loop filter unit 220 may be implemented as a post-loop filter. The filtered block 221 may also be called the filtered reconstructed block 221.

[0079] Embodiments of the video encoder 20 (each a loop filter unit 220) may be configured to output loop filter parameters (such as sample-adaptive offset information) that are either left as they are or encoded by the entropy coding unit 270, for example, so that a decoder 30 may receive the same loop filter parameters or each respective loop filter and apply them for decoding.

[0080] Decode picture buffer The decoded picture buffer (DPB) 230 may be a memory that stores a reference picture or generally reference picture data for encoding video data by the video encoder 20. The DPB 230 may be formed by any of various memory devices, such as dynamic random access memory (DRAM) including synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of memory devices. The decoded picture buffer (DPB) 230 may be configured to store one or more filtered blocks 221. The decoded picture buffer 230 may be further configured to store the same current picture or a different picture, for example, other already filtered blocks of an already reconstructed picture, for example, an already reconstructed and filtered block 221, for example, to provide a complete already reconstructed, i.e., decoded picture (and corresponding reference blocks and samples) and / or a partially reconstructed current picture (and corresponding reference blocks and samples) for interpretation. The decoded picture buffer (DPB) 230 may also be configured to store, for example, one or more unfiltered reconstructed blocks 215 or generally unfiltered reconstructed samples if the reconstructed blocks 215 are not filtered by the loop filter unit 220, or to store any other further processed versions of the reconstructed blocks or samples.

[0081] Mode Selection (Classification & Prediction) The mode selection unit 260 includes a partitioning unit 262, an inter-prediction unit 244, and an intra-prediction unit 254, and is configured to receive or acquire original picture data, for example, the original block 203 (the current block 203 of the current picture 17), and reconstructed picture data, for example, filtered and / or unfiltered reconstructed samples or blocks from one or more already decoded pictures of the same (current) picture and / or from, for example, the decoded picture buffer 230 or other buffers (for example, line buffers not shown). The reconstructed picture data is used as reference picture data for predictions, for example, inter-prediction or intra-prediction, to acquire prediction blocks 265 or predictor 265.

[0082] The mode selection unit 260 may be configured to determine or select a partitioning and prediction mode (e.g., intra or inter-prediction mode) for the prediction mode of the current block (without partitioning), and to generate a corresponding prediction block 265 used for calculating the residual block 205 and reconstructing the reconstructed block 215.

[0083] Embodiments of the mode selection unit 260 may be configured to select a partitioning and prediction mode (for example, from partitioning and prediction modes supported by or available to the mode selection unit 260) that provides the best match, or in other words, the smallest residual (the smallest residual means better compression for transmission or storage) or the smallest signaling overhead (the smallest signaling overhead means better compression for transmission or storage), or that takes both into account or balances them. The mode selection unit 260 may also be configured to determine the partitioning and prediction mode based on rate distortion optimization (RDO), i.e., to select a prediction mode that provides the smallest rate distortion. In this context, terms such as “best,” “smallest,” and “optimal” do not necessarily refer to the overall “best,” “smallest,” and “optimal,” but may also refer to termination or selection criteria such as a value being above or below a threshold, or potentially leading to a “suboptimal choice,” but satisfying other constraints that reduce complexity and processing time.

[0084] In other words, the partitioning unit 262 may be configured to partition block 203 into smaller block partitions or subblocks (which also form a block) using, for example, quadtree partitioning (QT), binary partitioning (BT), or ternary partitioning (TT), or any combination thereof, and to perform predictions with respect to each of the block partitions or subblocks, where mode selection includes selecting the tree structure of the partitioned block 203, and prediction modes are applied to each of the block partitions or subblocks.

[0085] The following describes in more detail the sorting (by the sorting unit 260, for example) and prediction (by the inter-prediction unit 244 and intra-prediction unit 254) processes performed by the exemplary video encoder 20.

[0086] classification The partitioning unit 262 may partition (or divide) the current block 203 into smaller partitions, for example, smaller blocks of square or rectangular size. These smaller blocks (also called subblocks) may be further partitioned into even smaller partitions. This is also called tree partitioning or hierarchical tree partitioning, for example, the root block at root tree level 0 (hierarchy level 0, depth 0) may be recursively partitioned, for example, into two or more blocks at the next lowest tree level, for example, into nodes at tree level 1 (hierarchy level 1, depth 1), and these blocks may be further partitioned into two or more blocks at the next lowest level, for example, tree level 2 (hierarchy level 2, depth 2), and so on until a termination criterion is met, for example, the maximum tree depth or the minimum block size is reached and partitioning is terminated, and so on. Blocks that are not further partitioned are also called leaf blocks or leaf nodes of the tree. A tree that uses partitioning into two sections is called a binary tree (BT), a tree that uses partitioning into three sections is called a ternary tree (TT), and a tree that uses partitioning into four sections is called a quadary tree (QT).

[0087] As described above, the term “block” as used herein may refer to a portion of a picture, in particular a portion of a square or rectangle. For example, in relation to HEVC and VVC, a block may be a coding tree unit (CTU), a coding unit (CU), a prediction unit (PU), and a transform unit (TU), and / or a corresponding block, such as a coding tree block (CTB), a coding block (CB), a transform block (TB), or a prediction block (PB).

[0088] For example, a coding tree unit (CTU) may be or include a CTB of a luminous sample, two corresponding CTBs of a chroma sample of a picture having three sample sequences, or a CTB of a sample of a picture coded using three separate color planes and syntax structures used to code a monochrome picture or sample. Correspondingly, a coding tree block (CTB) may be an NxN block of samples for some value of N such that the division of the constituent CTB into a CTB is a partition. A coding unit (CU) may be a coding block of a luminous sample, two corresponding coding blocks of a chroma sample of a picture having three sample sequences, or a coding block of a sample of a picture coded using three separate color planes and syntax structures used to code a monochrome picture or sample. Correspondingly, a coding block (CB) may be an MxN block of samples for some values ​​of M and N such that the division of the CTB into a coding block is a partition.

[0089] For example, in an embodiment using HEVC, a coding tree unit (CTU) may be divided into CUs by using a quadtree structure represented as a coding tree. The decision of whether to code a picture area using interpicture (time) prediction or intrapicture (spatial) prediction is made at the CU level. Each CU may be further divided into one, two, or four PUs according to the PU division type. Within a single PU, the same prediction process is applied, and relevant information is sent to the decoder based on the PU. After obtaining residual blocks by applying the prediction process based on the PU division type, the CU may be divided into transformation units (TUs) by another quadtree structure similar to a coding tree for the CU.

[0090] For example, in embodiments of the latest video coding standards currently under development, called Multipurpose Video Coding (VVC), combined quadtree and binary tree (QTBT) partitions are used, for example, to partition coding blocks. In the QTBT block structure, CUs can be either square or rectangular in shape. For example, a coding tree unit (CTU) is first partitioned by a quadtree structure. The leaf nodes of the quadtree are further partitioned by a binary or ternary (or triple) tree structure. The leaf nodes of the partitioned trees are called coding units (CUs), and their segmentation is used for prediction and transformation processing without any further partitioning. This means that CUs, PUs, and TUs have the same block size in the QTBT coding block structure. In parallel, multipartitions, such as ternary tree partitions, may be used in conjunction with the QTBT block structure.

[0091] In one example, the mode selection unit 260 of the video encoder 20 may be configured to perform any combination of the classification techniques described herein.

[0092] As described above, the video encoder 20 is configured to determine or select the best or optimal prediction mode from a set of (for example, predetermined) prediction modes. The set of prediction modes may include, for example, an intra-prediction mode and / or an inter-prediction mode.

[0093] Intra Prediction A set of intra-prediction modes may include, for example, 35 different intra-prediction modes defined in HEVC, such as DC (or mean) mode and non-directional modes such as planar mode, or directional modes, or for example, 67 different intra-prediction modes defined for VVC, such as DC (or mean) mode and non-directional modes such as planar mode, or directional modes.

[0094] The intra-prediction unit 254 is configured to generate an intra-prediction block 265 using reconstructed samples of neighboring blocks of the same current picture, based on one of the intra-prediction modes in a set of intra-prediction modes.

[0095] The intra-prediction unit 254 (or generally the mode selection unit 260) is further configured to output intra-prediction parameters (or generally information indicating a selected intra-prediction mode for a block) to the entropy coding unit 270 in the form of syntax elements 266 for inclusion in the encoded picture data 21, for example, so that the video decoder 30 may receive the prediction parameters and use them for decoding.

[0096] Interpretation A set of (or possible) interpretation modes depends on the available reference picture (i.e., a previously at least partially decoded picture stored in DBP230) and other interpretation parameters, such as whether the entire reference picture is used to search for the best-matching reference block, or only a portion of the reference picture, such as only the search window area around the current block, and / or whether pixel interpolation, such as half / semi-pel and / or quarter-pel interpolation, is applied.

[0097] In addition to the prediction mode described above, a skip mode and / or a direct mode may also be applied.

[0098] The interpretation unit 244 may include a motion estimation (ME) unit and a motion compensation (MC) unit (neither of which are shown in Figure 2). The motion estimation unit may be configured to receive or acquire, for motion estimation, a picture block 203 (the current picture block 203 of the current picture 17) and a decoded picture 231, or at least one or more already reconstructed blocks, for example, one or more other / different reconstructed blocks of the already decoded picture 231. For example, a video sequence may include the current picture and the already decoded picture 231, or in other words, the current picture and the already decoded picture 231 may be part of or form part of a sequence of pictures that make up the video sequence.

[0099] The encoder 20 may be configured, for example, to select a reference block from multiple reference blocks of the same or different pictures among several other pictures, and to provide the motion estimation unit with an offset (spatial offset) between the reference picture (or reference picture index) and / or the position (x, y coordinates) of the reference block and the position of the current block as an interpretation parameter. This offset is also called the motion vector (MV).

[0100] The motion compensation unit is configured to obtain interprediction parameters, for example, receive them, and perform interprediction based on or using the interprediction parameters to obtain interprediction block 265. Motion compensation performed by the motion compensation unit may include fetching or generating prediction blocks based on motion / block vectors determined by motion estimation, possibly performing subpixel-precision interpolation. Interpolation filtering may generate additional pixel samples from known pixel samples, and thus potentially increase the number of candidate prediction blocks that may be used to code picture blocks. Upon receiving a motion vector about the current picture block's PU, the motion compensation unit may find the prediction block pointed to by the motion vector in one of the reference picture lists.

[0101] The motion compensation unit may also generate block and video slice-related syntax elements for use by the video decoder 30 when decoding the picture blocks of the video slice. In addition to slices and their respective syntax elements, or as an alternative to slices and their respective syntax elements, tile groups and / or tiles and their respective syntax elements may be generated or used.

[0102] Entropy coding The entropy coding unit 270 is configured to apply, for example, an entropy coding algorithm or scheme (e.g., variable length coding (VLC), context adaptive VLC (CAVLC), arithmetic coding, binarization, context adaptive binary arithmetic coding (CABAC), syntax-based context-adaptive binary arithmetic coding (SBAC), probability interval partitioning entropy (PIPE) coding, or another entropy coding method or technique) or bypass (uncompressed) to the quantized coefficients 209, inter-prediction parameters, intra-prediction parameters, loop filter parameters, and / or other syntax elements, for example, to obtain encoded picture data 21 that can be output via output 272 in the form of an encoded bitstream 21, so that the video decoder 30 may receive the parameters and use them for decoding. The encoded bitstream 21 may be sent to the video decoder 30 or stored in memory for later transmission or retrieval by the video decoder 30.

[0103] Other variations of the video encoder 20 can be used to encode a video stream. For example, a non-transformation encoder 20 may directly quantize the residual signal with respect to a particular block or frame without a transformation processing unit 206. In another implementation, the encoder 20 may have a quantization unit 208 and an inverse quantization unit 210 combined into a single unit.

[0104] Decoder and decoding method Figure 3 shows an example of a video decoder 30 configured to implement the technology of the present application. The video decoder 30 is configured to receive encoded picture data 21 (e.g., encoded bitstream 21) encoded by, for example, the encoder 20, in order to obtain a decoded picture 331. The encoded picture data or bitstream contains information for decoding the encoded picture data, for example, the picture blocks of the encoded video slice (and / or tile group or tile) and the associated syntax elements.

[0105] In the example in Figure 3, the decoder 30 includes an entropy decoding unit 304, an inverse quantization unit 310, an inverse transform processing unit 312, a reconstruction unit 314 (e.g., an aggregater 314), a loop filter 320, a decoded picture buffer (DBP) 330, a mode application unit 360, an interpretation unit 344, and an intraprediction unit 354. The interpretation unit 344 may be a motion compensation unit or include a motion compensation unit. In some examples, the video decoder 30 may perform a decoding path that is generally the reverse of the encoding path described in relation to the video encoder 100 in Figure 2.

[0106] As described in relation to encoder 20, the inverse quantization unit 210, inverse processing unit 212, reconstruction unit 214, loop filter 220, decoding picture buffer (DPB) 230, inter-prediction unit 344, and intra-prediction unit 354 can also be considered to form the “built-in decoder” of video encoder 20. Therefore, the inverse quantization unit 310 may be functionally identical to the inverse quantization unit 110, the inverse processing unit 312 may be functionally identical to the inverse processing unit 212, the reconstruction unit 314 may be functionally identical to the reconstruction unit 214, the loop filter 320 may be functionally identical to the loop filter 220, and the decoding picture buffer 330 may be functionally identical to the decoding picture buffer 230. Thus, the descriptions given for each unit and function of video encoder 20 apply mutatis mutandis to each unit and function of video decoder 30.

[0107] Entropy decoding The entropy decoding unit 304 is configured to analyze the bitstream 21 (or generally the encoded picture data 21) and, for example, perform entropy decoding on the encoded picture data 21 to obtain, for example, quantized coefficients 309 and / or decoded coding parameters (not shown in Figure 3), such as inter-prediction parameters (e.g., reference picture index and motion vector), intra-prediction parameters (e.g., intra-prediction mode or index), transformation parameters, quantization parameters, loop filter parameters, and / or other syntax elements. The entropy decoding unit 304 may be configured to apply a decoding algorithm or scheme corresponding to the coding scheme described in relation to the entropy coding unit 270 of the encoder 20. The entropy decoding unit 304 may be further configured to provide the inter-prediction parameters, intra-prediction parameters, and / or other syntax elements to the mode application unit 360 and other parameters to other units of the decoder 30. The video decoder 30 may receive the syntax elements at the video slice level and / or video block level. In addition to slices and their respective syntax elements, or as an alternative to slices and their respective syntax elements, tile groups and / or tiles and their respective syntax elements may be received and / or used.

[0108] inverse quantization The inverse quantization unit 310 may be configured to receive quantization parameters (QP) (or information generally related to inverse quantization) and quantized coefficients from the encoded picture data 21 (for example, by the entropy decoding unit 304, for example, by parsing and / or decoding), and to apply inverse quantization to the decoded quantized coefficients 309 based on the quantization parameters to obtain dequantized coefficients 311, which may also be called transformed coefficients 311. The inverse quantization process may also include using the quantization parameters determined by the video encoder 20 for each video block in the video slice (or tile or tile group) to determine the degree of quantization and, likewise, the degree of inverse quantization to be applied.

[0109] Inverse Transform The inverse transformation processing unit 312 may be configured to receive the dequantized coefficients 311, also called the transformation coefficients 311, and to apply a transformation to the dequantized coefficients 311 in order to obtain the reconstructed residual block 213 in the sample region. The reconstructed residual block 213 may also be called the transformation block 313. The transformation may be an inverse transformation, such as an inverse DCT, inverse DST, inverse integer transformation, or a conceptually similar inverse transformation process. The inverse transformation processing unit 312 may be further configured to receive transformation parameters or corresponding information from the encoded picture data 21 (for example, by parsing and / or decoding by the entropy decoding unit 304) in order to determine the transformation to be applied to the dequantized coefficients 311.

[0110] Rebuild The reconstruction unit 314 (for example, an adder or summer 314) may be configured to obtain the reconstructed block 315 in the sample region by adding the reconstructed residual block 313 to the predicted block 365, for example, by adding the sample values ​​of the reconstructed residual block 313 to the sample values ​​of the predicted block 365.

[0111] filtering The loop filter unit 320 (either within or after the coding loop) is configured to filter the reconstructed block 315 to smooth pixel transitions or otherwise improve video quality, for example, to obtain the filtered block 321. The loop filter unit 320 may include one or more loop filters, such as a deblocking filter, a sample-adaptive offset (SAO) filter, or one or more other filters, such as a bilateral filter, an adaptive loop filter (ALF), a sharpening, smoothing filter, or a co-filter, or any combination thereof. The loop filter unit 320 is shown in Figure 3 as an in-loop filter, but in other configurations, the loop filter unit 320 may be implemented as a post-loop filter.

[0112] Decode picture buffer Next, the decoded video block 321 of the picture is stored in a decoded picture buffer 330, which stores the decoded picture 331 for use as a reference picture for subsequent motion compensation for other pictures and / or for output on the display, respectively.

[0113] The decoder 30 is configured to output the decoded picture 311, for example, via output 312, for presentation or viewing to the user.

[0114] prediction The inter-prediction unit 344 may be identical to the inter-prediction unit 244 (particularly the motion compensation unit), and the intra-prediction unit 354 may be functionally identical to the inter-prediction unit 254, and perform partitioning or partitioning decisions and predictions based on partitioning and / or prediction parameters or their respective information received from the encoded picture data 21 (for example, by analysis and / or decoding by the entropy decoding unit 304). The mode application unit 360 may be configured to perform block-by-block predictions (intra or inter-predictions) based on the reconstructed picture, block, or each sample (filtered or unfiltered) in order to obtain prediction blocks 365.

[0115] When a video slice is coded as an intra-coded (I) slice, the intra-prediction unit 354 of the mode application unit 360 is configured to generate a prediction block 365 for the picture block of the current video slice based on the signaled intra-prediction mode and data from already decoded blocks of the current picture. When a video picture is coded as an inter-coded (i.e., B or P) slice, the inter-prediction unit 344 (e.g., motion compensation unit) of the mode application unit 360 is configured to generate a prediction block 365 for the video block of the current video slice based on motion vectors and other syntax elements received from the entropy decoding unit 304. With respect to inter-prediction, the prediction block may be generated from one of the reference pictures in one of the reference picture lists. The video decoder 30 may construct reference frame lists, List 0 and List 1, using default construction techniques based on the reference pictures stored in the DPB 330. The same or similar may apply by such embodiments to embodiments that use tile groups (e.g., video tile groups) and / or tiles (e.g., video tiles) in addition to or as a substitute for slices (e.g., video slices), for example, video may be coded using I, P, or B tile groups and / or tiles.

[0116] The mode-applying unit 360 is configured to determine predictive information about the video blocks of the current video slice by analyzing motion vectors or related information and other syntax elements, and to use the predictive information to generate a predictive block about the current video block being decoded. For example, the mode-applying unit 360 uses some of the received syntax elements to determine the predictive mode used to code the video blocks of the video slice (e.g., intra or inter predictive), the slice type of inter predictive (e.g., B slice, P slice, or GPB slice), construction information about one or more of the reference picture lists for the slice, motion vectors for each intercoded video block of the slice, the status of the inter predictive for each intercoded video block of the slice, and other information for decoding the video blocks in the current video slice. The same or similar may be applied by such embodiments for embodiments that use tile groups (e.g., video tile groups) and / or tiles (e.g., video tiles) in addition to or as an alternative to slices (e.g., video slices), for example, video may be coded using I, P, or B tile groups and / or tiles.

[0117] The embodiment of the video decoder 30 shown in Figure 3 may be configured to divide and / or decode a picture by using slices (also called video slices), the picture may be divided into one or more (generally non-overlapping) slices or decoded using one or more (generally non-overlapping) slices, each slice may contain one or more blocks (e.g., CTUs).

[0118] Embodiments of the video decoder 30 shown in Figure 3 may be configured to partition and / or decode a picture by using tile groups (also called video tile groups) and / or tiles (also called video tiles), wherein the picture may be partitioned into one or more (generally non-overlapping) tile groups or decoded using one or more (generally non-overlapping) tile groups, each tile group may, for example, contain one or more blocks (e.g., CTUs) or one or more tiles, each tile may, for example, be rectangular in shape and contain one or more blocks (e.g., CTUs), for example, complete or fragmented blocks.

[0119] Other variations of the video decoder 30 may be used to decode the encoded picture data 21. For example, the decoder 30 may generate an output video stream without a loop filtering unit 320. For example, a non-transformation-based decoder 30 may directly dequantize the residual signal with respect to a particular block or frame without an inverse transformation processing unit 312. In another implementation, the video decoder 30 may have an inverse quantization unit 310 and an inverse transformation processing unit 312 combined into a single unit.

[0120] It should be understood that in encoder 20 and decoder 30, the processing result of the current step may be further processed and then output to the next step. For example, after interpolation filtering, motion vector derivation, or loop filtering, further operations such as clipping or shifting may be performed on the processing result of interpolation filtering, motion vector derivation, or loop filtering.

[0121] It should be noted that further calculations may be applied to the derived motion vector of the current block (including, but not limited to, affine mode control point motion vectors, affine, planar, and ATMVP mode lower block motion vectors, and temporal motion vectors). For example, the value of a motion vector is constrained to a given range according to its representation bits. If the representation bits of a motion vector are bitDepth, then the range is -2^(bitDepth-1) to 2^(bitDepth-1)-1, where "^" means exponentiation. For example, if bitDepth is set to be equal to 16, the range is -32768 to 32767, and if bitDepth is set to be equal to 18, the range is -131072 to 131071. For example, the values ​​of the derived motion vectors (e.g., the MVs of four 4x4 subblocks within one 8x8 block) are constrained such that the maximum difference between the integer parts of the MVs of the four 4x4 subblocks is less than or equal to N pixels, such as less than or equal to 1 pixel. Here, we provide two methods for constraining motion vectors according to bitDepth.

[0122] Method 1: Remove the MSB (most significant bit) due to overflow using flow calculation. ux = ( mvx + 2 bitDepth ) % 2 bitDepth (1) mvx = ( ux >= 2 bitDepth-1 ) ? (ux - 2 bitDepth ) : ux (2) uy = ( mvy+2 bitDepth ) % 2 bitDepth (3) mvy = ( uy >= 2 bitDepth-1 ) ? (uy - 2 bitDepth ) : uy (4) In the formula, mvx is the horizontal component of the motion vector of the image block or subblock, mvy is the vertical component of the motion vector of the image block or subblock, and ux and uy represent the intermediate values.

[0123] For example, when the value of mvx is -32769, after applying equations (1) and (2), the resulting value is 32767. In a computer system, decimal numbers are stored as two's complement. The two's complement of -32769 is 1,0111,1111,1111,1111 (17 bits), then the MSB is discarded, and thus the resulting two's complement is 0111,1111,1111,1111 (decimal 32767), which is the same as the output by applying equations (1) and (2).

[0124] ux = (mvpx + mvdx + 2 bitDepth ) % 2 bitDepth (5) mvx = (ux >= 2 bitDepth-1 )? (ux - 2 bitDepth ) : ux (6) uy = (mvpy + mvdy + 2 bitDepth ) % 2 bitDepth (7) mvy = (uy >= 2 bitDepth-1 )? (uy - 2 bitDepth ) : uy (8)

[0125] The operation may be applied in the sum of mvp and mvd as shown in equations (5) to (8).

[0126] Method 2: Remove the overflow MSB by clipping the value vx = Clip3(-2 bitDepth-1 , 2 bitDepth-1 -1, vx) vy = Clip3(-2 bitDepth-1 , 2 bitDepth-1 -1, vy) In the formula, vx is the horizontal component of the motion vector of the image block or subblock, vy is the vertical component of the motion vector of the image block or subblock, x, y, and z correspond to the three input values ​​of the MV clipping process, respectively, and the definition of the function Clip3 is as follows:

number

[0127] Figure 4 is a schematic diagram of a video coding device 400 according to an embodiment of the present disclosure. The video coding device 400 is suitable for implementing embodiments disclosed as described herein. In embodiments, the video coding device 400 may be a decoder, such as the video decoder 30 in Figure 1A, or an encoder, such as the video encoder 20 in Figure 1A.

[0128] The video coding device 400 includes an incoming port 410 (or input port 410) and a receiver unit (Rx) 420 for receiving data, a processor, logic unit, or central processing unit (CPU) 430 for processing data, a transmitter unit (Tx) 440 and an outgoing port 450 (or output port 450) for transmitting data, and memory 460 for storing data. The video coding device 400 may also include optical-electrical (OE) components and electrical-optical (EO) components coupled to the incoming port 410, receiver unit 420, transmitter unit 440, and outgoing port 450 for transmitting or receiving optical or electrical signals.

[0129] The processor 430 is implemented by hardware and software. The processor 430 may be implemented as one or more CPU chips, cores (for example, as a multi-core processor), FPGAs, ASICs, and DSPs. The processor 430 communicates with the incoming port 410, the receiver unit 420, the transmitter unit 440, the outgoing port 450, and the memory 460. The processor 430 includes a coding module 470. The coding module 470 implements the embodiments disclosed above. For example, the coding module 470 implements, processes, prepares, or provides various coding operations. Thus, including the coding module 470 greatly improves the functionality of the video coding device 400 and results in the transition of the video coding device 400 to different states. Alternatively, the coding module 470 is implemented as instructions stored in the memory 460 and executed by the processor 430.

[0130] Memory 460 may include one or more disks, tape drives, and solid-state drives, and may be used as an over-flow data storage device for storing such programs when selected for execution, as well as for storing instructions and data read during program execution. Memory 460 may be, for example, volatile and / or non-volatile, and may be read-only memory (ROM), random-access memory (RAM), ternary content-addressable memory (TCAM), and / or static random-access memory (SRAM).

[0131] Figure 5 is a simplified block diagram of a device 500 which may be used as either or both of the source device 12 and destination device 14 in Figure 1, according to an exemplary embodiment.

[0132] The processor 502 of the device 500 can be a central processing unit. Alternatively, the processor 502 can be one or more devices of any other type, existing or to be developed, capable of manipulating or processing information. The disclosed implementation can be carried out by a single processor, e.g., processor 502, as shown, but speed and efficiency advantages can be realized by using two or more processors.

[0133] The memory 504 of the device 500 can be, in implementation, a read-only memory (ROM) device or a random access memory (RAM) device. Any other suitable type of storage device may be used as memory 504. Memory 504 may include code and data 506 accessed by the processor 502 using the bus 512. Memory 504 may further include an operating system 508 and an application program 510, the application program 510 including at least one program that enables the processor 502 to perform the methods described herein. For example, the application program 510 may include applications 1 to N, further including a video coding application that performs the methods described herein.

[0134] The device 500 may also include one or more output devices, such as a display 518. The display 518 may, in one example, be a touch display that combines the display with a touch-sensing element that is operable to sense touch input. The display 518 may be coupled to the processor 502 via the bus 512.

[0135] Although shown here as a single bus, the bus 512 of device 500 may consist of multiple buses. Furthermore, the secondary storage 514 can be directly coupled to other components of device 500 or accessed via a network, and may include a single integrated unit such as a memory card or multiple units such as multiple memory cards. Thus, device 500 can be implemented in a wide variety of configurations.

[0136] The background setting is related to the chroma's intra-prediction mode.

[0137] MIP (Matrix-Based Intra Prediction) and IBC (Intra Block Copy) are two prediction methods. MIP performs intra prediction based on predefined coefficients. In IBC, sample values ​​are predicted from other samples in the same picture using displacement vectors called block vectors, in a way that is conceptually similar to motion-compensated prediction.

[0138] Palette Mode is a coding tool for screen content coding (SCC) designed to improve coding efficiency for computer-generated screen content such as videos containing a significant amount of text and graphics. In Palette Mode, pixels within a coding unit (CU) are represented by a representative color selected according to the characteristics of screen content, where pixel values ​​are typically concentrated in a small range of color values.

[0139] In some cases, the MIP (or IBC or Bullet) mode is applied to the luma component. When deriving the intra-predictive mode of a chroma using the DM mode (deriving the mode from the corresponding luma component), if the corresponding luma block is subject to the MIP, IBC, or Bullet mode, a special mode is assigned with respect to the DM mode (lumaIntraPredMode).

[0140] There are many documents that refer to the derivation process of the intra-prediction mode of chroma. For example, ITUJVET-O0925 discloses the set chroma derive mode (DM) as a planar mode when matrix-based intra-prediction (MIP) is enabled, ITUJVET-O0258 discloses invalidated intra-block copy (IBC) with respect to the chroma component, and ITUJVET-O0651 discloses the set chroma DM mode as DC when IBC is enabled.

[0141] In the example, the process for deriving the chroma is as follows: The input to this process is, - Luma position (xCb, yCb) that specifies the top-left sample of the current chroma coding block, relative to the top-left luma sample of the current picture. - Variable cbWidth specifies the width of the current coding block using Luma samples. - Variable cbHeight specifies the height of the current coding block using LumaSample.

[0142] In this process, the chroma's intra-prediction mode IntraPredModeC[xCb][yCb] is derived.

[0143] The corresponding Luma intra-prediction mode, lumaIntraPredMode, is derived as follows: - If intra_mip_flag[ xCb ][ yCb ] is equal to 1, lumaIntraPredMode is set to be equal to INTRA_PLANAR. - Instead, if CuPredMode[xCb][yCb] is equal to MODE_IBC, lumaIntraPredMode is set to be equal to INTRA_DC. - Otherwise, lumaIntraPredMode is set to be equal to IntraPredModeY[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ].

[0144] In the process described above, an intra_mip_flag[ xCb ][ yCb ] equal to 1 specifies that the type of intra prediction for the Luma sample is matrix-based intra prediction, and an intra_mip_flag[ xCb ][ yCb ] equal to 0 specifies that the type of intra prediction for the Luma sample is not matrix-based intra prediction.

[0145] A CuPredMode[xCb][yCb] equal to MODE_IBC specifies that the current prediction block will be subject to IBC mode.

[0146] IntraPredModeY[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ] specifies the intra-prediction mode for Luma for the prediction block that includes the position (xCb + cbWidth / 2, yCb + cbHeight / 2), i.e., the "middle" of the corresponding Luma prediction block.

[0147] In the example, the chroma intrapred mode IntraPredModeC[xCb][yCb] is derived using intra_chroma_pred_mode[xCb][yCb] and lumaIntraPredMode as shown in Table 8-5 or Table 8-6, and there are many other examples or tables that may be used to derive the chroma intrapred mode IntraPredModeC[xCb][yCb]. In the process above, intra_chroma_pred_mode[x0][y0] specifies the intrapred mode (index) for the chroma sample. Note that this intrapred mode is not the final intrapred mode, and it is more appropriate to consider this value as an intermediate index as input to obtain the final intrapred mode for the chroma sample.

[0148] Table 8-5 - Specifications of intra_chroma_pred_mode[ xCb ][ yCb ] and IntraPredModeC[ xCb ][ yCb ] determined by lumaIntraPredMode when the value of sps_cclm_enabled_flag is equal to 0. [Table 1]

[0149] Table 8-6 - Specifications of intra_chroma_pred_mode[ xCb ][ yCb ] and IntraPredModeC[ xCb ][ yCb ] determined by lumaIntraPredMode when the value of sps_cclm_enabled_flag is equal to 1. [Table 2]

[0150] In Tables 8-5 and 8-6 above, a sps_cclm_enabled_flag equal to 0 specifies that intra-prediction of the Cross-Component Linear Model (CCLM) from luminal to chroma components is disabled. A sps_cclm_enabled_flag equal to 1 specifies that intra-prediction of the Cross-Component Linear Model from luminal to chroma components is enabled.

[0151] In the example disclosed in the process above, the luma intrapred mode (lumaIntraPredMode) is obtained, and then, for example, the chroma intrapred mode (intra_chroma_pred_mode) is obtained from the bitstream. The output prediction mode is derived according to Tables 8-5 and 8-6, based on the value of the luma intrapred mode (lumaIntraPredMode) and the syntax value of intra_chroma_pred_mode.

[0152] In some examples, according to Tables 8-5 and 8-6, the output mode may be one of 70 modes. The 70 modes may be classified into 67 normal modes and 3 component transverse linear model (CCLM) modes. The 67 normal modes may be further divided into non-angle modes (planar and DC modes) and 65 angle modes (modes 2 to 66), as shown in Figure 6. Modes 81, 82, and 83 correspond to the three CCLM (component transverse linear model) modes: linear mode left and top (INTRA_LT_CCLM), linear mode left (INTRA_L_CCLM), and linear mode top (INTRA_T_CCLM). These modes are summarized in Table 8-3.

[0153] [Table 3]

[0154] The discrepancy between the position of the MIP (or IBC) flag and the position of the ruma's intra-prediction mode can create potential problems in the derivation of the chroma's intra-prediction mode.

[0155] In other words, the intra_mip_flag (or CuPredMode) flag is fetched from the luma's position (xCb, yCb), while the luma's block intra predict mode is fetched from the position (xCb + cbWidth / 2, yCb + cbHeight / 2) as follows (defined as the VVC process for deriving the chroma's intra predict mode): - If the value of intra_mip_flag[ xCb ][ yCb ] is equal to 1, lumaIntraPredMode will be set to be equal to INTRA_PLANAR. - Instead, if CuPredMode[xCb][yCb] is equal to MODE_IBC, lumaIntraPredMode is set to be equal to INTRA_DC. - Otherwise, lumaIntraPredMode is set to be equal to IntraPredModeY[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ].

[0156] When CuPredMode[xCb][yCb] is equal to MODE_IBC, the intra-prediction mode is not defined in the VVC working draft.

[0157] In the example shown in Figure 7, the divisions of the ruma prediction block and chroma prediction block within the coding area (for example, the coding area is a CTU) are not aligned when the dual-tree coding method is enabled (one tree division for ruma and one tree division for chroma). For simplicity, it is assumed that the chroma component within the CTU is divided into two parts by a left lower division and a right lower division (left CTU in Figure 7). However, the ruma component within the CTU is also divided into two parts by an upper lower division and a lower lower division. The upper lower division of the ruma component is subjected to the normal intra-prediction mode, and the lower lower division is subjected to the IBC mode (right CTU in Figure 7).

[0158] In this example shown in Figure 7, the chroma component performs the derivation of the chroma's intra-prediction mode. According to the VVC process of the previously defined chroma's intra-prediction mode derivation, the value of intra_mip_flag[xCb][yCb] is equal to 0 because the normal intra-prediction mode is applied to the upper sub-section within the chroma component whose upper-left position is (xCb, yCb). For the same reason, if position (xCb, yCb) belongs to the upper sub-section of the chroma component, where the block is to which the normal intra-prediction is applied, CuPredMode[xCb][yCb] is also not equal to MODE_IBC. Therefore, the derivation of the Chroma's intra-prediction mode fetches the value of the normal Luma's intra-prediction mode (i.e., IntraPredModeY[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ]) for (xCb + cbWidth / 2 , yCb + cbHeight / 2 ). However, here, the position (xCb + cbWidth / 2 , yCb + cbHeight / 2) refers to a position within the lower sub-section of the Luma component (as shown in the lower CTU in Figure 7). The lower sub-section of the Luma component is to which IBC is applied, and the Luma's intra-prediction mode is undefined. Therefore, the value of IntraPredModeY[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ] is an undefined value in the current specification. In these rare and troublesome cases, the process for deriving Chroma's intra-predictive mode breaks down.

[0159] The example in Figure 7 illustrates a rare and troublesome case where two sub-compartments of the chroma component are applied to the normal intra-prediction mode and IBC mode, respectively. The chroma derivation process can also be presumed to be broken when IBC is replaced by MIP or palette mode.

[0160] The luma position (xCb, yCb) specifies the top-left sample of the current chroma coding block, relative to the top-left luma sample of the current picture.

[0161] The luma position value (xCb, yCb) is obtained with respect to the top-left position of the chroma component of the current coding block, the luma position value (xCb, yCb) is specified in the luma sample of the current coding block, the value of the first instruction information for the current coding block (e.g., intra_mip_flag) is obtained, the value of the first instruction information for the current coding block corresponding to the luma position (cbWidth / 2, cbHeight / 2) is derived with respect to the top-left luma sample of the current coding block, where cbWidth represents the width of the current coding block in luma samples and cbHeight represents the height of the current coding block in luma samples (in the example, the first instruction information is derived from the luma position (xCb+cbWidth / 2, yCb+cbHeight / 2)).

[0162] As shown in the example in Figure 8, the position value relative to the top-left position of the current picture is (0, 0), and the position value relative to the top-left position of the current coding block is (128, 64). The width of the current coding block is 64, and the height of the current coding block is 32. Therefore, the position value used to derive the intra-predictive mode is ((128 + 64 / 2), 64 + 32 / 2)), which is (160, 80).

[0163] In one embodiment of the present invention, the position of the IBC or MIP flag is aligned with the position of the Luma intra-prediction mode, and the following process is applied. - If the value of intra_mip_flag[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ] is equal to 1, lumaIntraPredMode is set to be equal to INTRA_PLANAR. - Instead, if CuPredMode[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ] is equal to MODE_IBC, then lumaIntraPredMode is set to be equal to INTRA_DC. - Otherwise, lumaIntraPredMode is set to be equal to IntraPredModeY[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ].

[0164] In such a case, taking Figure 7 as an example again, the derivation of the chroma intraprediction mode falls into the second branch (i.e., if CuPredMode[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ] is equal to MODE_IBC), and lumaIntraPredMode is set to be equal to DC mode.

[0165] The method first detects the IBC and MIP modes using aligned positions, thus ensuring that the variable lumaIntraPredMode is always assigned to a valid intra-prediction mode for luma.

[0166] In one embodiment, the position of the IBC or MIP flag is aligned with the position of the Luma intra-prediction mode, and both of their corresponding intra-prediction modes are set to planar mode, and the following process is applied. - If the value of intra_mip_flag[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ] is equal to 1 or if CuPredMode[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ] is equal to MODE_IBC, then lumaIntraPredMode is set to be equal to INTRA_PLANAR. - Otherwise, lumaIntraPredMode is set to be equal to IntraPredModeY[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ].

[0167] In one embodiment, the position of the IBC or MIP flag is aligned with the position of the Luma intra-prediction mode, and both of their corresponding intra-prediction modes are set to DC mode, and the following process is applied. - If the value of intra_mip_flag[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ] is equal to 1 or if CuPredMode[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ] is equal to MODE_IBC, then lumaIntraPredMode is set to be equal to INTRA_DC. - Otherwise, lumaIntraPredMode is set to be equal to IntraPredModeY[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ].

[0168] In one embodiment of the present invention, the position of the IBC or MIP flag is aligned with the position of the Luma intra-prediction mode, and the following process is applied. - If the value of intra_mip_flag[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ] is equal to 1, lumaIntraPredMode is set to be equal to INTRA_PLANAR. - Instead, if CuPredMode

[0000] [xCb + cbWidth / 2][yCb + cbHeight / 2] is equal to MODE_IBC, then lumaIntraPredMode is set to be equal to INTRA_DC. - Otherwise, lumaIntraPredMode is set to be equal to IntraPredModeY[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ].

[0169] In one embodiment of the present invention, the position of the IBC, MIP, or pallet flag is aligned with the position of the Luma intra-prediction mode, and the following process is applied. - If the value of intra_mip_flag[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ] is equal to 1, lumaIntraPredMode is set to be equal to INTRA_PLANAR. - Instead, if CuPredMode

[0000] [xCb + cbWidth / 2][yCb + cbHeight / 2] is equal to MODE_IBC or MODE_PLT, lumaIntraPredMode is set to be equal to INTRA_DC. - Otherwise, lumaIntraPredMode is set to be equal to IntraPredModeY[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ].

[0170] In one embodiment of the present invention, the position of the IBC, MIP, or pallet flag is aligned with the position of the Luma intra-prediction mode, and the following process is applied. - If the value of intra_mip_flag[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ] is equal to 1, or if CuPredMode

[0000] [ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ] is equal to MODE_IBC or MODE_PLT, lumaIntraPredMode will be set to be equal to INTRA_PLANAR. - Otherwise, lumaIntraPredMode is set to be equal to IntraPredModeY[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ].

[0171] In one embodiment of the present invention, the position of the IBC, MIP, or pallet flag is aligned with the position of the Luma intra-prediction mode, and the following process is applied. - If the value of intra_mip_flag[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ] is equal to 1, or if CuPredMode

[0000] [ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ] is equal to MODE_IBC or MODE_PLT, lumaIntraPredMode will be set to be equal to INTRA_DC. - Otherwise, lumaIntraPredMode is set to be equal to IntraPredModeY[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ].

[0172] In one embodiment of the present invention, the position of the IBC, MIP, or pallet flag is aligned with the position of the Luma intra-prediction mode, and the following process is applied. - If CuPredMode

[0000] [xCb + cbWidth / 2][yCb + cbHeight / 2] is equal to MODE_IBC or MODE_PLT, lumaIntraPredMode is set to be equal to INTRA_DC. - Instead, if the value of intra_mip_flag[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ] is equal to 1, lumaIntraPredMode is set to be equal to INTRA_PLANAR. - Otherwise, lumaIntraPredMode is set to be equal to IntraPredModeY[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ].

[0173] In the above embodiment, CuPredMode[ xCb + cbWidth / 2][ yCb + cbHeight / 2 ] or CuPredMode[ i ][ xCb + cbWidth / 2][ yCb + cbHeight / 2 ] is used. In fact, they are the same thing, namely, they specify the prediction mode for the position of the luma component (xCb + cbWidth / 2, yCb + cbHeight / 2). Note that CuPredMode[ i ][ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ] is used with another dimension specifying the luma or chroma component, where i = 0 or 1. CuPredMode

[0000] [ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ] represents the prediction mode of the chroma component because its dimension index is 0. When a chroma channel is used, the corresponding variable is CuPredMode

[0001] [ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ].

[0174] In the above embodiment, when CuPredMode

[0000] [xCb + cbWidth / 2][yCb + cbHeight / 2] is equal to MODE_PLT, it indicates that the luma component of luma position (cbWidth / 2, cbHeight / 2) uses palette mode. Luma position (cbWidth / 2, cbHeight / 2) specifies the position relative to the top-left luma sample of the current coding block. Top-left sample (xCb, yCb) of the current coding block specifies the position relative to the top-left sample of the current picture.

[0175] An example of Luma's position (xCb + cbWidth / 2, yCb + cbHeight / 2) is shown in Figure 7, where xCb = 128, yCb = 64, cbWidth = 64, and cbHeight = 32.

[0176] In particular, the following methods and embodiments are carried out by a decoding or encoding device. The decoding device may be the video decoder 30 in Figure 1A or the decoder 30 in Figure 3. The encoding device may be the video encoder 20 in Figure 1A or the encoder 20 in Figure 2.

[0177] According to Embodiment 900 (see Figure 9), in step 901, the device obtains first instruction information regarding the position of the luma in the current coding block (cbWidth / 2, cbHeight / 2) with respect to the luma sample position (xCb, yCb) in the upper left of the current coding block, where cbWidth represents the width of the luma component in the current coding block, and cbHeight represents the height of the luma component in the current coding block. Correspondingly, cbWidth / 2 represents half the width of the luma component in the current coding block, and cbHeight / 2 represents half the height of the luma component in the current coding block. The absolute position of the luma position (cbWidth / 2, cbHeight / 2) is (xCb + cbWidth / 2, yCb + cbHeight / 2), that is, the "center" of the prediction block of the corresponding luma.

[0178] For example, the first instruction information regarding the position of Luma (cbWidth / 2, cbHeight / 2) may be intra_mip_flag[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ].

[0179] In step 902, when the first instruction indicates that the matrix-based intra-predicted MIP is applied to the luma component at the luma position (cbWidth / 2, cbHeight / 2) relative to the luma sample position (xCb, yCb) of the current coding block, the device sets the value of the intra-predicted mode for the luma associated with the current coding block to a first default value. For example, the first default value is the value for the planar mode.

[0180] When intra_mip_flag[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ] is equal to 1, the first indicator indicates that MIP is applied to the luma component.

[0181] In step 903, when the first instruction information indicates that the MIP does not apply to the luma component at the luma position (cbWidth / 2, cbHeight / 2) relative to the luma sample position (xCb, yCb) in the upper left of the current coding block, the device obtains second instruction information regarding the luma position (cbWidth / 2, cbHeight / 2) of the current coding block, relative to the luma sample position (xCb, yCb) in the upper left of the current coding block.

[0182] When intra_mip_flag[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ] is equal to 0, the first indicator indicates that MIP is not applied to the luma component.

[0183] The second piece of information regarding Luma's position (cbWidth / 2, cbHeight / 2) may be CuPredMode

[0000] [ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ].

[0184] In step 905, when second instruction information indicates that the intrablock copy (IBC) mode or palette mode is applied to the luma component at the luma position (cbWidth / 2, cbHeight / 2) relative to the luma sample position (xCb, yCb) in the upper left of the current coding block, the device sets the value of the intraprediction mode for the luma associated with the current coding block to a second default value. For example, the second default value is the value of the DC mode.

[0185] When CuPredMode

[0000] [ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ] is equal to MODE_IBC, the second instruction indicates that the IBC mode is applied to the luma component. When CuPredMode

[0000] [ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ] is equal to MODE_PLT, the second instruction indicates that the palette mode is applied to the luma component.

[0186] When the second instruction indicates that the IBC mode or palette mode is not applied to the luma component at the luma position (cbWidth / 2, cbHeight / 2), the intra-prediction mode of the luma associated with the current coding block is set to be equal to the intra-prediction mode of the luma at position [xCb + cbWidth / 2][yCb + cbHeight / 2], i.e., IntraPredModeY[xCb + cbWidth / 2][yCb + cbHeight / 2].

[0187] In step 907, the device obtains the value of the chroma's intra-prediction mode based on the value of the luma's intra-prediction mode for the current coding block. If the value of the luma's intra-prediction mode for the current coding block is the first default value shown in step 902, the device obtains the value of the chroma's intra-prediction mode based on the first default value. If the value of the luma's intra-prediction mode for the current coding block is the second default value shown in step 905, the device obtains the value of the chroma's intra-prediction mode based on the second default value.

[0188] Detailed information for deriving the intra-prediction mode of chroma by using the intra-prediction mode from the corresponding luma component is shown in the embodiments described above.

[0189] Figure 10 shows an embodiment of device 1000. Device 1000 may be the video decoder 30 in Figure 1A or the decoder 30 in Figure 3, or the video encoder 20 in Figure 1A or the encoder 20 in Figure 2. Device 1000 can be used to carry out embodiment 900 and other embodiments described above.

[0190] Device 1000 for acquiring the intra-prediction mode of a chroma includes an acquisition unit 1001, a setting unit 1002, and a chroma intra-prediction mode unit 1003. The acquisition unit 1001 is configured to acquire first instruction information regarding the luma position (cbWidth / 2, cbHeight / 2) of the current coding block, relative to the luma sample position (xCb, yCb) of the current coding block, where cbWidth represents the width of the luma component in the current coding block and cbHeight represents the height of the luma component in the current coding block. The setting unit 1002 is configured to set the value of the intra-prediction mode of the luma associated with the current coding block to a first default value when the first instruction information indicates that matrix-based intra-prediction (MIP) is applied to the luma component of the luma position (cbWidth / 2, cbHeight / 2) relative to the luma sample position (xCb, yCb) of the current coding block.

[0191] An acquisition unit 1001 is further configured to acquire second instruction information regarding the luma position (cbWidth / 2, cbHeight / 2) of the current coding block when first instruction information indicates that the MIP does not apply to the luma component at the luma position (cbWidth / 2, cbHeight / 2) relative to the luma sample position (xCb, yCb) in the upper left of the current coding block.

[0192] A setting unit 1002 is further configured to set the value of the intra-prediction mode for the luma associated with the current coding block to a second default value when the second instruction information indicates that the intra-block copy (IBC) mode or palette mode is applied to the luma component at the luma position (cbWidth / 2, cbHeight / 2) relative to the luma sample position (xCb, yCb) in the upper left of the current coding block.

[0193] A chroma intra-prediction mode unit 1003 is configured to obtain a chroma intra-prediction mode value based on the chroma intra-prediction mode value of the current coding block.

[0194] This disclosure provides the following sets of embodiments or aspects: According to a first aspect, the present invention relates to a coding method performed by a decoding device, A step of obtaining a value of first instruction information for the current coding block, wherein the value of the first instruction information for the current coding block is derived from the luma component corresponding to the luma position (cbWidth / 2, cbHeight / 2) with respect to the luma sample (xCb, yCb) at the top left of the current coding block, where cbWidth represents the width of the current coding block in luma samples, and cbHeight represents the height of the current coding block in luma samples. When the value of the first indicator indicates that matrix-based intra-prediction (MIP) is applied to the luma component at the luma position (cbWidth / 2, cbHeight / 2) relative to the luma sample (xCb, yCb) of the current coding block, the step of setting the value of the intra-prediction mode for the luma associated with the current coding block to the first default value, The present invention relates to a method that includes the step of obtaining the value of the chroma's intra predictive mode based on the value of the luma's intra predictive mode for the current coding block.

[0195] According to a second aspect, the present invention relates to a coding method performed by a decoding device, A step of obtaining a value of first instruction information for the current coding block, wherein the value of the first instruction information for the current coding block is derived from the luma component corresponding to the luma position (cbWidth / 2, cbHeight / 2) with respect to the luma sample (xCb, yCb) at the top left of the current coding block, where cbWidth represents the width of the current coding block in luma samples, and cbHeight represents the height of the current coding block in luma samples. When the value of the first indicator information indicates that the intrablock copy (IBC) mode or palette mode is applied to the luma component at the luma position (cbWidth / 2, cbHeight / 2) relative to the luma sample (xCb, yCb) in the upper left of the current coding block, the step of setting the value of the intra-prediction mode for the luma associated with the current coding block to the first default value, The present invention relates to a method that includes the step of obtaining the value of the chroma's intra predictive mode based on the value of the luma's intra predictive mode for the current coding block.

[0196] As discussed above, in the typical case involving MIP, IBC, or palette (as in the example shown in Figure 7), when the luminous component partitions differ from the chroma component partitions (for example, when a dual-tree coding method is enabled), there is a discrepancy between the position of the mode MIP (or IBC, or palette) and the position of the luminous intra-prediction mode. In aspects and implementations of the present invention, obtaining first instruction information from a fixed position (cbWidth / 2, cbHeight / 2) of the corresponding luminous component ensures that the position of the mode MIP and the position of the luminous intra-prediction mode are aligned when the luminous component partitions differ from the chroma component partitions in a given block size (for example, when a dual-tree coding method is enabled). If the first instruction information does not indicate that MIP is applied to the luma component at the luma position (cbWidth / 2, cbHeight / 2), obtaining the second instruction information from a fixed position (cbWidth / 2, cbHeight / 2) of the corresponding luma component ensures that the position of the mode IBC and the position of the luma's intra-prediction mode are aligned when the luma component partitions differ from the chroma component partitions in a given block size (for example, when the dual-tree coding method is enabled). Alternatively, obtaining the second instruction information from a fixed position (cbWidth / 2, cbHeight / 2) of the corresponding luma component ensures that the position of the mode palette and the position of the luma's intra-prediction mode are aligned when the luma component partitions differ from the chroma component partitions in a given block size (for example, when the dual-tree coding method is enabled).

[0197] The following describes applications of the encoding and decoding methods shown in the embodiments described above, as well as systems that use them.

[0198] Figure 11 is a block diagram showing a content supply system 3100 for realizing a content distribution service. This content supply system 3100 includes a capture device 3102, a terminal device 3106, and optionally a display 3126. The capture device 3102 communicates with the terminal device 3106 via a communication link 3104. The communication link may include the communication channel 13 described above. The communication link 3104 includes, but is not limited to, Wi-Fi, Ethernet, cable, wireless (3G / 4G / 5G), USB, or any combination thereof.

[0199] The capture device 3102 may generate data and encode the data using the encoding method shown in the above embodiment. Alternatively, the capture device 3102 may deliver the data to a streaming server (not shown), which encodes the data and transmits the encoded data to the terminal device 3106. The capture device 3102 includes, but is not limited to, a camera, a smartphone or smartpad, a computer or laptop, a video conferencing system, a PDA, an in-vehicle device, or any combination thereof. For example, the capture device 3102 may include the source device 12 described above. When the data includes video, the video encoder 20 included in the capture device 3102 may actually perform the video encoding process. When the data includes audio (i.e., voice), the audio encoder included in the capture device 3102 may actually perform the audio encoding process. In some practical scenarios, the capture device 3102 delivers the encoded video and audio data by multiplexing them together. In other practical scenarios, for example in a video conferencing system, the encoded audio data and encoded video data are not multiplexed. The capture device 3102 distributes the encoded audio data and encoded video data separately to the terminal device 3106.

[0200] In the content supply system 3100, the terminal device 310 receives and plays back encoded data. The terminal device 3106 can be any device capable of receiving and recovering data, such as a smartphone or smartpad 3108, a computer or laptop 3110, a network video recorder (NVR) / digital video recorder (DVR) 3112, a TV 3114, a set-top box (STB) 3116, a video conferencing system 3118, a video surveillance system 3120, a personal digital assistant (PDA) 3122, an in-vehicle device 3124, or any combination thereof, that can decode the encoded data described above. For example, the terminal device 3106 may include the destination device 14 described above. When the encoded data includes video, the video decoder 30 included in the terminal device is preferred for performing video decoding. When the encoded data includes audio, the audio decoder included in the terminal device is preferred for performing audio decoding.

[0201] For terminal devices with a display, such as a smartphone or smartpad 3108, a computer or laptop 3110, a network video recorder (NVR) / digital video recorder (DVR) 3112, a TV 3114, a personal digital assistant (PDA), or an in-vehicle device 3124, the terminal device can supply the decoded data to its display. For terminal devices without a display, such as an STB 3116, a video conferencing system 3118, or a video surveillance system 3120, the decoded data is received and displayed on an external display 3126.

[0202] When each device in this system performs encoding or decoding, the picture encoding device or picture decoding device shown in the above embodiment may be used.

[0203] Figure 12 shows the structure of an example terminal device 3106. After the terminal device 3106 receives a stream from the capture device 3102, the protocol progression unit 3202 analyzes the transmission protocol of the stream. The protocol includes, but is not limited to, Real-Time Streaming Protocol (RTSP), Hypertext Transfer Protocol (HTTP), HTTP Live Streaming Protocol (HLS), MPEG-DASH, Real-Time Transport Protocol (RTP), Real-Time Messaging Protocol (RTMP), or any combination of these.

[0204] After the protocol processing unit 3202 processes the stream, a stream file is generated. The file is output to the multiplexing / decompression unit 3204. The multiplexing / decompression unit 3204 can separate the multiplexed data into encoded audio data and encoded video data. As described above, in some practical scenarios, for example in a video conferencing system, the encoded audio data and encoded video data are not multiplexed. In this situation, the encoded data is sent to the video decoder 3206 and audio decoder 3208 without passing through the multiplexing / decompression unit 3204.

[0205] Multiplexing processes generate a video elementary stream (ES), an audio ES, and optionally subtitles. A video decoder 3206, including the video decoder 30 described in the above embodiment, decodes the video ES using the decoding method shown in the above embodiment to generate video frames and supplies this data to the synchronization unit 3212. An audio decoder 3208 decodes the audio ES to generate audio frames and supplies this data to the synchronization unit 3212. Alternatively, video frames may be stored in a buffer (not shown in Figure Y) before supplying them to the synchronization unit 3212. Similarly, audio frames may be stored in a buffer (not shown in Figure Y) before supplying them to the synchronization unit 3212.

[0206] The synchronization unit 3212 synchronizes video frames and audio frames and supplies video / audio to the video / audio display 3214. For example, the synchronization unit 3212 synchronizes the presentation of video and audio information. The information may be coded in a syntax that uses timestamps for the presentation of coded audio and visual data, as well as timestamps for the delivery of the data stream itself.

[0207] If subtitles are included in the stream, the subtitle decoder 3210 decodes the subtitles, synchronizes them with the video and audio frames, and supplies the video / audio / subtitles to the video / audio / subtitle display 3216.

[0208] The present invention is not limited to the systems described above, and either the picture encoding device or picture decoding device of the embodiments described above can be incorporated into other systems, such as automotive systems.

[0209] Mathematical operators The mathematical operators used in this application are similar to those used in the C programming language. However, the results of integer division and arithmetic shift operations are more strictly defined, and additional operations such as exponentiation and real-valued division are defined. The numbering and counting rules generally start from 0, for example, "1st" is equivalent to 0, "2nd" is equivalent to 1, and so on.

[0210] Arithmetic operators The following arithmetic operators are defined as follows: + Addition - Subtraction (as a two-argument operator) or negation (as a unary prefix operator) * Multiplication including matrix multiplication x y Exponentiation. Defines x to the power of y. In other contexts, such notation is used for superscript writing that is not intended to be interpreted as an exponentiation. The / operator performs integer division, truncating the result to zero. For example, 7 / 4 and -7 / -4 are truncated to 1, while -7 / 4 and 7 / -4 are truncated to -1. The division operator (÷) is used to represent division in mathematical equations where truncation or rounding is not intended.

number

number

[0211] Logical operators The following logical operators are defined as follows: x && y: Boolean "product" of x and y x || y Boolean "union" of x and y ! Boolean logic "negation" x ? y : If x is true or not equal to 0, it evaluates to the value y; otherwise, it evaluates to the value z.

[0212] Relational operators The following relational operators are defined as follows: > larger >= Above < Less than <= Below == equal != Not equal When a relational operator is applied to a syntax element or variable assigned the value "na" (not applicable), the value "na" is treated as a different value for the syntax element or variable. The value "na" is considered not to be equal to any other value.

[0213] Bitwise operators The following bitwise operators are defined as follows: The AND operator performs a bitwise "logical AND". When used with integer arguments, it operates on the two's complement representation of the integer value. When used with binary arguments containing fewer bits than the other argument, the shorter argument is extended by adding higher-order bits equal to zero. | Bitwise "logical OR". When performed on integer arguments, it operates on the two's complement representation of the integer value. When performed on binary arguments containing fewer bits than another argument, the shorter argument is extended by adding higher-order bits equal to 0. ^ Bitwise "exclusive OR". When performed on integer arguments, it operates on the two's complement representation of the integer value. When performed on binary arguments containing fewer bits than another argument, the shorter argument is extended by adding higher-order bits equal to 0. x >> y Arithmetic right shift of the two's complement representation of an integer x by y bits in binary. This function is defined only for non - negative integer values of y. The bit shifted into the most significant bit (MSB) as a result of the right shift has the same value as the MSB of x before the shift operation. x << y Arithmetic left shift of the two's complement representation of an integer x by y bits in binary. This function is defined only for non - negative integer values of y. The bit shifted into the least significant bit (LSB) as a result of the left shift has a value equal to 0.

[0214] Assignment operator The following arithmetic operators are defined as follows. = Assignment operator ++ Increment, i.e., x++ is equivalent to x = x + 1 and when used as an array index, the value of the variable is evaluated before the increment operation. -- Decrement, i.e., x-- is equivalent to x = x - 1 and when used as an array index, the value of the variable is evaluated before the decrement operation. += Increment by a specified amount, i.e., x += 3 is equivalent to x = x + 3 and x += (-3) is equivalent to x = x + (-3). -= Decrement by a specified amount, i.e., x -= 3 is equivalent to x = x - 3 and x -= (-3) is equivalent to x = x - (-3).

[0215] Range notation The following notations are used to specify a range of values. x = y..z x takes integer values from y to z, including y and z, assuming x, y, and z are integer values and z is greater than y.

[0216] Mathematical functions The following mathematical functions are defined.

Number

number

number

number

number

number

number

[0217] The precedence of operations When the precedence in the formula is not explicitly indicated using parentheses, the following rules apply. - Operations with higher precedence are evaluated before any operations with lower precedence. - Operations with the same precedence are evaluated in order from left to right.

[0218] The following table shows the precedence of operations from the highest to the lowest, and the higher the position in the table, the higher the precedence.

[0219] Regarding the operators also used in the C programming language, the precedence used in this specification is the same as that used in the C programming language.

[0220] [Table 4]

[0221] Text description of logical operations In the text, in the following form, that is,[[]] if (condition 0) Statement 0 else if (condition 1) Statement 1 ... else / * Comment to convey information about the remaining conditions * / Statement n A logical operation statement mathematically described in the form of may be described as follows. The following applies: - If condition 0, statement 0 - Instead, if condition 1 is true, then statement 1 - ... - Otherwise (comments providing information about the remaining conditions), statement n

[0222] Each "If..., ..., otherwise..., ..., ..." statement in the text is introduced by "If..., ..." immediately followed by "The following applies..." or "The following applies...". The final condition of "If..., ..., otherwise..., ..., ..., ..., ..." is always "The following applies...". Alternating "If..., ..., otherwise..., ..., ..., ..., ..." statements can be identified by matching "The following applies..." or "The following applies..." with the final "The following applies...".

[0223] In the text, in the following form, namely, if( condition 0a && condition 0b ) Statement 0 else if( condition 1a || condition 1b ) Statement 1 ... else statement n A statement of a logical operation, mathematically described in the form of , may also be written as follows: The following applies: - If all of the following conditions are true, then statement 0 - Condition 0a - Condition 0b - Otherwise, if one or more of the following conditions are true, then statement 1 - Condition 1a - Condition 1b - ... - Otherwise, statement n In the text, in the following form, namely, if (condition 0) Statement 0 if (Condition 1) Statement 1 A statement of a logical operation, mathematically described in the form of , may also be written as follows: When condition 0, statement 0 When condition 1 is met, statement 1

[0224] Although embodiments of the present invention have been described primarily in relation to video coding, it should be noted that embodiments of the coding system 10, encoder 20, and decoder 30 (and correspondingly system 10), as well as other embodiments described herein, may also be configured for processing or coding still pictures, i.e., for processing or coding individual pictures independently of any preceding or consecutive pictures, similar to video coding. Generally, when the processing and coding of a picture is limited to a single picture 17, only the interpretation units 244 (encoder) and 344 (decoder) may not be available. All other functions (also called tools or technologies) of the video encoder 20 and video decoder 30, such as residual calculation 204 / 304, transformation 206, quantization 208, inverse quantization 210 / 310, (inverse) transformation 212 / 312, partitioning 262 / 362, intra prediction 254 / 354, and / or loop filters 220, 320, and entropy coding 270, and entropy decoding 304, may be used equally for processing still pictures.

[0225] For example, the encoder 20 and decoder 30, and embodiments of the functions described herein in connection with, for example, the encoder 20 and decoder 30 may be implemented in hardware, software, firmware, or any combination thereof. When implemented in software, the functions may be stored on a computer-readable medium as one or more instructions or code or transmitted on a communication medium and executed by a hardware-based processing unit. The computer-readable medium may include a computer-readable storage medium corresponding to a tangible medium such as a data storage medium, or a communication medium including any medium that facilitates transfer of a computer program from one place to another, for example, by a communication protocol. Thus, generally, the computer-readable medium may correspond to (1) a tangible computer-readable storage medium that is non-transitory or (2) a communication medium such as a signal or carrier wave. The data storage medium may be any available medium that can be accessed by one or more computers or one or more processors to retrieve instructions, code, and / or data structures for implementation of the techniques described in this disclosure. A computer program product may include a computer-readable medium.

[0226] As an example, and not an limitation, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, flash memory, or any other media that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is appropriately called computer-readable media. For example, if instructions are transmitted from a website, server or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio waves, and microwaves, then coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio waves, and microwaves are included in the definition of media. However, it should be understood that computer-readable storage media and data storage media do not include connections, carriers, signals, or other temporary media, but instead refer to non-temporary, tangible storage media. As used herein, "disk" and "disc" include compact discs (CDs), laser discs, optical discs, digital versatile discs (DVDs), floppy disks, and Blu-ray discs, where a "disk" typically reproduces data magnetically, while a "disc" reproduces data optically using a laser. Combinations of the above should also be included in the scope of computer-readable media.

[0227] Instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), field-programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Thus, when used herein, the term “processor” may refer to either the above-described structures or any other structure suitable for implementing the techniques described herein. In addition, in some embodiments, the functions described herein may be provided within dedicated hardware and / or software modules configured for encoding and decoding, or incorporated into a combined codec. Furthermore, the techniques may all be implemented in one or more circuits or logic elements.

[0228] The technology of this disclosure may be implemented in a wide variety of devices or apparatus, including wireless handsets, integrated circuits (ICs), or a set of ICs (e.g., a chipset). Various components, modules, or units are described in this disclosure to highlight the aspects of functionality of a device configured to perform the disclosed technology, but implementation by different hardware units is not necessarily required. Rather, as described above, various units may be combined in a codec hardware unit or provided by a set of interoperable hardware units, including one or more of the processors described above, in conjunction with suitable software and / or firmware. [Explanation of symbols]

[0229] 10 Video coding system, coding system 12. Source device 13 Encoded picture data, communication channel 14 Destination device 16 Picture Sources 17. Picture, picture data, raw picture, raw picture data, monochrome picture, color picture, current picture 18 Preprocessors, pre-processing units, picture preprocessors 19 Pre-processed pictures, pre-processed picture data 20 video encoders, encoders 21 Encoded picture data, encoded bitstream 22 Communication interface, communication unit 28 Communication interface, communication unit 30 decoders, video decoders 31 Decrypted picture data, decrypted picture 32 Post-processors, Post-processing Units 33 Post-processed picture data, post-processed picture 34 Display Devices 46 Processing Circuit 100 video encoders 201 Input, Input Interface 203 Picture Block, Original Block, Current Block, Divided Block, Current Picture Block 204 Residual Calculation Unit, Residual Calculation 205 Residual block, residual 206 Conversion processing unit, conversion 207 Conversion coefficient 208 Quantization Unit, Quantization 209 Quantized coefficients, quantized transformation coefficients, quantized residual coefficients 210 Inverse Quantization Unit, Inverse Quantization 211 Dequantized coefficients, dequantized residual coefficients 212 Inverse transformation processing unit, (inverse) transformation 213 Reconstructed residual blocks, dequantized coefficients, transform blocks 214 Reconstruction Unit, Adder, Combiner 215 Reconstructed Blocks 216 buffers 220 Loop Filter Unit, Loop Filter 221 Filtered blocks, filtered and reconstructed blocks 230 Decoded Picture Buffer (DPB) 231 Decrypted picture 244 Interpretation Units 254 Intra Prediction Unit, Inter Prediction Unit, Intra Prediction 260 Mode Selection Unit 262 division units, division 265 prediction blocks, predictors 266 Syntax Elements 270 Entropy coding units, entropy coding 272 outputs, output interface 304 Entropy decoding unit, residual calculation, entropy decoding 309 Quantized coefficients 310 Inverse Quantization Unit, Inverse Quantization 311 Dequantized coefficients, transformation coefficients 312 Inverse conversion processing unit, (inverse) conversion, output 313 Reconstructed residual block 314 Reconstruction Unit, Combiner, Adder 315 Reconstructed Blocks 320 Loop Filters, Loop Filter Units, Loop Filtering Units 321 Filtered blocks, decoded video blocks 330 Decoded Picture Buffer (DPB), Decoded Picture Buffer (DBP) 331 Decrypted picture 344 Interpretation Units 354 Intra Prediction Unit, Intra Prediction 360 Mode Applicable Unit 362 divisions 365 Prediction Block 400 video coding devices 410 Incoming port, input port 420 Receiver Unit (Rx) 430 Processors, Logical Units, Central Processing Units (CPUs) 440 Transmitter Unit (Tx) 450 outgoing ports, output ports 460 memory 470 Coding Modules 500 devices 502 Processors 504 memory 506 data 508 Operating Systems 510 Application Programs 512 Bus 514 Secondary Storage 518 displays 900 Embodiments 1000 devices 1001 units acquired 1002 Setting Unit 1003 Chroma's Intra Predictive Mode Unit 3100 Content Supply System 3102 Capture Device 3104 Communication Link 3106 Terminal device 3108 Smartphones, Smartpads 3110 Computers, Laptops 3112 Network Video Recorder (NVR) / Digital Video Recorder (DVR) 3114 TV 3116 Set-top box (STB) 3118 Video conferencing system 3120 Video Surveillance System 3122 Personal Digital Assistant (PDA) 3124 In-vehicle devices 3126 Display 3202 Protocol Progress Unit 3204 Multiple Separation Unit 3206 Video Decoder 3208 Audio Decoder 3210 Subtitle Decoder 3212 Synchronization Unit 3214 Video / Audio Display 3216 Video / Audio / Subtitle Display

Claims

1. A coding method performed by an encoding device, A step of obtaining first instruction information regarding the position of the current coding block luma (xCb + cbWidth / 2, yCb + cbHeight / 2), wherein cbWidth represents the width of the current coding block of the luma sample, and cbHeight represents the height of the current coding block of the luma sample. When the first instruction information indicates that matrix-based intra prediction (MIP) is applied to the luma sample at the luma's position (xCb+cbWidth / 2, yCb+cbHeight / 2), the steps include setting the value of the intra prediction mode for the luma associated with the current coding block to a first default value, When the first instruction information indicates that the MIP is not applied to the luma sample at the luma position (xCb+cbWidth / 2, yCb+cbHeight / 2), the step is to obtain second instruction information regarding the luma position (xCb+cbWidth / 2, yCb+cbHeight / 2) of the current coding block, When the second instruction information indicates that the palette mode is applied to the luma sample at the luma position (xCb+cbWidth / 2, yCb+cbHeight / 2), the steps include setting the value of the intra prediction mode of the luma associated with the current coding block to the second default value, A step of obtaining the value of the chroma's intra-prediction mode based on the value of the luma's intra-prediction mode for the current coding block, A method comprising the step of encoding the first instruction information and the second instruction information into a bitstream.

2. The method according to claim 1, wherein the first default value is equal to the value in planar mode.

3. The method according to claim 1, wherein the second default value is equal to the value in DC mode.

4. The method according to any one of claims 1 to 3, wherein the position (xCb + cbWidth / 2, yCb + cbHeight / 2) specifies a position relative to the top-left sample of the current picture, and the position of the luma (cbWidth / 2, cbHeight / 2) specifies a position relative to the top-left luma sample position (xCb, yCb) of the current coding block.

5. The palette mode is applied to the luma sample at the luma position (xCb+cbWidth / 2, yCb+cbHeight / 2). The method according to any one of claims 1 to 4, wherein CuPredMode[0][xCb + cbWidth / 2][yCb + cbHeight / 2] is equal to MODE_PLT.

6. The first instruction information indicates that the MIP is applied to the luma sample at the luma position (xCb+cbWidth / 2, yCb+cbHeight / 2), The method according to any one of claims 1 to 5, wherein the value of intra_mip_flag[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ] is equal to 1.

7. A device for acquiring the intra-predictive mode of chroma, One or more processors, A non-temporary computer-readable storage medium coupled to the processor and storing a program to be executed by the processor, wherein the program is executed by the processor. Obtaining first instruction information regarding the position of the current coding block luma (xCb + cbWidth / 2, yCb + cbHeight / 2), wherein cbWidth represents the width of the current coding block of the luma sample, and cbHeight represents the height of the current coding block of the luma sample. When the first instruction information indicates that matrix-based intra-prediction (MIP) is applied to the luma sample at the luma's position (xCb+cbWidth / 2, yCb+cbHeight / 2), the value of the intra-prediction mode for the luma associated with the current coding block is set to the first default value. When the first instruction information indicates that the MIP is not applied to the luma sample at the luma position (xCb+cbWidth / 2, yCb+cbHeight / 2), obtain second instruction information regarding the luma position (xCb+cbWidth / 2, yCb+cbHeight / 2) of the current coding block. When the second instruction information indicates that the intrablock copy (IBC) mode or palette mode is applied to the luma sample at the luma's position (xCb+cbWidth / 2, yCb+cbHeight / 2), set the value of the intra-prediction mode for the luma associated with the current coding block to the second default value. Obtaining the value of the chroma's intra-prediction mode based on the value of the luma's intra-prediction mode for the current coding block, and Encoding the first instruction information and the second instruction information into a bitstream. A device comprising a non-temporary computer-readable storage medium configured to perform the following:

8. The first instruction information is intra_mip_flag[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ], The device according to claim 7, wherein when intra_mip_flag[ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ] is equal to 1, the first instruction information indicates that the MIP is applied to the luma sample.

9. The second instruction information is CuPredMode[ 0 ][ xCb + cbWidth / 2 ][ yCb + cbHeight / 2 ], The device according to claim 7 or 8, wherein when CuPredMode[0][xCb + cbWidth / 2][yCb + cbHeight / 2] is equal to MODE_PLT, the second instruction information indicates that the palette mode is applied to the luma sample.

10. The device according to any one of claims 7 to 9, wherein the first default value is a value in planar mode.

11. The device according to any one of claims 7 to 10, wherein the second default value is a value in DC mode.

12. The device according to any one of claims 7 to 11, wherein the luminous component section and the chroma component section of the current coding block are not aligned.

13. An encoder (20) including a processing circuit for generating a bitstream according to any one of claims 1 to 6.

14. A computer program for causing one or more processors to perform the procedure described in any one of claims 1 to 6.

15. A device for transmitting a video-encoded bitstream, wherein the device: A storage medium configured to store a video-encoded bitstream, wherein the bitstream includes first reference information relating to the position of the luma of the current coding block (xCb + cbWidth / 2, yCb + cbHeight / 2), where cbWidth represents the width of the current coding block of the luma sample, and cbHeight represents the height of the current coding block of the luma sample. The bitstream further includes a second instruction regarding the position of the luma (xCb+cbWidth / 2, yCb+cbHeight / 2) of the current coding block when the first instruction indicates that matrix-based intra prediction (MIP) is not applied to the luma sample at the luma position (xCb+cbWidth / 2, yCb+cbHeight / 2), and the value of the intra prediction mode for the luma associated with the current coding block is the default value when the second instruction indicates that the palette mode is applied to the luma sample at the luma position (xCb+cbWidth / 2, yCb+cbHeight / 2), and the bitstream includes at least one storage medium, A device including a transmitter configured to transmit the bitstream to another device.

16. A method for transmitting a video-encoded bitstream, the method being: A step of obtaining a video-encoded bitstream from at least one storage medium, wherein the bitstream includes first reference information relating to the position of the luma of the current coding block (xCb + cbWidth / 2, yCb + cbHeight / 2), where cbWidth represents the width of the luma sample of the current coding block, and cbHeight represents the height of the luma sample of the current coding block. Steps include: when the first instruction indicates that matrix-based intra-prediction (MIP) is not applied to the luma sample at the luma position (xCb+cbWidth / 2, yCb+cbHeight / 2), the bitstream further includes second instruction information regarding the luma position (xCb+cbWidth / 2, yCb+cbHeight / 2) of the current coding block, and when the second instruction indicates that palette mode is applied to the luma sample at the luma position (xCb+cbWidth / 2, yCb+cbHeight / 2), the value of the intra-prediction mode for the luma associated with the current coding block is the default value; The steps include: transmitting the bitstream to another device; Methods that include...