Video encoding method, electronic device, and storage medium

By utilizing cross-component relationships and sample classifiers in video encoding and decoding, the efficiency of chroma encoding and decoding is improved, solving the problem of low efficiency in high-resolution video encoding and achieving more efficient encoding and decoding results.

CN116527923BActive Publication Date: 2025-10-21BEIJING DAJIA INTERNET INFORMATION TECH CO LTD
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202310463662.1
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2020-07-28
Filing Date
2021-07-28
Publication Date
2025-10-21
Estimated Expiration
2041-07-28

AI Technical Summary

Technical Problem

Existing video encoding and decoding technologies are inefficient when encoding high-resolution videos, making it difficult to encode and decode more efficiently while maintaining image quality.

Method used

By exploring the cross-component relationship between the luminance and chrominance components, a sample classifier is used to divide the range of the luminance component into several bands, and appropriate offsets are selected based on these bands to modify the chrominance component, thereby improving encoding and decoding efficiency.

Benefits of technology

It improves the efficiency of video encoding and decoding, especially in high-resolution video encoding, reducing bit rate requirements and improving encoding quality.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN116527923B_ABST
    Figure CN116527923B_ABST
Patent Text Reader

Abstract

The disclosure relates to a video encoding method, an electronic device, and a storage medium. The method includes obtaining a video image including a first component and a second component; determining a plurality of offsets associated with the second component; obtaining a class index associated with the second component using a sample value of the first component; selecting an offset for the second component from the plurality of offsets according to the class index; and obtaining a sample value of the second component based on the selected offset, wherein obtaining the class index associated with the second component using the sample value of the first component includes obtaining a first variable using a first sample value of the first component; obtaining a second variable using a second sample value of the first component; and obtaining the class index according to the first variable and the second variable.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Division Statement

[0002] This application is a divisional application of Chinese patent application No. 202110858532.9, which claims priority to U.S. Provisional Patent Application No. 63 / 057,303, entitled “Cross-component Sample Adaptive Offset (CCSAO)”, filed on July 28, 2020. Technical Field

[0003] The present application relates generally to video coding and compression, and more particularly to methods and apparatus for improving chroma coding efficiency. Background Art

[0004] Various electronic devices, such as digital televisions, laptop or desktop computers, tablet computers, digital cameras, digital recorders, digital media players, video game consoles, smartphones, video teleconferencing devices, and video streaming devices, support digital video. Electronic devices transmit, receive, encode, decode, and / or store digital video data by implementing video compression / decompression standards. Some well-known video codec 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), which were jointly developed by ISO / IEC MPEG and ITU-T VCEG. Alliance for Open Media Video 1 (AV1) was developed by the Alliance for Open Media (AOM) as a successor to its predecessor, VP9. Audio Video Coding (AVS) (which refers to the digital audio and digital video compression standard) is another video compression standard series developed by the Audio and Video Coding Standard Workgroup of China.

[0005] Video compression typically involves performing spatial (intra-frame) prediction and / or temporal (inter-frame) prediction to reduce or eliminate redundancy inherent in video data. For block-based video codecs, a video frame is partitioned into one or more slices, each with multiple video blocks, which may also be referred to as Coding Tree Units (CTUs). Each CTU may contain a Coding Unit (CU) or be recursively partitioned into smaller CUs until a preset minimum CU size is reached. Each CU (also known as a leaf CU) contains one or more Transform Units (TUs), and each CU also contains one or more Prediction Units (PUs). Each CU can be encoded or decoded in intra, inter, or IBC mode. Video blocks in an intra-coded (I) slice of a video frame are encoded using spatial prediction relative to reference samples in neighboring blocks within the same video frame. Video blocks in an inter-coded (P or B) slice of a video frame may use spatial prediction relative to reference samples in neighboring blocks within the same video frame or temporal prediction relative to reference samples in other previous and / or future reference video frames.

[0006] A prediction block for the current video block to be coded is generated based on spatial or temporal prediction of previously coded reference blocks (e.g., neighboring blocks). The process of finding the reference block can be accomplished using a block matching algorithm. The residual data representing the pixel differences between the current block to be coded and the prediction block is called a residual block or prediction error. Inter-coded blocks are encoded based on motion vectors pointing to reference blocks in the reference frames that form the prediction block, and the residual block. The process of determining the motion vector is typically called motion estimation. Intra-coded blocks are encoded based on the intra-frame prediction mode and the residual block. For further compression, the residual block is transformed from the pixel domain to a transform domain, such as the frequency domain, to produce 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, which can then be entropy coded into the video bitstream to achieve even greater compression.

[0007] The coded video bitstream is then stored in a computer-readable storage medium (e.g., a flash memory) for access by another electronic device with digital video capabilities, or is directly transmitted to the electronic device in a wired or wireless manner. The electronic device then performs video decompression (which is the reverse process of the video compression described above) by, for example, parsing the coded video bitstream to obtain syntax elements from the bitstream and reconstructing digital video data from the coded video bitstream into its original format based at least in part on the syntax elements obtained from the bitstream, and rendering the reconstructed digital video data on a display of the electronic device.

[0008] As digital video quality increases from HD to 4K×2K or even 8K×4K, the amount of video data to be encoded / decoded increases exponentially. There has always been a challenge in how to encode / decode video data more efficiently while maintaining the image quality of the decoded video data. Summary of the Invention

[0009] The present application describes embodiments of methods and apparatus related to video data encoding and decoding, and more particularly, to improving the codec efficiency of chroma codecs, including by exploiting cross-component relationships between luma and chroma components.

[0010] According to a first aspect of the present application, a method for decoding a video signal includes: receiving a video signal including a first component and a second component; receiving a plurality of offsets associated with the second component; obtaining a classifier associated with the second component using samples of the first component; dividing the range of the sample values ​​of the first component into a plurality of bands based on the classifier; selecting a band based on intensity values ​​of the sample values ​​of the first component; selecting an offset for the second component from the plurality of offsets according to the selected band; and modifying the second component based on the selected offset. In some embodiments, the selected band is obtained as follows: Class = (Y*band_num)>>bit_depth, where band_num is the number of bands into which the dynamic range of the first component is divided, Y is the intensity value of the sample values ​​of the first component, bit_depth is the sequence bit depth, and Class is the class index of the selected band of the second component.

[0011] According to a second aspect of the present application, an electronic device includes one or more processing units, a memory, and a plurality of programs stored in the memory. When executed by the one or more processing units, the programs enable the electronic device to perform the method for encoding and decoding video data as described above.

[0012] 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 device having one or more processing units. When executed by the one or more processing units, the programs cause the electronic device to perform the method for encoding and decoding video data as described above. BRIEF DESCRIPTION OF THE DRAWINGS

[0013] The accompanying drawings, which are included to provide a further understanding of the embodiments and are incorporated in and constitute a part of this specification, illustrate the described embodiments and together with the description serve to explain the basic principles. Like reference numerals designate corresponding parts.

[0014] Figure 1 is a block diagram illustrating an exemplary video encoding and decoding system according to some embodiments of the present disclosure.

[0015] Figure 2 is a block diagram illustrating an exemplary video encoder according to some embodiments of the present disclosure.

[0016] Figure 3 is a block diagram illustrating an exemplary video decoder according to some embodiments of the present disclosure.

[0017] Figures 4A to 4E is a block diagram illustrating how a frame is recursively partitioned into multiple video blocks of different sizes and shapes according to some embodiments of the present disclosure.

[0018] Figure 5 is a block diagram depicting four gradient modes used in Sample Adaptive Offset (SAO) according to some embodiments of the present disclosure.

[0019] Figure 6A is a block diagram illustrating a system and process for compensation for cross-component sample offset (CCSAO) according to some embodiments of the present disclosure.

[0020] Figure 6B is a block diagram illustrating a system and process for CCSAO applied in parallel with ESAO in the AVS standard according to some embodiments of the present disclosure.

[0021] Figure 7 is a block diagram illustrating a sample process using CCSAO according to some embodiments of the present disclosure.

[0022] Figure 8 is a block diagram illustrating that a CCSAO process is interleaved to vertical and horizontal deblocking filters (DBFs) according to some embodiments of the present disclosure.

[0023] Figure 9 is a flow chart illustrating an exemplary process for decoding a video signal using cross-component correlation according to some embodiments of the present disclosure.

[0024] Figure 10 is a block diagram illustrating a classifier for classification using different luminance sample positions according to some embodiments of the present disclosure.

[0025] Figure 11 is a block diagram illustrating a sample process in which, in addition to luma, other cross-component collocated and adjacent chroma samples are also fed into CCSAO classification according to some embodiments of the present disclosure.

[0026] Figure 12 An exemplary classifier is illustrated that replaces collocated luma sample values ​​with values ​​obtained by weighting the collocated luma sample and neighboring luma samples according to some embodiments of the present disclosure.

[0027] Figure 13A is a block diagram illustrating that CCSAO is not applied to a current chroma sample if any of the collocated luma sample and the neighboring luma samples used for classification are outside the current picture, according to some embodiments of the present disclosure.

[0028] Figure 13B is a block diagram illustrating application of CCSAO to a current chroma sample if any of the collocated luma sample and the neighboring luma sample used for classification is outside the current image, according to some embodiments of the present disclosure.

[0029] Figure 14 is a flow chart illustrating an exemplary process for decoding a video signal using cross-component correlation classification according to some embodiments of the present disclosure. DETAILED DESCRIPTION

[0030] Reference will now be made in detail to specific embodiments, examples of which are illustrated in the accompanying drawings. In the following detailed description, numerous non-limiting specific details are set forth to facilitate understanding of the subject matter presented herein. However, it will be apparent to those skilled in the art that various alternatives may be employed without departing from the scope of the claims, and that the subject matter may be practiced without these specific details. For example, it will be apparent to those skilled in the art that the subject matter presented herein may be implemented on many types of electronic devices having digital video capabilities.

[0031] The first-generation AVS standards include the Chinese national standards "Information Technology Advanced Audio and Video Codecs Part 2: Video" (referred to as AVS1) and "Information Technology Advanced Audio and Video Codecs Part 16: Broadcast and Television Video" (referred to as AVS+). Compared to the MPEG-2 standard, the first-generation AVS standard can provide approximately 50% bitrate savings at the same perceived quality. The second-generation AVS standards include the Chinese national standard series "Information Technology High-Efficiency Multimedia Codecs" (referred to as AVS2), which are primarily targeted at the transmission of additional HDTV programs. The codec efficiency of AVS2 is twice that of AVS+. The video portion of the AVS2 standard has been submitted by the Institute of Electrical and Electronics Engineers (IEEE) as an international application standard. The AVS3 standard is a next-generation video codec standard for UHD video applications, designed to surpass the codec efficiency of the latest international standard, HEVC. The AVS3 standard offers approximately 30% bitrate savings over HEVC. In March 2019, at the 68th AVS meeting, the AVS3-P2 baseline was completed, which provides approximately 30% bitrate savings over the HEVC standard. Currently, the AVS Working Group maintains a reference software for demonstrating a reference implementation of the AVS3 standard, called the High Performance Model (HPM). Like HEVC, the AVS3 standard is built on a block-based hybrid video codec framework.

[0032] Figure 1 is a block diagram illustrating an exemplary system 10 for encoding and decoding video blocks in parallel according to some embodiments of the present disclosure. Figure 1 As shown, 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. Source device 12 and destination device 14 may include any of a variety of electronic devices, including desktop or laptop computers, tablet computers, smartphones, set-top boxes, digital televisions, cameras, display devices, digital media players, video game consoles, video streaming devices, etc. In some implementations, source device 12 and destination device 14 are equipped with wireless communication capabilities.

[0033] In some embodiments, the destination device 14 may receive the encoded video data to be decoded via a link 16. The link 16 may include any type of communication medium or device capable of moving the encoded video data from the source device 12 to the destination device 14. In one example, the link 16 may include a communication medium for enabling the source device 12 to transmit the encoded video data directly to the destination device 14 in real time. The encoded video data may be modulated and transmitted to the destination device 14 according to a communication standard such as a wireless communication protocol. The communication medium may include any wireless or wired communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium may form 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 a router, a switch, a base station, or any other device that can be used to facilitate communication from the source device 12 to the destination device 14.

[0034] In some other embodiments, the encoded video data can be transferred from the output interface 22 to a storage device 32. The encoded video data in the storage device 32 can then be accessed by the destination device 14 via the input interface 28. The storage device 32 can include any of a variety of distributed or locally accessed data storage media, such as a hard drive, a Blu-ray disc, a DVD, a CD-ROM, flash memory, volatile memory or non-volatile memory, or any other suitable digital storage medium for storing encoded video data. In a further example, the storage device 32 can correspond to a file server or another intermediate storage device that can hold the encoded video data generated by the source device 12. The destination device 14 can access the stored video data from the storage device 32 via streaming or downloading. The file server can be any type of computer capable of storing and transferring the encoded video data to the destination device 14. Exemplary file servers include a web server (e.g., for a website), an FTP server, a network attached storage (NAS) device, or a local disk drive. Destination device 14 can access the encoded video data through any standard data connection, including a wireless channel suitable for accessing encoded video data stored on a file server (e.g., a Wi-Fi connection), a wired connection (e.g., DSL, cable modem, etc.), or a combination of both. The transmission of the encoded video data from storage device 32 can be a streaming transmission, a download transmission, or a combination of both.

[0035] like Figure 1As shown, source device 12 includes a video source 18, a video encoder 20, and an output interface 22. Video source 18 can include a source such as a video capture device, for example, a camera, a video archive 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 source video, or a combination of such sources. As an example, if video source 18 is a camera of a security monitoring system, source device 12 and destination device 14 can form a camera phone or a video phone. However, the embodiments described in this application can be generally applicable to video encoding and decoding and can be applied to wireless and / or wired applications.

[0036] Captured, pre-captured, or computer-generated video may be encoded by video encoder 20. The encoded video data may be transmitted directly to destination device 14 via output interface 22 of source device 12. The encoded video data may also (or alternatively) be stored on storage device 32 for later access by destination device 14 or other devices for decoding and / or playback. Output interface 22 may further include a modem and / or a transmitter.

[0037] Destination device 14 includes an input interface 28, a video decoder 30, and a display device 34. Input interface 28 may include a receiver and / or a modem and receives encoded video data via link 16. The encoded video data transmitted via link 16 or provided on storage device 32 may include various syntax elements generated by video encoder 20 for use in decoding the video data by video decoder 30. Such syntax elements may be included within the encoded video data transmitted over a communication medium, stored on a storage medium, or stored in a file server.

[0038] In some implementations, destination device 14 may include a display device 34, which may be an integrated display device or an external display device configured to communicate with destination device 14. Display device 34 displays the decoded video data to a user and may include 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 another type of display device.

[0039] The video encoder 20 and the 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 of such standards. It should be understood that the present application is not limited to a particular video codec / decoding standard and may be applicable to other video codec / decoding standards. It is generally 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.

[0040] The video encoder 20 and the video decoder 30 can each be implemented as any of a variety of suitable encoder circuits, such as one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware, or any combination thereof. When implemented partially in software, the electronic device can store instructions for the software in 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 disclosed in the present disclosure. Each of the video encoder 20 and the video decoder 30 can be included in one or more encoders or decoders, any of which can be integrated as part of a combined encoder / decoder (CODEC) in the corresponding device.

[0041] Figure 2 is a block diagram illustrating an exemplary video encoder 20 according to some embodiments described herein. The video encoder 20 can perform intra-frame prediction and inter-frame prediction codecs on video blocks within a video frame. Intra-frame prediction codecs rely on spatial prediction to reduce or remove spatial redundancy in video data within a given video frame or image. Inter-frame prediction codecs rely on temporal prediction to reduce or remove temporal redundancy in video data within adjacent video frames or images of a video sequence.

[0042] like Figure 2As shown, the video encoder 20 includes a video data memory 40, a prediction processing unit 41, a decoded picture buffer (DPB) 64, an adder 50, a transform processing unit 52, a quantization unit 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 partitioning unit 45, an intra-frame prediction processing unit 46, and an intra-frame block copy (BC) unit 48. In some embodiments, the video encoder 20 also includes an inverse quantization unit 58, an inverse transform processing unit 60, and an adder 62 for video block reconstruction. A loop filter (such as a deblocking filter (not shown)) can be located between the adder 62 and the DPB 64 to filter block boundaries to remove blocking artifacts from the reconstructed video. In addition to the deblocking filter, another loop filter (not shown) can also be used to filter the output of the adder 62. Further loop filtering, such as Sample Adaptive Offset (SAO) and Adaptive In-Loop Filter (ALF), may be applied to the reconstructed CU before it is placed in a reference picture store and used as a reference for encoding and decoding future video blocks. The video encoder 20 may take the form of fixed or programmable hardware units, or may be partitioned into one or more of the illustrated fixed or programmable hardware units.

[0043] The video data memory 40 can store video data to be encoded by the components of the video encoder 20. The video data in the video data memory 40 can be obtained, for example, from the video source 18. The DPB 64 is a buffer that stores reference video data for use in encoding the video data by the video encoder 20 (e.g., in an intra-frame prediction codec mode or an inter-frame prediction codec mode). The video data memory 40 and the DPB 64 can be formed by any of a variety of memory devices. In various examples, the video data memory 40 can be on-chip with the other components of the video encoder 20, or off-chip relative to those components.

[0044] like Figure 2As shown, after receiving the video data, the partition unit 45 within the prediction processing unit 41 partitions the video data into video blocks. This partitioning may also include partitioning the video frame into slices, tiles, or other larger coding units (CUs) according to a preset partitioning structure (such as a quadtree 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 can select one of multiple possible prediction codec modes for the current video block based on error results (e.g., codec rate and distortion level), such as one of multiple intra-frame prediction codec modes or one of multiple inter-frame prediction codec modes. The prediction processing unit 41 can provide the resulting intra-frame prediction coding block or inter-frame prediction coding block to the adder 50 to generate a residual block, and to the adder 62 to reconstruct the coding block for subsequent use as part of a reference frame. The prediction processing unit 41 also provides syntax elements such as motion vectors, intra-frame mode indicators, partition information, and other such syntax information to the entropy coding unit 56.

[0045] To select an appropriate intra-frame prediction codec mode for the current video block, intra-frame prediction processing unit 46 within prediction processing unit 41 may perform intra-frame prediction codec on the current video block relative to one or more neighboring blocks in the same frame as the current block to be coded to provide spatial prediction. Motion estimation unit 42 and motion compensation unit 44 within prediction processing unit 41 may perform inter-frame prediction codec on the current video block relative to one or more prediction blocks in one or more reference frames to provide temporal prediction. Video encoder 20 may perform multiple encoding passes, for example, to select an appropriate codec mode for each block of video data.

[0046] In some embodiments, motion estimation unit 42 determines the inter-prediction mode for the current video frame by generating motion vectors based on a predetermined pattern within a sequence of video frames. The motion vectors indicate the displacement of prediction units (PUs) of a video block within the current video frame relative to a prediction block within a reference video frame. Motion estimation performed by motion estimation unit 42 is the process of generating motion vectors that estimates the motion of a video block. For example, a motion vector may indicate the displacement of a PU of a video block within the current video frame or image relative to a prediction block (or other coding unit) within a reference frame, the prediction block being relative to the current block (or other coding unit) encoded within the current frame. The predetermined pattern may designate video frames in the sequence as P-frames or B-frames. Intra BC unit 48 may determine vectors, such as block vectors, for use in intra BC encoding and decoding in a manner similar to the manner in which motion estimation unit 42 determines motion vectors for inter-prediction, or may utilize motion estimation unit 42 to determine block vectors.

[0047] A prediction block is a block of a reference frame that is considered to closely match the PU of the video block to be coded in terms of pixel difference, which can be determined by the sum of absolute differences (SAD), sum of square differences (SSD), or other difference metrics. In some embodiments, the video encoder 20 can calculate values ​​for sub-integer pixel positions of the reference frame stored in the DPB 64. For example, the video encoder 20 can interpolate values ​​for quarter-pixel positions, eighth-pixel positions, or other fractional pixel positions of the reference frame. Thus, the motion estimation unit 42 can perform motion searches relative to full pixel positions and fractional pixel positions and output motion vectors with fractional pixel accuracy.

[0048] Motion estimation unit 42 calculates a motion vector for a PU of a video block in an inter-predicted codec frame by comparing the position of the PU to the position of a prediction block of a reference frame selected from a first reference frame list (List 0) or a second reference frame list (List 1), each of which identifies one or more reference frames stored in DPB 64. Motion estimation unit 42 sends the calculated motion vector to motion compensation unit 44 and then to entropy encoding unit 56.

[0049] Motion compensation performed by motion compensation unit 44 may involve obtaining or generating a prediction block based on the motion vector determined by motion estimation unit 42. Upon receiving the motion vector for the PU of the current video block, motion compensation unit 44 may locate the prediction block pointed to by the motion vector in one of the reference frame lists, retrieve the prediction block from DPB 64, and forward the prediction block to adder 50. Adder 50 then forms a residual video block having pixel difference values ​​by subtracting the pixel values ​​of the prediction block provided by motion compensation unit 44 from the pixel values ​​of the current video block being coded. The pixel difference values ​​forming the residual video block may include luma difference components, chroma difference components, or both. Motion compensation unit 44 may also generate syntax elements associated with the video block of the video frame for use by video decoder 30 when decoding the video block of the video frame. The syntax elements may include, for example, syntax elements defining a motion vector for identifying the prediction block, any flags indicating a prediction mode, or any other syntax information described herein. Note that motion estimation unit 42 and motion compensation unit 44 may be highly integrated but are illustrated separately for conceptual purposes.

[0050] In some embodiments, the intra BC unit 48 may generate a vector and obtain a prediction block in a manner similar to that described above in conjunction with the motion estimation unit 42 and the motion compensation unit 44, but wherein the prediction block is in the same frame as the current block being encoded and wherein the vector is referred to as a block vector relative to the motion vector. Specifically, the intra BC unit 48 may determine an intra prediction mode to use for encoding the current block. In some examples, the intra BC unit 48 may encode the current block using various intra prediction modes, for example during separate encoding passes, and test their performance using rate-distortion analysis. Next, the intra BC unit 48 may select an appropriate intra prediction mode to use from the various tested intra prediction modes 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 tested intra prediction modes and select the intra prediction mode with the best rate-distortion characteristics from the tested modes as the appropriate intra prediction mode to use. Rate-distortion analysis typically determines the amount of distortion (or error) between a coded block and the original, uncoded block (that was coded to produce the coded block) and the bit rate (i.e., the number of bits) used to produce the coded block. Intra BC unit 48 may calculate a ratio based on the distortion and rate for each coded block to determine which intra prediction mode exhibits the best rate-distortion value for the block.

[0051] In other examples, intra BC unit 48 may utilize, in whole or in part, motion estimation unit 42 and motion compensation unit 44 to perform such functions for intra BC prediction in accordance with embodiments described herein. In either case, for intra block copying, the prediction block may be a block that is deemed to closely match the block to be coded in terms of pixel difference, which may be determined by sum of absolute difference (SAD), sum of squared difference (SSD), or other difference metrics, and identification of the prediction block may include calculating values ​​for sub-integer pixel positions.

[0052] Regardless of whether the prediction block is from the same frame according to intra-frame prediction or from different frames according to inter-frame prediction, video encoder 20 can form a residual video block by subtracting the pixel values ​​of the prediction block from the pixel values ​​of the current video block being encoded and decoded, thereby forming pixel difference values. The pixel difference values ​​forming the residual video block may include luma component differences and chroma component differences.

[0053] As described above, the intra-prediction processing unit 46 may perform intra-prediction on the 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 intra BC unit 48. Specifically, the intra-prediction processing unit 46 may determine an intra-prediction mode to use for encoding the current block. To this end, the intra-prediction processing unit 46 may encode the current block using various intra-prediction modes, for example, during separate encoding passes, and the intra-prediction processing unit 46 (or the mode selection unit in some examples) may select an appropriate intra-prediction mode to use from the tested intra-prediction modes. The intra-prediction processing unit 46 may provide information indicating the selected intra-prediction mode for the block to the entropy coding unit 56. The entropy coding unit 56 may encode the information indicating the selected intra-prediction mode in the bitstream.

[0054] After prediction processing unit 41 determines a prediction block for the current video block via inter-frame prediction or intra-frame prediction, adder 50 forms a residual video block by subtracting the prediction block from the current video block. The residual video data in the residual block may be included in one or more transform units (TUs) and provided to transform processing unit 52. Transform processing unit 52 transforms the residual video data into residual transform coefficients using a transform such as a discrete cosine transform (DCT) or a conceptually similar transform.

[0055] Transform processing unit 52 may send the resulting transform coefficients to quantization unit 54. Quantization unit 54 quantizes the transform coefficients to further reduce the bit rate. The quantization process may also reduce the bit depth associated with some or all of the coefficients. The degree of quantization may be modified by adjusting a quantization parameter. In some examples, quantization unit 54 may then perform a scan of the matrix comprising the quantized transform coefficients. Alternatively, entropy coding unit 56 may perform the scan.

[0056] After quantization, entropy coding unit 56 entropy 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 context-adaptive binary arithmetic coding (SBAC), probability interval partitioning entropy (PIPE) coding, or other entropy coding methods or techniques. The encoded bitstream may then be transmitted to video decoder 30 or archived in storage device 32 for later transmission to or retrieval by video decoder 30. Entropy coding unit 56 may also entropy encode motion vectors and other syntax elements for the current video frame being encoded or decoded.

[0057] Inverse quantization unit 58 and 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 used to predict other video blocks. As described above, motion compensation unit 44 may generate a motion compensated prediction block from one or more reference blocks of a frame stored in DPB 64. Motion compensation unit 44 may also apply one or more interpolation filters to the prediction block to calculate sub-integer pixel values ​​for use in motion estimation.

[0058] Adder 62 adds the reconstructed residual block to the motion compensated prediction block produced by motion compensation unit 44 to produce a reference block for storage in DPB 64. The reference block may then be used as a prediction block by intra BC unit 48, motion estimation unit 42, and motion compensation unit 44 to inter-predict another video block in a subsequent video frame.

[0059] Figure 3 3 is a block diagram illustrating an exemplary video decoder 30 according to some embodiments 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-frame prediction processing unit 84, and an intra-frame BC unit 85. The video decoder 30 may perform operations generally in conjunction with the above. Figure 2The decoding process is the reverse of the encoding process described with respect to video encoder 20. For example, motion compensation unit 82 may generate prediction data based on motion vectors received from entropy decoding unit 80, and intra-prediction unit 84 may generate prediction data based on intra-prediction mode indicators received from entropy decoding unit 80.

[0060] In some examples, units of the video decoder 30 may be assigned tasks to perform embodiments of the present disclosure. Similarly, in some examples, embodiments of the present disclosure may be divided among one or more units of the video decoder 30. For example, the intra BC unit 85 may perform embodiments of the present disclosure alone or in combination with other units of the video decoder 30, such as the motion compensation unit 82, the intra prediction processing 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 functions 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.

[0061] The video data memory 79 can store video data, such as an encoded video bitstream, to be decoded by other components of the video decoder 30. For example, the video data stored in the video data memory 79 can be obtained from a storage device 32 from a local video source (such as a camera) via a wired or wireless network for transmitting the video data, or by accessing a physical data storage medium (e.g., a flash drive or hard disk). The video data memory 79 can include a coded picture buffer (CPB) that stores encoded video data from the encoded video bitstream. The decoded picture buffer (DPB) 92 of the video decoder 30 stores reference video data for use in decoding the video data by the video decoder 30 (e.g., in intra-frame prediction codec mode or inter-frame prediction codec mode). The video data memory 79 and the DPB 92 may be formed from any of a variety of memory devices, such as dynamic random access memory (DRAM), including synchronous DRAM (SDRAM), magneto-resistive RAM (MRAM), resistive RAM (RRAM), or other types of memory devices. For illustrative purposes, the video data memory 79 and the DPB 92 are shown in FIG. Figure 392 as two distinct components of video decoder 30. However, it will be apparent to those skilled in the art that video data memory 79 and DPB 92 may be provided by the same memory device or separate memory devices. In some examples, video data memory 79 may be on-chip with other components of video decoder 30, or off-chip relative to those components.

[0062] 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 syntax elements at the video frame level and / or the video block level. The entropy decoding unit 80 of the video decoder 30 entropy decodes the bitstream to generate quantized coefficients, motion vectors or intra-prediction mode indicators, and other syntax elements. The entropy decoding unit 80 then forwards the motion vectors and other syntax elements to the prediction processing unit 81.

[0063] When a video frame is encoded and decoded as an intra-frame prediction codec (I) frame or an intra-frame codec prediction block in other types of frames, the intra-frame prediction processing unit 84 of the prediction processing unit 81 can generate prediction data for the video block of the current video frame based on the signaled intra-frame prediction mode and reference data from the previously decoded block of the current frame.

[0064] When the video frame is encoded as an inter-frame prediction codec (i.e., B or P) frame, the motion compensation unit 82 of the prediction processing unit 81 generates one or more prediction blocks for the video block of the current video frame based on the motion vectors and other syntax elements received from the entropy decoding unit 80. Each prediction block can be generated from a reference frame in one of the reference frame lists. The video decoder 30 can construct the reference frame lists: List 0 and List 1 based on the reference frames stored in the DPB 92 using a default construction technique.

[0065] In some examples, when a video block is encoded or decoded according to the intra BC mode described herein, intra BC unit 85 of prediction processing unit 81 generates a prediction block for the current video block based on the block vector and other syntax elements received from entropy decoding unit 80. The prediction block may be within the same reconstructed region of the picture as the current video block defined by video encoder 20.

[0066] The motion compensation unit 82 and / or the intra BC unit 85 determine prediction information for a video block of the current video frame by parsing the motion vector and other syntax elements, and then use the prediction information to generate a prediction block 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 prediction or inter prediction) for encoding or decoding the video block of the video frame, an inter prediction frame type (e.g., B or P), construction information for one or more reference frame lists in the reference frame list of the frame, a motion vector for each inter-frame prediction-encoded video block of the frame, an inter-frame prediction state for each inter-frame prediction-encoded video block of the frame, and other information for decoding the video block in the current video frame.

[0067] Similarly, the intra BC unit 85 may use some of the received syntax elements (e.g., flags) to determine whether the current video block is predicted using the intra BC mode, construction information that video blocks of the frame are within the reconstructed region and should be stored in the DPB 92, block vectors for each intra BC predicted video block of the frame, intra BC prediction status for each intra BC predicted video block of the frame, and other information for decoding video blocks in the current video frame.

[0068] Motion compensation unit 82 may also perform interpolation using interpolation filters to calculate interpolated values ​​for sub-integer pixels of a reference block, as used by video encoder 20 during encoding of the video block. In this case, motion compensation unit 82 may determine the interpolation filters used by video encoder 20 from received syntax elements and use the interpolation filters to produce the prediction block.

[0069] Inverse quantization unit 86 inverse quantizes the quantized transform coefficients provided in the bitstream and entropy decoded by entropy decoding unit 80, using the same quantization parameters that were calculated by video encoder 20 for each video block in the video frame to determine the degree of quantization. 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 block in the pixel domain.

[0070] After the motion compensation unit 82 or the intra BC unit 85 generates a prediction block for the current video block based on the vector and other syntax elements, the adder 90 reconstructs the decoded video block of the current video block by summing the residual block from the inverse transform processing unit 88 and the corresponding prediction block generated by the motion compensation unit 82 and the intra BC unit 85. A loop filter (not shown) can be positioned between the adder 90 and the DPB 92 to further process the decoded video block. Loop filtering such as a deblocking filter, sample adaptive offset (SAO), and an adaptive loop filter (ALF) can be applied to the reconstructed CU before it is placed in the reference picture storage. The decoded video blocks in a given frame are then stored in the DPB 92, which stores reference frames for subsequent motion compensation of the next video blocks. The DPB 92 or a memory device separate from the DPB 92 can also store the decoded video for later presentation on a video device such as a video frame. Figure 1 On display devices such as display device 34.

[0071] In a typical video encoding and decoding process, a video sequence typically comprises an ordered set of frames or images. Each frame may comprise three sample arrays, denoted as SL, SCb, and SCr. SL is a two-dimensional array of luma samples. SCb is a two-dimensional array of Cb chroma samples. SCr is a two-dimensional array of Cr chroma samples. In other instances, a frame may be monochrome and therefore comprise only a two-dimensional array of luma samples.

[0072] Like HEVC, the AVS3 standard is built on a block-based hybrid video codec framework. The input video signal is processed block by block, called coding units (CUs). Unlike HEVC, which partitions blocks based solely on a quadtree, in AVS3, a coding tree unit (CTU) is split into multiple CUs to adapt to different local characteristics based on quadtree / binary tree / extended quadtree. In addition, the concept of multiple partition unit types in HEVC has been removed, that is, the splitting of CU, prediction unit (PU), and transform unit (TU) does not exist in AVS3. Instead, each CU is always used as a basic unit for both prediction and transformation without further partitioning. In the tree partition structure of AVS3, a CTU is first partitioned based on a quadtree structure. Then, each quadtree leaf node can be further partitioned based on a binary tree and an extended quadtree structure.

[0073] like Figure 4AAs shown, the video encoder 20 (or more specifically, the partitioning unit 45) generates an encoded representation of a frame by first partitioning the frame into a set of coding tree units (CTUs). A video frame may include an integer number of CTUs sequentially ordered from left to right and from top to bottom in a raster scan order. Each CTU is the largest logical coding unit, and the width and height of the CTU are signaled by the video encoder 20 in a sequence parameter set so that all CTUs in a video sequence have the same size, i.e., one of 128×128, 64×64, 32×32, and 16×16. However, it should be noted that the present application is not necessarily limited to a particular size. As Figure 4B As shown, each CTU may include one Coding Tree Block (CTB) for luma samples, two corresponding Coding Tree Blocks for chroma samples, and syntax elements for encoding and decoding the samples of the Coding Tree Block. The syntax elements describe the properties of different types of units of the Coding Block of pixels and how the video sequence can be reconstructed at the video decoder 30, and the syntax elements include inter-frame prediction or intra-frame prediction, intra-frame prediction mode, motion vector and other parameters. In a monochrome image or an image with three separate color planes, a CTU may include a single Coding Tree Block and syntax elements for encoding and decoding the samples of the Coding Tree Block. The Coding Tree Block may be an N×N block of samples.

[0074] To achieve better performance, the video encoder 20 may recursively perform tree partitioning, such as binary tree partitioning, ternary tree partitioning, quadtree partitioning, or a combination thereof, on the coding tree block of the CTU and divide the CTU into smaller coding units (CUs). Figure 4C As shown, a 64×64 CTU 400 is first divided into four smaller CUs, each with a block size of 32×32. Of the four smaller CUs, CU 410 and CU 420 are each divided into four 16×16 CUs by block size. The two 16×16 CUs 430 and 440 are each further divided into four 8×8 CUs by block size. Figure 4D Depicted diagram Figure 4C The quadtree data structure is the final result of the partitioning process of the CTU 400 depicted in FIG. 4 , with each leaf node of the quadtree corresponding to a CU with a corresponding size ranging from 32×32 to 8×8. Figure 4B Depicted CTU, each CU may include a coding block (CB) of luma samples and two corresponding coding blocks of chroma samples of the same size frame, and syntax elements for encoding and decoding the samples of the coding block. In monochrome images or images with three separate color planes, a CU may include a single coding block and syntax structures for encoding and decoding the samples of the coding block. It should be noted that Figure 4C and Figure 4DThe quadtree partitioning depicted in FIG is for illustration purposes only, and a CTU can be split into multiple CUs to accommodate different local characteristics based on quadtree / ternary tree / binary tree partitioning. In the multi-type tree structure, a CTU is partitioned by a quadtree structure, and each quadtree leaf CU can be further partitioned by a binary tree structure or a ternary tree structure. Figure 4E As shown, there are five types of splits / partitions in AVS3, namely, quad partitioning, horizontal binary partitioning, vertical binary partitioning, horizontal extended quadtree partitioning, and vertical extended quadtree partitioning.

[0075] In some embodiments, the video encoder 20 may further partition the coding block of the CU into one or more M×N prediction blocks (PBs). A prediction block is a rectangular (square or non-square) block of samples to which the same prediction (inter or intra) is applied. The prediction unit (PU) of a CU may include a prediction block of luma samples, two corresponding prediction blocks of chroma samples, and syntax elements for predicting the prediction blocks. In a monochrome image or an image with three separate color planes, a PU may include a single prediction block and a semantic structure for predicting the prediction block. The video encoder 20 may generate predicted luma, Cb, and Cr blocks for the luma, Cb, and Cr prediction blocks of each PU of the CU.

[0076] Video encoder 20 may use intra prediction or inter prediction to generate the prediction block for a PU. If video encoder 20 uses intra prediction to generate the prediction block for a PU, video encoder 20 may generate the prediction block for the PU based on decoded samples of the frame associated with the PU. If video encoder 20 uses inter prediction to generate the prediction block for a PU, video encoder 20 may generate the prediction block for the PU based on decoded samples of one or more frames other than the frame associated with the PU.

[0077] After the video encoder 20 generates the predicted luma, Cb, and Cr blocks for one or more PUs of a CU, the video encoder 20 may generate a luma residual block for the CU by subtracting the predicted luma block of the CU from its original luma coding block, such that each sample in the luma residual block of the CU indicates a difference between a luma sample in one of the predicted luma blocks of the CU and a corresponding sample in the original luma coding block of the CU. Similarly, the video encoder 20 may generate a Cb residual block and a Cr residual block for the CU, respectively, such that each sample in the Cb residual block of the CU indicates a difference between a Cb sample in one of the predicted Cb blocks of the CU and a corresponding sample in the original Cb coding block of the CU, and each sample in the Cr residual block of the CU may indicate a difference between a Cr sample in one of the predicted Cr blocks of the CU and a corresponding sample in the original Cr coding block of the CU.

[0078] In addition, if Figure 4CAs illustrated, the video encoder 20 may use quadtree partitioning to decompose the luma, Cb, and Cr residual blocks of a CU into one or more luma, Cb, and Cr transform blocks. A transform block is a rectangular (square or non-square) block of samples to which the same transform is applied. A transform unit (TU) of a CU may include a transform block of luma samples, two corresponding transform blocks of chroma samples, and syntax elements for transforming the transform block samples. Thus, each TU of a CU may be associated with a luma transform block, a Cb transform block, and a Cr transform block. In some examples, the luma transform block associated with a TU may be a sub-block of the luma residual block of the CU. The Cb transform block may be a sub-block of the Cb residual block of the CU. The Cr transform block may be a sub-block of the Cr residual block of the CU. In a monochrome image or an image with three separate color planes, a TU may include a single transform block and a syntax structure for transforming the samples of the transform block.

[0079] Video encoder 20 may apply one or more transforms to the luma transform block of a TU to generate a luma coefficient block for the TU. A coefficient block may be a two-dimensional array of transform coefficients. A transform coefficient may be a scalar. Video encoder 20 may apply one or more transforms to the Cb transform block of a TU to generate a Cb coefficient block for the TU. Video encoder 20 may apply one or more transforms to the Cr transform block of a TU to generate a Cr coefficient block for the TU.

[0080] After generating a coefficient block (e.g., a luma coefficient block, a Cb coefficient block, or a Cr coefficient block), the video encoder 20 may quantize the coefficient block. Quantization generally refers to the process of quantizing the transform coefficients to potentially reduce the amount of data used to represent the transform coefficients, thereby providing further compression. After the video encoder 20 quantizes the coefficient block, the video encoder 20 may entropy encode the 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. Ultimately, the video encoder 20 may output a bitstream comprising a sequence of bits forming a representation of a coded frame and associated data, which is stored in the storage device 32 or transmitted to the destination device 14.

[0081] After receiving the bitstream generated by the video encoder 20, the video decoder 30 can parse the bitstream to obtain syntax elements from the bitstream. The video decoder 30 can reconstruct a frame of video data based at least in part on the syntax elements obtained from the bitstream. The process of reconstructing video data is generally the opposite of the encoding process performed by the video encoder 20. For example, the video decoder 30 can perform an inverse transform on the coefficient blocks associated with the TUs of the current CU to reconstruct the 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 samples of the prediction blocks of the PUs of the current CU to corresponding samples of the transform blocks of the TUs of the current CU. After reconstructing the coding blocks of each CU of the frame, the video decoder 30 can reconstruct the frame.

[0082] SAO is a process that modifies decoded samples by conditionally adding an offset value to each sample after the deblocking filter is applied, based on values ​​in a lookup table transmitted by the encoder. SAO filtering is performed on a region-by-region basis, based on the filter type selected for each CTB by the syntax element sao-type-idx. A sao-type-idx value of 0 indicates that the SAO filter is not applied to the CTB, while values ​​of 1 and 2 indicate that band-offset and edge-offset filter types are used, respectively. In band-offset mode, specified by sao-type-idx equal to 1, the selected offset value depends directly on the sample amplitude. In this mode, the full sample amplitude range is evenly divided into 32 segments called bands, and samples belonging to four of these bands (contiguous within the 32 bands) are modified by adding transmitted values ​​denoted as band offsets, which can be positive or negative. The main reason for using four contiguous bands is that in smooth areas where banding artifacts may occur, the sample amplitudes in a CTB tend to be concentrated in only a few bands. Furthermore, the design choice of using four offsets is consistent with the edge-offset mode of operation, which also uses four offset values. In the edge offset mode specified by sao-type-idx equal to 2, the syntax element sao-eo-class with values ​​from 0 to 3 indicates whether horizontal, vertical or one of the two diagonal gradient directions is used for edge offset classification in the CTB.

[0083] Figure 5is a block diagram depicting four gradient modes used in SAO according to some embodiments of the present disclosure. The four gradient modes 502, 504, 506 and 508 are used for corresponding sao-eo-class in edge offset mode. The sample labeled "p" indicates the center sample to be considered. The two samples labeled "n0" and "n1" specify two adjacent samples along the (a) horizontal (sao-eo-class=0), (b) vertical (sao-eo-class=1), (c) 135° diagonal (sao-eo-class=2) and (d) 45° (sao-eo-class=3) gradient modes. Each sample in the CTB is classified into one of the five EdgeIdx categories by comparing the sample value p at a certain position with the values ​​n0 and n1 of two samples at adjacent positions, as shown Figure 5 As shown. This classification is performed for each sample based on the decoded sample value, so the EdgeIdx classification does not require additional signal transmission. Depending on the EdgeIdx category at the sample position, for EdgeIdx categories from 1 to 4, an offset value from the transmitted lookup table is added to the sample value. The offset values ​​for categories 1 and 2 are always positive, and the offset values ​​for categories 3 and 4 are always negative. Therefore, the filter generally has a smoothing effect in edge offset mode. Table 1 below illustrates the sample EdgeIdx categories in the SAO edge class.

[0084]

[0085] Table 1: Sample EdgeIdx categories in SAO edge classes.

[0086] 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. The offset values ​​and related syntax elements (such as sao-type-idx and sao-eo-class) are determined by the encoder - typically using a criterion that optimizes rate-distortion performance. A merge flag can be used to indicate that the SAO parameters are inherited from the left or above the CTB to make signal transmission efficient. In summary, SAO is a nonlinear filtering operation that allows additional refinement of the reconstructed signal, and SAO can enhance signal representation around smooth areas and edges.

[0087] In some embodiments, disclosed herein are methods and systems for improving codec efficiency or reducing the complexity of sample adaptive offset (SAO) by introducing cross-component information. SAO is used in HEVC, VVC, 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 description, for technicians in the field of video coding and decoding, the cross-component method described in this disclosure can also be applied to other loop filter designs or other codec tools with similar design spirit. For example, in the AVS3 standard, SAO is replaced by a codec tool called Enhanced Sample Adaptive Offset (ESAO). However, the CCSAO disclosed herein can also be applied in parallel with ESAO. In another example, CCSAO can be applied in parallel with the Constrained Directional Enhancement Filter (CDEF) in the AV1 standard.

[0088] For existing SAO designs in HEVC, VVC, AVS2, and AVS3 standards, luma Y, chroma Cb, and chroma Cr sample offset values ​​are determined independently. That is, for example, the current chroma sample offset is determined only by the current and adjacent chroma sample values, without considering the collocated or adjacent luma samples. However, luma samples retain more original image detail information than chroma samples, and luma samples can be beneficial to the determination of the current chroma sample offset. In addition, since chroma samples typically lose high-frequency details after color conversion from RGB to YCbCr or after quantization and passing through a deblocking filter, introducing luma samples with high-frequency details preserved for chroma offset decisions may be beneficial to chroma sample reconstruction. Therefore, further gains can be expected by exploring cross-component correlations, such as by using methods and systems for cross-component sample offset compensation (Cross-Component Sample Adaptive Offset, CCSAO).

[0089] Figure 6A is a block diagram illustrating a system and process for CCSAO according to some embodiments of the present disclosure. Luma samples after passing through the Luma Deblocking Filter (DBF Y) are used to determine the additional offsets for chroma Cb and Cr after SAOCb and SAO Cr. For example, the current chroma sample 602 is first classified using the concatenation 604 and the adjacent (white) luma sample 606, and the corresponding CCSAO offset value for the corresponding class is added to the current chroma sample value.

[0090] In some embodiments, CCSAO can also be applied in parallel with other codec tools (such as ESAO in the AVS standard or CDEF in the AV1 standard). Figure 6B is a block diagram illustrating a system and process for CCSAO applied in parallel with ESAO in the AVS standard according to some embodiments of the present disclosure.

[0091] In some embodiments, the current chroma sample classification reuses the SAO type (EO or BO), class, and category of the collocated luma samples. The corresponding CCSAO offset can be signaled or obtained from the decoder itself. For example, let h_Y be the collocated luma SAO offset, and h_Cb and h_Cr be the CCSAO Cb and Cr offsets, respectively. h_Cb (or h_Cr) = w*h_Y, where w can be selected from a finite table. For example, +-1 / 4, +-1 / 2, 0, +-1, +-2, +-4, etc., where |w| only includes values ​​that are powers of 2.

[0092] In some embodiments, the comparison scores [-8, 8] of the collocated luma sample (Y0) and the adjacent 8 luma samples are used, resulting in a total of 17 classes.

[0093] Initial Class = 0

[0094] Cycle through 8 adjacent brightness samples (Yi, i = 1 to 8)

[0095] if Y0>Yi Class+=1

[0096] else if Y0<Yi Class-=1

[0097] In some embodiments, the above classification methods can be combined. For example, the comparison score can be combined with SAO BO (32 band classifications) to increase diversity, resulting in a total of 17*32 classes. In some embodiments, Cb and Cr can use the same class to reduce complexity or save bits.

[0098] Figure 7 is a block diagram illustrating a sample process using CCSAO according to some embodiments of the present disclosure. Specifically, Figure 7 It is shown that the input of CCSAO can introduce vertical and horizontal DBF input to simplify the class determination or increase flexibility. For example, let Y0_DBF_V, Y0_DBF_H and Y0 be DBF_V, DBF_H and SAO Yi_DBF_V, Yi_DBF_H and Yi are the adjacent 8 luma samples at the input of DBF_V, DBF_H and SAO respectively, where i = 1 to 8.

[0099] Max Y0=max(Y0_DBF_V, Y0_DBF_H, Y0_DBF)

[0100] Max Yi=max(Yi_DBF_V, Yi_DBF_H, Yi_DBF)

[0101] And the maximum Y0 and maximum Yi are fed to CCSAO classification.

[0102] Figure 8 is a block diagram illustrating a CCSAO process interleaved to vertical and horizontal DBF according to some embodiments of the present disclosure. Figure 7 and Figure 8 The CCSAO block in

[15] can be selective. For example, using Y0_DBF_V and Yi_DBF_V for the first CCSAO_V, the first CCSAO_V applies the same sample processing as in Figure 6, while using the input of DBF_V luma samples as CCSAO input.

[0103] In some embodiments, the implemented CCSAO syntax is shown in Table 2 below.

[0104]

[0105] Table 2: Example of CCSAO syntax

[0106] In some embodiments, for signaling CCSAO Cb and Cr offset values, if an additional chroma offset is signaled, the other chroma component offset can be derived by addition, subtraction, or weighting to save bit overhead. For example, let h_Cb and h_Cr be the offsets for CCSAO Cb and Cr, respectively. Using explicit signaling of w, where w = +-|w| with a finite number of |w| candidates, h_Cr can be derived from h_Cb without explicitly signaling h_Cr itself.

[0107] h_Cr=w*h_Cb

[0108] Figure 9 is a flow chart illustrating an exemplary process 900 for decoding a video signal using cross-component correlation according to some embodiments of the present disclosure.

[0109] Video decoder 30 receives 910 a video signal comprising a first component and a second component. In some embodiments, the first component is a luma component of the video signal and the second component is a chroma component of the video signal.

[0110] Video decoder 30 also receives a plurality of offsets associated with the second component (920).

[0111] Video decoder 30 then utilizes the characteristic measurements of the first component to obtain a classifier associated with the second component (930). For example, in FIG6, the current chroma sample 602 is first classified using the concatenation 604 and the adjacent (white) luma sample 606, and the corresponding CCSAO offset value is added to the current chroma sample.

[0112] Video decoder 30 further selects a first offset for the second component from the plurality of offsets based on the classifier (940).

[0113] Video decoder 30 additionally modifies the second component based on the selected first offset (950).

[0114] In some embodiments, utilizing the characteristic measurement of the first component to obtain a classifier associated with the second component (930) includes utilizing corresponding samples of the first component to obtain a corresponding classifier for each corresponding sample of the second component, wherein the corresponding samples of the first component are corresponding collocated samples of the first component for each corresponding sample of the second component. For example, the current chroma sample classification reuses the SAO type (EO or BO), class, and category of the collocated luma sample.

[0115] In some embodiments, using the characteristic measurement result of the first component to obtain the classifier associated with the second component (930) includes: using the corresponding samples of the first component to obtain the corresponding classifier for each corresponding sample of the second component, wherein the corresponding samples of the first component are reconstructed before deblocking or reconstructed after deblocking. In some embodiments, the first component is deblocked at a deblocking filter (DBF). In some embodiments, the first component is deblocked at a luminance deblocking filter (DBF Y). For example, instead of FIG. 6 or Figure 7 , CCSAO input can also be before DBF Y.

[0116] In some embodiments, the characteristic measurement result is obtained by dividing the sample value range of the first component into a plurality of bands and selecting the bands based on the intensity values ​​of the samples in the first component. In some embodiments, the characteristic measurement result is obtained from a band offset (BO).

[0117] In some embodiments, the characteristic measurement result is obtained based on the direction and strength of edge information of the samples in the first component. In some embodiments, the characteristic measurement result is obtained from an edge offset (EO).

[0118] In some embodiments, modifying the second component (950) includes adding the selected first offset directly to the second component. For example, adding the corresponding CCSAO offset value to the current chroma component sample.

[0119] In some embodiments, modifying the second component (950) includes mapping the selected first offset to a second offset and adding the mapped second offset to the second component. For example, for signaling CCSAO Cb and Cr offset values, if an additional chroma offset is signaled, another chroma component offset can be obtained by addition, subtraction, or weighting to save bit overhead.

[0120] In some embodiments, receiving a video signal (910) includes receiving a syntax element indicating whether a method of decoding the video signal using CCSAO is enabled for the video signal in a sequence parameter set (SPS). In some embodiments, cc_sao_enabled_flag indicates whether CCSAO is enabled at the sequence level.

[0121] In some embodiments, receiving a video signal (910) includes receiving a syntax element indicating whether a method of decoding the video signal using CCSAO is enabled for the second component at a slice level. In some embodiments, slice_cc_sao_cb_flag or slice_cc_sao_cr_flag indicates whether CCSAO is enabled in the corresponding slice for Cb or Cr.

[0122] In some embodiments, receiving a plurality of offsets associated with the second component (920) includes receiving different offsets for different coding tree units (CTUs). In some embodiments, for a CTU, cc_sao_offset_sign_flag indicates the sign of the offset, and cc_sao_offset_abs indicates CCSAO Cb and Cr offset values ​​for the current CTU.

[0123] In some embodiments, receiving a plurality of offsets associated with the second component (920) includes receiving a syntax element indicating whether the received offsets for the CTU are the same as the received offsets for one of the CTU's neighboring CTUs. The neighboring CTU is a left-neighboring CTU or a top-neighboring CTU. For example, cc_sao_merge_up_flag indicates whether the CCSAO offsets are merged from the left of the CTU or from above the CTU.

[0124] 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 the third component; obtaining a second classifier associated with the third component using a characteristic measurement result of the first component; selecting a third offset for the third component from the second plurality of offsets based on the second classifier; and modifying the third component based on the selected third offset.

[0125] Figure 11 is a block diagram illustrating a sample process in which, in addition to luma, other cross-component concatenated (1102) and adjacent (white) chroma samples are also fed into CCSAO classification according to some embodiments of the present disclosure. Figure 6A 、 Figure 6B and Figure 11 The input of CCSAO classification is shown. Figure 11 , the current chroma sample is 1104, the cross-component collocated chroma sample is 1102, and the collocated luma sample is 1106.

[0126] In some embodiments, the classifier instance (C0) uses the collocated luma sample (Y0) for classification. Let band_num be the number of equal bands of the luma dynamic range, and bit_depth be the sequence bit depth, the class index of the current chroma sample is:

[0127] Class(C0)=(Y0*band_num)>>bit_depth

[0128] Some band_num and bit_depth examples are listed below in Table 3. Table 3 shows three classification examples when the number of bands for each classification example is different.

[0129]

[0130] Table 3: Example band_num and bit_depth for each class index.

[0131] In some embodiments, the classifier uses different luminance sample positions for C0 classification. Figure 10 is a block diagram illustrating a classifier that uses different luminance sample locations for C0 classification according to some embodiments of the present disclosure, for example, using neighboring Y7 instead of Y0 for C0 classification.

[0132] In some embodiments, the collocated luma sample value (Y0) is replaced with a value (Yp) obtained by weighting the collocated luma sample and neighboring luma samples. Figure 12 An exemplary classifier is shown that replaces a collocated luma sample with a value obtained by weighting the collocated luma sample and adjacent luma samples according to some embodiments of the present disclosure. The collocated luma sample (Y0) can be replaced with a phase-corrected value (Yp) obtained by weighting the adjacent luma samples. Different Yp values ​​can result in different classifiers.

[0133] In some embodiments, different Yp is used for different chroma formats. Figure 12In FIG. 1 , Yp of (a) is used for a 420 chroma format, Yp of (b) is used for a 422 chroma format, and Y0 is used for a 444 chroma format.

[0134] In some embodiments, another classifier (C1) is a comparison score [-8, 8] of the collocated luma sample (Y0) with the adjacent 8 luma samples, as shown below, resulting in a total of 17 classes.

[0135] Initial Class (C1) = 0, loop through 8 adjacent brightness samples (Yi, i = 1 to 8)

[0136] if Y0>Yi Class+=1

[0137] else if Y0<Yi Class-=1

[0138] In some embodiments, variant (C1') only computes comparison scores [0, 8], and this results in 8 classes. (C1, C1') is a classifier group, and a PH / SH level flag can be signaled to switch between C1 and C1'.

[0139] Initial Class (C1') = 0, loop through 8 adjacent brightness samples (Yi, i = 1 to 8)

[0140] if Y0>Yi Class+=1

[0141] In some embodiments, different classifiers are combined to generate a general classifier. For example, for different images (different POC values), different classifiers are applied, as shown in Table 4 below.

[0142] POC Classifier C0 band_num General Category 0 Combining C0 and C1 16 16*17 1 Combination C0 and C1' 16 16*9 2 Combining C0 and C1 7 7*17

[0143] Table 4: Different general classifiers applied to different images

[0144] In some embodiments, the classifier instance (C2) uses the difference (Yn) of collocated and adjacent luminance samples. Figure 12 (c) shows an example of Yn, when the bit depth is 10, the dynamic range of Yn is [-1024, 1023]. Let C2band_num be the number of equally divided bands of Yn's dynamic range,

[0145] Class(C2)=(Yn+(1<<bit_depth)*band_num)>>(bit_depth+1).

[0146] In some embodiments, C0 and C2 are combined to generate a general classifier. For example, for different images (different POCs), different classifiers are applied, as shown in Table 5 below.

[0147] POC Classifier C0 band_num C2 band_num General Category 0 Combining C0 and C2 16 16 16*17 1 Combining C0 and C2 8 7 8*7

[0148] Table 5: Different general classifiers applied to different images

[0149] In some embodiments, all the above classifiers (C0, C1, C1', C2) are combined. For example, for different images (different POCs), different classifiers are applied, as shown in Table 6 below.

[0150]

[0151] Table 6: Different general classifiers applied to different images

[0152] In some embodiments, different classifiers are applied to Cb and Cr. The Cb and Cr offsets for all classes can be signaled separately. For example, different signaled offsets are applied to different chrominance components, as shown in Table 7 below.

[0153] POC Quantity Classifier C0 band_num General Category Signal transmission offset 0 Cb C0 16 16 16 0 Cr C0 5 5 5

[0154] Table 7: Cb and Cr offsets for all classes can be signaled separately In some embodiments, the maximum offset value is fixed or signaled in the form of a sequence parameter set (SPS) / adaptation parameter set (APS) / picture parameter set (PPS) / picture header (PH) / slice header (SH). For example, the maximum offset is between [-15, 15].

[0155] In some embodiments, the offset signaling may utilize differential pulse-code modulation (DPCM). For example, the offset {3, 3, 2, 1, -1} may be signaled as {3, 0, -1, -1, -2}.

[0156] In some embodiments, the offsets may be stored in the APS or memory buffer for reuse in the next picture / slice. An index may be signaled to indicate which stored previous frame offsets to use for the current picture.

[0157] In some embodiments, the classifiers for Cb and Cr are the same. The Cb and Cr offsets for all classes may be signaled jointly, for example, as shown in Table 8 below.

[0158] POC Quantity Classifier C0 band_num General Category Signal transmission offset 0 Cb and Cr C0 8 8 8

[0159] Table 8: Cb and Cr offsets for all classes that can be signaled jointly

[0160] In some embodiments, the classifiers for Cb and Cr can be the same. The Cb and Cr offsets and sign differences for all classes can be jointly signaled, for example, as shown in Table 9 below. According to Table 9, when the Cb offset is (3, 3, 2, -1), the resulting Cr offset is (-3, -3, -2, 1).

[0161]

[0162] Table 9: Cb and Cr offsets and symbol marking differences that can be jointly signaled for all classes

[0163] In some embodiments, a symbol flag may be signaled for each class, for example, as shown in Table 10 below. According to Table 10, when the Cb offset is (3, 3, 2, -1), the Cr offset obtained according to the corresponding symbol flag is (-3, 3, 2, 1).

[0164]

[0165] Table 10: Cb and Cr offsets that can be signaled jointly for all classes and tagged with signaling symbols for each class

[0166] In some embodiments, the classifiers for Cb and Cr can be the same. The Cb and Cr offsets and weight differences for all classes can be jointly signaled, for example, as shown in Table 11 below. The weights (w) can be selected from a limited list, for example, +-1 / 4, +-1 / 2, 0, +-1, +-2, +-4, etc., where |w| only includes powers of 2. According to Table 11, when the Cb offset is (3, 3, 2, -1), the Cr offsets obtained according to the corresponding sign flags are (-6, -6, -4, 2).

[0167]

[0168] Table 11: Cb and Cr offsets and weight differences that can be jointly signaled for all classes

[0169] In some embodiments, a weight may be signaled for each class, for example, as shown in Table 12 below. According to Table 12, when the Cb offset is (3, 3, 2, -1), the Cr offset obtained according to the corresponding sign flag is (-6, 12, 0, -1).

[0170]

[0171] Table 12: Cb and Cr offsets for all classes can be signaled jointly and weights for each class

[0172] In some embodiments, sample processing is described below. Let R(x, y) be the input chroma sample before CCSAO and R'(x, y) be the output chroma sample after CCSAO:

[0173] offset = ccsao_offset[class_index of R(x,y)]

[0174] R'(x, y) = Clip3(0, (1<<bit_depth)-1, R(x, y)+offset)

[0175] According to the above equation, each chroma sample R(x,y) is classified using the indicated classifier of the current image. The corresponding offset of the obtained class index is added to each chroma sample R(x,y). A clipping function Clip 3 is applied to (R(x,y)+offset) so that the output chroma sample R'(x,y) is within the bit depth dynamic range, for example, in the range of 0 to (1<<bit_depth)-1.

[0176] In some embodiments, boundary handling is described below. If any of the collocated luma samples and adjacent luma samples used for classification are outside the current image, then CCSAO is not applied to the current chroma sample. Figure 13A is a block diagram illustrating that CCSAO is not applied to the current chroma sample when any of the collocated luma sample and the adjacent luma sample used for classification is outside the current image according to some embodiments of the present disclosure. Figure 13A In (a), if the classifier is used, CCSAO is not applied to the left column chroma components of the current image. For example, if C1' is used, CCSAO is not applied to the left column and top row chroma components of the current image, such as Figure 13A (b) shown.

[0177] Figure 13B is a block diagram illustrating applying CCSAO to a current chroma sample when any of the collocated luma samples and adjacent luma samples used for classification are outside the current image according to some embodiments of the present disclosure. In some embodiments, a variation is to reuse the lost sample if any of the collocated luma samples and adjacent luma samples used for classification are outside the current image, such as Figure 13B (a), or the missing samples are mirrored to create samples for classification, as shown in Figure 13A As shown in (b), CCSAO can be applied to the current chroma sample.

[0178] In some embodiments, the implemented CCSAO syntax is shown in Table 13 below. In AVS3, the term "patch" is analogous to "slice," and the term "patch header" is analogous to "slice header." FLC stands for fixed-length codec. TU stands for truncated unary codec. EGk stands for k-order Exponential Golomb codec, where k can be fixed.

[0179]

[0180] Table 13: Example CCSAO syntax

[0181] If a higher level flag is off, the lower level flag can be inferred from the off state of the flag and does not need to be signaled. For example, if ph_cc_sao_cb_flag is false in this picture, then ph_cc_sao_cb_band_num_minus1, 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.

[0182] Figure 14 is a flow chart illustrating an exemplary process 1400 for decoding a video signal using cross-component correlation classification according to some embodiments of the present disclosure.

[0183] Video decoder 30 receives a video signal comprising a first component and a second component (1410). In some embodiments, the first component is a luma component of the video signal and the second component is a chroma component of the video signal.

[0184] Video decoder 30 also receives a plurality of offsets associated with the second component ( 1420 ).

[0185] Video decoder 30 then uses the samples of the first component to obtain a classifier associated with the second component (1430). In some embodiments, the selected band is obtained as follows: Class = (Y*band_num) >> bit_depth, where band_num is the number of divided bands of the dynamic range of the first component, Y is the intensity value of the samples of the first component, bit_depth is the sequence bit depth, and Class is the class index of the selected band of the second component.

[0186] Video decoder 30 divides the range of samples of the first component into several bands based on the classifier (1440).

[0187] Video decoder 30 selects a band based on the intensity values ​​of the samples of the first component (1450).

[0188] Video decoder 30 further selects an offset for the second component from the plurality of offsets according to the selected band ( 1460 ).

[0189] Video decoder 30 additionally modifies the second component based on the selected offset ( 1470 ).

[0190] In some embodiments, the sample value is the value of a concatenated sample of the first component relative to a sample of the second component.

[0191] In some embodiments, the number of divided bands of the dynamic range of the first component is fixed or signaled at one or more of APS, PPS, PH and SH levels. For example, the number of bands used for classification may be adaptively changed.

[0192] In some embodiments, the sample values ​​are values ​​of neighboring samples of the first component relative to the samples of the second component.

[0193] In some embodiments, the sample value is a value obtained by weighting collocated samples and adjacent samples of the first component relative to samples of the second component.

[0194] In some embodiments, samples of the luma component are obtained differently for different chroma formats.

[0195] In some embodiments, the sample value is a comparison value of a collocated sample of the first component relative to a sample of the second component with adjacent samples.

[0196] In some embodiments, using the luma component sample to obtain a classifier associated with the chroma component (1430) includes: using a first sample of the luma component to obtain a first classifier associated with the chroma component; using a second sample of the luma component to obtain a second classifier associated with the chroma component; and combining the first classifier and the second classifier to obtain a classifier. For example, different classifiers (C0, C1, ...) can be combined.

[0197] In some embodiments, using samples of the luma component to obtain a classifier associated with a chroma component (1430) further includes using a second sample of the luma component to obtain a second classifier associated with a second chroma component, wherein the classifier is different from the second classifier.

[0198] In some embodiments, the offsets corresponding to the classifier are stored for next use according to an index indicating which offsets to use for the next image. For example, the offsets can be stored in an APS or memory buffer for reuse in the next image / slice. An index can be signaled to indicate which stored previous frame offsets to use for the current image.

[0199] In some embodiments, the sample value is a value obtained from one or more of collocated samples and neighboring samples of the first component relative to the sample of the second component, wherein all collocated samples and neighboring samples of the first component relative to the sample of the second component are located within the current image frame. For example, if any collocated luma sample and neighboring luma sample used for classification are outside the current image, CCSAO is not applied to the current chroma sample.

[0200] In some embodiments, the plurality of offsets associated with the chroma components are within a predetermined range. In some embodiments, the predetermined range is fixed or signaled at one or more of SPS, APS, PPS, PH, and SH levels.

[0201] In some embodiments, receiving a video signal (1410) includes receiving a syntax element indicating whether compensation for cross-component sample offset (CCSAO) is enabled for the video signal.

[0202] Other embodiments also include various subsets of the above-described embodiments combined or otherwise rearranged in various other embodiments.

[0203] In one or more examples, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored as one or more instructions or codes on or transmitted via a computer-readable medium and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media corresponding to tangible media such as data storage media or communication media including any media that facilitates, for example, transferring a computer program from one place to another according to a communication protocol. In this manner, computer-readable media may generally correspond to (1) non-transitory tangible computer-readable storage media or (2) communication media such as signals or carrier waves. Data storage media may be any available medium that can be accessed by one or more computers or one or more processors to obtain instructions, codes, and / or data structures for implementing the embodiments described in this application. A computer program product may include computer-readable media.

[0204] The terms used in the description of the embodiments herein are for the purpose of describing particular embodiments only and are not intended to limit the scope of the claims. As used in the description of the embodiments and the appended claims, the singular forms "a," "an," and "the" are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will also be understood that the terms "and / or" as used herein refer to and encompass any and all possible combinations of one or more of the associated enumerated items. It will be further understood that when the terms "comprises" and / or "comprising" are used in this specification, they specify the presence of stated features, elements, and / or parts, but do not exclude the presence or addition of one or more other features, elements, parts, and / or groups thereof.

[0205] It should also be understood that although the terms first, second, etc. may be used to describe various elements in this article, these elements should not be limited by these terms. These terms are merely used to distinguish one element from another. For example, without departing from the scope of the embodiment, the first electrode may be referred to as the second electrode, and similarly, the second electrode may be referred to as the first electrode. The first electrode and the second electrode are both electrodes, but the first electrode and the second electrode are not the same electrode.

[0206] Throughout this specification, references to "one example," "an example," "an illustrative example," etc., in the singular or plural, mean that one or more specific features, structures, or characteristics described in connection with the example are included in at least one example of the present disclosure. Thus, the phrases "in one example," "in an example," "in an illustrative example," etc., appearing in the singular or plural throughout this specification are not necessarily all referring to the same example. Furthermore, the specific features, structures, or characteristics of one or more examples may be combined in any suitable manner.

[0207] The description of the present application has been presented for purposes of illustration and description, and the description is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications, variations, and alternative embodiments will be apparent to those of ordinary skill in the art having the benefit of the teachings presented in the foregoing description and the associated drawings. The embodiments are chosen and described in order to best explain the principles of the invention, the practical application, and to enable others skilled in the art to understand the various embodiments of the invention and to best utilize the basic principles and various embodiments with various modifications suitable for the specific use contemplated. Therefore, it should be understood that the scope of the claims should not be limited to the specific examples of the disclosed embodiments, and modifications and other embodiments are intended to be included within the scope of the appended claims.

Claims

1. A video encoding method, comprising: Acquire a video image including a first component and a second component; determining a plurality of offsets associated with the second component; obtaining a class index associated with the second component using samples of the first component; selecting an offset for the second component from the plurality of offsets based on the class index; as well as obtaining a sample value of the second component based on the selected offset, wherein the first component is a luminance component, and the second component is a chrominance component, and The obtaining of a class index associated with the second component by using the sample value of the first component includes: obtaining a first variable using a first sample of the first component; obtaining a second variable using a second sample of the first component; and The class index is obtained according to the first variable and the second variable.

2. The method according to claim 1, wherein The first sample value of the first component is a value of a concatenated sample of the first component corresponding to a sample of the second component.

3. The method according to claim 1, wherein Obtaining a class index associated with the second component using the sample value of the first component includes: determining a band using the sample value of the first component and according to the number of the plurality of bands into which the range of the sample value of the first component is divided; and A class index associated with the second component is obtained based on the determined band.

4. The method according to claim 3, wherein: The determined bands are obtained as follows: ,in, is the number of divided bands of the dynamic range of the first component, Y is the sample value of the first component, is the sequence bit depth.

5. The method according to claim 3, wherein: The number of divided bands of the dynamic range of the first component is fixed or encoded to be signaled at one or more of the adaptation parameter set APS, picture parameter set PPS, picture header PH, and slice header SH levels.

6. The method of claim 1, wherein: The first sample value of the first component is a value of a neighboring sample of the first component corresponding to a sample of the second component.

7. The method of claim 1, wherein: The first sample value of the first component is a value obtained by weighting collocated samples and adjacent samples of the first component corresponding to samples of the second component.

8. The method of claim 1, wherein: The first sample value of the first component is a comparison value of a collocated sample of the first component relative to a sample of the second component and adjacent samples.

9. The method of claim 1, wherein: For different chroma formats, the sample values ​​of the first component are obtained differently.

10. The method of claim 1, wherein: Obtaining a class index associated with the second component using the sample value of the first component further comprises: using the third sample value of the first component to obtain a second type index associated with another second component, The class index is different from the second class index.

11. The method of claim 3, wherein: The offsets corresponding to the plurality of bands are stored for next use according to an index indicating which offsets to use for the next image.

12. The method of claim 1, wherein: The first sample value of the first component is a value obtained from one or more of collocated samples and adjacent samples of the first component corresponding to samples of the second component.

13. The method of claim 1, wherein: All collocated samples and neighboring samples of the first component corresponding to samples of the second component are located in a current image frame.

14. The method of claim 1, wherein: The plurality of offsets associated with the second component are within a predetermined range.

15. The method of claim 14, wherein: The predetermined range is fixed or encoded to be transmitted by signal at one or more of the sequence parameter set SPS, adaptation parameter set APS, picture parameter set PPS, picture header PH and slice header SH levels.

16. The method of claim 1, further comprising: A syntax element is generated that indicates whether cross-component sample offset compensated CCSAO is enabled for a sequence including the video picture.

17. An electronic device comprising one or more processing units, a memory coupled to the one or more processing units, and a plurality of programs stored in the memory, wherein the plurality of programs, when executed by the one or more processing units, causes the electronic device to perform the method as described in any one of claims 1-16.

18. A non-volatile computer-readable storage medium storing a plurality of programs for execution by an electronic device having one or more processing units, wherein: The plurality of programs, when executed by the one or more processing units, cause the electronic device to perform the method of any one of claims 1-16.

19. A computer program product comprising instructions, which, when executed by one or more processing units of an electronic device, cause the electronic device to perform the method according to any one of claims 1 to 16.

20. A computer-readable storage medium storing instructions that, when executed by a computing device having one or more processors, cause the one or more processors to perform the method of any one of claims 1 to 16 to generate a bitstream, and store the bitstream in the computer-readable storage medium.

Citation Information

Patent Citations

  • Video encoding method and apparatus, and video decoding method and apparatus based on signaling of sample adaptive offset parameters

    US20140314141A1

  • Method of Sample Adaptive Offset Processing for Video Coding and Inter-Layer Scalable Coding

    US20140348222A1