Encoders, decoders, and corresponding methods for signaling high-level syntax

A conditional signaling scheme for deblocking control parameters in video coding optimizes the transmission of video data over limited bandwidth networks by selectively including these parameters in the bitstream, enhancing compression efficiency and maintaining picture quality.

JP7846276B2Active Publication Date: 2026-04-14HUAWEI TECH CO LTD
View PDF 3 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
HUAWEI TECH CO LTD
Filing Date
2025-03-17
Publication Date
2026-04-14

Smart Images

  • Figure 0007846276000033
    Figure 0007846276000033
  • Figure 0007846276000034
    Figure 0007846276000034
  • Figure 0007846276000035
    Figure 0007846276000035
Patent Text Reader

Abstract

To provide an encoder, a decoder, and a corresponding method for signaling high level syntax.SOLUTION: A coding method implemented by a decoding device includes steps of obtaining a bitstream for a coding block, obtaining a value of a syntax from the bitstream, and obtaining a value of a deblocking control parameter from the bitstream when the value of the syntax is equal to a predetermined value.SELECTED DRAWING: Figure 8
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The embodiments of this application (disclosure) generally relate to the field of picture processing, and more specifically to syntax signaling. [Background technology]

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

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

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

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

[0006] Specific embodiments are described in the appended independent claims, and other embodiments are shown in the dependent claims.

[0007] A first aspect of the present invention provides a coding method performed by a decoding device, comprising the steps of: obtaining a value of a syntax element from a bitstream, wherein the value of the syntax element relates to a deblocking control parameter for the chroma component of a slice of coded picture; and analyzing the value of the deblocking control parameter for the chroma component of a slice from a bitstream, where the value of the syntax element is equal to a preset value, wherein the preset value is an integer. In the example, the preset value is not equal to 0. In the example, the preset value is 1.

[0008] In one implementation, the method further includes the step of performing a deblocking process on blocks within a slice according to the value of a deblocking control parameter.

[0009] According to embodiments of the present invention, a signaling scheme for deblocking control parameters is disclosed, and the deblocking control parameters for chroma components are conditionally signaled. When the chroma format is (4:0:0 or (4:4:4 and separate color plane coding modes are used)), the deblocking control parameters for chroma components are not signaled in the bitstream. Thus, the efficiency of bitstream utilization and decoding is improved.

[0010] In one implementation, the values ​​of syntax elements are obtained from the picture parameter set PPS.

[0011] In one implementation, the values ​​of the deblocking control parameters are obtained from the PPS.

[0012] In one implementation, the value of the deblocking control parameter is obtained from the picture header PH.

[0013] In one implementation, the value of the deblocking control parameter is obtained from the slice header SH.

[0014] In one implementation, when a video sequence does not contain color components, the value of the syntax element is equal to 0.

[0015] In one implementation, the deblocking control parameter is signaled only when the video sequence has color components.

[0016] In one implementation, the value of the syntax element is used to determine whether the deblocking control parameter for the luma component of the slice is the same as the deblocking control parameter for the chroma component of the slice.

[0017] In one implementation, the method is: The further step includes setting a value for the deblocking control parameter for the chroma component of a slice that is equal to the value of the deblocking control parameter for the luma component of the slice when the value of the syntax element is not equal to a preset value.

[0018] In one implementation, the value of the deblocking control parameter is a pre-set deblocking parameter offset applied to the joint Cb-Cr component of the slice.

[0019] A second aspect of the present invention provides a video decoding device comprising an analysis module configured to obtain a value of a syntax element from a bitstream, wherein the value of the syntax element relates to a deblocking control parameter for the chroma component of a slice of coded picture, the analysis module being configured to obtain a value of the deblocking control parameter for the chroma component of a slice from the bitstream when the value of the syntax element is equal to a preset value, the preset value being an integer value.

[0020] In one implementation, the decoder further includes a receiving module configured to acquire a bitstream.

[0021] In one implementation, the decoder further includes a deblocking module configured to perform a deblocking process on blocks in a slice according to the value of a deblocking control parameter.

[0022] According to embodiments of the present invention, a signaling scheme for deblocking control parameters is disclosed, and the deblocking control parameters for the chroma component are conditionally signaled. When the chroma format is (4:0:0 or (4:4:4 and separate color plane coding modes are used)), the deblocking control parameters for the chroma component are not signaled in the bitstream. Thus, the efficiency of bitstream utilization and decoding is improved.

[0023] In one implementation, the values ​​of syntax elements are obtained from the picture parameter set PPS.

[0024] In one implementation, the values ​​of the deblocking control parameters are obtained from the PPS.

[0025] In one implementation, the value of the deblocking control parameter is obtained from the picture header PH.

[0026] In one implementation, the value of the deblocking control parameter is obtained from the slice header SH.

[0027] In one implementation, when a video sequence does not contain color components, the value of the syntax element is equal to 0.

[0028] In one implementation, the deblocking control parameter is signaled only when the video sequence has color components.

[0029] In one implementation, the value of the syntax element is used to determine whether the deblocking control parameter for the lumen component of the slice is the same as the deblocking control parameter for the chroma component of the slice.

[0030] In one implementation, the analysis module is: When the value of a syntax element is not equal to a preset value, the system is further configured to set the value of the deblocking control parameter for the chroma component of the slice to a value equal to the value of the deblocking control parameter for the luma component of the slice.

[0031] In one implementation, the value of the deblocking control parameter is a preset deblocking parameter offset applied to the congruent Cb-Cr components of the slice.

[0032] A third aspect of the present invention is a coding method performed by an encoding device, A method is provided comprising the steps of: determining the value of a syntax element relating to a slice of coded picture, wherein the value of the syntax element relates to a deblocking control parameter for the chroma component of the slice; and, when it is determined that the value of the syntax element is equal to a preset value, encoding the value of the deblocking control parameter for the chroma component of the coding block into a bitstream, wherein the preset value is an integer value. In the example, the preset value is not equal to 0. In the example, the preset value is 1.

[0033] According to embodiments of the present invention, a signaling scheme for deblocking control parameters is disclosed, and the deblocking control parameters for the chroma component are conditionally signaled. When the chroma format is (4:0:0 or (4:4:4 and separate color plane coding modes are used)), the deblocking control parameters for the chroma component are not signaled in the bitstream. Thus, the efficiency of bitstream utilization and decoding is improved.

[0034] In one implementation, the values ​​of syntax elements are signaled within the PPS.

[0035] In one implementation, the value of the deblocking control parameter is signaled within the PPS.

[0036] In one implementation, the value of the deblocking control parameter is signaled within the picture header PH.

[0037] In one implementation, the value of the deblocking control parameter is signaled within the slice header SH.

[0038] In one implementation, when a video sequence does not contain color components, the value of the syntax element is determined to be equal to 0.

[0039] In one implementation, the deblocking control parameter is signaled only when the video sequence has color components.

[0040] In one implementation, the value of the syntax element is used to determine whether the deblocking control parameter for the lumen component of the slice is the same as the deblocking control parameter for the chroma component of the slice.

[0041] In one implementation, the value of the deblocking control parameter is a preset deblocking parameter offset applied to the congruent Cb-Cr components of the slice.

[0042] A fourth aspect of the present invention provides a video encoding apparatus comprising: a determination module configured to determine the value of a syntax element relating to a slice of encoded picture, wherein the value of the syntax element relates to a deblocking control parameter for the chroma component of the slice; and a processing module configured to encode the value of the deblocking control parameter for the chroma component of the slice into a bitstream when it is determined that the value of the syntax element is equal to a preset value, wherein the preset value is an integer value. In the example, the preset value is not equal to 0. In the example, the preset value is 1.

[0043] According to embodiments of the present invention, a signaling scheme for deblocking control parameters is disclosed, and the deblocking control parameters for the chroma component are conditionally signaled. When the chroma format is (4:0:0 or (4:4:4 and separate color plane coding modes are used)), the deblocking control parameters for the chroma component are not signaled in the bitstream. Thus, the efficiency of bitstream utilization and decoding is improved.

[0044] In one implementation, the values ​​of syntax elements are signaled within the PPS.

[0045] In one implementation, the value of the deblocking control parameter is signaled within the PPS.

[0046] In one implementation, the value of the deblocking control parameter is signaled within the picture header PH.

[0047] In one implementation, the value of the deblocking control parameter is signaled within the slice header SH.

[0048] In one implementation, when a video sequence does not contain color components, the value of the syntax element is determined to be equal to 0.

[0049] In one implementation, the deblocking control parameter is signaled only when the video sequence has color components.

[0050] In one implementation, the value of the syntax element is used to determine whether the deblocking control parameter for the lumen component of the slice is the same as the deblocking control parameter for the chroma component of the slice.

[0051] In one implementation, the value of the deblocking control parameter is a preset deblocking parameter offset applied to the congruent Cb-Cr components of the slice.

[0052] A fifth aspect of the present invention provides a decoder including a processing circuit for performing a method according to either the first aspect or an implementation of the first aspect.

[0053] A sixth aspect of the present invention provides a computer program product that includes program code for performing a method according to any one of the first aspect, the third aspect, and an implementation of the first aspect or the third aspect when executed on a computer or processor.

[0054] A seventh aspect of the present invention provides a decoder 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 decoder is configured such that when the program is executed by the processor, it performs a method according to any one of the first, third, or implementations of the first or third aspects.

[0055] An eighth aspect of the present invention provides a non-temporary computer-readable medium that, when executed by a computer device, causes a computer device to execute a method according to any one of the first or third aspects, and any one of the implementations of the first or third aspect.

[0056] A ninth aspect of the present invention provides an encoder including a processing circuit for performing a method according to either the third aspect or an implementation of the third aspect.

[0057] A tenth aspect of the present invention provides an 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 non-temporary computer-readable storage medium configures a decoder to perform a method according to any one of the third aspects and any one implementation of the third aspect when the program is executed by the processors.

[0058] An eleventh aspect of the present invention provides a non-temporary storage medium containing a bitstream encoded / decoded by any one of the embodiments described above.

[0059] A twelfth aspect of the present invention provides an encoded bitstream of a video signal by including a plurality of syntax elements, the plurality of syntax elements including at least a deblocking control parameter for a chroma component that is conditionally signaled based on the value of the syntax element, the value of the syntax element being related to the deblocking control parameter for the chroma component of a slice of encoded picture.

[0060] A thirteenth aspect of the present invention provides a non-temporary storage medium comprising an encoded bitstream decoded by an image decoding device, the bitstream being generated by dividing a frame of a video or image signal into a plurality of blocks and comprising a plurality of syntax elements, the plurality of syntax elements comprising at least a deblocking control parameter for a chroma component that is conditionally signaled based on the value of the syntax element, the value of the syntax element relating to the deblocking control parameter for the chroma component of a slice of coded picture.

[0061] A method according to a first aspect of the present invention may be carried out by an apparatus according to a second aspect of the present invention. Further features and implementations of the method according to a first aspect of the present invention correspond to features and implementations of the apparatus according to a second aspect of the present invention.

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

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

[0064] [Figure 1A] This is a block diagram showing an example of a video coding system configured to implement an embodiment of the present invention. [Figure 1B]This is a block diagram showing another example of a video coding system configured to implement embodiments of the present invention. [Figure 2] This is a block diagram showing an example of a video encoder configured to implement an embodiment of the present invention. [Figure 3] This is a block diagram illustrating an exemplary structure of a video decoder configured to implement embodiments of the present invention. [Figure 4] This is a block diagram showing examples of encoding or decoding devices. [Figure 5] This is a block diagram showing another example of an encoding or decoding device. [Figure 6] This is a block diagram showing an exemplary structure of a content supply system 3100 that realizes a content distribution service. [Figure 7] This is a block diagram showing the structure of an example terminal device. [Figure 8] This is a flowchart illustrating an embodiment of the method according to the present invention. [Figure 9] This is a block diagram showing a subset of the apparatus according to the present invention. [Modes for carrying out the invention]

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

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

[0067] 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 units for performing the steps of the described method, e.g., functional units (e.g., one unit performing one or more steps, or multiple units each performing one or more of the steps), even if such one or more units are not explicitly described or shown in the figures. Conversely, if a particular apparatus is described based on one or more units, e.g., functional units, a corresponding method may include one step for performing the function of one or more units (e.g., one step performing the function of one or more units, or multiple steps each performing one or more of the functions of multiple units), even if such one or more steps are not explicitly described or shown in the figures. Furthermore, it is understood that the various exemplary embodiments and / or features of the aspects described herein may be combined with each other unless otherwise specified.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[0115] filtering The loop filter unit 220 (or simply "loop filter" 220) is configured to filter the reconstructed block 215 to obtain the filtered block 221, or more generally, to filter the reconstructed sample to obtain the filtered sample value. The loop filter unit is configured, for example, to smooth pixel transitions or otherwise improve the quality of the video. The loop filter unit 220 may include one or more loop filters, such as a deblocking filter, a sample-adaptive offset (SAO) filter, or one or more other filters, such as an adaptive loop filter (ALF), a noise suppression filter (NSF), or any combination thereof. In the example, the loop filter unit 220 may include a deblocking filter, an SAO filter, and an ALF filter. The order of the filtering process may be deblocking filter, SAO, and ALF. In another example, a process called luma mapping with chroma scaling (LMCS) (i.e., an adaptive intra-loop reshaper) is added. This process is performed before deblocking. In yet another example, the deblocking filter process may also be applied to the edges of internal subblocks, such as the edges of affine subblocks, ATMVP subblocks, sub-block transform (SBT) edges, and intra-sub-partition (ISP) edges.

[0116] To effectively remove blocking artifacts that occur with respect to large “blocks,” VVC uses longer tap deblocking filters. Here, the term “block” is used very broadly and may refer to “transform blocks (TB), prediction blocks (PB), or coding unit blocks (CU).” Longer tap filters are applied to both luminous and chroma components. For luminous components, longer tap filters correct up to 7 samples with respect to each line of samples perpendicular to and adjacent to the edge, and are applied to blocks whose size is 32 samples or more in the direction of deblocking; that is, with respect to vertical edges, the width of the block should be 32 samples or more, and with respect to horizontal edges, the height of the block should be 32 samples or more.

[0117] The longer tap filtering of the chroma is applied to the chroma block when the size of both blocks adjacent to a given edge is 8 samples or more, correcting up to 3 samples on either side of the edge. Thus, with respect to vertical edges, the width of both blocks adjacent to the edge should be 8 samples or more, and with respect to horizontal edges, the height of both blocks adjacent to the edge should be 8 samples or more. The loop filter unit 220 is shown in Figure 2 as an in-loop filter, but in other configurations, the loop filter unit 220 may be implemented as a post-loop filter. The filtered block 221 may also be called the filtered reconstructed block 221.

[0118] Embodiments of the video encoder 20 (each a loop filter unit 220) may be configured to output loop filter parameters (such as SAO filter parameters, or ALF filter parameters, or LMCS parameters) which are either raw or encoded by the entropy coding unit 270, so that a decoder 30 may receive the same loop filter parameters or each respective loop filter and apply them for decoding.

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

[0120] Mode Selection (Partitioning & Prediction) The mode selection unit 260 includes a classification unit 262, an inter prediction unit 244, and an intra prediction unit 254, and is configured to receive or obtain the original picture data, for example, the original block 203 (the current block 203 of the current picture 17), and the reconstructed picture data, for example, of the same (current) picture, and / or one or more reconstructed samples or blocks that are filtered and / or not filtered from the decoded picture buffer 230 or other buffers (for example, a line buffer not shown). The reconstructed picture data is used as reference picture data for prediction for obtaining the prediction block 265 or predictor 265, for example, inter prediction or intra prediction.

[0121] The mode selection unit 260 may be configured to determine or select a classification and a prediction mode (for example, an intra or inter prediction mode) for the prediction mode of the current block (without including classification), and generate a corresponding prediction block 265 used for the calculation of the residual block 205 and the reconstruction of the reconstructed block 215.

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

[0123] In other words, the partitioning unit 262 may be configured to partition the pictures of the video sequence into a sequence of coding tree units (CTUs), the CTUs 203 may be further partitioned into smaller block partitions or subblocks (forming blocks again) using, for example, quadtree partitioning (QT), binary tree partitioning (BT), or ternary tree partitioning (TT), or any combination thereof, iteratively, the partitioning unit 262 may be configured to perform predictions with respect to each of the block partitions or subblocks, the mode selection includes selecting the tree structure of the partitioned block 203, and the prediction mode is applied to each of the block partitions or subblocks.

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

[0125] classification The partitioning unit 262 may be configured to partition the pictures of a video sequence into a sequence of coding tree units (CTUs), which may partition (or divide) the coding tree units (CTUs) 203 into smaller sections, for example, smaller blocks of square or rectangular size. For a picture with three sample sequences, the CTU consists of an N×N block of luma samples and two corresponding blocks of chroma samples. The maximum allowable size of the luma block in a CTU is specified as 128×128 in the Multipurpose Video Coding (VVC) under development, but may be specified as a larger value than 128×128 in the future, for example, 256×256. The CTUs of a picture may be clustered / grouped as slice / tile groups, tiles, or bricks. A tile encompasses a rectangular area of ​​a picture, and a tile may be divided into one or more bricks. A brick consists of several rows of CTUs within a tile. A tile that is not divided into multiple bricks may be called a brick. However, a brick is a pure subset of a tile and is not called a tile. There are two modes of tile groups supported in VVC: raster scan slice / tile group mode and rectangular slice mode. In raster scan tile group mode, a slice / tile group contains a sequence of tiles from the raster scan of the tiles of a picture. In rectangular slice mode, a slice contains several bricks of a picture that collectively form a rectangular area of ​​the picture. The bricks within a rectangular slice are in the order of the raster scan of the bricks in the slice. These smaller blocks (which may also be called subblocks) may be further divided into even smaller sections.This is also called tree partitioning or hierarchical tree partitioning. For example, the root block at root tree level 0 (hierarchy level 0, depth 0) may be recursively partitioned into, for example, two or more blocks at the next lowest tree level, for example, nodes at tree level 1 (hierarchy level 1, depth 1), and these blocks may be further partitioned into, for example, two or more blocks at the next lowest level, for example, tree level 2 (hierarchy level 2, depth 2), and so on until a termination criterion is met, for example, the maximum tree depth or the minimum block size is reached and partitioning ends. Blocks that are not further partitioned are also called leaf blocks or leaf nodes. A tree that uses partitioning into two sections is called a binary tree (BT), a tree that uses partitioning into three sections is called a ternary tree (TT), and a tree that uses partitioning into four sections is called a quadary tree (QT).

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

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

[0128] For example, in an embodiment of the latest video coding standard currently under development called Multipurpose Video Coding (VVC), a nested multitype tree of combined quadtrees using, for example, bipartite and tripartite segmentation structures is used to partition coding tree units. In the coding tree structure within a coding tree unit, the CU can have either a square or rectangular shape. For example, a coding tree unit (CTU) is first partitioned by a quadtree. Then, the leaf nodes of the quadtree can be further partitioned by a multitype tree structure. There are four partition types in the multitype tree structure: vertical bipartite (SPLIT_BT_VER), horizontal bipartite (SPLIT_BT_HOR), vertical tripartite (SPLIT_TT_VER), and horizontal tripartite (SPLIT_TT_HOR). The leaf nodes of the multitype tree are called coding units (CUs), and this segmentation is used for prediction and transformation processing without any further partitioning, as long as the CU is not too long with respect to the maximum transform length. This means that, in most cases, the CU, PU, ​​and TU have the same block size within a quadtree with a nested multi-type tree coding block structure. Exceptions occur when the maximum supported transformation length is smaller than the width or height of the CU's color components. VVC develops a unique signaling mechanism for partitioning information within a quadtree with a nested multi-type tree coding tree structure. In the signaling mechanism, the coding tree unit (CTU) is treated as the root of the quadtree and is initially partitioned by the quadtree structure. Each leaf node of the quadtree (when large enough to allow it) is further partitioned by the multi-type tree structure.In a multi-type tree structure, a first flag (mtt_split_cu_flag) is signaled to indicate whether a node is further subdivided, and if so, a second flag (mtt_split_cu_vertical_flag) is signaled to indicate the subdivision direction, and then a third flag (mtt_split_cu_binary_flag) is signaled to indicate whether the subdivision is bipartite or tripartite. Based on the values ​​of mtt_split_cu_vertical_flag and mtt_split_cu_binary_flag, the CU's multi-type tree subdivision mode (MttSplitMode) can be derived by the decoder based on a predefined rule or table. Note that for specific designs, such as the 64x64 lumar block and 32x32 chroma pipeline designs of the VVC hardware decoder, TT subdivision is prohibited when either the width or height of the lumar coding block is greater than 64, as shown in Figure 6. TT partitioning is also prohibited if either the width or height of the chromacoding block is greater than 32. The pipeline design divides the picture into virtual pipeline data units (VPDUs), which are defined as non-overlapping units within the picture. In hardware decoders, sequential VPDUs are processed simultaneously by multiple pipeline stages. The size of the VPDU is roughly proportional to the buffer size of most pipeline stages, and therefore it is important to keep the VPDU size small. In most hardware decoders, the VPDU size can be set to the maximum translation block (TB) size. However, in VVCs, ternary (TT) and binary (BT) partitioning can lead to an increase in VPDU size.

[0129] Furthermore, when part of a tree node block crosses the lower or right picture boundary, the tree node block is forced to split until all samples of any coded CU are within the picture boundary.

[0130] For example, the Intra Subpartitioning (ISP) tool might divide Luma's predicted intra-block into two or four subpartitions vertically or horizontally, depending on the block size.

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

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

[0133] Intra Prediction A set of intra-prediction modes may include, for example, 35 different intra-prediction modes defined in HEVC, such as DC (or average) mode and non-directional modes such as planar mode, or directional modes, or for example, 67 different intra-prediction modes defined for VVC, such as DC (or average) mode and non-directional modes such as planar mode, or directional modes. As an example, some ordinary angular intra-prediction modes are adaptively replaced by wide-angle intra-prediction modes for non-square blocks, as defined in VVC, for example. As another example, to avoid partitioning for DC prediction, only the long side is used to calculate the average with respect to non-square blocks. Also, the results of intra-prediction in planar mode may be further modified by the position-dependent intra-prediction combination (PDPC) method.

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

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

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

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

[0138] For example, in an extended merge prediction, the merge candidate list for such a mode is constructed by including, in order, the following five types of candidates: spatial MVP from spatially neighboring CUs, temporal MVP from CUs in the same location, history-based MVP from the FIFO table, average MVP of the pair, and zero MV. Decoder-side motion vector refinement (DMVR) based on bidirectional matching may also be applied to improve the accuracy of the MV in the merge mode. Merge mode with MVD (MMVD) is derived from the merge mode using the difference in motion vectors. The MMVD flag is signaled immediately after the skip flag and merge flag are sent to specify whether the MMVD mode is used for the CU. Adaptive motion vector resolution (AMVR) schemes at the CU level may also be applied. AMVR allows the MVD of a CU to be coded with different accuracies. Depending on the prediction mode for the current CU, the MVD of the current CU may be adaptively selected. When a CU is coded in merge mode, the combined inter / intra prediction (CIIP) mode may be applied to the current CU. A weighted average of the inter and intra prediction signals is performed to obtain the CIIP prediction. In affine motion compensation prediction, the affine motion field of a block is described by motion information of two control points (4 parameters) or three control point motion vectors (6 parameters). Subblock-based temporal motion vector prediction (SbTMVP) is similar to HEVC's temporal motion vector prediction (TMVP), but predicts the motion vector of the subblock within the current CU.Bidirectional Optical Flow (BDOF), formerly known as BIO, is a simpler version requiring significantly fewer calculations, particularly in terms of the number of multiplications and the size of the multiplier. Regarding the triangular partitioning mode, in such a mode, the CU is evenly divided into two triangular partitions using either diagonal or opposite-angle partitioning. Furthermore, the bi-prediction mode extends from simple averaging to allow for a weighted average of two prediction signals.

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

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

[0141] The motion compensation unit is configured to obtain, for example receive, an inter prediction parameter and perform an inter prediction based on or using the inter prediction parameter to obtain an inter prediction block 265. The motion compensation performed by the motion compensation unit may include fetching or generating a prediction block based on a motion / block vector determined by motion estimation that perhaps performs interpolation with sub-pixel accuracy. Interpolation filtering may generate additional pixel samples from known pixel samples and thus potentially increase the number of candidate prediction blocks that may be used to code a picture block. When receiving a motion vector for a PU of a current picture block, the motion compensation unit may find a prediction block pointed to by the motion vector in one of the reference picture lists.

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

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

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

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

[0146] In the example in Figure 3, the decoder 30 includes 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 picture buffer (DBP) 330, a mode application unit 360, an interpretation unit 344, and an intraprediction unit 354. The interpretation unit 344 may be a motion compensation unit or may include a motion compensation unit. In some examples, the video decoder 30 may perform a decoding path that is generally the reverse of the encoding path described in relation to the video encoder 100 in Figure 2.

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

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

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

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

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

[0152] filtering The loop filter unit 320 (either within or after the coding loop) is configured to filter the reconstructed block 315 to smooth pixel transitions or otherwise improve video quality, for example, to obtain the filtered block 321. The loop filter unit 320 may include one or more loop filters, such as a deblocking filter, a sample-adaptive offset (SAO) filter, or one or more other filters, such as an adaptive loop filter (ALF), a noise suppression filter (NSF), or any combination thereof. In the example, the loop filter unit 220 may include a deblocking filter, an SAO filter, and an ALF filter. The order of the filtering process may be deblocking filter, SAO, and ALF. In another example, a process called lumamapping with chroma scaling (LMCS) (i.e., an adaptive in-loop reshaper) is added. This process is performed before deblocking. In another example, the deblocking filter process may also be applied to the edges of internal lower blocks, such as the edges of affine lower blocks, ATMVP lower blocks, lower block transform (SBT) edges, and intra-sub-partition (ISP) edges. The loop filter unit 320 is shown in Figure 3 as an in-loop filter, but in other configurations, the loop filter unit 320 may be implemented as a post-loop filter.

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

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

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

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

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

[0158] Embodiments of the video decoder 30 shown in Figure 3 may be configured to partition and / or decode a picture by using slices (also called video slices), the picture may be partitioned into one or more (generally non-overlapping) slices or decoded using one or more (generally non-overlapping) slices, each slice may contain one or more blocks (e.g., CTUs) or one or more groups of blocks (e.g., tiles (H.265 / HEVC and VVC) or bricks (VVC)).

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

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

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

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

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

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

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

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

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

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

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

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

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

[0172] Regarding the deblocking filter process disclosed in HEVC, two high-level control parameters, beta_offset_div2 and tc_offset_div2, were introduced to control the intensity of deblocking. These parameters can be transmitted at the Picture Parameter Set (PPS) level or overridden at the slice header level.

[0173] In this example, separate deblocking filter control parameters were introduced for the Cb and Cr components to provide greater deblocking flexibility. These deblocking control parameters can be signaled within the PPS or picture header (PH) or slice header (SH).

[0174] The syntax for the deblocking control parameters is as follows:

[0175] [Table 1A] [Table 1B]

[0176] [Table 2]

[0177] [Table 3]

[0178] The semantics of the deblocking control syntax element are as follows:

[0179] A pps_chroma_tool_offsets_present_flag equal to 1 indicates that syntax elements related to chroma tool offsets are present within the PPS RBSP syntax structure.

[0180] A value of 0 for pps_chroma_tool_offsets_present_flag indicates that no syntax elements related to chroma tool offsets exist within the PPS RBSP syntax structure. When ChromaArrayType is equal to 0, the value of pps_chroma_tool_offsets_present_flag is equal to 0.

[0181] pps_beta_offset_div2 and pps_tc_offset_div2 specify the default deblocking parameter offsets for β and tC (divided by 2) applied to the luma components of a slice referencing a PPS, unless the default deblocking parameter offsets are overridden by deblocking parameter offsets present in the picture header or slice header of the slice referencing the PPS. The values ​​of both pps_beta_offset_div2 and pps_tc_offset_div2 are in the range of -12 to 12, including -12 and 12. If they are not present, the values ​​of both pps_beta_offset_div2 and pps_tc_offset_div2 are presumed to be equal to 0.

[0182] pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2 specify the default deblocking parameter offsets for β and tC (divided by 2) applied to the Cb component of a slice referencing a PPS, unless the default deblocking parameter offsets are overridden by deblocking parameter offsets present in the picture header or slice header of the slice referencing the PPS. The values ​​of both pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2 are in the range of -12 to 12, including -12 and 12. If they are not present, the values ​​of both pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2 are presumed to be equal to 0.

[0183] pps_cr_beta_offset_div2 and pps_cr_tc_offset_div2 specify the default deblocking parameter offsets for the Cr component of a slice referencing a PPS (divided by 2) β and tC, unless the default deblocking parameter offsets are overridden by deblocking parameter offsets present in the picture header or slice header of the slice referencing the PPS. The values ​​of both pps_cr_beta_offset_div2 and pps_cr_tc_offset_div2 are in the range of -12 to 12, including -12 and 12. If they are not present, the values ​​of both pps_cr_beta_offset_div2 and pps_cr_tc_offset_div2 are presumed to be equal to 0.

[0184] ph_beta_offset_div2 and ph_tc_offset_div2 specify the deblocking parameter offsets (divided by 2) for β and tC applied to the luma component of the slice associated with PH. The values ​​of both ph_beta_offset_div2 and ph_tc_offset_div2 are in the range of -12 to 12, including -12 and 12. If they are not present, the values ​​of ph_beta_offset_div2 and ph_tc_offset_div2 are presumed to be equal to pps_beta_offset_div2 and pps_tc_offset_div2, respectively.

[0185] ph_cb_beta_offset_div2 and ph_cb_tc_offset_div2 specify the deblocking parameter offsets for β and tC (divided by 2) applied to the Cb component of the slice associated with PH. The values ​​of both ph_cb_beta_offset_div2 and ph_cb_tc_offset_div2 are within the range of -12 to 12, including -12 and 12. If they are not present, the values ​​of ph_cb_beta_offset_div2 and ph_cb_tc_offset_div2 are presumed to be equal to pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2, respectively.

[0186] ph_cr_beta_offset_div2 and ph_cr_tc_offset_div2 specify the deblocking parameter offsets (divided by 2) for β and tC applied to the Cr component of the slice associated with PH. The values ​​of both ph_cr_beta_offset_div2 and ph_cr_tc_offset_div2 are in the range of -12 to 12, including -12 and 12. If they are not present, the values ​​of ph_cr_beta_offset_div2 and ph_cr_tc_offset_div2 are presumed to be equal to pps_cr_beta_offset_div2 and pps_cr_tc_offset_div2, respectively.

[0187] slice_beta_offset_div2 and slice_tc_offset_div2 specify the deblocking parameter offsets for β and tC (divided by 2) that are applied to the Luma components of the current slice. The values ​​of slice_beta_offset_div2 and slice_tc_offset_div2 are both in the range of -12 to 12, including -12 and 12. If they are not present, the values ​​of slice_beta_offset_div2 and slice_tc_offset_div2 are inferred to be equal to ph_beta_offset_div2 and ph_tc_offset_div2, respectively.

[0188] slice_cb_beta_offset_div2 and slice_cb_tc_offset_div2 specify the deblocking parameter offsets for β and tC (divided by 2) applied to the Cb component of the current slice. The values ​​of slice_cb_beta_offset_div2 and slice_cb_tc_offset_div2 are both in the range of -12 to 12, including -12 and 12. If they are not present, the values ​​of slice_cb_beta_offset_div2 and slice_cb_tc_offset_div2 are presumed to be equal to ph_cb_beta_offset_div2 and ph_cb_tc_offset_div2, respectively.

[0189] slice_cb_beta_offset_div2 and slice_cb_tc_offset_div2 specify the deblocking parameter offsets for β and tC (divided by 2) applied to the Cr component of the current slice. The values ​​of slice_cr_beta_offset_div2 and slice_cr_tc_offset_div2 are both in the range of -12 to 12, including -12 and 12. If they are not present, the values ​​of slice_cr_beta_offset_div2 and slice_cr_tc_offset_div2 are presumed to be equal to ph_cr_beta_offset_div2 and ph_cr_tc_offset_div2, respectively.

[0190] Multipurpose video coding (VVC) uses a tool called Joint Chroma residual coding (JCCR), which is signaled in the bitstream using the syntax "tu_joint_cbcr_residual_flag". This tool specifies whether residual samples for both chroma components Cb and Cr are coded as a single transformation block. A value of "tu_joint_cbcr_residual_flag" equal to 1 specifies that the transformation unit syntax includes transformation coefficient levels for a single transformation block from which residual samples for both Cb and Cr are derived. The JCCR tool takes advantage of the fact that residuals for both Cb and Cr appear to be roughly inversely correlated with each other.

[0191] Depending on tu_joint_cbcr_residual_flag, tu_cbf_cb, and tu_cbf_cr, the variable TuCResMode is derived as follows, where tu_cbf_cb specifies the coded block flag for the Cb component, and tu_cbf_cr is the coded block flag for the Cr component. Furthermore, TuCResMode indicates the JCCR mode. - If tu_joint_cbcr_residual_flag is equal to 0, the variable TuCResMode is set to equal to 0. - Instead, if tu_cbf_cb is equal to 1 and tu_cbf_cr is equal to 0, the variable TuCResMode is set to be equal to 1. - Instead, if tu_cbf_cb is equal to 1, the variable TuCResMode is set to be equal to 2. - Otherwise, the variable TuCResMode is set to be equal to 3.

[0192] The relationship between the "reconstruction of residuals for Cb and Cr" based on the variables tu_cbf_cb and tu_cbf_cr and the variable TuCResMode is shown in the table below.

[0193] [Table 4]

[0194] The variable CSgin is a sign value (+1 or -1), which is signaled within the slice header.

[0195] resJointC[x][y] is the actual transmitted residual in the bitstream.

[0196] resCb[x][y] shows the derived residual sample of the chromatic component Cb.

[0197] resCr[x][y] shows the derived residual sample of the chromatic component Cr.

[0198] Furthermore, VVC 6.0 may use separate chroma QP mapping tables for each of the chroma components Cb and Cr, and another mapping table for the joint Cb-Cr residual. When the value of the syntax element "same_qp_table_for_chroma" is equal to 1, it specifies that only one chroma QP table is signaled and that this table applies to Cb, Cr, and the joint Cb-Cr residual. When the value of "same_qp_table_for_chroma" is equal to 0, it indicates that three chroma QP mapping tables are signaled within the SPS.

[0199] The syntax elements num_points_in_qp_table_minus1[i], delta_qp_in_val_minus1[i][j], and delta_qp_out_val[i][j] are further used to derive the chroma QP mapping table. The semantics of these syntax elements and the procedure for deriving the chroma QP mapping table are shown below.

[0200] num_points_in_qp_table_minus1[i] plus 1 specifies the number of points used to describe the i-th chroma QP mapping table. The values ​​of num_points_in_qp_table_minus1[i] are 0 and 63 + QpBdOffset C Includes 0 to 63 + QpBdOffset C It is within the range up to [value]. If num_points_in_qp_table_minus1

[0000] does not exist in the bitstream, the value of num_points_in_qp_table_minus1

[0000] is presumed to be equal to 0.

[0201] delta_qp_in_val_minus1[i][j] specifies the delta value used to derive the input coordinates of the j-th pivot point in the i-th chroma QP mapping table. When delta_qp_in_val_minus1

[0000] [j] does not exist in the bitstream, the value of delta_qp_in_val_minus1

[0000] [j] is presumed to be equal to 0.

[0202] delta_qp_out_val[i][j] specifies the delta value used to derive the output coordinates of the jth pivot point in the i-th chroma QP mapping table. When delta_qp_out_val

[0000] [j] does not exist in the bitstream, the value of delta_qp_out_val

[0000] [j] is presumed to be equal to 0.

[0203] The i-th chroma QP mapping table ChromaQpTable[i] for i = 0..same_qp_table_for_chroma ? 0 : 2 is derived as follows: qpInVal[ i ]

[0000] = -QpBdOffset C + delta_qp_in_val_minus1[ i ]

[0000] qpOutVal[ i ]

[0000] = -QpBdOffset C + delta_qp_out_val[ i ]

[0000] for( j = 1; j <= num_points_in_qp_table_minus1[ i ]; j++ ) { qpInVal[ i ][ j ] = qpInVal[ i ][ j - 1 ] + delta_qp_in_val_minus1[ i ][ j ]+1 qpOutVal[ i ][ j ] = qpOutVal[ i ][ j - 1 ] + delta_qp_out_val[ i ][ j ] } ChromaQpTable[ i ][ qpInVal[ i ][0] ] = qpOutVal[ i ][0] for( k = qpInVal[ i ][0] - 1; k >= -QpBdOffset C ; k-- ) ChromaQpTable[ i ][ k ] = Clip3( -QpBdOffset C , 63, ChromaQpTable[ i ][ k + 1 ] - 1 ) (7-31) for( j = 0; j < num_points_in_qp_table_minus1[ i ]; j++ ) { sh = ( delta_qp_in_val_minus1[ i ][j + 1 ] + 2 ) >> 1 for( k = qpInVal[ i ][ j ] + 1, m = 1; k <= qpInval[ i ][ j + 1 ]; k++, m++) ChromaQpTable[ i ][ k ] = ChromaQpTable[ i ][ qpInVal[ i ][ j ] ] + ( delta_qp_out_val[ i ][j + 1] * m + sh ) / ( delta_qp_in_val_minus1[ i ][j + 1] + 1 ) } for( k = qpInVal[ i ][ num_points_in_qp_table_minus1[ i ] ] +  1; k <= 63; k++ ) ChromaQpTable[ i ][ k ] = Clip3( -QpBdOffset C , 63, ChromaQpTable[ i ][ k - 1 ] + 1 )

[0204] When same_qp_table_for_chroma is equal to 1, k = -QpBdOffset CFor k from 0 to 63, ChromaQpTable

[0001] [k] and ChromaQpTable

[0002] [k] are set to be equal to ChromaQpTable

[0000] [k].

[0205] For i = 0 to same_qp_table_for_chroma? 0 : 2 and j = 0 to num_points_in_qp_table_minus1[i], the values of qpInVal[i][j] and qpOutVal[i][j] are -QpBdOffset C and including 63 up to -QpBdOffset C from 63 within the range is a requirement for bitstream conformance of the bitstream.

[0206] The ChormaQPmapping table takes the luma QP value (QP i ) and the color component value (cIdx) as inputs, and it should be noted that it can also be expressed using a simple formula that outputs the corresponding chroma QP value (QP c ). The formula may depict a linear relationship between the luma QP and the chroma QP. For example, the formula can be as follows. QP c = QP i - x. Here, x is a constant that depends on the color component value (cIdx), and x can take different values for different color component indices including the common Cb - Cr components.

[0207] 8.8.3 Deblocking Filter Process 8.8.3.1 Overview The input to this process is the reconstructed picture before deblocking, that is, the array recPicture L , and when ChromaArrayType is not equal to 0, the arrays recPicture Cb and recPicture Cr .

[0208] The output of this process is the corrected and reconstructed picture after deblocking, i.e., the sequence recPicture. L Furthermore, when ChromaArrayType is not equal to 0, the array recPicture Cb and recPicture Cr That is the case.

[0209] The vertical edges within the picture are filtered first. Then, the horizontal edges within the picture are filtered, using the sample corrected by the vertical edge filtering process as input. The vertical and horizontal edges within the CTB of each CTU are processed separately on a coding unit basis. The vertical edges of the coding blocks within a coding unit are filtered starting from the left edge of the coding block and proceeding towards the right edge of the coding block in their geometrical order. The horizontal edges of the coding blocks within a coding unit are filtered starting from the top edge of the coding block and proceeding towards the bottom edge of the coding block in their geometrical order. Note - In this specification, the filtering process is defined on a picture-by-picture basis; however, the filtering process can be performed on a coding unit basis while obtaining equivalent results, provided that the decoder appropriately considers the order of processing dependencies to produce the same output value.

[0210] The deblocking filter process is applied to all coding subblock edges and transform block edges of the picture, except for the following types of edges. - Edge at the boundary of the picture - Edges that match the boundaries of subpictures that have a subpicture index subpicIdx and whose loop_filter_across_subpic_enabled_flag[ subpicIdx ] is equal to 0. - When VirtualBoundariesPresentFlag is equal to 1, edges that match the virtual boundary of the picture. - When loop_filter_across_tiles_enabled_flag is equal to 0, edges that match the tile boundaries - When loop_filter_across_slices_enabled_flag is equal to 0, edges that match the slice boundaries - Edges that coincide with the top or left boundary of a slice where slice_deblocking_filter_disabled_flag is equal to 1. - Edges in a slice where slice_deblocking_filter_disabled_flag is equal to 1 - Edges that do not correspond to the boundaries of the 4x4 sample grid of Luma components - Edges that do not correspond to the boundaries of the 8x8 sample grid of chroma components - Edges within a luma component where both sides of the edge have intra_bdpcm_luma_flag equal to 1. - Edges within a chroma component where both sides of the edge have an intra_bdpcm_chroma_flag equal to 1. - Edges of chroma lower blocks that are not edges of the associated transformation unit

[0211] The type of edge, whether vertical or horizontal, is represented by the variable edgeType, as defined in Table 42.

[0212] [Table 5]

[0213] When the slice_deblocking_filter_disabled_flag of the current slice is equal to 0, the following applies: - The variable treeType is set to be equal to DUAL_TREE_LUMA. - The variable treeType contains the reconstructed picture before deblocking, i.e., the array recPicture. L The input is the variable edgeType, which is set to be equal to EDGE_VER, and the array recPicture, which is the corrected and reconstructed picture after deblocking. L The vertical edges are filtered by calling the unidirectional deblocking filter process specified in Section 8.8.3.2, with the output being [output value]. - The variable treeType contains the modified and reconstructed picture after deblocking, i.e., the array recPicture. L The input is the variable edgeType, which is set to be equal to EDGE_HOR, and the array recPicture, which is the corrected and reconstructed picture after deblocking. L Horizontal edges are filtered by calling the unidirectional deblocking filter process specified in Section 8.8.3.2, with the output being [output value]. - When ChromaArrayType is not equal to 0, the following applies: - The variable treeType is set to be equal to DUAL_TREE_CHROMA. - The variable treeType contains the reconstructed picture before deblocking, i.e., the array recPicture. Cb and the sequence recPicture Cr The input is the variable edgeType, which is set to be equal to EDGE_VER, and the modified and reconstructed picture after deblocking, i.e., the array recPicture. Cb and recPicture Cr The vertical edges are filtered by calling the unidirectional deblocking filter process specified in Section 8.8.3.2, with the output being [output value]. - The variable treeType contains the modified and reconstructed picture after deblocking, i.e., the array recPicture. Cb and recPicture CrThe input is the variable edgeType, which is set to be equal to EDGE_HOR, and the modified and reconstructed picture after deblocking, i.e., the array recPicture. Cb and recPicture Cr Horizontal edges are filtered by calling the unidirectional deblocking filter process specified in Section 8.8.3.2, with the output being [output value].

[0214] 8.8.3.2 Deblocking filter process for one-way operation The inputs to this process are as follows: - The `treeType` variable specifies whether the luma component (DUAL_TREE_LUMA) or the chroma component (DUAL_TREE_CHROMA) is currently being processed. - When treeType is equal to DUAL_TREE_LUMA, the reconstructed picture before deblocking, i.e., the array recPicture L - When ChromaArrayType is not equal to 0 and treeType is equal to DUAL_TREE_CHROMA, the array recPicture Cb and recPicture Cr - The `edgeType` variable specifies whether vertical (EDGE_VER) edges or horizontal (EDGE_HOR) edges are filtered.

[0215] The output of this process is the corrected and reconstructed picture after deblocking, i.e., - When treeType is equal to DUAL_TREE_LUMA, the array recPicture L - When ChromaArrayType is not equal to 0 and treeType is equal to DUAL_TREE_CHROMA, the array recPicture Cb and recPicture Cr

[0216] The variables firstCompIdx and lastCompIdx are derived as follows: firstCompIdx = ( treeType == DUAL_TREE_CHROMA ) ? 1 : 0 (1244) lastCompIdx = ( treeType == DUAL_TREE_LUMA || ChromaArrayType == 0 ) ? 0 : 2 (1245)

[0217] With respect to each coding unit and each coding block for each color component of the coding unit, indicated by the color component index cIdx in the range from firstCompIdx to lastCompIdx, including firstCompIdx and lastCompIdx, the width nCbW of the coding block, the height nCbH of the coding block, and the position of the top-left sample of the coding block (xCb, yCb) are as follows: when cIdx is not equal to 0, or when cIdx is not equal to 0, edgeType is equal to EDGE_VER, and xCb % 8 is equal to 0, or when cIdx is not equal to 0, edgeType is equal to EDGE_HOR, and yCb % 8 is equal to 0, the edges are filtered by the following ordered steps:

[0218] The variable filterEdgeFlag is derived as follows: - If edgeType is equal to EDGE_VER and one or more of the following conditions are true, filterEdgeFlag is set to equal to 0. - The left boundary of the current coding block is the left boundary of the picture. - The left boundary of the current coding block coincides with the left boundary of the current subpicture, and loop_filter_across_subpic_enabled_flag[CurrSubpicIdx] or loop_filter_across_subpic_enabled_flag[subpicIdx] is equal to 0, where subpicIdx is the subpicture index of the subpicture whose left boundary of the current coding block coincides with its right subpicture boundary. - The left boundary of the current coding block is the left boundary of the tile, and loop_filter_across_tiles_enabled_flag is equal to 0. - The left boundary of the current coding block is the left boundary of the slice, and loop_filter_across_slices_enabled_flag is equal to 0. - The left boundary of the current coding block is one of the picture's vertical virtual boundaries, and VirtualBoundariesPresentFlag is equal to 1. - Instead, if edgeType is equal to EDGE_HOR and one or more of the following conditions are true, the variable filterEdgeFlag is set to equal to 0. - The boundary above the current Luma coding block is the boundary above the picture. - The upper boundary of the current coding block coincides with the upper boundary of the current subpicture, and loop_filter_across_subpic_enabled_flag[CurrSubpicIdx] or loop_filter_across_subpic_enabled_flag[subpicIdx] is equal to 0, where subpicIdx is the subpicture index of the subpicture whose upper boundary coincides with the lower subpicture boundary of the current coding block. - The boundary above the current coding block is the boundary above the tile, and loop_filter_across_tiles_enabled_flag is equal to 0. - The boundary above the current coding block is the boundary above the slice, and loop_filter_across_slices_enabled_flag is equal to 0. - The boundary above the current coding block is one of the picture's horizontal virtual boundaries, and VirtualBoundariesPresentFlag is equal to 1. - Otherwise, filterEdgeFlag is set to be equal to 1.

[0219] All elements of the two-dimensional array edgeFlags, maxFilterLengthQs, and maxFilterlengthPs of the form (nCbW)x(nCbH) are initialized to be equal to 0.

[0220] The process for deriving the boundaries of a transformation block as defined in Section 8.8.3.3 is called with inputs the position (xCb, yCb), the width of the coding block nCbW, the height of the coding block nCbH, the variable cIdx, the variable filterEdgeFlag, the array edgeFlags, the maximum filter length arrays maxFilterLengthPs and maxFilterLengthQs, and the variable edgeType, and outputs the modified array edgeFlags and the modified maximum filter length arrays maxFilterLengthPs and maxFilterLengthQs.

[0221] When cIdx is equal to 0, the coding subblock boundary derivation process defined in Section 8.8.3.4 is invoked with inputs the position (xCb, yCb), coding block width nCbW, coding block height nCbH, the array edgeFlags, the maximum filter length arrays maxFilterLengthPs and maxFilterLengthQs, and the variable edgeType, and outputs the modified array edgeFlags and the modified maximum filter length arrays maxFilterLengthPs and maxFilterLengthQs.

[0222] The picture sample sequence recPicture is derived as follows: - If cIdx is equal to 0, recPicture is the reconstructed LumaPicture sample sequence before deblocking. L It is set to be equal to [a certain value]. - Instead, if cIdx is equal to 1, recPicture is the reconstructed chroma picture sample sequence recPicture before deblocking. Cb It is set to be equal to [a certain value]. - Otherwise (if cIdx is equal to 2), recPicture is the reconstructed chroma picture sample sequence before deblocking. Cr It is set to be equal to [a certain value].

[0223] The process for deriving the boundary filtering strength as defined in Section 8.8.3.5 is called with the picture sample sequence recPicture, luma position (xCb, yCb), coding block width nCbW, coding block height nCbH, variable edgeType, variable cIdx, and sequence edgeFlags as input, and the output sequence (nCbW)x(nCbH)bS.

[0224] An edge filtering process for one direction is called for a coding block, as defined in Section 8.8.3.6, with the variables edgeType, cIdx, the reconstructed picture recPicture before deblocking, position (xCb, yCb), coding block width nCbW, coding block height nCbH, and arrays bS, maxFilterLengthPs, and maxFilterLengthQs as inputs, and the modified reconstructed picture recPicture as output.

[0225] 8.8.3.3 Derivation process of transformation block boundaries The inputs to this process are as follows: - Specifies the position (xCb, yCb) of the top-left sample in the current coding block, relative to the top-left sample in the current picture. - Variable nCbW specifies the width of the current coding block. - Variable nCbH specifies the height of the current coding block. - Variable cIdx specifies the color component of the current coding block. - Variable filterEdgeFlag - 2D array edgeFlags of (nCbW)x(nCbH) - Two-dimensional arrays maxFilterLengthQs and maxFilterLengthPs of (nCbW)x(nCbH) - The `edgeType` variable specifies whether vertical (EDGE_VER) edges or horizontal (EDGE_HOR) edges are filtered.

[0226] The output of this process is as follows: - Modified (nCbW)x(nCbH) 2D array edgeFlags - Modified 2D arrays of (nCbW)x(nCbH) maxFilterLengthQs, maxFilterLengthPs

[0227] Depending on the edgeType, the arrays edgeFlags, maxFilterLengthPs, and maxFilterLengthQs are derived as follows: - The variable gridSize is set as follows: gridSize = cIdx == 0 ? 4 : 8 (1246) - If edgeType is equal to EDGE_VER, the following applies: - The variable numEdges is set to be equal to Max(1, nCbW / gridSize). For - xEdge = 0..numEdges - 1 and y = 0..nCbH - 1, the following applies: - The horizontal position x within the current coding block is set to be equal to xEdge * gridSize. - The values ​​of edgeFlags[x][y] are derived as follows: - If VirtualBoundariesPresentFlag is equal to 1 and (xCb + x) is equal to VirtualBoundariesPosX[n] for any n = 0..NumVerVirtualBoundaries - 1, then edgeFlags[x][y] is set to equal to 0. - Instead, if x is equal to 0, edgeFlags[x][y] is set to be equal to filterEdgeFlag. - Instead, if the position (xCb + x, yCb + y) is on an edge of the transform block, edgeFlags[x][y] is set to equal 1. - When edgeFlags[x][y] is equal to 1, the following applies: - If cIdx is equal to 0, the following applies: - The value of maxFilterLengthQs[x][y] is derived as follows: - If the width represented by the number of luma samples in the transformation block for luma position (xCb + x, yCb + y) is 4 or less, or if the width represented by the number of luma samples in the transformation block for luma position (xCb + x - 1, yCb + y) is 4 or less, maxFilterLengthQs[x][y] is set to equal to 1. - Instead, if the width of the transformation block for the luma position (xCb + x, yCb + y) is expressed as the number of luma samples is 32 or greater, maxFilterLengthQs[x][y] is set to be equal to 7. - Otherwise, maxFilterLengthQs[x][y] is set to be equal to 3. - The value of maxFilterLengthPs[x][y] is derived as follows: - If the width represented by the number of luma samples in the transformation block for luma position (xCb + x, yCb + y) is 4 or less, or if the width represented by the number of luma samples in the transformation block for luma position (xCb + x - 1, yCb + y) is 4 or less, maxFilterLengthPs[x][y] is set to equal to 1. - Instead, if the width of the transformation block for the luma position (xCb + x - 1, yCb + y) is 32 or greater, maxFilterLengthPs[x][y] is set to equal to 7. - Otherwise, maxFilterLengthPs[x][y] is set to be equal to 3. - Otherwise (when cIdx is not equal to 0), the values ​​of maxFilterLengthPs[x][y] and maxFilterLengthQs[x][y] are derived as follows: - If both the width represented by the number of chroma samples in the transformation block for the chroma position (xCb + x, yCb + y) and the width of the chroma position (xCb + x - 1, yCb + y) are 8 or greater, then maxFilterLengthPs[x][y] and maxFilterLengthQs[x][y] are set to be equal to 3. - Otherwise, maxFilterLengthPs[x][y] and maxFilterLengthQs[x][y] are set to equal to 1. - Otherwise (when edgeType is equal to EDGE_HOR), the following applies: - The variable numEdges is set to be equal to Max(1, nCbH / gridSize). - For yEdge = 0..numEdges - 1 and x = 0..nCbW - 1, the following applies: - The vertical position y within the current coding block is set to be equal to yEdge * gridSize. - The values ​​of edgeFlags[x][y] are derived as follows: - If VirtualBoundariesPresentFlag is equal to 1 and (yCb + y) is equal to VirtualBoundariesPosY[n] for any n = 0..NumHorVirtualBoundaries - 1, then edgeFlags[x][y] is set to equal to 0. - Instead, if y is equal to 0, edgeFlags[x][y] is set to be equal to filterEdgeFlag. - Instead, if the position (xCb + x, yCb + y) is on an edge of the transform block, edgeFlags[x][y] is set to equal 1. - When edgeFlags[x][y] is equal to 1, the following applies: - If cIdx is equal to 0, the following applies: - The value of maxFilterLengthQs[x][y] is derived as follows: - If the height represented by the number of luma samples of the transformation block for luma position (xCb + x, yCb + y) is 4 or less, or if the height represented by the number of luma samples of the transformation block for luma position (xCb + x, yCb + y - 1) is 4 or less, maxFilterLengthQs[x][y] is set to equal to 1. - Instead, if the height of the transformation block of the luma position (xCb + x, yCb + y) is 32 or greater, maxFilterLengthQs[x][y] is set to equal to 7. - Otherwise, maxFilterLengthQs[x][y] is set to be equal to 3. - The value of maxFilterLengthPs[x][y] is derived as follows: - If the height represented by the number of luma samples of the transformation block for luma position (xCb + x, yCb + y) is 4 or less, or if the height represented by the number of luma samples of the transformation block for luma position (xCb + x, yCb + y - 1) is 4 or less, maxFilterLengthPs[x][y] is set to equal to 1. - Instead, if the height of the transformation block at the luma position (xCb + x, yCb + y - 1), expressed as the number of luma samples, is 32 or greater, then maxFilterLengthPs[x][y] is set to equal 7. - Otherwise, maxFilterLengthPs[x][y] is set to be equal to 3. - Otherwise (when cIdx is not equal to 0), the values ​​of maxFilterLengthPs[x][y] and maxFilterLengthQs[x][y] are derived as follows: - If both the height represented by the number of chroma samples in the transformation block for chroma position (xCb + x, yCb + y) and the height represented by the number of chroma samples in the transformation block for chroma position (xCb + x, yCb + y - 1) are 8 or greater, the following applies: - ( yCb + y ) % If CtbHeightC is greater than 0, i.e., if the horizontal edges do not overlap with the upper boundary of the chroma CTB, both maxFilterLengthPs[ x ][ y ] and maxFilterLengthQs[ x ][ y ] are set to equal to 3. - Otherwise (where (yCb + y) % CtbHeightC is equal to 0, i.e., the horizontal edge overlaps the upper boundary of the chroma CTB), maxFilterLengthPs[x][y] is set to equal to 1 and maxFilterLengthQs[x][y] is set to equal to 3. - Otherwise, maxFilterLengthPs[x][y] and maxFilterLengthQs[x][y] are set to equal to 1.

[0228] 8.8.3.4 Derivation process for coding subblock boundaries The inputs to this process are as follows: - Specifies the position (xCb, yCb) of the top-left sample in the current coding block, relative to the top-left sample in the current picture. - Variable nCbW specifies the width of the current coding block. - Variable nCbH specifies the height of the current coding block. - 2D array edgeFlags of (nCbW)x(nCbH) - Two-dimensional arrays maxFilterLengthQs and maxFilterLengthPs of (nCbW)x(nCbH) - The `edgeType` variable specifies whether vertical (EDGE_VER) edges or horizontal (EDGE_HOR) edges are filtered.

[0229] The output of this process is as follows: - Modified (nCbW)x(nCbH) 2D array edgeFlags - Modified (nCbW)x(nCbH) 2D arrays maxFilterLengthQs and maxFilterLengthPs

[0230] The number of horizontal coding subblocks, numSbX, and the number of vertical coding subblocks, numSbY, are derived as follows: - If inter_affine_flag[ xCb ][ yCb ] is equal to 1, or merge_subblock_flag[ xCb ][ yCb ] is equal to 1, then numSbX and numSbY are set to be equal to NumSbX[ xCb ][ yCb ] and NumSbY[ xCb ][ yCb ], respectively. - Otherwise, numSbX and numSbY are both set to be equal to 1.

[0231] Depending on the value of edgeType, the following will apply: - If edgeType is equal to EDGE_VER, the following applies: - The variable sbW is set to be equal to Max(8, nCbW / numSbX). - The array edgeTbFlags is set to be equal to edgeFlags. - For xEdge = 0..min( ( nCbW / 8 ) - 1, numSbX - 1), y = 0..nCbH - 1, - The horizontal position x within the current coding block is set to be equal to xEdge * sbW. - The values ​​of edgeFlags[x][y] are derived as follows: - If VirtualBoundariesPresentFlag is equal to 1 and x is equal to any n = 0..NumVerVirtualBoundaries - 1 VirtualBoundariesPosX[n], then the following applies: edgeFlags[ x ][ y ] = 0 (1247) - Otherwise, the following applies: edgeFlags[ x ][ y ] = 2 (1248) - When edgeFlags[ x ][ y ] is equal to 1 or 2, the values ​​of maxFilterLengthPs[ x ][ y ] and maxFilterLengthQs[ x ][ y ] are modified as follows: - If x is equal to 0, the following applies: - When numSbX is greater than 1, the following applies: maxFilterLengthQs[ x ][ y ] = Min( 5, maxFilterLengthQs[ x ][ y ] ) (1249) - If inter_affine_flag[ xCb - 1 ][ yCb + y ] is equal to 1, or merge_subblock_flag[ xCb - 1 ][ yCb + y ] is equal to 1, then the following applies: maxFilterLengthPs[ x ][ y ] = Min( 5, maxFilterLengthPs[ x ][ y ] ) (1250) - Instead, when edgeTbFlags[x][y] is equal to 1, the following applies: maxFilterLengthPs[ x ][ y ] = Min( 5, maxFilterLengthPs[ x ][ y ] ) (1251) maxFilterLengthQs[ x ][ y ] = Min( 5, maxFilterLengthQs[ x ][ y ] ) (1252) - Rather, if one or more of the following conditions are true, - (x + 4) is greater than or equal to nCbW - edgeTbFlags[ x - 4 ][ y ] is equal to 1 - edgeTbFlags[ x + 4 ][ y ] is equal to 1 The following applies: maxFilterLengthPs[ x ][ y ] = 1 (1253) maxFilterLengthQs[ x ][ y ] = 1 (1254) - Rather, if one or more of the following conditions are true, - xEdge is equal to 1 - xEdge is equal to (nCbW / 8) - 1 - edgeTbFlags[ x - sbW ][ y ] is equal to 1 - edgeTbFlags[ x + sbW ][ y ] is equal to 1 The following applies: maxFilterLengthPs[ x ][ y ] = 2 (1255) maxFilterLengthQs[ x ][ y ] = 2 (1256) - Otherwise, the following applies: maxFilterLengthPs[ x ][ y ] = 3 (1257) maxFilterLengthQs[ x ][ y ] = 3 (1258) - Instead, if edgeType is equal to EDGE_HOR, the following applies: - The variable sbH is set to be equal to Max(8, nCbH / numSbY). - The array edgeTbFlags is set to be equal to edgeFlags. - For yEdge = 0..min( ( nCbH / 8 ) - 1, numSbY - 1 ), x = 0...nCbW - 1, - The vertical position y within the current coding block is set to be equal to yEdge * sbH. - The values ​​of edgeFlags[x][y] are derived as follows: - If VirtualBoundariesPresentFlag is equal to 1 and y is equal to any n = 0..NumHorVirtualBoundaries - 1 VirtualBoundariesPosY[n], then the following applies: edgeFlags[ x ][ y ] = 0 (1259) - Otherwise, the following applies: edgeFlags[ x ][ y ] = 2 (1260) - When edgeFlags[ x ][ y ] is equal to 1 or 2, the values ​​of maxFilterLengthPs[ x ][ y ] and maxFilterLengthQs[ x ][ y ] are modified as follows: - If y is equal to 0, the following applies: - When numSbY is greater than 1, the following applies: maxFilterLengthQs[ x ][ y ] = Min( 5, maxFilterLengthQs[ x ][ y ] ) (1261) - If inter_affine_flag[ xCb + x ][ yCb - 1 ] is equal to 1, or merge_subblock_flag[ xCb + x ][ yCb - 1 ] is equal to 1, then the following applies: maxFilterLengthPs[ x ][ y ] = Min( 5, maxFilterLengthPs[ x ][ y ] ) (1262) - Instead, when edgeTbFlags[x][y] is equal to 1, the following applies: maxFilterLengthPs[ x ][ y ] = Min( 5, maxFilterLengthPs[ x ][ y ] ) (1263) maxFilterLengthQs[ x ][ y ] = Min( 5, maxFilterLengthQs[ x ][ y ] ) (1264) - Rather, if one or more of the following conditions are true, - (y + 4) is greater than or equal to nCbH - edgeTbFlags[ x ][ y - 4 ] is equal to 1 - edgeTbFlags[ x ][ y + 4 ] is equal to 1 The following applies: maxFilterLengthPs[ x ][ y ] = 1 (1265) maxFilterLengthQs[ x ][ y ] = 1 (1266) - Rather, if one or more of the following conditions are true, - yEdge is equal to 1 - yEdge is equal to (nCbH / 8) - 1 - edgeTbFlags[ x ][ y - sbH ] is equal to 1 - edgeTbFlags[ x ][ y + sbH ] is equal to 1 The following applies: maxFilterLengthPs[ x ][ y ] = 2 (1267) maxFilterLengthQs[ x ][ y ] = 2 (1268) - Otherwise, the following applies: maxFilterLengthPs[ x ][ y ] = 3 (1269) maxFilterLengthQs[ x ][ y ] = 3 (1270)

[0232] 8.8.3.5 Derivation process for boundary filtering strength The inputs to this process are as follows: - Picture sample array recPicture - Specifies the position (xCb, yCb) of the top-left sample in the current coding block, relative to the top-left sample in the current picture. - Variable nCbW specifies the width of the current coding block. - Variable nCbH specifies the height of the current coding block. - The `edgeType` variable specifies whether vertical (EDGE_VER) edges or horizontal (EDGE_HOR) edges are filtered. - Variable cIdx specifies the color component of the current coding block. - 2D array edgeFlags of (nCbW)x(nCbH)

[0233] The output of this process is a two-dimensional array bS of type (nCbW)x(nCbH) that specifies the boundary filtering strength.

[0234] Variable xD i , yD j xN and yN are derived as follows: - The variable gridSize is set as follows: gridSize = cIdx == 0 ? 4 : 8 (1271) - If edgeType is equal to EDGE_VER, xD i = (i * gridSize) (1272) yD j = cIdx == 0 ? ( j << 2 ) : ( j << 1 ) (1273) xN is set to be equal to Max(0, (nCbW / gridSize) - 1) (1274) yN = cIdx == 0 ? ( nCbH / 4 ) - 1 : ( nCbH / 2 ) - 1 (1275) - Otherwise (if edgeType is equal to EDGE_HOR), xD i = cIdx == 0 ? ( i << 2 ) : ( i << 1 ) (1276) yD j = j * gridSize (1277) xN = cIdx == 0 ? ( nCbW / 4 ) - 1 : ( nCbW / 2 ) - 1 (1278) yN = Max( 0, ( nCbH / gridSize ) - 1 ) (1279)

[0235] xD where i = 0..xN i and yD where j = 0..yN j The following applies to this: - edgeFlags[ xD i ][ yD j If ] is equal to 0, then the variable bS[ xD i ][ yD j ] is set to be equal to 0. - Otherwise, the following applies: - The sample values ​​p0 and q0 are derived as follows: - If edgeType is equal to EDGE_VER, then p0 is recPicture[ xCb + xD i - 1 ][ yCb + yD j Set to be equal to ], q0 is recPicture[ xCb + xD i ][ yCb + yD j It is set to be equal to ]. - Otherwise (if edgeType is equal to EDGE_HOR), p0 is recPicture[ xCb + xD i ][ yCb + yD j- Set to be equal to 1], q0 is recPicture[ xCb + xD i ][ yCb + yD j It is set to be equal to ]. - Variable bS[ xD i ][ yD j The following is derived: - If cIdx is equal to 0 and both samples p0 and q0 are in a coding block where intra_bdpcm_luma_flag is equal to 1, then bS[ xD i ][ yD j ] is set to be equal to 0. - Instead, if cIdx is greater than 0 and both samples p0 and q0 are in a coding block where intra_bdpcm_chroma_flag is equal to 1, then bS[ xD i ][ yD j ] is set to be equal to 0. - Instead, if sample p0 or q0 is within a coding block of a coding unit coded in intra-predictive mode, then bS[ xD i ][ yD j ] is set to be equal to 2. - Instead, if the edge of the block is also the edge of the coding block, and sample p0 or q0 is in the coding block where ciip_flag is equal to 1, then bS[ xD i ][ yD j ] is set to be equal to 2. - Instead, if the edge of the block is also an edge of the transformation block, and sample p0 or q0 is within a transformation block containing one or more non-zero transformation coefficient levels, then bS[ xD i ][ yD j ] is set to be equal to 1. - Instead, if the prediction mode of the coding subblock containing sample p0 is different from the prediction mode of the coding subblock containing sample q0 (i.e., one of the coding subblocks is coded in IBC prediction mode and the other in inter-prediction mode), then bS[ xD i ][ yD j ] is set to be equal to 1. - Instead, cIdx is equal to 0, and edgeFlags[ xD i ][ yD j If ] is equal to 2 and one or more of the following conditions are true, then bS[ xD i ][ yD j ] is set to be equal to 1. - Both the coding subblock containing sample p0 and the coding subblock containing sample q0 are coded in IBC prediction mode, and the absolute difference between the horizontal or vertical components of the block vectors used to predict the two coding subblocks is 8 or greater in 1 / 16 luma sample units. - For the prediction of the coding subblock containing sample p0, a different reference picture or a different number of motion vectors is used compared to the prediction of the coding subblock containing sample q0. Note 1 - The determination of whether the reference pictures used for two coding subblocks are the same or different is based solely on which pictures are referenced, regardless of whether the prediction is formed using the index in reference picture list 0 or reference picture list 1, and regardless of whether the index positions within the reference picture lists are different. Note 2 - The number of motion vectors used for predicting the coding subblocks that the top-left sample covers (xSb, ySb) is equal to PredFlagL0[xSb][ySb] + PredFlagL1[xSb][ySb]. - One motion vector is used to predict the coding subblock containing sample p0, and another motion vector is used to predict the coding subblock containing sample q0, and the absolute difference between the horizontal or vertical components of the motion vectors used is 8 or greater in 1 / 16 luma sample units. - Two motion vectors and two different reference pictures are used to predict the coding subblock containing sample p0, and two motion vectors for the same two reference pictures are used to predict the coding subblock containing sample q0, and the absolute difference between the horizontal or vertical components of the two motion vectors used to predict the two coding subblocks for the same reference picture is 8 or greater in 1 / 16 luma sample units. - Two motion vectors for the same reference picture are used to predict the coding subblock containing sample p0, and two motion vectors for the same reference picture are used to predict the coding subblock containing sample q0, provided that both of the following conditions are true: - The absolute difference between the horizontal or vertical components of the motion vectors in List 0 used to predict two coding subblocks is 8 or greater in 1 / 16 luma samples, or the absolute difference between the horizontal or vertical components of the motion vectors in List 1 used to predict two coding subblocks is 8 or greater in 1 / 16 luma samples. - The absolute difference between the horizontal or vertical components of the motion vector of List 0 used to predict the coding subblock containing sample p0 and the motion vector of List 1 used to predict the coding subblock containing sample q0 is 8 or greater in 1 / 16 luma sample units, or the absolute difference between the horizontal or vertical components of the motion vector of List 1 used to predict the coding subblock containing sample p0 and the motion vector of List 0 used to predict the coding subblock containing sample q0 is 8 or greater in 1 / 16 luma sample units. - Otherwise, the variable bS[ xD i ][ yD j] is set to be equal to 0.

[0236] 8.8.3.6 Edge filtering process for one-way filtering The inputs to this process are as follows: - The `edgeType` variable specifies whether a vertical edge (EDGE_VER) or a horizontal edge (EDGE_HOR) is currently being processed. - Variable cIdx that specifies the current color component - Reconstructed picture before deblocking recPicture - Specifies the position (xCb, yCb) of the top-left sample in the current coding block, relative to the top-left sample in the current picture. - Variable nCbW specifies the width of the current coding block. - Variable nCbH specifies the height of the current coding block. - Array bS specifying boundary strength - Arrays maxFilterLengthPs and maxFilterLengthQs

[0237] The output of this process is the deblocked, corrected, and reconstructed picture, recPicture.

[0238] The following applies to the edge filtering process: - The variable gridSize is set as follows: gridSize = cIdx == 0 ? 4 : 8 (1280) - The variables subW, subH, xN, and yN are derived as follows: subW = cIdx == 0 ? 1 : SubWidthC (1281) subH = cIdx == 0 ? 1 : SubHeightC (1282) xN = edgeType == EDGE_VER? Max(0, (nCbW / gridSize) - 1) : (nCbW / 4 / subW) - 1 (1283) yN = edgeType == EDGE_VER? (nCbH / 4 / subH) - 1 : Max(0, (nCbH / gridSize) - 1) (1284) - A variable xD where k = 0..xN k and a variable yD where m = 0..yN m are derived as follows. xD k = edgeType == EDGE_VER? (k * gridSize) : (k << (2 / subW)) (1285) yD​​​​​​​​​​​​​​​​​​​​​​​​​, maxFilterLengthPs[ xD k [ yD m is set to be equal to the maximum filter length maxFilterLengthP, and maxFilterLengthQs[ xD k [ yD m is set to be equal to the maximum filter length maxFilterLengthQ. Taking these as inputs, judgment dE, dEp, and dEq, the corrected maximum filter lengths maxFilterLengthP and maxFilterLengthQ, and variable t C are called with the output. 2. The filtering process for the block edge defined in item 8.8.3.6.2 takes the luma picture sample array recPicture, the position (xCb, yCb) of the luma coding block, the luma position (xBl, yBl) of the block set to be equal to (xD k , yD m ), the edge direction edgeType, judgment dE, dEp, and dEq, the maximum filter lengths maxFilterLengthP and maxFilterLengthQ, and variable t C as inputs and calls with the corrected luma picture sample array recPicture as the output. - In other cases (when cIdx is not equal to 0), the filtering process for the edge within the chroma coding block of the current coding unit specified by cIdx consists of the following ordered steps. 1. The judgment process for the chroma block edge defined in item 8.8.3.6.3 takes the chroma picture sample array recPicture, the position (xCb, yCb) of the chroma coding block, the position (xBl, yBl) of the chroma block set to be equal to (xD k , yD m ), the edge direction edgeType, variable cIdx, the boundary filtering strength bS[ xD k [ yD m , maxFilterLengthPs[ xDk ][ yD m The maximum filter length maxFilterLengthP and maxFilterLengthQs[ xD ] are set to be equal to ]. k ][ yD m The input is the maximum filter length maxFilterLengthQ set to be equal to ], the modified maximum filter lengths maxFilterLengthP and maxFilterLengthQ, and the variable t C It is called with the output being [output]. 2. When maxFilterLengthQ is greater than 0, the filtering process for the edges of the chroma block as defined in Section 8.8.3.6.4 is performed, with the chroma picture sample sequence recPicture, the position of the chroma coding block (xCb, yCb), (xD k , yD m The chroma position of the block (xBl, yBl) set to be equal to ), edge direction edgeType, variable t C It is called with the maximum filter lengths maxFilterLengthP and maxFilterLengthQ as inputs and the modified chroma picture sample sequence recPicture as output.

[0239] 8.8.3.6.1 Decision process for the edge of a luma block The inputs to this process are as follows: - Picture sample array recPicture - Specifies the position (xCb, yCb) of the top-left sample in the current coding block, relative to the top-left sample in the current picture. - The position (xBl, yBl) that specifies the top-left sample of the current coding block, relative to the top-left sample of the current coding block. - The `edgeType` variable specifies whether vertical (EDGE_VER) edges or horizontal (EDGE_HOR) edges are filtered. - Variable bS specifies the boundary filtering strength. - Variable maxFilterLengthP that specifies the maximum filter length - Variable maxFilterLengthQ that specifies the maximum filter length

[0240] The output of this process is as follows: - Variables dE, dEp, and dEq that include judgments. - Modified filter length variables maxFilterLengthP and maxFilterLengthQ - Variable t C

[0241] i = 0..Max(2, maxFilterLengthP), j = 0..Max(2, maxFilterLengthQ), and sample values ​​p = 0 and 3. i,k and q j,k However, it can be derived as follows. - If edgeType is equal to EDGE_VER, the following applies: q j,k = recPicture[ xCb + xBl + j ][ yCb + yBl + k ] (1287) p i,k = recPicture[ xCb + xBl - i - 1 ][ yCb + yBl + k ] (1288) - Otherwise (when edgeType is equal to EDGE_HOR), the following applies: q j,k = recPicture[ xCb + xBl + k ][ yCb + yBl + j ] (1289) p i,k = recPicture[ xCb + xBl + k ][ yCb + yBl - i - 1 ] (1290)

[0242] The variable qpOffset is derived as follows: - If sps_ladf_enabled_flag is equal to 1, the following applies: - The reconstructed luma level variable lumaLevel is derived as follows: lumaLevel = ( ( p 0,0 + p 0,3 + q 0,0 + q 0,3 ) >> 2 ) (1291) - The variable qpOffset is set to be equal to sps_ladf_lowest_interval_qp_offset and modified as follows: for( i = 0; i < sps_num_ladf_intervals_minus2 + 1; i++ ) { if( lumaLevel > SpsLadfIntervalLowerBound[ i + 1 ] ) qpOffset = sps_ladf_qp_offset[ i ] (1292) else break } - Otherwise, qpOffset is set to be equal to 0.

[0243] Variable Qp Q and Qp P However, each of them is sample q 0,0 and p 0,0 Qp of a coding unit containing a coding block that includes Y It is set to be equal to the value of [the specified value].

[0244] The variable qP is derived as follows: qP = ( ( Qp Q + Qp P + 1 ) >> 1 ) + qpOffset (1293)

[0245] The value of the variable β' is determined based on the quantization parameter Q, which is derived as follows, as specified in Table 43. Q = Clip3( 0, 63, qP + ( slice_beta_offset_div2 << 1 ) ) (1294) In the formula, slice_beta_offset_div2 is sample q 0,0 This is the value of the syntax element slice_beta_offset_div2 for the slice containing [the specified element].

[0246] The variable β is derived as follows: β=β' * ( 1 << ( BitDepth - 8 ) ) (1295)

[0247] variable t C The value of ' is determined based on the quantization parameter Q, which is derived as follows, as specified in Table 43. Q = Clip3( 0, 65, qP + 2 * ( bS - 1 ) + ( slice_tc_offset_div2 << 1 ) ) (1296) In the formula, slice_tc_offset_div2 is sample q 0,0 This is the value of the syntax element slice_tc_offset_div2 for the slice containing [the specified element].

[0248] variable t C However, it can be derived as follows. t C = BitDepth < 10 ? ( t C ' + 2 ) >> ( 10 - BitDepth ) : t C ' * ( 1 << ( BitDepth - 10 ) ) (1297)

[0249] The following ordered steps apply. The variables dp0, dp3, dq0, and dq3 are derived as follows: dp0 = Abs( p 2,0 - 2 * p 1,0 + p 0,0 ) (1298) dp3 = Abs( p 2,3 - 2 * p 1,3 + p 0,3 ) (1299) dq0 = Abs( q 2,0 - 2 * q 1,0 + q 0,0 ) (1300) dq3 = Abs( q 2,3 - 2 * q 1,3 + q 0,3 ) (1301) When both maxFilterLengthP and maxFilterLengthQ are 3 or greater, the variables sp0, sq0, spq0, sp3, sq3, and spq3 are derived as follows. sp0 = Abs( p 3,0 - p 0,0 ) (1302) sq0 = Abs( q 0,0 - q 3,0 ) (1303) spq0 = Abs( p 0,0 - q 0,0 ) (1304) sp3 = Abs( p 3,3 - p 0,3 ) (1305) sq3 = Abs( q 0,3 - q 3,3 ) (1306) spq3 = Abs( p 0,3 - q 0,3 ) (1307) 1. The variables sidePisLargeBlk and sideQisLargeBlk are set to equal to 0. When maxFilterLengthP is greater than 3, sidePisLargeBlk is set to be equal to 1. When maxFilterLengthQ is greater than 3, sideQisLargeBlk is set to be equal to 1. When edgeType is equal to EDGE_HOR and (yCb + yBl) % CtbSizeY is equal to 0, sidePisLargeBlk is set to equal to 0. The variables dSam0 and dSam3 are initialized to 0. When sidePisLargeBlk or sideQisLargeBlk is greater than 0, the following applies: a. The variables dp0L and dp3L are derived as follows, and maxFilterLengthP is modified. - If sidePisLargeBlk is equal to 1, the following applies: dp0L = ( dp0 + Abs( p 5,0 - 2 * p 4,0 + p 3,0 ) + 1 ) >> 1 (1308) dp3L = ( dp3 + Abs( p 5,3 - 2 * p 4,3 + p 3,3 ) + 1 ) >> 1 (1309) - Otherwise, the following applies: dp0L = dp0 (1310) dp3L = dp3 (1311) maxFilterLengthP = 3 (1312) b. The variables dq0L and dq3L are derived as follows: - If sideQisLargeBlk is equal to 1, the following applies: dq0L = ( dq0 + Abs( q 5,0 - 2 * q 4,0 + q 3,0 ) + 1 ) >> 1 (1313) dq3L = ( dq3 + Abs( q 5,3 - 2 * q 4,3 + q 3,3 ) + 1 ) >> 1 (1314) - Otherwise, the following applies: dq0L = dq0 (1315) dq3L = dq3 (1316) c. Variables sp0L and sp3L are derived as follows: - If maxFilterLengthP is equal to 7, the following applies: sp0L = sp0 + Abs( p 7,0 - p 6,0 - p 5,0 + p 4,0 ) (1317) sp3L = sp3 + Abs(p 7,3 - p 6,3 - p 5,3 + p 4,3 ) (1318) - Otherwise, the following applies: sp0L = sp0 (1319) sp3L = sp3 (1320) d. The variables sq0L and sq3L are derived as follows: - If maxFilterLengthQ is equal to 7, the following applies: sq0L = sq0 + Abs( q 4,0 - q 5,0 - q 6,0 + q 7,0 ) (1321) sq3L = sq3 + Abs( q 4,3 - q 5,3 - q 6,3 + q 7,3 ) (1322) - Otherwise, the following applies: sq0L = sq0 (1323) sq3L = sq3 (1324) e. The variables dpq0L, dpq3L, and dL are derived as follows: dpq0L = dp0L + dq0L (1325) dpq3L = dp3L + dq3L (1326) dL = dpq0L + dpq3L (1327) When f. dL is less than β, the following ordered steps are applied. i. The variable dpq is set to be equal to 2 * dpq0L. The variable sp is set to be equal to sp0L, the variable sq is set to be equal to sq0L, and the variable spq is set to be equal to spq0. The variables p0, p3, q0, and q3 are first initialized to 0, and then modified according to sidePisLargeBlk and sideQisLargeBlk as follows: - When sidePisLargeBlk is equal to 1, the following applies: p3 = p 3,0 (1328) p0 = p maxFilterLengthP,0 (1329) - When sideQisLargeBlk is equal to 1, the following applies: q3 = q 3,0 (1330) q0 = q maxFilterLengthQ,0 (1331) Regarding the sample location (xCb + xBl, yCb + yBl), the decision process for Luma samples as defined in Section 8.8.3.6.5 is based on the sample values ​​p0, p3, q0, q3, variables dpq, sp, sq, spq, sidePisLargeBlk, sideQisLargeBlk, β, and t C It is called with input, and the output is assigned to the judgment dSam0. The variable dpq is set to be equal to 2 * dpq3L. The variable sp is set to be equal to sp3L, the variable sq is set to be equal to sq3L, and the variable spq is set to be equal to spq3. The variables p0, p3, q0, and q3 are first initialized to 0, and then modified according to sidePisLargeBlk and sideQisLargeBlk as follows: - When sidePisLargeBlk is equal to 1, the following applies: p3 = p 3,3 (1332) p0 = p maxFilterLengthP,3 (1333) - When sideQisLargeBlk is equal to 1, the following applies: q3 = q 3,3 (1334) q0 = q maxFilterLengthQ,3 (1335) When the edgeType is equal to EDGE_VER with respect to the sample position (xCb + xBl, yCb + yBl + 3), or when the edgeType is equal to EDGE_HOR with respect to the sample position (xCb + xBl + 3, yCb + yBl), the decision process for the Luma sample as defined in Section 8.8.3.6.5 is determined based on the sample values ​​p0, p3, q0, q3, variables dpq, sp, sq, spq, sidePisLargeBlk, sideQisLargeBlk, β, and t C It is called with input, and the output is assigned to the judgment dSam3. 2. The variables dE, dEp, and dEq are derived as follows: - If both dSam0 and dSam3 are equal to 1, then the variable dE is set to equal to 3, dEp is set to equal to 1, and dEq is set to equal to 1. - Otherwise, the following ordered steps apply: The variables dpq0, dpq3, dp, dq, and d are derived as follows: dpq0 = dp0 + dq0 (1336) dpq3 = dp3 + dq3 (1337) dp = dp0 + dp3 (1338) dq = dq0 + dq3 (1339) d = dpq0 + dpq3 (1340) The variables dE, dEp, dEq, sidePisLargeBlk, and sideQisLargeBlk are set to be equal to 0. If d is less than β and both maxFilterLengthP and maxFilterLengthQ are greater than 2, then the following ordered steps are applied. The variable dpq is set to be equal to 2 * dpq0. The variable sp is set to be equal to sp0, the variable sq is set to be equal to sq0, and the variable spq is set to be equal to spq0. With respect to the sample position (xCb + xBl, yCb + yBl), the decision process for Luma samples as defined in Section 8.8.3.6.5 is set to be equal to 0 for all variables p0, p3, q0, q3, dpq, sp, sq, spq, sidePisLargeBlk, sideQisLargeBlk, β, and t. C It is called with input, and the output is assigned to the judgment dSam0. The variable dpq is set to be equal to 2 * dpq3. The variable sp is set to be equal to sp3, the variable sq is set to be equal to sq3, and the variable spq is set to be equal to spq3. When the edgeType is equal to EDGE_VER for sample location (xCb + xBl, yCb + yBl + 3) or when the edgeType is equal to EDGE_HOR for sample location (xCb + xBl + 3, yCb + yBl), the decision process for the sample specified in Section 8.8.3.6.5 is set to be equal to 0 for all variables p0, p3, q0, q3, variables dpq, sp, sq, spq, sidePisLargeBlk, sideQisLargeBlk, β, and t C It is called with input, and the output is assigned to the judgment dSam3. When d is less than β, the following ordered steps are applied. The variable dE is set to be equal to 1. When dSam0 is equal to 1 and dSam3 is equal to 1, the variable dE is set to be equal to 2, and both maxFilterLengthP and maxFilterLengthQ are set to be equal to 3. When maxFilterLengthP is greater than 1, maxFilterLengthQ is greater than 1, and dp is less than (β + (β>> 1)) >> 3, the variable dEp is set to be equal to 1. When maxFilterLengthP is greater than 1, maxFilterLengthQ is greater than 1, and dq is less than (β + (β>> 1)) >> 3, the variable dEq is set to be equal to 1. When dE is equal to 1, maxFilterLengthP is set to be equal to 1 + dEp, and maxFilterLengthQ is set to be equal to 1 + dEq.

[0250] [Table 6]

[0251] 8.8.3.6.2 Filtering process for Lumablock edges The inputs to this process are as follows: - Picture sample array recPicture - Specifies the position (xCb, yCb) of the top-left sample in the current coding block, relative to the top-left sample in the current picture. - The position (xBl, yBl) that specifies the top-left sample of the current coding block, relative to the top-left sample of the current coding block. - The `edgeType` variable specifies whether vertical (EDGE_VER) edges or horizontal (EDGE_HOR) edges are filtered. - Variables dE, dEp, and dEq that include judgments. - Variables maxFilterLengthP and maxFilterLengthQ that contain the maximum filter length. - Variable t C

[0252] The output of this process is the corrected picture sample sequence, recPicture.

[0253] Depending on the value of edgeType, the following will apply: - If edgeType is equal to EDGE_VER, the following ordered steps are applied. Sample value p where i = 0..maxFilterLengthP, j = 0..maxFilterLengthQ, and k = 0..3. i,k and q j,k However, it can be derived as follows. q j,k = recPicture[ xCb + xBl + j ][ yCb + yBl + k ] (1341) p i,k = recPicture[ xCb + xBl - i - 1 ][ yCb + yBl + k ] (1342) When dE is not equal to 0 and dE is not equal to 3, the following ordered steps are applied for each sample position (xCb + xBl, yCb + yBl + k), k = 0..3. The filtering process for Luma samples using the short filter specified in Section 8.8.3.6.6 is for sample values ​​p where the variables maxFilterLengthP, maxFilterLengthQ, i = 0..maxFilterLengthP and j = 0..maxFilterLengthQ. i,k , q j,k , judgment dE, variables dEp and dEq, and variable t C The input is the number of filtered samples nDp and nDq from each side of the block boundary, and the filtered sample value p. i 'and q j It is called with the output '. When nDp is greater than 0, the filtered sample value p is i = 0..nDp - 1. i ' replaces the corresponding sample within the sample sequence recPicture as follows: recPicture[ xCb + xBl - i - 1 ][ yCb + yBl + k ] = p i (1343) When nDq is greater than 0, the filtered sample value q is j = 0..nDq - 1. j ' replaces the corresponding sample within the sample sequence recPicture as follows: recPicture[ xCb + xBl + j ][ yCb + yBl + k ] = q j (1344) When dE is equal to 3, the following ordered steps are applied for each sample position (xCb + xBl, yCb + yBl + k), k = 0..3. The filtering process for Luma samples using the long filter specified in Section 8.8.3.6.7 is for sample values ​​p where the variables maxFilterLengthP, maxFilterLengthQ, i = 0..maxFilterLengthP and j = 0..maxFilterLengthQ. i,k , q j,k , and t C The input is the filtered sample value p i 'and q j It is called with the output '. The filtered sample value p is i = 0..maxFilterLengthP - 1. i ' replaces the corresponding sample within the sample sequence recPicture as follows: recPicture[ xCb + xBl - i - 1 ][ yCb + yBl + k ] = p i (1345) The filtered sample value q is j = 0..maxFilterLengthQ - 1. j ' replaces the corresponding sample within the sample sequence recPicture as follows: recPicture[ xCb + xBl + j ][ yCb + yBl + k ] = q j (1346) - Otherwise (when edgeType is equal to EDGE_HOR), the following ordered steps apply: 1. Sample value p where i = 0..maxFilterLengthP, j = 0..maxFilterLengthQ, and k = 0..3. i,k and q j,k However, it can be derived as follows. q j,k = recPicture[ xCb + xBl + k ][ yCb + yBl + j ] (1347) p i,k = recPicture[ xCb + xBl + k ][ yCb + yBl - i - 1 ] (1348) 2. When dE is not equal to 0 and dE is not equal to 3, the following ordered steps are applied for each sample position (xCb + xBl + k, yCb + yBl), k = 0..3. The filtering process for Luma samples using the short filter specified in Section 8.8.3.6.6 is for sample values ​​p where the variables maxFilterLengthP, maxFilterLengthQ, i = 0..maxFilterLengthP and j = 0..maxFilterLengthQ. i,k , q i,k , judgment dE, variables dEp and dEq, and variable t C The input is the number of filtered samples nDp and nDq from each side of the block boundary, and the filtered sample value p. i 'and q j It is called with the output '. When nDp is greater than 0, the filtered sample value p is i = 0..nDp - 1. i ' replaces the corresponding sample within the sample sequence recPicture as follows: recPicture[ xCb + xBl + k ][ yCb + yBl - i - 1 ] = p i (1349) When nDq is greater than 0, the filtered sample value q is j = 0..nDq - 1. j ' replaces the corresponding sample within the sample sequence recPicture as follows: recPicture[ xCb + xBl + k ][ yCb + yBl + j ] = q j (1350) 3. When dE is equal to 3, the following ordered steps are applied for each sample position (xCb + xBl + k, yCb + yBl), k = 0..3. The filtering process for Luma samples using the long filter specified in Section 8.8.3.6.7 is for sample values ​​p where the variables maxFilterLengthP, maxFilterLengthQ, i = 0..maxFilterLengthP and j = 0..maxFilterLengthQ. i,k , q j,k , and the variable t C The input is the filtered sample value p i 'and q j It is called with the output '. The filtered sample value p is i = 0..maxFilterLengthP - 1. i ' replaces the corresponding sample within the sample sequence recPicture as follows: recPicture[ xCb + xBl + k ][ yCb + yBl - i - 1 ] = p i (1351) The filtered sample value q is j = 0..maxFilterLengthQ - 1. j ' replaces the corresponding sample within the sample sequence recPicture as follows: recPicture[ xCb + xBl + k ][ yCb + yBl + j ] = q j (1352)

[0254] 8.8.3.6.3 Decision process for chromablock edges This process is only called when ChromaArrayType is not equal to 0.

[0255] The inputs to this process are as follows: - Chroma picture sample sequence recPicture - Chroma position (xCb, yCb) that specifies the top-left sample of the current chroma coding block, relative to the top-left chroma sample of the current picture. - Chroma position (xBl, yBl) that specifies the top-left sample of the current chroma coding block, relative to the top-left sample of the current chroma coding block. - The `edgeType` variable specifies whether vertical (EDGE_VER) edges or horizontal (EDGE_HOR) edges are filtered. - Variable cIdx that specifies the color component index - Variable bS specifies the boundary filtering strength. - Variable maxFilterLengthP that specifies the maximum filter length - Variable maxFilterLengthQ that specifies the maximum filter length

[0256] The output of this process is as follows: - Modified filter length variables maxFilterLengthP and maxFilterLengthQ - Variable t C

[0257] The variable maxK is derived as follows: - If edgeType is equal to EDGE_VER, the following applies: maxK = ( SubHeightC == 1 ) ? 3 : 1 (1353) - Otherwise (when edgeType is equal to EDGE_HOR), the following applies: maxK = ( SubWidthC == 1 ) ? 3 : 1 (1354)

[0258] The value p is such that i = 0..maxFilterLengthP, j = 0..maxFilterLengthQ, and k = 0..maxK. i,k and q i,k However, it can be derived as follows. - If edgeType is equal to EDGE_VER, the following applies: q j,k = recPicture[ xCb + xBl + j ][ yCb + yBl + k ] (1355) p i,k = recPicture[ xCb + xBl - i - 1 ][ yCb + yBl + k ] (1356) subSampleC = SubHeightC (1357) - Otherwise (when edgeType is equal to EDGE_HOR), the following applies: q j,k = recPicture[ xCb + xBl + k ][ yCb + yBl + j ] (1358) p i,k = recPicture[ xCb + xBl + k ][ yCb + yBl - i - 1 ] (1359) subSampleC = SubWidthC (1360)

[0259] Variable Qp P However, it can be derived as follows. - Luma position (xTb P , yTb P ) is based on the Luma sample in the upper left of the picture, sample p 0,0This is set as the top-left Luma sample position of the transformation block containing it. - TuCResMode[ xTb P ][ yTb P If ] is equal to 2, Qp P This is sample p 0,0 Qp' of the transformation block that includes CbCr It is set to be equal to [a certain value]. - Instead, if cIdx is equal to 1, Qp P This is sample p 0,0 Qp' of the transformation block that includes Cb It is set to be equal to [a certain value]. - Otherwise, Qp P This is sample p 0,0 Qp' of the transformation block that includes Cr It is set to be equal to [a certain value].

[0260] Variable Qp Q However, it can be derived as follows. - Luma position (xTb Q , yTb Q ) is based on the Luma sample in the upper left of the picture, sample q 0,0 This is set as the top-left Luma sample position of the transformation block containing it. - TuCResMode[ xTb Q ][ yTb Q If ] is equal to 2, Qp Q This is sample q 0,0 Qp' of the transformation block that includes CbCr It is set to be equal to [a certain value]. - Instead, if cIdx is equal to 1, Qp Q This is sample q 0,0 Qp' of the transformation block that includes Cb It is set to be equal to [a certain value]. - Otherwise, Qp Q This is sample q 0,0 Qp' of the transformation block that includes Cr It is set to be equal to [a certain value].

[0261] Variable Qp C However, it can be derived as follows. Qp C = ( Qp Q - QpBdOffset + Qp P - QpBdOffset + 1 ) >> 1 (1361)

[0262] The value of the variable β' is determined based on the quantization parameter Q, which is derived as follows, as specified in Table 43. sliceBetaOffsetDiv2 = ( cIdx == 1 ? slice_cb_beta_offset_div2 : slice_cr_beta_offset_div2 ) Q = Clip3( 0, 63, Qp C + ( sliceBetaOffsetDiv2 << 1 ) ) (1362) In the formula, slice_cb_beta_offset_div2 and slice_cr_beta_offset_div2 are, respectively, sample q 0,0 These are the values ​​of the syntax elements slice_cb_beta_offset_div2 and slice_cr_beta_offset_div2 for slices containing [the specified element].

[0263] The variable β is derived as follows: β=β' * ( 1 << ( BitDepth - 8 ) ) (1363)

[0264] variable t C The value of ' is determined based on the chromatic quantization parameter Q, which is derived as follows, as specified in Table 43. sliceTcOffsetDiv2 = ( cIdx == 1 ? slice_cb_tc_offset_div2 : slice_cr_beta_offset_div2 ) Q = Clip3( 0, 65, Qp C + 2 * ( bS - 1 ) + ( sliceTcOffsetDiv2 << 1 ) ) (1364) In the formula, slice_cb_tc_offset_div2 and slice_cr_beta_offset_div2 are, respectively, sample q 0,0 These are the values ​​of the syntax elements slice_cb_tc_offset_div2 and slice_cr_beta_offset_div2 for slices containing [the specified element].

[0265] variable t C However, it can be derived as follows. t C = ( BitDepth < 10 ) ? ( t C ' + 2 ) >> ( 10 - BitDepth ) : t C ' * ( 1 << ( BitDepth - 10 ) ) (1365)

[0266] When both maxFilterLengthP and maxFilterLengthQ are equal to 1 and bS is not equal to 2, both maxFilterLengthP and maxFilterLengthQ are set to be equal to 0.

[0267] When maxFilterLengthQ is equal to 3, the following ordered steps are applied: 1. The variable n1 is derived as follows: n1 = subSampleC == 2 ? 1 : 3 (1366) 2. When maxFilterLengthP is equal to 1, sample p 3,0 and p 2,0 Both are p 1,0 Set to be equal to, sample p 3,n1 , p 2,n1 Both are p 1,n1 It is set to be equal to [a certain value]. 3. The variables dpq0, dpq1, dp, dq, and d are derived as follows: dp0 = Abs( p 2,0 - 2 * p 1,0 + p 0,0 ) (1367) dp1 = Abs( p 2,n1 - 2 * p 1,n1 + p 0,n1 ) (1368) dq0 = Abs( q 2,0 - 2 * q 1,0 + q 0,0 ) (1369) dq1 = Abs( q 2,n1 - 2 * q 1,n1 + q 0,n1 ) (1370) dpq0 = dp0 + dq0 (1371) dpq1 = dp1 + dq1 (1372) dp = dp0 + dp1 (1373) dq = dq0 + dq1 (1374) d = dpq0 + dpq1 (1375) 4. Variables dSam0 and dSam1 are both set to be equal to 0. 5. When d is less than β, the following ordered steps apply. a. The variable dpq is set to be equal to 2 * dpq0. b. The variable dSam0 is equal to the sample value p 0,0 , p 3,0 , q 0,0 , and q 3,0 , variables dpq, β, and t C With the input, the decision process for chroma samples as defined in Section 8.8.3.6.8 is invoked with respect to the sample positions (xCb + xBl, yCb + yBl) to derive the result, and the output is assigned to decision dSam0. c. The variable dpq is set to be equal to 2 * dpq1. d. The variable dSam1 is modified as follows: - If edgeType is equal to EDGE_VER, the decision process for chroma samples as defined in Section 8.8.3.6.8 applies to the sample position (xCb + xBl, yCb + yBl + n1), with respect to the sample value p0,n1 , p 3,n1 , q 0,n1 , and q 3,n1 , variables dpq, β, and t C It is called with input, and the output is assigned to the judgment dSam1. - Otherwise (when edgeType is equal to EDGE_HOR), the decision process for chroma samples as defined in Section 8.8.3.6.8 applies to the sample position (xCb + xBl + n1, yCb + yBl), where sample value p 0,n1 , p 3,n1 , q 0,n1 , and q 3,n1 , variables dpq, β, and t C It is called with input, and the output is assigned to the judgment dSam1. 6. When dSam0 is equal to 0 or dSam1 is equal to 0, maxFilterLengthP and maxFilterLengthQ are both set to be equal to 1.

[0268] 8.8.3.6.4 Filtering process for chromablock edges This process is only called when ChromaArrayType is not equal to 0.

[0269] The inputs to this process are as follows: - Chroma picture sample sequence recPicture - Chroma position (xCb, yCb) that specifies the top-left sample of the current chroma coding block, relative to the top-left chroma sample of the current picture. - Chroma position (xBl, yBl) that specifies the top-left sample of the current chroma coding block, relative to the top-left sample of the current chroma coding block. - The `edgeType` variable specifies whether vertical (EDGE_VER) edges or horizontal (EDGE_HOR) edges are filtered. - Variable maxFilterLengthP that specifies the maximum filter length - Variable maxFilterLengthQ that specifies the maximum filter length - Variable tC

[0270] The output of this process is the corrected chroma picture sample sequence, recPicture.

[0271] The variable maxK is derived as follows: - If edgeType is equal to EDGE_VER, the following applies: maxK = ( SubHeightC == 1 ) ? 3 : 1 (1376) - Otherwise (when edgeType is equal to EDGE_HOR), the following applies: maxK = ( SubWidthC == 1 ) ? 3 : 1 (1377)

[0272] i = 0..maxFilterLengthP is the value p. i , j = 0..maxFilterLengthQ is the value q j , and k = 0..maxK are derived as follows. - If edgeType is equal to EDGE_VER, the following applies: q j,k = recPicture[ xCb + xBl + j ][ yCb + yBl + k ] (1378) p i,k = recPicture[ xCb + xBl - i - 1 ][ yCb + yBl + k ] (1379) - Otherwise (when edgeType is equal to EDGE_HOR), the following applies: q j,k = recPicture[ xCb + xBl + k ][ yCb + yBl + j ] (1380) p i,k = recPicture[ xCb + xBl + k ][ yCb + yBl - i - 1 ] (1381)

[0273] Depending on the value of edgeType, the following will apply: - When edgeType is equal to EDGE_VER, the following ordered steps are applied for each sample position (xCb + xBl, yCb + yBl + k), k = 0..maxK. 1. The filtering process for chromatic samples as defined in Section 8.8.3.6.9 is for sample values ​​p where the variables maxFilterLengthP and maxFilterLengthQ are i = 0..maxFilterLengthP and j = 0..maxFilterLengthQ. i,k , q j,k , and the variable t C The input is a filtered sample value p where i = 0..maxFilterLengthP - 1 and j = 0..maxFilterLengthQ - 1. i 'and q j It is called with the output '. 2. Filtered sample values ​​p where i = 0..maxFilterLengthP - 1 and j = 0..maxFilterLengthQ - 1. i 'and q j ' replaces the corresponding sample within the sample sequence recPicture as follows: recPicture[ xCb + xBl + j ][ yCb + yBl + k ] = q j (1382) recPicture[ xCb + xBl - i - 1 ][ yCb + yBl + k ] = p i (1383) - Otherwise (when edgeType is equal to EDGE_HOR), the following ordered steps are applied for each sample position (xCb + xBl + k, yCb + yBl), with respect to k = 0..maxK. 1. The filtering process for chromatic samples as defined in Section 8.8.3.6.9 is for sample values ​​p where the variables maxFilterLengthP and maxFilterLengthQ are i = 0..maxFilterLengthP and j = 0..maxFilterLengthQ. i,k , q j,k , and the variable t C The input is a filtered sample value p where i = 0..maxFilterLengthP - 1 and j = 0..maxFilterLengthQ - 1. i 'and q j It is called with the output '. 2. Filtered sample values ​​p where i = 0..maxFilterLengthP - 1 and j = 0..maxFilterLengthQ - 1. i 'and q j ' replaces the corresponding sample within the sample sequence recPicture as follows: recPicture[ xCb + xBl + k ][ yCb + yBl + j ] = q j (1384) recPicture[ xCb + xBl + k ][ yCb + yBl - i - 1 ] = p i (1385)

[0274] 8.8.3.6.5 Decision process for Luma samples The inputs to this process are as follows: - Sample values ​​p0, p3, q0, and q3 - Variables dpq, sp, sq, spq, sidePisLargeBlk, sideQisLargeBlk, β, and t C

[0275] The output of this process is a variable dSam, which contains the judgment.

[0276] The variables sp and sq are modified as follows: - When sidePisLargeBlk is equal to 1, the following applies: sp = ( sp + Abs( p3- p0) + 1 ) >> 1 (1386) - When sideQisLargeBlk is equal to 1, the following applies: sq = ( sq + Abs( q3- q0) + 1 ) >> 1 (1387)

[0277] The variables sThr1 and sThr2 are derived as follows: - If sidePisLargeBlk is equal to 1, or sideQisLargeBlk is equal to 1, then the following applies: sThr1 = 3 *β>> 5 (1388) sThr2 =β>> 4 (1389) - Otherwise, the following applies: sThr1 =β>> 3 (1390) sThr2 = β >> 2 (1391)

[0278] The variable dSam is specified as follows: - dSam is set to equal to 1 if all of the following conditions are true. - dpq is smaller than sThr2 - sp + sq is smaller than sThr1 - spq is ( 5 * t C + 1) >> Less than 1 - Otherwise, dSam is set to be equal to 0.

[0279] 8.8.3.6.6 Filtering process for Luma samples using short filters The inputs to this process are as follows: - Variables maxFilterLengthP and maxFilterLengthQ - Sample values ​​p where i = 0..maxFilterLengthP and j = 0..maxFilterLengthQ i and q j - Variable dE - Variables dEp and dEq, respectively, which include the decision to filter samples p1 and q1. - Variable t C

[0280] The output of this process is as follows: - Number of filtered samples nDp and nDq - Filtered sample values ​​p where i = 0..nDp - 1 and j = 0..nDq - 1 i 'and q j '

[0281] Depending on the value of dE, the following applies: - If variable dE is equal to 2, then nDp and nDq are both set to be equal to 3, and the following strong filtering is applied: p0' = Clip3( p0 - 3 * t C , p0 + 3 * t C , ( p2+ 2 * p1+ 2 * p0+ 2 * q0+ q1+ 4 ) >> 3 ) (1392) p1' = Clip3( p1 - 2 * t C , p1 + 2 * t C , ( p2+ p1+ p0+ q0+ 2 ) >> 2 ) (1993) p2' = Clip3( p2 - 1 * t C , p² + 1 * t C , ( 2 * p3+ 3 * p2+ p1+ p0+ q0+ 4 ) >> 3 ) (1394) q0' = Clip3( q0 - 3 * t C , q0 + 3 * t C, ( p1+ 2 * p0+ 2 * q0+ 2 * q1+ q2+ 4 ) >> 3 ) (1395) q1' = Clip3( q1 - 2 * t C , q1 + 2 * t C , ( p0+ q0+ q1+ q2+ 2 ) >> 2 ) (1396) q2' = Clip3( q2 - 1 * t C , q² + 1 * t C , ( p0+ q0+ q1+ 3 * q2+ 2 * q3+ 4 ) >> 3 ) (1397) - Otherwise, nDp and nDq are both set to equal 0, and the following weak filtering is applied: - The following applies: Δ= ( 9 * ( q0- p0) - 3 * ( q1- p1) + 8 ) >> 4 (1398) - Abs(Δ) is t C * When the value is less than 10, the following ordered steps apply: - The filtered sample values ​​p0' and q0' are specified as follows: Δ= Clip3( -t C , t C ,Δ) (1399) p0' = Clip1( p0+Δ) (1400) q0' = Clip1( q0-Δ) (1401) - When dEp is equal to 1, the filtered sample value p1' is specified as follows: Δp = Clip3( -( t C >> 1), t C >> 1, ( ( ( p2+ p0+ 1 ) >> 1 ) - p1+Δ) >> 1 ) (1402) p1' = Clip1( p1+Δp ) (1403) - When dEq is equal to 1, the filtered sample value q1' is specified as follows: Δq = Clip3( -( t C >> 1), t C >> 1, ( ( ( q2+ q0+ 1 ) >> 1 ) - q1-Δ) >> 1 ) (1404) q1' = Clip1( q1+Δq ) (1405) - nDp is set to be equal to dEp + 1, and nDq is set to be equal to dEq + 1.

[0282] When nDp is greater than 0 and the pred_mode_plt_flag of the coding unit containing the coding block that contains sample p0 is equal to 1, nDp is set to be equal to 0.

[0283] When nDq is greater than 0 and the pred_mode_plt_flag of the coding unit containing the coding block containing sample q0 is equal to 1, nDq is set to equal to 0.

[0284] 8.8.3.6.7 Filtering process for Luma samples using long filters The inputs to this process are as follows: - Variables maxFilterLengthP and maxFilterLengthQ - Sample values ​​p where i = 0..maxFilterLengthP and j = 0..maxFilterLengthQ i and q j - Variable t C

[0285] The output of this process is as follows: - Filtered sample value p where i = 0..maxFilterLengthP - 1 and j = 0..maxFilterLengthQ - 1 i 'and q j '

[0286] The variable refMiddle is derived as follows: - If maxFilterLengthP is equal to maxFilterLengthQ and maxFilterLengthP is equal to 5, then the following applies: refMiddle = ( p4+ p3+ 2 * ( p2+ p1+ p0+ q0+ q1+ q2) + q3+ q4+ 8 ) >> 4 (1406) - If maxFilterLengthP is equal to maxFilterLengthQ and maxFilterLengthP is not equal to 5, then the following applies: refMiddle = ( p6+ p5+ p4+ p3+ p2+ p1+ 2 * ( p0+ q0) + q1+ q2+ q3+ q4+ q5+ q6+ 8 ) >> 4 (1407) - Rather, if one of the following conditions is true, - maxFilterLengthQ is equal to 7 and maxFilterLengthP is equal to 5. - maxFilterLengthQ is equal to 5 and maxFilterLengthP is equal to 7. The following applies: refMiddle = ( p5+ p4+ p3+ p2+ 2 * ( p1+ p0+ q0+ q1) + q2+ q3+ q4+ q5+ 8 ) >> 4 (1408) - Rather, if one of the following conditions is true, - maxFilterLengthQ is equal to 5 and maxFilterLengthP is equal to 3. - maxFilterLengthQ is equal to 3 and maxFilterLengthP is equal to 5. The following applies: refMiddle = ( p3+ p2+ p1+ p0+ q0+ q1+ q2+ q3+ 4) >> 3 (1409) - Instead, if maxFilterLengthQ is equal to 7 and maxFilterLengthP is equal to 3, the following applies: refMiddle = ( 2 * ( p2+ p1+ p0+ q0) + p0+ p1+ q1+ q2+ q3+ q4+ q5+ q6+ 8 ) >> 4 (1410) - Otherwise, the following applies: refMiddle = ( p6+ p5+ p4+ p3+ p2+ p1+ 2 *( q2+ q1+ q0+ p0) + q0+ q1+ 8 ) >> 4 (1411)

[0287] The variables refP and refQ are derived as follows: refP = (p maxFilterLengtP + p maxFilterLengthP-1 + 1 ) >> 1 (1412) refQ = ( q maxFilterLengtQ + q maxFilterLengthQ-1 + 1 ) >> 1 (1413)

[0288] variable f i and t C PD i However, it is defined as follows: - If maxFilterLengthP is equal to 7, the following applies: f 0..6 = { 59, 50, 41, 32, 23, 14, 5} (1414) t C PD 0..6 = { 6, 5, 4, 3, 2, 1, 1} (1415) - Instead, if maxFilterLengthP is equal to 5, the following applies: f 0..4 = { 58, 45, 32, 19, 6} (1416) t C PD 0..4 = { 6, 5, 4, 3, 2} (1417) - Otherwise, the following applies: f 0..2 = { 53, 32, 11} (1418) t C PD 0..2 = { 6, 4, 2} (1419)

[0289] variable g j and t C QD j However, it is defined as follows: - If maxFilterLengthQ is equal to 7, the following applies: g 0..6 = { 59, 50, 41, 32, 23, 14, 5} (1420) t C QD 0..6 = { 6, 5, 4, 3, 2, 1, 1} (1421) - Instead, if maxFilterLengthQ is equal to 5, the following applies: g 0..4 = { 58, 45, 32, 19, 6} (1422) t C QD 0..4 = { 6, 5, 4, 3, 2} (1423) - Otherwise, the following applies: g 0..2 = { 53, 32, 11} (1424) t C QD 0..2 = { 6, 4, 2} (1425)

[0290] The filtered sample value p is where i = 0..maxFilterLengthP - 1 and j = 0..maxFilterLengthQ - 1. i 'and q j The following is derived: p i ' = Clip3( p i - ( t C *t C PD i ) >> 1, pi + ( t C *t C PD i ) >> 1, ( refMiddle*f i + refP*( 64 - f i ) + 32) >> 6) (1426) q j ' = Clip3( q j - ( t C *t C QD j ) >> 1, q j + ( t C *t C QD j ) >> 1, ( refMiddle*g j + refQ*( 64 - g j ) + 32) >> 6) (1427)

[0291] Sample p i When the pred_mode_plt_flag of a coding unit containing a coding block is equal to 1, the filtered sample value p i ' is the corresponding input sample value p where i = 0..maxFilterLengthP - 1. i It is replaced by.

[0292] Sample Q i When the pred_mode_plt_flag of a coding unit containing a coding block is equal to 1, the filtered sample value q i ' is the corresponding input sample value q where j = 0..maxFilterLengthQ - 1. j It is replaced by.

[0293] 8.8.3.6.8 Decision process for chroma samples The inputs to this process are as follows: - Sample values ​​p0, p3, q0, and q3 - Variables dpq, β, and t C

[0294] The output of this process is a variable dSam, which contains the judgment.

[0295] The variable dSam is specified as follows: - dSam is set to equal to 1 if all of the following conditions are true. - dpq is less than (β>> 2). - Abs(p3-p0) + Abs(q0-q3) is less than (β>> 3). - Abs( p0 - q0) is ( 5 * t C + 1) is less than 1. - Otherwise, dSam is set to be equal to 0.

[0296] 8.8.3.6.9 Filtering process for chroma samples This process is only called when ChromaArrayType is not equal to 0.

[0297] The inputs to this process are as follows: - Variables maxFilterLengthP and maxFilterLengthQ - Chroma sample values ​​p = 0..maxFilterLengthP - 1 and j = 0..maxFilterLengthQ - 1 i and q j - Variable t C

[0298] The output of this process is the filtered sample value p, where i = 0..maxFilterLengthP - 1 and j = 0..maxFilterLengthQ - 1. i 'and q j It is.

[0299] The filtered sample value p is where i = 0..maxFilterLengthP - 1 and j = 0..maxFilterLengthQ - 1. i 'and q j ' is derived as follows: - If both maxFilterLengthP and maxFilterLengthQ are equal to 3, the following strong filtering is applied: p0' = Clip3( p0 - t C , p0+ t C , ( p3+ p2+ p1+ 2 * p0+ q0+ q1+ q2+ 4 ) >> 3 ) (1428) p1' = Clip3( p1- t C , p1+ t C , ( 2 * p3+ p2+ 2 * p1+ p0+ q0+ q1+ 4 ) >> 3 ) (1429) p2' = Clip3( p2- t C , p2+ t C , ( 3 * p3+ 2 * p2+ p1+ p0+ q0+ 4 ) >> 3 ) (1430) q0' = Clip3( q0- t C , q0+ t C , ( p2+ p1+ p0+ 2 * q0+ q1+ q2+ q3+ 4 ) >> 3 ) (1431) q1' = Clip3( q1- t C , q1+ t C , ( p1+ p0+ q0+ 2 * q1+ q2+ 2 * q3+ 4 ) >> 3 ) (1432) q2' = Clip3( q2- t C , q² + t C , ( p0+ q0+ q1+ 2 * q2+ 3 * q3+ 4 ) >> 3 ) (1433) - Instead, if the variable maxFilterLengthP is equal to 1 and maxFilterLengthQ is equal to 3, the following filtering is applied: p0' = Clip3( p0 - t C , p0+ t C , ( 3 * p1+ 2 * p0+ q0+ q1+ q2+ 4 ) >> 3 ) (1434) q0' = Clip3( q0- t C , q0+ t C , ( 2 * p1+ p0+ 2 * q0+ q1+ q2+ q3+ 4 ) >> 3 ) (1435) q1' = Clip3( q1- t C , q1+ t C , ( p1+ p0+ q0+ 2 * q1+ q2+ 2 * q3+ 4 ) >> 3 ) (1436) q2' = Clip3( q2- t C , q² + t C , ( p0+ q0+ q1+ 2 * q2+ 3 * q3+ 4 ) >> 3 ) (1437) - Otherwise, the following weak filtering will be applied. Δ= Clip3( -t C , t C , ( ( ( ( q0- p0) << 2 ) + p1- q1+ 4 ) >> 3 ) ) (1438) p0' = Clip1( p0+Δ) (1439) q0' = Clip1( q0-Δ) (1440)

[0300] Sample p i When the pred_mode_plt_flag of a coding unit containing a coding block is equal to 1, the filtered sample value p i ' is the corresponding input sample value p where i = 0..maxFilterLengthP - 1. i It is replaced by.

[0301] Sample Q iWhen the pred_mode_plt_flag of a coding unit containing a coding block is equal to 1, the filtered sample value q i ' is the corresponding input sample value q where i = 0..maxFilterLengthQ - 1. i It is replaced by.

[0302] Currently, signaling for Cb and Cr deblocking control parameters is performed, for example, when the value of ChromaArrayType is equal to 0, even if the color format of the encoded sequence is 4:0:0. When the input sequence has no color components, there is no further need to perform deblocking for color components.

[0303] In some cases, the deblocking control parameters may be the same across both the luminous and chromatic components, in typical cases.

[0304] Blocks coded using a joint Cb-Cr mechanism may exhibit different quantization error characteristics and may benefit from signaling separate deblocking control parameters (beta and Tc offsets).

[0305] Embodiment 1 In this embodiment, the beta and Tc offsets for deblocking Cb and Cr (for simplicity, in this application we further refer to these offsets as deblocking control parameters) are signaled (only) when the value of ChromaArrayType is not equal to 0.

[0306] The syntax for this embodiment is shown below.

[0307] [Table 7A] [Table 7B]

[0308] or

[0309] [Table 8]

[0310] or

[0311] [Table 9]

[0312] In some cases, ChromaArrayType is signaled at the Sequence Parameter Set (SPS) level, so the value of ChromaArrayType may not be obtained at the PPS syntax level. Conditional signaling based on ChromaArrayType within the PPS can create an analysis dependency between the SPS and PPS. Therefore, one alternative solution is to move the existing deblocking control parameter from the PPS level to the SPS level. In this way, the analysis dependency between the SPS and PPS is avoided.

[0313] Alternatively, deblocking control parameters can be conditionally signaled based on an existing syntax element called pps_chroma_tool_offsets_present_flag.

[0314] The corrected syntax for PPS is shown below.

[0315] [Table 10A] [Table 10B]

[0316] The above solution has the advantage of not creating any analysis dependencies between SPS and PPS, and signaling deblocking control parameters for the Cb and Cr components only when the value of ChromaArrayType is not equal to 0.

[0317] Another alternative solution is to conditionally not signal the deblocking control parameters at the PPS level (based on ChromaArrayType), and to conditionally signal the deblocking control parameters at the PH and SH levels (based on ChromaArrayType).

[0318] In this embodiment, the definitions of these syntaxes in the table may refer to the above explanation.

[0319] Embodiment 2 In this embodiment, a new syntax element is signaled. This syntax is introduced to indicate whether the luma and chroma deblocking control parameters are the same. When the values ​​of the luma and chroma deblocking control parameters are different, the Cb and Cr deblocking control parameters are further signaled. In this embodiment, redundant signaling is eliminated when the deblocking parameters are the same across the luma and chroma components.

[0320] The syntax and semantics of this embodiment are as follows:

[0321] [Table 11]

[0322] [Table 12]

[0323] [Table 13]

[0324] The semantics of the newly introduced syntax elements are as follows:

[0325] A value of 0 for slice_chroma_offsets_same_as_luma indicates that the syntax elements slice_cb_beta_offset_div2, slice_cb_tc_offset_div2, slice_cr_beta_offset_div2, and slice_cr_tc_offset_div2 will be further signaled within the slice header.

[0326] A value of 1 for slice_chroma_offsets_same_as_luma specifies that the values ​​of the syntax elements slice_cb_beta_offset_div2, slice_cb_tc_offset_div2, slice_cr_beta_offset_div2, and slice_cr_tc_offset_div2 are not further signaled and are inferred to be the same as slice_beta_offset_div2 and slice_tc_offset_div2, respectively.

[0327] A value of 0 for ph_chroma_offsets_same_as_luma indicates that the syntax elements ph_cb_beta_offset_div2, ph_cb_tc_offset_div2, ph_cr_beta_offset_div2, and ph_cr_tc_offset_div2 are further signaled within the picture header.

[0328] A value of 1 for ph_chroma_offsets_same_as_luma specifies that the values ​​of the syntax elements ph_cb_beta_offset_div2, ph_cb_tc_offset_div2, ph_cr_beta_offset_div2, and ph_cr_tc_offset_div2 are not signaled and are further inferred to be the same as ph_beta_offset_div2 and ph_tc_offset_div2, respectively.

[0329] A value of 0 for pps_chroma_offsets_same_as_luma specifies that the syntax elements pps_cb_beta_offset_div2, pps_cb_tc_offset_div2, pps_cr_beta_offset_div2, and pps_cr_tc_offset_div2 are further signaled within PPS. A value of 1 for pps_chroma_offsets_same_as_luma specifies that the values ​​of the syntax elements pps_cb_beta_offset_div2, pps_cb_tc_offset_div2, pps_cr_beta_offset_div2, and pps_cr_tc_offset_div2 are not signaled and are further inferred to be the same as pps_beta_offset_div2 and pps_tc_offset_div2, respectively.

[0330] For definitions of other syntax elements in the table, please refer to the explanation above.

[0331] Embodiment 3 In this embodiment, separate β and TC offset parameters are introduced for joint CB-CR coded blocks.

[0332] The syntax is as follows:

[0333] [Table 14]

[0334] [Table 15]

[0335] [Table 16]

[0336] The semantics of the newly introduced syntax elements are as follows:

[0337] pps_cbcr_beta_offset_div2 and pps_cbcr_tc_offset_div2 specify the default deblocking parameter offsets for the congruent Cb-Cr components of a slice referencing a PPS (divided by 2) of β and tC, unless the default deblocking parameter offsets are overridden by deblocking parameter offsets present in the picture header or slice header of the slice referencing the PPS. The values ​​of both pps_cbcr_beta_offset_div2 and pps_cbcr_tc_offset_div2 are in the range of -12 to 12, including -12 and 12. If they are not present, the values ​​of both pps_cbcr_beta_offset_div2 and pps_cbcr_tc_offset_div2 are presumed to be equal to 0.

[0338] ph_cbcr_beta_offset_div2 and ph_cbcr_tc_offset_div2 specify the deblocking parameter offsets (divided by 2) for β and tC applied to the congruent Cb-Cr components of the slice associated with PH. The values ​​of both ph_cbcr_beta_offset_div2 and ph_cbcr_tc_offset_div2 are within the range of -12 to 12, including -12 and 12. When they are not present, the values ​​of ph_cbcr_beta_offset_div2 and ph_cbcr_tc_offset_div2 are presumed to be equal to pps_cbcr_beta_offset_div2 and pps_cbcr_tc_offset_div2.

[0339] slice_cbcr_beta_offset_div2 and slice_cbcr_tc_offset_div2 specify the deblocking parameter offsets for β and tC (divided by 2) that are applied to the congruent Cb-Cr components of the current slice. The values ​​of slice_cbcr_beta_offset_div2 and slice_cbcr_tc_offset_div2 are both in the range of -12 to 12, including -12 and 12. If they are not present, the values ​​of slice_cbcr_beta_offset_div2 and slice_cbcr_tc_offset_div2 are presumed to be equal to ph_cbcr_beta_offset_div2 and ph_cbcr_tc_offset_div2, respectively.

[0340] The necessary changes to derive the QP value for chromatic deblocking are as follows:

[0341] The value of the variable β' is determined based on the quantization parameter Q, which is derived as follows, as specified in Table 43. sliceBetaOffsetDiv2 = ((TuCResMode[ xTb Q ][ yTb Q ] == 2) || (TuCResMode[ xTbp ][ yTb p ] == 2) ? slice_cbcr_beta_offset_div2 : (cIdx == 1 ? slice_cb_beta_offset_div2 : slice_cr_beta_offset_div2 )) Q = Clip3( 0, 63, Qp C + ( sliceBetaOffsetDiv2 << 1 ) ) (1355) In the formula, slice_cb_beta_offset_div2, slice_cr_beta_offset_div2, and slice_cbcr_beta_offset_div2 are, respectively, sample q 0,0 These are the values ​​of the syntax elements slice_cb_beta_offset_div2, slice_cr_beta_offset_div2, and slice_cbcr_beta_offset_div2 for slices containing [the specified element].

[0342] variable t C The value of ' is determined based on the chromatic quantization parameter Q, which is derived as follows, as specified in Table 43. sliceTcOffsetDiv2 = ((TuCResMode[ xTb Q ][ yTb Q ] || TuCResMode[ xTb p ][ yTb p ] == 2) ? slice_cbcr_tc_offset_div2 : (cIdx == 1 ? slice_cb_tc_offset_div2 : slice_cr_tc_offset_div2 )) Q = Clip3( 0, 65, Qp C + 2 * ( bS - 1 ) + ( sliceTcOffsetDiv2 << 1 ) ) (1357) In the formula, slice_cb_tc_offset_div2, slice_cr_beta_offset_div2, and slice_cr_tc_offset_div2 are, respectively, sample q 0,0 These are the values ​​of the syntax elements slice_cb_tc_offset_div2, slice_cr_tc_offset_div2, and slice_cbcr_tc_offset_div2 for slices containing .

[0343] For definitions of other syntax elements in the table, please refer to the explanation above.

[0344] In the implementation shown in Figure 8, a coding method performed by the decoding device is disclosed, and the method includes the following:

[0345] S801: Obtain the bitstream.

[0346] The bitstream may be obtained via a wireless or wired network. The bitstream may be 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, microwave, WiFi, Bluetooth, LTE, or 5G.

[0347] In the embodiment, the bitstream is a sequence of bits in the form of a network abstraction layer (NAL) unit stream or byte stream that forms a representation of a sequence of access units (AUs) that form one or more coded video sequences (CVS).

[0348] In some embodiments, with respect to the decoding process, the decoder reads the bitstream and derives the decoded picture from the bitstream, and with respect to the encoding process, the encoder generates the bitstream.

[0349] Typically, a bitstream contains syntactic elements formed by a syntactic structure.

[0350] Syntax elements: Elements of data represented within a bitstream.

[0351] Syntax structure: Zero or more syntax elements that exist together in a bitstream in a specified order.

[0352] In a particular case, the bitstream format defines the relationship between a network abstraction layer (NAL) unit stream and a byte stream, and either the network abstraction layer (NAL) unit stream or the byte stream is called a bitstream.

[0353] A bitstream can be in one of two formats: a NAL unit stream or a byte stream. The NAL unit stream format is conceptually the more "basic" type. It contains a sequence of syntactic structures called NAL units, which are ordered in decryption order. There are constraints imposed on the decryption order (and content) of the NAL units in a NAL unit stream.

[0354] The byte stream format can be constructed from the NAL unit stream format by ordering the NAL units in decoding order and prefixing each NAL unit with a start code prefix and zero or more zero-value bytes to form a stream of bytes. The NAL unit stream format can be extracted from the byte stream format by searching for the position of a unique start code prefix pattern within this stream of bytes.

[0355] This section clarifies the relationship between the original picture provided by the bitstream and the decoded picture.

[0356] A video source represented by a bitstream is a sequence of pictures in the order they are decoded.

[0357] The original picture and the decoded picture each consist of one or more sample sequences as follows: - Luma (Y) only (monochrome) - Luma and two chroma (YCbCr or YCgCo) - Green, blue, and red (also known as GBR or RGB) - Arrays representing other unspecified monochrome or tristimulus color samples (for example, also known as YZX, XYZ, etc.)

[0358] The variables and terms associated with these sequences are called luma (or L or Y) and chroma, regardless of the actual color representation used, and the two chroma sequences are called Cb and Cr. The actual color representation used may be indicated by the syntax specified within the VUI parameters defined in ITU-T H.SEI | ISO / IEC 23002-7.

[0359] S802: Retrieves the value of a syntax element from a bitstream.

[0360] In implementation, the value of a syntax element relates to the deblocking control parameter for the chroma component of the coded picture slice. For example, the value of a syntax element indicates whether a syntax element related to the chroma tool offset exists within the Picture Parameter Set (PPS) raw byte sequence payload (RBSP) structure.

[0361] In the example, the syntax is represented by pps_chroma_tool_offsets_present_flag. A pps_chroma_tool_offsets_present_flag equal to 1 specifies that syntax elements related to chroma tool offsets may be present in the PPS RBSP syntax structure, and that chroma deblocking tc and β offset syntax elements may be present in the picture's PH syntax structure or SH that references the PPS. A pps_chroma_tool_offsets_present_flag equal to 0 specifies that syntax elements related to chroma tool offsets are not present in the PPS RBSP syntax structure, and that chroma deblocking tc and β offset syntax elements are not present in the picture's PH syntax structure or SH that references the PPS. When sps_chroma_format_idc is equal to 0, the value of pps_chroma_tool_offsets_present_flag is equal to 0.

[0362] In the example, the values ​​of the syntax elements are obtained within the PPS.

[0363] In the example, when the video sequence does not contain any color components, the value of the syntax element is equal to 0.

[0364] In the example, the syntax value is used to determine whether the deblocking control parameter for the lumen component of the coding block is the same as the deblocking control parameter for the chromen component of the block.

[0365] S803: When the value of the syntax element is equal to a preset value, retrieve the value of the deblocking control parameter for the slice's chroma component from the bitstream.

[0366] The pre-set value is an integer. In the example, the pre-set value is not equal to 0. In the example, the pre-set value is equal to 1.

[0367] In the example, the value of the deblocking control parameter for the chroma component of the coding block is obtained within the PPS.

[0368] In the example, the value of the deblocking control parameter for the chroma component of the slice is obtained within the picture header PH.

[0369] In the example, the value of the deblocking control parameter for the chroma component of the slice is obtained within the slice header SH.

[0370] In the example, the deblocking control parameter for the chroma component of the slice is signaled when the video sequence has a color component.

[0371] In the example, at the PPS level, the deblocking control parameter for the chroma component of the slice is represented by pps_cb_beta_offset_div2, pps_cb_tc_offset_div2, pps_cr_beta_offset_div2, or pps_cr_tc_offset_div2.

[0372] In some implementations, it may be understood that there is only one deblocking control parameter for the chroma component, or any combination of these deblocking control parameters. For example, all four of these deblocking control parameters are conditionally signaled by the value of pps_chroma_tool_offsets_present_flag.

[0373] [Table 17]

[0374] pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2 specify the default deblocking parameter offsets for β and tC (divided by 2) applied to the Cb component of a slice referencing a PPS, unless the default deblocking parameter offsets are overridden by deblocking parameter offsets present in the picture header or slice header of the slice referencing the PPS. The values ​​of both pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2 are in the range of -12 to 12, including -12 and 12. When not present, the values ​​of pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2 are presumed to be equal to pps_luma_beta_offset_div2 and pps_luma_tc_offset_div2, respectively.

[0375] pps_cr_beta_offset_div2 and pps_cr_tc_offset_div2 specify the default deblocking parameter offsets for the Cr component of a slice referencing a PPS (divided by 2) β and tC, unless the default deblocking parameter offsets are overridden by deblocking parameter offsets present in the picture header or slice header of the slice referencing the PPS. The values ​​of both pps_cr_beta_offset_div2 and pps_cr_tc_offset_div2 are in the range of -12 to 12, including -12 and 12. When not present, the values ​​of pps_cr_beta_offset_div2 and pps_cr_tc_offset_div2 are presumed to be equal to pps_luma_beta_offset_div2 and pps_luma_tc_offset_div2, respectively.

[0376] pps_luma_beta_offset_div2 and pps_luma_tc_offset_div2 specify the default deblocking parameter offsets for the luma components of a slice referencing a PPS (divided by 2) β and tC, unless the default deblocking parameter offsets are overridden by deblocking parameter offsets present in the picture header or slice header of the slice referencing the PPS. The values ​​of both pps_luma_beta_offset_div2 and pps_luma_tc_offset_div2 are in the range of -12 to 12, including -12 and 12. If they are not present, the values ​​of both pps_luma_beta_offset_div2 and pps_luma_tc_offset_div2 are presumed to be equal to 0.

[0377] In the example, at the PH level, the deblocking control parameters for the chroma components of a slice are represented by ph_cb_beta_offset_div2, ph_cb_tc_offset_div2, ph_cr_beta_offset_div2, or ph_cr_tc_offset_div2. In some implementations, it may be understood that there is only one deblocking control parameter for the chroma components, or any combination of these deblocking control parameters. For example, all four of these deblocking control parameters are conditionally signaled by the value of pps_chroma_tool_offsets_present_flag.

[0378] [Table 18]

[0379] ph_cb_beta_offset_div2 and ph_cb_tc_offset_div2 specify the deblocking parameter offsets for β and tC (divided by 2) that are applied to the Cb component of the slice in the current picture. The values ​​for both ph_cb_beta_offset_div2 and ph_cb_tc_offset_div2 are in the range of -12 to 12, including -12 and 12.

[0380] When they do not exist, the values ​​of ph_cb_beta_offset_div2 and ph_cb_tc_offset_div2 are inferred as follows:

[0381] If pps_chroma_tool_offsets_present_flag is equal to 1, then the values ​​of ph_cb_beta_offset_div2 and ph_cb_tc_offset_div2 are presumed to be equal to pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2, respectively.

[0382] Otherwise (when pps_chroma_tool_offsets_present_flag is equal to 0), the values ​​of ph_cb_beta_offset_div2 and ph_cb_tc_offset_div2 are presumed to be equal to ph_luma_beta_offset_div2 and ph_luma_tc_offset_div2, respectively.

[0383] ph_cr_beta_offset_div2 and ph_cr_tc_offset_div2 specify the deblocking parameter offsets for β and tC (divided by 2) that are applied to the Cr component of the slice in the current picture. The values ​​for both ph_cr_beta_offset_div2 and ph_cr_tc_offset_div2 are in the range of -12 to 12, including -12 and 12.

[0384] When they do not exist, the values ​​of ph_cr_beta_offset_div2 and ph_cr_tc_offset_div2 are inferred as follows:

[0385] If pps_chroma_tool_offsets_present_flag is equal to 1, then the values ​​of ph_cr_beta_offset_div2 and ph_cr_tc_offset_div2 are presumed to be equal to pps_cr_beta_offset_div2 and pps_cr_tc_offset_div2, respectively.

[0386] Otherwise (when pps_chroma_tool_offsets_present_flag is equal to 0), the values ​​of ph_cr_beta_offset_div2 and ph_cr_tc_offset_div2 are presumed to be equal to ph_luma_beta_offset_div2 and ph_luma_tc_offset_div2, respectively.

[0387] ph_luma_beta_offset_div2 and ph_luma_tc_offset_div2 specify the deblocking parameter offsets for β and tC (divided by 2) that are applied to the luma components of the slice in the current picture. The values ​​of ph_luma_beta_offset_div2 and ph_luma_tc_offset_div2 are both in the range of -12 to 12, including -12 and 12. If they are not present, the values ​​of ph_luma_beta_offset_div2 and ph_luma_tc_offset_div2 are inferred to be equal to pps_luma_beta_offset_div2 and pps_luma_tc_offset_div2, respectively.

[0388] In the example, at the slice header level, the deblocking control parameters for the chroma components of the slice are represented by sh_cb_beta_offset_div2, sh_cb_tc_offset_div2, sh_cr_beta_offset_div2, or sh_cr_tc_offset_div2.

[0389] In some implementations, it may be understood that there is only one deblocking control parameter for the chroma component, or any combination of these deblocking control parameters. For example, all four of these deblocking control parameters are conditionally signaled by the value of pps_chroma_tool_offsets_present_flag.

[0390] [Table 19]

[0391] sh_cb_beta_offset_div2 and sh_cb_tc_offset_div2 specify the deblocking parameter offsets for β and tC (divided by 2) that are applied to the Cb component of the current slice. The values ​​for both sh_cb_beta_offset_div2 and sh_cb_tc_offset_div2 are in the range of -12 to 12, including -12 and 12.

[0392] When they do not exist, the values ​​of sh_cb_beta_offset_div2 and sh_cb_tc_offset_div2 are inferred as follows:

[0393] If pps_chroma_tool_offsets_present_flag is equal to 1, the values ​​of sh_cb_beta_offset_div2 and sh_cb_tc_offset_div2 are presumed to be equal to ph_cb_beta_offset_div2 and ph_cb_tc_offset_div2, respectively.

[0394] Otherwise (when pps_chroma_tool_offsets_present_flag is equal to 0), the values ​​of sh_cb_beta_offset_div2 and sh_cb_tc_offset_div2 are presumed to be equal to sh_luma_beta_offset_div2 and sh_luma_tc_offset_div2, respectively.

[0395] sh_cr_beta_offset_div2 and sh_cr_tc_offset_div2 specify the deblocking parameter offsets for β and tC (divided by 2) that are applied to the Cr component of the current slice. The values ​​for both sh_cr_beta_offset_div2 and sh_cr_tc_offset_div2 are in the range of -12 to 12, including -12 and 12.

[0396] When they do not exist, the values ​​of sh_cr_beta_offset_div2 and sh_cr_tc_offset_div2 are inferred as follows:

[0397] If pps_chroma_tool_offsets_present_flag is equal to 1, the values ​​of sh_cr_beta_offset_div2 and sh_cr_tc_offset_div2 are presumed to be equal to ph_cr_beta_offset_div2 and ph_cr_tc_offset_div2, respectively.

[0398] Otherwise (when pps_chroma_tool_offsets_present_flag is equal to 0), the values ​​of sh_cr_beta_offset_div2 and sh_cr_tc_offset_div2 are presumed to be equal to sh_luma_beta_offset_div2 and sh_luma_tc_offset_div2, respectively.

[0399] sh_luma_beta_offset_div2 and sh_luma_tc_offset_div2 specify the deblocking parameter offsets for β and tC (divided by 2) that are applied to the luma components of the current slice. The values ​​of sh_luma_beta_offset_div2 and sh_luma_tc_offset_div2 are both in the range of -12 to 12, including -12 and 12. If they are not present, the values ​​of sh_luma_beta_offset_div2 and sh_luma_tc_offset_div2 are inferred to be equal to ph_luma_beta_offset_div2 and ph_luma_tc_offset_div2, respectively.

[0400] In the implementation, the method further includes setting a value for the deblocking control parameter for the chroma component of a slice equal to the value of the deblocking control parameter for the chroma component of the slice when the value of the syntax element is not equal to a preset value.

[0401] S804: The deblocking process is executed on the blocks within the slice according to the value of the deblocking control parameter.

[0402] Generally speaking, with respect to the deblocking filter process, the input to the deblocking filter process is the reconstructed picture before deblocking, for example, the sequence recPictureL, and, if sps_chroma_format_idc is not equal to 0, the sequences recPictureCb and recPictureCr.

[0403] The output of this process is the corrected and reconstructed picture after deblocking, the sequence recPictureL, and, if sps_chroma_format_idc is not equal to 0, the sequences recPictureCb and recPictureCr.

[0404] The vertical edges within the picture are filtered first. Then, the horizontal edges within the picture are filtered, using the sample corrected by the vertical edge filtering process as input. The vertical and horizontal edges within the CTB of each CTU are processed separately on a coding unit basis. The vertical edges of the coding blocks within a coding unit are filtered starting from the left edge of the coding block and proceeding towards the right edge of the coding block in their geometric order. The horizontal edges of the coding blocks within a coding unit are filtered starting from the top edge of the coding block and proceeding towards the bottom edge of the coding block in their geometric order.

[0405] Further details regarding the deblocking process may be found in the explanation above.

[0406] In the implementation shown in Figure 11, a video decoding device 900 is disclosed, and the device 900 is Includes a receiving module 901 configured to acquire a bitstream, The analysis module 902 is configured to obtain the value of a syntax element from the bitstream, the value of which relates to a deblocking control parameter for the chroma component of a slice of coded picture (for example, the value of the syntax element indicates whether a syntax element related to the chroma tool offset exists within the picture parameter set PPS raw byte sequence payload RBSP structure), and the analysis module 902 is configured to obtain the value of a deblocking control parameter for the chroma component of a slice from the bitstream when the value of the syntax element is equal to a preset value, the preset value being an integer value.

[0407] The bitstream may be obtained via a wireless or wired network. The bitstream may be 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, microwave, WiFi, Bluetooth, LTE, or 5G.

[0408] In the embodiment, the bitstream is a sequence of bits in the form of a network abstraction layer (NAL) unit stream or byte stream that forms a representation of a sequence of access units (AUs) that form one or more coding video sequences (CVS).

[0409] In some embodiments, with respect to the decoding process, the decoder reads the bitstream and derives the decoded picture from the bitstream, and with respect to the encoding process, the encoder generates the bitstream.

[0410] Typically, a bitstream contains syntactic elements formed by a syntactic structure.

[0411] Syntax elements: Elements of data represented within a bitstream.

[0412] Syntax structure: Zero or more syntax elements that exist together in a bitstream in a specified order.

[0413] In a particular case, the bitstream format defines the relationship between a network abstraction layer (NAL) unit stream and a byte stream, and either the network abstraction layer (NAL) unit stream or the byte stream is called a bitstream.

[0414] A bitstream can be in one of two formats: a NAL unit stream or a byte stream. The NAL unit stream format is conceptually the more "basic" type. It contains a sequence of syntactic structures called NAL units, which are ordered in decryption order. There are constraints imposed on the decryption order (and content) of the NAL units in a NAL unit stream.

[0415] The byte stream format can be constructed from the NAL unit stream format by ordering the NAL units in decoding order and prefixing each NAL unit with a start code prefix and zero or more zero-value bytes to form a stream of bytes. The NAL unit stream format can be extracted from the byte stream format by searching for the position of a unique start code prefix pattern within this stream of bytes.

[0416] This section clarifies the relationship between the original picture provided by the bitstream and the decoded picture.

[0417] A video source represented by a bitstream is a sequence of pictures in the order they are decoded.

[0418] The original picture and the decoded picture each consist of one or more sample sequences as follows: - Luma (Y) only (monochrome) - Luma and two chroma (YCbCr or YCgCo) - Green, blue, and red (also known as GBR or RGB) - Arrays representing other unspecified monochrome or tristimulus color samples (for example, also known as YZX, XYZ, etc.)

[0419] The variables and terms associated with these sequences are called luma (or L or Y) and chroma, regardless of the actual color representation used, and the two chroma sequences are called Cb and Cr. The actual color representation used may be indicated by the syntax specified within the VUI parameters defined in ITU-T H.SEI | ISO / IEC 23002-7.

[0420] Further details of the receiving module 901 and the analysis module 902 may be found in the examples and implementations of the method described above. [Examples]

[0421] A coding method performed by a decoding device, Steps to obtain the bitstream related to the coding block, Steps to obtain syntax values ​​from a bitstream, A method comprising the step of obtaining the value of a deblocking control parameter from a bitstream when the value of the syntax is equal to a preset value (in the example, the preset value is not equal to 0). [Examples]

[0422] The method of Example 1 in which the syntax value is obtained at the sequence parameter set level. [Examples]

[0423] The method of Example 1 in which the syntax value is obtained according to the picture parameter set. [Examples]

[0424] The method in Example 1 in which the syntax value is obtained according to the picture header. [Examples]

[0425] The method of Example 1 in which the syntax value is obtained according to the slice header. [Examples]

[0426] One of the methods from Examples 1 to 5, in which the value of the deblocking control parameter is obtained according to the picture parameter set. [Examples]

[0427] One of the methods from Examples 1 to 5 in which the value of the deblocking control parameter is obtained according to the picture header. [Examples]

[0428] One of the methods from Examples 1 to 5 in which the value of the deblocking control parameter is obtained according to the slice header. [Examples]

[0429] One of the methods from Examples 1 to 5 in which the value of the deblocking control parameter is obtained at the sequence parameter set level. [Examples]

[0430] One of the methods from Examples 1 to 9 used to indicate that the syntax value does not contain any color components in the video sequence. [Examples]

[0431] One of the methods from Examples 1 to 10 in which a deblocking control parameter is signaled only when the video sequence has color components. [Examples]

[0432] A method from any one of Examples 1 to 9 used to determine whether the syntax value is the same as the deblocking control parameter for the chroma component of a block. [Examples]

[0433] One of the two methods in Examples 1 to 12, where the value of the deblocking control parameter is a preset deblocking parameter offset applied to the combined Cb-Cr component of the block. [Examples]

[0434] A decoder (30) including a processing circuit for performing the method according to any one of Examples 1 to 13. [Examples]

[0435] A computer program product comprising program code for performing the method according to any one of Examples 1 to 14 when executed on a computer or processor. [Examples]

[0436] One or more processors, A decoder comprising a non-temporary computer-readable storage medium coupled to a processor and storing a program for execution by the processor, wherein the program configures the decoder to perform the method according to any one of Examples 1 to 15 when the program is executed by the processor. [Examples]

[0437] A non-temporary computer-readable medium that, when executed by a computer device, carries program code that causes the computer device to perform one of the methods described in Examples 1 to 16.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[0452]

number

[0453] It is used to represent division in mathematical equations where truncation or rounding is not intended.

[0454]

number

[0455] The sum of f(i), where i takes all integer values ​​from x to y, including y. The x % y method. The remainder of x divided by y, defined only for integers x and y such that x >= 0 and y > 0.

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

[0457] Relational operators The following relational operators are defined as follows: > larger >= Above < Less than <= Below == equal != Not equal

[0458] When a relational operator is applied to a syntax element or variable assigned the value "na" (not applicable), the value "na" is treated as a different value for the syntax element or variable. The value "na" is considered not to be equal to any other value.

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

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

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

[0462] Mathematical functions The following mathematical function is defined.

[0463]

number

[0464] Asin(x) is a trigonometric inverse sine function that acts on an argument x in the range of -1.0 to 1.0, including -1.0 and 1.0, and has output values ​​in radians in the range of -π÷2 to π÷2, including -π÷2 and π÷2. Atan(x) is the trigonometric inverse tangent function that acts on the argument x and has an output value in radians ranging from -π÷2 to π÷2, including -π÷2 and π÷2.

[0465]

number

[0466] Ceil(x) The smallest integer greater than or equal to x. Clip1 Y ( x ) = Clip3( 0, ( 1 << BitDepth Y ) - 1, x ) Clip1 C ( x ) = Clip3( 0, ( 1 << BitDepth C ) - 1, x )

[0467]

number

[0468] Cos(x) is the trigonometric cosine function acting on an argument x in radians. Floor(x): The largest integer less than or equal to x.

[0469]

number

[0470] Ln(x) is the natural logarithm of x (a logarithm with base e, where e is the base constant of the natural logarithm, 2.718281828...). Log2(x) is the logarithm of x with base 2. Log10(x) is the base-10 logarithm of x.

[0471]

number

[0472] Round( x ) = Sign( x ) * Floor( Abs( x ) + 0.5 )

[0473]

number

[0474] Sin(x) is the trigonometric sine function acting on an argument x in radians.

[0475]

number

[0476] Swap(x, y) = (y, x) Tan(x) is the trigonometric tangent function that acts on an argument x in radians.

[0477] Order of operations When precedence in an expression is not explicitly indicated using parentheses, the following rules apply: Operations with higher priority are evaluated before any operations with lower priority. Operations with the same priority are evaluated from left to right.

[0478] The table below clearly shows the order of operations from highest to lowest, with higher positions in the table indicating higher priority.

[0479] With respect to operators also used in the C programming language, the precedence used herein is the same as that used in the C programming language.

[0480] [Table 20]

[0481] Text description of logical operations In the text, in the following form, namely, if (condition 0) Statement 0 else if (condition 1) Statement 1 else / * Comment providing information about the remaining conditions * / statement n Statements of logical operations, mathematically described in this form, can be written as follows: The following applies: / ... - If condition 0, statement 0 - Instead, if condition 1 is true, then statement 1 - ... - Otherwise (comments providing information about the remaining conditions), statement n

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

[0483] In the text, in the following form, namely, if( condition 0a && condition 0b ) Statement 0 else if( condition 1a || condition 1b ) Statement 1 ... else statement n Statements of logical operations that are mathematically described in this form may be written as follows: The following applies: - If all of the following conditions are true, then statement 0 - Condition 0a - Condition 0b - Instead, if one or more of the following conditions are true, then Statement 1 - Condition 1a - Condition 1b - ... - Otherwise, statement n

[0484] In the text, in the following form, namely, if (condition 0) Statement 0 if (Condition 1) Statement 1 Statements of logical operations, mathematically described in this form, can be written as follows: When condition 0, statement 0 When condition 1 is met, statement 1

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

[0486] For example, the encoder 20 and decoder 30, and embodiments of the functions described herein in relation to the encoder 20 and decoder 30, for example, may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored as one or more instructions or codes on a computer-readable medium or transmitted over 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 transfer of computer programs from one place to another, for example, by a communication protocol. Thus, generally speaking, the computer-readable medium may correspond to (1) a non-transient, 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 that can be accessed by one or more computers or one or more processors to retrieve instructions, codes, and / or data structures for implementations of the technologies described herein. Computer program products may include computer-readable medium.

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

[0488] 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. Therefore, when used herein, the term “processor” may refer to either the above-described structures or any other structure suitable for implementing the technologies 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 technologies may all be implemented in one or more circuits or logic elements.

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

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

Claims

1. It is a coding method, A step of obtaining a value of a syntax element from a bitstream, wherein the value of the syntax element indicates signaling for a deblocking control parameter for the chroma component of a coded picture slice, the deblocking control parameter includes a deblocking parameter offset for the Cr component and a deblocking parameter offset for the Cb component, the deblocking parameter offset for the Cr component is a separate parameter from the deblocking parameter offset for the Cb component, the value of the syntax element is 0 when there are no color components in the video sequence, and the value of the syntax element is used to determine whether the deblocking control parameter for the chroma component of the slice is the same as the deblocking control parameter for the chroma component of the slice. When the value of the syntax element is equal to a preset value which is an integer, the step of analyzing the value of the deblocking control parameter for the chroma component of the slice from the bitstream, A method comprising the step of performing a deblocking process on blocks in the slice according to the value of the deblocking control parameter.

2. The method according to claim 1, wherein the value of the syntax element is obtained from a picture parameter set (PPS).

3. The method according to claim 2, wherein the value of the deblocking control parameter for the chromatic component of the slice is obtained from the PPS.

4. The method according to claim 1, wherein the value of the deblocking control parameter for the chroma component of the slice is obtained from the picture header (PH).

5. The method according to claim 1, wherein the value of the deblocking control parameter for the chroma component of the slice is obtained from the slice header (SH).

6. The method according to claim 1, wherein the deblocking control parameter for the chroma component of the slice is signaled when the video sequence has a color component.

7. The method according to claim 1, further comprising the step of setting the value of the deblocking control parameter for the chroma component of the slice to the value of the deblocking control parameter for the luma component of the slice when the value of the syntax element is not equal to the preset value.

8. The method according to claim 1, wherein the value of the deblocking control parameter is a preset deblocking parameter offset applied to the congruent Cb-Cr component of the slice.

9. A decoder including a processing circuit for performing an operation, wherein the operation is Obtaining a value of a syntax element from a bitstream, wherein the value of the syntax element indicates signaling for a deblocking control parameter for the chroma component of a coded picture slice, the deblocking control parameter includes a deblocking parameter offset for the Cr component and a deblocking parameter offset for the Cb component, the deblocking parameter offset for the Cr component is a separate parameter from the deblocking parameter offset for the Cb component, the value of the syntax element is 0 when there are no color components in the video sequence, and the value of the syntax element is used to determine whether the deblocking control parameter for the chroma component of the slice is the same as the deblocking control parameter for the chroma component of the slice. When the value of the syntax element is equal to a preset value which is an integer, the value of the deblocking control parameter for the chroma component of the slice is analyzed from the bitstream. A decoder comprising performing a deblocking process on blocks in the slice according to the value of the deblocking control parameter.

10. The decoder according to claim 9, wherein the value of the syntax element is obtained from a picture parameter set (PPS).

11. The decoder according to claim 10, wherein the value of the deblocking control parameter for the chroma component of the slice is obtained from the PPS.

12. The decoder according to claim 9, wherein the value of the deblocking control parameter for the chroma component of the slice is obtained from the picture header (PH).

13. It is a decoder, One or more processors, The system includes a non-temporary computer-readable storage medium coupled to one or more processors and containing a bitstream that is decoded by performing an operation, and the operation is Obtaining a value of a syntax element from a bitstream, wherein the value of the syntax element indicates signaling for a deblocking control parameter for the chroma component of a coded picture slice, the deblocking control parameter includes a deblocking parameter offset for the Cr component and a deblocking parameter offset for the Cb component, the deblocking parameter offset for the Cr component is a separate parameter from the deblocking parameter offset for the Cb component, the value of the syntax element is 0 when there are no color components in the video sequence, and the value of the syntax element is used to determine whether the deblocking control parameter for the chroma component of the slice is the same as the deblocking control parameter for the chroma component of the slice. When the value of the syntax element is equal to a preset value which is an integer, the value of the deblocking control parameter for the chroma component of the slice is analyzed from the bitstream. A decoder comprising performing a deblocking process on blocks in the slice according to the value of the deblocking control parameter.

14. The decoder according to claim 13, wherein the value of the syntax element is obtained from a picture parameter set (PPS).

15. The decoder according to claim 14, wherein the value of the deblocking control parameter for the chroma component of the slice is obtained from the PPS.

16. The decoder according to claim 13, wherein the value of the deblocking control parameter for the chroma component of the slice is obtained from the picture header (PH).

17. A device equipped with a receiver, The receiver is configured to receive a bitstream, and the bitstream is A syntax element wherein the value of the syntax element indicates signaling for a deblocking control parameter for the chroma component of a coded picture slice, the deblocking control parameter includes a deblocking parameter offset for the Cr component and a deblocking parameter offset for the Cb component, the deblocking parameter offset for the Cr component is a separate parameter from the deblocking parameter offset for the Cb component, the value of the syntax element is 0 when there are no color components in the video sequence, and the value of the syntax element is used to determine whether the deblocking control parameter for the chroma component of the slice is the same as the deblocking control parameter for the chroma component of the slice, When the value of the syntax element is equal to a preset value which is an integer, the value of the deblocking control parameter for the chroma component of the slice is included. An apparatus in which the value of the deblocking control parameter is used to perform a deblocking process on blocks within the slice.

Citation Information

Patent Citations

  • Use of chroma quantization parameter offsets in deblocking

    US20170134728A1

  • Quantization parameter offset for chroma deblocking filtering

    WO2021051044A1

  • Methods for processing chroma signals

    WO2021167830A1