IMPROVED CODING IN ADAPTIVE SHIFTING OF CROSS-COMPONENT SAMPLING

MX431840BActive Publication Date: 2026-02-25BEIJING DAJIA INTERNET INFORMATION TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
MX2023014057
Authority / Receiving Office
MX · MX
Patent Type
Patents
Current Assignee / Owner
Priority Date
2021-05-26
Filing Date
2023-11-24
Publication Date
2026-02-25
Estimated Expiration
2042-05-26

AI Technical Summary

Technical Problem

Existing video coding technologies face challenges in efficiently encoding and decoding high-definition and ultra-high-definition video data while maintaining image quality, particularly in optimizing the coding efficiency of brightness and color components.

Method used

The implementation of Cross-Component Sample Adaptive Offset Coding (CCSAO) methods that utilize correlation between brightness and color components by applying filters in parallel, incorporating sample offsets and classifiers to enhance coding efficiency.

Benefits of technology

Improves coding efficiency by leveraging inter-component correlations, leading to better image quality and reduced bit rates in video encoding and decoding processes.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure MX431840B0
    Figure MX431840B0
Patent Text Reader

Abstract

An electronic device implements a method of decoding video data; the method includes: receiving, from the video signal, an image frame comprising a first component and a second component; reconstructing samples of the first component through a first looped filter; reconstructing samples of the second component through a second looped filter; determining a classifier for the first component from one or more reconstructed samples of the second component with respect to a respective reconstructed sample of the first component; selecting a first sample offset for the respective reconstructed sample of the first component according to the classifier; applying a plurality of filters in parallel with the selection of the first sample offset to obtain a plurality of parallel offsets;and clip an output from a combination of the respective reconstructed sample of the first component, the first sample offset, and the plurality of parallel offsets of the plurality of filters.;
Need to check novelty before this filing date? Find Prior Art

Description

IMPROVEMENT OF CROSS COMPONENT SAMPLING ADAPTIVE OFFSET CODING RELATED REQUEST The present application claims priority to US Provisional Patent Application No. 63 / 193,539, entitled Cross-component Sample Adaptive Offset filed on May 26, 2021, which is incorporated by reference in its entirety. TECHNICAL FIELD OF THE INVENTION The present application relates generally to video coding and compression and, more specifically, to methods and apparatus for improving both brightness and color coding efficiency. BACKGROUND OF THE INVENTION Digital video is supported by a variety of electronic devices, such as digital televisions, laptop or desktop computers, tablet computers, digital cameras, digital recording devices, digital media players, video game consoles, smartphones, video conferencing devices, video streaming, etc. Electronic devices transmit, receive, encode, decode, and / or store digital video data by implementing video compression / decompression standards. Some well-known video coding standards include Versatile Video Coding (VVC), High Efficiency Video Coding (HEVC, also known as H.265 or MPEG-H Part 2), and Advanced Video Coding (AVC, also known as H .264 or MPEG). -4 Part 10), jointly developed by ISO / IEC MPEG and ITU-T VCEG. AOMedia Video 1 (AVI) was developed by the Alliance for Open Media (AOM) as a successor to its previous standard VP9. Audio Video Coding (AVS), which refers to the digital audio and video compression standard, is another series of video compression standards developed by the Audio and Video Coding Standard Working Group. Video compression typically includes performing spatial prediction (intra-frame) and / or temporal prediction (between frames) to reduce or eliminate redundancy inherent in video data. For block-based video coding, a video frame is divided into one or more slices, with each slice having multiple video blocks, which may also be called coding tree units (CTUs). Each CTU can contain one coding unit (CU) or be recursively divided into smaller CUs until the predefined minimum CU size is reached. Each CU (also called leaf CU) contains one or more transform units (TU) and each CU also contains one or more prediction units (PU). Each CU can be encoded in intra, inter or IBC mode. Video blocks in an intra-encoded (I) portion of a video frame are encoded using spatial prediction with respect to reference samples in neighboring blocks within the same video frame. Video blocks in an intercoded portion (P or B) of a video frame may use spatial prediction with respect to reference samples in neighboring blocks within the same video frame or temporal prediction with respect to reference samples in another video frame. previous and / or future reference, frames. Spatial or temporal prediction based on a reference block that has been previously encoded, for example, a neighboring block, results in a predictive block for a current video block to be encoded. The process of finding the reference block can be achieved by a block matching algorithm. Residual data that represents pixel differences between the current block to be encoded and the predictive block is called residual block or prediction errors. An intercoded block is encoded according to a motion vector pointing to a reference block in a reference frame that forms the predictive block and the residual block. The process of determining the motion vector is usually called motion estimation. An intra-coded block is encoded according to an intra-prediction mode and the residual block. For further compression, the residual block is transformed from the pixel domain to a transform domain, for example the frequency domain, resulting in residual transform coefficients, which can then be quantized. The quantized transform coefficients, initially arranged in a two-dimensional array, can be scanned to produce a one-dimensional vector of transform coefficients and then entropy encoded into a video bitstream for even further compression. The encoded video bitstream is then saved to a computer-readable storage medium (for example, flash memory) so that another electronic device with digital video capability can access it or transmit it directly to the electronic device via cable or wirelessly. The electronic device then performs video decompression (which is a process opposite to the video compression described above), for example, by analyzing the encoded video bitstream to obtain syntax elements from the bitstream and reconstructing the data from digital video to its original format from the encoded video, bitstream based at least in part on the syntax elements obtained from the bitstream, and presents the reconstructed digital video data on a screen of the electronic device. With digital video quality going from high definition to 4Kx2K or even 8Kx4K, zcnfr i η / Ρ7Π7 / Β / γι the amount of video data to be encoded / decoded grows exponentially. It is a constant challenge in terms of how video data can be encoded / decoded more efficiently while maintaining the image quality of the decoded video data. BRIEF DESCRIPTION OF THE INVENTION The present application describes implementations related to the encoding and decoding of video data and, more particularly, with methods and apparatus for improving the coding efficiency of brightness and color components, including improving the coding efficiency by exploring the relationship between components between the brightness component and the color component. . According to a first aspect of the present disclosure, a method for decoding video signals includes: receiving, from the video signal, an image frame including a first component and a second component; reconstructing samples of the first component through a first loop filter; reconstructing samples of the second component through a second loop filter; determining a classifier for the first component from one or more reconstructed samples of the second component with respect to a respective reconstructed sample of the first component; selecting a first sample offset for the respective reconstructed sample of the first component according to the classifier; applying a plurality of filters in parallel with the selection of the first sample displacement to obtain a plurality of parallel displacements; and clipping an output of a combination of the respective reconstructed sample of the first component, the first sample offset and the plurality of parallel offsets of the plurality of filters wherein the output of the combination is within a dynamic range of bit depth as a respective modified reconstructed sample of the first component. According to a second aspect of the present application, an electronic device includes one or more processing units, memory and a plurality of programs stored in the memory. The programs, when executed by one or more processing units, cause the electronic device to perform the video signal encoding method as described above. According to a third aspect of the present application, a non-transitory computer-readable storage medium stores a plurality of programs for execution by an electronic apparatus having one or more processing units. The programs, when executed by one or more processing units, cause the electronic device to perform the video signal encoding method as described above. / cnfrLn / eznz / e / Yi According to a fourth aspect of the present application, a computer-readable storage medium stores thereon a bit stream comprising video information generated by the video encoding method described above. It should be understood that both the foregoing general description and the following detailed description are examples only and do not limit the present disclosure. BRIEF DESCRIPTION OF THE DRAWINGS The accompanying drawings, which are included to provide a greater understanding of the implementations and are incorporated herein and form part of the specification, illustrate the implementations described and, together with the description, serve to explain the underlying principles. Similar reference numbers refer to corresponding parts. Figure 1 is a block diagram illustrating an example video decoder and encoder according to some implementations of the present disclosure. Figure 2 is a block diagram illustrating an example video encoder according to some implementations of the present disclosure. Figure 3 is a block diagram illustrating an example video decoder according to some implementations of the present disclosure. Figures 4A to 4E are block diagrams illustrating how a frame is recursively divided into multiple video blocks of different sizes and shapes according to some implementations of the present disclosure. Figure 5A is a block diagram depicting the four gradient patterns used in sample adaptive shifting (SAO) according to some implementations of the present disclosure. Figure 5B is a block diagram depicting a naming convention for samples surrounding the central sample, according to some implementations of the present disclosure. Figure 6A is a block diagram illustrating the CCSAO system and process that is applied on color samples and uses DBF Y as input according to some implementations of the present disclosure. Figure 6B is a block diagram illustrating the CCSAO system and process that is applied on gloss and color samples, and uses DBF Y / Cb / Cr as input according to some implementations of the present disclosure. Figure 6C is a block diagram illustrating the CCSAO system and process that can operate independently according to some implementations of the present disclosure. Figure 6D is a block diagram illustrating the CCSAO system and process that can be applied recursively (2 or N times) with equal or different offsets according to some implementations of the present disclosure. Figure 6E is a block diagram illustrating the CCSAO system and process applied in parallel with Enhanced Sample Adaptive Shifting (ESAO) in the AVS standard according to some implementations of the present disclosure. Figure 6F is a block diagram illustrating the CCSAO system and process applied after SAO according to some implementations of the present disclosure. Figure 6G is a block diagram illustrating that the CCSAO system and process can operate independently without CCALF according to some implementations of the present disclosure. Figure 6H is a block diagram illustrating the system and process of CCSAO applied in parallel with the cross-component adaptive loop filter (CCALF) according to some implementations of the present disclosure. Figure 61 is a block diagram illustrating the CCSAO system and process applied in parallel with SAO and BIF according to some implementations of the present disclosure. Figure 6J is a block diagram illustrating the system and process of CCSAO applied in parallel with BIF replacing SAO according to some implementations of the present disclosure. Figure 7 is a block diagram illustrating a sample process using CCSAO according to some implementations of the present disclosure. Figure 8 is a block diagram illustrating that the CCSAO process is applied to vertical and horizontal deblocking filters (DBF) according to some implementations of the present disclosure. Figure 9 is a flow chart illustrating an exemplary video signal decoding process using correlation between components according to some implementations of the present disclosure. Figure 10A is a block diagram showing a classifier that uses different brightness (or color) sample positions for C0 classification according to some implementations of the present disclosure. Figure 10B illustrates some examples of different shapes for brightness candidates, according to some implementations of the present disclosure. Figure 11 is a block diagram of a sample process illustrating that all placed and neighboring brightness / color samples can be entered into the CCSAO classification according to some implementations of the present disclosure. Figure 12 illustrates exemplary classifiers replacing the value of the placed brightness sample with a value obtained by weighing placed and neighboring brightness samples in accordance with some implementations of the present disclosure. Figure 13 is a block diagram illustrating that CCSAO is applied with other loop filters with different clipping combinations according to some implementations of the present disclosure. Figure 14A is a block diagram illustrating that CCSAO is not applied on the current color (brightness) sample if any of the collocated and neighboring brightness (color) samples used for classification is outside the current image according to with some implementations of the present disclosure. Figure 14B is a block diagram illustrating that CCSAO is not applied on the current color (brightness) sample if any of the collocated and neighboring brightness (color) samples used for classification is outside the current image according to with some implementations of the present disclosure. Figure 14C is a block diagram illustrating that CCSAO is not applied on the current color sample if a corresponding or adjacent selected placed brightness sample used for classification is outside a virtual space defined by a virtual boundary (VB) of accordance with some implementations of this disclosure. Figure 15 shows that a repeating or mirror fill is applied to gloss samples that are outside the virtual boundary in accordance with some implementations of the present disclosure. Figure 16 shows that 1 additional brightness line buffer is required if all 9 placed neighboring brightness samples are used for classification according to some implementations of the present disclosure. Figure 17 shows an illustration in AVS in which 9 CCSAO brightness candidates crossing VB can augment 2 additional brightness line buffers according to some implementations of the present disclosure. Figure 18A shows an illustration in VVC in which 9 CCSAO brightness candidates crossing VB can increase 1 additional brightness line buffer according to some implementations of the present disclosure. Figure 18B shows an illustration when using collocated or neighboring color samples to classify the current brightness samples, the selected color candidate may be across VB and need an additional color line buffer according to some implementations of the present disclosure. Figures 19A to 19C show in AVS and VVC, CCSAO is disabled for a color sample if any of the color sample's brightness candidates are across VB (outside the current color sample VB) according to some implementations of this disclosure. Figures 20A to 20C show in AVS and VVC, CCSAO is enabled using repetitive filling for a color sample if any of the color sample's brightness candidates are across VB (outside the current color sample VB) of accordance with some implementations of the present disclosure. Figures 21A to 21C show in AVS and VVC, CCSAO is enabled using mirror fill for a color sample if any of the color sample's brightness candidates are across VB (outside the current color sample VB) in accordance with some implementations of the present disclosure. Figures 22A to 22B show that CCSAO is enabled using a double-sided symmetrical padding for different CCSAO sample shapes according to some implementations of the present disclosure. Figure 23 shows the restrictions of using a limited number of brightness candidates for classification according to some implementations of the present disclosure. Figure 24 shows that the CCSAO applied region is not aligned with the coding tree block (CTB) / coding tree unit (CTU) boundary according to some implementations of the present disclosure. Figure 25 shows that the CCSAO applied region frame partition can be set with CCSAO parameters according to some implementations of the present disclosure. Figure 26 shows that the CCSAO applied region can be divided into binary tree (BT) / quad tree (QT) / ternary tree (TT) from the frame / slice / CTB level according to some implementations of the present disclosure. Figure 27 is a block diagram illustrating a plurality of classifiers and switching at different levels within an image frame according to some implementations of the present disclosure. Figure 28 is a block diagram illustrating the region division applied to CCSAO may be dynamic and changed at the frame level, in accordance with some implementations of the present disclosure. Figure 29 is a diagram illustrating CCSAO classifiers that may take into account current or cross-component coding information, according to some implementations of the present disclosure. / cnfrLn / eznz / e / Yi Figure 30 is a block diagram illustrating that the SAO classification methods disclosed in the present disclosure serve as a post-prediction filter according to some implementations of the present disclosure. Figure 31 is a block diagram illustrating that for the post-prediction SAO filter, each component can use the current and neighboring samples for classification according to some implementations of the present disclosure. Figure 32 is a flow chart illustrating an exemplary video signal decoding process using correlation between components according to some implementations of the present disclosure. Figure 33 is a diagram illustrating a computing environment coupled with a user interface, according to some implementations of the present disclosure. DETAILED DESCRIPTION OF THE INVENTION Reference will now be made in detail to specific implementations, examples of which are illustrated in the accompanying drawings. In the following detailed description, numerous specific non-limiting details are set forth to assist in understanding the subject matter presented here. But it will be apparent to one skilled in the art that various alternatives can be used without departing from the scope of the claims and that the subject matter can be practiced without these specific details. For example, it will be apparent to one skilled in the art that the subject matter presented herein can be implemented on many types of electronic devices with digital video capabilities. The first-generation AVS standard includes the Chinese national standard Information Technology, Advanced Audio and Video Coding, Part 2: Video (known as AVS1) and Information Technology, Advanced Audio and Video Coding, Part 16: Video Radio Television (known as AVS+). It can offer around 50% bit rate savings with the same perceptual quality compared to the MPEG-2 standard. The second generation AVS standard includes the Chinese national standard series Information Technology, Efficient Multimedia Coding (known as AVS2), which is mainly aimed at the transmission of extra HD television programs. The encoding efficiency of AVS2 is twice that of AVS+. Meanwhile, the Institute of Electrical and Electronics Engineers (IEEE) introduced the AVS2 video standard part as an international standard for applications. The AVS3 standard is a next-generation video coding standard for UHD video applications that aims to surpass the coding efficiency of the latest international HEVC standard, providing approximately 30% bitrate savings over the HEVC standard. . In March 2019, at the 68th AVS meeting, the AVS3-P2 baseline was finalized, providing approximately 30% bitrate savings over the HEVC standard. Currently, the AVS group maintains reference software, called a high performance model (HPM), to demonstrate a reference implementation of the AVS3 standard. Like HEVC, AVS3 is based on block-based hybrid video coding frame. Figure 1 is a block diagram illustrating an exemplary system 10 for encoding and decoding video blocks in parallel according to some implementations of the present disclosure. As shown in fig. 1, system 10 includes a source device 12 that generates and encodes video data to be decoded at a later time by a destination device 14. The source device 12 and destination device 14 may comprise any of a wide variety of electronic devices, including desktop or laptop computers, tablets, smartphones, set-top boxes, digital televisions, cameras, display devices, digital media players, video game consoles, video streaming devices or similar. In some implementations, the source device 12 and the destination device 14 are equipped with wireless communication capabilities. In some implementations, the destination device 14 may receive the encoded video data to be decoded over a link 16. The link 16 may comprise any type of communication medium or device capable of moving the encoded video data from the device. source 12 to destination device 14. In one example, link 16 may comprise a communication medium to allow source device 12 to transmit encoded video data directly to destination device 14 in real time. The encoded video data may be modulated according to a communication standard, such as a wireless communication protocol, and transmitted to the destination device 14. The communication medium may comprise any wireless or wired communication medium, such as a radio frequency spectrum. (RF) or one or more physical transmission lines. The communication medium may be part of a packet-based network, such as a local area network, a wide area network, or a global network such as the Internet. The communication medium may include routers, switches, base stations or any other equipment that may be useful in facilitating communication from the source device 12 to the destination device 14. In some other implementations, the encoded video data may be transmitted from an output interface 22 to a storage device 32. The encoded video data on the storage device 32 may then be accessed by the destination device 14. through an input interface 28. The storage device 32 may include any of a variety of distributed or locally accessed data storage media, such as a hard drive, Blu-ray discs, DVD, CD-ROM, flash memory, volatile or non-volatile memory, or any other digital storage medium suitable for storing the encoded video data. In another example, the storage device 32 may correspond to a file server or other intermediate storage device that may contain the encoded video data generated by the source device 12. The destination device 14 may access the stored video data. from the storage device 32 by streaming or downloading. The file server may be any type of computer capable of storing the encoded video data and transmitting the encoded video data to the destination device 14. Exemplary file servers include a web server (e.g., for a website), a File Transfer Protocol (FTP) server, Network Attached Storage (NAS) devices, or a local disk drive. The target device 14 can access the encoded video data over any standard data connection, including a wireless channel (e.g., a Wireless Fidelity (Wi-Fi) connection), a wired connection (e.g. .e., Digital Subscriber Line (DSL), cable modem, etc.), or a combination of both that is suitable for accessing encrypted video data stored on a file server. The transmission of the encoded video data from the storage device 32 may be a streaming transmission, a download transmission, or a combination of both. As shown in fig. 1, the source device 12 includes a video source 18, a video encoder 20 and the output interface 22. The video source 18 may include a source such as a video capture device, for example, a video camera, a video file containing previously captured video, a video feed interface for receiving video from a video content provider, and / or a computer graphics system for generating computer graphics data as the source video, or a combination from these sources. As an example, if the video source 18 is a video camera from a security surveillance system, the source device 12 and the destination device 14 may form camera phones or videophones. However, the implementations described in the present application may be applicable to video coding in general, and may be applied to wireless and / or wired applications. Captured, pre-captured, or computer-generated video may be encoded by the video encoder 20. The encoded video data may be transmitted directly to the destination device 14 through the output interface 22 of the source device 12. The encoded video data They may also (or alternatively) be stored on the storage device 32 for later access by the destination device 14 or other devices, for decoding and / or playback. The output interface 22 may further include a modem and / or a transmitter. The destination device 14 includes the input interface 28, a video decoder 30, and a display device 34. The input interface 28 may include a receiver and / or a modem and receive the encoded video data over the link 16. The encoded video data communicated over the link 16, or provided on the storage device 32, may include a variety of syntax elements generated by the video encoder 20 for use by the video decoder 30 to decode the video data. Such syntax elements may be included within encoded video data transmitted on a communication medium, stored on a storage medium, or stored on a file server. In some implementations, the target device 14 may include the display device 34, which may be an integrated display device and an external display device that is configured to communicate with the target device 14. The display device 34 displays the decoded video data to a user, and may comprise any of a variety of display devices, such as a liquid crystal display (LCD), a plasma display, an organic light-emitting diode (OLED) display, or other type of display device. The video encoder 20 and video decoder 30 may operate in accordance with proprietary or industry standards, such as VVC, HEVC, MPEG-4, Part 10, Advanced Video Coding (AVC), AVS, or extensions thereof. standards. It should be understood that the present application is not limited to a specific video encoding / decoding standard and may be applicable to other video encoding / decoding standards. Generally, it is contemplated that the video encoder 20 of the source device 12 may be configured to encode video data in accordance with any of these current or future standards. Similarly, it is also generally contemplated that the video decoder 30 of the destination device 14 may be configured to decode video data in accordance with any of these current or future standards. The video encoder 20 and video decoder 30 may each be implemented as any of a variety of suitable encoder and / or decoder circuits, such as one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits ( ASIC), field programmable gate arrays (FPGA), discrete logic, software, hardware, firmware or any combination thereof. When partially implemented in software, an electronic device may store instructions for the software on a suitable non-transitory computer-readable medium and execute the instructions in hardware using one or more processors to perform the video encoding / decoding operations described herein. divulgation. Each of the video encoders 20 and video decoders 30 may be included in one or more encoders or decoders, any of which may be integrated as part of a combined encoder / decoder (CODEC) in a respective device. / cnfrLn / eznz / e / Yi Figure 2 is a block diagram illustrating an example video encoder 20 according to some implementations described in the present application. The video encoder 20 may perform intra- and interpredictive coding of video blocks within video frames. Intrapredictive coding relies on spatial prediction to reduce or eliminate spatial redundancy in video data within a given image or video frame. Interpredictive coding relies on temporal prediction to reduce or eliminate temporal redundancy in video data within adjacent video frames or images of a video sequence. As shown in fig. 2, the video encoder 20 includes a video data memory 40, a prediction processing unit 41, a decoded picture buffer (DPB) memory 64, an adder 50, a transform processing unit 52, a quantization 54 and an entropy coding unit 56. The prediction processing unit 41 further includes a motion estimation unit 42, a motion compensation unit 44, a partition unit 45, an intra prediction processing unit 46 and an intra block copy (BC) unit 48. In some implementations, the video encoder 20 also includes an inverse quantization unit 58, an inverse transform processing unit 60, and an adder 62 for reconstruction of video blocks. . A loop filter 63, such as a deblocking filter, may be placed between the adder 62 and the DPB 64 to filter the block boundaries to remove blocking artifacts from the reconstructed video. Another loop filter 63 may also be used in addition to the deblocking filter to filter the output of the adder 62. More loop filtering may be applied, such as the deblocking filter, sample adaptive shift (SAO), and adaptive loop filter. (ALF) on the reconstructed CU before placing it in the reference image store and using it to encode future video blocks. The video encoder 20 may take the form of a programmable or fixed hardware unit or may be divided among one or more of the illustrated programmable or fixed hardware units. The video data memory 40 may store video data to be encoded by the components of the video encoder 20. The video data in the video data memory 40 may be obtained, for example, from the video source 18. The DPB 64 is a buffer that stores reference video data for use in the encoding of video data by the video encoder 20 (e.g., in intra or interpredictive encoding modes). The video data memory 40 and DPB 64 may be comprised of any of a variety of memory devices. In various examples, the video data memory 40 may be on-chip with other components of the video encoder 20, or off-chip relative to those components. As shown in fig. 2, after receiving the video data, the partition unit 45 within the prediction processing unit 41 divides the video data into / cnt? i n / pznz / B / Yi video blocks. This partitioning may also include partitioning a video frame into segments, tiles, or other larger Coding Units (CUs) according to predefined partitioning structures, such as a quad-tree structure associated with the video data. The video frame can be divided into multiple video blocks (or sets of video blocks called tiles). The prediction processing unit 41 may select one of a plurality of possible predictive coding modes, such as one of a plurality of intrapredictive coding modes or one of a plurality of interpredictive coding modes, for the current video block based on the error results (e.g., coding rate and distortion level). The prediction processing unit 41 may provide the resulting intra- or interprediction coded block to the adder 50 to generate a residual block and to the adder 62 to reconstruct the coded block for use as part of a subsequent reference frame. The prediction processing unit 41 also provides syntax elements, such as motion vectors, intramode flags, partition information, and other similar syntax information, to the entropy coding unit 56. To select an appropriate intrapredictive coding mode for the current video block, the intraprediction processing unit 46 within the prediction processing unit 41 may perform intrapredictive coding of the current video block relative to one or more blocks. neighbors in the same frame as the current block to be encoded to provide spatial prediction. The motion estimation unit 42 and the motion compensation unit 44 within the prediction processing unit 41 perform interpredictive coding of the current video block relative to one or more predictive blocks in one or more reference frames to provide temporal prediction. The video encoder 20 may perform multiple encoding passes, for example, to select an appropriate encoding mode for each block of video data. In some implementations, the motion estimation unit 42 determines the intra prediction mode for a current video frame by generating a motion vector, which indicates the displacement of a prediction unit (PU) of a video block. within the current video frame relative to a predictive block within a reference video frame, according to a predetermined pattern within a sequence of video frames. Motion estimation, performed by the motion estimation unit 42, is the process of generating motion vectors, which estimate motion for video blocks. A motion vector, for example, may indicate the displacement of a video block within a current video frame or image relative to a predictive block within a reference frame (or other encoded unit) relative to the current block. which is encoded within the current frame (or other encoded unit). The predetermined pattern may designate video frames in the sequence as P frames or B frames. The intra BC unit 48 may determine vectors, e.g., block vectors, for intra BC coding in a manner similar to determining motion vectors by part of the motion estimation unit 42 for Inter prediction, or you can use the motion estimation unit 42 to determine the vector block. A predictive block is a block of a reference frame that is considered to closely match the PU of the video block to be encoded in terms of pixel difference, which can be determined by sum of absolute difference (SAD), sum of squares difference (SSD) or other difference metrics. In some implementations, the video encoder 20 may calculate values ​​for pixel positions of subintegers of reference frames stored in the DPB 64. For example, the video encoder 20 may interpolate values ​​for quarter pixel positions, positions of a eighth of a pixel or other fractional pixel positions of the reference frame. Therefore, the motion estimation unit 42 can perform a motion search relative to full pixel positions and fractional pixel positions and generate a motion vector with fractional pixel precision. The motion estimation unit 42 calculates a motion vector for a PU of a video block in a coded frame between predictions by comparing the position of the PU with the position of the predictive block of a reference frame of a first list of frames. reference frame (List 0) or a second list of reference frames (List 1), each of which identifies one or more reference frames stored in the DPB 64. The motion estimation unit 42 sends the calculated motion vector to the motion compensation unit 44 and then to the entropy coding unit 56. Motion compensation, performed by the motion compensation unit 44, may involve searching or generating the predictive block based on the motion vector determined by the motion estimation unit 42. Upon receiving the motion vector for the PU of the block current video, the motion compensation unit 44 may locate a predictive block pointed to by the motion vector in one of the reference frame lists, retrieve the predictive block from the DPB 64, and send the predictive block to the summer 50. The adder 50 then forms a residual video block of pixel difference values ​​by subtracting the pixel values ​​of the predictive block provided by the motion compensation unit 44 from the pixel values ​​of the current video block being encoded. The pixel difference values ​​that form the residual video block may include luminance or color difference components, or both. The motion compensation unit 44 may also generate syntax elements associated with the video blocks of a video frame for use by the video decoder 30 to decode the video blocks of the video frame. Syntax elements may include, for example, syntax elements that define the motion vector used to identify the predictive block, any flag indicating the prediction mode, or any other syntax information described herein. Note that the motion estimation unit 42 and the motion compensation unit 44 may be closely integrated, but are illustrated separately for conceptual purposes. In some implementations, the intra BC unit 48 may generate vectors and obtain predictive blocks in a manner similar to that described above in relation to the motion estimation unit 42 and the motion compensation unit 44, but with the predictive blocks in the same frame as the current block is encoded and the vectors are called block vectors instead of motion vectors. In particular, the intraBC unit 48 may determine an intraprediction mode to use to encode a current block. In some examples, the intraBC unit 48 may encode a current block using various intra prediction modes, for example, during separate encoding passes, and test its performance through rate distortion analysis. The intraBC unit 48 may then select, among the various intra-prediction modes tested, an appropriate intra-prediction mode to use and generate an intra-mode indicator accordingly. For example, the intra BC unit 48 may calculate rate distortion values ​​using rate distortion analysis for the various intra prediction modes tested, and select the intra prediction mode that has the best rate distortion characteristics. rate between the tested modes as the appropriate intraprediction mode to use. Rate distortion analysis generally determines an amount of distortion (or error) between an encoded block and an original unencoded block that was encoded to produce the encoded block, as well as a bit rate (i.e., a number of bits). used to produce the encoded block. The intraBC unit 48 may calculate ratios from the distortions and velocities for the various encoded blocks to determine which intra prediction mode exhibits the best velocity distortion value for the block. In other examples, the intra BC unit 48 may use the motion estimation unit 42 and the motion compensation unit 44, in whole or in part, to perform such functions for Intra BC prediction according to the implementations described herein. . In any case, for intra-block copying, a predictive block can be a block that is considered to closely match the block to be encoded, in terms of pixel difference, which can be determined by sum of absolute difference (SAD) , sum of squares difference (SSD), or other difference and identification metrics, the predictive block may include calculating values ​​for subinteger pixel positions. Whether the predictive block is from the same frame according to the intra prediction or from a different frame according to the inter prediction, the video encoder 20 can form a residual video block by subtracting the pixel values ​​of the predictive block from the pixel values ​​of the current video block, being encoded, forming pixel difference values. The pixel difference values ​​that form the residual video block may include luminance and chroma component differences. The intra prediction processing unit 46 may intra predict a current video block, as an alternative to the inter prediction performed by the motion estimation unit 42 and the motion compensation unit 44, or the intra block copy prediction performed. by the BC intra unit 48, as described above. In particular, the intra prediction processing unit 46 may determine an intra prediction mode to use for encoding a current block. To do so, the intra prediction processing unit 46 may encode a current block using multiple intra prediction modes, for example, during separate encoding passes, and the intra prediction processing unit 46 (or a mode selection unit, in some examples) you can select an appropriate mode, intra prediction mode to use from the tested intra prediction modes. The intra prediction processing unit 46 may provide information indicative of the selected intra prediction mode for the block to the entropy coding unit 56. The entropy coding unit 56 may encode information indicating the selected intra prediction mode in the bit stream. After the prediction processing unit 41 determines the predictive block for the current video block through intra prediction or intra prediction, the adder 50 forms a residual video block by subtracting the predictive block from the current video block. The residual video data in the residual block may be included in one or more transform units (TU) and provided to the transform processing unit 52. The transform processing unit 52 transforms the residual video data into transform coefficients. residuals using a transform, such as a Discrete Cosine Transform (DCT) or a conceptually similar transform. The transform processing unit 52 can send the resulting transform coefficients to the quantization unit 54. The quantization unit 54 quantizes the transform coefficients to further reduce the bit rate. The quantization process can also reduce the bit depth associated with some or all of the coefficients. The degree of quantization can be modified by adjusting a quantization parameter. In some examples, the quantization unit 54 may then perform a scan of a matrix that includes the quantized transform coefficients. Alternatively, the entropy coding unit 56 may perform the scanning. After quantization, the entropy coding unit 56 encodes the quantized transform coefficients into a video bitstream using, for example, context-adaptive variable length coding (CAVLC), context-adaptive binary arithmetic coding (CABAC). , syntax-based binary context-adaptive arithmetic coding (SBAC), probability interval partitioning entropy (PIPE) coding, or other entropy coding methodology or technique. The encoded bit stream may then be transmitted to the video decoder 30, or archived in the storage device 32 for later transmission or retrieval by the video decoder 30. The entropy coding unit 56 may also entropy encode the vectors. motion and the other syntax elements for the current video frame being encoded. The inverse quantization unit 58 and the inverse transform processing unit 60 apply inverse quantization and inverse transform, respectively, to reconstruct the residual video block in the pixel domain to generate a reference block for prediction of other video blocks. . As noted above, the motion compensation unit 44 may generate a motion compensated predictive block from one or more reference blocks of the frames stored in the DPB 64. The motion compensation unit 44 may also apply one or more plus interpolation filters to the predictive block to calculate sub-integer pixel values ​​for use in motion estimation. The adder 62 adds the reconstructed residual block to the motion-offset predictive block produced by the motion compensation unit 44 to produce a reference block for storage in the DPB 64. The reference block may then be used by the intra BC unit. 48, the motion estimation unit 42 and the motion compensation unit 44 as a predictive block to interpredict another video block in a subsequent video frame. Figure 3 is a block diagram illustrating an example video decoder 30 according to some implementations of the present application. The video decoder 30 includes a video data memory 79, an entropy decoding unit 80, a prediction processing unit 81, an inverse quantization unit 86, an inverse transform processing unit 88, an adder 90 and a DPB 92. The prediction processing unit 81 further includes a motion compensation unit 82, an intra prediction unit 84 and an intra BC unit 85. The video decoder 30 may perform a decoding process generally reciprocal to the coding described above with respect to the video encoder 20 in relation to Figure 2. For example, the motion compensation unit 82 can generate prediction data based on motion vectors received from the entropy decoding unit 80, while The intra prediction unit 84 may generate prediction data based on intra prediction mode flags received from the entropy decoding unit 80. In some examples, a video decoder unit 30 may be responsible for performing implementations of the present application. Furthermore, in some examples, the implementations of the present disclosure may be divided among one or more of the units of the video decoder 30. For example, the intra BC unit 85 may implement the implementations of the present application, alone or in combination with other units of the video decoder 30, such as the motion compensation unit 82, the intra prediction unit 84 and the entropy decoding unit. 80. In some examples, the video decoder 30 may not include the intra BC unit 85 and the functionality of the intra BC unit 85 may be performed by other components of the prediction processing unit 81, such as the motion compensation unit 82. The video data memory 79 can store video data, as an encoded video bitstream, to be decoded by the other components of the video decoder 30. The video data stored in the video data memory 79 can be obtain, for example, from the storage device 32, from a local video source, such as a camera, over a video data wired or wireless communication network, or by accessing physical data storage, media (e.g. , a flash drive or a hard drive). The video data memory 79 may include an encoded picture buffer (CPB) that stores encoded video data from an encoded video bitstream. The decoded picture buffer (DPB) 92 of the video decoder 30 stores reference video data for use in decoding video data by the video decoder 30 (e.g., in intra or interpredictive encoding modes). The video data memory 79 and the DPB 92 may be formed by any of a variety of memory devices, such as dynamic random access memory (DRAM), including synchronous DRAM (SDRAM), magneto-resistive RAM (MRAM), RAM resistive (RRAM), or other types of memory devices. For illustrative purposes, the video data memory 79 and the DPB 92 are represented as two distinct components of the video decoder 30 in Figure 3. But it will be apparent to one skilled in the art that the video data memory 79 and the DPB 92 may be provided by the same memory device or by separate memory devices. In some examples, the video data memory 79 may be on chip with other components of the video decoder 30, or off chip relative to those components. During the decoding process, the video decoder 30 receives an encoded video bitstream representing video blocks of an encoded video frame and associated syntax elements. The video decoder 30 may receive the syntax elements at the video frame level and / or the video block level. The entropy decoding unit 80 of the video decoder 30 decodes the entropy of the bit stream to generate quantized coefficients, motion vectors or intra prediction mode indicators and other syntax elements. The entropy decoding unit 80 then sends the motion vectors and the other syntax elements to the prediction processing unit 81. When the video frame is encoded as an intra-predictive (I) coded frame or for intra-coded predictive blocks in other types of frames, the intra prediction unit 84 of the prediction processing unit 81 may generate prediction data for a video block. of the current video frame based on a signaled intra prediction mode and reference data from previously decoded blocks of the current frame. When the video frame is encoded as an interpredictive encoded frame (i.e., B or P), the motion compensation unit 82 of the prediction processing unit 81 produces one or more predictive blocks for a video block of the frame. current video based on the motion vectors and other syntax elements received from the entropy decoding unit 80. Each of the predictive blocks may be generated from a reference frame within one of the lists of reference frames. The video decoder 30 may construct the reference frame lists, List 0 and List 1, using predetermined construction techniques based on reference frames stored in the DPB 92. In some examples, when the video block is encoded according to the intra BC mode described herein, the intra BC unit 85 of the prediction processing unit 81 produces predictive blocks for the current video block based on the vectors of block and other syntax elements received from the entropy, decoder unit 80. The predictive blocks may be within a reconstructed region of the same image as the current video block defined by the video encoder 20. The motion compensation unit 82 and / or the intra BC unit 85 determines the prediction information for a video block of the current video frame by analyzing the motion vectors and other syntax elements, and then uses the prediction information to produce the predictive blocks for the current video block being decoded. For example, the motion compensation unit 82 uses some of the received syntax elements to determine a prediction mode (e.g., intra or inter prediction) used to encode video blocks of the video frame, a type of frame. inter prediction state (e.g., B or P), construction information for one or more of the reference frame lists for the frame, motion vectors for each interpredictive encoded video block of the frame, Inter prediction state for each interpredictive encoded video block of the frame and other information to decode the video blocks in the current video frame. Similarly, the intra BC unit 85 may use some of the received syntax elements, for example, a flag, to determine that the current video block was predicted using the intra BC mode, construction information of which video blocks of the frame are within the reconstructed region and must be stored in the DPB 92, block vectors for each intra BC predicted video block of the frame, intra BC prediction state for each intra BC predicted video block of the frame and other information to decode the video blocks in the current video frame. The motion compensation unit 82 may also perform interpolation using the interpolation filters that the video encoder 20 uses during encoding of the video blocks to calculate interpolated values ​​for sub-integer pixels of reference blocks. In this case, the motion compensation unit 82 can determine the interpolation filters used by the video encoder 20 from the received syntax elements and use the interpolation filters to produce predictive blocks. The inverse quantization unit 86 inversely quantifies the quantized transform coefficients provided in the bit stream and the entropy decoded by the entropy decoding unit 80 using the same quantization parameter calculated by the video encoder 20 for each video block in the video frame to determine a degree of quantization. The inverse transform processing unit 88 applies an inverse transform, e.g., an inverse DCT, an inverse integer transform, or a conceptually similar inverse transform process, to the transform coefficients to reconstruct the residual blocks in the pixel domain. After the motion compensation unit 82 or the intra BC unit 85 generates the predictive block for the current video block based on the vectors and other syntax elements, the adder 90 reconstructs the decoded video block for the video block current adding the residual block of the inverse transforms the processing unit 88 and a corresponding predictive block generated by the motion compensation unit 82 and the intra BC unit 85. A loop filter 91 may be placed between the adder 90 and the DPB 92 to further process the decoded video block. More loop filtering such as deblocking filter, sample adaptive shift (SAO), and adaptive loop filter (ALF) can be applied on the reconstructed CU before placing it in the reference image store. The video blocks decoded in a given frame are then stored in the DPB 92, which stores reference frames used for subsequent motion scrolling of subsequent video blocks. The DPB 92, or a memory device separate from the DPB 92, may also store decoded video for later display on a display device, such as the display device 34 of Figure 1. In a typical video encoding process, a video sequence typically includes an ordered set of frames or images. Each frame can include three sets of samples, named SL, SCb, and SCr. SL is a two-dimensional array of gloss samples. SCb is a two-dimensional array of Cb color samples. SCr is a two-dimensional array of color samples of Cr. In other cases, a frame may be monochromatic and therefore includes only a two-dimensional array of gloss samples. Like HEVC, the AVS3 standard is based on the block-based hybrid video coding frame. The input video signal is processed block by block (called coding units (CU)). However, unlike HEVC, which splits blocks only based on quad trees, in AVS3, a coding tree unit (CTU) is split into CUs to accommodate different local features based on quad / binary / quad trees. extended quad. In addition, the concept of multi-partition unit type in HEVC is eliminated, that is, the separation of CU, prediction unit (PU) and transform unit (TU) does not exist in AVS3. Instead, each CU is always used as the basic unit for both the prediction and the transform without further partitioning. In the AVS3 tree splitting structure, first, a CTU is split according to a four-tree structure. Then, each quad-tree leaf node can be further split by an extended binary and quad-tree structure. As shown in fig. 4A, the video encoder 20 (or more specifically the partition unit 45) generates an encoded representation of a frame by first partitioning the frame into a set of coding tree units (CTU). A video frame may include an integer number of CTUs arranged consecutively in a left-to-right and top-to-bottom raster scan order. Each CTU is a larger logical coding unit and the width and height of the CTU are set by the video encoder 20 in a set of sequence parameters, so that all CTUs in a video sequence have the same size being one of 128x128.64. x64, 32x32 and 16x16. But it should be noted that the present application is not necessarily limited to a particular size. As shown in fig. 4B, each CTU may comprise one coding tree block (CTB) of brightness samples, two corresponding coding tree blocks of color samples, and syntax elements used to encode the samples of the coding tree blocks. The syntax elements describe properties of different types of units of an encoded block of pixels and how the video sequence can be reconstructed in the video decoder 30, including inter or intra prediction, intra prediction mode, motion vectors and other parameters. . In monochrome images or images that have three separate color planes, a CTU may comprise a single encoding tree block and syntax elements used to encode the samples of the encoding tree block. A coding tree block can be an NxN block of samples. To achieve better performance, the video encoder 20 may recursively perform a tree partition such as a binary tree partition, a ternary tree partition, a quad tree partition, or a combination of both on the tree blocks. encoding the CTU and dividing the CTU into smaller coding blocks, units (CU). As can be seen in Figure 4C, the 64x64 CTU 400 is first divided into four smaller CUs, each with a block size of 32x32. Among the four smaller CUs, CU 410 and CU 420 are each divided into four 16x16 CUs by block size. The two 16x16 CUs, 430 and 440, are each divided into four 8x8 CUs by block size. Figure 4D represents a quad tree data structure illustrating the final result of the CTU 400 partitioning process as depicted in FIG 4C, each leaf node of the quad tree corresponding to a CU of a respective size ranging between 32x32 and 8x8. Like the CTU depicted in FIG 4B, each CU may comprise one coding block (CB) of brightness samples and two corresponding coding blocks of color samples of a frame of the same size, and syntax elements used to encode the samples of the coding blocks. In monochrome images or images that have three separate color planes, a CU may comprise a single encoding block and syntax structures used to encode the samples in the encoding block. It should be noted that the quad-tree partitioning depicted in FIGS 4C and 4D are for illustrative purposes only and a CTU can be partitioned into CUs to accommodate different local characteristics based on quad / ternary / binary tree partitioning. In the multi-type tree structure, a CTU is divided by a quad-tree structure and each quad-tree leaf CU can be further divided by a binary and ternary tree structure. As shown in fig. 4E, there are five types of split / partition in AVS3, i.e., quaternary partition, horizontal binary partition, vertical binary partition, horizontal extended four-tree partition, and vertical extended four-tree partition. In some implementations, the video encoder 20 may further divide an encoding block of a CU into one or more MxN prediction blocks (PBs). A prediction block is a rectangular block (square or non-square) of samples on which the same prediction, inter or intra, is applied. A prediction unit (PU) of a CU may comprise a brightness sample prediction block, two corresponding color sample prediction blocks, and syntax elements used to predict the prediction blocks. In monochrome images or images that have three separate color planes, a PU may comprise a single prediction block and syntax structures used to predict the prediction block. The video encoder 20 may generate brightness, Cb and Cr prediction blocks for brightness, Cb and Cr prediction blocks of each PU of the CU. The video encoder 20 may use intra-prediction or inter-prediction to generate the predictive blocks for a PU. If the video encoder 20 uses intraprediction to generate the predictive blocks of a PU, the video encoder 20 may generate the predictive blocks of the PU based on decoded samples of the frame associated with the PU. If the video encoder 20 uses interprediction to generate the predictive blocks of a PU, the video encoder 20 may generate the predictive blocks of the PU based on decoded samples of one or more frames other than the frame associated with the PU. After the video encoder 20 generates predictive brightness blocks, Cb and Cr for one or more PUs of a CU, the video encoder 20 may generate a residual brightness block for the CU by subtracting the predictive brightness blocks from the CU. of its original brightness encoding block so that each The sample in the CU's residual brightness block indicates a difference between a brightness sample in one of the CU's predictive brightness blocks and a corresponding sample in the CU's predictive brightness block. Original CU brightness encoding. Similarly, the video encoder 20 may generate a residual block Cb and a residual block Cr for the CU, respectively, so that each sample in the residual block Cb of the CU indicates a difference between a sample of Cb in one of the predictive Cb blocks of the CU and a corresponding sample in the original Cb coding block of the CU and each sample in the residual Cr block of the CU can indicate a difference between a sample of Cr in one of the Cr blocks predictive of the CU and a corresponding sample in the original Cr coding block of the CU. Furthermore, this is illustrated in fig. 4C, the video encoder 20 may use quad tree partitioning to decompose the residual brightness, Cb, and Cr blocks of a CU into one or more brightness, Cb, and Cr transform blocks. A transform block is a block of samples. rectangular (square or non-square) in which the same transform is applied. A transform unit (TU) of a CU may comprise a brightness sample transform block, two corresponding color sample transform blocks, and syntax elements used to transform the transform block samples. Therefore, each TU of a CU may be associated with a brightness transform block, a Cb transform block, and a Cr transform block. In some examples, the brightness transform block associated with the TU may be a subblock of the residual brightness block of the CU. The transform block Cb may be a subblock of the residual block Cb of the CU. The Cr transform block may be a subblock of the Cr residual block of the CU. In monochrome images or images that have three separate color planes, a TU may comprise a single transform block and syntax structures used to transform the samples in the transform block. The video encoder 20 may apply one or more transformations to a brightness transform block of a TU to generate a brightness coefficient block for the TU. A coefficient block can be a two-dimensional array of transform coefficients. A transform coefficient can be a scalar quantity. The video encoder 20 may apply one or more transformations to a transform block Cb of a TU to generate a coefficient block Cb for the TU. The video encoder 20 may apply one or more transformations to a Cr transform block of a TU to generate a Cr coefficient block for the TU. After generating a block of coefficients (e.g., a block of brightness coefficients, a block of Cb coefficients, or a block of Cr coefficients), the video encoder 20 may quantize the block of coefficients. Quantization generally refers to a process in which the transform coefficients are quantized to possibly reduce the amount of data used to represent the transform coefficients, providing greater compression. After the video encoder 20 quantizes a block of coefficients, the video encoder 20 may entropy encode syntax elements indicating the quantized transform coefficients. For example, the video encoder 20 may perform context-adaptive binary arithmetic coding (CABAC) on the syntax elements indicating the quantized transform coefficients. Finally, the video encoder 20 may generate a bit stream that includes a sequence of bits that forms a representation of encoded frames and associated data, which is saved to the storage device 32 or transmitted to the destination device 14. After receiving a bitstream generated by the video encoder 20, the video decoder 30 may analyze the bitstream to obtain syntax elements of the bitstream. The video decoder 30 may reconstruct the frames of the video data based at least in part on syntax elements obtained from the bitstream. The process of reconstructing the video data is generally reciprocal to the encoding process performed by the video encoder 20. For example, the video decoder 30 may perform inverse transformations on the coefficient blocks associated with the TUs of a current CU to reconstruct residual blocks associated with the TUs of the current CU. The video decoder 30 also reconstructs the coding blocks of the current CU by adding the samples of the predictive blocks for the PUs of the current CU to the corresponding samples of the transform blocks of the TUs of the current CU. After reconstructing the encoding blocks for each CU of a frame, the video decoder 30 may reconstruct the frame. SAO is a process that modifies the decoded samples by conditionally adding an offset value to each sample after application of the deblocking filter, based on the values ​​in the lookup tables transmitted by the encoder. SAO filtering is performed by region, based on a filtering type selected by CTB using a sao-type-idx syntax element. A value of 0 for sao-type-idx indicates that the SAO filter is not applied to the CTB, and values ​​1 and 2 indicate the use of the bandshift and edge shift filtering types, respectively. In the bandshift mode specified by / cnt? i n / pznz / B / Yi sao-type-idx equal to 1, the selected offset value depends directly on the sample amplitude. In this mode, the entire amplitude range of the sample is divided evenly into 32 segments called bands, and the sample values ​​belonging to four of these bands (which are consecutive within the 32 bands) are modified by adding transmitted values ​​called offsets. band, which can be positive or negative. The main reason for using four consecutive bands is that in soft areas where banding artifacts may appear, the sample amplitudes in a CTB tend to concentrate in only a few bands. Additionally, the design choice of using four offsets is unified with the edge offset operation mode that also uses four offset values. In the edge offset mode specified by sao-type-idx equal to 2, a sao-eo-class syntax element with values ​​from 0 to 3 indicates whether a horizontal, vertical, or one of two diagonal gradient directions are used for edge displacement classification,in the CTB. Figure 5A is a block diagram depicting the four gradient patterns used in SAO according to some implementations of the present disclosure. The four gradient patterns 502, 504, 506 and 508 are for the respective sao-eo class in edge shift mode. The sample labeled p indicates that it will be considered a core sample. Two samples labeled nO and ni specify two neighboring samples along (a) horizontal (sao-eo-class = 0), (b) vertical (sao-eo-class = 1), (c) 135° diagonal (sao-eo-class = 2), and (d) 45° gradient patterns (sao-eo-class = 3). Each sample in the CTB is classified into one of the five Edgeldx categories by comparing the sample p value located at some position with the nO and ni values ​​of two samples located at neighboring positions as shown in FIG 5A. This classification is performed for each sample based on the decoded sample values, so no additional signaling is required for Edgeldx classification. Depending on the Edgeldx category at the sample position, for Edgeldx categories 1 through 4, an offset value from a transmitted search box is added to the sample value. The offset values ​​are always positive for categories 1 and 2 and negative for categories 3 and 4. Therefore, the filter generally has a smoothing effect in edge displacement mode. Table 1-1 below illustrates an example of Edgeldx categories in SAO edge classes. TABLE 1-1 An Example of Edqeldx Categories in SAO Edge Classes Edgeldx Condition Meaning 0 Cases not listed below Monotonic area 1 p < no y p < ni Min lóela 2 p<noyp = niop<niyp = no Edge 3 p>noyp = niop>niyp = no Edge 4 p > no y p > ni Max local For SAO types 1 and 2, a total of four amplitude offset values ​​are transmitted to the decoder for each CTB. For type 1, the sign is also encoded. Offset values ​​and related syntax elements, such as sao-type-idx and sao-eo-class, are determined by the encoder, typically using criteria that optimize rate warp performance. SAO parameters can be indicated to be inherited from the left or top CTB using a merge flag for efficient signaling. In summary, SAO is a nonlinear filtering operation that allows additional refinement of the reconstructed signal and can improve signal representation both in smooth areas and around edges. In some embodiments, pre-sample adaptive shifting (Pre-SAO) is implemented. The pre-SAO coding performance with low complexity is promising in the future development of video coding standards. In some examples, Pre-SAO is only applied on gloss component samples using gloss samples for classification. PreSAO operates by applying two SAO-like filtering operations called SAOV and SAOH and are applied along with the unblocking filter (DBF) before applying the existing (legacy) SAO. The first SAO type filter, SAOV, works by applying SAO to the input image.Y2after applying the deblocking filter for vertical edges (DBFV). 4(0 = Clipl(y2(¿) + >T?1: 0) - 4·( / ω <-T?2: 7)) where T is a predetermined positive constant y<4 and d2 are displacement coefficients associated with two classes according to the sample difference between 4(i) and 4(i) given by / (0 = 4(0 - 4(0· The first class for <4 is given by taking all sample locations i such that / (0 > T while the second class for d2 is given by / (i) < -T . The shift coefficients d2 and d2 are calculated in the encoder so that the mean square error between the SAOV output image4 and the original image^ is minimized, in the same way as in the existing SAO process After applying SAOV, the second SAO type filter, SAOH, works by applying SAO a4, after. apply SAOV, with a classification based on the sample difference between 4(i) and 4(i), the output image of the deblocking filter for horizontal edges (DBFH). The same procedure as SAOV is applied for SAOH with y / i). -Y4(i) instead ofY / i) - Y2(0 for classification. The two shift coefficients, a predetermined threshold value.T and an enable flag are signaled for each of SAOH and SAOV at the segment level. SAOH and SAOV are applied for gloss and the two color components independently. In some cases, both SAOV and SAOH operate only on the image samples affected by the respective unlock (DBFV or DBFH). Therefore, unlike the existing SAO process, Pre-SAO only processes a subset of all samples in the given spatial region (image or CTU in the case of legacy SAO), maintaining the resulting increase in average operations. on the decoder side, per image sample is low (two or three comparisons and two additions per sample in the worst case, according to preliminary estimates). Pre-SAO only needs samples used by the deblocking filter without storing additional samples in the decoder. In some embodiments, a bilateral filter (BIF) is implemented for exploration of compression efficiency beyond VVC. The BIF is carried out in the sample adaptive shift loop filter (SAO) stage. Both bilateral filter (BIF) and SAO use deblocking samples as input. Each filter creates one offset per sample, which is added to the input sample and then clipped before passing to ALF. In detail, the output sample.IOUT is obtained as lour=clip3(Jc + ΔΙΒΙΡ+ &Isao)· where / ces is the input sample of unlocking,hlBIFis the offset of the bilateral filter andAIs / 10is the offset of SAO. In some embodiments, the implementation provides the ability for the encoder to enable or disable filtering at the CTU and segment level. The encoder makes a decision by evaluating the rate distortion optimization (RDO) cost. The following syntax elements are introduced in the PPS: TABLE 1-2 Image Parameter Set RBSP Syntax pic_parameter_set_rbsp() {Descriptor pps_bilateral_filter_enabled_flag u(l) s¡( pps bilateral filter enabled flag) {bilateral_filter_strength u(2) b i 1 ate ra l_f i Ite r_q p_offset se(v)} pps_bilateral_filter_enabled_flag equal to 0 specifies that the bilateral loop filter is disabled for sectors that reference the PPS. pps_bilateral_filter_flag equal to 1 specifies that the bilateral loop filter is enabled for sectors that reference the PPS. bilateral_filter_strength specifies a bilateral loop filter strength value used in the bilateral transform block filter process. The value of lateral_filter_strength will be in the range 0 to 2, inclusive. bilateral_filter_qp_offset specifies an offset used in the derivation of the bilateral filter lookup box, LUT(x), for slices referencing the PPS. bilateral_filter_qp_offset will be in the range -12 to +12, inclusive. QP means quantization parameter. The following syntax elements are introduced: TABLE 1-3 Segment Header Syntax slice_header() {Descriptor s¡( pps_bilateral_filter_enabled_flag ) {slice_bilateral_filter_all_ctb_enabled_flag u(l) s¡( Islice bilateral filter all ctb enabled flag ) slice_b¡lateral_f¡lter_enabled_flag u(l)} TABLE 1-4 Coding tree unit syntax. coding_tree_unit() {Descriptor s¡( !slice_bilateral_f¡lter_all_ctb_enabled_flag && slice_bilateral_filter_enabled_flag ) bilateral_filter_ctb_flag[ xCtb >> CtbLog2SizeY ][ yCtb >> CtbLog2SizeY ] u(l) The semantics are as follows: slice_bilateral_filter_alLctb_enabled_flag equal to 1 specifies that the bilateral filter is enabled and applies to all CTBs in the current slice. When slice_b¡lateral_f¡lter_all_ctb_enabled_flag is not present, it is inferred as equal to 0. slice_bilateral_filter_enabled_flag equal to 1 specifies that bilateral filtering is enabled and can be applied to CTBs in the current slice. When slice_bilateral_filter_enabled_flag is not present, it is inferred as equal to slice_b¡lateral_f¡lter_alLctb_enabled_flag. bilateral_filter_ctb_flag [xCtb >> CtbLog2SizeY ][ yCtb >> CtbLog2SizeY ] equal to 1 specifies that the bilateral filter is applied to the brightness encoding tree block of the encoding tree unit at the brightness location ( xCtb, yCtb ). bilateral_filter_ctb_flag [ cldx ][ xCtb >> CtbLog2SizeY ][ yCtb >> CtbLog2SizeY ] equal to 0 specifies that the bilateral filter is not applied to the brightness encoding tree block of the encoding tree unit at the brightness location ( xCtb, yCtb ). When bilateral_filter_ctb_flag is not present, it is inferred as equal to (slice_bilateral_f¡lter_all_ctb_enabled_flag & slice_bilateral_filter_enabled_flag). In some examples, for CTUs that are filtered, the filtering process is performed as follows. At the edge of the image, where samples are not available, the bilateral filter uses extension (repeat of samples) to fill in the unavailable samples. For virtual boundaries, the behavior is the same as for SAO, that is, no filtering occurs. By crossing the horizontal boundaries of the CTU, the bilateral filter can access the same samples that SAO accesses. Figure 5B is a block diagram depicting a naming convention for samples surrounding the central sample, according to some implementations of the present disclosure. For example, if the middle sample / c is located on the top line of a CTU, / WM / , lA and IN are read from the previous CTU, just as SAO does, but / ^ is padded, so a buffer is not needed additional line. The samples surrounding the central sample are indicated according to fig. 5B, where A, B, L and R means up, down, left and right and where NW, NE, SW, SE means northwest, etc. Likewise, AA means up-up, BB means down-down, etc. This diamond shape is different from another method that uses a square filter holder, without using / ^ ,IBB,ILL, orIRR. Each surrounding sample IArIRetc will contribute a corresponding modifier value μΔιΑ,μΔικ, etc. They are calculated as follows: starting with the contribution of the sample on the right, the difference is calculated as: △X=(IX—XI τ where | · | denotes absolute value. For non-10-bit data, A / fl= (lX - XI +-Τ'16) » (n - 7) is used instead , where n = 8 for 8-bit data, etc. The resulting value is now trimmed to be less than 16: s\R= m¡n(15¡AX). The modifier value is now calculated as _ í LUTrow[sIr], if lR— Ic> O,LírLUTrow[sIr] otherwise Where LUTROW[] is an array of 16 values ​​determined by the value of qpb = clip(0, 25, QP + bilateral_filter_qp_offset-17): {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}, if qpb =0 {0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}, if qpb =1 {0, 2, 2, 2, 1, 1, 0, 1, 0, 0, 0 , 0, 0, 0, 0, 0,}, if qpb =2 {0, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, -1 ,}, if qpb =3 {0, 3, 3, 3, 2, 2, 1, 2, 1, 1, 1, 1, 0, 1, 1, -1,}, if qpb =4 {0, 4, 4, 4, 3, 2, 1, 2, 1, 1, 1, 1, 0, 1, 1, -1,}, if qpb =5 {0, 5, 5, 5, 4, 3, 2, 2, 2, 2, 2, 1, 0, 1, 1, -1,}, if qpb =6 {0, 6, 7, 7, 5, 3, 3, 3, 3, 2, 2, 1, 1, 1, 1, -1,}, if qpb =7 {0, 6, 8, 8, 5, 4, 3, 3, 3, 3, 3, 2, 1, 2, 2, -2 ,}, if qpb =8 {0, 7, 10, 10, 6, 4, 4, 4, 4, 3, 3, 2, 2, 2, 2, -2,}, if qpb =9 {0, 8, 11, 11, 7, 5, 5, 4, 5, 4, 4, 2, 2, 2, 2, -2,}, if qpb =10 {0, 8, 12, 13, 10, 8, 8, 6, 6, 6, 5, 3, 3, 3, 3, -2,}, if qpb = 11 {0, 8, 13, 14, 13, 12, 11, 8, 8, Ί, 7, 5, 5, 4, 4, -2,}, if qpb = 12 {0, 9, 14, 16, 16, 15, 14, 11, 9, 9, 8, 6, 6, 5, 6, -3 ,}, if qpb = 13 {0, 9, 15, 17, 19, 19, 17, 13, 11, 10, 10, 8, 8, 6, 7, -3,}, if qpb =14 {0, 9, 16, 19, 22, 22, 20, 15, 12, 12, 11, 9, 9, 7, 8, -3,}, if qpb =15 {0, 10, 17, 21, 24, 25, 24, 20, 18, 17, 15, 12, 11, 9, 9, -3,}, if qpb = 16 {0, 10, 18, 23, 26, 28, 28, 25, 23, 22, 18, 14, 13, 11, 11, -3,}, if qpb =17 {0, 11, 19, 24, 29, 30, 32, 30, 29, 26, 22, 17, 15, 13, 12, -3 ,}, if qpb =18 {0, 11, 20, 26, 31, 33, 36, 35, 34, 31, 25, 19, 17, 15, 14, -3,}, if qpb =19 {0, 12, 21, 28, 33, 36, 40, 40, 40, 36, 29, 22, 19, 17, 15, -3,}, if qpb =20 {0, 13, 21, 29, 34, 37, 41, 41, 41, 38, 32, 23, 20, 17, 15, -3,}, if qpb =21 {0, 14, 22, 30, 35, 38, 42, 42, 42, 39, 34, 24, 20, 17, 15, -3,}, if qpb =22 {0, 15, 22, 31, 35, 39, 42, 42, 43, 41, 37, 25, 21, 17, 15, -3 ,}, if qpb =23 {0, 16, 23, 32, 36, 40, 43, 43, 44, 42, 39, 26, 21, 17, 15, -3,}, if qpb =24 {0, 17, 23, 33, 37, 41, 44, 44, 45, 44, 42, 27, 22, 17, 15, -3,}, if qpb =25 These values ​​can be stored using six bits per entry, resulting in 26*16*6 / 8=312 bytes or 300 bytes if the first row, which is all zeros, is excluded. The modifier values ​​for ^AlL,μ^ γμΔΙβ are calculated from IL, IA and IB in the same way. For diagonal samples / vvl / ,INE,ISE,lsw,and the two-step samples / A3,lBB,lRRylLL, the calculation also follows equations 2 and 3, but uses a value shifted by 1. Using the diagonal sample / SEas an example, _ í LUTROW[sISE] » 1, if lSE— Ic> O, (_(LUTROW[sISE] » í) otherwise and the other diagonal samples and two-step samples are calculated in the same way . The modifier values ​​are added. Awm ΑΔ / ^ Ί” ΡΔΙβ+ ΡΔΙε+ ΡΔ1β+ ΑΔ / ;νιν + PhltfE + ΡΔΐ^γ + Ι^ΔίςΕ + Ρδιαα+ Ρδιββ+ + Ρδικκ In some examples, μΔ,β equals -μ^Α for the sample above. Likewise, μ&ΐΑ equals -μ^Β for the above example, and similar symmetries can also be found for the diagonal and two-step modifier values. This means that in a hardware implementation, it is enough to calculate the six values;zA!fi,μΔ / Β,μ^ ,μΔ / κκΝΡδιββAnd the remaining six values ​​can be obtained from previously calculated values. The msum value is now multiplied by c = 1,2, or 3, which can be done using a single adder and logical AND gates as follows: k 2&(tnsum« -Z) + k 2&nTsum, where<S denotes logical and y / c2is the most significant bit of the multiplierc and / <2is the least significant bit. The value to be multiplied is obtained using the minimum dimension of the block. D = min (widtA,AeigAt) as shown in Table 1-5: TABLE 1-5 Obtaining the Parameter c from the Minimum Size D=min(width, height) of the Block Block type D < 4 4< D < 16 D > 16 intra 3 2 1 Inter 2 2 1 Finally, the bilateral filter offset ΔΙΒΙΡ is calculated. For full power filtering, the following is used: =(cv + 76) » 5, while for half-power filtering the following is used: ΔΙΒιΡ= (cv+ 32) » 6. A general formula for n-bit data is to use _ -J.4-n-bilateral_filter_strengthradd —zrs / Aft= 15-n- bilateal_filter_strength ΔΙβιρ — (S-v Ί / adál » where bilateral_filter_strength can be 0 or 1 and is noted in the pps . In some embodiments, methods and systems are described herein for improving coding efficiency or reducing the complexity of adaptive sample shifting (SAO) by introducing information between components. SAO is used in the HEVC, WC, AVS2 and AVS3 standards. Although the existing SAO design in the HEVC, VVC, AVS2 and AVS3 standards is used as the basic SAO method in the following descriptions, for a person skilled in the art of video coding, the cross-component methods described in the disclosure may also be applied to other loop filter designs or other coding tools with similar design ethos. For example, in the AVS3 standard, SAO is replaced by an encoding tool called Enhanced Sample Adaptive Offset (ESAO). However, the CCSAO disclosed here can also be applied in parallel with the ESAO. In another example, CCSAO can be applied in parallel with the restricted directional enhancement filter (CDEF) in the AVI standard. For the existing SAO design in HEVC, VVC, AVS2 and AVS3 standards, the sample shift values ​​of brightness Y, color Cb and color Cr are decided independently. That is, for example, the offset of the current color sample is decided solely by the values ​​of the current and neighboring color samples, without taking into account co-located or neighboring brightness samples. However, brightness samples retain more detailed information from the original image than color samples and can benefit the current color sample offset decision. Additionally, since color samples generally lose high-frequency details after color conversion from RGB to YCbCr, or after quantization and deblocking filter, the introduction of brightness samples with high-frequency details preserved for Color shift decision can benefit the reconstruction of the color sample. Therefore, greater gains can be expected by exploring the correlation between components, for example, using adaptive sampling shift between components (CCSAO) methods and systems. In some embodiments, the correlation here not only includes cross-component sample values, but also includes image / coding information such as prediction / residual coding modes, transform types, and component quantization / unblocking / SAO / ALF parameters. crossed. Another example is for SAO, the shifts of the brightness samples are decided only by the brightness samples. However, for example, a brightness sample with the same band shift (BO) classification can be further classified by its co-located and neighboring color samples, which can lead to more effective classification. SAO classification can be taken as a shortcut to compensate for the sample difference between the original image and the reconstructed image. Therefore, efficient classification is desired. Figure 6A is a block diagram illustrating the CCSAO system and process that is applied on color samples and uses DBF Y as input according to some implementations of the present disclosure. The brightness samples after the brightness deblocking filter (DBF Y) are used to determine additional shifts for color Cb and Cr after SAO Cb and SAO Cr. For example, the current color sample 602 is first classified using samples of co-placed brightness 604 and neighboring (white) 606, and the corresponding CCSAO offset value of the corresponding class is added to the current color sample value. Figure 6B is a block diagram illustrating the CCSAO system and process that is applied on gloss and color samples, and uses DBF Y / Cb / Cr as input according to some implementations of the present disclosure. Figure 6C is a block diagram illustrating the CCSAO system and process that can operate independently according to some implementations of the present disclosure. Figure 6D is a block diagram illustrating the CCSAO system and process that can be applied recursively (2 or N times) with equal or different offsets in the same codec stage or repeated in different stages, according to some implementations of this disclosure. In summary, in some embodiments, information from the current and neighboring brightness samples, information from neighboring and collocated color samples (Cb and Cr) can be used to classify the current brightness sample. In some embodiments, collocated and neighboring brightness samples, collocated and neighboring cross color samples, and current and neighboring color samples can be used to classify the current color sample (Cb or Cr). In some embodiments, CCSAO may be cascaded after (1) DBF Y / Cb / Cr, (2) reconstructed image Y / Cb / Cr before DBF, or (3) after SAO Y / Cb / Cr, or ( 4) after ALF Y / Cb / Cr. In some embodiments, CCSAO can also be applied in parallel with other encoding tools, for example, ESAO in the AVS standard or CDEF in the AVI standard. Figure 6E is a block diagram illustrating the CCSAO system and process applied in parallel with ESAO in the AVS standard according to some implementations of the present disclosure. Figure 6F is a block diagram illustrating the CCSAO system and process applied after SAO according to some implementations of the present disclosure. In some embodiments, FIG 6F shows that the location of CCSAO may be after SAO, that is, the location of the cross-component adaptive loop filter (CCALF) in the VVC standard. Figure 6G is a block diagram illustrating that the CCSAO system and process can operate independently without CCALF, according to some implementations of the present disclosure. In some embodiments, SAO Y / Cb / Cr may be replaced by ESAO, for example, in the AVS3 standard. Figure 6H is a block diagram illustrating the CCSAO system and process applied in parallel with CCALF according to some implementations of the present disclosure. In some embodiments, FIG 6H shows that CCSAO can be applied in parallel with CCALF. In some embodiments, in FIG 6H, the locations of CCALF and CCSAO may be changed. In some embodiments, in FIG 6A to FIG 6H, or throughout the present disclosure, the SAO Y / Cb / Cr blocks may be replaced by ESAO Y / Cb / Cr (in AVS3) or CDEF (in AVI). Note Y / Cb / Cr can also be indicated as Y / U / V in the video coding area. In some embodiments, if the video is in RGB format, the CCSAO can also be applied by simply mapping the YUV notation to GBR respectively in this disclosure. Figure 61 is a block diagram illustrating the CCSAO system and process applied in parallel with SAO and BIF according to some implementations of the present disclosure. Figure 6J is a block diagram illustrating the system and process of CCSAO applied in parallel with BIF replacing SAO according to some implementations of the present disclosure. In some embodiments, the current color sample classification reuses the SAO type (edge ​​offset (EO) or BO), class, and category of the placed brightness sample. The corresponding CCSAO offset may be signaled or derived from the decoder itself. For example, let h_Y be the placed SAO brightness offset, h_Cb and h_Cr be the CCSAO offsets Cb and Cr, respectively. h_Cb (or h_Cr) = w * h_Y where w can be selected from a limited box. For example, +-1 / 4, +-1 / 2, 0, +-1, +-2, +-4...etc., where |w| only includes power of 2 values. In some embodiments, the comparison score [-8, 8] of the collocated brightness samples (YO) and the 8 neighboring brightness samples is used, yielding 17 classes in total. Initial class = 0 Loop through 8 neighboring brightness samples (Yi, i=l to 8) if I > Class Yi += 1 else if I < Class Yi -= 1 In some embodiments, the above-mentioned classification methods may be combined. For example, the comparison score combined with SAO BO (32-band classification) is used to increase diversity, yielding 17 * 32 classes in total. In some embodiments, Cb and Cr may use the same class to reduce complexity or save bits. Figure 7 is a block diagram illustrating a sample process using CCSAO according to some implementations of the present disclosure. Specifically, Figure 7 shows that CCSAO input can introduce vertical and horizontal DBF input to simplify class determination or increase flexibility. For example, suppose Y0_DBF_V, Y0_DBF_H, and YO are brightness samples placed at the input of DBF_V, DBF_H, and SAO, respectively. Yi_DBF_V, Yi_DBF_H and Yi are 8 neighboring brightness samples at the input of DBF_V, DBF_H and SAO, respectively, where i = 1 to 8. Maximum YO = maximum(Y0_DBF_V, Y0_DBF_H, Y0_DBF) Yi max = max(Yi_DBF_V, Yi_DBF_H, Yi_DBF) And feed max I and max Yi to the CCSAO classification. Figure 8 is a block diagram illustrating that CCSAO is applied with other loop filters with different clipping combinations according to some implementations of the present disclosure. In some embodiments, the CCSAO blocks in FIGS. 6, 7 and 8 may be selective. For example, using Y0_DBF_V and Yi_DBF_V for the first CCSAO_V, which applies the same sample processing as in FIG 6, while using the brightness sample input DBF_V as the CCSAO input. In some embodiments, the implemented CCSAO syntax is shown in Table 2 below. TABLE 2 An example of CCSAO syntax Level Syntax Element Meaning SPS cc sao enabled flag if CCSAO is enabled in the SH sequence slice_cc_sao_cb_flag slice cc sao cr flag if CCSAO is enabled for Cb or Cr CTU cc_sao_merge_left_flag cc_sao_merge_up_flag if the CCSAO offset is merged from the left or up the CTU CTU cc_sao_class_idx CCSAO class index of this CTU CTU cc_sao_offset_sig n_flag cc_sao_offset_abs CCSAO offset, Cb and Cr values ​​of this CTU class. In some embodiments, to signal CCSAO Cb and Cr shift values, if an additional color shift is signaled, the shift of the other color component may be derived by plus or minus sign, or weighting to save overhead bits. For example, let h_Cb and h_Cr be the displacement of CCSAO Cb and Cr, respectively. With explicit signaling w, where w = +- | w | with limitation | w | candidates, h_Cr can be derived from h_Cb without explicitly pointing out h_Cr itself. h_Cr = w * h_Cb Figure 9 is a flow chart illustrating an exemplary video signal decoding process 900 using correlation between components in accordance with some implementations of the present disclosure. The video decoder 30 receives the video signal that includes a first component and a second component (910). In some embodiments, the first component is a brightness component and the second component is a color component of the video signal. The video decoder 30 also receives a plurality of offsets associated with the second component (920). The video decoder 30 then uses a characteristic measurement of the first component to obtain a classification category associated with the second component (930). For example, in FIG 6, the current color sample 602 is first classified using collocated brightness samples 604 and neighboring (white) samples 606, and the corresponding CCSAO offset value is added to the current color sample. The video decoder 30 further selects a first offset from the plurality of offsets for the second component according to the classification category (940). The video decoder 30 further modifies the second component based on the first selected offset (950). In some embodiments, using the characteristic measurement of the first component to obtain the classification category associated with the second component (930) includes: using a respective sample of the first component to obtain a respective classification category of each respective sample of the second component, in where the respective sample of the first component is a respective placed sample of the first component with each respective sample of the second component. For example, the current color swatch classification reuses the SAO type (EO or BO), class, and category of the placed gloss swatch. In some embodiments, using the characteristic measurement of the first component to obtain the classification category associated with the second component (930) includes: using a respective sample of the first component to obtain a respective classification category of each respective sample of the second component, in where the respective sample of the first component is rebuilt before being unlocked or rebuilt after being unlocked. In some embodiments, the first component is unblocked in a deblocking filter (DBF). In some embodiments, the first component is deblocked into a brightness deblocking filter (DBF Y). For example, an alternative to Figs. 6 or 7, the CCSAO entry can also be before DBF Y. In some embodiments, the characteristic measurement is obtained by dividing the range of sample values ​​of the first component into several bands and selecting a band based on the intensity value of a sample in the first component. In some embodiments, the characteristic measurement is derived from the band offset (BO). In some embodiments, the characteristic measurement is derived based on the direction and strength of the edge information of a sample in the first component. In some embodiments, the characteristic measurement is derived from the edge displacement (EO). In some embodiments, modifying the second component (950) comprises directly adding the first selected offset to the second component. For example, the corresponding CCSAO offset value is added to the current color component sample. In some embodiments, modifying the second component (950) comprises mapping the selected first offset to a second offset and adding the mapped second offset to the second component. For example, to signal CCSAO shift values ​​Cb and Cr, if an additional color shift is signaled, the shift of the other color component can be derived using a plus or minus sign, or weighting to save overhead bits. In some embodiments, receiving the video signal (910) comprises receiving a syntax element that indicates whether the method of decoding the video signal using CCSAO is enabled for the video signal in the Sequence Parameter Set (SPS). In some embodiments, cc_sao_enabled_flag indicates whether CCSAO is enabled at the sequence level. In some embodiments, receiving the video signal (910) comprises receiving a syntax element that indicates whether the method of decoding the video signal using CCSAO is enabled for the second component at the cut level. In some embodiments, slice_cc_sao_cb_flag or slice_cc_sao_cr_flag indicates whether CCSAO is enabled on the respective slice for Cb or Cr. In some embodiments, receiving the plurality of offsets associated with the second component (920) comprises receiving different offsets for different Coding Tree Units (CTU). In some embodiments, for a CTU, cc_sao_offset_sign_flag indicates a sign for an offset, and cc_sao_offset_abs indicates the CCSAO offset values ​​Cb and Cr of the current CTU. In some embodiments, receiving the plurality of offsets associated with the second component (920) comprises receiving a syntax element that indicates whether the offsets received from a CTU are the same as those from a CTU neighboring the CTU, wherein the Neighbor CTU is a left or higher neighbor CTU. For example, cc_sao_merge_up_flag indicates whether the CCSAO offset is joining from the left or above the CTU. In some embodiments, the video signal further includes a third component and the method of decoding the video signal using CCSAO further includes: receiving a second plurality of offsets associated with a third component; use the characteristic measurement of the first component to obtain a second classification category associated with the third component; selecting a third offset from the second plurality of offsets for the third component according to the second classification category; and modify the third component based on the selected third offset. Figure 11 is a block diagram of a sample process illustrating that all placed and neighboring (white) brightness / color samples can be entered into the CCSAO classification according to some implementations of the present disclosure. Figure 6A, 6B and FIG 11 show the input data of the CCSAO classification. Figure 11, the current color sample is 1104, the color sample placed between cross components is 1102, and the brightness sample placed is 1106. In some embodiments, an example classifier (C0) uses the brightness or color sample value placed (YO) in FIG 12 below (Y4 / U4 / V4 in FIG 6B, and FIG 6C) for classification. Let band_num be the number of equally divided bands of dynamic range of brightness or color, and bit_depth be the bit depth of the sequence. An example of the class index for the current color swatch is: Class(C0) = (I * band_num) >> bit_depth In some embodiments, sorting takes rounding into account, for example: Class(C0) = ((I * band_num) + (1 << bit_depth)) >> bit_depth Some other examples of maximum band_num are listed below in the Table 3. Table 3 shows three classification examples when the number of bands is different for each of the classification examples. TABLE 3 Band num and bit depth Instances For Each Class Index band_num 16 bit_depth 10 0 1 0 64 63 127 2 128 191 3 192 255 4 256 319 5 6 320 384 383 447 band_num 7 band_num 7 7 448 511 bit_depth 10 bit_depth 8 8 512 575 Class ME Class ME 9 576 639 0 0 145 0 0 36 10 11 640 704 703 767 1 146 292 1 37 72 2 293 438 2 73 109 12 768 831 3 439 584 3 110 145 13 382 895 4 585 730 4 146 182 14 896 959 5 731 877 5 183 218 15 960 1023 6 878 1023 6 219 255 In some embodiments, a classifier uses a different brightness sample position for C0 classification. Figure 10A is a block diagram showing a classifier using a different brightness (or color) sample position for C0 classification according to some implementations of the present disclosure, for example, using neighbor Y7 but not I for classification C0. In some embodiments, different classifiers may be changed at the sequence parameter set (SPS) / adaptation parameter set (APS) / picture parameter set (PPS) / picture header (PH) / segment header levels. (SH) / Region / Coding Tree Unit (CTU) / Coding Unit (CU) / Subblock / Sample. For example, in Figures 10A-10B, using YO for POCO but using Y7 for POC1, as shown in Table 4 below. TABLE 4 Different general classifiers are applied to different images POC Classifier C0 band_num Total classes 0 C0 using position ME 8 8 1 C0 using position Y7 8 8 > tu r\ c N 39 c -j i c u In some embodiments, FIG 10B illustrates some examples of different shapes for brightness candidates, according to some implementations of the present disclosure. For example, a constraint can be applied to shapes. In some cases, the total number of brightness candidates must be the power of 2, as shown in FIG 10B(b)(c)(d). In some cases, the number of brightness candidates must be horizontally and vertically symmetrical with respect to the color sample (in the center), as shown in FIG 10B (a) (c) (d) (e). In some embodiments, the power of 2 constraint and the symmetric constraint may also be applied for color candidates. The U / V part of FIG 6B and FIG 6C shows an example of a symmetric constraint. In some embodiments, different color formats may have different classifier restrictions. For example, the 420-color format uses brightness / color candidate selection (one candidate selected in a 3x3 manner) as shown in FIG 6B and FIG 6C, but the 444-color format uses FIG 10B ( f) for the selection of brightness and color candidates, the 422-color format uses FIG 10B (g) for brightness (2 color samples share 4 brightness candidates), FIG 10B (f) for color candidates. In some embodiments, the maximum band number (bandNumY, bandNumU or bandNumV) may be set or signaled at SPS / APS / PPS / PH / SH / Region / CTU / CU / Subblock / Sample levels. Different combinations can be different classifiers as shown in Table 5 below. TABLE 5 Different combinations of classifier v band number are applied to different images POC Classifier C0 band_num Total classes 0 C0 using position ME 16 16 1 C0 using position Y7 8 8 In some embodiments, the value of the placed brightness sample (YO) is replaced by a value (Yp) obtained by weighing placed and neighboring brightness samples. Figure 12 illustrates exemplary classifiers replacing the value of the placed brightness sample with a value obtained by weighing placed and neighboring brightness samples in accordance with some implementations of the present disclosure. The value of the placed brightness sample (YO) can be replaced by a phase-corrected value (Yp) obtained by weighing neighboring brightness samples. A different Yp may be a different classifier. In some embodiments, different Yp is applied in different color format. For example, in Figure 12, the Yp of (a) is used for color format 420, the Yp of (b) is used for color format 422, and I is used for color format 444. In some embodiments, another classifier (Cl) is the comparison score [-8, 8] of the collocated brightness samples (YO) and the 8 neighboring brightness samples, yielding 17 classes in total as shown below. Initial class (Cl) = 0, loop over 8 neighboring brightness samples (Yi, i=l a 8) If YO > Yi Class += 1 otherwise if YO < Yi Class -= 1 In some embodiments, the example Cl is equal to the following function with the threshold th being 0. Classldx= Index2ClassTable(f(C, Pl)+ f(C, P2)+...+f(C, P8)) if x-y > th, f(x, y) = 1; if x-y = th, f(x, y) = 0; if x-y < th, f(x, y) = -1 where Index2ClassTable is a look-up box (LUT), C is the current or placed sample, and P1 to P8 are neighbor samples. In some embodiments, similar to the C4 classifier, one or more thresholds may be predefined (e.g., hold at a LUT) or flagged at SPS / APS / PPS / PH / SH / Region / CTU / CU / Subblock / Sample levels. to help classify (quantize) the difference. In some embodiments, a variation (Cl1) only counts the comparison score [0, 8], and this produces 8 classes. (Cl, Cl') is a classifying group and a PH / SH level indicator can be pointed to switch between Cl and Cl'. Initial class (Cl') = 0, loop over 8 neighboring brightness samples (Yi, i=l a 8) If I > Yi Class += 1 In some embodiments, a variation (Cl) selectively uses N neighbors among M neighboring samples to count the comparison score. A bit mask of M bits may be signaled at the SPS / APS / PPS / PH / SH / Region / CTU / CU / Subblock / Sample levels to indicate which neighboring samples are selected for counting the comparison score. Using FIG 6B as an example of a brightness classifier: 8 neighboring brightness samples are candidates, and an 8-bit bit mask (01111110) is signaled in PH, indicating that 6 samples from YI to Y6 are selected, so that the comparison score is at [-6, 6], which produces 13 offsets. The Gis selective classifier gives the encoder more options to trade off between signaling overhead offsets and classification granularity. Similar to Cls, a variation (Cl) only counts the comparison score [0, + N]; The above bitmask example 01111110 gives the comparison score in [0, 6], which produces 7 offsets. In some embodiments, different classifiers are combined to produce a general classifier. For example, for different images (different POC values), different classifiers are applied as shown in Table 6-1 below. TABLE 6-1 Different General Classifiers Are Applied to Different Images POC Classifier C0 band_num Total classes 0 combine C0 and C1 16 16*17 1 combine C0 and Cl' 16 16*9 2 combine C0 and Cl 7 7*17 In some embodiments, another example of a classifier (C3) uses a bit mask for classification as shown in Table 6-2. A 10-bit bit mask at SPS / APS / PPS / PH / SH / Region / CTU / CU / Subblock / Sample levels is signaled to indicate the classifier. For example, the bit mask 11 1100 0000 means that for a given 10-bit brightness sample value, only the most significant bit (MSB): 4 bits are used for classification and that produces 16 classes in total. Another example of bitmask 10 0100 0001 means that only 3 bits are used for classification and that produces 8 classes in total. In some embodiments, the bit mask length (N) can be set or changed at levels of SPS / APS / PPS / PH / SH / Region / CTU / CU / Subblock / Sample. For example, for a 10-bit sequence, a 4-bit bit mask 1110 is signaled in PH in an image, and MSB 3 bits b9, b8, b7 are used for classification. Another example is a 4-bit bit mask 0011 in LSB, and bO, bl are used for classification. The bitmask classifier can be applied to brightness or color classification. Whether to use MSB or LSB for the N bit mask can be set or changed at the SPS / APS / PPS / PH / SH / Region / CTU / CU / Subblock / Sample levels. In some embodiments, the brightness position and the C3 bit mask may be combined and changed at the SPS / APS / PPS / PH / SH / Region / CTU / CU / Subblock / Sample levels. Different combinations can be different classifiers. In some embodiments, a maximum number of ones of the bitmask constraint may be applied to constrain the corresponding number of shifts. For example, restrict the maximum number of ones in the bitmask to 4 in SPS, and that results in the maximum shifts in the sequence being 16. The bitmask in different POCs may be different, but the maximum number of ones will not. must exceed 4 (total classes must not exceed 16). The value of the maximum number of ones can be set and changed at SPS / APS / PPS / PH / SH / Region / CTU / CU / Subblock / Sample levels. / cnbLn / eznz / B / Yi TABLE 6-2 Classifier Example Uses a Bit Mask for Classification (Bit Mask Position is Underlined) POC Classifier 10-bit C3 bitmask Total classes 0 C3 using position YO 11 1100 0000 16 Brightness sample value class index 00 0000 lili 0(0000) 101011 0011 9(1010) 11 U00 1001 15 (lili) POC Classifier 10-bit C3 bitmask Total classes 1 C3 using Y4 position 10 0100 0001 8 Brightness sample value class index 00 0000 lili 1(001) 10 1011 0011 5(101) 11 1100 1001 7(111) In some embodiments, as shown in FIG 11, the other cross-component color samples, for example, color sample 1102 and its neighboring samples. It can also be entered into the CCSAO classification, for example, for the current color sample 1104. For example, Cr color samples can be entered into the CCSAO Cb classification. Cb color samples can be entered into the CCSAO Cr classification. The cross-component color sample classifier may be the same as the brightness cross-component classifier or may have its own classifier as described in this disclosure. The two classifiers can be combined to form a joint classifier to classify the current color sample. For example, an ensemble classifier that combines brightness and cross-component color samples produces a total of 16 classes, as shown in Table 6-3 below. TABLE 6-3 Example of a Classifier Using a Joint Classifier Combining Cross-Component Color and Brightness Samples (Bitmask Position is Underlined) POC Classifier classes Total classes 0 Combine C3 using position Y4 Bitmask: 1001000001 8 C0 using cross color placed position C0 band_num:2 2 16 All types mentioned above (C0, Cl, Cl', C2, C3) can be combined. For example, see Table 6-4 below. TABLE 6-4 Different Classifiers Are Combined POC Classifier Total classes 0 Combine C0, Cl and C2 C0 band_num: 4 C2 band_num: 4 4*17*4 1 Combine C0, Cl' and C2 C0 band_num: 6 C2 band_num: 4 6*9*4 2 Combine Cl and C3 C3 Number of ls: 4 16*17 In some embodiments, an example of classifier (C2) uses the difference (Yn) of collocated and neighboring brightness samples. Figure 12(c) shows an example of Yn, which has a dynamic range of [-1024, 1023] when the bit depth is 10. Let C2 band_num be the number of bands equally divided of the dynamic range Yn, Class (C2) = (Yn + (1 << bit_depth) * band_num) >> (bit_depth + 1). In some embodiments, C0 and C2 are combined to produce a general classifier. For example, for different images (different POC), different classifiers are applied as shown in Table 7 below. TABLE 7 Different general classifiers are applied to different images POC Classifier C0 band_num C2 band_num Total classes 0 combine C0 and C2 16 16 16*17 1 combine C0 and C2 8 7 8*7 In some embodiments, all of the above-mentioned classifiers (C0, Cl, Cl', C2) are combined. For example, for different images (different POC), different classifiers are applied as shown in Table 8-1 below. TABLE 8-1 Different general classifiers are applied to different images POC Classifier C0 band_num C2 band_num Total classes 0 combine C0, Cl and C2 4 4 4*17*4 1 combine C0, Cl' and C2 6 4 6*9*4 In some embodiments, an example classifier (C4) uses the difference of the CCSAO input values ​​and the sample values ​​to compensate for classification as shown in Table 8-2 below. For example, if CCSAO is applied in the ALF stage, the difference of the pre-ALF and post-ALF current component sample values ​​is used for classification. One or more thresholds can be predefined (e.g., kept in a look-up box (LUT)) or marked at SPS / APS / PPS / PH / SH / Region / CTU / CU / Subblock / Sample levels to help classify ( quantify) differentiates them. The C4 classifier can be combined with C0 Y / U / V bandNum to form a joint classifier (for example, the POC1 example as shown in Table 8-2). / cnfrLn / eznz / e / Yi Table 8-2 An Example of a Classifier Uses the Difference of the Input Values ​​of the CCSAO and the Sample Values ​​to be Compensated for Classification POC Classifier Difference threshold (Th) bandNum Total classes 0 C4 with diff<-Th? <0? <Th? If not Th=3 4 1 Combine C4 / C0 using YO Th=3 16 48 2 C4 with diff<Thl? <Th2? If not Thl=4, Th2=5 3 3 C4 with diff<-Th? <Th? If not Th=l 3 In some embodiments, an example classifier (C5) uses encoding information to assist subblock classification, as a different encoding mode may introduce different distortion statistics into the reconstruction image. A CCSAO sample is classified based on its sample prior encoding information, and the combination of the encoding information can form a classifier, for example, as shown in Table 8-3 below. Figure 30 below shows another example of different stages of the coding information for C5. Table 8-3 A CCSAO Sample is Classified According to its Prior Coding Information Sample and Combination of Encoding Information Can Form a Sorter POC 0 Comp Y U V Set 0 1 0 0 Default info 3: inter / intra / other 2: Skip? 2: inherited intra brightness? 2: CCLM? transform info 2: LFNST? 2: MTS? 2: Dual tree (local)? 2: CTB > 32x32? Quant info 2: quantity dep? 2: odd qty dep? 3: CU QP >37 / 27? 2: QP cut <27? encoding info 2: all res 0? 3: all res > 2 / 3 / ow 3: JCCR sign = 1 / 1 / ow Is CCP used? residual LMCS Info 2: Was LMCS applied? 3: Map slope >0.5 / 0.7? 2: Does CRS apply? 2: Does CRS apply? Info DBF 2: Long touch DBF used 3: inter / intra bdry / ow 3: DBF H / Vow? 2: tC value !=0? Info SAO 2: is it BO? 3: EO / BO / ow 5: 4 types of EO / flow 2: BO start from band 0? info ALF 2: temporary (APS) selected? 4: transpose idx 2: does CCALF apply? 2: any 1 coefficient = 0? Number of trips 384 1728 1080 256 In some embodiments, an example classifier (C6) uses the YUV color transformed value for classification. For example, to classify the current Y component, neighboring or 1 / 1 / 1 placed Y / U / V samples are selected to be color transformed to RGB, and C3 bandNum is used to quantize the R value to be the component classifier And current. In some embodiments, other examples of classifiers, which use only current component information for classification of current components, may be used as classification between components. For example, as shown in Figure 5A and Table 1, the brightness sample and eo class information are used to derive an Edgeldx and classify the current color sample. Other classifiers without cross-components that can also be used as cross-component classifiers include edge direction, pixel intensity, pixel variance, pixel variance, Laplacian pixel sum, Sobel operator , the compass operator and the high-pass filtered value, low-pass filtered value, etc. In some embodiments, multiple classifiers are used in the same POC. The current framework is divided by several regions and each region uses the same classifier. For example, 3 different classifiers are used in POCO, and which classifier (0, 1, or 2) is used is indicated at the CTU level, as shown in Table 9 below. TABLE 9 Different General Classifiers Apply to Different Regions in the Same Chart POC Classifier C0 band_num Region 0 C0 using position YO 16 0 0 C0 using position YO 8 1 0 C0 using position YI 8 2 In some embodiments, the maximum number of plural classifiers (plural classifiers may also be called alternative shifting sets) may be set or designated at SPS / APS / PPS / PH / SH / Region / CTU / CU / Subblock / Sample levels. In one example, the fixed (predefined) maximum number of plural classifiers is 4. In that case, 4 different classifiers are used in POCO, and which classifier (0, 1, or 2) is used is indicated at the CTU level. The truncated unary (TU) code can be used to indicate the classifier used for each brightness or color CTB. For example, as shown in Table 10 below, when the TU code is 0: CCSAO does not apply; when TU code is 10: set 0 is applied; when the TU code is 110, set 1 is applied; when TU code is 1110: set 2 applies; when the TU code is lili: set 3 is applied. The fixed length code, golomb-rice code and exponential-golomb code can also be used to indicate the classifier (shift set index) for CTB. In POC1 3 different classifiers are used. TABLE 10 The truncated unary (TU) code is used to indicate the classifier used for each CTB color POC Classifier C0 band_num Region code 0 C0 using position Y3 6 0 10 0 C0 using position Y3 7 1 110 0 C0 using position Y1 3 2 1110 0 C0 using position Y6 6 3 lili 1 C0 using position YO 16 0 10 1 C0 using position I 8 1 110 1 C0 using position Y1 8 2 1110 An example of CTB shift set indices Cb and Cr is provided for the 1280 x 720 POCO sequence (the number of CTUs in a frame is 10 x 6 if the CTU size is 128 x 128). POCO Cb uses 4 shift sets and Cr uses 1 shift set. As shown in Table 11-1 below, when the displacement set index is 0: CCSAO is not applied; when the offset set index is 1: set 0 is applied; when offset set index is 2: set 1 is applied; when offset set index is 3: set 2 is applied; when the offset set index is 4: set 3 is applied. Type means the position of the chosen placed gloss sample (Y¡). Different sets of offsets can have different types, band_num, and corresponding offsets. TABLE 11-1 An Example of CTB Cb and Cr Offset Set Indices is Provided for the POCO Sequence of 1280 x 720 (the Number of CTUs in a Frame is 10 x 6 if the CTU size is 128 x 128) ccsao_on_frame POC: 0, TID:0, comp:0, en:l, lcu_ctrl:l, set_num:4, set:0, type: 3, band_num:6 ccsao_on_frame POC: 0, TID:0, comp:0, en:l, lcu_ctrl:l, set_num:4, set:l, type: 3, band_num:7 ccsao on trame POC: 0, TID:0, comp:0, en:l, lcu_ctrl:l, set_num:4, set:2, type: 1, band_num:3 ccsao_on_frame POC: 0, TID:0, comp:0, en:l, lcu_ctrl:l, set_num:4, set:3, type: 6, band_num:6 ccsao_on_frame POC: 0, TID:0, comp:l, en:l, lcu_ctrl:0, set_num:l, set:0, type: 8, band_num:10 1022001200 1 1 lili lili 0 0 0 0 1 1 1 1 2 4 1 1 lili lili 114 13 112 2 1 1 1 lili lili 4311421114 1 1 lili lili 0031111213 1 1 lili lili 0033311341 1 lili lili Offset[ 0] U: 6 | oi-ii 2 | V: -2 Offset[ 1] U: 2 | 1 1 -7| 0 | V: 0 Offset[ 2] U: 0 | -1 I -6 1 -2 | V: 0 Offset[ 3] U: -2 | 2| 0| -1 | V: 0 Offset[ 4] U: -3 | 3| 0| -1 | V: 0 Displacementf 5] U: -4 | 11 0| -7 | V: 1 Displacement[ 6] U: I 1 1 2 | V: 0 Offset[ 7] U: | 1 1 2 | V: 0 Offset[ 8] U: | 1 1 2 | V: 0 Displacement[ 9] U: I 1 1 2 | V:-4 Displacement[ 10] U: | 1 1 2 | V: Displacement[ 11] U: | 1 1 2 | V: Displacementf 12] U: | 1 1 2 | V: Displacementf 13] U: | 1 1 2 | V: Displacement[ 14] U: | 1 1 2 | V: Displacement[ 15] U: I 1 1 2 | V: In some embodiments, an example of jointly using collocated / current and neighboring Y / U / V samples for classification (3-component joint band number classification for each Y / U component) is listed in Table 11-2 below. / V). In POCO, shift sets {2,4,1} are used for {Y, U, V}, respectively. Each offset set can be adaptively changed at SPS / APS / PPS / PH / SH / Region / CTU / CU / Subblock / Sample levels. Different sets of offsets can have different classifiers. For example, as a candidate position (candPos) indicated in FIGS. 6B and 6C, to classify the current Y4 brightness sample, Y hedge selects {current Y4, placed U4, placed V4} as candidates, with different band number {Y, U, V} = {16,1,2}, respectively. With {candY, candil, candV} as sample values ​​of the selected candidates {Y, U, V}, the total number of classes is 32 and the derivation of the class index can be shown as: bandY = (candY * bandNumY) >> BitDepth; bandU = (candil * bandNumU) >> BitDepth; bandV = (candV * bandNumV) >> BitDepth; classldx = bandY * bandNumU * bandNumV + bandU * bandNumV + bandV; In some embodiments, the classldx derivation of an ensemble classifier may be represented as or-shift form to simplify the derivation process. For example, max bandNum = {16, 4, 4} classldx = (bandY << 4) | (bandU << 2) | bandV Another example is in the classification of the set of component V of POC1. In that example, candPos = {neighbor Y8, neighbor U3, neighbor V0} with bandNum = {4,1,2} are used, which produces 8 classes. TABLE 11-2 An Example of Joint Use of Advancing / Current and Neighboring Y / U / V Samples for the Classification POC Comp current offset set Classifier: candPos(Y,U,V) with bandNum(Y,UV,) Total classes (number of moves) 0 Y 0 (Y4, U4, V4), (16, 1, 2) 16*1*2=32 1 (Y4, U0, V2), (15, 4, 1) 15*4*1=60 U 0 (Y8, U3, V0), (1, 1, 2) 2 1 (Y4, Ul, V0), (15, 2, 2) 60 2 (Y6, U6, V6), (4, 4, 1) 16 3 (Y2, U0, V5), (1, 1, 1) 1 V 0 (Y2, U0, V5 ), (1, 1, 1) 1 1 Y 0 (Y4, Ul, V0), (15, 2, 2) 60 U 0 (Y6, U2, VI), (7, 1, 2) 14 V 0 ( Y8, U3, V0), (1, 1, 2) 2 1 (Y8, U3, V0), (4, 1, 2) 8 In some embodiments, an example of using adjacent Y / U / V samples together for the current Y / U / V sample classification (3-component classification of edgeNum (Cl) and bandNum for each component of Y / U / V) is listed. V), for example, as shown in Table 11-3 below. Edge CandPos is the centered position used for the Cl classifier, edge bitMask is the activation flag of neighboring samples of Cl, and edgeNum is the corresponding number of classes of Cl. In this example, Cls is only applied in the Y classifier (so that edgeNum is equal to edgeNumY) and the edge candPos is always Y4 (current / placed sample position). However, Cls can be applied in Y / U / V classifiers with the candPos edge as the neighbor sample position. With diff denoting the comparison score of Y Cl, the derivation of classldx can be bandY = (candY * bandNumY) >> BitDepth; bandU = (candil * bandNumU) >> BitDepth; bandV = (candV * bandNumV) >> BitDepth; edgeldx = diff + (edgeNum >> 1); bandldx = bandY * bandNumU * bandNumV + bandU * bandNumV + bandV; classldx = bandldx * edgeNum + edgeldx; / cnfrLn / eznz / B / Yi TABLE 11-3 (Part 1) An Example of Joint Use of Advancing / Current and Neighboring Y / U / V Samples for the Classification POC 0 Current component Y U Place 0 1 2 0 edge candPos(y) (Y4) (Y4) (Y4) (Y4) edge bitmask (Y) 10000001 00010000 01111110 10000000 edgeNum 5, [-2,2] 3, [-1,1] 13, [-6,6] 3, [-1,1] candPos band(Y,U,V) (Y4, U4, V4) (Y4, U0, V2) (Y4, Ul, V2) (Y8, U3, V0) bandNum(Y,U,V) (16, 1, 2) (15, 4, 1) (2, 1, 1) (1, 1,2) Total classes 5*16 *1*2=160 3*15*4*1=180 13*2*1*1*=26 3*1*1*1*2=6 Marked displacements 160 displacement values: (3, 3, 2, -1 ...) 180 offset values ​​26 offset values ​​6 offset values ​​sorted set index 0 1 2 0 Component Y Y Y U / cnfrLn / eznz / B / Yi TABLE 11-3 (Part 2) An Example of Joint Use of Advancing / Current and Neighboring Y / U / V Samples for the Classification POC 1 Current Component V Y Place 1 2 3 0 0 edge candPos(y) (Y4) (Y4) (Y4) (Y4) reuse edge bitmask (Y) 00000000 00000000 10000001 00000000 reuse edgeNum 1, [0] 1, [0] 5, [-2,2] 1, [0] reuse band candPos(Y,U,V ) (Y4, Ul, V0) (Y6, U6, V6) (Y2, U0, V5) (Y2, U0, V5) reuse bandNum(Y,U, V) (15, 2, 2) (4, 1, 1) (i, i, i) (i, i, i) reuse Total classes 60 4 1 1 160 Offset signaled 60 shift values ​​4 shift values: (1, 2, 0, 1) 1 shift values ​​1 shift values ​​signal index = 0, reuse parameters and shifts (3, 3, 2 , -1,...) index of the ordered set 1 2 3 0 Component U U U V Y TABLE 11-3 (Part 3) An Example of Joint Use of Advancing / Current and Neighboring Y / U / V Samples for Classification POC Current Component U V Place 1 0 0 1 edge candPos(y) (Y4) reuse (Y4) (Y4) edge bitmask (Y) 11111111 reuse 00000000 00000000 edgeNum 17, [-8,8] reuse 1, [0 ] 1, [0] bandcandPos(Y,U,V) (Y4, Ul, V2) reuse (Y8, U3, V0) (Y8, U3, V0) bandNum(Y,U,V) (4, 1, 1) reuse (1, 1, 2) (4, 1, 2) Total classes 17*4*1*1=68 4 2 8 Signaled displacements 68 signal idxU offset values ​​= 2 params and reuse offsets (1, 2, 0, 1) 2 shift values ​​8 shift values ​​sorted set index 3 Y Component U V V / cnbLn / eznz / B / Yi In some embodiments, the maximum band number (bandNumY, bandNumU or bandNumV) may be set or signaled at SPS / APS / PPS / PH / SH / Region / CTU / CU / Subblock / Sample levels. For example, setting max band_num=16 to 5 in the decoder and for each frame, 4 bits are signaled to indicate the CO band_num in a frame. Some other examples of maximum band_num are listed below in Table 12. TABLE 12 Examples of Maximum Bits of band num and band num Band_num_min Band_num_max Band_num bit 1 1 0 1 2 1 1 4 2 1 8 3 1 16 4 1 32 5 1 64 6 1 128 7 1 256 8 In some embodiments, the maximum number of classes or offsets (combinations using multiple classifiers together, e.g., Cls edgeNum * C1 bandNumY * bandNumU * bandNumV) for each set (or all aggregated sets) may be set or marked in levels of SPS / APS / PPS / PH / SH / Region / CTU / CU / Subblock / Sample. For example, 15 max is fixed for all aggregate sets class_num=256*4, and an encoder compliance check or a decoder normative check can be used to verify the constraint. In some embodiments, a restriction may be applied on the C0 classification, for example, by restricting band_num (bandNumY, bandNumU, or bandNumV) to be only a power of 2 values. Instead of explicitly signaling band_num, a band_num_shift syntax is signaled. The decoder can use the shift operation to avoid multiplication. Different band_num_shift can be used for different components. Class(C0) = (ME >> band_num_shift) >> bit_depth Another example of operation is to take rounding into account to reduce error. Class (C0) = ((I + (1 << (band_num_shift - 1))) >> band_num_shift) >> bit_depth For example, if band_num_max (Y, U, or V) is 16, the possible band_num_shift candidates are 0, 1 , 2, 3, 4, corresponding to band_num = 1, 2, 4, 8, 16, as shown in Table 13. / cnbLn / eznz / B / Yi TABLE 13 Band num and Candidates band num shift Corresponding POC Classifier CO band_num_shift CO band_num Total classes 0 CO using position ME 4 16 16 1 CO using position Y7 3 8 8 Band_num_max valid band_num Candidates Band_num_shift 1 1 0 2 1, 2 0, 1 4 1, 2, 4 0, 1, 2 8 1, 2, 4, 8 0, 1, 2, 3 16 1, 2, 4, 8, 16 0, 1, 2, 3, 4 32 1, 2, 4, 8, 16, 32 0, 1, 2, 3, 4, 5 64 1, 2, 4, 8, 16, 32, 64 0, 1 , 2, 3, 4, 5, 6 128 1, 2, 4, 8, 16, 32, 64, 128 0, 1, 2, 3, 4, 5, 6, 7 256 1, 2, 4, 8, 16, 32, 64, 128, 256 0, 1, 2, 3, 4, 5, 6, 7, 8 In some embodiments, the classifiers applied to Cb and Cr are different. Cb and Cr shifts for all classes can be signaled separately. For example, different signal offsets are applied to different chromatic components as shown in Table 14 below. TABLE 14 Cb v Cr Offsets for All Classes Can Be Reported Separately POC Component Classifier C0 band_num Total classes Signposted movements 0 Cb CO 16 16 16 > u r\ c N c 0 Cr CO 5 5 5 In some embodiments, the maximum offset value is set or signaled at the sequence parameter set (SPS) / adaptation parameter set (APS) / picture parameter set (PPS) / picture header (PH) levels. ) / segment header (SH) / Region / CTU / CU / Subblock / Sample. For example, the maximum offset is between [-15, 15]. Different components may have different maximum displacement values. In some embodiments, the displacement signaling may use differential pulse code modulation (DPCM). For example, the offsets {3, 3, 2,1, -1} can be denoted as {3, 0, -1, -1, -2}. In some embodiments, offsets may be stored in APS or a buffer for subsequent image / segment reuse. An index can be indicated to indicate which offsets from previous stored frames are used for the current image. In some embodiments, the Cb and Cr classifiers are the same. The shifts of Cb and Cr for all classes can be reported together, for example, as shown in Table 15 below. TABLE 15 Cb and Cr Offsets for All Classes Can Be Signaled Jointly POC Component CO Classifier band_num Total classes Marked displacements 0 Cby Cr CO 8 8 8 In some embodiments, the Cb and Cr classifier may be the same. The shifts of Cb and Cr for all classes can be reported together, with a difference of sign indicator, for example, as shown in Table 16 below. According to Table 16, when the Cb shifts are (3, 3, 2, -1), the derived Cr shifts are (-3, 3, -2, 1). TABLE 16 Cb and Cr Offsets for All Classes Can Be Signaled Together with a Sign of Difference Label POC Component CO Classifier band_num Total classes Marked displacements Marked signal label 0 Cb and Cr CO 4 4 4: (3, 3, 2, -1) 1: (-) > u r\ c N a c -j c u In some embodiments, the sign label may be noted for each class, for example, as shown in Table 17 below. According to Table 17, when the Cb shifts are (3, 3, 2, -1), the derived Cr shifts are (-3, 3, 2, 1) according to the respective signed indicator. TABLE 17 Cb v Cr Offsets for All Classes Can Be Marked Together with a Marker Label for Each Class POC Component CO Classifier band_num Total classes Signaled displacements Signaled signal label 0 Cby Cr CO 4 4 4: (3, 3, 2, -1) 1: (-, +, +, -) In some embodiments, the Cb and Cr classifiers may be the same. The shifts of Cb and Cr for all classes can be reported together, with a difference in weight, for example, as shown in Table 18 below. The weight (w) can be selected in a limited box, for example, +-1 / 4, +-1 / 2, 0, +-1, +-2, +-4...etc., where |w| only includes the power values ​​of 2. According to Table 18, when the Cb shifts are (3, 3, 2, -1), the derived Cr shifts are (-6, -6, -4, 2) according to the indicator with the respective sign. TABLE 18 Cb v Cr Displacements for All Classes Can Be Indicated Together with a Weight Difference POC Component CO Classifier band_num Total classes Marked displacements Marked weight 0 Cb and Cr CO 4 4 4: (3, 3, 2, -1) -2 In some embodiments, weight may be noted for each class, for example, as shown in Table 19 below. According to Table 19, when the Cb shifts are (3, 3, 2, -1), the derived Cr shifts are (-6, 12, 0, -1) according to the respective signed indicator. TABLE 19 Cb and Cr Displacements for All Classes Can Be Marked Together with a Marked Weight for Each Class POC Component CO Classifier band_num Total classes Marked displacements Marked weight 0 Cb and Cr CO 4 4 4: (3, 3, 2, -1) 4: (-2, 4, 0, / cnbLn / eznz / B / Yi In some embodiments, if multiple classifiers are used in the same POC, different sets of displacements are reported separately or together. In some embodiments, previously decoded offsets may be stored for use in future frames. An index may be signaled to indicate which set of previously decoded offsets is used for the current frame, to reduce the overhead of offset signaling. For example, POC2 can reuse POCO offsets with signaling offsets set to idx = 0, as shown in Table 20 below. TABLE 20 An index can be indicated to indicate which sets of previously decoded displacements are used for the current frame POC Component CO Classifier band_num Total classes Signaled displacements Idx of the stored displacement set 0 Cb CO 4 4 4: (3, 3, 2, -1) 0 0 Cr CO 4 4 4: (-2, 1, 0, 1) 0 1 Cb CO 4 4 4: (0, 0, 1, -1) 1 1 Cr CO 4 4 4: (1, 2, 0, 1) 1 2 Cb CO 4 4 Reuse displacements (3, 3, 2 , -1) signal index=0 2 Cr CO 4 4 Reuse offsets (-2, 1, 0, 1) signal index=0 In some embodiments, the reuse displacement set indices for Cb and Cr may be different, for example, as shown in Table 21 below. TABLE 21 An index may be indicated to indicate which set of previously decoded displacements is used for the current frame, and the index may be different for components Cb and Cr. POC Component CO Classifier band_num Total classes Signaled displacements Idx of the stored displacement set 0 Cb CO 4 4 4: (3, 3, 2, -1) 0 0 Cr CO 4 4 4: (-2, 1, 0, 1) 0 1 Cb CO 4 4 4: (0, 0, 1, -1) 1 1 Cr CO 4 4 4: (1, 2, 0, 1) 1 2 Cb CO 4 4 Reuse displacements (3, 3, 2 , -1) signal index=0 2 Cr CO 4 4 Reuse offsets (1, 2, 0, 1) signal index=l In some embodiments, offset signaling may use additional syntax, including start and length, to reduce signaling overhead. For example, when band_num=256, only offsets from band_idx=37~44 are flagged. In the following example in Table 22-1, the start and length syntax has a fixed length encoding of 8 bits that must match the stripenum bits. Table 22-1 Scroll Signaling Uses Additional Syntax Including Home and Length bandjdx offset 1 0 2 0 3 0 start=37 37 offset[0] 38 offset!] 1] band_num_max band_num bits, start, length 39 offset^] 1 0 40 41 offset^] offset[4] 2 4 1 2 42 offset[5] 8 3 43 offset[6] 16 4 44 length=8 offset^] 32 5 255 0 64 128 6 7 256 0 256 8 In some embodiments, if CCSAO is applied to all YUV 3 components, collocated and neighboring YUV samples can be used together for classification, and all of the displacement signaling methods mentioned above for Cb / Cr can be extended to Y / Cb. / Cr. In some embodiments, different component offset sets may be stored and used separately (each component has its own stored sets) or together (each component shares / reuses the same stored sets). An example of a separate set is shown in Table 22-2 below. / cnfrLn / eznz / B / Yi Table 22-2 An Example Showing that Different Component Offset Sets Can Be Stored and Used Separately (Each Component Has Its Own Stored Sets) or Jointly (Each Component Shares / Reuses the Same Stores) POC Current component Displacement set Classifier: candPos(Y, U, V) with bandNum (Y, U, V) Total classes (number of displacements) Signaled offsets Set ordinate offset idx 0 Y 0 (Y4, U4, V4), (16, 1,2) 16*1*2=32 32 offset values ​​(3, 3, 2, 1,...) 0 AND 1 (Y4, U0, V2), (14, 4, 1) 15*4*1=60 60 offset values ​​0 Y U 0 (Y8, U3, V0), (1,1,2) 2 2 offset values ​​0 U 1 (Y4, Ul, V0), (15, 2,2) 60 60 offset values ​​1 U 2 (Y6, U6, V6), (4,1,1) 4 4 offset values ​​2 U 3 (Y2, U0, V5), (1,1,1) 1 1 offset values ​​3 U V 0 (Y2, U0, V5), (1,1,1) 1 1 offset values ​​0 V 1 Y 0 Reuse index 0 of the stored offset set Y 32 Signal index 0 y reuse offsets (3, 3, 2, -i,...) Y U 0 Reuse stored offset set index 2 U 4 signal index 2 and reuse offsets (1, 2, 0, 1) U V 0 (Y8, U3, V0), (1,1,2) 2 2 V offset values 1 (Y8, U3, V0), (4,1,2) 8 8 V offset values In some embodiments, if the bit depth of a sequence is greater than 10 (or a certain bit depth), the offset may be quantized prior to signaling. On the decoder side, the decoded offset is dequantized before it is applied as shown in Table 23-1 below. For example, for a 12-bit sequence, the decoded shifts are shifted left (dequantized) by 2. TABLE 23-1 The Decoded Offset is Dequantized Before It is Applied Marked movement Compensation dequantified and applied 0 0 1 4 2 8 3 12 14 56 15 60 In some embodiments, the offset may be calculated as CcSaoOffsetVal=( 1 - 2 * ccsao_offset_sign_flag ) * (ccsao_offset_abs << ( BitDepth - Min( 10, BitDepth ))) In some embodiments, the concept of filter resistance is further introduced herein. For example, classifier offsets can be weighted further before applying them to samples. The weight (w) can be selected from a power of 2 value box. For example, +-1 / 4, +-1 / 2, 0, +-1, +-2, +-4...etc ., where |w| only includes the power values ​​of 2. The weight index can be indicated in SPS / APS / PPS / PH / SH / Region (Joint) / CTU / CU / Subblock / Sample levels. Quantized displacement signaling can be taken as a subset of this weighting application. If recursive CCSAO is applied as shown in FIG 6D, a similar weight index mechanism can be applied between the 1st and 2nd stages. In some examples, weighting for different classifiers: Offsets from plural classifiers can be applied to the same sample with a combination of weights. A similar weight index mechanism can be pointed out as mentioned above. For example, offset_final = w * offset_l + (1-w) * offset_2, or offset_final = wl * offset_l + w2 * offset_2 + ... In some embodiments, instead of directly indicating the CCSAO parameters in PH / SH, previously used parameters / shifts can be stored in the Adaptive Parameter Set (APS) or in a buffer for next reuse of images / slices. An index can be noted in PH / SH to indicate which offsets from previous stored frames are used for the current image / segment. A new APS ID can be created to maintain CCSAO history offsets. The following table shows an example using FIG 61, candPos and bandNum{Y,U,V} = {16,4,4}. In some examples, candPos, bandNum, and the shift signaling method may be a fixed length code (FLC) or other methods, such as a truncated unary code (TU), an exponential golomb code with order k (EGk), EGO with sign (SVLC) or unsigned EGO (UVLC). sao_cc_y_class_num (or cb, cr) is equal to sao_cc_y_band_num_y * sao_cc_y_band_num_u * sao_cc_y_band_num_v (or cb, cr) in this case. ph_sao_cc_y_aps_id is the parameter index used in this image / section. Note that the cb and cr components can follow the same signaling logic. TABLE 23-2 Adaptation Parameter Set (APS1) Syntax adaptation_parameter_set_rbsp( ) {Descriptor aps_params_type u(3) aps adaptation parameter set id u(5) aps_chroma_present_flag u(l) s¡( aps_params_type = = ALF_APS ) alf_data() else if (aps_params_type = = LMCS_APS) Imcs data() de else if (aps_params_type = = SCALING_APS) scaling_list_data() else if (aps_params_type = = CCSAO_APS) ccsao_data( ) ccsao_data( ) {Descriptor sao_cc_y_set_signal_flag u(l) s¡( aps_chroma_present_flag ) {(can be without this if) sao_cc_cb_set_signal_flag u(l) sao cc cr set signal flag u(l)} s¡( sao cc y set signal flag ) {sao_cc_y_sets_signalled_minusl for( k = 0; k < sao_cc_cb_sets_signalled_minusl + 1; k++ ) {sao_cc_y_cand_pos_y ue(v) sao_cc_y_band_num_y u(4) sao_cc_y_band_num_u u(2) sao cc y band num v u(2) for(j = 0; j < sao_cc_y_class_num; j++ ) {sao_cc_y_offset_abs[ k ][ j ] s¡( sao cc y offset absf k 1Γ i 1 ) sao cc y offset signf k ]Γ i 1}}} s¡( sao cc cb set signal flag ) {sao_cc_cb_sets_siqnalled_minusl for( k = 0; k < sao_cc_cb_sets_signalled_minusl + 1; K ++) {Sao_CC_CB_BAND_NUM_Y U (4) SAO_CC_CB_BAND_NUM_U U (2) SAO_CC_CB_BAND_NUM_V U (2) For (J = 0; J <Sao cc cb class num; _offset_abs (K 1γ J 1 ) sao cc cb offset sign[ k ][ j ]}}} s¡( sao_cc_cr_set_signal_flag ) {sao cc cr sets signalled minusl for( k = 0; k < sao_cc_cr_sets_signalled_minusl + 1; k++ ) {sao_cc_cr_band_num_y u(4) sao_cc_cr_band_num_u u (2) sao_cc_cr_band_num_v u(2) for(j = 0; i < sao_cc_cr_class_num; j++ ) {sao_cc_cr_offset_abs[ k ][ j ] s¡( sao_cc_cr_offset_abs[ k ][ j ] ) sao_cc_cr_offset_sign[ k ][ j ]}}}} aps_adaptation_parameter_setjd provides an identifier for the APS as a reference for other syntax elements. When aps_params_type is equal to CCSAO_APS, the value of aps_adaptation_parameter_set_id will be in the range 0 to 7, inclusive (for example). ph_sao_cc_y_aps_id specifies the aps_adaptation_parameter_set_id of the CCSAO APS to which the Y color component of the slices in the current image refers. When ph_sao_cc_y_aps_id is present, the following applies: the value of sao_cc_y_set_signal_flag of the APS NAL unit that has aps_params_type equal to CCSAO_APS and aps_adaptation_parameter_set_id equal to ph_sao_cc_y_aps_id will equal 1; the Temporalld of the APS network abstraction layer 10 (NAL) unit that has aps_params_type equal to CCSAO_APS and aps_adaptation_parameter_set_id equal to ph_sao_cc_y_aps_id will be less than or equal to the Temporalld of the current image. In some embodiments, sample processing is described below. Let R(x, y) be the input brightness or color sample value before CCSAO, R'(x, y) be the output brightness or color sample value after CCSAO: offset = ccsao_offset [class_index of R(x, y)] R'(x, y) = Clip3( 0, (1 << bit_depth) - 1, R(x, y) + offset) According to the above equations, each brightness or color sample value R(x, y) is classified using the indicated classifier of the current image and / or the current offset set idx. The corresponding offset of the derived class index is added to each brightness or color sample value R(x, y). A Clip 3 clip function is applied to (R(x, y) + offset) to make the output brightness or color sample value R'(x, y) within the dynamic bit depth range, for example, range from 0 to (1 << bit_depth) - 1. Figure 13 is a block diagram illustrating that CCSAO is applied with other loop filters with different clipping combinations according to some implementations of the present disclosure. In some embodiments, when CCSAO is operated with other loop filters, the clipping operation may be (1) Clipping after adding. The following equations show examples when (a) CCSAO works with SAO and BIF, or (b) CCSAO replaces SAO but still works with BIF. (^) ¡out=cliplfJc + ΔΙ$αο + ΔΙβιρ+ +A / CC5j40) (b) Iqut — clipl(Jc+ AIccsao+ A / b;f) (2) Clip before adding, operated with BIF. In some embodiments, the order of the clips can be changed. (2) ¡out=diplíJc + AIsao) f OUT=dip l(JouT + ΔΙΒΙρ) f ουτ=clipl^l ουτ + ^¡CCSAO^ (b) ¡ουτ=clíplíJc + A / b;f) f ουτ=clipl (J '0UT+ AIccsao} (3) Clipping after partial addition (a) Iqut — clipl(Ic+ AIsao + ΔΙβι / ) ¡ 'ουτ=clip 1(JOUT+ Affection) In some embodiments, different trimming combinations give different offsets between the precision of the correction and the size of the hardware temporary buffer (register or SRAM bit width). Figure 13 (a) shows the clipping of SAO / BIF displacements. Figure 13(b) shows the additional bit depth trimming for CCSAO. Figure 13(c) shows the joint clipping after adding SAO / BIF / CCSAO offsets to the input sample. More specifically, for example, FIG 13(a) shows the current BIF design when interacting with SAO. SAO and BIF offsets are added to the input sample and then bit depth trimming is performed. However, when CCSAO is also joined to the SAO stage, two possible trimming designs can be selected: (1) adding additional bit depth trimming to CCSAO, and (2) a harmonized design that performs joint trimming after add SAO / BIF / CCSAO offsets to the input sample, as shown in FIG 13(b) and FIG 13(c). In some embodiments, the above-mentioned clipping designs only differ in the gloss samples since BIF is only applied on them. In some embodiments, boundary processing is described below. If any of the placed and neighboring brightness (color) samples used for classification are outside the current image, CCSAO is not applied to the current color (brightness) sample. Figure 14A is a block diagram illustrating that CCSAO is not applied on the current color (brightness) sample if any of the collocated and neighboring brightness (color) samples used for classification is outside the current image according to some implementations of the present disclosure. For example, in Figure 14A(a), if a classifier is used, CCSAO is not applied on the chromatic components in the left column of the current image. For example, if Cl1 is used, CCSAO is not applied to the chromatic components in the first left column and the top first row of the current image, as shown in FIG 14A(b). Figure 14B is a block diagram illustrating that CCSAO is not applied on the current color or brightness sample if any of the placed and neighboring brightness or color samples used for classification is outside the current image according to some implementations of the present disclosure. In some embodiments, a variation is that, if any of the placed and neighboring brightness or color samples used for classification are outside the current image, the skipped samples are used repeatedly as shown in FIG 14B(a), or the omitted samples are filled with mirrors to create samples for classification as shown in FIG 14B(b) and CCSAO can be applied to the current gloss or color samples. In some embodiments, the disabled / repetitive / mirrored image boundary processing method disclosed herein may also be applied on the sub-image / slice / mosaic / CTU / 360 virtual boundary if any of the brightness or color samples adjacent and placed images used for classification is outside the current subimage / section / mosaic / patch / CTU / virtual 360 boundary. For example, an image is divided into one or more rows of tiles and one or more columns of tiles. A mosaic is a sequence of CTUs that cover a rectangular region of an image. A slice consists of an integer number of complete tiles or an integer number of consecutive complete CTU rows within a tile of an image. A subimage contains one or more slices that together cover a rectangular region of an image. In some embodiments, a 360-degree video is captured on a sphere and is inherently unbounded; reference samples that are outside the boundaries of a reference image in the projected domain can always be obtained from neighboring samples in the spherical domain. . For projection formats composed of a plurality of faces, no matter what type of close-packed frame packing arrangement is used, discontinuities appear between two or more adjacent faces in the frame-packed image. In VVC, virtual vertical and / or horizontal boundaries are introduced, through which loop filtering operations are disabled, and the positions of those boundaries are noted in SPS or image header. Compared to using two tiles, one for each set of continuous faces, using the 360 ​​virtual boundary is more flexible as it does not require the face size to be a multiple of the CTU size. In some embodiments, the maximum number of vertical 360° virtual boundaries is 3 and the maximum number of horizontal 360° virtual boundaries is also 3. In some embodiments, the distance between two virtual boundaries is greater than or equal to the size of the CTU and virtual boundary granularity is 8 brightness samples, for example an 8x8 sample grid. Figure 14C is a block diagram illustrating that CCSAO is not applied on the current color sample if a corresponding or adjacent selected placed brightness sample used for classification is outside a virtual space defined by a virtual boundary according to some implementations of this disclosure. In some embodiments, a virtual boundary (VB) is a virtual line separating space within an image frame. In some embodiments, if a virtual boundary (VB) is applied on the current frame, CCSAO is not applied on color samples that have selected the corresponding brightness position outside a virtual space defined by the virtual boundary. Figure 14C shows an example with a virtual boundary for the C0 classifier with 9 brightness position candidates. For each CTU, CCSAO is not applied to color samples for which the corresponding selected brightness position is outside a virtual space surrounded by the virtual boundary. For example, in Figure 14C(a), CCSAO is not applied to the color sample 1402 when the position of the selected brightness sample Y7 is on the other side of the horizontal virtual boundary 1406 which is located 4 pixel lines from the underside of the frame. For example, in Figure 14C(b), CCSAO is not applied to the color sample 1404 when the selected brightness sample position Y5 is located on the other side of the vertical virtual boundary 1408 that is located and pixel lines from the right side of the painting. Figure 15 shows that a repeating or mirror fill can be applied to gloss samples that are outside the virtual boundary in accordance with some implementations of the present disclosure. Figure 15(a) shows an example of repetitive filling. If the original Y7 is chosen as the classifier located at the bottom of the VB 1502, the Y4 brightness sample value is used for classification (copied to the Y7 position), instead of the original Y7 brightness sample value. Figure 15(b) shows an example of mirror quilting. If Y7 is chosen as the classifier which is located at the bottom of the VB 1504, the brightness sample value Y1 that is symmetric to the value of Y7 relative to the brightness sample YO is used for classification, instead of the sample of original Y7 brightness, value. Filling methods provide the ability to apply more CCSAO color samples so that higher coding gain can be achieved. In some embodiments, a constraint may be applied to reduce the line buffer memory required by CCSAO and to simplify boundary processing condition checking. Figure 16 shows 1 additional brightness line buffer, i.e. the full line brightness samples of line -5 above the current VB 1602, may be required if the 9 placed neighbor brightness samples are used for classification in accordance with some implementations of the present disclosure. Figure 10B(a) shows an example that uses only 6 brightness candidates for classification, which reduces the line buffer and does not need any additional bounds checking in FIG 14A and FIG 14B. In some embodiments, the use of brightness samples for CCSAO classification may increase the brightness line buffer and therefore increase the hardware implementation cost of the decoder. Figure 17 shows an illustration in AVS that 9 CCSAO brightness candidates crossing VB 1702 can increase 2 additional brightness line buffers according to some implementations of the present disclosure. For brightness and color samples above the virtual boundary (VB) 1702, DBF / SAO / ALF are processed in the current CTU queue. For gloss and color samples lower than VB 1702, DBF / SAO / ALF are processed in the next CTU row. In the hardware design of the AVS decoder, the brightness line -4 to -1 pre-DBF samples, the line -5 pre-SAO samples and the color line -3 to -1 pre-DBF samples, the line -4 Pre-SAO samples are stored as line buffers for subsequent CTU DBF / SAO / ALF row processing. When processing the next CTU row, brightness and color samples that are not in the line buffer are not available. However, for example, at color line position -3(b), the color sample is processed in the next CTU row, but CCSAO requires the brightness sample lines above SAO -7, -6 and -5 for ranking. Sample lines -7, -6 before brightness SAO are not in the line buffer, so they are not available. And adding lines -7 and -6 of pre-SAO brightness samples to the line buffer will increase the hardware implementation cost of the decoder. In some examples, VB brightness (line -4) and VB color (line -3) may be different (not aligned). Similar to FIG 17, Figure 18A shows an illustration in VVC in which 9 CCSAO brightness candidates crossing VB 1802 can increase 1 additional brightness line buffer in accordance with some implementations of the present disclosure. VB may be different in different standards. In VVC, VB brightness is line -4 and VB color is line -2, so 9 CCSAO candidates can increase 1 brightness line buffer. In some embodiments, in a first solution, CCSAO is disabled for a color sample if any of the color sample's brightness candidates are across VB (outside the current color sample VB). Figures 19A-19C show in AVS and VVC, CCSAO is disabled for a color sample if any of the color sample's brightness candidates are through VB 1902 (outside the current VB color sample) according to some implementations of the present disclosure. Figure 14C also shows some examples of this implementation. In some embodiments, in a second solution, repetitive filling is used for CCSAO from a brightness line near and on the other side of the VB, for example, brightness line -4, for VB cross brightness candidates. In some embodiments, a repetitive nearest neighbor brightness fill is implemented below VB for cross-VB color candidates. Figures 20A-20C show in AVS and VVC, CCSAO is enabled using repetitive fill for a color swatch if any of the color swatch's brightness candidates are through VB 2002 (outside the current VB color swatch) in accordance with some implementations of the present disclosure. Figure 14C(a) also shows some examples of this implementation. In some embodiments, in a third solution, mirror fill is used for CCSAO from below VB brightness to VB cross brightness candidates. Figures 21A-21C show in AVS and VVC, CCSAO is enabled using mirror fill for a color sample if any of the color sample's brightness candidates are through VB 2102 (outside the current color sample VB ) in accordance with some implementations of the present disclosure. Figure 14C(b) and 14B(b) also show some examples of this implementation. In some embodiments, in a fourth solution, double-sided symmetrical fill is used to apply CCSAO. Figures 22A-22B show that CCSAO is enabled using double-sided symmetrical padding for some examples of different forms of CCSAO (e.g., 9 brightness candidates (FIG 22A) and 8 brightness candidates (FIG 22B)) according to some implementations of this disclosure. For a gloss swatch set with a centered and placed gloss swatch of a color swatch, if one side of the gloss swatch set is outside the VB 2202, a double-sided symmetrical fill is applied to both sides of the gloss swatch set. gloss samples. For example, in Figure 22A, the brightness samples YO, Y1 and Y2 are outside the VB 2202, so both YO, Yl, Y2 and Y6, Y7, Y8 are filled with Y3, Y4, Y5. For example, in Figure 22B, the brightness sample YO is outside VB 2202, so YO is filled with Y2 and Y7 is filled with Y5. Figure 18B shows an illustration when collocated or neighboring color samples are used to classify the current brightness samples, the selected color candidate may be through VB and need an additional color line buffer according to some implementations of this disclosure. Similar solutions 1 to 4 described above can be applied to fix the issue. Solution 1 is to disable CCSAO for a brightness sample when any of its color candidates can cross VB. Solution 2 is to use looping nearest neighbor color padding below VB for cross VB color candidates. Solution 3 is to use a mirror fill from below the VB color for the VB cross color candidates. Solution 4 is to use double-sided symmetrical padding. For a candidate set centered on the color swatch placed by CCSAO, if one side of the candidate set is outside VB, a double-sided symmetric padding is applied to both sides. Filling methods provide the possibility to apply more brightness or color samples for CCSAO, so that higher coding gain can be achieved. In some embodiments, at the bottom image boundary CTU row (or slice, tile, brick), samples below VB are processed in the current CTU row, so the above special handling is not applied (Solution 1 , 2. 3. 4). in the image below (or cut, tile, brick) CTU row boundary. For example, a 1920x1080 frame is divided by 128x128 CTUs. One frame contains 15x9 CTU (rounded up). The bottom row of CTU is row number 15 of CTU. The decoding process is CTU row by CTU row and CTU by CTU for each CTU row. Unlocking must be applied along the horizontal CTU boundaries between the current and next CTU row. CTB VB is applied for each CTU row since, within a CTU, in the bottom 4 / 2 brightness / color line, DBF samples (VVC case) are processed in the next CTU row and are not available for CCSAO in the current CTU queue. However, in the bottom CTU row of the image frame, the DBF samples from the bottom 4 / 2 brightness / color line are available in the current CTU row, since there are no next CTU rows left and they are DBF processed in the current CTU row. In some embodiments, the VB shown in Figs. 13 to 22A-22B may be replaced by a subimage / section / mosaic / patch / CTU / virtual boundary 360 boundary. In some embodiments, the positions of the color and brightness samples in FIG. 13 to 22A-22B can be replaced. change. In some embodiments, the positions of the color and brightness samples in FIGS. 13 to 22A-22B can be replaced by positions of a first color sample and a second color sample. In some embodiments, an ALF VB within the CTU may commonly be horizontal. In some embodiments, a subimage / section / mosaic / patch / CTU / 360 virtual boundary may be horizontal or vertical. In some embodiments, a restriction may be applied to reduce the line buffer required by CCSAO and to simplify the verification of the boundary processing condition as explained in FIG 16. Figure 23 shows the restrictions of using a limited number of gloss candidates for classification according to some implementations of the present disclosure. Figure 23(a) shows the constraint of using only 6 brightness candidates for classification. Figure 23(b) shows the constraint of using only 4 brightness candidates for classification. In some embodiments, an applied region is implemented. The CCSAO applied region unit may be based on CTB. That is, the on / off control, the CCSAO parameters (offsets, candidate brightness positions, band_num, bitmask, etc. used for classification, offset set index) are the same in a CTB. In some embodiments, the applied region may not be aligned with the CTB boundary. For example, the applied region is not aligned with the CTB color boundary, but shifted. The syntaxes (on / off control, CCSAO parameters) are still noted for each CTB, but the region actually applied is not aligned with the CTB boundary. Figure 24 shows that the applied region of CCSAO is not aligned with the CTB / CTU boundary 2406 according to some implementations of the present disclosure. For example, the applied region is not aligned with the CTB / CTU color boundary 2406, but with samples shifted up to the left (4, 4) with VB 2408. This non-aligned CTB boundary design benefits the unlocking process since the same unlock parameters are used for each region of the 8x8 unlock process. In some embodiments, the CCSAO applied region unit (mask size) may be variant (greater or smaller than the CTB size) as shown in Table 24. The mask size may be different for different components. The mask size can be changed in SPS / APS / PPS / PH / SH / Region / CTU / CU / Subblock / Sample levels. For example, in PH, a series of mask on / off flags and shift set indices are flagged to indicate information for each CCSAO region. TABLE 24 The Region Unit Applied by CCSAO (Mask Size) May be a Variant POC Component CTB Size Mask Size 0 Cb 64x64 128x128 0 Cr 64x64 32x32 1 Cb 64x64 16x16 1 Cr 64x64 256x256 In some embodiments, the CCSAO applied region frame partition may be fixed. For example, divide the frame into N regions. Figure 25 shows that the CCSAO applied region frame partition can be set with CCSAO parameters according to some implementations of the present disclosure. In some embodiments, each region may have its own region activation / deactivation control flag and CCSAO parameters. Additionally, if the region size is larger than the CTB size, you can have CTB on / off control flags and region on / off control flags. Figure 25 (a) and (b) show some examples of partitioning the frame into N regions. Figure 25(a) shows the vertical partitioning of 4 regions. Figure 25(b) shows the square partition of 4 regions. In some embodiments, similar to the image-level CTB all-on control flag (ph_cc_sao_cb_ctb_control_flag / ph_cc_sao_cr_ctb_control_flag), if the region on / off control flag is disabled, CTB on / off flags may additionally be signaled. . Otherwise, CCSAO is applied for all CTBs in this region without flagging further CTB flags. In some embodiments, different CCSAO applied regions may share the same region on / off control and CCSAO parameters. For example, in Fig. 25(c), region 0~2 shares the same parameters and region 3~ 15 shares the same parameters. Figure 25(c) also shows the region on / off control flag and the CCSAO parameters can be flagged in a Hilbert scan order. In some embodiments, the CCSAO applied region unit may be divided into quad tree / binary tree / ternary tree from the image / slice / CTB level. Similar to CTB splitting, a series of splitting indicators are flagged to indicate the region partitioning applied by CCSAO. Figure 26 shows that the CCSAO applied region can be divided into binary tree (BT) / quad tree (QT) / ternary tree (TT) from the frame / slice / CTB level according to some implementations of the present disclosure. Figure TI is a block diagram illustrating a plurality of classifiers used and switched at different levels within an image frame according to some implementations of the present disclosure. In some embodiments, if multiple classifiers are used in a frame, the method of how to apply the classifier set index can be changed at SPS / APS / PPS / PH / SH / Region / CTU / CU / Subblock / Sample levels. For example, four sets of classifiers are used in one framework, switched in PH as shown in Table 25 below. Figure 27 (a) and (c) show the default fixed region classifier. Figure TI (b) shows that the set rate of the classifier is signaled at the mask / CTB level, where 0 means CCSAO disabled for this CTB, and 1 ~ 4 means set rate. TABLE 25 Four sets of classifiers are used in one framework, switched in PH POC 0 4-region square partition (same as QT frame split at maximum depth of 1) (a) 1 CTB level switch classifier (b) 2 4-region vertical partition (c) 3 QT frame split at maximum depth 2 In some embodiments, for the case of the default region, a region level flag may be signaled if the CTBs in this region do not use the default index set (for example, the region level flag is 0), but use another classifier established in this framework. For example, if the default set index is used, the region level flag is 1. For example, in a 4-region square partition, the following sets of classifiers are used as shown in Table 26-1 below: TABLE 26-1 A Tag Can Be Flagged at the Region Level to Show if CTBs in This Region Are Not Using the Default Set Index POC Region Flag Use Default Set Index 0 1 1 Use Default Set: 1 2 1 Use Default Set: 2 3 1 Use Default Set: 3 4 0 CTB Switch Set 1 to 4 Figure 28 is a block diagram illustrating the region division applied to CCSAO may be dynamic and changed at the frame level, in accordance with some implementations of the present disclosure. For example, Figure 28(a) shows that 3 CCSAO offset sets are used in this POC (set_num = 3), so the image frame is vertically divided into 3 regions. Figure 28(b) shows that 4 CCSAO offset sets are used in this POC (set_num = 4), so the image frame is horizontally divided into 4 regions. Figure 28(c) shows that 3 CCSAO offset sets are used in this POC (set_num = 3), so the image frame is raster divided into 3 regions. Each region can have its own region, all tagged, to store on / off control bits per CTB. The number of regions depends on the image signaled set_num. The CCSAO applied region can be a specific area based on the encoding information (sample position, sample encoded modes, loop filter parameters, etc.) within a block. For example, 1) the CCSAO applied region can be applied only when samples are encoded in skip mode, or 2) the CCSAO applied region only contains N samples along the CTU boundaries, or 3) the CCSAO applied region CCSAO only contains samples in an 8x8 grid in the frame, or 4) the CCSAO applied region only contains samples filtered by DBF, or 5) the CCSAO applied region only contains the top M and left N rows in a CU or (6 ) the CCSAO applied region contains only intra-coded samples, or (7) the CCSAO applied region contains only samples in cbf=0 blocks, or (8) the CCSAO applied region is only in blocks with the QP block in [N, M], where (N, M) can be predefined or flagged at SPS / APS / PPS / PH / SH / Region / CTU / CU / Subblock / Sample levels. The 5 inter-component coding information can also be taken into account, (9) the CCSAO applied region is in color samples whose placed brightness samples are in cbf=0 blocks. In some embodiments, whether coding information is entered may be predefined, or a region constraint applied may be predefined, or a control flag may be individualized at SPS / APS / PPS / PH / SH / Region (per alternate set) / CTU / CU levels. / Subblock / Displays 10 to indicate whether a specified encoding information is included / excluded in the CCSAO application. The decoder skips CCSAO processing for those areas based on the predefined condition or control flags. For example, YUV uses different predefined / tag-driven conditions that change at the region (set) level. CCSAO application judgment can be at CU / TU / PU or sample levels. / cnbLn / eznz / B / Yi TABLE 26-2 YUV Uses Different Predefined / Label Controlled Conditions That Change at the Region (Ensemble) Level P 0 c c 0 m P C 0 1 0 c a r In cbf=O blocks? in QP > 37 blocks? in intra samples? in sample s between? in samples edited by DBF? in samples edited with BIF? Block size < 8x8? 0 Y 0 No (default) Yes (default) 1 0 0 1 0 1 1 0 Yes (default) 1 1 1 1 in cbf=O blocks? On color swatches whose placed gloss swatches are in cbf=O blocks? in JCCR coded blocks? Block size 32x32? U 0 No (default) 1 1 1 in blocks cbf=0? on color samples whose placed brightness CUs are larger than the current color CUs? In the inherited intra address of brightness samples? V 0 0 1 1 Another example is the full or partial reuse of a (predefined) bilateral enabling constraint. bool islnter = (currCU.predMode == MODEJNTER)? true False; if (ccSaoParams.ctuOn [ctuRsAddr] && ((TU::getCbf (currTU, COMPONENT_Y) || islnter == false ) && (currTU.cu ->qp > 17)) &&(128 > std::max(currTU. IumaSize().width, currTU.lumaSize().height)) && ((islnter == false) || (32 > std::min(currTU.IumaSize().width, currTU. lumaSize().height )))) In some embodiments, excluding a specific area may benefit CCSAO statistics collection. Displacement bypass may be more accurate or appropriate for those areas that really need to be corrected. For example, blocks with cbf=0 generally mean that a block is predicted perfectly and may not need to be corrected further. The exclusion of those blocks may benefit the diversion of displacement from other areas. Different applied regions may use different classifiers. For example, in a CTU, jump mode uses Cl, an 8x8 grid uses C2, jump mode and 8x8 grid use C3. For example, in a CTU, samples encoded in skip mode use Cl, samples in the CU center use C2, samples that are skip mode encoded in the CU center use C3. Figure 29 is a diagram illustrating CCSAO classifiers that may take into account current or cross-component coding information, according to some implementations of the present disclosure. For example, different encoding modes / parameters / sample positions can form different classifiers. Different coding information can be combined to form an ensemble classifier. Different areas may use different classifiers. Figure 29 also shows another example of applied region. In some embodiments, the area-excluding information coding label control or predefined mechanism may be used in the DBF / PreSAO / SAO / BIF / CCSAO / ALF / CCALF / NN (NNLF) loop filter, or other loop filters. . In some embodiments, the implemented CCSAO syntax is shown in Table 27 below. In some examples, you can change the binarization of each syntax element. In AVS3, the term patch is similar to segment and the patch header is similar to the segment header. FLC stands for fixed length code. TU means truncated unary code. EGk means exponential golomb code with order k, where k can be fixed. SVLC means Signed EGO. UVLC means Unsigned EGO. / cnfrLn / eznz / B / Yi TABLE 27 An Example CCSAO Syntax Level Syntax Element Binarization Meaning SPS cc_sao_enabled_flag FLC if CCSAO is enabled in the stream, it can be inferred that it is off (disabled state) when chromaFormat is CHROMA_400 PH / SH ph_cc_sao_y_flag ph_cc_sao_cb_flag ph_cc_sao_cr_flag FLC If CCSAO is enabled in this image / slice for Y / Cb / Cr, it can be inferred to be off (disabled state) when chromaFormat is CHROMA_400. PH / SH ph_cc_sao_stored_offsets_set_idx FLC which pre-decoded offset sets are used, the Y / U / V offset set can be separated or shared PH / SH ph_cc_sao_y_ctb_control_flag ph_cc_sao_cb_ctb_control_flag ph_cc_sao_cr_ctb_control_flag FLC whether to enable Y / Cb on / off control / Cr at CTB level PH / SH Ph_cc_sao_y_set_num_minusl ph_cc_sao_cb_set_num_minusl ph_cc_sao_cb_set_num_minusl UVLC the number of alternative sets used in the image / section. SPS / APS / P PS / PH / SH / CTU ph_cc_sao_y_class_y_enabled_flag ph_cc_sao_y_class_u_enabled_flag ph_cc_sao_y_class_v_enabled_flag ph_cc_sao_cb_class_y_enabled_flag ph_cc_sao_cb_class_u_enabled_flag ph_cc_sao_cb_class _v_enabled_flag ph_cc_sao_cr_class_y_enabled_flag ph_cc_sao_cr_class_u_enabled_flag ph_cc_sao_cr_class_v_enabled_flag FLC if the current component can use other components for classification for example if ph_cc_sao_y_class_u_enabled _flag = 0 The Y component cannot use the Cb sample for sorting and there is no need to point out a sorting parameter like bandNumU. Otherwise, if the label is 1, Cb can be used to classify the current Y. SPS / APS / P PS / PH / SH / CTU ph_cc_sao_y_band_num_y_minusl ph_cc_sao_y_ba nd_n um_u_m¡ n us 1 ph_cc_sao_y_band_num_v_minusl ph_cc_sao_cb_band_num_y_minusl ph_cc_sao_cb_band_num_u_minusl ph_cc_sao_c b_band_num_v_minusl ph_cc_sao_cr_band_num_y_minusl ph_cc_sao_cr_band_num_u_minusl ph_cc_sao_cr_band_num_v_minusl FLC Band numbers adaptively modified for classification, e.g. ph_cc_sao_cb_band_num_y_ minusl ph_cc_sao_cb_band_num_u_ ph_cc _sao_cb_band_num_v_ minusl indicates for Cb component classification, Y / U / V band number used for 3-component junction band number classification SPS / APS / P PS / PH / SH / CTU ph_cc_sao_y_ca nd_pos_y ph_cc_sao_y_cand_pos_u ph_cc_sao_y_cand_pos_v ph_cc_sao_cb_cand_pos_y ph_cc_sao_cb_cand_pos _u ph_cc_sao_cb_cand_pos_v ph_cc_sao_cr_cand_pos_y ph_cc_sao_cr_cand_pos_u ph_cc_sao_cr_cand_pos_v FLC Indicating the position of the classifier candidate, e.g. ph_cc_sao_y_cand_pos_y ph_cc_sao_y_cand_pos_u ph_cc_sao_y_cand_pos_v indicates for Y component classification, Y / U / V candidate positions are selected as joint bandNum classification of 3 components SPS / AP S / P PS / PH / SH / CTU cc_sao_y_offset_sig n_f lag cc_sao_y_offset_a bs cc_sao_cb_offset_sig n_f lag cc_sao_cb_offset_a bs cc_sao_cr_offset_sig n_flag cc_sao_cr_offset_a bs FLC TU or EGk FLC TU or EGk Values ​​CCSAO displacement Y, Cb and Cr of each class. The sign tag can be conditioned to abs! = 0. if (offset_abs != 0) decode offset_sign_flag CTU ctb_cc_sao_y_flag ctb_cc_sao_cb_flag ctb_cc_sao_cr_flag CABAC, 1 or 2 contexts (top and left) if CCSAO is enabled for the current CTB Y, Cb or Cr CTU ctb_cc_sao_y_set_idx ctb_cc_sao_cb_set_idx ctb_cc_sao_cr_set_idx TU or EGk which set CCSAO offset is used for the current CTB Y, Cb or Cr (if CCSAO is enabled) CTU cc_sao_y_mergejeft_flag cc_sao_y_merge_up_flag cc_sao_cb_merge_left_flag cc_sao_cb_merge_up_flag cc_sao_cr_merge_left_flag cc_sao_cr_merge_up_flag CABA C if the CCSAO offset merges from the left or up the CTU If a higher-level tag is off, lower-level flags can be inferred from the tag's off state and do not need to be flagged. For example, if ph_cc_sao_cb_flag is false in this image, ph_cc_sao_cb_band_num_minusl, 5 ph_cc_sao_cb_luma_type, cc_sao_cb_offset_sign_flag, cc_sao_cb_offset_abs, ctb_cc_sao_cb_flag, cc_sao_cb_merge_left_flag, and cc_sao_cb_merge_up_flag are not present and are inferred to be false. In some embodiments, SPS ccsao_enabled_flag is conditional on the SPS SAO flag being enabled as shown in Table 28 below. / cnbLn / eznz / B / Yi TABLE 28 The SPS ccsao enabled flaq is Conditional on the SPS SAO Enabled Indicator sps_sao_enabled_flag u(l) s¡( sps_sao_enabled_flag && ChromaArrayType != 0) sps_ccsao_enabled_flag u(l) sps alf enabled flag u(l) s¡( sps alf enabled flag && ChromaArrayType != 0) sps_ccalf_enabled_flag u(l) In some embodiments, ph_cc_sao_cb_ctb_control_flag, ph_cc_sao_cr_ctb_control_flag indicate whether the Cb / Cr CTB on / off control granularity is enabled. If ph_cc_sao_cb_ctb_control_flag and ph_cc_sao_cr_ctb_control_flag are enabled, ctb_cc_sao_cb_flag and ctb_cc_sao_cr_flag can be further flagged. Otherwise, whether CCSAO is applied on the current image depends on ph_cc_sao_cb_flag, ph_cc_sao_cr_flag, without further ctb_cc_sao_cb_flag and ctb_cc_sao_cr_flag signals at CTB level. In some embodiments, for ph_cc_sao_cb_type and ph_cc_sao_cr_type, a label may be further noted to distinguish whether the center-placed brightness position (position YO in FIG 10A-10B) is used for classification of a color sample, to reduce the bit overload. Similarly, if cc_sao_cb_type and cc_sao_cr_type are signaled at the CTB level, a tag can be signaled with the same mechanism. For example, if the number of candidates for brightness position C0 is 9, cc_sao_cb_typeO_flag is additionally flagged to distinguish whether to use the center-placed brightness position as shown in Table 29 below. If the center-placed brightness position is not used, cc_sao_cb_type_idc is used to indicate which of the remaining 8 neighboring brightness positions is used. TABLE 29 cc sao cb typeO flaq is indicated to distinguish whether the brightness position placed in the center is used ctb_cc_sao_cb_flag u(l) if(ctb_cc_sao_cb_flag) cc_sao_cb_typeO_flag u(l), can be context encoded if( !cc_sao_cb_type0_flag) cc_sao_cb_type_idc u(3), can be context encoded The following Table 30 shows an example in AVS where simple (set_num = 1) or plural (set_num > 1) classifiers are used in the framework. Note that the syntax notation can be mapped to the notation used above. / cnfrLn / eznz / B / Yi TABLE 30 An Example in AVS Using Simple Classifiers (set num = 11 or Plurals (set num > 11 in the Image Frame) ccsao_parameter_picture_header_set( ) {for (compldx=0;compldx<2;compldx++) {picture_ccsao_enable_flag[compldx] u(l) if (PictureCcSaoEnableFlag[compIdx]) {picture_ccsao_lcu_control_flagfcompldx] u(D if (PictureCcSaoLcuControlFlag[compIdx]) {picture_ ccsao_set_n um_m i n us 1 [com pldx] u(2)} for (setIdx=0; setIdx<PictureCcSaoSetNumfcompIdx]; setldx++) {picture_ccsao_type[compldx][setldx] u(4) picture_ccsao_band_num_m¡nusircompldx]fsetldx] u(4)}}}} ccsao_parameter_set() {for (compldx=0;compldx<2;compldx++) {if (PictureCcSaoEnableFlag[compIdx]) {if (PictureCcSaoLcuControlFlag[compIdx]) {for (LcuIndex=O; LcuIndex<PictureW¡dthInLcu*P¡ctureHeightInLcu) {ccsao_lcu_enable_flag[compIdx][LcuIndex] ae(v) if (CcSaoLcuEnableFlag[compIdx][LcuIndex] && PictureCcSaoSetNumfcomp] > 1) {ccsao_lcu_set_idx[compIdx][LcuIndex] ae(v)}}} for (setIdx=O; setIdx <pictureccsaosetnum[comp]; setldx++) {para (i="0;" ¡<pictureccsaobandnum[compidx][setidx]; i++){ccsao offset abs[compldx][setldx][i] ae(v) si (ccsaooffsetabs[compidx][setidx][¡]) ccsao_offset_sign[compldx][setldx][¡] u(l)}}If combined with FIG 25 or FIG 27 where each region has its own set, the example syntax may include a region on / off control flag (picture_ccsao_lcu_control_flag[compldx][setldx]) as shown in Table 31 below. TABLE 31 Each Region Has Its Own Set and Example Syntax May Include a Region Enable / Disable Control Flag fpicture ccsao leu control flagrcompldxirsetldxl) / cnfrLn / eznz / e / Yi ccsao_parameter_picture_header_set( ) {for (compldx=0;compldx<2;compldx++) {picture ccsao enable flag[compldx] u(D if (PictureCcSaoEnableFlagfcompIdx]) {pictu re_ccsao_set_n um_m i n us 1 feom pldx] u(2) for (setIdx= 0; setIdx <pictureccsaosetnum[compidx]; setldx++) {picture_ccsao_lcu_control_flag[compldx][setldx] u(l) picture_ccsao_typef com pldx] γ setldx] u(4) picture_ccsao_band_num_minusl[compldx][setldx]}}In some embodiments, for high-level syntax, pps_ccsao_info_in_ph_flag and gci_no_sao_constraint_flag may be added. In some embodiments, pps_ccsao_info_in_ph_flag equal to 1 specifies that CCSAO filter information could be present in the PH syntax structure and not be present in segment headers that reference PPS that does not contain a PH syntax structure. pps_ccsao_info_in_ph_flag equal to 0 specifies that the CCSAO filter information is not present in the PH syntax structure and could be present in the segment headers that reference the PPS. When not present, the value of pps_ccsao_info_in_ph_flag is inferred to be equal to 0. In some embodiments, gci_no_ccsao_constraint_flag equal to 1 specifies that sps_ccsao_enabled_flag for all images in OlsInScope will be equal to 0. gci_no_ccsao_constraint_flag equal to 0 does not impose such a restriction. In some embodiments, a video bitstream comprises one or more output layer sets (OLS) according to a rule. In the examples herein, OlsInScope refers to one or more OLS that are in scope. In some examples, a profile_tier_level( ) syntax structure provides tier information and, optionally, profile, tier, subprofile, and general constraints information to which OlsInScope conforms. When a profile_tier_level( ) syntax structure is included in a VPS, OlsInScope is one or more OLS specified by the VPS. When a profile_tier_level( ) syntax structure is included in an SPS, OlsInScope is the OLS that includes only the layer that is the lowest layer among the layers that reference the SPS, and this lowest layer is an independent layer. In some embodiments, an extension of the intra and interpost prediction SAO filter is illustrated below. In some embodiments, the SAO classification methods disclosed in the present disclosure may serve as a post-prediction filter, and the prediction may be intra, inter, or other prediction tools, such as intra-block copy. Figure 30 is a block diagram illustrating that the SAO classification methods disclosed in the present disclosure serve as a post-prediction filter according to some implementations of the present disclosure. In some embodiments, for each component Y, U and V, a corresponding classifier is chosen. And for each component prediction sample, it is first sorted and the corresponding offset is added. For example, each component can use the current and neighboring samples for classification. Y uses the current Y and neighboring Y samples, and U / V uses the current U / V samples for classification as shown in Table 32 below. Figure 31 is a block diagram illustrating that for the post-prediction SAO filter, each component can use the current and neighboring samples for classification according to some implementations of the present disclosure. TABLE 32 A Corresponding Classifier is Chosen for Each Component Y, U and V POC Component CO Classifier band_num Total classes Compensation derived from current component 0 And combine C0 and Cl 16 16*17 h_Y[¡] 0 U C0 using position UO 8 8 h_U[¡] 0 V C0 using position V0 32 32 h_V[ Yo] In some embodiments, the refined prediction samples (Ypred', Upred', Vpred') are updated by adding the corresponding class offset and used for intra, inter, or other subsequent predictions. Ypred' = clip3(0, (1 << bit_depth)-l, Ypred + h_Y[i]) Upred' = clip3(0, (1 << bit_depth)-l, Upred + h_U[¡]) Vpred' = clip3(0, (1 << bit_depth)-l, Vpred + h_V[i]) In some embodiments, for the U and V color components, in addition to the current color component, the cross (Y) component may be used for additional offset classification. The additional offset between components (h'_U, h'_V) can be added to the current component offset (h_U, h_V), for example, as shown in Table 33 below. TABLE 33 For U and V Color Components, In addition to the Current Color Component, the Cross Component (Y) Can Be Used for Compensation Sorting Additional POC Component CO Classifier band_num Total classes Compensation derived from current component 0 U C0 using position Y4 16 16 h'_U[¡] 0 V C0 using position Y1 7 7 h'_V[¡] In some embodiments, the refined prediction samples (Upred, Vpred) are updated by adding the corresponding class offset and used for intra, inter, or other subsequent prediction. Upred = clip3(0, (1 << bit_depth)-l, Upred'+ h'_U[¡]) Vpred = clip3(0, (1 << bit_depth)-l, Vpred' + h'_V[i]) In some embodiments, intra and inter prediction may use different SAO filter offsets. Figure 32 is a flow chart illustrating an exemplary video signal decoding process 3200 using correlation between components in accordance with some implementations of the present disclosure. The video decoder 30 (as shown in FIG 3), receives, from the video signal, an image frame that includes a first component and a second component (3210). The video decoder 30 reconstructs samples of the first component through a first loop filter (3220). The video decoder 30 reconstructs samples of the second component through a second loop filter (3230). The video decoder 30 determines a classifier for the first component from one or more reconstructed samples of the second component with respect to a respective reconstructed sample of the first component (3240). The video decoder 30 selects a first sample offset for the respective reconstructed sample of the first component according to the classifier (3250). The video decoder 30 applies a plurality of filters in parallel with the selection of the first sample shift after the first loop filter to obtain a plurality of parallel shifts (3260). The video decoder 30 trims an output of a combination of the respective reconstructed sample of the first component after the first loop filter, the first sample shift and the plurality of parallel shifts of the plurality of filters, where the output of the combination is within a dynamic range of bit depth as a respective modified reconstructed sample of the first component (3270). In some embodiments, the first component is a brightness component and the second component is a color component, or the first component is a color component and the second component is a brightness component, or the first component is a first color component. color and the second component is a second color component. In some embodiments, one of the plurality of filters that are applied in parallel with the selection of the first sample shift is a bilateral filter (BIF) after the first loop filter, and one of the plurality of parallel shifts is a second sample shift. sample and the method of decoding video signal further comprises: determining, through the BIF, the second sample offset of the respective reconstructed sample of the first component. In some embodiments, one of the plurality of filters that are applied in parallel with the selection of the first sample offset is a Sample Adaptive Offset (SAO) filter after the first loop filter, and one of the plurality of parallel offsets is a third displacement of the sample; and the method of decoding video signal further comprising: receiving, through the SAO filter, a plurality of SAO sample offsets, and selecting the third sample offset of the plurality of SAO sample offsets according to a classifier of ODS of the respective reconstructed sample of the first component. In some embodiments, trimming the output of the combination of the respective reconstructed sample of the first component after the first loop filter, the first sample shift and the plurality of parallel shifts of the plurality of filters (3270) comprises: applying a function of trim to a combination of the respective reconstructed sample of the first component, the first sample offset, the second sample offset, and the third sample offset. In some embodiments, trimming the output of the combination of the respective reconstructed sample of the first component after the first loop filter, the first sample offset, and the plurality of parallel offsets of the plurality of filters (3270) comprises: applying a first clipping function to a first combination of the respective reconstructed sample of the first component after the first loop filter, and the third sample shift to obtain a first output; applying a second clipping function to a second combination of the first output and the second sample offset to obtain a second output; and applying a third clipping function to a third combination of the second output and the first sample offset. In some embodiments, trimming the output of the combination of the respective reconstructed sample of the first component after the first loop filter, the first sample offset, and the plurality of parallel offsets of the plurality of filters (3270) comprises: applying a first function clipping to a first combination of the respective reconstructed sample of the first component after the first loop filter, the second sample shift and the third sample shift to obtain a first output; and applying a second clipping function to a second combination of the first output and the first sample offset. In some embodiments, trimming the output of the combination of the respective reconstructed sample of the first component after the first loop filter, the first sample offset and the plurality of parallel offsets of the plurality of filters (3270) comprises: applying a function of trim to a combination of the respective reconstructed sample of the first component, the first sample offset, and the second sample offset. In some embodiments, trimming the output of the combination of the respective reconstructed sample of the first component after the first loop filter, the first sample shift, and the plurality of parallel shifts of the plurality of filters (3270) comprises: applying a first function clipping to a first combination of the respective reconstructed sample of the first component after the first loop filter and the second sample shift to obtain a first output; and applying a second clipping function to a second combination of the first output and the first sample offset. In some embodiments, the first loop filter is a Brightness Deblocking Filter (DBF) and the second loop filter is a color DBF, or the first loop filter is a color DBF and the second loop filter is a Brightness DBF or the first loop filter is a first color DBF and the second loop filter is a second. Figure 33 shows a computing environment 3310 together with a user interface 3350. The computing environment 3310 may be part of a data processing server. Computing environment 3310 includes processor 3320, memory 3330, and input / output interface 3340. The processor 3320 typically controls the general operations of the computing environment 3310, such as operations associated with display, data acquisition, data communications, and image processing. Processor 3320 may include one or more processors for executing instructions to perform all or some of the steps in the methods described above. Additionally, processor 3320 may include one or more modules that facilitate interaction between processor 3320 and other components. The processor may be a Central Processing Unit (CPU), a microprocessor, a single chip machine, a General Processing Unit (GPU) or the like. Memory 3330 is configured to store various types of data to support the operation of computing environment 3310. Memory 3330 may include predetermined software 3332. Examples of such data include instructions for any application or method operated in computing environment 3310, sets of video data, image data, etc. The memory 3330 may be implemented by using any type of volatile or non-volatile memory devices, or a combination thereof such as static random access memory (SRAM), electrically erasable programmable read-only memory (EEPROM), an erasable programmable read-only memory (EPROM), a programmable read-only memory (PROM), a read-only memory (ROM), a magnetic memory, a flash memory, a magnetic or optical disk. I / O interface 3340 provides an interface between the processor 3320 and peripheral interface modules, such as a keyboard, click wheel, buttons, and the like. The buttons may include, but are not limited to, a start button, a scan start button, and a scan stop button. The 3340 I / O interface can be coupled with an encoder and decoder. In one embodiment, a non-transitory computer-readable storage medium is also provided comprising a plurality of programs, e.g., in memory 3330, executable by processor 3320 in computing environment 3310, to perform the methods described above. Alternatively, the non-transitory computer-readable storage medium may have stored thereon a bit stream or a data stream comprising encoded video information (e.g., video information comprising one or more syntax elements) generated by an encoder (e.g., video encoder 20 in FIG. 2) use, e.g., the encoding method described above for use by a decoder (e.g., video decoder 30 in FIG. 3) in decoding of video data. For example, the non-transitory computer-readable storage medium may be a ROM, RAM, CD-ROM, magnetic tape, floppy disk, optical data storage device, or the like. In one embodiment, a computing device comprising one or more processors (e.g., processor 3320) is also provided; and the non-transitory computer-readable storage medium or memory 3330 having stored therein a plurality of programs executable by one or more processors, wherein one or more processors, upon execution of the plurality of programs, are configured to perform the methods described above. In one embodiment, a computer program product is also provided comprising a plurality of programs, for example, in memory 3330, executable by processor 3320 in computing environment 3310 to perform the methods described above. For example, the computer program product may include the non-transitory computer-readable storage medium. In one embodiment, computing environment 3310 may be implemented with one or more ASICs, DSPs, digital signal processing devices (DSPDs), programmable logic devices (PLDs), FPGAs, GPUs, controllers, microcontrollers, microprocessors, or other electronic components, to perform the previous methods. Other modalities also include various subsets of the above modalities combined or otherwise reorganized into various other modalities. In one or more examples, the described functions may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, functions may be stored or transmitted, as one or more instructions or code, on a computer-readable medium and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media, which corresponds to a tangible medium such as data storage media, or communication media, which includes any medium that facilitates the transfer of a computer program from one location to another, for example, according to a communication protocol. Thus, computer-readable media can generally correspond to (1) tangible computer-readable storage media that is not transient or (2) a communication medium such as a signal or carrier wave. Data storage media may be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, code and / or data structures for the implementation of the implementations described in this application. A computer program product may include a computer-readable medium. The terminology used in the present disclosure of the implementations herein is for the purpose of describing the particular implementations only and is not intended to limit the scope of the claims. As used in the present disclosure of the implementations and the accompanying claims, the singular forms a, an and the are intended to also include the plural forms, unless the context clearly indicates otherwise. The term and / or used herein shall also be understood to refer to and encompass any and all combinations of one or more of the associated listed elements. It will further be understood that the terms comprises and / or comprising, when used in this specification, specify the presence of indicated characteristics, elements and / or components, but do not exclude the presence or addition of one or more other characteristics, elements, components and / or groups thereof. It will be understood that although the terms first, second, etc., may be used herein to describe various information, the information should not be limited by these terms. These terms are only used to distinguish one item from another. For example, a first electrode could be called a second electrode and, similarly, a second electrode could be called a first electrode, without departing from the scope of the implementations. The first electrode and the second electrode are both electrodes, but they are not the same electrode. Reference throughout this specification to an example, an example, exemplary example or the like in singular or plural means that one or more particular features, structures or features described in connection with an example are included in at least one example herein. divulgation. Therefore, the occurrences of the phrases in an example or in an example, in an exemplary example or similar singular or plural in various places throughout this specification do not necessarily all refer to the same example. Furthermore, particular traits, structures or characteristics in one or more examples may be combined in any suitable manner. The description of the present disclosure has been presented for illustrative and descriptive purposes and is not intended to be exhaustive or limited to the invention as described. Many modifications, variations and alternative implementations will be apparent to those skilled in the art who benefit from the teachings presented in the foregoing descriptions and associated drawings. The embodiment was chosen and described to explain the principles of the invention, the practical application and to allow other experts in the art to understand the invention for various implementations and to better utilize the underlying principles and various implementations with various modifications as suited to the particular use. contemplated. Therefore, it should be understood that the scope of the claims is not to be limited to specific examples of the disclosed implementations and that modifications and other implementations are intended to be included within the scope of the appended claims.

Claims

1. A method for decoding a video signal, comprising: receiving, from the video signal, an image frame including a first component and a second component; reconstructing samples of the first component through a first loop filter; reconstructing samples of the second component through a second loop filter; determining a classifier for the first component from one or more reconstructed samples of the second component with respect to a respective reconstructed sample of the first component; selecting a first sample offset for the respective reconstructed sample of the first component according to the classifier; applying a plurality of filters in parallel with the selection of the first sample offset after the first loop filter to obtain a plurality of parallel offsets;and clipping an output from a combination of the respective reconstructed sample of the first component after the first looped filter, the first sample offset, and the plurality of parallel offsets of the plurality of filters, wherein the output of the combination is within a dynamic range of bit depth as a respective modified reconstructed sample of the first component.; 2. The method according to claim 1, further characterized in that the first component is a brightness component and the second component is a color component, or the first component is a color component and the second component is a brightness component, or the first component is a first color component and the second component is a second color component.

3. The method according to claim 1, further characterized in that one of the plurality of filters applied in parallel with the selection of the first sample shift is a bilateral filter (BIF) after the first loop filter, and one of the plurality of parallel shifts is a second sample shift; and the method for decoding a video signal further comprising: determining, via the BIF, the second sample shift of the respective reconstructed sample of the first component.

4. The method according to claim 1, further characterized in that one of the plurality of filters applied in parallel with the selection of the first sample shift is a Sample Adaptive Shift (SAO) filter after the first looped filter, and one of the plurality of parallel shifts is a third sample shift; and the method for decoding a video signal further comprising: receiving, through the SAO filter, a plurality of SAO sample shifts, and selecting the third sample shift from the plurality of SAO sample shifts according to an SAO classifier of the respective reconstructed sample of the first component.

5. The method according to claim 3, further characterized in that one of the plurality of filters applied in parallel with the selection of the first sample offset is a Sample Adaptive Offset (SAO) filter after the first looped filter, and one of the plurality of parallel offsets is a third sample offset through the SAO filter; and trimming the output of the combination of the respective reconstructed sample of the first component after the first looped filter, the first sample offset, and the plurality of parallel offsets of the plurality of filters comprises: applying a trimming function to a combination of the respective reconstructed sample of the first component, the first sample offset, the second sample offset, and the third sample offset.

6. The method according to claim 3, further characterized in that one of the plurality of filters applied in parallel with the selection of the first sample offset is a Sample Adaptive Offset (SAO) filter after the first looped filter, and one of the plurality of parallel offsets is a third sample offset through the SAO filter;and clipping the output of the combination of the respective reconstructed sample of the first component after the first looped filter, the first sample offset, and the plurality of parallel offsets of the plurality of filters comprises: applying a first clipping function to a first combination of the respective reconstructed sample of the first component after the first looped filter and the third sample offset to obtain a first output, applying a second clipping function to a second combination of the first output and the second sample offset to obtain a second output, and applying a third clipping function to a third combination of the second output and the first sample offset.

7. The method according to claim 3, further characterized in that one of the plurality of filters applied in parallel with the selection of the first sample offset is a Sample Adaptive Offset (SAO) filter after the first looped filter, and one of the plurality of parallel offsets is a third sample offset through the SAO filter;and clipping the output of the combination of the respective reconstructed sample of the first component after the first looped filter, the first sample offset, and the plurality of parallel offsets of the plurality of filters comprises: applying a first clipping function to a first combination of the respective reconstructed sample of the first component after the first looped filter, the second sample offset, and the third sample offset to obtain a first output, and applying a second clipping function to a second combination of the first output and the first sample offset.

8. The method according to claim 3, further characterized in that the clipping of the output of the combination of the respective reconstructed sample of the first component after the first loop filter, the first sample displacement and the plurality of parallel displacements of the plurality of filters comprises: applying a clipping function to a combination of the respective reconstructed sample of the first component, the first sample displacement and the second sample displacement.

9. The method according to claim 3, further characterized in that the clipping of the output of the combination of the respective reconstructed sample of the first component after the first loop filter, the first sample displacement, and the plurality of parallel displacements of the plurality of filters comprises: applying a first clipping function to a first combination of the respective reconstructed sample of the first component after the first loop filter and the second sample displacement to obtain a first output, and applying a second clipping function to a second combination of the first output and the first sample displacement.

10. The method according to claim 1, further characterized in that the first loop filter is a Brightness Unlock Filter (DBF) and the second loop filter is a color DBF, or the first loop filter is a color DBF and the second loop filter is a brightness DBF, or the first loop filter is a first color DBF and the second loop filter is a second.

11. An electronic apparatus comprising: one or more processors; and one or more storage devices coupled to the one or more processors; wherein the one or more processors are configured to: perform the method of any of claims 1 to 10.

12. A computer-readable storage medium that stores a bit stream to be decoded by the video signal decoding method according to any of claims 1 to 10.

13. A bitstream storage medium comprising: storing the bitstream in a digital storage medium, wherein the bitstream comprises encoded data to be decoded by the video signal decoding method according to any of claims 1 to 10.