Method, apparatus and computer program for video decoding

The video encoding/decoding system addresses inefficiencies in current video coding techniques by using adaptive quantization and offset scaling to improve sample reconstruction accuracy and coding efficiency.

JP7670899B2Active Publication Date: 2025-04-30TENCENT AMERICA LLC
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
JP2024060021
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2021-06-28
Filing Date
2024-04-03
Publication Date
2025-04-30
Estimated Expiration
2041-07-01

AI Technical Summary

Technical Problem

Current video coding techniques face challenges in efficiently reducing redundancy and improving coding efficiency, particularly in handling various prediction directions and motion vectors.

Method used

The proposed solution involves a video encoding/decoding system that uses adaptive quantization and offset scaling to determine reconstructed samples of color components, allowing for individual setting of quantization step sizes for coding blocks, video frames, and sequences. This system performs filtering on reconstructed samples and reconstructs second color component samples based on filtering output values.

Benefits of technology

This approach enhances coding efficiency by allowing adaptive adjustment of quantization step sizes, improving the accuracy of sample reconstruction, and reducing storage and bandwidth requirements.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007670899000020
    Figure 0007670899000020
  • Figure 0007670899000021
    Figure 0007670899000021
  • Figure 0007670899000022
    Figure 0007670899000022
Patent Text Reader

Abstract

To provide methods, apparatuses, and non-transitory computer-readable storage mediums for video encoding / decoding including in-loop filter technologies.SOLUTION: An apparatus includes processing circuitry that determines reconstructed samples of a first color component in a filter support region of a current picture that is a part of a coded video sequence. The processing circuitry performs a filter process on the reconstructed samples of the first color component in the filter support region. A quantization step size of the filter process is separately set for one of a coding block, a video frame and a video sequence. The method for video decoding includes reconstructing samples of a second color component in the filter support region based on an output value of the filter process. The second color component is different from the first color component.SELECTED DRAWING: Figure 20
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] [Related Applications] This application claims the benefit of priority to U.S. Provisional Patent Application No. 63 / 113,125, entitled "IMPROVED CROSS-Component Sample Offset using Adaptive Quantization and Offset Scaling," filed November 12, 2020, which claims the benefit of priority to U.S. Patent Application No. 17 / 360,865, entitled "METHOD AND APPARATUS FOR VIDEO CODING," filed June 28, 2021. The entire disclosures of the aforementioned applications are hereby incorporated by reference in their entireties.

[0002] [Technical field] This disclosure describes embodiments generally related to video coding. [Background technology]

[0003] The background description provided herein is to provide an overview of the context of the present disclosure. The work of the presently named inventors is not admitted explicitly or implicitly as prior art to the present disclosure, to the extent that the work described in this background section, as well as aspects of the description that may not be considered prior art at the time of filing, are not admitted explicitly or implicitly as prior art to the present disclosure.

[0004] Video coding and decoding can be performed using inter-picture prediction with motion compensation. Uncompressed digital video can include a sequence of pictures, each with spatial dimensions of, for example, 1920x1080 luminance samples and associated chrominance samples. The sequence of pictures can have a fixed or variable picture rate (also known informally as frame rate) of, for example, 60 pictures per second or 60 Hz. Uncompressed video has significant bitrate requirements. For example, 1080p604:2:0 video (1920x1080 luminance sample resolution at 60 Hz frame rate) with 8 bits per sample requires a bandwidth close to 1.5 Gbit / sb. One hour of such video requires more than 600 GByte of storage space.

[0005] One goal of video coding and decoding may be to reduce redundancy in the input video signal through compression. Compression can help reduce the aforementioned bandwidth or storage space requirements, in some cases by more than two orders of magnitude. Both lossy and lossless compression, and combinations thereof, may be utilized. Lossless compression refers to techniques where an exact copy of the original signal can be reconstructed from the compressed original signal. With lossy compression, the reconstructed signal is not identical to the original signal, but the distortion between the original and reconstructed signals is small enough to produce a reconstructed signal that is useful for the intended application. In the case of video, lossy compression is widely used. The amount of tolerable distortion depends on the application, and users of certain consumer streaming applications may tolerate higher distortion than users of television distribution applications. The achievable compression ratio may reflect that the higher the tolerable / tolerable distortion, the higher the compression ratio that may result.

[0006] Video encoders and decoders can utilize techniques from several broad categories, including, for example, motion compensation, transformation, quantization, and entropy coding.

[0007] Video codec techniques can include a technique known as intra-coding. In intra-coding, sample values ​​are represented without reference to samples or other data from previously reconstructed reference pictures. In some video codecs, a picture is spatially subdivided into blocks of samples. When a whole block of samples is coded in intra mode, the picture may be an intra picture. Intra pictures and their derivatives, such as independent decoder refresh pictures, can be used to reset the decoder state and therefore can be used as the first picture in a coding video bitstream and video session or as a still image. Samples of an intra block can be transformed and the transform coefficients can be quantized before entropy coding. Intra prediction can be a technique that minimizes sample values ​​in the pre-transform domain. In some cases, the smaller the DC value after transformation and the smaller the AC coefficients, the fewer bits are needed for a given quantization step size to represent the block after entropy coding.

[0008] Traditional intra-coding, for example as known from MPEG-2 generation coding techniques, does not use intra-prediction. However, some new video compression techniques attempt to do so from surrounding sample data and / or metadata obtained, for example, during the encoding and / or decoding of spatially neighboring data blocks preceding in the decoding order. Such techniques are hereafter referred to as "intra-prediction" techniques. In at least some cases, intra-prediction uses only reference data from the current picture being reconstructed, and not from reference pictures.

[0009] There may be many different forms of intra-prediction. When more than one such technique can be used in a given video coding technique, the technique used may be coded in an intra-prediction mode. In certain cases, a mode may have sub-modes and / or parameters, which may be coded individually or included in a mode codeword. Which codeword to use for a given mode, sub-mode, and / or parameter combination may affect the improvement of coding efficiency through intra-prediction, and therefore entropy coding techniques may be used to convert the codeword into a bitstream.

[0010] Certain intra prediction modes were introduced by H.264 and improved in H.265 and in more recent coding techniques such as the joint exploration model (JEM), versatile video coding (VVC), and benchmark set (BMS). A prediction block can be formed using neighboring sample values ​​belonging to already available samples. The sample values ​​of the neighboring samples are copied to the prediction block according to a direction. The reference of the direction in use can be coded in the bitstream or may itself be predicted.

[0011] Referring to FIG. 1A, at the bottom right, a subset of 9 prediction directions known from the 33 possible prediction directions of H.265 (corresponding to the 33 angle modes of the 35 intra modes) is shown. The point where the arrows converge (101) represents the sample being predicted. The arrows represent the direction in which the sample is predicted. For example, arrow (102) indicates that sample (101) is predicted from one or more samples to the upper right at an angle of 45 degrees from the horizontal. Similarly, arrow (103) indicates that sample (101) is predicted from one or more samples to the lower left of sample (101) at an angle of 22.5 degrees from the horizontal.

[0012] 1A, a square block (104) of 4×4 samples (indicated by a thick dashed line) is shown at the top left. The square block (104) contains 16 samples, each labeled with "S", its position in the Y dimension (e.g., row index), and its position in the X dimension (e.g., column index). For example, sample S21 is the second sample (from the top) in the Y dimension and the first sample (from the left) in the X dimension. Similarly, sample S44 is the fourth sample in the block (104) in both the Y and X dimensions. When the block is of size 4×4 samples, S44 is at the bottom right. Also shown are reference samples that follow a similar numbering scheme. The reference samples are labeled by R, their Y position (e.g., row index) and X position (column index) relative to the block (104). In both H.264 and H.265, the predicted samples are in the neighborhood of the block being reconstructed, and therefore negative values ​​do not need to be used.

[0013] Intra-picture prediction can operate by copying reference sample values ​​from neighboring samples when more appropriate for the signaled prediction direction. For example, the coding video bitstream includes signaling for this block indicating a prediction direction consistent with the arrow (102). That is, a sample is predicted from one or more prediction samples at an angle of 45 degrees from the horizontal to the upper right. In this case, samples S41, S32, S23, and S14 are predicted from the same reference sample R05. Sample S44 is then predicted from reference sample R08.

[0014] In certain cases, values ​​of multiple reference samples may be combined, for example through interpolation, to calculate a reference sample, particularly when the direction is not evenly divisible by 45 degrees.

[0015] The number of possible directions has increased as video coding techniques have developed. In H.264 (2003), nine different directions could be presented. That increased to 33 in H.265 (2013), and JEM / VVC / BMS can support up to 65 directions at the time of this disclosure. Experiments have been performed to identify the most likely directions, and certain techniques have been used in entropy coding to represent these likely directions with a small number of bits while accepting certain penalties for the less likely directions. Furthermore, the direction itself may be predictable from neighboring directions in neighboring already decoded blocks.

[0016] FIG. 1B shows a diagram (105) showing 65 intra prediction directions according to JEM to illustrate the growth in the number of prediction directions over time.

[0017] The mapping of intra-prediction direction bits in a coding video bitstream to represent the direction varies among video coding techniques, ranging, for example, from simple direct mapping of prediction direction to intra-prediction mode to codeword, to complex adaptive schemes including most-probable modes, and similar techniques. In all cases, however, there may be certain directions that are statistically less likely to occur in the video content than certain other directions. Since the goal of video compression is to reduce redundancy, these less likely directions will be represented by more bits than more likely directions in a well-performing video coding technique.

[0018] Motion compensation is a lossy compression technique and may refer to a technique in which blocks of sample data from a previously reconstructed picture or part thereof (reference picture) are used for prediction of a newly reconstructed picture or part of a picture after being spatially shifted in a direction indicated by a motion vector (hereinafter MV). In some cases, the reference picture may be the same as the picture currently being reconstructed. The MV may have two dimensions X and Y, or three dimensions, with the third dimension being an indication of the reference picture in use (the latter may indirectly be a temporal dimension).

[0019] In some video compression techniques, the MV applicable to a particular region of sample data can be predicted from other MVs, e.g., from MVs associated with another region of sample data spatially adjacent to the region being reconstructed and preceding it in the decoding order. Doing so can result in a reduction in the amount of data required to encode the MV, thereby removing redundancy and improving compression. MV prediction, for example, when coding an input video signal obtained from a camera (known as natural video), is a statistical possibility that regions larger than the region to which a single MV is applicable move in a similar direction and therefore, in some cases, can be predicted using a similar MV derived from the MVs of neighboring regions. This results in the MV found for a given region being similar or the same as the MV predicted from the surrounding MVs. This can also be represented after entropy coding with a smaller number of bits than could be used when coding the MV directly. In some cases, MV prediction can be an example of lossless compression of a signal (i.e., MV) derived from the original signal (i.e., sample stream). In other cases, MV prediction itself can be lossy, e.g., due to rounding off errors when computing a predictor from several surrounding MVs.

[0020] Various MV prediction mechanisms are described in H.265 / HEVC (ITU-T Rec. H.265, "High Efficiency Video Coding", December 2016). One of the many MV prediction mechanisms provided by H.265 described therein is a technique referred to below as "spatial merge".

[0021] Referring to Fig. 1C, the current block (111) may contain samples found by the encoder during the motion search process as predictable from a previous block of the same size as the one that is spatially shifted. Instead of coding the MV directly, the MV may be derived from metadata associated with one or more reference pictures, for example, from the most recent reference picture (in decoding order), using the MV associated with any one of the five surrounding samples A0, A1, and B0, B1, B2 (112-116, respectively). In H.265, the MV prediction may use predictors from the same reference picture as the neighboring blocks use. Summary of the Invention

[0022] An aspect of the disclosure provides an apparatus for video encoding / decoding. The apparatus includes a processing circuit for determining reconstructed samples of a first color component within a filter support region of a current picture that is part of a coded video sequence. The processing circuit performs a filter operation on the reconstructed samples of the first color component within the filter support region. A quantization step size of the filter operation is set separately for one of a coding block, a video frame, and a video sequence. The processing circuit reconstructs samples of a second color component within the filter support region based on an output value of the filter operation. The second color component is different from the first color component.

[0023] In an embodiment, the quantization step size is a predetermined constant for one of the coding block, the video frame, and the video sequence.

[0024] In an embodiment, the quantization step size is an integer that is a power of two.

[0025] In an embodiment, the quantization step size is one of a plurality of quantization step sizes determined based on an index included in a bitstream corresponding to one of the coding block, the video frame, and the video sequence.

[0026] In an embodiment, the quantization step size is included in a bitstream corresponding to one of the coding block, the video frame, and the video sequence.

[0027] In an embodiment, the processing circuitry determines whether the output values ​​of the filtering operation are scaled based on the reconstructed samples of the first color component within the filter support region, and in response to the output values ​​of the filtering operation being scaled, the processing circuitry reconstructs samples of a second color component within the filter support region based on the scaled output values ​​of the filtering operation.

[0028] In an embodiment, the processing circuit determines whether the output values ​​of the filtering operation are scaled based on the reconstructed samples of the first color component within the filter support region and a syntax element indicating whether scaling of the output values ​​of the filtering operation is enabled.

[0029] In an embodiment, the processing circuitry determines the scaled output values ​​of the filtering operation based on the reconstructed samples of the first color component within the filter support region and the quantization step size.

[0030] An aspect of the disclosure provides a method for video encoding / decoding, in which reconstructed samples of a first color component in a filter support region of a current picture that is part of a coded video sequence are determined. A filter operation is performed on the reconstructed samples of the first color component in the filter support region. A quantization step size of the filter operation is set separately for one of a coding block, a video frame, and a video sequence. Samples of a second color component in the filter support region are reconstructed based on output values ​​of the filter operation. The second color component is different from the first color component.

[0031] Aspects of the present disclosure also provide a non-transitory computer-readable medium storing instructions that, when executed by at least one processor, cause the at least one processor to perform any one or combination of methods for video decoding. [Brief description of the drawings]

[0032] Further features, characteristics, and various advantages of the disclosed subject matter will become more apparent from the following detailed description and the accompanying drawings.

[0033] [Figure 1A] 2 is a schematic diagram of an example subset of intra-prediction modes.

[0034] [Figure 1B] 1 is a diagram of an exemplary intra prediction direction;

[0035] [Figure 1C] 1 is a schematic diagram of a current block and its surrounding spatial merging candidates in one example;

[0036] [Diagram 2] FIG. 1 is a schematic diagram of a simplified block diagram of a communication system, according to one embodiment.

[0037] [Diagram 3] FIG. 1 is a schematic diagram of a simplified block diagram of a communication system, according to one embodiment.

[0038] [Figure 4] FIG. 2 is a schematic diagram of a simplified block diagram of a decoder according to one embodiment.

[0039] [Diagram 5] FIG. 2 is a schematic diagram of a simplified block diagram of an encoder according to one embodiment.

[0040] [Figure 6] 4 shows a block diagram of an encoder according to another embodiment.

[0041] [Figure 7] 4 shows a block diagram of a decoder according to another embodiment;

[0042] [Figure 8A] 1 illustrates an exemplary diamond filter shape for an adaptive loop filter (ALF) according to some embodiments. [Figure 8B] 1 illustrates an exemplary diamond filter shape for an adaptive loop filter (ALF) according to some embodiments.

[0043] [Figure 9A] 13 illustrates example sub-sampling positions used for vertical gradients according to some embodiments. [Figure 9B] 13 illustrates example sub-sampling positions used for horizontal gradients according to some embodiments. [Figure 9C] 13 illustrates example sub-sampling positions used for diagonal gradients according to some embodiments. [Figure 9D] 13 illustrates example sub-sampling positions used for diagonal gradients according to some embodiments.

[0044] [Figure 10]1 illustrates an exemplary modified block classification applied to a luma component, according to an embodiment.

[0045] [Figure 11] 13 illustrates a modified ALF for the luma component at the virtual boundary according to some embodiments.

[0046] [Figure 12] 1 illustrates an exemplary largest coding unit (LCU) aligned picture quadtree partitioning according to an embodiment.

[0047] [Figure 13] 1 illustrates exemplary quadtree split flags encoded in z-order, according to an embodiment.

[0048] [Figure 14A] 1 illustrates an exemplary arrangement of a cross-component adaptive loop filter (CC-ALF), according to an embodiment.

[0049] [Figure 14B] 1 illustrates an exemplary linear diamond-shaped filter applied to the luma channel for each chroma component during CC-ALF operation, according to an embodiment.

[0050] [Figure 15] 1 illustrates an example position of a chroma sample relative to a luma sample according to some embodiments.

[0051] [Figure 16] 4 illustrates an exemplary direction search for an 8×8 block, according to an embodiment.

[0052] [Figure 17] 1 illustrates an exemplary subspace projection, according to an embodiment.

[0053] [Figure 18]An exemplary filter support region of a cross-component sample offset (CCSO) filter according to an embodiment is shown.

[0054] [Figure 19A] A table of 81 exemplary combinations in tabular form of non-linear mappings in a CCSO filter according to an embodiment is shown. [Figure 19B] A table of 81 exemplary combinations in tabular form of non-linear mappings in a CCSO filter according to an embodiment is shown.

[0055] [Figure 20] An exemplary subspace projection according to an embodiment is shown.

[0056] [Figure 21] A schematic diagram of a computer system according to an embodiment.

Best Mode for Carrying Out the Invention

[0057] <I. Video Decoder and Encoder System>

[0058] FIG. 2 illustrates a simplified block diagram of a communication system (200) according to an embodiment of the present disclosure. The communication system (200) includes a plurality of terminal devices that can communicate with each other, for example, via a network (250). For example, the communication system (200) includes a first pair of terminal devices (210) and (220) interconnected via the network (250). In the example of FIG. 2, the first pair of terminal devices (210) and (220) perform unidirectional transmission of data. For example, the terminal device (210) encodes video data (a stream of video pictures captured by the terminal device (210)) for transmission to another terminal device (220) via the network (250). The encoded video data can be transmitted in the form of one or more coded video bitstreams. The terminal device (220) may receive the coded video data from the network (250), decode the coded video data to reconstruct the video pictures, and display the video pictures according to the reconstructed video data. Unidirectional data transmission may be common in media serving applications and the like.

[0059] In another example, the communication system (200) includes a second pair of terminal devices (230) and (240) performing a bidirectional transmission of coded video data, such as may occur during a video conference. In the bidirectional transmission of data, the terminal devices (230) and (240) may code video data (e.g., a stream of video pictures captured by the terminal devices) for transmission to the terminal devices (230) and (240) over the network (250). Each of the terminal devices (230) and (240) may receive coded video data transmitted by the other of the terminal devices (230) and (240), may decode the coded video data to recover the video pictures, and may display the video pictures on an accessible display device in accordance with the recovered video data.

[0060] In the example of FIG. 2, the terminal devices (210), (220), (230), and (240) may be depicted as a server, a personal computer, and a smartphone, although the principles of the present disclosure are not so limited. The embodiments of the present disclosure may be applied to laptop computers, tablet computers, media players, and / or dedicated video conferencing equipment. The network (250) represents any number of networks that carry coded video data between the terminal devices (210), (220), (230), and (240), including, for example, wired and / or wireless communication networks. The communication network (250) may exchange data over circuit-switched and / or packet-switched channels. Exemplary networks include electronic communication networks, local area networks, wide area networks, and / or the Internet. For purposes of the present discussion, the architecture and topology of the network (250) may not be important to the operation of the present disclosure, unless otherwise noted below.

[0061] 3 shows an arrangement of video encoders and video decoders in a streaming environment as an example of an application of the disclosed subject matter, which is equally applicable to, for example, video conferencing, digital TV, storage of compressed video on digital media including CDs, DVDs, memory sticks, etc., other video-enabled applications, etc.

[0062] The streaming system may include a video source (301) that generates an uncompressed video picture stream (302), a capture subsystem (313) that may include, for example, a digital video camera. In one example, the video picture stream (302) includes samples captured by a digital camera. The video picture stream (302) is shown in bold to emphasize its high data volume when compared to the encoded video data (304) (or coded video bitstream) and may be processed by an electronic device (320) that includes a video encoder (303) coupled to the video source (301). The video encoder (303) may include hardware, software, or a combination thereof to enable or implement aspects of the disclosed subject matter, as described in more detail below. The encoded video data (304) (or coded video bitstream (304)) is shown in thin to emphasize its low data volume when compared to the video picture stream (302) and may be stored on a streaming server (305) for future use. One or more streaming client subsystems, such as the client subsystems (306) and (308) of FIG. 3, can access the streaming server (305) to retrieve copies (307) and (309) of the encoded video data (304). The client subsystem (306) may include a video decoder (310), for example in an electronic device (330). The video decoder (310) decodes an input copy (307) of the encoded video data and generates an output video picture stream (311) that can be rendered on a display (312) (e.g., a display screen) or other rendering device (not shown). In some streaming systems, the encoded video data (304), (307), and (309) (e.g., a video bitstream) may be encoded according to a particular video coding / compression standard. Examples of these standards include ITU-T Recommendation H.265. In one example, the video coding standard under development is known informally as Versatile Video Coding (VVC). The disclosed subject matter may be used in the context of a VVC.

[0063] It is noted that electronic devices 320 and 330 may include other components (not shown). For example, electronic device 320 may include a video decoder (not shown) and electronic device 330 may also include a video encoder (not shown).

[0064] 4 shows a block diagram of a video decoder (410) according to one embodiment of the present disclosure. The video decoder (410) may be included in an electronic device (430). The electronic device (430) may include a receiver (431) (e.g., a receiving circuit). The video decoder (410) may be used in place of the video decoder (310) in the example of FIG. 3.

[0065] The receiver (431) may receive one or more coded video sequences to be decoded by the video decoder (410), one coded video sequence at a time, in the same or another embodiment, where the decoding of each coded video sequence is independent of the other coded video sequences. The coded video sequences may be received from a channel (401), which may be a hardware / software link to a storage device that stores the coded video data. The receiver (431) may receive the coded video data along with other data, such as coded audio data and / or auxiliary data streams, which may be forwarded to a respective using entity (not shown). The receiver (431) may separate the coded video sequences from the other data. To eliminate network jitter, a buffer memory (415) may be coupled between the receiver (431) and the entropy decoder / parser (420) (hereinafter "parser (420)"). In certain applications, the buffer memory (415) is part of the video decoder (410). Alternatively, it may be external to the video decoder (410) (not shown). In still other cases, there may be a buffer memory (not shown) external to the video decoder (410), e.g., to remove network jitter, in addition to another buffer memory (415) internal to the video decoder (410), e.g., to handle playout timing. When the receiver (431) is receiving data controllably from a store / forward device of sufficient bandwidth or from an isosynchronous network, the buffer memory (415) may not be needed or may be small. For use with best-effort packet networks such as the Internet, the buffer memory (415) may be needed, may be relatively large, advantageously of adaptive size, and may be implemented at least in part in an operating system or similar element (not shown) external to the video decoder (410).

[0066] The video decoder (410) may include a parser (420) to reconstruct symbols (421) from the coded video sequence. These symbol categories include information used to manage the operation of the video decoder (410) and information for controlling a rendering device such as a render device (412) (e.g., a display screen) that may in some cases not be an integral part of the electronic device (430) as shown in FIG. 4 but may be coupled to the electronic device (430). The control information for the rendering device may be in the form of a Supplemental Enhancement Information (SEI) message or a Video Usability Information (VUI) parameter set fragment (not shown). The parser (420) may parse / entropy decode the received coded video sequence. The coding of the coded video sequence may follow a video coding technique or standard and may follow various principles including variable length coding, Huffman coding, arithmetic coding with or without context dependency, etc. The parser (420) may extract from the coded video sequence a set of subgroup parameters for at least one of the subgroups of pixels in the video decoder based on at least one parameter corresponding to the subgroup. The subgroups may include Groups of Pictures (GOPs), pictures, tiles, slices, macroblocks, coding units (CUs), blocks, transform units (TUs), prediction units (PUs), etc. The parser (420) may also extract information such as transform coefficients, quantization parameter values, MVs, etc. from the coded video sequence.

[0067] The parser (420) may perform an entropy decoding / parsing operation on the video sequence received from the buffer memory (415) to generate symbols (421).

[0068] The reconstruction of the symbols (421) may include a number of different units, depending on the type of coded video picture or portion thereof (e.g., inter and intra pictures, inter and intra blocks) and other factors. Which units are included and how can be controlled by subgroup control information parsed from the coded video sequence by the parser (420). The flow of such subgroup control information between the parser 420 and the following units is not shown for clarity.

[0069] Beyond the functional blocks already mentioned, the video decoder (410) may be conceptually subdivided into a number of functional units, as described below. In an actual implementation operating under commercial constraints, many of these units may interact closely with each other and may be at least partially integrated with each other. However, for purposes of describing the disclosed subject matter, the following conceptual subdivision into functional units is adequate.

[0070] The first unit is a scalar / inverse transform unit 451. The scalar / inverse transform unit (451) receives quantized transform coefficients and control information including which transform to use, block size, quantization coefficients, quantization scaling matrix, etc. as symbols (421) from the parser (420). The scalar / inverse transform unit (451) can output blocks containing sample values ​​that can be input to an aggregator (455).

[0071] In some examples, the output samples of the scaler / inverse transform unit (451) may belong to intra-coded blocks, i.e., blocks that do not use prediction information from a previously reconstructed picture, but can use prediction information from a previously reconstructed part of the current picture. Such prediction information may be provided by an intra-picture prediction unit (452). In some cases, the intra-picture prediction unit (452) generates a block of the same size and shape as the block being reconstructed, using surrounding already reconstructed information fetched from a current picture buffer (458). The current picture buffer (458), for example, buffers the reconstructed current picture partially and / or completely. The aggregator (455) adds the prediction information generated by the intra-prediction unit (452) to the output sample information provided by the scaler / inverse transform unit (451), in some cases on a sample-by-sample basis.

[0072] In other cases, the output samples of the scaler / inverse transform unit (451) may relate to an inter-coded, possibly motion-compensated block. In such cases, the motion compensated prediction unit (453) may access the reference picture memory (457) to fetch samples used for prediction. After motion compensating the fetched samples according to the symbols (421) related to the block, these samples may be added by the aggregator (455) to the output of the scaler / inverse transform unit (451) to generate output sample information (in this case referred to as residual samples or residual signals). The addresses in the reference picture memory (457) from which the motion compensated prediction unit (453) fetches prediction samples may be controlled by the available MVs of the motion compensated prediction unit (453), e.g., in the form of symbols (421) that may have X, Y, and reference picture components. Motion compensation may include interpolation of sample values ​​fetched from the reference picture memory (457) when the exact MV of a sub-sample is in use, MV prediction mechanisms, etc.

[0073] The output samples of the aggregator (455) may be subjected to various loop filtering techniques in the loop filter unit (456). The video compression techniques are controlled by parameters contained in the coded video sequence (also called the coded video bitstream) and made available to the loop filter unit (456) as symbols (421) from the parser (420), but may also include in-loop filter techniques that are responsive to meta-information obtained during decoding of previous portions (in decoding order) of the coded picture or coded video sequence, and that may also be responsive to previously reconstructed loop filtered sample values.

[0074] The output of the loop filter unit (456) may be a sample stream that can be output to a render device (412) and stored in a reference picture memory (457) for use in future inter-picture prediction.

[0075] Once a particular coded picture is fully reconstructed, it can be used as a reference picture for future prediction. For example, once a coded picture corresponding to a current picture is fully reconstructed and the coded picture is identified as a reference picture (e.g., by the parser (420)), the current picture buffer (458) can become part of the reference picture memory (457), and a fresh current picture buffer can be reallocated before beginning reconstruction of a subsequent coded picture.

[0076] The video decoder (410) may perform decoding operations according to a given video compression technique of a standard such as ITU-T Rec. H.265. The coding video sequence may conform to a syntax specified by the video compression technique or standard in use, in the sense that the coding video sequence conforms to both the video compression technique or standard and a profile documented in the video compression technique or standard. In particular, a profile may select certain tools from the full set of tools available in the video compression technique or standard as tools that are only available under the profile. Also, a requirement for compliance may be that the complexity of the coding video sequence is within the limits defined by the level of the video compression technique or standard. In some cases, the level limits the maximum picture size, maximum frame rate, maximum reconstruction sample rate (e.g., measured in megasamples / second), maximum reference picture size, etc. The limits set by the level may in some cases be further restricted through a Hypothetical Reference Decoder (HRD) specification and metadata for HRD buffer management signaled in the coding video sequence.

[0077] In an embodiment, the receiver (431) may receive additional (redundant) data along with the coded video. The additional data may be included as part of the coded video sequence. The additional data may be used by the video decoder 410 to correctly decode the data and / or to more accurately reconstruct the original video data. The additional data may be in the form of, for example, temporal, spatial, or signal-to-noise ratio (SNR) enhancement layers, redundant slices, redundant pictures, forward error correction codes, etc.

[0078] 5 shows a block diagram of a video encoder (503) according to one embodiment of the present disclosure. The video encoder (503) is included in an electronic device (520). The electronic device (520) includes a transmitter (540) (e.g., a transmission circuit). The video encoder (503) can be used in place of the video encoder (303) in the example of FIG. 3.

[0079] The video encoder (503) may receive video samples from a video source (501) (which in the example of FIG. 5 is not part of the electronic device (520)) that may capture video images to be coded by the video encoder (503). In another example, the video source (501) is part of the electronic device (520).

[0080] The video source (501) may provide a source video sequence to be coded by the video encoder (503) in the form of a digital video sample stream of any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, ...), any color space (e.g., BT.601 Y CrCB, RGB, ...), and any suitable sampling structure (e.g., YCrCb 4:2:0, YCrCb 4:4:4). In a media presentation system, the video source (501) may be a storage device that stores previously prepared video. In a video conferencing system, the video source (501) may be a camera that captures local image information as a video sequence. The video data may be provided as a number of individual pictures that, when viewed in succession, give the appearance of motion. The pictures themselves may be organized as a spatial array of pixels. Each pixel may contain one or more samples, depending on the sampling structure, color space, etc., being used. Those skilled in the art will readily appreciate the relationship between pixels and samples. The following description focuses on samples.

[0081] According to one embodiment, the video encoder (503) may encode and compress pictures of a source video sequence into a coded video sequence (543) in real-time or under any other time constraint required by the application. Enforcing an appropriate coding rate is one function of the controller (550). In some embodiments, the controller (550) controls and is operatively coupled to other functional units, which are described below, and are not shown for clarity. Parameters set by the controller (550) may include rate control related parameters (picture skip, quantizer, lambda value for rate distortion optimization techniques, ...), picture size, group of pictures (GOP) layout, maximum MV allowed reference region, etc. The controller (550) may be configured with other appropriate functions associated with the video encoder (503) optimized for a particular system design.

[0082] In some embodiments, the video encoder (503) is configured to operate in a coding loop. As a very simplified description, in one example, the coding loop may include a source coder (530) (e.g., responsible for generating symbols, such as a symbol stream, based on an input picture to be coded and reference pictures) and a (local) decoder (533) built into the video encoder (503). The decoder (533) reconstructs the symbols to generate sample data in a manner similar to that generated by a (remote) decoder (when any compression between the symbols and the coding bitstream is lossless in the video compression techniques considered in the disclosed subject matter). The reconstructed sample stream (sample data) is input to a reference picture memory (534). When the decoding of the symbol stream produces bit-accurate results independent of the decoder location (local or remote), the contents of the reference picture memory (534) are also bit-accurate between the local and remote encoders. In other words, the prediction part of the encoder "sees" exactly the same sample values ​​as the reference picture samples that the decoder "sees" when using prediction during decoding. This basic principle of reference picture synchrony (and the resulting drift if synchrony cannot be maintained, e.g., due to channel errors) is used in several related techniques as well.

[0083] The operation of the "local" decoder (533) may be the same as that of a "remote" decoder, such as the video decoder (410) detailed above in connection with Figure 4. Referring briefly also to Figure 4, however, because symbols are available and the encoding / decoding of symbols into a coded video sequence by the entropy coder (545) and parser (420) may be lossless, the entropy decoding portion of the video decoder (410), including the buffer memory (415), and the parser (420), may not be fully implemented in the local decoder (533).

[0084] An observation to be made at this point is that any decoder techniques, other than parsing / entropy decoding, present in the decoder must also be present in substantially the same functional form as in the corresponding encoder. For this reason, the subject matter of the disclosure focuses on the decoder operation. A description of the encoder techniques can be omitted, as they are the inverse of the decoder techniques, which are described generically. Only in certain areas are more detailed descriptions necessary and are provided below.

[0085] In operation, in some examples, the source coder (530) may perform motion-compensated predictive coding, which predictively codes an input picture with reference to one or more previously coded pictures from a video sequence designated as "reference pictures." In this method, the coding engine (532) codes differences between pixel blocks of the input picture and pixel blocks of reference pictures that may be selected as prediction references for the input picture.

[0086] The local video decoder (533) may decode the coded video data of pictures that may be designated as reference pictures based on the symbols generated by the source coder (530). The operation of the coding engine (532) may advantageously be lossy. When the coded video data may be decoded in a video decoder (not shown in FIG. 5), the reconstructed video sequence may typically be a copy of the source video sequence with some errors. The local video decoder (533) may replicate the decoding process that may be performed by the video decoder on the reference pictures, resulting in reconstructed reference pictures to be stored in the reference picture cache (534). In this way, the video encoder (503) may store copies of reconstructed reference pictures that have common content with reconstructed reference pictures obtained by the far-end video decoder (in the absence of transmission errors).

[0087] The predictor (535) may perform a prediction search for the coding engine (532). That is, for a new picture to be coded, the predictor (535) may search the reference picture memory (534) for sample data (such as candidate reference pixel blocks) or specific metadata such as reference picture MVs, block shapes, etc. that may serve as suitable prediction references for the new picture. The predictor (535) may operate on a sample block-pixel block basis to find a suitable prediction reference. In some examples, the input picture may have prediction references derived from multiple reference pictures stored in the reference picture memory (534), as determined by the search results obtained by the predictor (535).

[0088] The control unit (550) may manage the coding operations of the source coder (530), including, for example, setting parameters and subgroup parameters used for encoding the video data.

[0089] The output of all the aforementioned functional units may undergo entropy coding in an entropy coder (545), which converts the symbols produced by the various functional units into a coded video sequence by losslessly compressing the symbols according to techniques such as Huffman coding, variable length coding, arithmetic coding, etc.

[0090] The transmitter (540) may buffer the coded video sequence generated by the entropy coder (545) to prepare it for transmission over a communication channel (560), which may be a hardware / software link to a storage device that may store the encoded video data. The transmitter (540) may merge the coded video data from the video coder (503) with other data to be transmitted, such as coded audio data and / or auxiliary data streams (sources not shown).

[0091] A controller (550) may manage the operation of the video encoder (503). During coding, the controller (550) may assign a particular coding picture type to each coding picture, which may affect the coding technique that may be applied to each picture. For example, pictures may often be assigned as one of the following picture types:

[0092] An intra picture (I-picture) may be a picture that can be coded and decoded without using any other picture in a sequence as a source of prediction. Some video codecs allow different kinds of intra pictures, including, for example, Independent Decoder Refresh (IDR) pictures. Those skilled in the art will recognize the variations of I-pictures and their respective applications and characteristics.

[0093] A predictive picture (P picture) may be a picture that can be coded and decoded using intra prediction or inter prediction, in most cases using one MV and a reference index to predict the sample values ​​of each block.

[0094] A bidirectionally predicted picture (B-picture) may be a picture that can be coded and decoded using intra- or inter-prediction, in most cases using up to two MVs and reference indices to predict the sample values ​​of each block. Similarly, a multi-predictive picture can use more than two reference pictures and associated metadata for the reconstruction of a single block.

[0095] A source picture may generally be spatially subdivided into multiple sample blocks (e.g., blocks of 4x4, 8x8, 4x8, or 16x16 samples each) and coded block by block. Blocks may be predictively coded with reference to other (already coded) blocks determined by the coding assignment applied to each picture of the block. For example, blocks of I pictures may be non-predictively coded, or they may be predictively coded with reference to already coded blocks of the same picture (spatial or intra prediction). Pixel blocks of P pictures may be predictively coded via spatial prediction or via temporal prediction with reference to one previously coded reference picture. Blocks of B pictures may be predictively coded via spatial prediction or via temporal prediction with reference to one or two previously coded reference pictures.

[0096] The video encoder (503) may perform coding operations according to a given video coding technique or standard, such as ITU-T Rec. H.265. In doing so, the video encoder (503) may perform various compression operations, including predictive coding operations that exploit temporal and spatial redundancy in the input video sequence. The coding video data may therefore conform to a syntax specified by the video coding technique or standard being used.

[0097] In one embodiment, the transmitter (540) may transmit additional data along with the encoded video. The source coder (530) may include such data as part of the coded video sequence. The additional data may include temporal / spatial / SNR enhancement layers, other types of redundant data such as redundant pictures and slices, SEI messages, VUI parameter set fragments, etc.

[0098] Video may be captured as multiple source pictures (video pictures) in a time sequence. Intra-picture prediction (sometimes abbreviated as intra-prediction) exploits spatial correlation within a given picture, while inter-picture prediction exploits correlation (temporal or other) between pictures. In one example, a particular picture being coded / decoded is called a current picture and is partitioned into blocks. When a block in a current picture is similar to a reference block in a previously coded and still buffered reference picture in the MV video, the block in the current picture can be coded by a vector called MV. MV refers to a reference block in a reference picture and may have a third dimension that identifies the reference picture if multiple reference pictures are in use.

[0099] In some embodiments, bi-prediction techniques can be used in inter-picture prediction. According to bi-prediction techniques, two reference pictures are used, such as a first reference picture and a second reference picture, both of which are before the current picture in the video in decoding order (but may be in the past and future, respectively, in display order). A block in the current picture can be coded with a first MV that points to a first reference block in the first reference picture, and a second MV that points to a second reference block in the second reference picture. A block can be predicted by a combination of the first reference block and the second reference block.

[0100] Furthermore, to improve coding efficiency, merge mode techniques can be used in inter-picture prediction.

[0101] According to some embodiments of the present disclosure, predictions such as inter-picture prediction and intra-picture prediction are performed in units of blocks. For example, according to the HEVC standard, pictures in a video picture sequence are partitioned into coding tree units (CTUs) for compression. The CTUs in a picture have the same size, such as 64×64 pixels, 32×32 pixels, or 16×16 pixels. Typically, a CTU includes three coding tree blocks (CTBs), i.e., one luma CTB and two chroma CTBs. Each CTU can be recursively quad-tree partitioned into one or more coding units (CUs). For example, a CTU of 64×64 pixels can be partitioned into one CU of 64×64 pixels, or four CUs of 32×32 pixels, or 16 CUs of 16×16 pixels. In one example, each CU is analyzed to determine a prediction type of the CU, such as an inter prediction type or an intra prediction type. A CU is divided into one or more prediction units (PUs) depending on temporal and / or spatial predictability. Typically, each PU includes a luma prediction block (PB) and two chroma PBs. In one embodiment, prediction operations in coding (encoding / decoding) are performed in units of prediction blocks. Using a luma prediction block as an example of a prediction block, the prediction block includes a matrix of values ​​(e.g., luma values) for pixels such as 8×8 pixels, 16×16 pixels, 8×16 pixels, 16×8 pixels, and so on.

[0102] 6 shows a diagram of a video encoder (603) according to another embodiment of the present disclosure. The video encoder (603) is configured to receive a processed block of sample values ​​(e.g., a predictive block) in a current video picture in a video picture sequence and to encode the processed block into a coding picture that is part of the coding video sequence. In one example, the video encoder (603) is used in place of the video encoder (303) in the example of FIG. 3.

[0103] In an HEVC example, the video encoder (603) receives a matrix of sample values ​​for a processing block, such as a prediction block, such as 8×8 samples. The video encoder (603) determines whether the processing block is best coded using intra mode, inter mode, or bi-prediction mode, for example using rate-distortion optimization. When the processing block is coded in intra mode, the video encoder (603) may use intra prediction techniques to code the processing block into a coding picture. When the processing block is coded in inter mode or bi-prediction mode, the video encoder (603) may use inter prediction or bi-prediction techniques, respectively, to code the processing block into a coding picture. In certain video coding techniques, the merge mode may be an inter-picture prediction sub-mode in which MV is derived from one or more MV predictors without the benefit of coding MV components outside the predictors. In certain other video coding techniques, there may be MV components applicable to the current block. In one example, the video encoder (603) includes other components, such as a mode decision module (not shown), to determine the mode of the processing block.

[0104] In the example of FIG. 6, the video encoder (603) includes an inter-encoder (630), an intra-encoder (622), a residual calculator (623), a switch (626), a residual encoder (624), a general control unit (621), and an entropy encoder (625) coupled together as shown in FIG.

[0105] The inter-encoder (630) is configured to receive samples of a current block (e.g., a block being processed), compare the block to one or more reference blocks in a reference picture (e.g., blocks in a previous picture and a subsequent picture), generate inter-prediction information (e.g., an account of redundant information due to inter-coding techniques, MV, merge mode information), and calculate an inter-prediction result (e.g., a prediction block) based on the inter-prediction information using any suitable technique. In some examples, the reference picture is a decoded reference picture that is decoded based on the encoded video information.

[0106] The intra encoder (622) is configured to receive samples of a current block (e.g., a block being processed), in some cases compare the block to already coded blocks in a sample picture, and generate quantized coefficients after transformation, and in some cases also intra prediction information (e.g., intra prediction direction information according to one or more intra encoding techniques). In one example, the intra encoder (622) also calculates intra prediction results (e.g., predicted blocks) based on the intra prediction information and reference blocks in the same picture.

[0107] The general control unit (621) is configured to determine general control data and control other components of the video encoder (603) based on the general control data. In one example, the general control unit (621) determines the mode of the block and provides a control signal to the switch (626) based on the mode. For example, when the mode is an intra mode, the general control unit (621) controls the switch (626) to select an intra mode result for use by the residual calculator (623) and controls the entropy encoder (625) to select intra prediction information and include the intra prediction information in the bitstream, and when the mode is an inter mode, the general control unit (621) controls the switch (626) to select an inter prediction result for use by the residual calculator (623) and controls the entropy encoder (625) to select inter prediction information and include the inter prediction information in the bitstream.

[0108] The residual calculator (623) is configured to calculate a difference (residual data) between the received block and a selected prediction result from the intra-encoder (622) or the inter-encoder (630). The residual encoder (624) is configured to operate on the residual data to encode the residual data and generate transform coefficients. In one example, the residual encoder (624) is configured to transform the residual data from the spatial domain to the frequency domain and generate transform coefficients. The transform coefficients are then subjected to a quantization process to obtain quantized transform coefficients. In various embodiments, the video encoder (603) also includes a residual decoder (628). The residual decoder (628) is configured to perform an inverse transform and generate decoded residual data. The decoded residual data can be suitably used by the intra-encoder (622) and the inter-encoder (630). For example, the inter-encoder (630) can generate decoded blocks based on the decoded residual data and the inter-prediction information, and the intra-encoder (622) can generate decoded blocks based on the decoded residual data and the intra-prediction information. The decoded blocks are appropriately processed to generate a decoded picture, which in some examples may be buffered in a memory circuit (not shown) and used as a reference picture.

[0109] The entropy encoder (625) is configured to format the bitstream to include the coded block. The entropy encoder (625) is configured to include various information in accordance with an appropriate standard, such as HEVC. In one example, the entropy encoder (625) is configured to include in the bitstream general control data, selected prediction information (e.g., intra-prediction information or inter-prediction information), residual information, and other appropriate information. Note that in accordance with the disclosed subject matter, when coding a block in a merged sub-mode of either an inter mode or a bi-prediction mode, no residual information is present.

[0110] 7 shows a diagram of a video encoder (710) according to another embodiment of the present disclosure. The video decoder (710) is configured to receive coded pictures that are part of a coded video sequence and to decode the coded pictures to generate reconstructed pictures. In one example, the video decoder (710) is used in place of the video decoder (310) in the example of FIG. 3.

[0111] In the example of FIG. 7, the video decoder (710) includes an entropy decoder (771), an inter decoder (780), a residual decoder (773), a reconstruction module (774), and an intra decoder (772) coupled together as shown in FIG.

[0112] The entropy decoder (771) may be configured to reconstruct, from the coding picture, certain symbols that represent generated syntax elements of the coding picture. Such symbols may include, for example, prediction information (e.g., intra- or inter-prediction information) that can identify the coded mode of the block (e.g., intra-, inter-, or bi-directional mode, merged submode, or the latter two of another submode), certain samples or metadata used for prediction by the intra decoder (772) or inter decoder (780), respectively, residual information, for example in the form of quantized transform coefficients, etc. In one example, when the prediction mode is an inter or bi-directional prediction mode, the inter prediction information is provided to the inter decoder (780), and when the prediction type is an intra prediction type, the intra prediction information is provided to the intra decoder (772). The residual information is dequantized and provided to the residual decoder (773).

[0113] The inter decoder (780) is configured to receive the inter prediction information and to generate inter prediction results based on the inter prediction information.

[0114] The intra decoder (772) is configured to receive the intra prediction information and to generate a prediction result based on the intra prediction information.

[0115] The residual decoder (773) is configured to perform inverse quantization to extract the inverse quantized transform coefficients, and process the inverse quantized transform coefficients to convert the residual from the frequency domain to the spatial domain. The residual decoder (773) may also require specific control information (for including the Quantizer Parameter: QP). This information may be provided by the entropy decoder (771) (since this is only low-capacity control information, the data path is not shown).

[0116] The reconstruction module (774) is configured to combine, in the spatial domain, the residual as the output by the residual decoder (773) and the prediction result (optionally as the output by the inter or intra prediction module) to form a reconstruction block that can be part of a reconstructed picture and, on the other hand, can be part of the reconstructed video. Other appropriate operations such as a deblocking operation can be performed to improve the visual quality.

[0117] Note that the video encoders (303), (503), and (603), and the video decoders (310), (410), and (710) can be implemented using any appropriate technology. In one embodiment, the video encoders (303), (503), and (603), and the video decoders (310), (410), and (710) can be implemented using one or more integrated circuits. In another embodiment, the video encoders (303), (503), and (603), and the video decoders (310), (410), and (710) can be implemented using one or more processors that execute software instructions.

[0118] <II. Adaptive Loop Filter>

[0119] In some relevant examples, such as VVC Draft8, an adaptive loop filter (ALF) can be applied along with block-based filter adaptation. For the luma component, one of 25 filters can be selected for each 4x4 block, based on the orientation and activity of each 4x4 block.

[0120] 8A-8B show example diamond filter shapes for ALF according to some embodiments of the present disclosure: Figure 8A shows a 5x5 diamond shape applicable to the chroma components, and Figure 8B shows a 7x7 diamond shape applicable to the luma component.

[0121] In some relevant examples, for the luma component, each 4×4 block can be classified into one of 25 classes. The classification index C of a 4×4 block can be derived based on the directionality D and the quantized value A of the activity of the 4×4 block as follows:

number

[0122] To calculate D and Â, first the horizontal, vertical, and two diagonal gradients of a 4x4 block can be calculated using the 1D Laplacian as follows:

number

[0123] To reduce the complexity of block classification, a sub-sampling 1D Laplacian computation can be applied. Figures 9A-9D show example sub-sampling positions used for vertical, horizontal, diagonal, and diagonal gradients, respectively, according to some embodiments.

[0124]

number

[0125] Then the maximum and minimum values ​​of the two diagonal gradients can be set as follows:

number

[0126] To derive a directional value D, these values ​​can be compared with each other and with two thresholds t1 and t2.

[0127] Step 1:

number

[0128] Step 2:

number

[0129] Step 3:

number

[0130] Step 4:

number

[0131] The activity value A is calculated as follows:

number

[0132] A is further quantized to the range 0 to 4 inclusive, and the quantized value is denoted as Â.

[0133] For the chroma components within a picture, no classification method is applied, e.g., a single set of ALF coefficients can be applied for each chroma component.

[0134] Before filtering each 4x4 luma block, geometric transformations such as rotation, diagonal flipping, and vertical flipping are applied to the filter coefficients f(k,l) and the corresponding filter clipping values ​​c(k,l) depending on the gradient values ​​calculated for each block. This is equivalent to applying these transformations to samples within the filter support region (or filter support area) in order to make different blocks to which ALF is applied more similar by aligning their orientations.

[0135] The three geometric transformations including diagonal flipping, vertical flipping, and rotation can be described as follows:

number

[0136] In some relevant examples such as VVC Draft8, the filter parameters of the ALF are signaled in an adaptation parameter set (APS). In one APS, up to 25 sets of luma filter coefficients and clipping value indexes and up to 8 sets of chroma filter coefficients and clipping value indexes can be signaled. To reduce bit overhead, filter coefficients of different classifications of luma components can be merged. In the slice header, the index of the APS used for the current slice is signaled. The signaling of the ALF is CTU-based in VVC Draft8.

[0137] The clipping value index is decoded from the APS and allows to determine the clipping values ​​using a table of clipping values ​​for the luma and chroma components. These clipping values ​​depend on the internal bit depth. For example, the table of clipping values ​​can be obtained by the following formula:

number

[0138] In the slice header, up to seven APS indices can be signaled to specify the luma filter set used for the current slice. The filtering process can be further controlled at the CTB level. A flag can be signaled to indicate whether ALF is applied to the luma CTB. The luma CTB can select a filter set among the 16 fixed filter sets and a filter set from the APS. A filter set index is signaled for the luma CTB to indicate which filter set is applied. The 16 fixed filter sets can be predefined and hard-coded in both the encoder and the decoder.

[0139] For chroma components, an APS index can be signaled in the slice header to indicate the chroma filter set currently used for the slice. At the CTB level, if there is more than one chroma filter set in the APS, a filter index can be signaled per chroma CTB.

[0140] The filter coefficients can be quantized, where the norm is equal to 128. To limit the multiplication complexity, bitstream compliance can be applied, so that coefficient values ​​in non-central positions can range from −27 to 27−1, inclusive. Coefficients in central positions are not signaled in the bitstream and are assumed to be equal to 128.

[0141] In some relevant examples, such as VVC Draft8, the syntax and semantics of clipping indexes and their corresponding values ​​can be defined as follows:

[0142] alf_luma_clip_idx[sfIdx][j] specifies the clipping index of the clipping value that should be used before multiplication by the jth coefficient of the signaled luma filter indicated by sfIdx. The bitstream compliance requirement is that the values ​​of alf_luma_clip_idx[sfIdx][j], where sfIdx=0..alf_luma_num_filters_signalled_minus1 and j=0..11, are in the range 0 to 3, inclusive.

[0143] The luma filter clipping value AlfClipL[adaptation_parameter_set_id][filtIdx] with element AlfClipL[adaptation_parameter_set_id][filtIdx][j], where filtIdx=0..NumAlfFilters-1 and j=0..11, is derived in Table 2 depending on bitDepth being set equal to BitDepthY, and clipIdx being set equal to alf_luma_clip_idx[alf_luma_coeff_delta_idx[filtIdx]][j].

[0144] alf_chroma_clip_idx[altIdx][j] specifies the clipping index of the clipping value that should be used before multiplication by the jth coefficient of the alternative chroma filter with index altIdx. The bitstream compliance requirement is that the values ​​of alf_chroma_clip_idx[altIdx][j], where altIdx=0..alf_chroma_num_alt_filters_minus1, j=0..5, are in the range 0 to 3, inclusive.

[0145] The luma filter clipping value AlfClipC[adaptation_parameter_set_id][altIdx] with element AlfClipC[adaptation_parameter_set_id][altIdx][j], where altIdx=0..alf_chroma_num_alt_filters_minus1, j=0..5, is derived in Table 2 depending on bitDepth being set equal to BitDepthC, and clipIdx being set equal to alf_chroma_clip_idx[altIdx][j].

[0146] At the decoder side, when ALF is enabled for the CTB, each sample R(i,j) in the CU is filtered, resulting in a corresponding sample value R'(i,j) as shown below:

number

[0147] 10 illustrates an example modified block classification applied to the luma component according to an embodiment of the present disclosure. The modified block classification and filtering is utilized for samples near the horizontal CTU boundary, which can reduce the line buffer requirements of the ALF. As shown in FIG. 10, the virtual boundary is defined as a line that shifts the horizontal CTU boundary by "N" samples, where N is equal to 4 for the luma component and 2 for the chroma component, respectively.

[0148] In the 1D Laplacian gradient computation of a 4x4 block above the virtual boundary, only samples above the virtual boundary are used. Similarly, in the 1D Laplacian gradient computation of a 4x4 block below the virtual boundary, only samples below the virtual boundary are used. The quantization of the activity value A is therefore scaled to account for the reduced number of samples used in the 1D Laplacian gradient computation.

[0149] Fig. 11 shows an exemplary modified ALF for luma components at the virtual boundary according to some embodiments. In the filtering process, a symmetric padding operation at the virtual boundary can be used for both luma and chroma components. As shown in Fig. 11, when the sample being filtered is located below the virtual boundary, the neighboring samples located above the virtual boundary are padded. Meanwhile, the corresponding samples on the other side are also padded symmetrically.

[0150] In order to improve coding efficiency, a coding unit synchronized picture quad-tree based ALP is used in some related examples. A luma picture can be divided into several multi-level quad-tree partitions, and each partition boundary is aligned with the boundary of the largest coding unit (LCU). Each partition has its own filtering process and can be called a filter unit (FU).

[0151] The two-pass encoding flow is described as follows: In the first pass, the quadtree partitioning pattern and the best filter for each FU are determined. The filtering distortion is estimated by fast filtering distortion estimation (FFDE) during the decision process. According to the determined quadtree partitioning pattern and the selected filters of all FUs, the reconstructed picture is filtered. In the second pass, the CU-synchronous ALF on / off control is performed. According to the ALF on / off result, the filtered picture from the first pass is partially restored by the reconstructed picture.

[0152] FIG. 12 illustrates an exemplary LCU-aligned picture quadtree partitioning according to an embodiment. A top-down partitioning strategy is adopted to partition a picture into multi-level quadtree partitions using a rate-distortion criterion. Each partition is called a filter unit. The partitioning process aligns the quadtree partitions to LCU boundaries. The coding order of the FUs follows the z-scan order. For example, as shown in FIG. 12, a picture is partitioned into 10 FUs, and the coding order is FU0, FU1, FU2, FU3, FU4, FU5, FU6, FU7, FU8, and FU9.

[0153] Figure 13 shows an example quadtree partitioning pattern corresponding to Figure 12. To indicate the picture quadtree partitioning pattern, partition flags are coded and transmitted in z-order.

[0154] The filters of each FU can be selected from two filter sets based on the rate distortion criterion. The first set has the 1 / 2 symmetric square and rhombus filters newly derived for the current FU. The second set is derived from a time-delay filter buffer that stores the filters previously derived for the FU of the previous picture. Of these two filters, the filter with the minimum rate distortion cost can be selected for the current FU. Similarly, if the current FU is not the minimum FU and can be further divided into four child FUs, the rate distortion costs of the four child FUs are calculated. By comparing the rate distortion costs in each case of division and no division, the quadtree division pattern of the picture can be determined.

[0155] In some related examples, the maximum quadtree division level is 2, which means that the maximum number of FUs is 16. During the quadtree division decision, the correlation values for deriving the Wiener coefficients of the 16 FUs (minimum FUs) at the bottom quadtree level can be reused. The remaining FUs can derive their Wiener filters from the correlations of the 16 FUs at the bottom quadtree division level. Therefore, only one frame buffer access is required to derive the filter coefficients of all FUs.

[0156] After the quadtree division pattern is determined, CU synchronous ALF on / off control can be performed to further reduce the filtering distortion. By comparing the filtering distortion and the distortion without filtering, the leaf CU can explicitly switch the ALF on / off in its local area. The coding efficiency can be further improved by redesigning the filter coefficients according to the ALF on / off result. However, the redesign process requires additional frame buffer accesses. In some related examples, there is no redesign process after the CU synchronous ALF on / off decision to minimize the number of frame buffer accesses.

[0157] <III. Adaptive Loop Filter>

[0158] In some related examples, a cross-component adaptive loop filter (CC-ALF) is used, which uses the luma sample values ​​to refine each chroma component.

[0159] FIG. 14A illustrates an example arrangement of CC-ALF according to an embodiment of the present disclosure. FIG. 14B illustrates an example linear diamond-shaped filter applied to the luma channel per chroma component during CC-ALF operation. The filter coefficients can be transmitted in the APS, scaled by a factor of, for example, 210, and rounded for fixed-point representation. The application of the filter is controlled by variable block sizes, signaled by context coding flags received for each block of samples. Block sizes are received at the slice level per chroma component along with the CC-ALF enable flag. In the example, the following block sizes (in chroma samples) are supported: 16×16, 32×32, and 64×64.

[0160] Table 3 shows the syntax elements related to CC-ALF. [Table 3]

[0161] In Table 3, the syntax element alf_ctb_cross_component_cb_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY] equal to 0 indicates that no inter-component Cb filter is applied to the block of samples in the Cb color component at the luma position (xCtb, yCtb). The syntax element aalf_ctb_cross_component_cb_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY] not equal to 0 indicates that the alf_ctb_cross_component_cb_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]th inter-component Cb filter is applied to the block of samples in the Cb color component at the luma position (xCtb, yCtb).

[0162] The syntax element alf_ctb_cross_component_cr_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY] equal to 0 indicates that no inter-component Cr filter is applied to the sample block in the Cr color component at the luma position (xCtb, yCtb). The syntax element alf_ctb_cross_component_cr_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY] not equal to 0 indicates that the alf_ctb_cross_component_cr_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]th inter-component Cr filter is applied to the sample block in the Cr color component at the luma position (xCtb, yCtb).

[0163] <IV.クロマサンプリングフォーマット>

[0164] FIG. 15 shows an exemplary relative position of the top-left chroma sample when chroma_format_idc is equal to 1 (4:2:0 chroma format) and chroma_sample_loc_type_top_field or chroma_sample_loc_type_bottom_field is equal to the value of the variable ChromaLocType. The area represented by the top-left 4:2:0 chroma sample is shown relative to the area represented by the top-left luma sample.

[0165] <V. Constrained Directional Enhancement Filter>

[0166] One goal of the in-loop constrained directional enhancement filter (CDEF) is to filter out coding artifacts while preserving the details of the image. In some related examples such as HEVC, the sample adaptive offset (SAO) algorithm can achieve a similar goal by defining signal offsets for different classes of pixels. Unlike SAO, CDEF is a non-linear spatial filter. The filter design is constrained so that it can be easily vectorized, for example, implemented by single instruction multiple data (SIMD) operations. This does not apply to other non-linear filters such as median filters and bilateral filters.

[0167] The CDEF design is derived from the following observations. The amount of ringing artifacts in the coded image tends to be approximately proportional to the quantization step size. The amount of detail is a characteristic of the input image, but the minimum amount of detail retained in the quantized image also tends to be proportional to the quantization step size. For a given quantization step size, the size of the ringing is usually smaller than the size of the detail.

[0168] CDEF works by identifying the orientation of each block and then adaptively filtering along the identified orientation and along a small number of angles rotated 45 degrees from the identified orientation. The filter strength is explicitly signaled. This allows a high degree of control over blur. An efficient encoder search is designed for the filter strength. CDEF is based on two previously proposed in-loop filters, a combined filter that has been adopted for the new AOMedia Video1 (AV1) codec.

[0169] FIG. 16 illustrates an exemplary direction search for an 8×8 block according to an embodiment of the present disclosure. The direction search operates on the reconstructed pixels immediately after the deblocking filter. There is no need to signal the direction since those pixels are available to the decoder. The search operates on the 8×8 block, which is small enough to properly handle non-linear edges and large enough to readily estimate the direction when applied to the quantized image. Having a constant direction over the 8×8 region also makes the filter easier to vectorize. For each block, the direction that best matches the pattern in each block is determined by minimizing the sum of squared differences (SSD) between the quantized block and the nearest complete direction block. A complete direction block is a block where all pixels along a line in one direction have the same value.

[0170] One reason for identifying the direction is to align the filter taps along a direction that reduces ringing while preserving the directional edges or patterns. However, directional filtering alone may not reduce ringing sufficiently. It is desirable to also use filter taps for pixels that are not aligned with the main direction. These additional taps are treated more conservatively to reduce the risk of blurring. For this reason, CDEF defines primary and secondary taps. The complete 2D CDEF filter is expressed as follows:

number

[0171] <Loop Restoration in VI.AV1>

[0172] The set of in - loop restoration methods can typically be used in post - deblocking video coding to remove noise and improve edge quality beyond traditional deblocking operations. These methods are switchable within a frame for appropriately sized tiles. The specific methods described are based on a separable symmetric Wiener filter and a dual self - guiding filter with subspace projection. Since the statistics of the content can vary significantly within a frame, these tools are integrated within a switchable framework where different tools can be triggered in different regions of the frame.

[0173] In the Wiener filter, all pixels in the degraded frame can be reconstructed as the non - causal filtered versions of each pixel within the w×w window around each pixel. Here, w = 2r+1 is odd for an integer r. The 2D filter taps are in column - vectorized form w 2For a filter represented by a 1×1 element vector F, a simple linear minimum mean square error (LMMSE) optimization results in the filter parameters F=H -1 M, where H=E[XX T ] is the autocovariance of x, w in a w × w window around the pixel 2 is a column vectorized version of the samples, where M=E[YX T ] is the cross-correlation of x with the scalar source sample y to be estimated. The encoder can estimate H and M from the source and realization of the deblocked frame and send the resulting filter F to the decoder. However, this is not possible without the use of w 2 This not only incurs substantial bit rate costs of transmitting the taps, but also results in non-separable filtering that significantly complicates decoding. Therefore, several additional constraints are imposed on the properties of F. First, F is constrained to be separable. As a result, the filtering can be implemented as separable horizontal and vertical w-tap convolutions. Second, each of the horizontal and vertical filters is constrained to be symmetric. Third, both the horizontal and vertical filter coefficients are assumed to sum to unity.

[0174] The local linear model of guided filtering can be expressed as follows:

number

[0175] A local linear model is used to compute the filtered output y from the unfiltered samples x, where F and G are determined based on the statistics of the degraded and guided images in the neighborhood of the filtered pixel. If the guided image is the same as the degraded image, the resulting so-called self-guided filtering has the effect of edge-preserving smoothing. The specific form of self-guided filtering depends on two parameters: the radius r and the noise parameter e, and is enumerated as follows:

[0176] (1) The mean μ and variance σ of the pixels within a (2r + 1) × (2r + 1) window around all pixels 2 are obtained. This can be effectively implemented by box filtering based on integral imaging.

[0177] (2) Calculate the following for all pixels:

Equation

[0178] (3) Calculate F and G for all pixels as the mean of the values of f and g within a 3 × 3 window around the pixels for use.

[0179] Filtering is controlled by r and e. Here, the higher r is, the higher the spatial variance is indicated, and the higher e is, the higher the range variance is indicated.

[0180] FIG. 17 shows an exemplary subspace projection according to an embodiment. Neither of the inexpensive reconstructions X1 and X2 is close to the source Y, but appropriate multipliers {α, β} can bring them closer to the source as long as they are moving in a somewhat correct direction.

[0181] <VII. Inter - Component Sample Offset Filter>

[0182] A cross-component sample offset (CCSO) filter is a loop filtering approach to reduce distortion of reconstructed samples. In a CCSO filter, a nonlinear mapping can be used to derive an output offset given the processed input reconstructed samples of a first color component. The output offset can be added to the reconstructed samples of a second color component in the filtering process of the CCSO filter. The input reconstructed samples of the first color component are located within the filter support area (or filter support region).

[0183] 18 shows an exemplary filter support area according to an embodiment of the present disclosure. The filter support area includes four reconstructed samples: p0, p1, p2, and p3. The four input reconstructed samples are cross-shaped in the vertical and horizontal directions. The central sample (denoted by c) of the first color component and the sample to be filtered of the second color component are co-located. When processing the input reconstructed samples, the following steps are applied:

[0184] Step 1: First, the delta values ​​between p0-p3 and c are calculated and denoted as m0, m1, m2, and m3.

[0185] Step 2: The delta values ​​m0-m3 are further quantized. The quantized values ​​are denoted as d0, d1, d2, and d3. The quantized values ​​can be -1, 0, and 1 based on the following quantization process: (a) if m<-N, then d=-1; (b) if -N<=m<=N, then d=0; (c) if m>N, then d=1, where N is called the quantization step size, and example values ​​of N include 4, 8, 12, and 16.

[0186] The quantized values ​​d0-d3 can be used to identify one combination of nonlinear mappings. For example, the CCSO filter of FIG. 8 has four filter taps d0-d3, each of which can have one of three quantized values ​​(e.g., −1, 0, and 1), thus giving a total of three quantized values.4 There are 81 combinations.

[0187] Figures 19A - 19B show a tabular form of 81 exemplary combinations of non - linear mapping in a CCSO filter according to an embodiment. The last column of the table represents the output offset value for each combination. Examples of offset values are integers, such as 0, 1, - 1, 3, - 3, 5, - 5, and - 7.

[0188] The final filtering process of the CCSO filter can be applied as follows.

Number

[0189] <VIII. Improved Inter - Component Sample Offset Filter>

[0190] In a related CCSO filter, when processing the input reconstruction samples, the quantization step size is a fixed value, which can limit the performance of the CCSO filter. Further, the output offset value for each combination of processed input reconstruction samples is a fixed value, which can further limit the performance of the CCSO filter.

[0191] In the present disclosure, the CCSO filter can be defined as a filtering process that uses the reconstruction samples of the first color component (e.g., Y, Cb, or Cr) as input and applies the output to the second color component of the block, which is different from the first color component of the block.

[0192] The input to the nonlinear mapping of the CCSO filter is one or more processed reconstructed samples within a filter support area (or filter support region) of a first color component of the block. When processing the one or more input reconstructed samples, a quantization process can be applied, which can be controlled by a quantization step size N. Once the input reconstructed samples are processed, an output offset value can be read from the nonlinear mapping of the CCSO filter. The output offset value can be applied to a second color component of the block.

[0193] The present disclosure includes a method for improving the performance of a CCSO filter. In the present disclosure, a filter support region (or area) can be defined as the region over which a filtering process, such as a CCSO filter, is performed. In a quantization process, the range of possible sample values ​​can be decomposed into a finite set of intervals (or steps) called quantization intervals. The difference between two quantization intervals can be referred to as the quantization step size.

[0194] According to aspects of the present disclosure, an adaptive quantization step size (e.g., N as described in Chapter VII (Inter-Component Sample Offset Filters)) may be used when processing input reconstructed samples within the filter support region (or area) of the CCSO filter. In some embodiments, the quantization step size may vary based on characteristics of the coding block, video frame, and / or video sequence. Varying the quantization step size can improve overall coding efficiency.

[0195] In one embodiment, the quantization step size N may be a predetermined constant integer. Examples of N include 4, 8, 12, and 16. N may vary for different coding blocks, video frames, or video sequences.

[0196] In one embodiment, the quantization step size N is an integer 2 N , for example, 2, 4, 8, or 16.

[0197] In one embodiment, the quantization step size N can be signaled. The quantization step size N can be signaled in a block level parameter, a slice level parameter, a tile level parameter, or a frame level parameter.

[0198] In one embodiment, given an array of possible quantization step sizes, an index can be signaled to indicate which quantization step size is selected. The index can be signaled in a block level parameter, a slice level parameter, a tile level parameter, a CTU level parameter, a video frame level parameter, or a sequence level parameter.

[0199] In one example, an array of possible quantization step sizes can be {4,8,12,16}, and an index in [0,3] can be signaled to indicate which value in the array is selected.

[0200] In one example, the index can be signaled using a fixed length codeword, eg, {00,01,10,11}.

[0201] In one example, an array of possible quantization step sizes can be {4,8,16}, and an index in [0,2] can be signaled to indicate which value in the array is selected.

[0202] In one example, the index can be signaled using a variable length codeword, for example {0,10,11} or {1,00,01}.

[0203] In one embodiment, the quantization step size N or an index of N can be signaled in a high-level parameter set, such as a decoding parameter set (DPS), a video parameter set (VPS), a sequence level parameter set (SPS), a picture parameter set (PPS), an adaptation parameter set (APS), a slice header, or a picture header.

[0204] According to aspects of the present disclosure, an adaptive offset value can be used based on characteristics of the filter's region of support. In some embodiments, the offset value derived from the non-linear mapping of the CCSO filter can be further scaled based on characteristics of the filter's region of support.

[0205] In one embodiment, the scaling of the offset values ​​may depend on a delta value (e.g., m0-m3) and / or a quantization step size N, where m0-m3 are the delta values ​​between the surrounding samples p0-p3 and the central sample c as described in Chapter VII (Inter-Component Sample Offset Filters). In one embodiment, the scaling of the offset values ​​may depend on a ratio r between the average of the absolute values ​​of m0-m3 and N.

[0206] In one embodiment, the average of the absolute values ​​of m0 through m3 can first be calculated and denoted as m'. The ratio r can be derived as r=m' / N. The offset value derived from the nonlinear mapping can then be scaled by a maximum value between 1 and r, for example max(1,m' / N).

[0207] In one example, d0=1, d1=-1, d2=0, d3=0, and m0=8, m1=-8, m2=3, m3=1. The quantization step size N is 4, and the output offset value s is 3. Therefore, m'=avg(abs(m0)+abs(m1)+abs(m2)+abs(m3))=avg(8+8+3+1)=5, where avg and abs represent the average and absolute operations, respectively. The ratio r=m' / N=5 / 4=1, and the final offset value is s×r=3×1=3.

[0208] In one embodiment, the average m' can be calculated using a subset of the absolute values ​​of m0 through m3, whose corresponding quantized values ​​d0 through d3 are non-zero (e.g., if a quantized value is zero, the corresponding m is excluded from the calculation of m'). The ratio r can be derived as m' / N. The output offset value derived from the non-linear mapping can then be scaled by a maximum value between 1 and r, e.g., max(1,m' / N).

[0209] In one example, d0=1, d1=-1, d2=0, d3=0, and m0=8, m1=-8, m2=3, m3=1. The quantization step size N is 4, and the output offset value s is 3. Therefore, m'=avg(abs(m0)+abs(m1))=avg(8+8)=8, where avg and abs represent the average and absolute operations, respectively. The ratio r=m' / N=8 / 4=2, and the final offset value is s×r=3×2=6.

[0210] In one embodiment, the adaptation of the output offset value may be always enabled (or turned on), i.e., the scaling of the output offset value is always available in the CCSO filter.

[0211] In one embodiment, a syntax element indicating whether to enable adaptation of the output offset value can be signaled, for example, in a block level parameter, a video frame level parameter, a slice level parameter, a tile level parameter, a CTU level parameter, or a sequence level parameter. The syntax element can also be signaled in a high level parameter set (e.g., DPS, VPS, SPS, PPS, or APS), a slice header, a picture header, or a SEI message.

[0212] <IX.フローチャート>

[0213] 20 shows a flow chart outlining an exemplary process (2000) according to an embodiment of the present disclosure. In various embodiments, the process (2000) is performed by processing circuitry such as processing circuitry within the terminal devices (210), (220), (230), and (240), a processing circuitry performing the functionality of the video encoder (303), a processing circuitry performing the functionality of the video decoder (310), a processing circuitry performing the functionality of the video decoder (410), a processing circuitry performing the functionality of the intra prediction module (452), a processing circuitry performing the functionality of the video encoder (503), a processing circuitry performing the functionality of the predictor (535), a processing circuitry performing the functionality of the intra encoder (622), a processing circuitry performing the functionality of the intra decoder (772), etc. In some embodiments, the process (2000) is implemented with software instructions, such that the processing circuitry performs the process (2000) when the processing circuitry executes the software instructions.

[0214] The process (2000) may generally begin at step (S2010), where the process (2000) determines a reconstructed sample of a first color component within a filter support region of a current picture that is part of a coded video sequence. The process (2000) then proceeds to step (S2020).

[0215] In step (S2020), the process (2000) performs a filter operation on the reconstructed samples of the first color component in the filter support region. The quantization step size of the filter operation is set individually for one of the coding block, the video frame, and the video sequence. Then, the process (2000) proceeds to step (S2030).

[0216] In step S2030, the process 2000 reconstructs samples of a second color component in the filter support region based on the output value of the filter process, the second color component being different from the first color component. Then, the process 2000 ends.

[0217] In an embodiment, the quantization step size is a predetermined constant for one of a coding block, a video frame, and a video sequence.

[0218] In an embodiment, the quantization step size is an integer that is a power of two.

[0219] In an embodiment, the quantization step size is one of a plurality of quantization step sizes determined based on an index included in a bitstream corresponding to one of a coding block, a video frame, and a video sequence.

[0220] In an embodiment, the quantization step size is included in a bitstream that corresponds to one of a coding block, a video frame, and a video sequence.

[0221] In an embodiment, the process (2000) determines whether the output values ​​of the filtering operation are scaled based on the reconstructed samples of the first color component within the filter support region. In response to the output values ​​of the filtering operation being scaled, the process (2000) reconstructs samples of the second color component within the filter support region based on the scaled output values ​​of the filtering operation.

[0222] In an embodiment, the process (2000) determines whether the output values ​​of the filtering process are scaled based on a reconstructed sample of a first color component within the filter support region and a syntax element indicating whether scaling of the output values ​​of the filtering process is enabled.

[0223] In an embodiment, the process (2000) determines scaled output values ​​of the filter process based on reconstructed samples of a first color component within the filter support region and a quantization step size.

[0224] <X.コンピュータシステム>

[0225] The techniques described above can be implemented as computer software using computer readable instructions and physically stored on one or more computer readable media. For example, Figure 21 illustrates a computer system (2100) suitable for implementing certain embodiments of the subject matter of this disclosure.

[0226] The computer software can be coded using any suitable machine code or computer language that can be processed by mechanisms such as assembly, compilation, linking, etc. to generate code including instructions that can be executed by one or more computer central processing units (CPUs), graphics processing units (GPUs), etc., directly or through interpretation, microcode execution, etc.

[0227] The instructions may be executed in a variety of computers or components thereof, including, for example, personal computers, tablet computers, servers, smart phones, gaming devices, Internet of Things devices, and the like.

[0228] 21 of the computer system (2100) are exemplary in nature and are not intended to suggest any limitation as to the scope of use or functionality of the computer software implementing the embodiments of the present disclosure. Furthermore, the configuration of components should not be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary embodiment of the computer system (2100).

[0229] The computer system (2100) may include certain human interface input devices. Such human interface input devices may be responsive to input by one or more human users, for example, through sensory input (e.g., keystrokes, swipes, data grabbing actions), audio input (e.g., voice, clapping), visual input (e.g., gestures), olfactory input (not shown). Human interface devices may also be used to capture certain media that are not necessarily directly related to conscious human input, such as sound (e.g., speech, music, ambient sounds), images (e.g., scanned images, photographic images obtained from a digital camera), and video (including, for example, two-dimensional video, three-dimensional video, stereoscopic video).

[0230] The input human interface devices may include one or more of a keyboard (2101), a mouse (2102), a trackpad (2103), a touch screen (2110), a data glove (not shown), a joystick (2105), a microphone (2106), a scanner (2107), and a camera (2108) (only one of which is shown).

[0231] The computer system (2100) may also include certain human interface output devices. Such human interface output devices may stimulate one or more of the senses of a human user through sensory output, for example, sound, light, and smell / taste. Such human interface output devices may include sensory output devices (e.g., sensory feedback via a touch screen (2110), data glove (not shown), or joystick (2105 (although there may also be sensory feedback devices that do not function as input devices)), audio output devices (e.g., speakers (2109), headphones (not shown), visual output devices (e.g., a screen (2110), including a CRT screen, an LCD screen, a plasma screen, an OLED screen, each with or without touch screen input capability, each with or without sensory feedback capability, some of which may be capable of outputting two-dimensional visual output or three or more dimensional output through such means as stereoscopic output, virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown), and printers (not shown)). These visual output devices (e.g., the screen (2110)) may be connected to the system bus (2148) through a graphics adapter (2150).

[0232] The computer system (2100) may also include human accessible storage and associated media such as optical media such as CD / DVD ROM / RW (2120) with media such as CD / DVD (2121), thumb drives (2122), removable hard drives or solid state drives (2123), legacy magnetic media such as tape and floppy disks (not shown), dedicated ROM / ASIC / PLD based devices such as security dongles (not shown), etc.

[0233] Those skilled in the art should also understand that the term "computer-readable medium" as used in connection with the subject matter of this disclosure does not encompass transmission media, carrier waves, or other transitory signals.

[0234] The computer system 2100 may also include a network interface 2154 to one or more communication networks 2155. The one or more communication networks 2155 may be, for example, wireless, wired, or optical. The one or more communication networks 2155 may further be local, wide area, metropolitan area, vehicular and industrial, real-time, delay tolerant, and the like. Examples of the one or more communication networks include local area networks such as Ethernet, cellular networks including WLAN, GSM, 3G, 4G, 5G, LTE, and the like, TV wired or wireless wide area digital networks including cable TV, satellite TV, terrestrial broadcast TV, vehicular and industrial including CANBus, and the like. A particular network generally requires an external network interface to be attached to a particular general purpose data port or peripheral bus 2149 (e.g., a USB port on the computer system 2100). Others are typically integrated into the core of the computer system (2100) by attachment to a system bus as described below (e.g., an Ethernet interface to a PC computer system, or a cellular network interface to a smartphone computer system). Using these networks, the computer system (2100) can communicate with other entities. Such communications may be one-way receive only (e.g., broadcast TV), one-way transmit only (e.g., CANbus to certain CANbus devices), or bidirectional to other computer systems, for example, using local or wide area digital networks. Specific protocols and protocol stacks may be used with each of the above mentioned networks and network interfaces.

[0235] The aforementioned human interface devices, human accessible storage devices, and network interfaces may be attached to a core (2140) of the computer system (2100).

[0236] The cores (2140) may include one or more central processing units (CPUs) (2141), graphics processing units (GPUs) (2142), dedicated programmable processing units (2143) in the form of FPGAs, hardware accelerators (2144) for specific tasks, graphics adapters (2150), etc. These devices may be connected through a system bus (2148), along with read-only memory (ROM) (2145), random access memory (2146), internal mass storage devices (1547) such as internal non-user-accessible hard drives, SSDs, etc. In some computer systems, the system bus (2148) is accessible in the form of one or more physical plugs to allow expansion with additional CPUs, GPUs, etc. Peripherals may be attached directly to the core's system bus (2148) or through a peripheral bus (2149). In an example, a screen (2110) may be connected to the graphics adapter (2150). Peripheral bus architectures include PCI, USB, and the like.

[0237] The CPU (2141), GPU (2142), FPGA (2143), and accelerator (2144) may execute certain instructions that may be combined to generate the aforementioned computer code. The computer code may be stored in a ROM (2145) or a RAM (2146). Temporary data may also be stored in the RAM (2146), while permanent data may be stored, for example, in an internal mass storage device (2147). Rapid storage and retrieval from any of the memory devices may be made possible through the use of a cache memory that may be closely associated with one or more of the CPU (2141), GPU (2142), mass storage device (2147), ROM (2145), RAM (2146), etc.

[0238] The computer-readable medium may bear computer code for performing various computer-implemented operations. The medium and computer code may be those specially designed and constructed for the purposes of the present disclosure, or they may be of the kind well known and available to those skilled in the computer software arts.

[0239] As an example and not by way of limitation, the computer system (2100) having the architecture, and specifically the core (2140), can provide functionality as a result of the processor (including CPU, GPU, FPGA, accelerator, etc.) executing software embodied in one or more tangible computer-readable media. Such computer-readable media can be specific storage of the core (2140) of a non-transitory nature, such as the core's internal mass storage (2147) or ROM (2145), and media associated with user-accessible mass storage as described above. Software implementing various embodiments of the present disclosure can be stored in such devices and executed by the core (2140). The computer-readable media can include one or more memory devices or chips, depending on the particular needs. The software can cause the core (2140) and specifically the processor therein (including CPU, GPU, FPGA, etc.) to perform certain operations or certain portions of certain operations described herein, including defining and modifying data structures stored in RAM (2146) according to software-defined operations. Additionally or alternatively, the computer system may provide functionality as a result of implementation in hardwired or other circuitry (e.g., accelerator (2144)) that can operate in conjunction with or in place of software to perform certain processes or certain portions of certain processes described herein. Reference to software includes logic, and vice versa, where appropriate. Reference to computer-readable medium may include circuitry (such as an integrated circuit (IC)) that stores software for execution, circuitry that implements logic for execution, or both, where appropriate. The present disclosure includes any appropriate combination of hardware and software.

[0240] While this disclosure has described several exemplary embodiments, there are alterations, permutations, and various substitute equivalents, which are encompassed within the scope of this disclosure. It will be apparent to those skilled in the art that numerous systems and methods can be devised that, although not explicitly shown or described herein, embody the principles of the disclosure and thus are encompassed within the spirit and scope of the disclosure.

[0241] Appendix A: Abbreviations ALF: Adaptive Loop Filter AMVP: Advanced Motion Vector Prediction APS: Adaptation Parameter Set ASIC: Application-Specific Integrated Circuit ATMVP: Alternative / Advanced Temporal Motion Vector Prediction AV1: AOMedia Video 1 AV2: AOMedia Video 2 BMS: Benchmark Set BV: Block Vector CANBus: Controller Area Network Bus CB: Coding Block CC-ALF: Cross-Component Adaptive Loop Filter CD: Compact Disc CDEF: Constrained Directional Enhancement Filter CPR: Current Picture Referencing CPU: Central Processing Unit CRT: Cathode Ray Tube CTB: Coding Tree Block CTU: Coding Tree Unit CU: Coding Unit DPB: Decoder Picture Buffer DPCM: Differential Pulse-Code Modulation DPS: Decoding Parameter Set DVD: Digital Video Disc FPGA: Field Programmable Gate Area JCCR: Joint CbCr Residual Coding JVET: Joint Video Exploration Team GOP: Groups of Pictures GPU: Graphics Processing Unit GSM: Global System for Mobile communications HDR: High Dynamic Range HEVC: High Efficiency Video Coding HRD: Hypothetical Reference Decoder IBC: Intra Block Copy IC: Integrated Circuit ISP: Intra Sub-Partitions JEM: Joint Exploration Model LAN: Local Area Network LCD: Liquid-Crystal Display LR: Loop Restoration Filter LRU: Loop Restoration Unit LTE: Long-Term Evolution MPM: Most Probable Mode MV: Motion Vector OLED: Organic Light-Emitting Diode PBs: Prediction Blocks PCI: Peripheral Component Interconnect PDPC: Position Dependent Prediction Combination PLD: Programmable Logic Device PPS: Picture Parameter Set PU: Prediction Unit RAM: Random Access Memory ROM: Read-Only Memory SAO: Sample Adaptive Offset SCC: Screen Content Coding SDR: Standard Dynamic Range SEI: Supplementary Enhancement Information SNR: Signal Noise Ratio SPS: Sequence Parameter Set SSD: Solid-state Drive TU: Transform Unit USB: Universal Serial Bus VPS: Video Parameter Set VUI: Video Usability Information VVC: Versatile Video Coding WAIP: Wide-Angle Intra Prediction

Claims

1. 1. A video decoding method in a decoder, comprising: determining a reconstruction sample of one or more color components in a filter support region of a current picture, the current picture being part of a coded video sequence; determining a category of a reconstruction sample of one or more color components in the filter support region; determining a Inter-Component Sample Offset (CCSO) filter offset value based on a category of reconstructed samples of one or more color components in the filter support region; applying the CCSO filter offset value to reconstructed samples corresponding to the filter region of support; The method includes:

2. 2. The method of claim 1, further comprising: scaling the CCSO filter offset value based on a difference value between a central reconstructed sample of a first color component in the filter support region and each of a plurality of peripheral reconstructed samples of the first color component in the filter support region.

3. 2. The method of claim 1, further comprising scaling the CCSO filter offset value based on a quantization step size of a CCSO filter.

4. 4. The method of claim 3, wherein scaling the CCSO filter offset value comprises: scaling the CCSO filter offset value based on a ratio (r) of (i) an average of absolute values ​​of difference values ​​between a central reconstructed sample of a first color component in the filter support region and each of a plurality of peripheral reconstructed samples of the first color component to (ii) a quantization step size of the CCSO filter.

5. 5. The method of claim 4, wherein scaling the CCSO filter offset value comprises scaling the CCSO filter offset value by max(1,r).

6. 6. The method of claim 5, wherein each of a plurality of surrounding reconstructed samples of the first color component used to calculate the difference value has a non-zero value.

7. 2. The method of claim 1, further comprising determining whether to scale the CCSO filter offset value based on a syntax element indicating whether scaling the CCSO filter offset value is enabled.

8. 8. The method of claim 7, wherein the syntax elements are signaled for any of: each block, each frame, each slice, each tile, each coding tree unit (CTU), or each sequence.

9. 1. An apparatus having a processing circuit, the processing circuit comprising: determining a reconstruction sample of one or more color components in a filter support region of a current picture, the current picture being part of a coded video sequence; determining a category of a reconstruction sample of one or more color components in the filter support region; determining a Inter-Component Sample Offset (CCSO) filter offset value based on a category of reconstructed samples of one or more color components in the filter support region; applying the CCSO filter offset value to reconstructed samples corresponding to the filter region of support; The apparatus is configured to:

10. 10. The apparatus of claim 9, wherein the processing circuitry is further configured to scale the CCSO filter offset value based on a difference value between a central reconstructed sample of a first color component in the filter support region and each of a plurality of peripheral reconstructed samples of the first color component in the filter support region.

11. 10. The method of claim 9, wherein the processing circuitry is further configured to perform the step of scaling the CCSO filter offset value based on a quantization step size of a CCSO filter.

12. 12. The apparatus of claim 11 , wherein the processing circuitry is further configured to perform the step of scaling the CCSO filter offset value based on a ratio (r) of (i) an average of absolute values ​​of difference values ​​between a central reconstructed sample of a first color component in the filter support region and each of a plurality of peripheral reconstructed samples of the first color component to (ii) a quantization step size of the CCSO filter.

13. 13. The apparatus of claim 12, wherein the processing circuitry is further configured to: scale the CCSO filter offset value by max(1,r).

14. 14. The apparatus of claim 13, wherein each of a plurality of surrounding reconstructed samples of the first color component used to calculate the difference value has a non-zero value.

15. 10. The apparatus of claim 9, wherein the processing circuitry is further configured to determine whether to scale the CCSO filter offset value based on a syntax element indicating whether scaling the CCSO filter offset value is enabled.

16. 16. The apparatus of claim 15, wherein the syntax elements are signaled for any of: each block, each frame, each slice, each tile, each coding tree unit (CTU), or each sequence.

17. 1. A non-transitory computer-readable storage medium storing instructions that, when executed by at least one processor, cause the at least one processor to perform a method, the method comprising: determining a reconstruction sample of one or more color components in a filter support region of a current picture, the current picture being part of a coded video sequence; determining a category of a reconstruction sample of one or more color components in the filter support region; determining a Inter-Component Sample Offset (CCSO) filter offset value based on a category of reconstructed samples of one or more color components in the filter support region; applying the CCSO filter offset value to reconstructed samples corresponding to the filter region of support; A storage medium including

18. 20. The storage medium of claim 17, wherein the method further comprises scaling the CCSO filter offset value based on a difference value between a central reconstructed sample of a first color component in the filter support region and each of a plurality of peripheral reconstructed samples of the first color component in the filter support region.

19. 20. The storage medium of claim 17, the method further comprising scaling the CCSO filter offset value based on a quantization step size of a CCSO filter.

20. 20. The storage medium of claim 19, wherein the step of scaling the CCSO filter offset value further includes the step of scaling the CCSO filter offset value based on (i) an average of absolute values ​​of difference values ​​between a central reconstructed sample of a first color component in the filter support region and each of a plurality of peripheral reconstructed samples of the first color component, and (ii) a ratio (r) to a quantization step size of the CCSO filter.

21. A computer program product which, when run on a computer, causes the computer to carry out the method according to any one of claims 1 to 8.

Citation Information

Patent Citations

  • Moving picture encoder

    JP1992273687A

  • Image decoder

    JP2007129318A

  • conditional overlap conversion

    JP2007506293A

  • Adaptive switching of color space, color sampling rate and / or color depth

    JP2017512439A

  • Image processing device, and method

    WO2013154028A1