Efficient signaling methods for CBF flags

The method improves video coding efficiency by using a unified mechanism for CBF flag signaling, addressing the challenge of efficient compression in bandwidth-limited networks while maintaining image quality.

JP2026053575APending Publication Date: 2026-03-25HUAWEI TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Filing Date
2025-12-24
Publication Date
2026-03-25

AI Technical Summary

Technical Problem

Existing video coding technologies face challenges in achieving efficient compression ratios with minimal loss of image quality, particularly in transmitting or storing video data over networks with limited bandwidth.

Method used

A method for encoding and decoding video streams that utilizes a unified mechanism for CBF flag signaling, allowing the derivation of chroma CBF flags based on coding unit CBF flags and the position of sub-conversion units within conversion units, reducing bitstream redundancy and improving coding efficiency.

Benefits of technology

This approach enhances coding efficiency by minimizing redundancy and maintaining image quality, making it suitable for high-quality video transmission and storage in bandwidth-constrained environments.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2026053575000001_ABST
    Figure 2026053575000001_ABST
Patent Text Reader

Abstract

The present invention provides a coding method performed by a decoding device or an encoding device. [Solution] The method includes the step of acquiring a bitstream. The bitstream includes a transform unit syntax, the syntax includes at least two CBF flags for a chroma block, the chroma CBF flags specifying whether a particular block has residuals in the corresponding color plane. The method also includes the step of deriving the value of the luma CBF flag tu_cbf_luma based on the value of the cu_cbf flag, the values ​​of two chroma CBF flags corresponding to the current transform unit or sub-transform unit, the position of the sub-transform unit within the transform unit, and any combination of the values ​​of the luma CBF flag and chroma CBF flag corresponding to the previous sub-transform unit within the current transform unit.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] [Cross - Reference to Related Applications] This patent application claims the priority of U.S. Provisional Patent Application No. US62 / 812,282 filed on March 1, 2019, U.S. Provisional Patent Application No. US62 / 817,498 filed on March 12, 2019, U.S. Provisional Patent Application No. US62 / 825,005 filed on March 27, 2019, and International Patent Application PCT / EP2019 / 064224 filed on May 31, 2019.

[0002] [[ID=I0]] Embodiments of this application (disclosure) generally relate to the field of image processing, and more specifically to conversion flag signaling. A CBF flag is disclosed that is presented by syntax elements of a conversion tree or a conversion unit and can be signaled according to its own syntax elements and other available syntax elements.

Background Art

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

[0004] Even rendering relatively short videos can require a considerable amount of video data, which can be problematic when the data is streamed or otherwise transmitted over communication networks with limited bandwidth. Therefore, video data is generally compressed before being transmitted over modern telecommunication networks. Video size can also be a problem when the video is stored on a storage device, as memory resources may be limited. Video compression devices often 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 ever-increasing demand for high video quality, improved compression and decompression techniques that improve the compression ratio with little to no sacrifice of image quality are desired. [Overview of the Initiative]

[0005] Embodiments of this disclosure provide apparatus and methods for encoding and decoding according to independent claims.

[0006] The aforementioned and other objectives are achieved by the subject matter of the independent claim. Further implementation forms become apparent from the dependent claims, specification and figures.

[0007] A method according to a first aspect of the present invention can be carried out by an apparatus according to a third aspect of the present invention. Further features and embodiments of the method according to a third aspect of the present invention correspond to features and embodiments of the apparatus according to a first aspect of the present invention.

[0008] A method according to a fourth aspect of the present invention can be carried out by an apparatus according to a second aspect of the present invention. Further features and embodiments of the method according to a fourth aspect of the present invention correspond to features and embodiments of the apparatus according to a second aspect of the present invention.

[0009] According to a fifth aspect, the present invention relates to an apparatus for decoding a video stream, comprising a processor and memory. The memory stores instructions causing the processor to perform the method according to the first aspect.

[0010] According to a sixth aspect, the present invention relates to an apparatus for encoding a video stream, comprising a processor and memory. The memory stores instructions causing the processor to perform the method according to the second aspect.

[0011] According to the seventh aspect, a computer-readable storage medium is proposed which stores instructions thereon that cause one or more processors configured to encode video data when executed. The instructions cause one or more processors to perform a method according to the first or second aspect, or any possible embodiment of the first or second aspect.

[0012] According to the eighth aspect, the present invention relates to a computer program that, when executed on a computer, includes program code for performing a method according to the first or second aspect, or any possible embodiment of the first or second aspect.

[0013] More specifically, this disclosure provides a video coding method performed by a decoding or encoding device, which is: The process includes a step to acquire a bitstream, The bitstream comprises a conversion unit syntax, The process includes obtaining the values ​​of at least two chromaCBF flags (chroma-coded block flags) for a chroma block corresponding to the current conversion unit or the current sub-conversion unit within the current conversion unit, in accordance with the conversion unit syntax, wherein at least one of the two chromaCBF flags specifies whether the corresponding block has residuals in the corresponding color plane. At a minimum, the step of deriving the value of the chroma CBF flag based on the value of the coding unit CBF flag, the value of the cu_cbf flag, and the values ​​of at least the two chroma CBF flags. A method that includes [a certain feature].

[0014] Accordingly, embodiments of this disclosure propose a unified mechanism for CBF flag signaling that improves coding efficiency.

[0015] Furthermore, the relationship between the CBF flag and the sub-conversion unit partitioning tool allows for the removal of bitstream redundancy.

[0016] In the method described above, the value of the Luma CBF flag may be further derived based on the position of the current sub-conversion unit within the current conversion unit.

[0017] In the method described above, the conversion unit syntax may include at least two chroma CBF flags, and the step of obtaining the values ​​of at least two chroma CBF flags according to the conversion unit syntax may include the step of obtaining the values ​​of at least two chroma CBF flags from the conversion unit syntax.

[0018] In the method defined above, the Luma CBF flag may be the tu_cbf_luma flag.

[0019] In the method defined above, in the conversion unit syntax, the syntactic elements of the conversion unit are: The entire block may be signaled, or Multiple sub-transform units obtained in an inter-block sub-block transformation (SBT) may be signaled, or Signaling may be performed to satisfy the limit on the maximum conversion unit size.

[0020] In the method defined above, the current transform unit or the current sub-transform unit may include two chroma CBF flags, with one flag for each chroma plane respectively.

[0021] In the method defined above, the value of the luma CBF flag may be derived based on the value of the cu_cbf flag and the values of the two chroma CBF flags corresponding to the current transform unit.

[0022] In the method defined above, when the current transform unit is not divided into sub-transform units, the cu_cbf flag may be signaled in the bitstream, the value of the cu_cbf flag may be equal to 1, the value of the tu_cbf_cb flag may be 0, the value of the tu_cbf_cr flag may be 0, and then the value of the tu_cbf_luma flag of the current transform unit may be derived to be 1.

[0023] In the method defined above, the transform unit syntax table corresponding to the transform unit syntax may be signaled according to the following table.

Table 1

[0024] In the method described above, the transform unit syntax table corresponding to the transform unit syntax may be signaled according to the following table.

Table 2

[0025] In the method described above, when the current transform unit is divided by sub-block transform (SBT), the value of the tu_cbf_luma flag of the sub-transform unit that allows non-zero CBF flags may be derived according to the following conditions: The value of the cu_cbf flag is 1, the value of the tu_cbf_cb flag is 0, the value of the tu_cbf_cr flag is 0, and then it is derived that the value of the tu_cbf_luma flag of the current subconversion unit is 1.

[0026] In the method described above, the conversion unit syntax table corresponding to the conversion unit syntax may be signaled according to the following table. [Table 3]

[0027] In the method described above, the conversion unit syntax table corresponding to the conversion unit syntax may be signaled according to the following table. [Table 4]

[0028] In the method described above, the transformation tree syntax table corresponding to the transformation unit syntax may be signaled according to the following table: [Table 5] Here, the coding unit syntax table corresponding to the transformation tree syntax table may be signaled according to the following table: [Table 6]

[0029] In the method described above, treeType may be equal to SINGLE_TREE.

[0030] In the method described above, the Luma CBF flag may be the tu_cbf_luma flag, and if the value of tu_cbf_luma[x0][y0] does not exist, the value of tu_cbf_luma[x0][y0] may be derived according to the following conditions. [Table 7]

[0031] In the method described above, the Luma CBF flag may be the tu_cbf_luma flag, and if the value of tu_cbf_luma[x0][y0] does not exist, the value of tu_cbf_luma[x0][y0] may be derived according to the following conditions. [Table 8]

[0032] In the method described above, tu_cbf_luma[x0][y0] equal to 1 may specify that the luma transformation block contains one or more transformation coefficient levels that are not equal to 0, the array indices x0, y0 may specify the position (x0, y0) of the top-left luma sample of the considered transformation block relative to the top-left luma sample of the image, and the transformation coefficient levels may be integer quantities representing values ​​associated with a particular two-dimensional frequency index in the decoding process before scaling for the calculation of transformation coefficient values.

[0033] This disclosure further provides an encoder including a processing circuit for performing the method described above.

[0034] This disclosure further provides a decoder including a processing circuit for performing the method described above.

[0035] This disclosure further provides a computer program product including program code for performing the method described above.

[0036] The Disclosure further provides a decoder or encoder, the decoder or encoder comprising one or more processors and a non-temporary computer-readable storage medium coupled to the processors and storing a program for execution by the processors, wherein the program, when executed by the processors, configures the decoder to perform the method described above.

[0037] The disclosure further provides an encoder, the encoder comprising an acquisition unit that acquires a bitstream, the bitstream comprising a conversion unit syntax, the acquisition unit is configured to acquire the values ​​of at least two chroma CBF flags (chroma-coded block flags) for a chroma block corresponding to the current conversion unit or the current sub-conversion unit within the current conversion unit, according to the conversion unit syntax, the chroma CBF flag of which one of the at least two chroma CBF flags specifies whether the corresponding block has residuals in the corresponding color plane, the value of at least the coding unit CBF flag, the value of the cu_cbf flag, and the values ​​of at least two chroma CBF flags.

[0038] The Disclosure further provides a decoder, the decoder comprising an acquisition unit that acquires a bitstream, the bitstream comprising a conversion unit syntax, the acquisition unit is configured to acquire the values ​​of at least two chroma CBF flags (chroma-coded block flags) for a chroma block corresponding to the current conversion unit or the current sub-conversion unit within the current conversion unit, according to the conversion unit syntax, the chroma CBF flag of which one of the at least two chroma CBF flags specifies whether the corresponding block has residuals in the corresponding color plane, the value of at least the coding unit CBF flag, the value of the cu_cbf flag, and the values ​​of at least two chroma CBF flags.

[0039] In the decoder described above, the value of the Luma CBF flag may be further derived based on the position of the current sub-converter unit within the current conversion unit.

[0040] In the decoder described above, the conversion unit syntax may include at least two chroma CBF flags, and the step of obtaining the values ​​of at least two chroma CBF flags according to the conversion unit syntax includes the step of obtaining the values ​​of at least two chroma CBF flags from the conversion unit syntax.

[0041] In the decoder described above, the Luma CBF flag may be the tu_cbf_luma flag.

[0042] In the decoder described above, in the conversion unit syntax, the syntactic elements of the conversion unit are: The entire block may be signaled, or Multiple sub-transform units obtained in an inter-block sub-block transformation (SBT) may be signaled, or Signaling may be performed to satisfy the limit on the maximum conversion unit size.

[0043] In the decoder described above, the current conversion unit or the current sub-conversion unit may include two chroma CBF flags, with one flag for each chroma plane.

[0044] In the decoder described above, the value of the luma CBF flag may be derived based on the value of the cu_cbf flag and the values ​​of the two chroma CBF flags corresponding to the current conversion unit.

[0045] In the decoder described above, if the current conversion unit is not divided into sub-conversion units, the bitstream may signal the cu_cbf flag, where the value of the cu_cbf flag is equal to 1, the value of the tu_cbf_cb flag is 0, the value of the tu_cbf_cr flag is 0, and then the value of the tu_cbf_luma flag of the current conversion unit may be derived to 1.

[0046] In the decoder described above, the conversion unit syntax table corresponding to the conversion unit syntax may be signaled according to the following table. [Table 9]

[0047] In the decoder described above, the conversion unit syntax table corresponding to the conversion unit syntax may be signaled according to the following table. [Table 10]

[0048] In the decoder described above, if the current conversion unit is divided by a subblock conversion (SBT), the value of the tu_cbf_luma flag of the subconversion unit that allows a non-zero CBF flag may be derived according to the following conditions: The value of the cu_cbf flag is 1, the value of the tu_cbf_cb flag is 0, the value of the tu_cbf_cr flag is 0, and then it is derived that the value of the tu_cbf_luma flag of the current subconversion unit is 1.

[0049] In the decoder described above, the conversion unit syntax table corresponding to the conversion unit syntax may be signaled according to the following table. [Table 11]

[0050] In the decoder described above, the conversion unit syntax table corresponding to the conversion unit syntax may be signaled according to the following table. [Table 12]

[0051] In the decoder described above, the conversion tree syntax table corresponding to the conversion unit syntax may be signaled according to the following table: [Table 13] Here, the coding unit syntax table corresponding to the transformation tree syntax table may be signaled according to the following table: [Table 14]

[0052] In the decoder described above, treeType may be equal to SINGLE_TREE.

[0053] In the decoder described above, the Luma CBF flag may be the tu_cbf_luma flag, and if the value of tu_cbf_luma[x0][y0] does not exist, the value of tu_cbf_luma[x0][y0] may be derived according to the following conditions. [Table 15]

[0054] In the decoder described above, the Luma CBF flag may be the tu_cbf_luma flag, and if the value of tu_cbf_luma[x0][y0] does not exist, the value of tu_cbf_luma[x0][y0] may be derived according to the following conditions. [Table 16]

[0055] In the decoder described above, tu_cbf_luma[x0][y0] equal to 1 may specify that the luma transformation block includes one or more transformation coefficient levels that are not equal to 0, the array indices x0, y0 may specify the position (x0, y0) of the top-left luma sample of the considered transformation block relative to the top-left luma sample of the image, and the transformation coefficient levels may be integer quantities representing values ​​associated with a particular two-dimensional frequency index in the decoding process before scaling for the calculation of transformation coefficient values.

[0056] 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 this specification, the drawings, and the claims. [Brief explanation of the drawing]

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

[0058] [Figure 1A] A block diagram showing an example of a video coding system configured to implement embodiments of the present invention.

[0059] [Figure 1B] This is a block diagram showing another example of a video coding system configured to implement embodiments of the present invention.

[0060] [Figure 2] This is a block diagram showing an example of a video encoder configured to implement embodiments of the present invention.

[0061] [Figure 3] This is a block diagram illustrating an exemplary structure of a video decoder configured to implement embodiments of the present invention.

[0062] [Figure 4] A block diagram showing an example of an encoding or decoding device.

[0063] [Figure 5] This is a block diagram showing another example of an encoding or decoding device.

[0064] [Figure 6] This is a block diagram showing one embodiment of a signaling method for the CBF flag.

[0065] [Figure 7] This figure shows a flowchart of the coding method performed by the decoding or encoding device according to this disclosure.

[0066] [Figure 8] This figure schematically illustrates an example of an encoder according to this disclosure.

[0067] [Figure 9] This figure schematically shows an example of a decoder according to this disclosure.

[0068] [Figure 10] This is a block diagram similar to Figure 6.

[0069] Hereafter, unless otherwise explicitly specified, the same reference numeral refers to the same or at least functionally equivalent feature. [Modes for carrying out the invention]

[0070] The following description refers to the accompanying drawings, which form part of this disclosure and, as an example, illustrate specific embodiments of the present invention or specific embodiments in which the present invention may be used. It is understood that embodiments of the present invention may be used in other embodiments and may include structural or logical changes not shown in the drawings. Accordingly, the following detailed description should not be construed as restrictive, and the scope of the invention is defined by the appended claims.

[0071] 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, a corresponding device may include one or more such units, e.g., functional units, to perform one or more of the described steps of one or more of the described methods (e.g., one unit performing one or more of the above steps, or multiple units each performing one or more of the multiple steps), even if one or more of the units are not explicitly described or shown in the drawings. On the other hand, for example, if a particular device is described based on one or more units, e.g., functional units, a corresponding method may include one such step (e.g., one step performing the function of one or more of the above units, or multiple steps each performing the function of one or more of the multiple units), even if one or more of the steps are not explicitly described or shown in the drawings. Furthermore, unless otherwise specifically noted, it is understood that the features of the various exemplary embodiments and / or aspects described herein may be combined with each other.

[0072] Video coding typically refers to the processing of a series of images that make up a video or video sequence. The terms “frame” or “image” may be used as synonyms in the field of video coding instead of “image.” Video coding (or coding in general) consists of two parts: video encoding and video decoding. Video encoding is performed on the source side and typically involves processing the original video image (e.g., by compression) to reduce the amount of data required to represent the video image (for more efficient storage and / or transmission). Video decoding is performed on the destination side and typically involves the reverse processing compared to the encoder to reconstruct the video image. Embodiments referring to “coding” a video image (or image in general) shall be understood to be relating to the “encoding” or “decoding” of the video image or each video sequence. The combination of the encoding and decoding parts is also referred to as a codec (coding and decoding).

[0073] In lossless video coding, the original video image can be reconstructed, meaning the reconstructed video image is of the same quality as the original video image (assuming there is no transmission loss or other data loss during storage or transmission). In lossy video coding, further compression is performed, for example by quantization, to reduce the amount of data representing the video image, but this cannot be fully reconstructed in the decoder; that is, the quality of the reconstructed video image is reduced or degraded compared to the quality of the original video image.

[0074] Several video coding standards belong to the group of “lossy hybrid video codecs” (i.e., combining spatial and temporal predictions in the sample region with 2D transform coding to apply quantization in the transform region). Each image in a video sequence is typically divided into a set of non-overlapping blocks, and coding is typically performed at the block level. In other words, in the encoder, video is typically processed, i.e., encoded, at the block (video block) level by generating predicted blocks using, for example, spatial (in-image) and / or temporal (inter-image) predictions, subtracting the predicted blocks from the current block (the block currently being processed / will be processed) to obtain residual blocks, transforming the residual blocks and quantizing the residual blocks in the transform region to reduce (compress) the amount of data that will be transmitted. Meanwhile, in the decoder, the reverse processing compared to the encoder is applied to the encoded or compressed blocks to reconstruct the current block for representation. Furthermore, as the encoder repeats the decoder's processing loop, both will generate the same predictions (e.g., intra and inter predictions) and / or reconstructs for processing subsequent blocks, i.e., for coding.

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

[0076] Figure 1A is a schematic block diagram showing an exemplary coding system 10, for example, a video coding system 10 (or simply coding system 10), in which the technology of the present application may be used. The video encoder 20 (or simply encoder 20) and video decoder 30 (or simply decoder 30) of the video coding system 10 represent examples of devices that may be configured to perform the technology according to the various examples described herein.

[0077] As shown in Figure 1A, the coding system 10 includes a source device 12 configured to provide the encoded image data 21 to a destination device 14 for decoding the encoded image data (13).

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

[0079] The image source 16 may include or be any type of image capturing device, e.g., a camera that captures images of the real world, and / or any type of image generating device, e.g., a computer graphics processor that generates computer-animated images, or any other type of device that acquires and / or provides images of the real world, computer-generated images (e.g., screen content, virtual reality (VR) images), and / or any combination thereof (e.g., augmented reality (AR) images). The image source may be any type of memory or storage that stores any of the above-mentioned images.

[0080] To distinguish it from the processing performed by the preprocessor 18 and the preprocessing unit 18, the image or image data 17 may also be referred to as the raw image or raw image data 17.

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

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

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

[0084] The destination device 14 includes a decoder 30 (e.g., a video decoder 30), and may also include, optionally, a communication interface or communication unit 28, a post-processor 32 (or post-processing unit 32), and a display device 34.

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

[0086] Communication interfaces 22 and 28 may be configured to transmit or receive encoded image data 21 or encoded data between the source device 12 and the destination device 14 via a direct communication link, for example, 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 combination thereof (13).

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

[0088] A communication interface 28, which is the counterpart to communication interface 22, may be configured, for example, to receive transmitted data and process the transmitted data using any type of corresponding transmission decoding or processing and / or depackaging to obtain encoded image data 21.

[0089] Both communication interfaces 22 and 28 may be configured as unidirectional or bidirectional communication interfaces, as indicated by the arrows of the communication channel 13 pointing from the source device 12 to the destination device 14 in Figure 1A, and may be configured, for example, to send and receive messages, to establish connections, and to confirm and exchange any other information related to communication links and / or data transmission, such as the transmission of encoded image data.

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

[0091] The post-processor 32 of the destination device 14 is configured to post-process the decoded image data 31 (also referred to as reconstructed image data), for example, the decoded image 31, to obtain post-processed image data 33, for example, the post-processed image 33. 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, for the purpose of preparing the decoded image data 31 for display by the display device 34.

[0092] The display device 34 of the destination device 14 is configured to receive post-processed image data 33 for displaying the image to, for example, a user or viewer. The display device 34 may be any type of display for representing the reconstructed image, for example, an integrated or external display or monitor, or may include such a display. 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, liquid crystal on silicon (LCoS), a digital optical processor (DLP), or any other type of display.

[0093] Although Figure 1A shows the source device 12 and the destination device 14 as separate devices, the device embodiment may include both or both of their functions, i.e., 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.

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

[0095] An encoder 20 (e.g., a video encoder 20) or a decoder 30 (e.g., a video decoder 30), or both an encoder 20 and a decoder 30, may be implemented via processing circuits, such as those shown in Figure 1B, including one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), discrete logic, hardware, dedicated video coding components, or any combination thereof. The encoder 20 may be implemented via processing circuit 46 to embody various modules described in relation to the encoder 20 in Figure 2 and / or any other encoder systems or subsystems described herein. The decoder 30 may be implemented via processing circuit 46 to embody various modules described in relation to the decoder 30 in Figure 3 and / or any other decoder systems or subsystems described herein. The processing circuits may be configured to perform various operations, as will be described later. When 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 and implement the technology of the disclosure by executing the instructions using one or more processors in hardware. Either the video encoder 20 or the video decoder 30 may be integrated as part of a combined encoder / decoder (codec) within a single device, for example, as shown in Figure 1B.

[0096] The source device 12 and destination device 14 may comprise 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 gaming consoles, video streaming devices (such as content service servers or content distribution servers), broadcast receiver devices, broadcast transmitter devices, etc., and may or may not have an operating system. In some cases, the source device 12 and destination device 14 may support wireless communication. Therefore, the source device 12 and destination device 14 may be wireless communication devices.

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

[0098] For the sake of explanation, embodiments of the present invention will be described herein with reference to, for example, reference software for High Efficiency Video Coding (HEVC) or Multipurpose Video Coding (VVC), which are next-generation video coding standards developed by the ITU-T Video Coding Expert Group (VCEG) and the ISO / IEC Video Coding Expert Group (MPEG) Joint Working 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.

[0099] [Encoder and encoding methods]

[0100] Figure 2 shows a schematic block diagram of an exemplary video encoder 20 configured to implement the technology of the present invention. In the example of Figure 2, the video encoder 20 comprises an input 201 (or input interface 201), a residual calculation unit 204, a transformation processing unit 206, a quantization unit 208, an inverse quantization unit 210, an inverse transformation processing unit 212, a reconstruction unit 214, a loop filter unit 220, a decoded image buffer (DPB) 230, a mode selection unit 260, an entropy encoding 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 referred to as a hybrid video encoder or a video encoder with a hybrid video codec.

[0101] The residual calculation unit 204, the conversion processing unit 206, the quantization unit 208, and the mode selection unit 260 may be referred to as forming 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 decoded image buffer (DPB) 230, the inter-prediction unit 244, and the intra-prediction unit 254 may be referred to as forming the reverse signal path of the video encoder 20. 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 decoded image buffer (DPB) 230, the inter-prediction unit 244, and the intra-prediction unit 254 are also described as forming the “built-in decoder” of the video encoder 20.

[0102] [Images and Image Classification (Images and Blocks)]

[0103] The encoder 20 may be configured to receive, for example, an image 17 (or image data 17), for example, an image from a series of images forming a video or video sequence, via the input 201. The received image or image data may be a pre-processed image 19 (or pre-processed image data 19). For brevity, the following description will refer to image 17. Image 17 may also be referred to as the current image or the image being coded (particularly in video coding to distinguish the current image from other images, for example, previously encoded and / or decoded images of the same video sequence, i.e., the video sequence that also includes the current image).

[0104] A (digital) image is, or can be considered, a two-dimensional array or matrix of samples with intensity values. A sample in an array may also be called a pixel (an abbreviation for image element) or pelle. The number of samples in the horizontal and vertical (or axis) directions of the array or image defines the size and / or resolution of the image. Typically, three color components are used to represent color; that is, an image may be represented by or contain a three-sample array. In RGB format or color space, an image contains corresponding red, green, and blue sample arrays. However, in video coding, each pixel is typically represented in luminance and chrominance format or color space, e.g., 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 abbreviated luma) component Y represents the brightness or intensity of the gray level (e.g., in a grayscale image), while the two chrominance (or abbreviated chroma) components, Cb and Cr, represent chromaticity or color information components. Therefore, an image in YCbCr format includes a luminance sample array of luminance sample values ​​(Y) and two chrominance sample arrays of chrominance values ​​(Cb and Cr). An image in RGB format can be converted to or transformed into YCbCr format, and vice versa; this process is also known as color conversion or transformation. If the image is monochrome, it may contain only a luminance sample array. Thus, an image may be, for example, an array of luminance samples in a monochromatic format, or an array of luminance samples in 4:2:0, 4:2:2, and 4:4:4 color formats, and two corresponding arrays of chroma samples.

[0105] Embodiments of the video encoder 20 may include an image segmentation unit (not shown in Figure 2) configured to segment an image 17 into a plurality of (typically non-overlapping) image blocks 203. These blocks may also be referred to as root blocks, macroblocks (H.264 / AVC), coding tree blocks (CTB), or coding tree units (CTU) (H.265 / HEVC and VVC). The image segmentation unit may use the same block size for all images and corresponding grids defining the block sizes of the video sequence, or it may vary the block size between images or subsets or groups of images to segment each image into a corresponding block.

[0106] In a further embodiment, the video encoder may be configured to directly receive a block 203 of the image 17, for example, one, some, or all of the blocks that make up the image 17. The image block 203 may also be referred to as the current image block or the encoded image block.

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

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

[0109] Embodiments of the video encoder 20, as shown in Figure 2, may be further configured to divide and / or encode an image using slices (also referred to as video slices), wherein the image may be divided into one or more slices (typically non-overlapping) or encoded using them, and each slice may comprise one or more blocks (e.g., CTUs).

[0110] Embodiments of the video encoder 20, as shown in Figure 2, may be further configured to segment and / or encode an image using tile groups (also referred to as video tile groups) and / or tiles (also referred to as video tiles), wherein the image may be segmented into one or more tile groups (typically non-overlapping) or encoded using them, and each tile group may comprise, for example, one or more blocks (e.g., CTUs) or one or more tiles. Each tile may be, for example, rectangular in shape and may comprise one or more blocks (e.g., CTUs), for example, complete or fractional blocks.

[0111] [Residual calculation]

[0112] The residual calculation unit 204 may be configured to calculate the residual block 205 (also referred to as residual 205) based on the image block 203 and the prediction block 265 (further details regarding the prediction block 265 will be provided later), for example, by subtracting the sample value of the prediction block 265 from the sample value of the image block 203 for each sample (for each pixel) to obtain the residual block 205 in the sample region.

[0113] [conversion]

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

[0115] The conversion processing unit 206 may be configured to apply an integer approximation of the DCT / DST, such as the conversion specified for H.265 / HEVC. Compared to the orthogonal DCT conversion, such an integer approximation is typically scaled by a specific coefficient. Additional scaling coefficients are applied as part of the conversion process to preserve the norm of the residual blocks processed by the forward and inverse conversions. The scaling coefficients are typically selected based on specific constraints, such as a scaling coefficient that is a power of 2 with respect to the shift operation, the bit depth of the conversion coefficients, and a trade-off between accuracy and implementation cost. For example, a specific scaling coefficient 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 coefficient for the forward conversion by the conversion processing unit 206 in the encoder 20 may be specified accordingly.

[0116] Embodiments of the video encoder 20 (each a conversion processing unit 206) may be configured to encode or compress conversion parameters, such as one or more conversion types, for example, directly or via an entropy encoding unit 270, before outputting them, so that, for example, the video decoder 30 can receive and use the conversion parameters for decoding.

[0117] [Quantization]

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

[0119] The quantization process can reduce the bit depth associated with some or all of the 207 conversion coefficients. For example, n-bit conversion coefficients may be rounded to m-bit conversion coefficients during quantization, where n is greater than m. The degree of quantization can be changed by adjusting the quantization parameter (QP). For example, in the case of scalar quantization, different scalings 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 can 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), and vice versa. Quantization may involve division by the quantization step size, and the corresponding and / or inverse dequantization by, for example, the inverse quantization unit 210 may involve multiplication by the quantization step size. Embodiments conforming to some standards, e.g., HEVC, may be configured to use quantization parameters to determine the quantization step size. Generally, the quantization step size can be calculated based on quantization parameters using a fixed-point approximation of the equations involving division. Additional scaling factors may be introduced for 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 for the quantization step size and quantization parameters. In one example 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 a bitstream. Quantization is an irreversible operation, and the loss increases with increasing quantization step size.

[0120] Embodiments of the video encoder 20 (each a quantization unit 208) may be configured to encode and output quantization parameters (QP) for example, directly or via an entropy encoding unit 270, so that, for example, the video decoder 30 can receive and apply the quantization parameters for decoding.

[0121] [Dequantization]

[0122] The inverse quantization unit 210 is configured to apply the inverse quantization of the quantization unit 208 to the quantization coefficients, for example, by applying the inverse of the quantization scheme applied by the quantization unit 208 based on or using the same quantization step size as the quantization unit 208, thereby obtaining the dequantization coefficient 211. The dequantization coefficient 211 may also be called the dequantization residual coefficient 211, and is typically not identical to the transformation coefficient due to the loss due to quantization, but corresponds to the transformation coefficient 207.

[0123] [Inverse transformation]

[0124] The inverse transformation processing unit 212 is configured to apply the inverse transformation of the transformation applied by the transformation processing unit 206, for example, the inverse discrete cosine transform (DCT) or the inverse discrete sine transform (DST) or other inverse transformations, to obtain the reconstructed residual block 213 (or the corresponding dequantization coefficient 213) in the sample region. The reconstructed residual block 213 may also be referred to as the transformation block 213.

[0125] [Reconfiguration]

[0126] The reconstruction unit 214 (e.g., an adder or summer 214) is configured to add the transformed block 213 (i.e., the reconstructed residual block 213) to the predicted block 265 by adding the sample value of the reconstructed residual block 213 and the sample value of the predicted block 265 for each sample, thereby obtaining the reconstructed block 215 in the sample region.

[0127] [filtering]

[0128] The loop filter unit 220 (or, for short, the "loop filter" 220) is configured to filter the reconstruction block 215 to obtain a filtered block 221, or, more generally, to filter the reconstruction sample to obtain a filtered sample. The loop filter unit is configured, for example, to smooth pixel transitions or to otherwise improve video quality. The loop filter unit 220 may comprise 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 or coordinating filter, or any combination thereof. Although the loop filter unit 220 is shown in Figure 2 as being within a loop filter, in other configurations, the loop filter unit 220 may be implemented as a post-loop filter. The filtered block 221 may also be referred to as the filtered reconstruction block 221.

[0129] Embodiments of the video encoder 20 (each a loop filter unit 220) may be configured to encode loop filter parameters (such as sample adaptive offset information) for example, directly or via an entropy encoding unit 270 before outputting them, so that, for example, the decoder 30 can receive and apply the same loop filter parameters or the respective loop filters for decoding.

[0130] [Decoded image buffer]

[0131] The decoded image buffer (DPB) 230 may be a memory that stores a reference image for encoding video data by the video encoder 20, or generally reference image data. The DPB 230 may be formed from 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 image buffer (DPB) 230 may be configured to store one or more filtered blocks 221. The decoded image buffer 230 may be further configured to store other previously filtered blocks of the same current image or a different image, for example, a previously reconstructed image, for example, a previously reconstructed and filtered block 221, for example, to provide a previously reconstructed, i.e., decoded, complete image (and corresponding reference blocks and samples), and / or a partially reconstructed current image (and corresponding reference blocks and samples) for interpretation. The decoded image buffer (DPB) 230 may be configured to store, for example, one or more unfiltered reconstruction blocks 215, or generally, unfiltered reconstruction samples, or any other further processed versions of the reconstruction blocks or samples, if the reconstruction blocks 215 have not been filtered by the loop filter unit 220.

[0132] [Mode Selection (Classification and Prediction)]

[0133] The mode selection unit 260 comprises a segmentation unit 262, an inter-prediction unit 244, and an intra-prediction unit 254, and is configured to receive or acquire original image data, e.g., the original block 203 (the current block 203 of the current image 17), and reconstructed image data, e.g., filtered and / or unfiltered reconstructed samples or blocks from the same (current) image and / or one or more previously decoded images, e.g., from a decoded image buffer 230 or other buffers (e.g., line buffers not shown). The reconstructed image data is used as reference image data for prediction, e.g., inter-prediction or intra-prediction, in order to obtain prediction blocks 265 or predictor factors 265.

[0134] The mode selection unit 260 may be configured to determine or select a segmentation and prediction mode (e.g., intra or inter prediction mode) for the current block prediction mode (excluding segmentation) and to generate a corresponding prediction block 265, which is used for calculating the residual block 205 and for reconstructing the reconstruction block 215.

[0135] Embodiments of the mode selection unit 260 may be configured to select a segmentation and prediction mode (e.g., from those supported by or available to the mode selection unit 260) that provides the best match, or in other words, minimum residual (minimum residual meaning better compression for transmission or storage), or minimum signaling overhead (minimum signaling overhead meaning better compression for transmission or storage), or both, or a balanced combination. The mode selection unit 260 may be configured to determine the segmentation and prediction mode based on rate distortion optimization (RDO), i.e., to select a prediction mode that provides minimum rate distortion. In this context, terms such as “best,” “minimum,” and “optimal” do not necessarily refer to general “best,” “minimum,” and “optimal,” but may refer to the achievement of a termination or selection criterion where a value exceeds or falls below a threshold or other constraint, potentially leading to a “suboptimal selection,” but reducing complexity and processing time.

[0136] In other words, the partitioning unit 262 may be configured to partition block 203 into smaller block partitions or subblocks (which also form blocks) by repeatedly using, for example, quad-tree partitioning (QT), binary-tree partitioning (BT), or triple-tree partitioning (TT), or any combination thereof, and to perform, for example, predictions for 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.

[0137] The following describes in more detail the segmentation (e.g., by the segmentation unit 260) and prediction processing (by the inter-prediction unit 244 and the intra-prediction unit 254) performed by the example video encoder 20.

[0138] [Partitioning]

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

[0140] As previously mentioned, the term “block” as used herein may refer to a portion of an image, particularly a square or rectangular portion. Referring to HEVC and VVC, for example, a block may be a coding tree unit (CTU), coding unit (CU), prediction unit (PU), and transformation unit (TU), and / or a corresponding block, e.g., a coding tree block (CTB), coding block (CB), transformation block (TB), or prediction block (PB), or they may correspond thereto.

[0141] For example, a coding tree unit (CTU) may be a CTB of lumar samples in an image having three sample arrays, two corresponding CTBs of chroma samples, or a CTB of samples in a monochrome image or an image coded using three distinct color planes and syntactic structures used to code the samples, or may include such CTBs. Correspondingly, a coding tree block (CTB) may be an N×N block of samples with respect to some value of N, such that the division of the components into a CTB is a partitioning. A coding unit (CU) may be a coding block of lumar samples, two corresponding coding blocks of chroma samples in an image having three sample arrays, or a coding block of samples in a monochrome image or an image coded using three distinct color planes and syntactic structures used to code the samples, or may include such a CU. Correspondingly, a coding block (CB) may be an M×N block of samples with respect to some values ​​of M and N, such that the division of the CTB into a coding block is a partitioning.

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

[0143] For example, in embodiments conforming to the latest video coding standard currently under development, known as Multipurpose Video Coding (VVC), combined quad-tree and binary-tree (QTBT) segmentation is used, for example, to segment coding blocks. In the QTBT block structure, CUs can be either square or rectangular. For example, a coding tree unit (CTU) is first segmented by a quad-tree structure. The leaf nodes of the quad-tree are further segmented by a binary tree or ternary (or triple) tree structure. The leaf nodes of the segmented trees are referred to as coding units (CUs), and their segmentation is used for prediction and transformation processing without any further segmentation. That is, CUs, PUs, and TUs have the same block size in the QTBT coding block structure. In parallel, multiple segmentations, such as triple-tree segmentation, may also be used with the QTBT block structure.

[0144] 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.

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

[0146] [Intra prediction]

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

[0148] The intra-prediction unit 254 is configured to generate an intra-prediction block 265 according to an intra-prediction mode from a set of intra-prediction modes, using reconstruction samples of adjacent blocks of the same current image.

[0149] The intra-prediction unit 254 (or generally the mode selection unit 260) is further configured to output intra-prediction parameters (or generally information indicating the intra-prediction mode selected for a block) to the entropy encoding unit 270 in the form of syntactic elements 266 so that they are included in the encoded image data 21, thereby allowing, for example, the video decoder 30 to receive and use the prediction parameters for decoding.

[0150] [Interface prediction]

[0151] The set of interpretation modes (or possible interpretation modes) depends on the available reference image (i.e., a previous, at least partially decoded image stored in, for example, DBP230) and other interpretation parameters, such as whether the entire reference image or only a portion of the reference image, e.g., the search window area around the current block area, was used to find the best-matching reference block, and / or whether pixel interpolation, e.g., half / semi-perpetual and / or quarter-perpetual interpolation, was applied.

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

[0153] The interpretation unit 244 may include a motion prediction (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 prediction, an image block 203 (the current image block 203 of the current image 17) and a decoded image 231, or at least one or more previously reconstructed blocks, e.g., one or more other / different reconstructed blocks of the previously decoded image 231. For example, a video sequence may include the current image and the previously decoded image 231, or in other words, the current image and the previously decoded image 231 may be part of or form part of a set of images that make up the video sequence.

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

[0155] The motion compensation unit is configured to acquire, for example, interprediction parameters and perform interprediction based on or using those interprediction parameters to acquire interprediction blocks 265. Motion compensation performed by the motion compensation unit may involve fetching or generating prediction blocks based on the motion / block vector determined by the motion prediction and optionally performing interpolation to sub-pixel precision. Interpolation filtering may generate additional pixel samples from known pixel samples, thus potentially increasing the number of candidate prediction blocks that can be used to code the image block. Upon receiving the motion vector for the current image block's PU, the motion compensation unit may locate the prediction block pointed to by the motion vector in one of the reference image lists.

[0156] The motion compensation unit may generate syntactic elements associated with blocks and video slices, which are used by the video decoder 30 when decoding image blocks of video slices. In addition to or instead of slices and their respective syntactic elements, tile groups and / or tiles and their respective syntactic elements may be generated or used.

[0157] [Entropy coding]

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

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

[0160] [Decoder and decoding methods]

[0161] Figure 3 shows an example of a video decoder 30 configured to implement the technology of the present invention. The video decoder 30 is configured to receive encoded image data 21 (e.g., encoded bitstream 21), which has been encoded by, for example, an encoder 20, and to obtain a decoded image 331. The encoded image data or bitstream includes information for decoding the encoded image data, such as data representing image blocks and associated syntactic elements of an encoded video slice (and / or tile group or tile).

[0162] In the example in Figure 3, the decoder 30 comprises an entropy decoding unit 304, an inverse quantization unit 310, an inverse transformation processing unit 312, a reconstruction unit 314 (e.g., an aggregater 314), a loop filter 320, a decoded image buffer (DBP) 330, a mode application unit 360, an inter-prediction unit 344, and an intra-prediction unit 354. The inter-prediction unit 344 is or may comprise a motion compensation unit. In some examples, the video decoder 30 may perform a decoding path that is roughly the reverse of the encoding path described with respect to the video encoder 100 in Figure 2.

[0163] As described with respect to encoder 20, the inverse quantization unit 210, inverse processing unit 212, reconstruction unit 214, loop filter 220, decoded image buffer (DPB) 230, inter-prediction unit 344, and intra-prediction unit 354 are also referred to as forming the “built-in decoder” of video encoder 20. Thus, 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 decoded image buffer 330 may be functionally identical to the decoded image buffer 230. Accordingly, the descriptions provided for each unit and function of video encoder 20 apply to the respective units and functions of video decoder 30.

[0164] [Entropy decoding]

[0165] The entropy decoding unit 304 is configured to parse the bitstream 21 (or generally the encoded image data 21) and, for example, perform entropy decoding on the encoded image data 21 to obtain, for example, quantization coefficients 309 and / or decoded coding parameters (not shown in Figure 3), such as inter-prediction parameters (e.g., reference image index and motion vector), intra-prediction parameters (e.g., intra-prediction mode or index), transformation parameters, quantization parameters, loop filter parameters, and / or other syntactic elements, or any or all of them. The entropy decoding unit 304 may be configured to apply a decoding algorithm or scheme corresponding to the encoding scheme described with respect to the entropy encoding 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 syntactic elements to the mode application unit 360, and other parameters to other units of the decoder 30. The video decoder 30 may receive syntactic elements at the video slice level and / or video block level. In addition to or instead of slices and their respective syntactic elements, tile groups and / or tiles and their respective syntactic elements may be received and / or used.

[0166] [Dequantization]

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

[0168] [Inverse transformation]

[0169] The inverse transformation processing unit 312 may be configured to receive the dequantization coefficient 311, also referred to as the transformation coefficient 311, and to apply a transformation to the dequantization coefficient 311 in order to obtain the reconstructed residual block 213 in the sample region. The reconstructed residual block 213 may also be referred to as 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 image data 21 (for example, by parsing and / or decoding by the entropy decoding unit 304) and determine the transformation to be applied to the dequantization coefficient 311.

[0170] [Reconfiguration]

[0171] The reconstruction unit 314 (for example, an adder or summer 314) may be configured to obtain the reconstruction block 315 in the sample region by adding the reconstruction residual block 313 to the prediction block 365, for example by adding the sample value of the reconstruction residual block 313 to the sample value of the prediction block 365.

[0172] [filtering]

[0173] The loop filter unit 320 (located either within or after the coding loop) is configured to filter the reconstructed block 315 to obtain the filtered block 321, for example, to smooth pixel transitions or to otherwise improve video quality. The loop filter unit 320 may comprise 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 or coordinating filter, or any combination thereof. Although the loop filter unit 320 is shown in Figure 3 as being within the loop filter, in other configurations, the loop filter unit 320 may be implemented as a post-loop filter.

[0174] [Decoded image buffer]

[0175] The decoded video block 321 of the image is then stored in the decoded image buffer 330, which stores the decoded image 331 as a reference image for subsequent motion compensation of other images and / or for outputting their respective displays.

[0176] The decoder 30 is configured to output a decoded image 311, for example via output 312, for presentation or viewing by the user.

[0177] [prediction]

[0178] The inter-prediction unit 344 may be identical to the inter-prediction unit 244 (in particular, the motion compensation unit), and the intra-prediction unit 354 may be functionally identical to the inter-prediction unit 254, and performs segmentation or segmentation decisions and predictions based on segmentation and / or prediction parameters or respective information received from the encoded image data 21 (for example, by parsing 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 image, blocks, or each sample (filtered or unfiltered) to obtain predicted blocks 365.

[0179] If the 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 image block of the current video slice based on the signaled intra-prediction mode and data from previously decoded blocks of the current image. If the video image 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 the motion vector and other syntactic elements received from the entropy decoding unit 304. In inter-prediction, the prediction block may be generated from one of several reference images contained in one of several reference image lists. The video decoder 30 may construct reference frame lists, namely List 0 and List 1, based on reference images stored in the DPB 330 using a default construction technique. For embodiments that use tile groups (e.g., video tile groups) and / or tiles (e.g., video tiles) in addition to or instead of slices (e.g., video slices), or depending on the embodiment, the same or similar may apply, for example, video may be coded using tile groups and / or tiles of I, P, or B.

[0180] The mode application unit 360 is configured to determine prediction information for a video block in the current video slice by parsing motion vectors or related information and other syntactic elements, and uses the prediction information to generate a prediction block for the current video block being decoded. For example, the mode application unit 360 uses some of the received syntactic elements to determine the prediction mode used to code the video block in the video slice (e.g., intra or inter-predict), the inter-predict slice type (e.g., B-slice, P-slice, or GPB-slice), configuration information relating to one or more of the reference image lists for the slice, the motion vector for each inter-encoded video block in the slice, the inter-predict status for each intercoded video block in the slice, and other information for decoding the video block in the current video slice. For embodiments using tile groups (e.g., video tile groups) and / or tiles (e.g., video tiles) in addition to or instead of slices (e.g., video slices), or depending on the embodiment, the same or similar may apply, for example, video may be coded using I, P, or B tile groups and / or tiles.

[0181] An embodiment of the video decoder 30, as shown in Figure 3, may be further configured to divide and / or decode an image using slices (also referred to as video slices), and the image may be divided into one or more slices (typically non-overlapping) or decoded using them, each slice may comprise one or more blocks (e.g., CTUs).

[0182] Embodiments of the video decoder 30, as shown in Figure 3, may be configured to segment and / or decode an image using tile groups (also referred to as video tile groups) and / or tiles (also referred to as video tiles), wherein the image may be segmented into one or more tile groups (typically non-overlapping) or decoded using them, and each tile group may comprise, for example, one or more blocks (e.g., CTUs) or one or more tiles. Each tile may be, for example, rectangular in shape and may comprise one or more blocks (e.g., CTUs), for example, complete or fractional blocks.

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

[0184] 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.

[0185] Figure 4 is a schematic diagram of a video coding apparatus 400 according to one embodiment of the present disclosure. The video coding apparatus 400 is suitable for carrying out the embodiments disclosed herein. In the embodiment, the video coding apparatus 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.

[0186] The video coding device 400 includes an inlet 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 exit 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 connected to the inlet port 410, receiver unit 420, transmitter unit 440, and exit port 450 for outputting or inputting optical or electrical signals.

[0187] The processor 430 is implemented by hardware and software. The processor 430 may be implemented as one or more CPU chips, cores (e.g., a multi-core processor), FPGAs, ASICs, and DSPs. The processor 430 communicates with the inlet port 410, the receiver unit 420, the transmitter unit 440, the exit 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, by including the coding module 470, a significant improvement in the functionality of the video coding device 400 is provided, resulting in the conversion 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.

[0188] Memory 460 may comprise one or more disks, tape drives, and solid-state drives, and may be used as an overflow data storage device to store the program if the program is selected for execution, and to store 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), tertiary associative memory (TCAM), and / or static random access memory (SRAM).

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

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

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

[0192] The device 500 may also include one or more output devices, such as a display 518. In one example, the display 518 may be a touch-sensitive display combining a display and a touch sensor element that can operate to detect touch input. The display 518 can be connected to the processor 502 via the bus 512.

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

[0194] Modern video codecs typically include various conversion unit partitioning methods, such as inter-block sub-block conversion to meet the maximum conversion size limit, intra-partitioned coding modes within blocks, and conversion unit partitioning. Alternatively, conversion units can be coded directly without further subdivision. In subsequent steps, each conversion unit or sub-conversion unit contains a set of CBF flags, correspondingly specifying whether each color component has residuals from the current block. It is noteworthy that the CBF flags have some redundancy, which can be utilized depending on the specific characteristics of the partitioning of each particular conversion unit.

[0195] In embodiments of the present invention, a general unified method for redundancy removal in CBF flag signaling is proposed.

[0196] In this disclosure, in the first embodiment, if transform unit partitioning is not used, tu_cbf_luma can be derived from the cu_cbf flag if the cu_cbf flag is set to 1 and the two chroma flags of the current TU are set to 0. In this case, tu_cbf_luma is set to equal 1 and no signaling occurs. Otherwise, signaling of tu_cbf_luma is performed in the usual manner. In this disclosure, if the cu_cbf flag is equal to 1, it specifies that a transform_tree syntax structure exists in the current coding unit, and if the cu_cbf flag is equal to 0, it specifies that a transform_tree syntax structure does not exist in the current coding unit.

[0197] In the second embodiment, if the SBT divides the conversion unit into two subconversion units, one of which contains residuals controlled by the tu_cbf_luma, tu_cbf_cb, and tu_cbf_cr flags, then tu_cbf_luma can be derived from the cu_cbf flag according to the following rule: If the cu_cbf flag is set to 1 and the two chroma flags of the current TU are set to 0, then tu_cbf_luma is set to equal 1 and no signaling occurs. Otherwise, signaling of tu_cbf_luma is performed in the usual manner.

[0198] In the third embodiment, if a conversion unit is divided into sub-conversion units to satisfy the limit on the maximum conversion unit size, the luma cbf flag of the last sub-conversion unit of the conversion unit is derived according to the following conditions: If the cu_cbf flag is 1, and all tu_cbf_luma, tu_cbf_cb, and tu_cbf_cr of all previously encoded sub-conversion units in the current conversion unit are 0, and tu_cbf_cb and tu_cbf_cr of the current sub-conversion unit are 0, then tu_cbf_luma is set to equal 1 and no signaling occurs. Otherwise, signaling of tu_cbf_luma is performed in the normal manner.

[0199] Embodiments of this disclosure propose a unified mechanism for CBF flag signaling that improves coding efficiency. Accordingly, a unified mechanism for CBF flag signaling is proposed.

[0200] The relationship between CBF flags and sub-conversion unit partitioning tools allows for the removal of bitstream redundancy.

[0201] In other words, embodiments of this disclosure propose modifications aimed at eliminating some inconsistencies in CBF flag signaling between the VVC4 Spec and VTM4.0.1SW. In the first embodiment, it is proposed to remove the hierarchical chroma CBF signaling based on conversion unit depth, which is not presented herein, from the VTM SW and to include the missing luma CBF flag derivation method for normal TU and SBT TU based on the chroma CBF flags presented in the SW herein. The second embodiment is proposed on top of the first embodiment and presupposes a unified design of all existing luma CBF flag derivation methods.

[0202] There are four possible TUs that can be represented in VVC4. 1. A normal TU is equal to the CU size (no division). 2. Classification of SBT TU, 3. Classification of ISP TUs, 4. Classification of TUs due to limitations on the maximum conversion size.

[0203] The table below illustrates this possibility. [Table 17] [Table 18]

[0204] As shown in Tables 1 and 2, it should be noted that both luma and chroma CBF signaling are performed independently of each other, and there are no hierarchical dependencies on the chroma CBF flags.

[0205] From a software perspective, VTM4.0.1 includes both of the above aspects.

[0206] The hierarchical chroma CBF signaling method has been tested in VTM4.0.1 and demonstrates a non-negligible impact on coding efficiency. However, supporting this feature requires the addition of non-trivial logic in both the software and this specification.

[0207] In one embodiment, we propose eliminating the hierarchical chroma CBF signaling method of the SW and including it in the derivation of the spec's chroma CBF.

[0208] The following table shows the revised syntax table. [Table 19]

[0209] In another embodiment, we propose deriving the Luma CBF by applying a similar method to TUs that have been divided to satisfy the maximum TU limit. This integration can share the existing mechanism for deriving the final Luma CBF for ISPs. The table below shows the proposed modifications. [Table 20]

[0210] Embodiments of the present invention offer improved coding efficiency, simplification of this specification, and a unified mechanism for CBF flag signaling. Accordingly, a unified mechanism for CBF flag signaling is proposed.

[0211] The relationship between CBF flags and sub-conversion unit partitioning tools allows for the removal of bitstream redundancy.

[0212] To put it another way, there are four possible ways in which TU can be represented in VVC4. 1. A normal TU is equal to the CU size (no division). 2. Classification of SBT TU, 3. Classification of ISP TUs, 4. Classification of TUs due to limitations on the maximum conversion size.

[0213] The table below illustrates this possibility. [Table 21] [Table 22]

[0214] As shown in Tables 1 and 2, it should be noted that both luma and chroma CBF signaling are performed independently of each other, and there are no hierarchical dependencies on the chroma CBF flags.

[0215] From a software perspective, VTM4.0.1 includes both of the above aspects.

[0216] The hierarchical chroma CBF signaling method has been tested in VTM4.0.1 and demonstrates a non-negligible impact on coding efficiency. However, supporting this feature requires the addition of non-trivial logic in both the software and this specification.

[0217] In one embodiment, we propose eliminating the hierarchical chroma CBF signaling method of the SW and including it in the derivation of the spec's chroma CBF.

[0218] The following table shows the revised syntax table. [Table 23]

[0219] In this embodiment, the tu_cbf_luma[x0][y0] flag derivation method is performed in two cases: 1) the normal case when the TU is equal to the CU, and 2) the SBT case of a sub-TU containing the CBF flag. The derivation process is performed based on the block type (CuPredMode[x0][y0]) and the values ​​of the Cb and Cr CBF flags (tu_cbf_cb[x0][y0] and tu_cbf_cr[x0][y0]) that have already been transmitted in the bitstream prior to tu_cbf_luma[x0][y0]. Note that this derivation technique does not apply to TUs that have been divided into sub-TUs to satisfy the limit of the maximum conversion unit size.

[0220] Embodiments of the present invention offer improved coding efficiency, simplification of this specification, and a unified mechanism for CBF flag signaling.

[0221] The relationship between CBF flags and sub-conversion unit partitioning tools allows for the removal of bitstream redundancy.

[0222] In yet another embodiment, in relation to the above embodiment, it has been proposed to remove the hierarchical chroma CBF signaling method of the SW and include the derivation of the luma CBF in the specification.

[0223] The following table shows the modified syntax table for the conversion unit syntax; that is, the conversion unit syntax is signaled according to the table below. [Table 24]

[0224] In this embodiment, the tu_cbf_luma[x0][y0] flag derivation method is performed in two cases: 1) the normal case when the TU is equal to the CU, and 2) the SBT case of a sub-TU containing the CBF flag. The derivation process is performed based on the block type (CuPredMode[x0][y0]) and the values ​​of the Cb and Cr CBF flags (tu_cbf_cb[x0][y0] and tu_cbf_cr[x0][y0]) that have already been transmitted in the bitstream prior to tu_cbf_luma[x0][y0]. Note that this derivation technique does not apply to TUs that have been divided into sub-TUs to satisfy the limit of the maximum conversion unit size.

[0225] In this embodiment, as with other embodiments of the present invention, we can propose improved coding efficiency, simplification of this specification, and a unified mechanism for CBF flag signaling.

[0226] Furthermore, in this embodiment, the relationship between the CBF flag and the sub-conversion unit partitioning tool makes it possible to eliminate bitstream redundancy.

[0227] Figure 6 is a block diagram illustrating one embodiment of the signaling method for CBF flags. Figure 6 shows the case where a normal TU is equal to the CU size and is divided vertically into two sub-TUs: sub-TU0 and sub-TU1 by SBT partitioning. Here, according to the SBT design, only one sub-TU may have non-zero tu_cbf_cb, tu_cbf_cr, and tu_cbf_luma flags. In the example in Figure 6, sub-TU0 may have non-zero tu_cbf_cb, tu_cbf_cr, and tu_cbf_luma flags. Assuming that the cu_cbf flag for the entire coding unit is equal to 1 and both tu_cbf_cb and tu_cbf_cr of sub-TU0 are signaled to 0, the value of tu_cbf_luma can be led to 1 without explicit signaling.

[0228] This is further illustrated in Figure 10, which shows the case where TU is equal to CU and there is no division, and the case where there is a pipeline division.

[0229] Figure 7 is a flowchart showing each step of a video coding method performed by a decoding or encoding device according to the present disclosure. In Figure 7, the method includes step 1601, which defines acquiring a bitstream, the bitstream including a conversion unit syntax. For step 1601, the conversion unit syntax has at least two chroma CBF flags (chroma-coded block flags) for a chroma block corresponding to the current conversion unit or the current sub-conversion unit within the current conversion unit, one of which specifies whether a block has residuals in the corresponding color plane. Figure 7 further shows step 1602 for deriving the values ​​of the chroma CBF flags. The derivation of the Luma CBF flag in step 1602 is based on the values ​​of the coding unit CBF flag, the cu_cbf flag, and one or any combination of the values ​​of at least two chroma CBF flags, and / or the position of the current sub-transformation unit within the current transform unit, and / or the values ​​of the Luma CBF flag and chroma CBF flag corresponding to the sub-transformation unit in the current transform unit prior to the current sub-transformation unit. In this disclosure, a block having a residual means that the block contains at least one transform coefficient with a value that is not zero.

[0230] Figure 8 shows an encoder 20 according to the present disclosure. In Figure 8, the encoder 20 comprises an acquisition unit 2001 configured to acquire a bitstream, the bitstream containing a conversion unit syntax. The acquisition unit 2001 is configured to acquire the values ​​of at least two chroma CBF flags (chroma-coded block flags) for a chroma block corresponding to the current conversion unit or the current sub-conversion unit within the current conversion unit, according to the conversion unit syntax, where one of the at least two chroma CBF flags specifies whether the corresponding block has residuals in the corresponding color plane. The encoder 20 further comprises a derivation unit 2003 configured to derive the values ​​of the chroma CBF flags based on at least: the value of the coding unit CBF flag, the value of the cu_cbf flag, and the values ​​of at least two chroma CBF flags. It should be understood that one or more acquisition units may be used.

[0231] Figure 9 shows a decoder 30 according to the present disclosure. In Figure 9, the decoder 30 comprises an acquisition unit 3001 configured to acquire a bitstream, the bitstream containing a conversion unit syntax. The acquisition unit 3001 is configured to acquire the values ​​of at least two chroma CBF flags (chroma-coded block flags) for a chroma block corresponding to the current conversion unit or the current sub-conversion unit within the current conversion unit, according to the conversion unit syntax, where one of the at least two chroma CBF flags specifies whether the corresponding block has residuals in the corresponding color plane. The decoder 30 further comprises a derivation unit 3003 configured to derive the values ​​of the chroma CBF flags based on at least: the value of the coding unit CBF flag, the value of the cu_cbf flag, and the values ​​of at least two chroma CBF flags. It should be understood that one or more acquisition units may be used.

[0232] [Mathematical operators]

[0233] The mathematical operators used in this application are the same as those used in the C programming language. However, the results of integer division and arithmetic shift operations are more precisely defined, and additional operations such as exponentiation and real number division are also defined. For example, generally starting from 0, "the first" is the 0th and "the second" is the 1st.

[0234] [Arithmetic Operators]

[0235] The arithmetic operators are defined as follows:

Table 25

[0236] [Logical Operators]

[0237] The logical operators are defined as follows:

Table 26

[0238] Relational Operators

[0239] The relational operators are defined as follows:

Table 27

[0240] 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 distinct value for that syntax element or variable. The value "na" is considered not equal to any other value.

[0241] [Bitwise Operators]

[0242] The following bitwise operators are defined as follows:

Table 28

[0243] [Assignment Operator]

[0244] Arithmetic operators are defined as follows: [Table 29]

[0245] [Range notation]

[0246] To specify a range of values, use the following notation: [Table 30]

[0247] [Mathematical Functions]

[0248] The following mathematical functions are defined: [Table 31]

[0249] [Order of operations]

[0250] If the order of precedence within an expression is not explicitly indicated in parentheses, the following rules apply: - Higher-priority operations are evaluated before lower-priority operations. - Operations with the same priority are evaluated from left to right.

[0251] The table below shows the order of operations from highest to lowest, with higher ranks indicating higher priority.

[0252] For operators also used in the C programming language, the precedence used herein is the same as that used in the C programming language. [Table 32] The order of precedence of operations is from the highest (top of the table) to the lowest (bottom of the table).

[0253] [Text description of logical operations]

[0254] In this text, descriptions of logical operations in the following form will be described mathematically: [Table 33]

[0255] In this text, each description of "If....Otherwise, if...Otherwise,..." starts with "...as follows" or "...the following applies", and is immediately followed by "If...". The last condition of "If....Otherwise, if...Otherwise,..." is always "Otherwise,...". The descriptions of "If....Otherwise, if...Otherwise,..." arranged alternately can be identified by matching "... as follows" or "... the following applies" with the ending "Otherwise,...".

[0256] In this text, descriptions of logical operations in the following form will be described mathematically: [Table 34]

[0257] In this text, descriptions of logical operations in the following form will be described mathematically: [Table 35]

[0258] While embodiments of the present invention are 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) described herein, as well as other embodiments, may be configured for still image processing or coding, i.e., processing or coding of individual images independent of any preceding or consecutive images, as in video coding. Generally, when image processing coding is limited to a single image 17, only the interprediction units 244 (encoder) and 344 (decoder) may not be available. All other functions (also referred to as tools or techniques) of the video encoder 20 and video decoder 30 may equally be used for still image processing, e.g., residual calculation 204 / 304, transformation 206, quantization 208, inverse quantization 210 / 310, (inverse) transformation 212 / 312, segmentation 262 / 362, intra-prediction 254 / 354, and / or loop filtering 220, 320, as well as entropy coding 270 and entropy decoding 304.

[0259] For example, embodiments of encoder 20 and decoder 30, and the functions described herein with reference to encoder 20 and decoder 30, may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on a computer-readable medium or transmitted as one or more instructions or codes via 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 the movement of a computer program from one location to another in accordance with a communication protocol, for example. Thus, the computer-readable medium may generally correspond to (1) a non-temporary tangible computer-readable storage medium, or (2) a communication medium such as a signal or carrier wave. The data storage medium may be any available medium accessible by one or more computers or one or more processors to obtain instructions, codes, and / or data structures for implementation of the technology described herein. A computer program product may include a computer-readable medium.

[0260] 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 are accessible by a computer. Furthermore, any connection is appropriate to be called a computer-readable medium. 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, and microwave, then coaxial cable, fiber optic cable, twisted-pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of a medium. On the other hand, 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 multipurpose discs (DVDs), floppy disks, and Blu-ray discs. Typically, a "disk" 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.

[0261] 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. Accordingly, the term “processor” as used herein may refer to any of the aforementioned structures or any other structure suitable for implementing the technology 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 technology can be fully implemented in one or more circuits or logic elements.

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

[0263] This disclosure discloses the following 13 aspects:

[0264] The first embodiment provides a coding method performed by a decoding device or an encoding device. The method is The process includes a step to acquire a bitstream, the bitstream containing a transformation unit syntax (for example, a transformation unit syntax element may be coded for an entire block, for multiple subtransformation units obtained by SBT (Interblock Subblock Transformation), or to satisfy a maximum transformation unit size limit), The syntax includes at least two CBF flags for a chroma block (for example, the syntax for a conversion unit corresponds to either a conversion unit or a subconversion unit that includes two chroma CBF flags: tu_cbf_cb and tu_cbf_cb (one flag for each chroma plane)), and the chroma CBF flags specify whether a particular block has residuals in the corresponding color plane. The system further includes a step of deriving the value of the luma CBF flag tu_cbf_luma based on the value of the cu_cbf flag, the values ​​of two chroma CBF flags corresponding to the current conversion unit or sub-conversion unit, the position of the sub-conversion unit within the conversion unit, and any combination of the values ​​of the luma CBF flag and chroma CBF flag corresponding to the previous sub-conversion unit within the current conversion unit.

[0265] A second aspect provides the method of the first aspect, in which the value of the luma CBF flag (e.g., the tu_cbf_luma flag) is derived based on the value of the cu_cbf flag and the values ​​of the two chroma CBF flags corresponding to the current translation unit.

[0266] A third aspect provides the method of the second aspect, wherein the current conversion unit is not divided into subconversion units, the value of the cu_cbf flag is 1, the value of the tu_cbf_cb flag is 0, the value of the tu_cbf_cr flag is 0, and then the value of the tu_cbf_luma flag of the current conversion unit is derived to 1.

[0267] A fourth aspect provides the method of the third aspect, wherein the conversion unit syntax table is signaled according to the following table. [Table 36]

[0268] A fifth aspect provides a method according to the first or second aspect, wherein when the current conversion unit is divided by SBT, the value of the tu_cbf_luma flag of a sub-conversion unit that allows a non-zero CBF flag is derived according to the following conditions: If the value of the -cu_cbf flag is 1, the value of the tu_cbf_cb flag is 0, and the value of the tu_cbf_cr flag is 0, then the value of the tu_cbf_luma flag for the current subconversion unit is derived to 1.

[0269] The sixth aspect provides a method according to any one of the first to fifth aspects, wherein the conversion unit syntax table is signaled according to the following table. [Table 37]

[0270] The seventh aspect provides the method of the first or second aspect, wherein when the current conversion unit is divided by sub-conversion units to satisfy the maximum conversion unit size limit, the value of the tu_cbf_luma flag for the last sub-conversion unit of the conversion unit is derived according to the following conditions: -If the value of the cu_cbf flag is 1, and the values ​​of the tu_cbf_luma, tu_cbf_cb, and tu_cbf_cr flags of all sub-conversion units previously coded in the current conversion unit are 0, and the value of the tu_cbf_cb flag of the current sub-conversion unit is 0, then the value of the tu_cbf_luma flag is derived to 1.

[0271] The eighth aspect provides a method according to any one of the first to seventh aspects, wherein the conversion unit syntax table is signaled according to the following table. [Table 38]

[0272] The ninth aspect provides a method of any one aspect of the first to eighth aspects, wherein the coding unit syntax table and the transformation tree syntax table are signaled according to the following table. [Table 39] [Table 40]

[0273] A tenth aspect provides an encoder (20) comprising a processing circuit for performing the method described in any one of the first to ninth aspects.

[0274] In the eleventh aspect, a decoder (30) is provided that includes a processing circuit for carrying out the method described in any one of the first to ninth aspects.

[0275] A twelfth aspect provides a computer program product including program code for performing the method described in any one of the first to ninth aspects.

[0276] A thirteenth aspect provides a decoder or encoder, One or more processors, A non-temporary computer-readable storage medium coupled to the processor and storing a program for execution by the processor, wherein the program, when executed by the processor, configures the decoder to perform a method according to any one of the first to ninth embodiments, It is equipped with.

[0277] Furthermore, this disclosure includes the following 13 aspects:

[0278] The first embodiment provides a coding method performed by a decoding device or an encoding device. The method is The process includes a step to acquire a bitstream, the bitstream containing a transformation unit syntax (for example, a transformation unit syntax element may be coded for an entire block, for multiple subtransformation units obtained by SBT (Interblock Subblock Transformation), or to satisfy a maximum transformation unit size limit), The syntax includes at least two CBF flags for a chroma block (for example, the syntax for a conversion unit corresponds to either a conversion unit or a subconversion unit that includes two chroma CBF flags: tu_cbf_cb and tu_cbf_cb (one flag for each chroma plane)), and the chroma CBF flags specify whether a particular block has residuals in the corresponding color plane. The system further includes a step of deriving the value of the luma CBF flag tu_cbf_luma based on the value of the cu_cbf flag, the values ​​of two chroma CBF flags corresponding to the current conversion unit or sub-conversion unit, the position of the sub-conversion unit within the conversion unit, and any combination of the values ​​of the luma CBF flag and chroma CBF flag corresponding to the previous sub-conversion unit within the current conversion unit.

[0279] A second aspect provides the method of the first aspect, in which the value of the luma CBF flag (e.g., the tu_cbf_luma flag) is derived based on the value of the cu_cbf flag and the values ​​of the two chroma CBF flags corresponding to the current translation unit.

[0280] A third aspect provides the method of the second aspect, wherein the current conversion unit is not divided into subconversion units, the value of the cu_cbf flag is 1, the value of the tu_cbf_cb flag is 0, the value of the tu_cbf_cr flag is 0, and then the value of the tu_cbf_luma flag of the current conversion unit is derived to 1.

[0281] A fourth aspect provides the method of the third aspect, wherein the conversion unit syntax table is signaled according to the following table. [Table 41]

[0282] A fifth aspect provides a method according to the first or second aspect, wherein when the current conversion unit is divided by SBT, the value of the tu_cbf_luma flag of a sub-conversion unit that allows a non-zero CBF flag is derived according to the following conditions: If the value of the -cu_cbf flag is 1, the value of the tu_cbf_cb flag is 0, and the value of the tu_cbf_cr flag is 0, then the value of the tu_cbf_luma flag for the current subconversion unit is derived to 1.

[0283] The sixth aspect provides a method according to any one of the first to fifth aspects, wherein the conversion unit syntax table is signaled according to the following table. [Table 42]

[0284] The seventh aspect provides the method of the first or second aspect, wherein when the current conversion unit is divided by sub-conversion units to satisfy the maximum conversion unit size limit, the value of the tu_cbf_luma flag for the last sub-conversion unit of the conversion unit is derived according to the following conditions: -If the value of the cu_cbf flag is 1, and the values ​​of the tu_cbf_luma, tu_cbf_cb, and tu_cbf_cr flags of all sub-conversion units previously coded in the current conversion unit are 0, and the value of the tu_cbf_cb flag of the current sub-conversion unit is 0, then the value of the tu_cbf_luma flag is derived to 1.

[0285] The eighth aspect provides a method according to any one of the first to seventh aspects, wherein the conversion unit syntax table is signaled according to the following table. [Table 43]

[0286] The ninth aspect provides a method of any one aspect of the first to eighth aspects, wherein the coding unit syntax table and the transformation tree syntax table are signaled according to the following table. [Table 44] [Table 45]

[0287] A tenth aspect provides an encoder (20) comprising a processing circuit for performing the method described in any one of the first to ninth aspects.

[0288] In the eleventh aspect, a decoder (30) is provided that includes a processing circuit for carrying out the method described in any one of the first to ninth aspects.

[0289] A twelfth aspect provides a computer program product including program code for performing the method described in any one of the first to ninth aspects.

[0290] A thirteenth aspect provides a decoder or encoder, One or more processors, A non-temporary computer-readable storage medium coupled to the processor and storing a program for execution by the processor, wherein the program, when executed by the processor, configures the decoder to perform a method according to any one of the first to ninth embodiments, It is equipped with.

[0291] Furthermore, this disclosure includes the following 13 aspects:

[0292] The first embodiment provides a coding method performed by a decoding device or an encoding device. The method is The process includes a step of acquiring a bitstream, the bitstream containing a transformation unit syntax (for example, the transformation unit syntax elements are coded for the entire block, or encoded for multiple subtransformation units obtained by SBT (Interblock Subblock Transform), or encoded to satisfy the maximum transformation unit size limit), The syntax includes at least two CBF flags for a chroma block (for example, the syntax for a conversion unit corresponds to either a conversion unit or a subconversion unit that includes two chroma CBF flags: tu_cbf_cb and tu_cbf_cb (one flag for each chroma plane)), and the chroma CBF flags specify whether a particular block has residuals in the corresponding color plane. The system further includes a step of deriving the value of the luma CBF flag tu_cbf_luma based on the value of the cu_cbf flag, the values ​​of two chroma CBF flags corresponding to the current conversion unit or sub-conversion unit, the position of the sub-conversion unit within the conversion unit, and any combination of the values ​​of the luma CBF flag and chroma CBF flag corresponding to the previous sub-conversion unit within the current conversion unit.

[0293] A second aspect provides the method of the first aspect, in which the value of the luma CBF flag (e.g., the tu_cbf_luma flag) is derived based on the value of the cu_cbf flag and the values ​​of the two chroma CBF flags corresponding to the current translation unit.

[0294] A third aspect provides the method of the second aspect, wherein if the current conversion unit is not divided into sub-conversion units, the cu_cbf flag is signaled in the bitstream, the value of the cu_cbf flag is equal to 1, the value of the tu_cbf_cb flag is 0, the value of the tu_cbf_cr flag is 0, and then the value of the tu_cbf_luma flag of the current conversion unit is derived to 1.

[0295] A fourth aspect provides the method of the third aspect, wherein the conversion unit syntax table is signaled according to the following table. [Table 46]

[0296] A fifth aspect provides a method according to the third aspect, in which the conversion unit syntax table is signaled according to the following table. [Table 47]

[0297] The sixth aspect provides the method of the first or second aspect, wherein when the current conversion unit is divided by SBT, the value of the tu_cbf_luma flag of a sub-conversion unit that allows a non-zero CBF flag is derived according to the following conditions: -The value of the cu_cbf flag is 1, the value of the tu_cbf_cb flag is 0, the value of the tu_cbf_cr flag for the current subconversion unit is then derived to be 1.

[0298] The seventh aspect provides a method according to any one of the first to sixth aspects, wherein the conversion unit syntax table is signaled according to the following table. [Table 48]

[0299] The eighth aspect provides a method according to any one aspect of the first to sixth aspects, wherein the conversion unit syntax table is signaled according to the following table. [Table 49]

[0300] The ninth aspect provides a method of any one aspect of the first to eighth aspects, wherein the coding unit syntax table and the transformation tree syntax table are signaled according to the following table. [Table 50] [Table 51]

[0301] A tenth aspect provides an encoder (20) comprising a processing circuit for performing the method described in any one of the first to ninth aspects.

[0302] In the eleventh aspect, a decoder (30) is provided that includes a processing circuit for carrying out the method described in any one of the first to ninth aspects.

[0303] A twelfth aspect provides a computer program product including program code for performing the method described in any one of the first to ninth aspects.

[0304] A thirteenth aspect provides a decoder or encoder, One or more processors, A non-temporary computer-readable storage medium coupled to the processor and storing a program for execution by the processor, wherein the program, when executed by the processor, configures the decoder to perform a method according to any one of the first to ninth embodiments, It is equipped with.

[0305] This disclosure further includes the following 14 aspects:

[0306] The first embodiment provides a coding method performed by a decoding device or an encoding device. The method is The process includes a step to acquire a bitstream, the bitstream containing a transformation unit syntax (for example, a transformation unit syntax element may be coded for an entire block, for multiple subtransformation units obtained by SBT (Interblock Subblock Transformation), or to satisfy a maximum transformation unit size limit), The syntax includes at least two CBF flags for a chroma block (for example, the syntax for a conversion unit corresponds to either a conversion unit or a subconversion unit that includes two chroma CBF flags: tu_cbf_cb and tu_cbf_cb (one flag for each chroma plane)), and the chroma CBF flags specify whether a particular block has residuals in the corresponding color plane. The system further includes a step of deriving the value of the luma CBF flag tu_cbf_luma based on the value of the cu_cbf flag, the values ​​of two chroma CBF flags corresponding to the current conversion unit or sub-conversion unit, the position of the sub-conversion unit within the conversion unit, and any combination of the values ​​of the luma CBF flag and chroma CBF flag corresponding to the previous sub-conversion unit within the current conversion unit.

[0307] A second aspect provides the method of the first aspect, in which the value of the luma CBF flag (e.g., the tu_cbf_luma flag) is derived based on the value of the cu_cbf flag and the values ​​of the two chroma CBF flags corresponding to the current translation unit.

[0308] A third aspect provides the method of the second aspect, wherein if the current conversion unit is not divided into sub-conversion units, the cu_cbf flag is signaled in the bitstream, the value of the cu_cbf flag is equal to 1, the value of the tu_cbf_cb flag is 0, the value of the tu_cbf_cr flag is 0, and then the value of the tu_cbf_luma flag of the current conversion unit is derived to 1.

[0309] A fourth aspect provides the method of the third aspect, wherein the conversion unit syntax table is signaled according to the following table. [Table 52]

[0310] A fifth aspect provides a method according to the third aspect, in which the conversion unit syntax table is signaled according to the following table. [Table 53]

[0311] The sixth aspect provides a method according to the first or second aspect, wherein when the current conversion unit is divided by SBT, the value of the tu_cbf_luma flag of a sub-conversion unit that allows a non-zero CBF flag is derived according to the following condition: If the value of the -cu_cbf flag is 1, the value of the tu_cbf_cb flag is 0, and the value of the tu_cbf_cr flag is 0, then the value of the tu_cbf_luma flag for the current subconversion unit is derived to 1.

[0312] The seventh aspect provides a method according to any one of the first to sixth aspects, wherein the conversion unit syntax table is signaled according to the following table. [Table 54]

[0313] The eighth aspect provides the method of the first to sixth aspects, wherein the conversion unit syntax table is signaled according to the following table. [Table 55]

[0314] The ninth aspect provides a method of any one aspect of the first to eighth aspects, wherein the coding unit syntax table and the transformation tree syntax table are signaled according to the following table. [Table 56] [Table 57]

[0315] The tenth aspect is a method of any one aspect of the first to ninth aspects, wherein the value of tu_cbf_luma[x0][y0] does not exist, and the value of tu_cbf_luma[x0][y0] is derived according to the following conditions: [Table 58]

[0316] In the eleventh aspect, an encoder (20) is provided, which includes a processing circuit for carrying out the method described in any one of the first to tenth aspects.

[0317] A twelfth aspect provides a decoder (30) comprising a processing circuit for performing the method described in any one of the first to tenth aspects.

[0318] A thirteenth aspect provides a computer program product that includes program code for performing the method described in any one of the first to tenth aspects.

[0319] A fourteenth aspect provides a decoder or encoder, One or more processors, A non-temporary computer-readable storage medium coupled to the processor and storing a program for execution by the processor, wherein the program, when executed by the processor, configures the decoder to perform a method according to any one of the first to tenth embodiments, It is equipped with. [Other adjacent items] [Item 1] A video coding method performed by a decoding device or encoding device, A step of acquiring a bitstream, wherein the bitstream comprises a conversion unit syntax, A step of obtaining the values ​​of at least two chromaCBF flags (chroma-coded block flags) for a chroma block corresponding to the current conversion unit or the current sub-conversion unit within the current conversion unit, in accordance with the conversion unit syntax, wherein at least one of the two chromaCBF flags specifies whether the corresponding block has residuals in the corresponding color plane. A step of deriving the value of the luma CBF flag based at least on the value of the coding unit CBF flag, the value of the cu_cbf flag, and the values ​​of at least the two chroma CBF flags, A method that includes [a certain feature]. [Item 2] The method according to item 1, wherein the value of the Ruma CBF flag is further derived based on the position of the current sub-conversion unit within the current conversion unit. [Item 3] The aforementioned conversion unit syntax comprises at least two chroma CBF flags, and the step of obtaining the values ​​of at least two chroma CBF flags according to the conversion unit syntax is: The method according to item 1 or 2, further comprising the step of obtaining the values ​​of at least two chroma CBF flags from the conversion unit syntax. [Item 4] The Luma CBF flag is the tu_cbf_luma flag, as described in any one of items 1 to 3. [Item 5] In the aforementioned conversion unit syntax, the syntactic elements of the conversion unit are: Signaled throughout the entire block, or Signaling to multiple sub-transformation units obtained in an inter-block sub-block transformation (SBT), or Signaling is performed to meet the limit of the maximum conversion unit size. The method described in any one of items 1 through 4. [Item 6] The current conversion unit or the current sub-conversion unit includes two chroma CBF flags, with one flag for each chroma plane. The method described in any one of items 1 through 5. [Item 7] The method according to any one of items 1 to 6, wherein, if the current conversion unit is not divided into sub-conversion units, the cu_cbf flag is signaled in the bitstream, the value of the cu_cbf flag is equal to 1, the value of the tu_cbf_cb flag is 0, the value of the tu_cbf_cr flag is 0, and then the value of the tu_cbf_luma flag of the current conversion unit is derived to 1. [Item 8] The conversion unit syntax table corresponding to the aforementioned conversion unit syntax is: [Table 59] The method described in any one of items 1 through 7, which is signaled in accordance with the following: [Item 9] The conversion unit syntax table corresponding to the aforementioned conversion unit syntax is: [Table 60] The method described in any one of items 1 through 7, which is signaled in accordance with the following: [Item 10] If the current conversion unit is divided by the subblock conversion (SBT), the value of the tu_cbf_luma flag of the subconversion unit that allows a non-zero CBF flag is derived according to the following conditions: If the value of the cu_cbf flag is 1, the value of the tu_cbf_cb flag is 0, and the value of the tu_cbf_cr flag is 0, then the value of the tu_cbf_luma flag of the current subconversion unit is derived to be 1. The method described in any one of items 1 through 6. [Item 11] The conversion unit syntax table corresponding to the aforementioned conversion unit syntax is [Table 61] The method described in any one of items 1 through 7 and 10, which is signaled in accordance with the following: [Item 12] The conversion unit syntax table corresponding to the aforementioned conversion unit syntax is [Table 62] The method described in any one of items 1 through 7 and 10, which is signaled in accordance with the following: [Item 13] The conversion tree syntax table corresponding to the aforementioned conversion unit syntax is signaled according to the following table: [Table 63] The coding unit syntax table corresponding to the aforementioned transformation tree syntax table is signaled in the following table: [Table 64] The method described in any one of items 1 through 7 and 10. [Item 14] treeType is equal to SINGLE_TREE, as described in any one of items 8, 9, and 11 through 13. [Item 15] If the Luma CBF flag is the tu_cbf_luma flag and the value of tu_cbf_luma[x0][y0] does not exist, then the value of tu_cbf_luma[x0][y0] is: [Table 65] The method described in any one of items 1 to 14, as derived therefrom. [Item 16] If the Luma CBF flag is the tu_cbf_luma flag and the value of tu_cbf_luma[x0][y0] does not exist, then the value of tu_cbf_luma[x0][y0] is: [Table 66] The method described in any one of items 1 to 14, as derived therefrom. [Item 17] The method according to any one of items 1 to 16, wherein tu_cbf_luma[x0][y0] equal to 1 specifies that the luma transformation block contains one or more transformation coefficient levels that are not equal to 0, array index x0, y0 specifies the position (x0, y0) of the top-left luma sample of the considered transformation block relative to the top-left luma sample of the image, and the transformation coefficient level is an integer quantity representing a value associated with a particular two-dimensional frequency index in the decoding process before scaling for the calculation of the transformation coefficient value. [Item 18] An encoder comprising a processing circuit for performing the method described in any one of items 1 through 17. [Item 19] A decoder comprising a processing circuit for performing the method described in any one of items 1 through 17. [Item 20] A program that causes a computer to perform any of the actions described in item 1 through 17. [Item 21] One or more processors, A non-temporary computer-readable storage medium coupled to the processor and storing a program for execution by the processor, wherein the program, when executed by the processor, constitutes a decoder to perform the method described in any one of items 1 to 17, A decoder or encoder having the following features. [Item 22] An acquisition unit configured to acquire a bitstream, wherein the bitstream includes a conversion unit syntax, and the acquisition unit is configured to acquire the values ​​of at least two chromaCBF flags (chroma-coded block flags) for a chroma block corresponding to the current conversion unit or the current sub-conversion unit within the current conversion unit, in accordance with the conversion unit syntax, wherein at least one of the two chromaCBF flags specifies whether the corresponding block has residuals in the corresponding color plane. A derivation unit configured to derive the value of the luma CBF flag based on at least the values ​​of the coding unit CBF flag, the cu_cbf flag, and the values ​​of the at least two chroma CBF flags. An encoder equipped with the following features. [Item 23] An acquisition unit configured to acquire a bitstream, wherein the bitstream includes a conversion unit syntax, and the acquisition unit is configured to acquire the values ​​of at least two chromaCBF flags (chroma-coded block flags) for a chroma block corresponding to the current conversion unit or the current sub-conversion unit within the current conversion unit, in accordance with the conversion unit syntax, wherein at least one of the two chromaCBF flags specifies whether the corresponding block has residuals in the corresponding color plane. A derivation unit configured to derive the value of the luma CBF flag based on at least the values ​​of the coding unit CBF flag, the cu_cbf flag, and the values ​​of the at least two chroma CBF flags. A decoder equipped with a decoder. [Item 24] The decoder described in item 23, wherein the value of the Ruma CBF flag is further derived based on the position of the current sub-converter within the current converter unit. [Item 25] The aforementioned conversion unit syntax comprises at least two chroma CBF flags, and the step of obtaining the values ​​of at least two chroma CBF flags according to the conversion unit syntax is: The decoder according to item 23 or 24, comprising a step of obtaining the values ​​of at least two chroma CBF flags from the conversion unit syntax. [Item 26] The aforementioned Luma CBF flag is the tu_cbf_luma flag, as described in any one of items 23 to 25 of the decoder. [Item 27] In the aforementioned conversion unit syntax, the syntactic elements of the conversion unit are: Signaled throughout the entire block, or Signaling to multiple sub-transformation units obtained in an inter-block sub-block transformation (SBT), or Signaling is performed to meet the limit of the maximum conversion unit size. A decoder as described in any one of items 23 through 26. [Item 28] The conversion unit or the sub-conversion unit includes two chroma CBF flags, with one flag for each chroma plane. A decoder as described in any one of items 23 through 27. [Item 29] The decoder according to any one of items 23 to 28, wherein the value of the chroma CBF flag is derived based on the value of the cu_cbf flag and the values ​​of the two chroma CBF flags corresponding to the current conversion unit. [Item 30] The decoder according to any one of items 23 to 29, wherein, if the current conversion unit is not divided into sub-conversion units, the cu_cbf flag is signaled in the bitstream, the value of the cu_cbf flag is equal to 1, the value of the tu_cbf_cb flag is 0, the value of the tu_cbf_cr flag is 0, and then the value of the tu_cbf_luma flag of the current conversion unit is derived to 1. [Item 31] The conversion unit syntax table corresponding to the aforementioned conversion unit syntax is [Table 67] A decoder described in any one of items 23 to 30, which is signaled according to the following. [Item 32] The conversion unit syntax table corresponding to the aforementioned conversion unit syntax is [Table 68] A decoder described in any one of items 23 to 30, which is signaled according to the following. [Item 33] If the current conversion unit is divided by the subblock conversion (SBT), the value of the tu_cbf_luma flag of the subconversion unit that allows a non-zero CBF flag is derived according to the following conditions: If the value of the cu_cbf flag is 1, the value of the tu_cbf_cb flag is 0, and the value of the tu_cbf_cr flag is 0, then the value of the tu_cbf_luma flag of the current subconversion unit is derived to be 1. A decoder as described in any one of items 23 through 29. [Item 34] The conversion unit syntax table corresponding to the aforementioned conversion unit syntax is [Table 69] A decoder as described in any one of items 23 to 30 and 33, which is signaled according to the following: [Item 35] The conversion unit syntax table corresponding to the aforementioned conversion unit syntax is [Table 70] A decoder as described in any one of items 23 to 30 and 33, which is signaled according to the following: [Item 36] The conversion tree syntax table corresponding to the aforementioned conversion unit syntax is signaled according to the following table: [Table 71] The coding unit syntax table corresponding to the aforementioned transformation tree syntax table is signaled in the following table: [Table 72] A decoder as described in any one of items 23 to 30 and 33. [Item 37] The treeType is equal to SINGLE_TREE, and the decoder is one of the items in items 31, 32, and 34 through 36. [Item 38] If the Luma CBF flag is the tu_cbf_luma flag and the value of tu_cbf_luma[x0][y0] does not exist, then the value of tu_cbf_luma[x0][y0] is: [Table 73] A decoder as described in any one of items 23 to 37, derived according to the above. [Item 39] If the aforementioned Luma CBF flag is the tu_cbf_luma flag and the value of tu_cbf_luma[x0][y0] does not exist, then the value of tu_cbf_luma[x0][y0] is determined by the following conditions [Table 74] A decoder as described in any one of items 23 to 38, derived according to the above. [Item 40] A decoder according to any one of items 23 to 39, wherein tu_cbf_luma[x0][y0] equal to 1 specifies that the luma transformation block contains one or more transformation coefficient levels that are not equal to 0, array index x0, y0 specifies the position (x0, y0) of the top-left luma sample of the considered transformation block relative to the top-left luma sample of the image, and the transformation coefficient level is an integer quantity representing a value associated with a particular two-dimensional frequency index in the decoding process before scaling for the calculation of the transformation coefficient value.

Claims

1. A step of acquiring the current conversion unit or the current sub-conversion unit within the current conversion unit, wherein the first chroma conversion block and the second chroma conversion block are related to the current conversion unit or the current sub-conversion unit. A step of performing a first determination to determine whether the first chroma transformation block includes at least one transformation coefficient level that is not equal to zero, A step of obtaining a first value of a first flag based on the first result of the first determination, wherein the first flag specifies whether the first chroma transformation block includes at least one transformation coefficient level that is not equal to 0, A step of performing a second determination to determine whether the second chroma transformation block includes at least one transformation coefficient level that is not equal to zero, A step of obtaining a second value of the second flag based on the second result of the second determination, wherein the second flag specifies whether the second chroma transformation block includes at least one transformation coefficient level that is not equal to 0, The steps include signaling the first value of the first flag and the second value of the second flag in the conversion unit syntax, The steps include signaling the aforementioned conversion unit syntax in the conversion tree syntax, The step of obtaining the third value of a third flag that specifies whether or not a transformation tree structure exists, A step of signaling the third value of the third flag and the transformation tree syntax in a coding unit syntax, wherein the first value of the first flag, the second value of the second flag, and the third value of the third flag are used to derive a fourth value of a fourth flag that specifies whether the Luma transformation block includes at least one transformation coefficient level that is not equal to zero, Equipped with, Encoding method.

2. The encoding method according to claim 1, wherein the fourth value of the fourth flag is further derived based on the position of the current sub-conversion unit within the current conversion unit.

3. In the aforementioned conversion unit syntax, the elements of the conversion unit syntax are: Signaled across the entire block, or Signaling is performed for multiple sub-transformation units obtained in the inter-block sub-block transformation (SBT), or Signaling is performed to meet the limit of the maximum conversion unit size. The encoding method according to claim 1.

4. The encoding method according to claim 1, wherein if the first value of the first flag is equal to 1, the first chroma transformation block includes at least one transformation coefficient level that is not equal to 0.

5. The encoding method according to claim 1, wherein if the second value of the second flag is equal to 1, the second chroma transformation block includes at least one transformation coefficient level that is not equal to 0.

6. The encoding method according to claim 1, wherein if the fourth value of the fourth flag is equal to 1, the Luma conversion block includes at least one conversion coefficient level that is not equal to 0.

7. The encoding method according to claim 1, wherein the conversion tree structure exists if the third value of the third flag is equal to 1.

8. It is a device, At least one processor, One or more memories coupled to the at least one processor, storing programming instructions for execution by the at least one processor to cause the device to execute the encoding method according to any one of claims 1 to 7, Equipped with, Device.

9. A decoding device, At least one processor, One or more memories coupled to the at least one processor and storing programming instructions for execution by the at least one processor to be executed by the decoding device, Equipped with, The aforementioned programming instruction Receiving an encoded bitstream having a coding unit syntax, wherein the coding unit syntax has a transformation tree syntax, the transformation tree syntax has a transformation unit syntax, the transformation unit syntax has a first value of a first flag and a second value of a second flag, the first flag specifying whether a first chroma transformation block has at least one transformation coefficient level that is not equal to zero, and the second flag specifying whether a second chroma transformation block has at least one transformation coefficient level that is not equal to zero. The coding unit syntax further has a third value of a third flag that specifies whether or not a transformation tree structure exists, to receive, Based on the first value of the first flag, the second value of the second flag, and the third value of the third flag, a fourth value of the fourth flag is derived that specifies whether the Luma transformation block includes at least one transformation coefficient level that is not equal to zero. including, Decoding device.

10. The decoding apparatus according to claim 9, wherein the fourth value of the fourth flag is further derived based on the position of the current sub-conversion unit within the current conversion unit.

11. In the aforementioned conversion unit syntax, the elements of the conversion unit syntax are: Signaled throughout the entire block, or Signaling to multiple sub-transformation units obtained in an inter-block sub-block transformation (SBT), or Signaling is performed to meet the limit of the maximum conversion unit size. The decoding apparatus according to claim 9.

12. The decoding apparatus according to claim 9, wherein if the first value of the first flag is equal to 1, the first chroma transformation block includes at least one transformation coefficient level that is not equal to 0.

13. The decoding apparatus according to claim 9, wherein if the second value of the second flag is equal to 1, the second chroma transformation block includes at least one transformation coefficient level that is not equal to 0.

14. A non-temporary recording medium for storing an encoded bitstream for a video signal, The encoded bitstream has a coding unit syntax, The coding unit syntax has a transformation tree syntax, the transformation tree syntax has a transformation unit syntax, and the transformation unit syntax has a first value of a first flag and a second value of a second flag, The first flag specifies whether the first chroma transformation block has at least one transformation coefficient level that is not equal to 0, The second flag specifies whether the second chroma transformation block has at least one transformation coefficient level that is not equal to 0, The coding unit syntax further has a third value of a third flag that specifies whether or not a transformation tree structure exists, The first value of the first flag, the second value of the second flag, and the third value of the third flag are used to derive the fourth value of the fourth flag, which specifies whether the Luma transformation block includes at least one transformation coefficient level that is not equal to zero. Non-temporary recording medium.

15. A receiver configured to receive an encoded bitstream for a video signal, wherein the encoded bitstream has a coding unit syntax, the coding unit syntax has a transformation tree syntax, the transformation tree syntax has a transformation unit syntax, the transformation unit syntax has a first value of a first flag and a second value of a second flag, the first flag specifying whether a first chroma transformation block has at least one transformation coefficient level that is not equal to zero, the second flag specifying whether a second chroma transformation block has at least one transformation coefficient level that is not equal to zero, and the coding unit syntax further has a third value of a third flag specifying whether a transformation tree structure exists. A receiver, wherein the first value of the first flag, the second value of the second flag, and the third value of the third flag are used to derive a fourth value of a fourth flag that specifies whether the Luma conversion block includes at least one conversion coefficient level that is not equal to zero. A storage device connected to the receiver and configured to store the encoded bitstream, A transmitter connected to the storage and configured to transmit the encoded bitstream, Equipped with, A bitstream storage device.