Method and apparatus for video filtering
Patent Information
- Application Number
- JP2024075095
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2021-06-28
- Filing Date
- 2024-05-07
- Publication Date
- 2025-02-18
- Estimated Expiration
- 2041-06-29
AI Technical Summary
Existing video coding technologies face challenges in efficiently reducing redundancy and improving compression efficiency, particularly in handling intra-prediction modes and motion vector prediction, which can lead to increased bit usage for less likely directions and inefficient data representation.
The proposed solution involves separate coding and filtering techniques for luma and chroma components, using loop filters like ALF and CDEF, and cross-component filtering to enhance compression efficiency by adapting filter configurations based on color component differences and enabling/disabling specific filters based on intra-block copy modes.
This approach improves video coding efficiency by optimizing filter configurations for luma and chroma components, reducing bit usage for less likely directions, and enhancing compression performance.
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
[Technical field]
[0001] Incorporation by Reference This application claims priority to U.S. patent application Ser. No. 17 / 360761, filed Dec. 16, 2020, entitled "METHOD AND APPARATUS FOR VIDEO FILTERING," which in turn claims priority to U.S. provisional application Ser. No. 63 / 126423, entitled "HARMONIZED SCHEME BETWEEN® SEMI DECOUPLED PARTITIONING AND LOOP FILTER," filed Jun. 28, 2021, the entire contents of which are incorporated herein by reference.
[0002] This disclosure describes embodiments that relate generally to video coding. [Background technology]
[0003] The "Background" discussion provided herein is intended to provide a general background to the present disclosure. The work of the inventors named herein, to the extent described in this Background, along with aspects of the description that would not ordinarily be considered prior art at the time of filing, are not admitted, expressly or impliedly, 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 having spatial dimensions of, for example, 1920x1080 luma samples and associated chroma samples. The sequence of pictures can have a fixed or variable picture rate (also informally called "frame rate") of, for example, 60 pictures per second or 60 Hz. Uncompressed video has significant bitrate requirements. For example, 1080p60 4:2:0 video (1920x1080 luma sample resolution at 60 Hz frame rate) at 8 bits per sample requires a bandwidth approaching 1.5 Gbit / s. One hour of such video requires more than 600 GBytes of storage space.
[0005] One goal of video coding and decoding may be to reduce redundancy in the input video signal through compression. Compression helps to reduce the aforementioned bandwidth and / or storage space requirements, in some cases by more than one order of magnitude. Both lossless and lossy compression, as well as combinations thereof, may be used. Lossless compression refers to techniques that allow an exact copy of the original signal to be reconstructed from the compressed original signal. When lossy compression is used, the reconstructed signal may not be identical to the original signal, but the distortion between the original and reconstructed signals is small enough to make the reconstructed signal useful for its intended application. For video, lossy compression is widely adopted. The amount of acceptable distortion varies from application to application. For example, users of certain consumer streaming applications can tolerate higher distortion than users of television distribution applications. The achievable compression ratio may reflect that the greater the acceptable / tolerable distortion, the higher the compression ratio.
[0006] Video encoders and decoders can utilize techniques from a number of broad categories, including, for example, motion compensation, transform, quantization, and entropy coding.
[0007] Video codec technologies may 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 all blocks of samples are 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 of a coded video bitstream and video session or as still images. Samples of an intra block may be subjected to a transform, and the transform coefficients may be quantized before entropy coding. Intra prediction may be a technique that minimizes sample values in a pre-transformed domain. In some cases, the smaller the DC value and the smaller the AC coefficients after the transform, the fewer bits are required for a given quantization step size to represent the block after entropy coding.
[0008] Conventional intra-coding, e.g., as known from MPEG-2 generation coding techniques, does not use intra-prediction. However, some newer video compression techniques include techniques that attempt intra-prediction, e.g., from surrounding sample data and / or metadata obtained during encoding and / or decoding of a block of data that is spatially adjacent and located further in the decoding order. Such techniques are hereinafter referred to as "intra-prediction" techniques. It should be noted that, at least in some cases, intra-prediction uses only reference data from the current picture being reconstructed, and not from reference pictures.
[0009] Intra prediction may exist in different forms. If more than one such technique is available for a given video coding technique, the technique in use may be coded in an intra prediction mode. In some cases, the mode may have sub-modes and / or parameters, which may be coded separately or included in the mode codeword. Which codeword is used for a given mode / sub-mode and / or parameter combination may affect the coding efficiency gain from intra prediction, and so may the entropy coding technique used to convert the codeword into the bitstream.
[0010] A specific mode of intra prediction was introduced in H.264 and improved in H.265 and in newer coding techniques such as the Joint Search Model (JEM), Versatile Video Coding (VVC) and Benchmark Set (BMS). A predictor block can be formed using neighboring sample values belonging to already available samples. The sample values of the neighboring samples are copied to the predictor block according to the direction. The reference to the direction in use can be coded in the bitstream or predicted itself.
[0011] Referring to FIG. 1A, shown at the bottom right is a subset of 9 prediction directions known from the 33 possible prediction directions (corresponding to the 33 angle modes of the 35 intra modes) of H.265. The point (101) where the arrows converge 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 and at an angle of 45 degrees from the horizontal axis. 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 axis.
[0012] Continuing to refer to FIG. 1A, at the top left is shown a square block (104) of 4×4 samples (indicated by a thick dashed line). 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 in the Y dimension (from the top) and the first sample in the X dimension (from the left). Similarly, sample S44 is the fourth sample in the block (104) in both the Y and X dimensions. S44 is at the bottom right because the block is 4×4 samples in size. Also shown are reference samples that follow a similar numbering scheme. The reference samples are labeled with 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 adjacent to the block being reconstructed. Therefore, there is no need to use negative values.
[0013] Intra-picture prediction can work by copying reference sample values from the appropriate neighboring samples in the signaled prediction direction. For example, suppose the coded video bitstream includes signaling indicating a prediction direction that coincides with the arrow (102) for this block (i.e., the sample is predicted from one or more prediction samples in the upper right corner at an angle of 45 degrees from the horizontal axis). 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, especially when the orientation is not evenly divided by 45 degrees, the values of multiple reference samples may be combined, for example by interpolation, to calculate the reference sample.
[0015] As video coding techniques have developed, the number of possible directions has increased. In H.264 (2003), nine different directions could be represented. In H.265 (2013), this increased to 33, and JEM / VVC / BMS can support up to 65 directions at the time of disclosure. Experiments have been performed to identify the most likely directions, and certain techniques in entropy coding are used to represent more likely directions with a smaller number of bits, accepting certain penalties for less likely directions. Furthermore, the direction itself may be predicted from neighboring directions used in neighboring, already decoded blocks.
[0016] FIG. 1B shows a schematic diagram (180) illustrating 65 intra prediction directions with JEM to illustrate the increasing number of prediction directions over time.
[0017] The mapping of intra-prediction direction bits in a coded video bitstream that represent directions may vary from one video coding technique to another and may range, for example, from simple direct mapping of prediction directions to intra-prediction modes or codewords 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. Because the goal of video compression is to reduce redundancy, in a well-performing video coding technique, these less likely directions are represented by more bits than the more likely directions.
[0018] Motion compensation may be a lossy compression technique and may refer to techniques in which blocks of sample data from a previously reconstructed picture or part thereof (reference picture) are used to predict 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, where the third dimension indicates the reference picture being used (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 an MV associated with another region of sample data that is spatially adjacent to the region being reconstructed and precedes that MV in decoding order. Doing so can significantly reduce the amount of data required to code the MV, thereby removing redundancy and enhancing compression. For example, when coding an input video signal derived from a camera (called "natural video"), MV prediction can work well because there is a statistical probability that a region larger than the region to which a single MV applies moves in a similar direction and can therefore be predicted using similar motion vectors, possibly derived from MVs of neighboring regions. As a result, the MV detected for a particular region is similar or identical to the MV predicted from the surrounding MVs, and after entropy coding, can be represented with fewer bits than if the MV were coded 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, the MV prediction itself can be lossy, e.g., due to rounding errors when computing a predictor from several surrounding MVs.
[0020] H.265 / HEVC (ITU-T Recommendation H.265, "High Efficiency Video Coding", December 2016) describes various MV prediction mechanisms. Among the many MV prediction mechanisms provided by H.265, the one described here is a technique hereafter referred to as "spatial merging".
[0021] Referring to Figure 2, a current block (201) may contain samples found in a motion search process by the encoder that are predictable from a previous block of the same size but spatially shifted. Instead of coding its MV directly, the MV may be derived from metadata associated with one or more reference pictures, e.g., from the most recent reference picture (in decoding order), using the MV associated with any one of five surrounding samples denoted A0, A1, B0, B1 and B2 (202 to 206, respectively). In H.265, MV prediction may use predictors from the same reference picture as neighboring blocks use. Summary of the Invention
[0022] Aspects of the present disclosure provide methods and apparatus for video encoding / decoding. In some examples, the apparatus for video decoding includes a processing circuit that determines separated coding information for a first color component and a second color component of a block based on decoded information in a coded video bitstream. The processing circuit then reconstructs first samples of the first color component at positions within the block based on a first loop filter configuration and reconstructs second samples of the second color component at positions within the block based on a second loop filter configuration different from the first loop filter configuration.
[0023] In some embodiments, the separated coding information includes enable / disable differences in intra-block copy modes for luma and chroma components. In some embodiments, the separated coding information includes separate partitioning structures for the luma and chroma components.
[0024] In some embodiments, the processing circuitry enables at least one of a deblocking filter, a constrained directional emphasis filter (CDEF), a loop restoration filter, a local sample offset (LSO) filter, and a cross-component sample offset (CCSO) filter in one of the first loop filter configuration and the second loop filter configuration, and disables the deblocking filter, the constrained directional emphasis filter (CDEF), the loop restoration filter, the local sample offset (LSO) filter, and the cross-component sample offset (CCSO) filter in the other of the first loop filter configuration and the second loop filter configuration.
[0025] In one embodiment, the processing circuitry enables the deblocking filter, the constrained directional emphasis filter (CDEF), the loop reconstruction filter, the local sample offset (LSO) filter, and the cross component sample offset (CCSO) filter in the second loop filter configuration associated with a chroma component in response to disabling an intrablock copy mode for the chroma component and enabling the intrablock copy mode for the luma component.
[0026] In another embodiment, the processing circuitry enables one of the local sample offset (LSO) filter and the cross component sample offset (CCSO) filter in the second loop filter configuration associated with a chroma component in response to disabling an intrablock copy mode for the chroma component and enabling the intrablock copy mode for the luma component.
[0027] In another embodiment, the processing circuitry enables both the constrained directional emphasis filter (CDEF) and the cross component sample offset (CCSO) filter in the second loop filter configuration associated with a chroma component in response to disabling an intrablock copy mode for the chroma component and enabling the intrablock copy mode for the luma component.
[0028] In some examples, the processing circuit determines the separated coding information for the first color component and the second color component in the block based on enable / disable signals for the first color component and the second color component in at least one of a block level, a video parameter set (VPS), a sequence parameter set (SPS), a picture parameter set (PPS), an adaptive parameter set (APS), a slice header, and a tile header.
[0029] In some examples, the processing circuitry decodes from the coded video bitstream a first enable / disable flag associated with a luma component and decodes from the coded video bitstream a second enable / disable flag associated with a chroma component, and determines the separated coding information for the luma component and the chroma component based on the first enable / disable flag and the second enable / disable flag.
[0030] In some examples, a processing circuit decodes from the coded video bitstream a first enable / disable flag associated with a luma component, decodes from the coded video bitstream a second enable / disable flag associated with a first chroma component, and decodes from the coded video bitstream a third enable / disable flag associated with a second chroma component, and determines the separated coding information for the luma component, the first chroma component, and the second chroma component based on the first enable / disable flag, the second enable / disable flag, and the third enable / disable flag.
[0031] In some embodiments, the processing circuitry decodes a flag associated with a particular loop filter from a higher level syntax than the block, and applies the particular loop filter to the luma component in response to the flag being true, regardless of the separated coding information or intra-block copy mode.
[0032] Aspects of the present disclosure also provide a non-transitory computer-readable medium storing instructions that, when executed by a computer, cause the computer to perform a method for video decoding. [Brief description of the drawings]
[0033] Further features, nature and various advantages of the disclosed subject matter will become more apparent from the following detailed description and the accompanying drawings. [Figure 1A] FIG. 2 is a schematic diagram of an example subset of intra-prediction modes. [Figure 1B] FIG. 2 is an illustration of an exemplary intra-prediction direction. [Diagram 2] FIG. 2 is a schematic diagram of a current block and its surrounding spatial merge candidates in one example. [Diagram 3] FIG. 3 is a schematic diagram of a simplified block diagram of a communication system (300) according to one embodiment. [Figure 4] FIG. 4 is a schematic diagram of a simplified block diagram of a communication system (400) according to one embodiment. [Diagram 5] FIG. 2 is a schematic diagram of a simplified block diagram of a decoder according to one embodiment; [Figure 6] FIG. 2 is a schematic diagram of a simplified block diagram of an encoder according to an embodiment; [Figure 7] 4 shows a block diagram of an encoder according to another embodiment; [Figure 8] 4 shows a block diagram of a decoder according to another embodiment; [Figure 9] 1 illustrates example filter shapes according to embodiments of the present disclosure. [Figure 10A] 13 illustrates an example of sub-sampled positions used to calculate gradients according to an embodiment of the present disclosure. [Figure 10B] 13 illustrates an example of sub-sampled positions used to calculate gradients according to an embodiment of the present disclosure. [Figure 10C]13 illustrates an example of sub-sampled positions used to calculate gradients according to an embodiment of the present disclosure. [Figure 10D] 13 illustrates an example of sub-sampled positions used to calculate gradients according to an embodiment of the present disclosure. [Figure 11A] 1 illustrates an example of a virtual boundary filtering process according to an embodiment of the present disclosure. [Figure 11B] 1 illustrates an example of a virtual boundary filtering process according to an embodiment of the present disclosure. [Figure 12A] 1 illustrates an example of a symmetric padding operation with a virtual border according to an embodiment of the present disclosure. [Figure 12B] 1 illustrates an example of a symmetric padding operation with a virtual border according to an embodiment of the present disclosure. [Figure 12C] 1 illustrates an example of a symmetric padding operation with a virtual border according to an embodiment of the present disclosure. [Figure 12D] 1 illustrates an example of a symmetric padding operation with a virtual border according to an embodiment of the present disclosure. [Figure 12E] 1 illustrates an example of a symmetric padding operation with a virtual border according to an embodiment of the present disclosure. [Figure 12F] 1 illustrates an example of a symmetric padding operation with a virtual border according to an embodiment of the present disclosure. [Figure 13] 1 illustrates an example of a segmentation of a picture according to some embodiments of the present disclosure. [Figure 14] 4 shows quadtree division patterns of pictures in some examples. [Figure 15] 1 illustrates a cross-component filter according to an embodiment of the present disclosure. [Figure 16] 1 illustrates an example of a filter shape according to an embodiment of the present disclosure. [Figure 17] 1 illustrates an example syntax for a cross-component filter according to some embodiments of the present disclosure. [Figure 18A] 1 illustrates an example position of a chroma sample relative to a luma sample according to an embodiment of the present disclosure. [Figure 18B] 1 illustrates an example position of a chroma sample relative to a luma sample according to an embodiment of the present disclosure. [Figure 19]1 illustrates an example of direction searching according to an embodiment of the present disclosure. [Figure 20] 13 shows examples illustrating subspace projection in some cases. [Figure 21] 1 illustrates a table of multiple sample adaptive offset (SAO) types according to one embodiment of the present disclosure. [Figure 22] 13 shows example patterns for pixel classification at edge offset in some examples. [Figure 23] 13 shows a table of pixel classification rules for edge offset in some examples. [Figure 24] 13 shows an example of the syntax that may be signaled: [Diagram 25] 1 illustrates an example of a filter support area according to some embodiments of the present disclosure. [Figure 26] 13 illustrates another example of a filter support area according to some embodiments of the present disclosure. [Figure 27A] 1 shows a table with 81 combinations according to one embodiment of the present disclosure. [Figure 27B] 1 shows a table with 81 combinations according to one embodiment of the present disclosure. [Figure 27C] 1 shows a table with 81 combinations according to one embodiment of the present disclosure. [Figure 28] 1 shows an example of a coding tree structure for luma and chroma components. [Figure 29] 1 shows a flowchart outlining a process according to one embodiment of the present disclosure. [Diagram 30] FIG. 1 is a schematic diagram of a computer system according to one embodiment. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0034] FIG. 3 illustrates a simplified block diagram of a communication system (300) according to an embodiment of the present disclosure. The communication system (300) includes a plurality of terminal devices capable of communicating with each other, for example, via a network (350). For example, the communication system (300) includes a first pair of terminal devices (310) and (320) interconnected via the network (350). In the example of FIG. 3, the first pair of terminal devices (310) and (320) perform unidirectional transmission of data. For example, the terminal device (310) may code video data (e.g., a stream of video pictures captured by the terminal device (310)) for transmission to the other terminal device (320) via the network (350). The encoded video data may be transmitted in the form of one or more coded video bitstreams. The terminal device (320) may receive the coded video data from the network (350), decode the coded video data to reconstruct the video pictures, and display the video pictures according to the reconstructed video data. One-way data transmission may be common, such as in media distribution applications.
[0035] In another example, the communication system (300) includes a second pair of terminal devices (330) and (340) performing a bidirectional transmission of coded video data, such as may occur during a video conference. In the case of a bidirectional transmission of data, in one example, each of the terminal devices (330) and (340) may code video data (e.g., a stream of video pictures captured by the terminal device) for transmission to the other of the terminal devices (330) and (340) over the network (350). One of the terminal devices (330) and (340) may receive the coded video data transmitted by the other of the terminal devices (330) and (340), 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.
[0036] In the example of FIG. 3, the terminal devices (310), (320), (330), and (340) may be depicted as a server, a personal computer, and a smartphone, although the principles of the present disclosure are not so limited. Embodiments of the present disclosure find application in laptop computers, tablet computers, media players, and / or dedicated video conferencing equipment, and the like. The network (350) represents any number of networks that convey coded video data between the terminal devices (310), (320), (330), and (340), including, for example, wired and / or wireless communication networks. The communication network (350) may exchange data over circuit-switched and / or packet-switched channels. Exemplary networks include telecommunications networks, local area networks, wide area networks, and / or the Internet. For purposes of this discussion, the architecture and topology of the network (350) may not be important to the operation of the present disclosure, unless otherwise described herein below.
[0037] 4 shows an arrangement of a video encoder and a video decoder in a streaming environment as an example of an application of the disclosed subject matter. The disclosed subject matter is equally applicable to other video-enabled applications including, for example, video conferencing, digital TV, and storage of compressed video on digital media including CDs, DVDs, memory sticks, etc.
[0038] The streaming system may include a capture subsystem (413) that may include a video source (401), such as a digital camera that creates a stream of uncompressed video pictures (402). In one example, the stream of video pictures (402) includes samples captured by a digital camera. The stream of video pictures (402), shown in bold lines to emphasize the high amount of data compared to the encoded video data (404) (or coded video bitstream), may be processed by an electronic device (420) that includes a video encoder (403) coupled to the video source (401). The video encoder (403) 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 (404) (or encoded video bitstream (404)), shown in thin lines to emphasize the lower amount of data compared to the stream of video pictures (402), may be stored in a streaming server (405) for future use. One or more streaming client subsystems, such as the client subsystems (406) and (408) of FIG. 4, can access the streaming server (405) to retrieve copies (407) and (409) of the encoded video data (404). The client subsystem (406) can include, for example, a video decoder (410) in an electronic device (430). The video decoder (410) decodes the incoming copy (407) of the encoded video data and creates an outgoing stream of video pictures (411) that can be rendered on a display (412) (e.g., a display screen) or other rendering device (not shown). In some streaming systems, the encoded video data (404), (407), and (409) (e.g., a video bitstream) can be encoded according to a particular video coding / compression standard. Examples of these standards include ITU-T Recommendation H.265.In one example, the evolving video coding standard is informally known as Versatile Video Coding (VVC), and the disclosed subject matter may be used in the context of VVC.
[0039] Additionally, the electronic devices (420) and (430) may include other components (not shown). For example, the electronic device (420) may include a video decoder (not shown), and the electronic device (430) may include a video encoder (not shown).
[0040] 5 shows a block diagram of a video decoder (510) according to an embodiment of the present disclosure. The video decoder (510) can be included in an electronic device (530). The electronic device (530) can include a receiver (531) (e.g., a receiving circuit). The video decoder (510) can be used in place of the video decoder (410) in the example of FIG. 4.
[0041] The receiver (531) may receive one or more coded video sequences to be decoded by the video decoder (510), and in the same or another embodiment may receive one coded video sequence at a time, with the decoding of each coded video sequence being independent of the other coded video sequences. The coded video sequences may be received from a channel (501), which may be a hardware / software link to a storage device that stores the encoded video data. The receiver (531) may receive the encoded video data along with other data, such as coded audio data and / or auxiliary data streams, that may be forwarded to a respective using entity (not shown). The receiver (531) may separate the coded video sequences from the other data. To prevent network jitter, a buffer memory (515) may be coupled between the receiver (531) and the entropy decoder / parser (520) (hereinafter "parser (520)"). In certain applications, the buffer memory (515) is part of the video decoder (510). In other cases, the buffer memory (515) may be external to the video decoder (510) (not shown). In still other cases, there may be a buffer memory (not shown) external to the video decoder (510) to, for example, prevent network jitter, and yet another buffer memory (515) internal to the video decoder (510) to, for example, handle playback timing. When the receiver (531) receives data from a store / forward device with sufficient bandwidth and controllability, or from an isosynchronous network, the buffer memory (515) may not be needed or may be smaller. For use with best-effort packet networks such as the Internet, the buffer memory (515) may be needed, and 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 (510).
[0042] The video decoder (510) may include a parser (520) that reconstructs symbols (521) from the coded video sequence. These categories of symbols include information used to manage the operation of the video decoder (510) and potentially include information to control a rendering device such as a rendering device (512) (e.g., a display screen) that is not an integral part of the electronic device (530) but may be coupled to the electronic device (530) as shown in FIG. 5. The control information for the rendering device may be in the form of auxiliary enhancement information (SEI messages) or video usability information (VUI) parameter set fragments (not shown). The parser (520) may parse / entropy decode the received coded video sequence. The coding of the coded video sequence may be aligned with a video coding technique or standard and may follow various principles including variable length coding, Huffman coding, arithmetic coding with or without context sensitivity, etc. The parser (520) may extract a set of subgroup parameters for at least one subgroup of pixels in a video decoder from the coded video sequence based on the at least one parameter corresponding to the group. The subgroup may include a group of pictures (GOP), a picture, a tile, a slice, a macroblock, a coding unit (CU), a block, a transform unit (TU), a prediction unit (PU), etc. The parser (520) may also extract information such as transform coefficients, quantization parameter values, motion vectors, etc. from the coded video sequence.
[0043] The parser (520) can perform entropy decoding / parsing operations on the video sequence received from the buffer memory (515) to produce symbols (521).
[0044] The reconstruction of the symbols (521) can involve several different units, depending on the type of coded video picture or part thereof (e.g., inter and intra pictures, inter and intra blocks) and other factors. Which units are involved and how can be controlled by subgroup control information parsed by the parser (520) from the coded video sequence. The flow of such subgroup control information between the parser (520) and the following units is not shown for clarity.
[0045] In addition to the functional blocks already mentioned, the video decoder (510) may be conceptually subdivided into several functional units as described below. In an actual implementation operating within 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.
[0046] The first unit is a scalar / inverse transform unit (551), which receives control information from the parser (520) including the transform to be used, block size, quantization factor, quantization scaling matrix, etc., as well as the quantized transform coefficients as symbols (521). The scalar / inverse transform unit (551) can output blocks containing sample values that can be input to an aggregator (555).
[0047] In some cases, the output samples of the scaler / inverse transform unit (551) may relate 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 portion of the current picture. Such prediction information may be provided by an intra-picture prediction unit (552). In some cases, the intra-picture prediction unit (552) generates a block of the same size and shape as the block being reconstructed using surrounding already reconstructed information retrieved from a current picture buffer (558). The current picture buffer (558) buffers, for example, a partially reconstructed current picture and / or a fully reconstructed current picture. The aggregator (555) adds, possibly on a sample-by-sample basis, the prediction information generated by the intra-prediction unit (552) to the output sample information provided by the scaler / inverse transform unit (551).
[0048] In other cases, the output samples of the scaler / inverse transform unit (551) may relate to an inter-coded, potentially motion-compensated block. In such cases, the motion compensated prediction unit (553) may access the reference picture memory (557) to retrieve samples used for prediction. After the retrieved samples are motion compensated according to the symbols (521) related to the block, these samples may be added to the output of the scaler / inverse transform unit (551) by the aggregator (555) to generate output sample information (in this case referred to as residual samples or residual signals). The addresses in the reference picture memory (557) from which the motion compensated prediction unit (553) retrieves prediction samples may be controlled by motion vectors available to the motion compensated prediction unit (553), for example in the form of symbols (521) that may have X, Y and reference picture components. Motion compensation may also include interpolation of sample values retrieved from the reference picture memory (557) when sub-sample accurate motion vectors are in use, motion vector prediction mechanisms, etc.
[0049] The output samples of the aggregator (555) may be subjected to various loop filtering techniques in a loop filter unit (556). Video compression techniques may include in-loop filter techniques that may be controlled by parameters made available to the loop filter unit (556) as symbols (521) from the parser (520) contained in the coded video sequence (also called a coded video bitstream), and that may be responsive to previously reconstructed loop filtered sample values as well as responsive to meta-information obtained during decoding of the coded picture or previous portion (in decoding order) of the coded video sequence.
[0050] The output of the loop filter unit (556) may be a sample stream that can be output to a rendering device (512) and also stored in a reference picture memory (557) for use in future inter-picture prediction.
[0051] 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 (520)), the current picture buffer (558) can become part of the reference picture memory (557), and a new current picture buffer can be reallocated before beginning reconstruction of the next coded picture.
[0052] The video decoder (510) may perform decoding operations according to a given video compression technique of a standard, such as ITU-T Recommendation H.265. The coded video sequence may comply with the syntax specified by the video compression technique or standard being used, in the sense that the coded video sequence complies with both the syntax of the video compression technique or standard and the profile documented in the video compression technique or standard. In particular, the profile may select certain tools from all tools available in the video compression technique or standard as tools available in the profile. Compliance also requires that the complexity of the coded video sequence be within the range limited by the level of the video compression technique or standard. In some cases, the maximum picture size, maximum frame rate, maximum reconstruction sample rate (e.g., measured in megasamples per second), maximum reference picture size, etc. are limited by the level. The limits set by the level may in some cases be further limited by the specification of a hypothetical reference decoder (HRD) and metadata for HRD buffer management signaled in the coded video sequence.
[0053] In one embodiment, the receiver (531) can receive additional (redundant) data along with the encoded video. The additional data may be included as part of the coded video sequence. The additional data may be used by the video decoder (510) to properly decode the data and / or 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.
[0054] 6 shows a block diagram of a video encoder (603) according to an embodiment of the present disclosure. The video encoder (603) is included in an electronic device (620). The electronic device (620) includes a transmitter (640) (e.g., a transmission circuit). The video encoder (603) can be used in place of the video encoder (403) in the example of FIG. 4.
[0055] The video encoder (603) can receive video samples from a video source (601) (which is not part of the electronic device (620) in the example of FIG. 6) that can capture video images to be coded by the video encoder (603). In another example, the video source (601) is part of the electronic device (620).
[0056] The video source (601) may provide a source video sequence to be coded by the video encoder (603) in the form of a digital video sample stream that may be of any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, etc.), any color space (e.g., BT.601 Y CrCB, RGB, etc.), and any suitable sampling structure (e.g., Y CrCb 4:2:0, Y CrCb 4:4:4). In a media delivery system, the video source (601) may be a storage device that stores pre-prepared video. In a video conferencing system, the video source (601) 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 sequence, give the impression of motion. The pictures themselves may be organized as a spatial array of pixels, each of which may contain one or more samples depending on the sampling structure, color space, etc., in use. Those skilled in the art can easily understand the relationship between pixels and samples. The following discussion focuses on samples.
[0057] According to one embodiment, the video encoder (603) can code and compress pictures of a source video sequence into a coded video sequence (643) in real time or under any other time constraint required by the application. Enforcing an appropriate coding rate is one of the functions of the controller (650). In some embodiments, the controller (650) controls and is operatively coupled to other functional units described below. For clarity, couplings are not shown. Parameters set by the controller (650) can include rate control related parameters (picture skip, quantization, lambda value for rate distortion optimization techniques, ...), picture size, group of pictures (GOP) layout, maximum motion vector search range, etc. The controller (650) can be configured with other appropriate functions for the video encoder (603) optimized for a particular system design.
[0058] In some embodiments, the video encoder (603) is configured to operate in a coding loop. As an oversimplified explanation, in one example, the coding loop can include a source coder (630) (e.g., responsible for creating symbols, such as a symbol stream based on an input picture to be coded and reference pictures) and a (local) decoder (633) embedded in the video encoder (603). The decoder (633) reconstructs the symbols to create sample data in a similar manner as the (remote) decoder does (since any compression between the symbols and the coded video 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 (634). The decoding of the symbol stream results in bit-exact results regardless of the location of the decoder (local or remote), so the contents of the reference picture memory (634) are also bit-exact 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 the prediction during decoding. This basic principle of reference picture synchrony (and the drift that occurs when synchrony cannot be maintained, e.g., due to channel errors) is also used in several related technologies.
[0059] The operation of the "local" decoder (633) may be similar to the operation of a "remote" decoder, such as the video decoder (510), already described in detail above in connection with Figure 5. However, with brief reference also to Figure 5, because symbols are available and the encoding / decoding of symbols into a coded video sequence by the entropy coder (645) and parser (520) may be lossless, the entropy decoding portion of the video decoder (510), including the buffer memory (515) and parser (520), may not be fully implemented in the local decoder (633).
[0060] As can be seen, any decoder techniques other than parsing / entropy decoding present in a decoder must necessarily be present in a corresponding encoder in substantially the same functional form. For this reason, the disclosed subject matter focuses on the operation of the decoder. A description of the encoder techniques can be omitted, since they are the inverse of the decoder techniques described generically. Only in certain areas are more detailed descriptions necessary, and are provided below.
[0061] In operation, in some examples, the source coder (630) 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 manner, the coding engine (632) codes differences between pixel blocks of the input picture and pixel blocks of the reference pictures that may be selected as prediction references for the input picture.
[0062] The local video decoder (633) may decode the coded video data of pictures that may be designated as reference pictures based on symbols created by the source coder (630). The operation of the coding engine (632) may advantageously be a lossy process. When the coded video data may be decoded by a video decoder (not shown in FIG. 6), the reconstructed video sequence may be a replica of the source video sequence, usually with some errors. The local video decoder (633) may replicate the decoding process that may be performed on the reference pictures by the video decoder and store the reconstructed reference pictures in a reference picture cache (634). In this way, the video encoder (603) may locally store copies of reconstructed reference pictures that have common content (no transmission errors) with the reconstructed reference pictures obtained by the far-end video decoder.
[0063] The predictor (635) can perform the prediction search of the coding engine (632). That is, for a new picture to be coded, the predictor (635) can search the reference picture memory (634) for sample data (as candidate reference pixel blocks) or specific metadata that can serve as suitable prediction criteria for the new picture, such as the motion vectors of the reference picture, block shapes, etc. The predictor (635) can operate on a sample block / pixel block basis to find a suitable prediction criteria. In some cases, as determined by the search results obtained by the predictor (635), the input picture may have prediction criteria drawn from multiple reference pictures stored in the reference picture memory (634).
[0064] The controller (650) can manage the coding operations of the source coder (630), including, for example, setting the parameters and subgroup parameters used to encode the video data.
[0065] The output of all the aforementioned functional units can be entropy coded by an entropy coder (645), 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.
[0066] The transmitter (640) can buffer the coded video sequence created by the entropy coder (645) in preparation for transmission over a communication channel (660), which can be a hardware / software link to a storage device that stores the encoded video data. The transmitter (640) can merge the coded video data from the video encoder (603) with other data to be transmitted, such as coded audio data and / or auxiliary data streams (sources not shown).
[0067] The controller (650) may manage the operation of the video encoder (603). During coding, the controller (650) may assign a particular coded picture type to each coded picture, which may affect the coding techniques that may be applied to the respective picture. For example, pictures may often be assigned as any of the following picture types:
[0068] An Intra picture (I-picture) may be one that can be coded and decoded without using any other picture in a sequence as a source of prediction. Some video codecs allow different types of Intra pictures, including, for example, Independent Decoder Refresh ("IDR") pictures. Those skilled in the art are aware of the variations of I-pictures and their respective uses and characteristics.
[0069] A predictive picture (P picture) may be coded and decoded by intra prediction or inter prediction using at most one motion vector and reference index to predict the sample values of each block.
[0070] Bidirectionally predicted pictures (B-pictures) may be coded and decoded by intra- or inter-prediction using up to two motion vectors and reference indices to predict the sample values of each block. Similarly, multi-predicted pictures can use more than two reference pictures and associated metadata for the reconstruction of a single block.
[0071] A source picture may generally be spatially subdivided into multiple sample blocks (e.g., blocks of 4x4, 8x8, 4x8, or 16x16 samples, respectively) and coded block by block. Blocks may be predictively coded with reference to other (already coded) blocks determined by a coding assignment applied to the respective picture of the block. For example, blocks of an I-picture may be non-predictively coded or predictively coded with reference to already coded blocks of the same picture (spatial or intra prediction). Pixel blocks of a P-picture may be predictively coded via spatial prediction or via temporal prediction with reference to one pre-coded reference picture. Blocks of a B-picture may be predictively coded via spatial prediction or via temporal prediction with reference to one or two pre-coded reference pictures.
[0072] The video encoder (603) may perform coding operations according to a pre-defined video coding technique or standard, such as ITU-T Recommendation H.265. During operation, the video encoder (603) may perform various compression operations, including predictive coding operations that exploit temporal and spatial redundancy in the input video sequence. Thus, the coded video data may conform to a syntax specified by the video coding technique or standard used.
[0073] In one embodiment, the transmitter (640) may transmit additional data along with the encoded video. The source coder (630) may include such data as part of the coded video sequence. The additional data may include temporal / spatial / SNR enhancement layers, redundant data in other forms such as redundant pictures or slices, SEI messages, VUI parameter set fragments, etc.
[0074] A video may be captured as multiple source pictures (video pictures) in a time sequence. Intra-picture prediction (often abbreviated as "intra prediction") exploits spatial correlation in a given picture, while inter-picture prediction exploits correlation (temporal or other) between pictures. In one example, a particular picture being encoded / decoded, called the current picture, is divided into blocks. If a block in the current picture is similar to a reference block of a previously coded and still buffered reference picture in the video, the block in the current picture may be coded by a vector called a motion vector. The motion vector points to a reference block of the reference picture, and may have a third dimension that identifies the reference picture if multiple reference pictures are used.
[0075] In some embodiments, a bi-prediction technique may be used in inter-picture prediction. According to the bi-prediction technique, two reference pictures, such as a first reference picture and a second reference picture, each of which is earlier in decoding order than the current picture in the video (but may be earlier and later in display order, respectively), may be used. A block in the current picture may be coded by a first motion vector that points to a first reference block in the first reference picture and a second motion vector that points to a second reference block in the second reference picture. A block may be predicted by a combination of the first reference block and the second reference block.
[0076] Furthermore, merge mode techniques can be applied to inter-picture prediction to improve coding efficiency.
[0077] According to some embodiments of the present disclosure, predictions such as inter-picture prediction and intra-picture prediction are performed on a block-by-block basis. For example, according to the HEVC standard, pictures in a sequence of video pictures are divided into coding tree units (CTUs) for compression, and the CTUs in a picture have the same size, such as 64×64 pixels, 32×32 pixels, or 16×16 pixels. In general, a CTU includes three coding tree blocks (CTBs), 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 64×64 pixel CTU can be partitioned into one 64×64 pixel CU, four 32×32 pixel CUs, or sixteen 16×16 pixel CUs. In one example, each CU is analyzed to determine the prediction type of the CU, such as an inter prediction type or an intra prediction type. The CU is partitioned into one or more prediction units (PUs) depending on the temporal and / or spatial predictability. Typically, each PU includes one luma prediction block (PB) and two chroma PBs. In one embodiment, prediction operations in coding (encoding / decoding) are performed in units of prediction blocks. Taking luma prediction blocks as an example of prediction blocks, the prediction blocks include matrices of pixel values (e.g., luma values) of 8×8 pixels, 16×16 pixels, 8×16 pixels, 16×8 pixels, etc.
[0078] 7 shows a diagram of a video encoder (703) according to another embodiment of the present disclosure. The video encoder (703) is configured to receive a processed block (e.g., a predictive block) of sample values in a current video picture in a sequence of video pictures and to encode the processed block into a coded picture that is part of a coded video sequence. In one example, the video encoder (703) is used in place of the video encoder (403) in the example of FIG. 4.
[0079] In an HEVC example, the video encoder (703) receives a matrix of sample values for a processing block, such as a predictive block, such as 8×8 samples. The video encoder (703) determines whether the processing block is best coded in an intra mode, an inter mode, or a bi-predictive mode, for example using rate-distortion optimization. If the processing block is to be coded in an intra mode, the video encoder (703) may encode the processing block into a coded picture using intra prediction techniques. Also, if the processing block is to be coded in an inter mode or a bi-predictive mode, the video encoder (703) may encode the processing block into a coded picture using inter prediction or bi-predictive techniques, respectively. In certain video coding techniques, the merge mode may be an inter-picture prediction sub-mode that derives a motion vector from one or more motion vector predictors without the benefit of motion vector components coded other than the predictors. In certain other video coding techniques, there may be motion vector components applicable to the current block. In one example, the video encoder (703) includes other components, such as a mode decision module (not shown) for determining the mode of the processing block.
[0080] In the example of Figure 7, the video encoder (703) includes an inter-encoder (730), an intra-encoder (722), a residual calculation unit (723), a switch (726), a residual encoder (724), an overall control unit (721), and an entropy encoder (725), which are coupled together as shown in Figure 7.
[0081] The inter-encoder (730) is configured to receive a sample of a current block (e.g., a processing block), compare the block with 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., a description of redundant information due to an inter-encoding technique, motion vectors, merge mode information), and calculate an inter-prediction result (e.g., a prediction block) using any suitable technique based on the inter-prediction information. In some examples, the reference picture is a decoded reference picture that is decoded based on the encoded video information.
[0082] The intra encoder (722) is configured to receive samples of a current block (e.g., a processing block), possibly compare the block to previously coded blocks in the same picture, generate quantized transformed coefficients, and possibly also generate intra prediction information (e.g., intra prediction direction information according to one or more intra encoding techniques). In one example, the intra encoder (722) also calculates intra prediction results (e.g., prediction blocks) based on the intra prediction information and reference blocks in the same picture.
[0083] The overall control unit (721) is configured to determine overall control data and control other components of the video encoder (703) based on the overall control data. In one example, the overall control unit (721) determines a mode of the block and provides a control signal to the switch (726) based on the mode. For example, if the mode is an intra mode, the overall control unit (721) controls the switch (726) to select an intra mode result for use by the residual calculation unit (723), and controls the entropy encoder (725) to select intra prediction information and include the intra prediction information in the bitstream. Also, if the mode is an inter mode, the overall control unit (721) controls the switch (726) to select an inter prediction result for use by the residual calculation unit (723), and controls the entropy encoder (725) to select inter prediction information and include the inter prediction information in the bitstream.
[0084] The residual calculator (723) is configured to calculate a difference (residual data) between the received block and a prediction result selected from the intra-encoder (722) or the inter-encoder (730). The residual encoder (724) operates on the residual data and is configured to encode the residual data to generate transform coefficients. In one example, the residual encoder (724) is configured to transform the residual data from the spatial domain to the frequency domain to generate transform coefficients. The transform coefficients are then subjected to a quantization process to obtain quantized transform coefficients. In various embodiments, the video encoder (703) also includes a residual decoder (728). The residual decoder (728) is configured to perform an inverse transform and generate decoded residual data. The decoded residual data can be used by the intra-encoder (722) and the inter-encoder (730) as appropriate. For example, the inter-encoder (730) can generate decoded blocks based on the decoded residual data and the inter-prediction information, and the intra-encoder (722) can generate decoded blocks based on the decoded residual data and the intra-prediction information. In some examples, the decoded blocks are appropriately processed to generate decoded pictures, which can be buffered in a memory circuit (not shown) and used as reference pictures.
[0085] The entropy encoder (725) is configured to format the bitstream to include the encoded blocks. The entropy encoder (725) is configured to include various information in the bitstream according to an appropriate standard, such as the HEVC standard. In one example, the entropy encoder (725) is configured to include overall control data, selected prediction information (e.g., intra-prediction information or inter-prediction information), residual information, and other appropriate information in the bitstream. It should be noted that, according to the disclosed subject matter, there is no residual information when coding a block in an inter mode or a merged sub-mode of a bi-prediction mode.
[0086] 8 shows a diagram of a video decoder (810) according to another embodiment of the present disclosure. The video decoder (810) is configured to receive coded pictures that are part of a coded video sequence and decode the coded pictures to generate reconstructed pictures. In one example, the video decoder (810) is used instead of the video decoder (410) in the example of FIG. 4.
[0087] In the example of FIG. 8, the video decoder (810) includes an entropy decoder (871), an inter-decoder (880), a residual decoder (873), a reconstruction module (874), and an intra-decoder (872), coupled together as shown in FIG.
[0088] The entropy decoder (871) may be configured to reconstruct from the coded picture certain symbols that represent syntax elements that make up the coded picture. Such symbols may include, for example, prediction information (e.g., intra- or inter-prediction information) that may identify the mode in which the block is coded (e.g., intra-mode, inter-mode, bi-prediction mode, the latter two merged submodes, or other submodes), certain samples or metadata used for prediction by the intra-decoder (872) or inter-decoder (880), respectively, residual information, e.g., in the form of quantized transform coefficients, etc. In one example, if the prediction mode is an inter- or bi-prediction mode, the inter-prediction information is provided to the inter-decoder (880). Also, if the prediction type is an intra-prediction type, the intra-prediction information is provided to the intra-decoder (872). The residual information may be inverse quantized and provided to the residual decoder (873).
[0089] The inter decoder (880) is configured to receive the inter prediction information and to generate inter prediction results based on the inter prediction information.
[0090] The intra decoder (872) is configured to receive the intra prediction information and to generate a prediction result based on the intra prediction information.
[0091] The residual decoder (873) is configured to extract dequantized transform coefficients by performing inverse quantization, and to process the dequantized transform coefficients to transform the residual from the frequency domain to the spatial domain. The residual decoder (873) may also require certain control information (to include quantizer parameters (QP)), which may be provided by the entropy decoder (871) (data path not shown, as it may be only low volume control information).
[0092] The reconstruction module (874) is configured to combine, in the spatial domain, the residual output by the residual decoder (873) and a prediction result (possibly output by an inter- or intra-prediction module) to form a reconstructed block that may be part of a reconstructed picture that may be part of the reconstructed video, although other suitable operations, such as a deblocking operation, may be performed to improve visual quality.
[0093] It should be noted that the video encoders (403), (603), and (703) and the video decoders (410), (510), and (810) may be implemented using any suitable technique. In one embodiment, the video encoders (403), (603), and (703) and the video decoders (410), (510), and (810) may be implemented using one or more integrated circuits. In another embodiment, the video encoders (403), (603), and (603) and the video decoders (410), (510), and (810) may be implemented using one or more processors executing software instructions.
[0094] Aspects of the present disclosure provide filtering techniques for video coding / decoding. Specifically, the filtering techniques are applied to a loop filter unit, such as a loop filter unit (556) in a prediction loop. For example, an image filtered by the loop filter unit (556) is stored in a buffer, such as a reference picture memory (557), as a reference for further prediction. The loop filter unit may apply various loop filters to sample filtering. In some examples, the loop filter configuration of the loop filter unit refers to the loop filter applied by the loop filter unit.
[0095] An adaptive loop filter (ALF) with block-based filter adaptation can be applied at the encoder / decoder to reduce artifacts. For the luma component, for example, one of multiple filters (e.g., 25 filters) can be selected for a 4×4 luma block based on local gradient direction and activity.
[0096] The ALF may have any suitable shape and size. Referring to FIG. 9, the ALFs (910)-(911) have a diamond shape, for example, a 5×5 diamond for the ALF (910) and a 7×7 diamond for the ALF (911). In the ALF (910), the elements (920)-(932) form a diamond shape and may be used in the filtering process. Seven values (e.g., C0-C6) may be used for the elements (920)-(932). In the ALF (911), the elements (940)-(964) form a diamond shape and may be used in the filtering process. Thirteen values (e.g., C0-C12) may be used for the elements (940)-(964).
[0097] Referring to FIG. 9, in some examples, two ALFs (910)-(911) having diamond shapes are used. A 5×5 diamond filter (910) may be applied to the chroma components (e.g., chroma blocks, chroma CB), and a 7×7 diamond filter (911) may be applied to the luma components (e.g., luma blocks, luma CB). Other suitable shapes and sizes may be used in the ALFs. For example, a 9×9 diamond filter may be used.
[0098] The filter coefficients at the locations indicated by the values (e.g., C0-C6 in (910) or C0-C12 in (920)) may be non-zero. Furthermore, if the ALF includes a clipping function, the clipping value at that location may be non-zero.
[0099] For block classification of the luma component, a 4×4 block (or luma block, luma CB) can be categorized or classified as one of multiple (e.g., 25) classes. The classification index C is calculated using Equation (1) by quantizing the directionality parameter D and the activity value A:
number
number
number
number
number
number
[0100] To reduce the complexity of the block classification, a subsampled 1-D Laplacian computation can be applied. Figures 10A-10D show the gradient g in the vertical direction (Figure 10A), horizontal direction (Figure 10B), and two diagonal directions d1 (Figure 10C) and d2 (Figure 10D). v , g h , g d1 and g d2 10A shows an example of subsampled positions for computing the gradients in different directions. The same subsampled positions can be used for gradient computations in different directions. In FIG. 10A, the label “V” indicates the vertical gradient g v In FIG. 10B, the label “H” indicates the subsampled positions for computing the horizontal gradient g h In FIG. 10C, the label “D1” indicates the subsampled positions for computing the diagonal gradient g d1 In FIG. 10D, the label “D2” indicates the subsampled positions for computing the d2 diagonal gradient g d2 indicates the subsampled positions for computing
[0101] Horizontal and vertical gradients g v and g h Maximum of
number
number
number
number
number
number
number
number
number
number
number
[0102] The activity value A can be calculated as follows:
number
number
[0103] For the chroma components in a picture, no block classification is applied, so a single set of ALF coefficients can be applied to each chroma component.
[0104] A geometric transformation can be applied to the filter coefficients and the corresponding filter clipping values (also called clipping values). Before filtering a block (e.g., a 4×4 luma block), a geometric transformation such as a rotation or a diagonal and vertical flip can be applied to the gradient values (e.g., g v , g h , g d1 , and / or g d2 ) can be applied to the filter coefficients f(k,l) and the corresponding filter clipping values c(k,l). Applying a geometric transformation to the filter coefficients f(k,l) and the corresponding filter clipping values c(k,l) can be equivalent to applying a geometric transformation to the samples in the area supported by the filter. The geometric transformation can make the different blocks to which the ALF is applied more similar by aligning their respective directionality.
[0105] Three geometric transformations, including diagonal flip, vertical flip and rotation, can be performed as described in equations (9)-(11), respectively.
number
number
number
[0106] In some embodiments, the ALF filter parameters are signaled in an adaptive parameter set (APS) of a picture. In the APS, one or more sets (e.g., up to 25 sets) of luma filter coefficients and clipping value indexes can be signaled. In one example, one or more of the one or more sets can include luma filter coefficients and one or more clipping value indexes. One or more sets (e.g., up to 8 sets) of chroma filter coefficients and clipping value indexes can be signaled. To reduce signaling overhead, filter coefficients of different classifications (e.g., having different classification indexes) of luma components can be merged. In the slice header, an index of the APS used for the current slice can be signaled.
[0107] In one embodiment, a clipping value index (also referred to as a clipping index) can be decoded from the APS. The clipping value index can be used to determine a corresponding clipping value, for example, based on a relationship between the clipping value index and the corresponding clipping value. This relationship can be predefined and stored in the decoder. In one example, the relationship is described by a table, such as a luma table (e.g., used for luma CB) of clipping value index and corresponding clipping value, a chroma table (e.g., used for chroma CB) of clipping value index and corresponding clipping value, etc. The clipping value may depend on the bit depth B. The bit depth B may refer to the internal bit depth, the bit depth of the reconstructed sample in the CB to be filtered, etc. In some examples, the table (e.g., luma table, chroma table) is obtained using Equation (12).
number
[0108] In the slice header of the current slice, one or more APS indexes (e.g., up to seven APS indexes) may be signaled to specify the luma filter sets that may be used for the current slice. The filtering process may be controlled at one or more appropriate levels, such as the picture level, slice level, CTB level, etc. In one embodiment, the filtering process may be further controlled at the CTB level. A flag may be signaled to indicate whether the ALF is applied to the luma CTB. The luma CTB may select a filter set from among multiple fixed filter sets (e.g., 16 fixed filter sets) and a filter set signaled to the APS (also referred to as a signaled filter set). A filter set index may be signaled to the luma CTB to indicate the filter set to be applied (e.g., a filter set from among the multiple fixed filter sets and the signaled filter set). The multiple fixed filter sets may be predefined and hard-coded in the encoder and decoder and may be referred to as a predefined filter set.
[0109] For chroma components, an APS index can be signaled in the slice header to indicate the chroma filter set used for the current slice. At the CTB level, if an APS has multiple chroma filter sets, a filter set index can be signaled for each chroma CTB.
[0110] The filter coefficients may be quantized with a norm equal to 128. To reduce multiplication complexity, bitstream conformance may be applied to ensure that coefficient values for non-center positions are in the range of −27 to 27−1. In one example, coefficients for center positions are not signaled in the bitstream and may be assumed to be equal to 128.
[0111] In some embodiments, the syntax and semantics of clipping indexes and clipping values are defined as follows: alf_luma_clip_idx[sfIdx][j] may be used to specify a clipping index of the clipping value to use before multiplying the jth coefficient of the signaled luma filter indicated by sfIdx. Bitstream conformance requirements may include that the values of alf_luma_clip_idx[sfIdx][j] for sfIdx=0 to alf_luma_num_filters_signalled_minus1 and j=0 to 11 are in the range of 0 to 3. The clipping value AlfClipL[adaptation_parameter_set_id] of the luma filter having element AlfClipL[adaptation_parameter_set_id][filtIdx][j], for filtIdx=0 to NumAlfFilters-1, j=0 to 11, may be derived as specified in Table 2 depending on the bitDepth set equal to BitDepthY and clipIdx set equal to alf_luma_clip_idx[alf_luma_coeff_delta_idx[filtIdx]][j]. alf_chroma_clip_idx[altIdx][j] may be used to specify a clipping index for the clipping value to use before multiplying the jth coefficient of the alternate chroma filter with index altIdx. Bitstream conformance requirements may include that the values of alf_chroma_clip_idx[altIdx][j] are in the range 0 to 3, for altIdx=0 to alf_chroma_num_alt_filters_minus1, j=0 to 5. The clipping value AlfClipC[adaptation_parameter_set_id][altIdx] of the chroma filter with element AlfClipC[adaptation_parameter_set_id][altIdx][j], for altIdx=0 to alf_chroma_num_alt_filters_minus1, j=0 to 5, may be derived as specified in Table 2, depending on the bitDepth set equal to BitDepthC and clipIdx set equal to alf_chroma_clip_idx[altIdx][j].
[0112] In one embodiment, the filtering process can be described as follows: On the decoder side, when ALF is enabled for CTB, samples R(i,j) in a CU (or CB) can be filtered to generate filtered sample values R'(i,j) using equation (13) as shown below. In one example, each sample in a CU is filtered.
number
[0113] In non-linear ALF, multiple sets of clipping values can be shown in Table 3. In one example, the luma set includes four clipping values {1024, 181, 32, 6}, and the chroma set includes four clipping values {1024, 161, 25, 4}. The four clipping values in the luma set can be selected by approximately evenly dividing the full range (e.g., 1024) of the sample values of the luma block (coded with 10 bits) in the logarithmic domain. The range of the chroma set can be from 4 to 1024. [Table 3]
[0114] The selected clipping value may be coded in the "alf_data" syntax element as follows: An appropriate encoding scheme (e.g., the Golomb encoding scheme) may be used to encode the clipping index corresponding to the selected clipping value as shown in Table 3. The encoding scheme may be the same encoding scheme used to encode the filter set index.
[0115] In one embodiment, a virtual boundary filtering process can be used to reduce the line buffer requirements of ALF. Thus, modified block classification and filtering can be used for samples near CTU boundaries (e.g., horizontal CTU boundaries). The virtual boundary (1130) is defined as the horizontal CTU boundary (1120) as "N" as shown in FIG. 11A. samples " can be defined as a line by shifting the sample by N, where samples can be a positive integer. In one example, N samples is equal to 4 for the luma component and equal to 2 for the chroma component.
[0116] With reference to Figure 11A, modified block classification can be applied to the luma component. In one example, for a 1D Laplacian gradient calculation of a 4x4 block (1110) above the virtual boundary (1130), only samples above the virtual boundary (1130) are used. Similarly, with reference to Figure 11B, for a 1D Laplacian gradient calculation of a 4x4 block (1111) below the virtual boundary (1131) shifted from the CTU boundary (1121), only samples below the virtual boundary (1131) are used. Thus, the quantization of the activity value A can be scaled by taking into account the reduction in the number of samples used in the 1D Laplacian gradient calculation.
[0117] In the filtering process, a symmetric padding operation at the virtual boundary can be used for both luma and chroma components. Figures 12A-12F show examples of such modified ALF filtering for luma components at the virtual boundary. If the sample to be filtered is below the virtual boundary, the adjacent samples above the virtual boundary can be padded. If the sample to be filtered is above the virtual boundary, the adjacent samples below the virtual boundary can be padded. With reference to Figure 12A, the adjacent sample C0 can be padded with the sample C2 below the virtual boundary (1210). With reference to Figure 12B, the adjacent sample C0 can be padded with the sample C2 above the virtual boundary (1220). With reference to Figure 12C, the adjacent samples C1-C3 can be padded with the samples C5-C7 below the virtual boundary (1230), respectively. With reference to Figure 12D, the adjacent samples C1-C3 can be padded with the samples C5-C7 above the virtual boundary (1240), respectively. Referring to Figure 12E, adjacent samples C4-C8 can be padded with samples C10, C11, C12, C11, and C10, respectively, below the imaginary boundary (1250). Referring to Figure 12F, adjacent samples C4-C8 can be padded with samples C10, C11, C12, C11, and C10, respectively, above the imaginary boundary (1260).
[0118] In some cases, the above description can be adapted appropriately when a sample and an adjacent sample are to the left (or right) and right (or left) of a virtual boundary.
[0119] According to one aspect of the present disclosure, a picture can be partitioned based on a filtering process to improve coding efficiency. In some examples, a CTU is also called a largest coding unit (LCU). In one example, a CTU or an LCU can have a size of 64×64 pixels. In some embodiments, an LCU-aligned picture quadtree partition can be used for filtering-based partitioning. In some examples, a synchronic coding unit and a picture quadtree-based adaptive loop filter can be used. For example, a luma picture can be partitioned into several multi-level quadtree partitions, and the boundaries of each partition can be aligned to the boundaries of an LCU. Each partition has its own filtering process, and is therefore called a filter unit (FU).
[0120] In some examples, a two-pass encoding flow may be used. In a first pass of the two-pass encoding flow, a quadtree division pattern of the picture and an optimal filter for each FU may be determined. In some embodiments, the determination of the quadtree division pattern of the picture and the determination of the optimal filter for the FU are based on a filtering distortion. The filtering distortion may be estimated by a fast filtering distortion estimation (FFDE) method during the determination process. The picture is partitioned using a quadtree partition. The reconstructed picture may be filtered according to the determined quadtree division pattern and the selected filters of all the FUs.
[0121] In the second pass of the two-pass encoding flow, the CU and ALF on / off synchronous control is performed. According to the result of turning on / off the ALF, the first filtered picture is partially restored by the reconstructed picture.
[0122] Specifically, in some examples, 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 (FU). The partitioning process aligns the quadtree partitions to LCU boundaries. The encoding order of the FUs follows the order of z-scanning.
[0123] Figure 13 illustrates an example partitioning scheme according to some embodiments of the present disclosure. In the example of Figure 13, a picture (1300) is partitioned into 10 FUs, with the encoding order being FU0, FU1, FU2, FU3, FU4, FU5, FU6, FU7, FU8, and FU9.
[0124] FIG. 14 illustrates a quadtree partitioning pattern (1400) for a picture (1300). In the example of FIG. 14, split flags are used to indicate the picture partitioning pattern. For example, a "1" indicates that quadtree partitioning is performed on the block, and a "0" indicates that the block is not further partitioned. In some examples, the smallest size FU has an LCU size, and no split flags are required for the smallest size FU. The split flags are encoded and transmitted in z-order as shown in FIG. 14.
[0125] In some examples, the filters for each FU are selected from two filter sets based on a rate-distortion criterion. The first set includes 1 / 2 symmetric square and diamond filters derived for the current FU. The second set is obtained from a time-delay filter buffer, which stores filters previously derived for the FUs of the previous picture. The filter with the smallest rate-distortion cost among these two sets can be selected for the current FU. Similarly, if the current FU is not the smallest FU and can be further divided into four sub-FUs, calculate the rate-distortion cost of the four sub-FUs. By recursively comparing the rate-distortion cost for the divided case and the non-divided case, a quadtree partitioning pattern for the picture can be determined.
[0126] In some examples, the maximum quadtree division level can be used to limit the maximum number of FUs. In one example, if the maximum quadtree division level is 2, the maximum number of FUs is 16. Furthermore, during the determination of the quadtree division, correlation values to derive Wiener coefficients of 16 FUs (smallest FUs) at the lowest quadtree level can be reused. The remaining FUs can derive Wiener filters from the correlation of the 16 FUs at the lowest quadtree level. Thus, in this example, only one frame buffer access is performed to derive filter coefficients for all FUs.
[0127] After the quadtree division pattern is determined, CU and ALF on / off synchronous control can be performed to further reduce the filtering distortion. By comparing the filtering distortion and non-filtering distortion at each leaf CU, the leaf CU can explicitly switch ALF on / off in its local area. In some cases, the coding efficiency can be further improved by redesigning the filter coefficients according to the results of ALF on / off.
[0128] In the cross-component filtering process, a cross-component filter, such as a cross-component adaptive loop filter (CC-ALF), can be applied. The cross-component filter can use luma sample values of a luma component (e.g., luma CB) to refine a chroma component (e.g., chroma CB corresponding to luma CB). In one example, the luma CB and the chroma CB are included in a CU.
[0129] FIG. 15 illustrates a cross-component filter (e.g., CC-ALF) for generating chroma components according to an embodiment of the present disclosure. In some examples, FIG. 15 illustrates a filtering process of a first chroma component (e.g., first chroma CB), a second chroma component (e.g., second chroma CB), and a luma component (e.g., luma CB). The luma component may be filtered by a sample adaptive offset (SAO) filter (1510) to generate a SAO filtered luma component (1541). The SAO filtered luma component (1541) may be further filtered by an ALF luma filter (1516) to become a filtered luma CB (1561) (e.g., “Y”).
[0130] The first chroma component may be filtered by the SAO filter (1512) and the ALF chroma filter (1518) to generate a first intermediate component (1552). Furthermore, the SAO filtered luma component (1541) may be filtered by a cross component filter (e.g., CC-ALF) for the first chroma component (1521) to generate a second intermediate component (1542). A filtered first chroma component (1562) (e.g., “Cb”) may then be generated based on at least one of the second intermediate component (1542) and the first intermediate component (1552). In one example, the filtered first chroma component (1562) (e.g., “Cb”) may be generated by combining the second intermediate component (1542) and the first intermediate component (1552) in an adder (1522). The cross-component adaptive loop filtering process for the first chroma component may include steps performed by a CC-ALF (1521) and, for example, by an adder (1522).
[0131] The above description can be adapted to the second chroma component. The second chroma component can be filtered by the SAO filter (1514) and the ALF chroma filter (1518) to generate a third intermediate component (1553). Furthermore, the SAO filtered luma component (1541) can be filtered by the cross component filter (e.g., CC-ALF) (1531) for the second chroma component to generate a fourth intermediate component (1543). Then, a filtered second chroma component (1563) (e.g., “Cr”) can be generated based on at least one of the fourth intermediate component (1543) and the third intermediate component (1553). In one example, the filtered second chroma component (1563) (e.g., “Cr”) can be generated by combining the fourth intermediate component (1543) and the third intermediate component (1553) in the adder (1532). In one example, the cross-component adaptive loop filtering process for the second chroma component may include steps performed by a CC-ALF (1531) and, for example, by an adder (1532).
[0132] The cross-component filters (e.g., CC-ALF (1521), CC-ALF (1531)) can operate to refine each chroma component (e.g., first chroma component, second chroma component) by applying a linear filter having any suitable filter shape to the luma component (or luma channel).
[0133] FIG. 16 illustrates an example of a filter (1600) according to an embodiment of the present disclosure. The filter (1600) may include non-zero filter coefficients and zero filter coefficients. The filter (1600) has a diamond (1620) formed by the filter coefficients (1610) (indicated by a circle with black fill). In one example, the non-zero filter coefficients in the filter (1600) are included in the filter coefficients (1610), and the filter coefficients that are not included in the filter coefficients (1610) are zero. Thus, the non-zero filter coefficients in the filter (1600) are included in the diamond (1620), and the filter coefficients that are not included in the diamond (1620) are zero. In one example, the number of filter coefficients in the filter (1600) is equal to the number of filter coefficients (1610), which is 18 in the example illustrated in FIG. 16.
[0134] The CC-ALF may include any suitable filter coefficients (also referred to as CC-ALF filter coefficients). Returning to Figure 15, the CC-ALF (1521) and the CC-ALF (1531) may have the same filter shape, such as the diamond (1620) shown in Figure 16, and the same number of filter coefficients. In one example, the values of the filter coefficients in the CC-ALF (1521) are different from the values of the filter coefficients of the CC-ALF (1531).
[0135] In general, the filter coefficients in the CC-ALF (e.g., non-zero filter coefficients) can be transmitted, for example, in the APS. In one example, the filter coefficients are coefficients (e.g., 2 10) and may be rounded to a fixed-point representation. The application of CC-ALF may be controlled by variable block sizes and signaled by a context coding flag (e.g., a CC-ALF enable flag) received for each block of samples. Context coding flags, such as the CC-ALF enable flag, may be signaled at any appropriate level, such as the block level. For each chroma component, a block size and a CC-ALF enable flag may be received at the slice level. In some examples, block sizes (chroma samples) 16x16, 32x32, and 64x64 may be supported.
[0136] Figure 17 illustrates an example syntax of CC-ALF according to some embodiments of the present disclosure. In the example of Figure 17, alf_ctb_cross_component_cb_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY] is an index that indicates whether a cross-component Cb filter is used, and is an index when a cross-component Cb filter is used. For example, if alf_ctb_cross_component_cb_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY] is equal to 0, then no cross-component Cb filter is applied to the block of Cb color component samples at luma position (xCtb, yCtb), and if alf_ctb_cross_component_cb_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY] is not equal to 0, then alf_ctb_cross_component_cb_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY] is the index of the filter to be applied. For example, the alf_ctb_cross_component_cb_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]th cross-component Cb filter is applied to the block of Cb color component samples at luma position (xCtb, yCtb).
[0137] Additionally, in the example of Figure 17, alf_ctb_cross_component_cr_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY] is used to indicate whether a cross-component Cr filter is being used and whether an index of the cross-component Cr filter is being used. For example, if alf_ctb_cross_component_cr_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY] is equal to 0, then no cross-component Cr filter is applied to the block of Cr color component samples at luma position (xCtb, yCtb), and if alf_ctb_cross_component_cr_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY] is not equal to 0, then alf_ctb_cross_component_cr_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY] is the index of the cross-component Cr filter. For example, the alf_cross_component_cr_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]th cross-component Cr filter may be applied to a block of Cr color component samples at luma position (xCtb, yCtb).
[0138] In some examples, a chroma subsampling technique is used, so the number of samples in each chroma block may be less than the number of samples in a luma block. The chroma subsampling format (also referred to as a chroma subsampling format, for example, specified by chroma_format_idc) may indicate a horizontal chroma subsampling factor (e.g., SubWidthC) and a vertical chroma subsampling factor (e.g., SubHeightC) between each chroma block and a corresponding luma block. In one example, the chroma subsampling format is 4:2:0, so the horizontal chroma subsampling factor (e.g., SubWidthC) and the vertical chroma subsampling factor (e.g., SubHeightC) are 2, as shown in FIGS. 18A-18B. In one example, the chroma subsampling format is 4:2:2, so the horizontal chroma subsampling factor (e.g., SubWidthC) is 2, and the vertical chroma subsampling factor (e.g., SubHeightC) is 1. In one example, since the chroma subsampling format is 4:4:4, the horizontal chroma subsampling factor (e.g., SubWidthC) and the vertical chroma subsampling factor (e.g., SubHeightC) are 1. The chroma sample type (also referred to as the chroma sample position) may indicate a relative position of a chroma sample in a chroma block with respect to at least one corresponding luma sample in the luma block.
[0139] 18A-18B illustrate example locations of chroma samples relative to luma samples according to an embodiment of the present disclosure. With reference to FIG. 18A, luma samples (1801) are in rows (1811)-(1818). The luma samples (1801) illustrated in FIG. 18A may represent a portion of a picture. In one example, a luma block (e.g., luma CB) includes the luma sample (1801). The luma block may correspond to two chroma blocks having a chroma subsampling format of 4:2:0. In one example, each chroma block includes a chroma sample (1803). Each chroma sample (e.g., chroma sample (1803(1))) corresponds to four luma samples (e.g., luma samples (1801(1)) to (1801(4)). In one example, the four luma samples are the top left sample (1801(1)), the top right sample (1801(2)), the bottom left sample (1801(3)), and the bottom right sample (1801(4)). A chroma sample (e.g., (1803(1))) corresponds to the top left sample (1801(1)) and the bottom left sample (1801(4)). The chroma sample type of a chroma block with chroma sample (1803) in a left-center position between the top left sample (1801(1)) and the bottom left sample (1801(3)) may be referred to as chroma sample type 0. Chroma sample type 0 indicates relative position 0, which corresponds to a left-center position between the top left sample (1801(1)) and the bottom left sample (1801(3)). The four luma samples (e.g., (1801(1)) through (1801(4))) may be referred to as adjacent luma samples of chroma sample (1803)(1).
[0140] In one example, each chroma block includes a chroma sample (1804). The above description of the chroma sample (1803) may be adapted to the chroma sample (1804), and therefore a detailed description may be omitted for brevity. Each chroma sample (1804) may be at a central position of four corresponding luma samples, and a chroma sample type of a chroma block having a chroma sample (1804) may be referred to as chroma sample type 1. Chroma sample type 1 indicates a relative position 1, which corresponds to the central position of the four luma samples (e.g., (1801(1)) to (1801(4))). For example, one of the chroma samples (1804) may be at a central position of the luma samples (1801(1)) to (1801(4)).
[0141] In one example, each chroma block includes a chroma sample (1805). Each chroma sample (1805) may be in a top left position that is the same as the top left sample of the four corresponding luma samples (1801), and the chroma sample type of the chroma block having the chroma sample (1805) may be referred to as a chroma sample type 2. Thus, each chroma sample (1805) is in the same position as the top left sample of the four luma samples (1801) that correspond to the respective chroma sample. The chroma sample type 2 indicates a relative position 2, which corresponds to the top left position of the four luma samples (1801). For example, one of the chroma samples (1805) may be in the top left position of the luma samples (1801(1)) to (1801(4)).
[0142] In one example, each chroma block includes a chroma sample (1806). Each chroma sample (1806) may be at a top center position between a corresponding top-left sample and a corresponding top-right sample, and a chroma sample type of a chroma block having the chroma sample (1806) may be referred to as a chroma sample type 3. The chroma sample type 3 indicates a relative position 3, which corresponds to a top center position between a top-left sample and a top-right sample. For example, one of the chroma samples (1806) may be at a top center position of the luma samples (1801(1))-(1801(4)).
[0143] In one example, each chroma block includes a chroma sample (1807). Each chroma sample (1807) may be in a bottom left position that is co-located with the bottom left sample of the four corresponding luma samples (1801), and the chroma sample type of the chroma block having the chroma sample (1807) may be referred to as chroma sample type 4. Thus, each chroma sample (1807) may be in the same position as the bottom left sample of the four luma samples (1801) that correspond to the respective chroma sample. The chroma sample type 4 indicates a relative position 4, which corresponds to the bottom left position of the four luma samples (1801). For example, one of the chroma samples (1807) may be in the bottom left position of the luma samples (1801(1))-(1801(4)).
[0144] In one example, each chroma block includes a chroma sample (1808). Each chroma sample (1808) is at a bottom center position between the bottom left sample and the bottom right sample, and the chroma sample type of the chroma block having the chroma sample (1808) may be referred to as chroma sample type 5. The chroma sample type 5 indicates a relative position 5, which corresponds to a bottom center position between the bottom left sample and the bottom right sample of the four luma samples (1801). For example, one of the chroma samples (1808) may be between the bottom left sample and the bottom right sample of luma samples (1801(1))-(1801(4)).
[0145] In general, any suitable chroma sample type may be used for a chroma subsampling format. Chroma sample types 0-5 are exemplary chroma sample types described for chroma subsampling format 4:2:0. Additional chroma sample types may be used for chroma subsampling format 4:2:0. Additionally, other chroma sample types and / or variations of chroma sample types 0-5 may be used for other chroma subsampling formats such as 4:2:2, 4:4:4, etc. In one example, a chroma sample type combining chroma samples (1805) and (1807) is used for chroma subsampling format 4:2:2.
[0146] In one example, a luma block is considered to have alternating rows such as rows (1811)-(1812) each including the top two samples (e.g., (1801(1))-(1801(2))) of the four luma samples (e.g., (1801(1))-(1801(4))) and the bottom two samples (e.g., (1801(3))-(1801(4))) of the four luma samples (e.g., (1801(1))-(1801(4))). Thus, rows (1811), (1813), (1815) and (1816) are considered to have alternating rows such as rows (1817), (1818), (1819), (2000), (2001), (2002), (2003), (2004), (2005), (2006), (2007), (2008), (2009), (3009), (4010), (4011), (4012), (4013), (4014), (4015), (4016), (4017), (4018), (4019), (5010), (5011), (5012), (5013), (5014), (5015), (5016), (5017), (5018), (5019), (6010), (6011), (6012), (6013), (6014), (6015), (6016), (6017), (6018), (7019), (8020), (8021), (8022), (8023), (8024), (8025), (8026), (8027), ( Row (1801(1)) through (1801(4)) may be referred to as the current row (e.g., (1811)) and the next row (e.g., (1812)). Relative positions 2 through 3 are in the current row, relative positions 0 through 1 are between each current row and the respective next row, and relative positions 4 through 5 are in the next row.
[0147] Chroma samples 1803, 1804, 1805, 1806, 1807, or 1808 are in rows 1851-1854 of each chroma block. The specific location of rows 1851-1854 may depend on the chroma sample type of the chroma samples. For example, if chroma samples 1803-1804 have respective chroma sample types 0-1, row 1851 is between rows 1811-1812. If chroma samples 1805-1806 have respective chroma sample types 2-3, row 1851 is in the same position as the current row 1811. If chroma samples (1807)-(1808) have respective chroma sample types 4-5, then row (1851) is in the same position as the next row (1812). The above description can be appropriately adapted to rows (1852)-(1854), so a detailed description will be omitted for the sake of brevity.
[0148] Any suitable scanning method may be used to display, store, and / or transmit the luma blocks and corresponding chroma blocks described above in Figure 18A. In one example, progressive scanning is used.
[0149] As shown in Figure 18B, interlaced scanning can be used. As mentioned above, the chroma subsampling format is 4:2:0 (e.g., chroma_format_idc is equal to 1). In one example, the variable chroma location type (e.g., ChromaLocType) indicates the current row (e.g., ChromaLocType is chroma_sample_loc_type_top_field) or the next row (e.g., ChromaLocType is chroma_sample_loc_type_bottom_field). Current rows (1811), (1813), (1815), and (1817) and next rows (1812), (1814), (1816), and (1818) may be scanned, respectively, for example, current rows (1811), (1813), (1815), and (1817) may be scanned first, followed by next rows (1812), (1814), (1816), and (1818). The current row may include luma sample (1801), and the next row may include luma sample (1802).
[0150] Similarly, corresponding chroma blocks may be interlaced scanned. Rows (1851) and (1853) with no fill, including chroma samples (1803), (1804), (1805), (1806), (1807), or (1808), may be referred to as current rows (or current chroma rows), and rows (1852) and (1854) with gray fill, including chroma samples (1803), (1804), (1805), (1806), (1807), or (1808), may be referred to as next rows (or next chroma rows). In one example, during interlaced scanning, rows (1851) and (1853) are scanned first, followed by rows (1852) and (1854).
[0151] In some examples, a constrained directional emphasis filtering technique can be used. An in-loop constrained directional emphasis filter (CDEF) can be used to filter coding artifacts while preserving image details. In one example (e.g., HEVC), a sample adaptive offset (SAO) algorithm can achieve a similar goal by defining signal offsets for different classes of pixels. Unlike SAO, CDEF is a nonlinear spatial filter. In some examples, CDEF can be constrained to be easily vectorized (i.e., can be implemented with single instruction multiple data (SIMD) operations). Note that other nonlinear filters such as median filters, bilateral filters, etc. cannot be processed in the same way.
[0152] In some cases, the amount of ringing artifacts in a coded image tends to be roughly proportional to the quantization step size. Although the amount of detail is a property of the input image, the smallest detail retained in the quantized image also tends to be proportional to the quantization step size. For a given quantization step size, the amplitude of the ringing will generally be smaller than the amplitude of the detail.
[0153] The CDEF can be used to identify the orientation of each block and adaptively filter along the identified orientation and to a lesser extent along orientations rotated 45 degrees from the identified orientation. In some cases, the encoder can look up the filter strength and explicitly signal the filter strength, allowing a high degree of control over blurring.
[0154] Specifically, in some examples, the direction search is performed on the reconstructed pixels immediately after the deblocking filter. The decoder can search for the direction because these pixels are available at the decoder. Thus, in one example, the direction does not require signaling. In some examples, the direction search can operate on a specific block size, such as 8×8 blocks, which are small enough to properly handle non-linear edges, but large enough to reliably estimate the direction when applied to a quantized image. Also, a constant direction in an 8×8 area makes it easier to vectorize the filter. In some examples, each block (e.g., 8×8) can be compared to a fully directional block to determine the difference. A fully directional block is a block in which all pixels along a line in one direction have the same value. In one example, a measure of the difference between the block and each fully directional block, such as sum of squared differences (SSD), root mean square (RMS) error, etc., can be calculated. The fully directional block with the smallest difference (e.g., smallest SSD, smallest RMS, etc.) can then be determined, and the direction of the determined fully directional block can be the direction that best matches the pattern in the block.
[0155] FIG. 19 illustrates an example of a direction search according to an embodiment of the present disclosure. In one example, the block (1910) is an 8×8 block that has been reconstructed and output from the deblocking filter. In the example of FIG. 19, the direction search can determine the direction of the block (1910) from eight directions, indicated by (1920). Eight fully directional blocks (1930) are formed corresponding to the eight directions (1920), respectively. The fully directional blocks corresponding to a direction are blocks whose pixels along the line of the direction have the same value. In addition, a difference measure, such as SSD, RMS error, etc., between the block (1910) and the fully directional block (1930) can be calculated. In the example of FIG. 19, the RMS error is indicated by (1940). As shown in (1943), the RMS error between the block (1910) and the fully directional block (1933) is the smallest, so the direction (1923) is the direction that best matches the pattern of the block (1910).
[0156] After the direction of the block is identified, a nonlinear low-pass directional filter can be determined. For example, the filter taps of the nonlinear low-pass directional filter can be aligned along the identified direction to reduce ringing while preserving directional edges or patterns. However, in some examples, directional filtering alone may not be sufficient to reduce ringing. In one example, additional filter taps are also used for pixels that are not along the identified direction. The extra filter taps are treated more conservatively to reduce the risk of blurring. Thus, the CDEF includes a primary filter tap and a secondary filter tap. In one example, the complete 2-D CDEF filter can be expressed as Equation (14):
number
[0157] In some examples, in-loop restoration schemes are used in post-deblocking video coding in addition to the deblocking operation, typically achieving noise removal and edge quality improvement. In one example, the in-loop restoration schemes are switchable within a frame for tiles of appropriate size. The in-loop restoration schemes are based on a separable symmetric Wiener filter, a dual self-guided filter using subspace projection, and a domain transform recursive filter. Because content statistics can vary significantly within a frame, the in-loop restoration schemes are integrated within a switchable framework that can trigger different schemes in different regions of the frame.
[0158] A separable symmetric Wiener filter can be one of the in-loop restoration schemes. In some cases, every pixel in the degraded frame can be reconstructed as a non-causal filtered version of the pixels in a w × w window around it, where w = 2r + 1 is odd with respect to the integer r. The 2D filter taps are expressed as w in column vectorized form. 2 If F is a 1×1 element vector, then a simple LMMSE optimization can be used to find the filter parameters F=H -1 M, where H=E[XX T ] is the autocovariance of x, and w in a w × w window around the pixel 2 A column vectorized version of the sample, M=E[YX T ] is the cross-correlation between the estimated x and the scalar source sample y. In one example, the encoder can estimate H and M from the deblocked frame and the source realization, and send the resulting filter F to the decoder. However, this is not possible with 2Not only does the transmission of the taps incur a significant bit rate cost, but non-separable filtering makes decoding very complicated. In some embodiments, some additional constraints are imposed on the nature of F. For the first constraint, F is constrained to be separable, so that the filtering can be implemented as a separable horizontal and vertical w-tap convolution. For the second constraint, each of the horizontal and vertical filters is constrained to be symmetric. For the third constraint, both the horizontal and vertical filter coefficients are assumed to sum to one.
[0159] Dual self-guided filtering using subspace projection can be one of the in-loop restoration schemes. Guided filtering is an image filtering method that uses a local linear model shown in Equation (15) to compute the filtered output y from the unfiltered samples x, where y=Fx+G Equation (15) Here, F and G are determined based on the statistics between the degraded image and the guidance image near the filtered pixel. If the guide image is the same as the degraded image, the obtained self-guided filtering has the effect of edge-preserving smoothing. In one example, a specific form of self-guided filtering can be used. The specific form of self-guided filtering depends on two parameters, the radius r and the noise parameter e, and steps 1 to 3 are listed as follows: 1. Find the mean μ and variance σ of the pixels in a (2r+1)×(2r+1) window around every pixel. 2 This step can be efficiently implemented using box filtering based on integral imaging. 2. f = σ 2 / (σ 2 +e), g = (1-f)μ for all pixels. 3. For use, calculate F and G for every pixel as the average of the f and g values in a 3x3 window around the pixel.
[0160] The particular form of the self-guiding filter is controlled by r and e, where higher r indicates higher spatial variance and higher e indicates higher range variance.
[0161] Figure 20 shows an example to explain the subspace projection in some cases. As shown in Figure 20, even if neither of the reconstructions X1, X2 is close to the source Y, the appropriate multipliers {α, β} can be much closer to the source Y as long as they are somewhat moved in the right direction.
[0162] In some examples (e.g., HEVC), a filtering method called sample adaptive offset (SAO) can be used. In some examples, SAO is applied to the reconstructed signal after the deblocking filter. SAO can use an offset value specified in the slice header. In some examples, for luma samples, the encoder can decide whether to apply (enable) SAO for the slice. If SAO is enabled, the current picture allows a recursive division of the coding unit into four sub-regions, and each sub-region can select an SAO type from multiple SAO types based on the capabilities of the sub-region.
[0163] FIG. 21 shows a table (2100) of multiple SAO types according to an embodiment of the present disclosure. In the table (2100), SAO types 0 to 6 are shown. Note that SAO type 0 is used to indicate no SAO application. Furthermore, each SAO type, SAO type 1 to SAO type 6, includes multiple categories. SAO can reduce distortion by classifying reconstructed pixels of a sub-region into categories and adding offsets to pixels of each category of the sub-region. In some examples, edge characteristics can be used for pixel classification of SAO types 1 to 4, and pixel intensity can be used for pixel classification of SAO types 5 to 6.
[0164] Specifically, in embodiments such as SAO types 5-6, a band offset (BO) may be used to classify all pixels of a sub-region into multiple bands. Each band in the multiple bands includes pixels of the same intensity interval. In some examples, the intensity range is evenly divided into multiple intervals, such as 32 intervals from zero to the maximum intensity value (e.g., 255 in the case of 8-bit pixels), and each interval is associated with an offset. Further, in one example, the 32 bands are divided into two groups, such as a first group and a second group. The first group includes the middle 16 bands (e.g., 16 intervals in the middle of the intensity range) and the second group includes the remaining 16 bands (e.g., 8 intervals on the low side of the intensity range and 8 intervals on the high side of the intensity range). In one example, only the offset of one of the two groups is transmitted. In some embodiments, when the pixel classification operation of BO is used, the five most significant bits of each pixel can be directly used as the band index.
[0165] Furthermore, in embodiments such as SAO types 1-4, edge offset (EO) can be used for pixel classification and offset determination. For example, pixel classification can be determined based on one-dimensional 3-pixel patterns taking into account edge directional information.
[0166] FIG. 22 shows an example of a three-pixel pattern for pixel classification in edge offset in some examples. In the example of FIG. 22, a first pattern (2210) (shown by three gray pixels) is called a 0 degree pattern (horizontal direction is associated with a 0 degree pattern), a second pattern (2220) (shown by three gray pixels) is called a 90 degree pattern (vertical direction is associated with a 90 degree pattern), a third pattern (2230) (shown by three gray pixels) is called a 135 degree pattern (diagonal direction of 135 degrees is associated with a 135 degree pattern), and a fourth pattern (2240) (shown by three gray pixels) is called a 45 degree pattern (diagonal direction of 45 degrees is associated with a 45 degree pattern). In one example, one of the four directional patterns shown in FIG. 22 can be selected taking into account the directional information of the edge of the sub-region. The selection can be transmitted in the coded video bitstream as side information of the example. The pixels within the sub-region can then be classified into multiple categories by comparing each pixel with its two neighboring pixels in a direction associated with the directional pattern.
[0167] 23 shows a table (2300) of pixel classification rules for edge offset in some examples. Specifically, pixel c (also shown in each pattern of FIG. 22) can be classified into one of categories 0 to 4 based on the comparison according to the pixel classification rules shown in FIG. 23, compared with two adjacent pixels (also shown in gray in each pattern of FIG. 22).
[0168] In some embodiments, the decoder-side SAO can operate independently of the largest coding unit (LCU) (e.g., CTU), thereby saving line buffers. In some examples, when the 90-degree, 135-degree, and 45-degree classification patterns are selected, the pixels in the top and bottom rows of each LCU are not processed by the SAO, and when the 0-degree, 135-degree, and 45-degree patterns are selected, the pixels in the leftmost and rightmost columns of each LCU are not processed by the SAO.
[0169] FIG. 24 shows an example of syntax (2400) that may need to be signaled for a CTU when parameters are not merged from neighboring CTUs. For example, syntax element sao_type_idx[cldx][rx][ry] may be signaled to indicate the SAO type of the sub-region. The SAO type may be BO (band offset) or EO (edge offset). A value of 0 for sao_type_idx[cldx][rx][ry] indicates that SAO is off, values 1-4 indicate that one of four EO categories corresponding to 0°, 90°, 135° and 45° is used, and value 5 indicates that BO is used. In the example of FIG. 24, each of the BO and EO types has four SAO offset values signaled (sao_offset[cIdx][rx][ry][0]-sao_offset[cIdx][rx][ry][3]).
[0170] As shown in FIG. 24, SAO is a filtering process that requires additional signaling overhead to indicate all relevant information needed to perform SAO filtering, which may limit the possibilities of SAO, as shown in FIG.
[0171] In general, the filtering process uses reconstructed samples of a first color component as input (e.g., Y or Cb or Cr, or R or G or B) to generate an output, and the output of the filtering process is applied to a second color component, which may be the same as the first color component or may be another color component different from the first color component.
[0172] A related example of cross-component filtering (CCF) derives filter coefficients based on some mathematical formulas. The derived filter coefficients are signaled from the encoder side to the decoder side and used to generate an offset using a linear combination. Then, the generated offset is added to the reconstructed sample as a filtering process. For example, an offset is generated based on a linear combination of the filtering coefficients and the luma sample, and the generated offset is added to the reconstructed chroma sample. A related example of CCF is based on the assumption of a linear mapping relationship between the reconstructed luma sample value and the delta value between the original chroma sample and the reconstructed chroma sample. However, the mapping between the reconstructed luma sample value and the delta value between the original chroma sample and the reconstructed chroma sample does not necessarily follow a linear mapping process, so the coding performance of CCF may be limited under the assumption of a linear mapping relationship.
[0173] In some examples, the nonlinear mapping technique can be used for cross-component filtering and / or same-color component filtering without significant signaling overhead. In one example, the nonlinear mapping technique can be used for cross-component filtering to generate cross-component sample offsets. In another example, the nonlinear mapping technique can be used for same-color component filtering to generate local sample offsets.
[0174] For convenience, the filtering process using the nonlinear mapping technique may be called sample offset by nonlinear mapping (SO-NLM). The SO-NLM in the cross-component filtering process may be called cross-component sample offset (CCSO). The SO-NLM in the same color component filtering process may be called local sample offset (LSO).
[0175] In one example, CCSO and LSO can be used as loop filtering to reduce distortion of the reconstructed samples. CCSO and LSO do not rely on the assumption of linear mapping used in the related CCF example. For example, CCSO does not rely on the assumption of a linear mapping relationship between the reconstructed luma sample values and the delta values between the original chroma samples and the reconstructed chroma samples. Similarly, LSO does not rely on the assumption of a linear mapping relationship between the reconstructed sample values of the color components and the delta values between the original samples of the color components and the reconstructed samples of the color components.
[0176] In the following description, a SO-NLM filtering process is described that uses a reconstructed sample of a first color component as an input (e.g., Y or Cb or Cr, or R or G or B) to generate an output, and applies the output of the filtering process to a second color component. If the second color component is the same color component as the first color component, the description applies to LSO, and if the second color component is different from the first color component, the description applies to CCSO.
[0177] In SO-NLM, a nonlinear mapping is derived on the encoder side. The nonlinear mapping is between the reconstructed sample of the first color component of the filter support region and an offset to be added to the second color component of the filter support region. If the second color component is the same as the first color component, a nonlinear mapping is used in LSO, and if the second color component is different from the first color component, a nonlinear mapping is used in CCSO. The domain of the nonlinear mapping is determined by the different combinations of processed input reconstructed samples (also called possible reconstructed sample value combinations).
[0178] The SO-NLM technique can be described using a specific example. In the specific example, a reconstructed sample from a first color component that is in a filter support area (also called a "filter support region") is determined. The filter support area is an area to which a filter can be applied, and the filter support area can have any suitable shape.
[0179] FIG. 25 illustrates an example of a filter support area (2500) according to some embodiments of the present disclosure. The filter support area (2500) includes four reconstructed samples of a first color component, P0, P1, P2, and P3. In the example of FIG. 25, the four reconstructed samples may form a cross along the vertical and horizontal directions, and the center position of the cross is the position of the sample to be filtered. A sample of the same color component as P0-P3 at the center position is indicated by C. A sample of a second color component at the center position is indicated by F. The second color component may be the same as the first color component P0-P3, or may be different from the first color component P0-P3.
[0180] FIG. 26 illustrates another example of a filter support area (2600) according to some embodiments of the present disclosure. The filter support area (2600) includes four reconstructed samples P0, P1, P2, and P3 of a first color component forming a square. In the example of FIG. 26, the center position of the square is the position of the sample to be filtered. A sample of the same color component as P0-P3 at the center position is indicated by C. A sample of a second color component at the center position is indicated by F. The second color component may be the same as the first color component P0-P3 or may be different from the first color component P0-P3.
[0181] The reconstructed samples are then processed appropriately to form the filter taps. In a particular example, the reconstructed samples are processed in two steps:
[0182] In step 1, the delta values between P0 to P3 and C are calculated. For example, m0 indicates the delta value from P0 to C, m1 indicates the delta value from P1 to C, m2 indicates the delta value from P2 to C, and m3 indicates the delta value from P3 to C.
[0183] In step 2, the delta values m0-m3 are further quantized, and the quantized values are denoted as d0, d1, d2, and d3. In one example, the quantized values may be one of -1, 0, and 1 based on a quantization process. For example, a value m may be quantized to -1 if m is less than -N (where N is a positive value and is called the quantization step size), to 0 if m is in the range of [-N, N], and to 1 if m is greater than N. In some examples, the quantization step size N may be one of 4, 8, 12, 16, and so on.
[0184] In some embodiments, the quantized values d0-d3 are filter taps and can be used to identify one combination in the filter domain. For example, the filter taps d0-d3 can form a combination in the filter domain. Since each filter tap can have three quantized values, if four filter taps are used, the filter domain contains 81 (3×3×3×3) combinations.
[0185] 27A-27C show a table (2700) having 81 combinations according to an embodiment of the present disclosure. The table (2700) includes 81 rows corresponding to the 81 combinations. In each row corresponding to a combination, a first column includes an index of the combination, a second column includes a value of a filter tap d0 for the combination, a third column includes a value of a filter tap d1 for the combination, a fourth column includes a value of a filter tap d2 for the combination, a fifth column includes a value of a filter tap d3 for the combination, and a sixth column includes an offset value associated with the combination for the non-linear mapping. In one example, when the filter taps d0-d3 are determined, an offset value (denoted as s) associated with the combination of d0-d3 can be determined according to the table (2700). In one example, the offset values s0-s80 are integers such as 0, 1, -1, 3, -3, 5, -5, -7, and the like.
[0186] In some embodiments, the final filtering process of the SO-NLM may be applied as shown in equation (16).
number
[0187] Note that in the case of LSO, the second color component in the above description is the same as the first color component, and in the case of CCSO, the second color component in the above description may be different from the first color component.
[0188] It should be noted that the above description may be adjusted to other embodiments of the present disclosure.
[0189] In some examples, at the encoder side, the encoding device may derive a mapping between the reconstructed samples of the first color component within the filter support region and an offset to be added to the reconstructed samples of the second color component. The mapping may be any suitable linear or non-linear mapping. Then, a filtering process may be applied at the encoder side and / or the decoder side based on the mapping. For example, the mapping may be appropriately signaled to the decoder (e.g., the mapping is included in the coded video bitstream transmitted from the encoder side to the decoder side), and then the decoder may perform the filtering process based on the mapping.
[0190] In some examples, a technique called semi-separate partitioning (SDP) can be used. In one example, one of the SDP techniques uses semi-separate trees (SDT). The SDT technique is also called semi-separate trees (SST) or flexible block partitioning for chroma components. In the SDT technique, the luma blocks and chroma blocks in a superblock (SB) (such as those defined in AOMedia Video 1 (AV1)) or a CTU (such as those defined in HEVC) may have the same or different block partitioning, and the block partitioning may depend on the coded luma block size or luma tree depth. In one example, if the luma block area size is larger than a first threshold T1 or the coding tree partitioning depth of the luma block is less than or equal to a second threshold T2, the chroma block uses the same coding tree structure as the luma. Otherwise, if the luma block area size is less than or equal to T1 or the luma partitioning depth is greater than T2, the corresponding chroma block may have a different coding block partitioning from the luma component, and the coding block partitioning is called flexible block partitioning for chroma components. In the above example, T1 is a positive integer such as 128 or 256, and T2 is a positive integer such as 1 or 2.
[0191] FIG. 28 shows an example of a coding tree structure of luma and chroma components. FIG. 28 shows a first partition structure (2810) of the luma component in a superblock and a second partition structure (2850) of the chroma component in the superblock. Note that a 4:2:0 chroma subsampling scheme is used in FIG. 28, but if other chroma subsampling methods are used, FIG. 28 can be appropriately modified. In FIG. 28, D1 in a block indicates that the coding tree partition depth of the block is 1, D2 in the block indicates that the coding tree partition depth of the block is 2, and D3 in the block indicates that the coding tree partition depth of the block is 3.
[0192] In the example of Figure 28, T2 is set to 1. Thus, the first partition structure (2810) and the second partition structure (2850) have the same block partition structure when the coding tree partition depth is equal to 1. For example, the luma block area of a superblock is partitioned into (2811)-(2814) according to quadtree (QT) partitioning (e.g., a large square block is divided into four small square blocks of the same size), and the corresponding chroma block area is partitioned into (2851)-(2854) according to the QT partitioning.
[0193] When the coding tree partition depth is greater than T2, the luma block area and the corresponding chroma block area may have different coding block partition structures. For example, the luma block area (2813) is partitioned into (2821) and (2822) using a vertical binary tree (BT) partition (e.g., a large block is divided into two smaller blocks of the same size by a vertical line), and the corresponding chroma block area (2853) is partitioned into (2861) to (2864) using a QT partition.
[0194] Furthermore, in another SDP technique, the luma and chroma components may share a partial tree structure from the root node of the superblock, and the conditions under which the luma and chroma start separate tree partitions depend on the partition information of the luma component or on a higher level syntax from the bitstream.
[0195] Block-based compensation can be used for inter-prediction and intra-prediction. In inter-prediction, block-based compensation from different pictures is known as motion compensation. Block-based compensation can also be performed from a previously reconstructed area in the same picture. Block-based compensation from a reconstructed area in the same picture is called intra-picture block compensation, current picture reference (CPR) or intra block copy (IntraBC). A displacement vector indicating the offset between a current block and a reference block in the same picture is called a block vector (BV) that the current block can be encoded / decoded based on the reference block. BV, which is different from the motion vector in motion compensation that can be any value (positive or negative in either x or y direction), has some constraints to ensure that the reference block is available and reconstructed. Also, in some examples, some reference areas that are tile boundaries, slice boundaries or wavefront ladder shape boundaries are excluded to consider parallel processing.
[0196] A block vector (BV) may be coded to specify the location of the predictor block. The coding of the block vector may be explicit or implicit. In the explicit mode, the BV difference between the block vector and the predictor of the block vector (also called the block vector predictor) is signaled. In the implicit mode, the block vector is reconstructed from the predictor of the block vector (called the block vector predictor) without using the BV difference, similar to the motion vector in the merge mode. The explicit mode may be called the non-merged BV prediction mode. The implicit mode may be called the merged BV prediction mode.
[0197] In some embodiments, the resolution of block vectors is limited to integer positions. In other implementations, block vectors are allowed to point to fractional positions.
[0198] In some examples, for a current block, first, a flag (e.g., IntraBC flag) indicating whether the current block is in intra BC mode is sent to the coded video bitstream. Then, if the current block is in intra BC mode, a BV difference (e.g., diff) is obtained by subtracting a reference BV (e.g., block vector predictor) from the current BV, and the diff is classified into four types according to the horizontal and vertical components of the diff. The type information needs to be sent to the bitstream, and then the diff values of the two components may be signaled based on the type information.
[0199] In one aspect of the present disclosure, in intra BC mode, a predictor block is formed from reconstructed samples in a current picture before applying in-loop filtering, and in inter prediction mode, a prediction block is formed from reconstructed samples of other pictures after applying in-loop filtering. If the loop filter is disabled in intra BC mode, the picture buffer of reconstructed samples can be shared between intra BC mode and inter prediction mode, which can simplify the hardware design.
[0200] In some examples (e.g., AOMedia Video 1 (AV1)), when the intra BC mode is enabled, the intra BC mode is enabled for both luma and chroma components, and all loop filters are disabled for both luma and chroma components. The loop filters may include a deblocking filter, a constrained directional emphasis filter (CDEF), a loop restoration (LR) filter, etc. However, in some examples, when the SDP is turned on, the intra BC mode may be enabled for one color component, such as the luma component, but disabled for another color component, such as the chroma component. According to some aspects of the present disclosure, loop filters may be enabled or disabled for different color components, and better image quality may be achieved by using loop filters for some color components. For example, when the intra BC mode is enabled only for the luma component, loop filters may be enabled / disabled in different ways for the luma component and the chroma component. For example, a loop filter may be enabled for the luma component in response to enabling the intra BC mode for the luma component, and a loop filter may be disabled for the chroma component in response to disabling the intra BC mode for the chroma component. Therefore, by disabling the loop filter for the luma component, the picture buffer can be shared between intra BC and inter prediction modes, and better image quality can be achieved by using the loop filter for the chroma components.
[0201] In the following description, the filters used in in-loop filtering are referred to as (in-)loop filters and may include any of the filters that operate on the reconstructed samples within one accessible frame / slice / tile, respectively, including but not limited to deblocking (DB) filters, CDEF filters, loop reconstruction filters, CCSO filters, LSO filters, etc.
[0202] According to some aspects of the present disclosure, when the intra BC mode is enabled for the luma component but disabled for the chroma components, at least one (in) loop filter is allowed to be used for the chroma components.
[0203] In some embodiments, when the intra BC mode is enabled for the luma component but disabled for the chroma components, all (in)loop filters are allowed to be used for the chroma components. In one example, when the intra BC mode is enabled for the luma component but disabled for the chroma components, the DB filter, the CDEF filter, the LR filter, the CCSO filter, and the LSO filter are all allowed to be used for the chroma components.
[0204] In some embodiments, when the intra BC mode is enabled for the luma component but disabled for the chroma components, the CCSO or LSO filters are allowed to be used for the chroma components.
[0205] In one embodiment, when the intra BC mode is enabled for the luma component but disabled for the chroma components, both the CCSO and CDEF filters are allowed to be used for the chroma components.
[0206] In one embodiment, enabling / disabling of intra BC mode for different color components is signaled at the picture level, respectively. Then, if intra BC mode is disabled for a color component at the picture level, at least one loop filter is allowed to be used for the color component in the picture.
[0207] In one example, two separate picture level flags are used to indicate enabling / disabling of intra BC mode for luma and chroma components at the picture level, respectively. For example, a first flag "cm->features.allow_intrabc_luma" is used to indicate enabling / disabling of intra BC mode for luma components (also called luma channel), and a second flag "cm->features.allow_intrabc_chroma" is used to indicate enabling / disabling of intra BC mode for chroma components (also called chroma channel). When the first flag "cm->features.allow_intrabc_luma" is on (e.g., has a value of "1") and the second flag "cm->features.allow_intrabc_chroma" is off (e.g., has a value of "0"), at least one loop filter is allowed to be used for the chroma components.
[0208] In another example, three separate picture level flags are used to indicate enabling / disabling of intra BC mode for Y / Cb / Cr components, respectively. For example, a first flag "cm->features.allow_intrabc_y" is used to indicate enabling / disabling of intra BC mode for Y component (also called luma component), a second flag "cm->features.allow_intrabc_cb" is used to indicate enabling / disabling of intra BC mode for Cb component (also called first chroma component), and a third flag "cm->features.allow_intrabc_cr" is used to indicate enabling / disabling of intra BC mode for Cr component (also called second chroma component). For example, if the first flag "cm->features.allow_intrabc_y" is on (e.g., has a value of "1") and the second flag "cm->features.allow_intrabc_cb" and the third flag "cm->features.allow_intrabc_cr" are off (each has a value of "0"), at least one loop filter is allowed to be used for the Cb and Cr components.
[0209] In one embodiment, when intra BC mode is turned on for both luma and chroma components, the luma block and the associated chroma block share the same block vector (BV), and in some examples, the loop filter is disabled for the luma block and the chroma block.
[0210] In some examples, a condition for applying an (in)loop filter to one color component (e.g., Y, Cb, Cr) depends on a flag indicating enabling / disabling of intra BC mode for the color component. In one example, if the flag indicates disabling of intra BC mode for a color component (e.g., Y, Cb, Cr), the (in)loop filter can be applied to the color component, and if the flag indicates enabling of intra BC mode for the color component (Y, Cb, Cr, etc.), the (in)loop filter is disabled for the color component.
[0211] In some examples, the condition of whether to apply an (in)loop filter to one color channel (luma / chroma) depends on a flag indicating enabling / disabling of intra BC mode for the color channel. In one example, if the flag indicates disabling of intra BC mode for a color channel (e.g., luma or chroma), the (in)loop filter can be applied to the color channel, and if the flag indicates enabling of intra BC mode for the color channel (e.g., luma or chroma), the (in)loop filter is disabled for the color channel.
[0212] In some embodiments, enabling / disabling of intra BC mode for different color components is signaled at block level respectively. Then, if intra BC mode is disabled for a color component at block level, at least one loop filter is allowed to be used for the current block in the color component. A block may be interpreted as a prediction block, a coding block or a coding unit, i.e., a CU, a CTU block, a superblock or a filtering unit (FU).
[0213] In one example, two separate block level flags are used to indicate enabling / disabling of intra BC mode for luma and chroma components at the block level, respectively. For example, a first flag "mi_params->mi_grid_base[x]->allow_intrabc_luma" is used to indicate enabling / disabling of intra BC mode for luma components at the block level, and a second flag "mi_params->mi_grid_base[x]->allow_intrabc_chroma" is used to indicate enabling / disabling of intra BC mode for chroma components at the block level. For example, when the first flag "mi_params->mi_grid_base[x]->allow_intrabc_luma" is on (e.g., has a value of "1") and the second flag "mi_params->mi_grid_base[x]->allow_intrabc_chroma" is off (e.g., has a value of "0"), at least one loop filter is allowed to be used for the current chroma block.
[0214] In another example, three separate block-level flags are used to indicate enabling / disabling of intra BC mode for Y / Cb / Cr blocks, respectively. For example, a first flag "mi_params->mi_grid_base[x]->allow_intrabc_y" is used to indicate enabling / disabling of intra BC mode for Y block, a second flag "mi_params->mi_grid_base[x]->allow_intrabc_cb" is used to indicate enabling / disabling of intra BC mode for Cb block, and a third flag "mi_params->mi_grid_base[x]->allow_intrabc_cr" is used to indicate enabling / disabling of intra BC mode for Cr block. For example, when the first flag "mi_params->mi_grid_base[x]->allow_intrabc_y" is on (e.g., its value is "1") and the second flag "mi_params->mi_grid_base[x]->allow_intrabc_cb" and the third flag "mi_params->mi_grid_base[x]->allow_intrabc_cr" are off (e.g., their values are "0", respectively), at least one loop filter is allowed to be used for the current Cb block and the current Cr block.
[0215] In another embodiment, enabling / disabling of intra BC mode may be signaled in a high level syntax (HLS), such as an adaptation parameter set (APS), slice header, frame header, picture parameter set (PPS), sequence parameter set (SPS), video parameter set (VPS), etc.
[0216] In some embodiments, when an intra BC mode is applied, whether a particular loop filter, such as a DB filter, a CDEF filter, a LR filter, a CCSO filter, or an LSO filter, can be applied depends on another flag signaled in the HLS (APS, slice header, frame header, PPS, SPS, VPS). In one embodiment, the flag "slice_force_cdef_flag_luma" is signaled in the slice header of the CDEF filter. In one example, if the flag "slice_force_cdef_flag_luma" is signaled as true in the slice header of a slice (e.g., if the value is "1"), the CDEF filter is applied to the luma component in the slice, regardless of whether the intra BC mode is enabled. In another example, if the flag "slice_force_cdef_flag_luma" is signaled as false in the slice header of a slice (e.g., if the value is "0"), whether the CDEF filter is applied to the luma component in the slice depends on whether the intra BC mode is enabled.
[0217] In some embodiments, regardless of whether intra BC mode is enabled for the current frame / slice / tile, at least one (in) loop filter is allowed to be used for the chroma components.
[0218] Some embodiments allow all (in)loop filters to be used for the chroma components regardless of whether intra BC mode is enabled for the current frame / slice / tile or not.
[0219] Another embodiment allows the CCSO or LSO or CDEF filters to be used for the chroma components regardless of whether the intra BC mode is enabled for the current frame / slice / tile or not.
[0220] According to some aspects of the present disclosure, the SDP can be used to determine the enabling / disabling of loop filters, and when the SDP is applied, it allows at least one (in) loop filter to be used for a chroma component.
[0221] In some embodiments, when SDP is applied, all (in)loop filters are allowed to be used for the chroma components. In one example, when SDP is applied, DB filter, CDEF filter, LR filter, CCSO filter and LSO filter are all allowed to be used for the chroma components.
[0222] Some embodiments allow CCSO or LSO filters to be used for the chroma components when SDP is applied.
[0223] In one embodiment, when SDP is applied, it allows both the SCSO and CDEF filters to be used for the chroma components.
[0224] FIG. 29 shows a flow chart outlining a process (2900) according to one embodiment of the present disclosure. The process (2900) can be used to reconstruct a block in a picture of a coded video sequence. The term block can be interpreted as a prediction block, a coding unit, a luma block, a chroma block, etc. In various embodiments, the process (2900) is performed by processing circuitry in the terminal devices (310), (320), (330), and (340), a processing circuitry performing the functions of a video encoder (403), a processing circuitry performing the functions of a video decoder (410), a processing circuitry performing the functions of a video decoder (510), a processing circuitry performing the functions of a video encoder (603), etc. In some embodiments, the process (2900) is implemented in software instructions, such that the processing circuitry performs the process (2900) when the processing circuitry executes the software instructions. The process starts at (S2901) and proceeds to (S2910).
[0225] At (S2910), based on the decoded information in the coded video bitstream, separate coding information for a first color component and a second color component of the block is determined. In some examples, the separate coding information includes an enable / disable difference of an intra-block copy mode for a luma component and a chroma component. For example, the intra-block copy mode is enabled for the luma component and disabled for the chroma component. In some examples, the separate coding information includes a separate partition structure of the luma component and the chroma component. In one example, the luma component and the chroma component have different partition structures within the block because an SDP is applied.
[0226] In some embodiments, the separated coding information of the first color component and the second color component in the block is determined based on enable / disable signals of the first color component and the second color component, respectively, in at least one of a block level, a video parameter set (VPS), a sequence parameter set (SPS), a picture parameter set (PPS), an adaptive parameter set (APS), a slice header, and a tile header.
[0227] In some examples, a first enable / disable flag associated with the luma component is decoded from the coded video bitstream, a second enable / disable flag associated with the chroma component is decoded from the coded video bitstream, and separated coding information for the luma component and the chroma component is determined based on the first enable / disable flag and the second enable / disable flag.
[0228] In some examples, a first enable / disable flag associated with the luma component is decoded from the coded video bitstream, a second enable / disable flag associated with the first chroma component is decoded from the coded video bitstream, and a third enable / disable flag associated with the second chroma component is decoded from the coded video bitstream, and then, based on the first enable / disable flag, the second enable / disable flag, and the third enable / disable flag, separate coding information for the luma component, the first chroma component, and the second chroma component is determined.
[0229] At (S2920), a first sample of a first color component at a position within the block is reconstructed based on a first loop filter configuration and a second sample of a second color component at a position within the block is reconstructed based on a second loop filter configuration, the first loop filter configuration being different from the second loop filter configuration.
[0230] In some embodiments, at least one of a deblocking filter, a constrained directional emphasis filter (CDEF), a loop restoration filter, a local sample offset (LSO) filter, and a cross-component sample offset (CCSO) filter is enabled in one of the first loop filter configuration and the second loop filter configuration, and at least one of the deblocking filter, the constrained directional emphasis filter (CDEF), the loop restoration filter, the local sample offset (LSO) filter, and the cross-component sample offset (CCSO) filter is disabled in the other of the first loop filter configuration and the second loop filter configuration.
[0231] In one embodiment, in response to disabling the intrablock copy mode of the chroma components and enabling the intrablock copy mode of the luma component, a deblocking filter, a constrained directional emphasis filter (CDEF), a loop restoration filter, a local sample offset (LSO) filter, and a cross component sample offset (CCSO) filter are all enabled in a second loop filter configuration associated with the chroma components.
[0232] In another embodiment, in response to disabling the intrablock copy mode of the chroma components and enabling the intrablock copy mode of the luma components, a local sample offset (LSO) filter and a cross component sample offset (CCSO) filter are enabled in a second loop filter configuration associated with the chroma components.
[0233] In another embodiment, in response to disabling the intrablock copy mode for the chroma components and enabling the intrablock copy mode for the luma components, both a constrained directional emphasis filter (CDEF) and a cross-component sample offset (CCSO) filter are enabled in a second loop filter configuration associated with the chroma components.
[0234] In some embodiments, a flag associated with a particular loop filter is decoded from a higher level syntax than the block, and the particular loop filter is applied to the luma component depending on whether the flag is true, regardless of the separated coding information.
[0235] The process (2900) proceeds to (S2999) and ends.
[0236] The process 2900 may be adapted as appropriate. Steps of the process 2900 may be modified and / or omitted. Additional steps may be added. Any suitable order of implementation may be used.
[0237] The embodiments of the present disclosure may be used separately or combined in any order. Furthermore, each of the methods (or embodiments), the encoder and the decoder may be implemented by a processing circuit (e.g., one or more processors or one or more integrated circuits). In one example, the one or more processors execute a program stored on a non-transitory computer-readable medium.
[0238] 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 30 shows a computer system (3000) suitable for implementing certain embodiments of the disclosed subject matter.
[0239] Computer software can be coded using any suitable machine code or computer language that can be assembled, compiled, linked, or similarly configured to create code containing instructions that can be executed directly by one or more computer central processing units (CPUs), graphics processing units (GPUs), etc., or by interpretation, microcode execution, etc.
[0240] The instructions may be executed on various types of computers or components thereof, including, for example, personal computers, tablet computers, servers, smart phones, gaming devices, Internet of Things devices, and the like.
[0241] The components illustrated in Figure 30 for the computer system (3000) 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. The arrangement of components should not be construed as having any dependency or requirement regarding any one or combination of components illustrated in the exemplary embodiment of the computer system (3000).
[0242] The computer system (3000) 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 tactile input (keystrokes, swipes, data glove movements, etc.), audio input (voice, clapping, etc.), visual input (gestures, etc.), and olfactory input (not shown). The human interface devices may also be used to capture certain media not necessarily directly associated with conscious human input, such as audio (speech, music, ambient sounds, etc.), images (scanned images, photographic images obtained from a still image camera, etc.), and video (two-dimensional video, three-dimensional video including stereoscopic video, etc.).
[0243] The input human interface devices may include one or more of a keyboard (3001), a mouse (3002), a trackpad (3003), a touch screen (3010), a data glove (not shown), a joystick (3005), a microphone (3006), a scanner (3007) and a camera (3008) (only one of each shown).
[0244] The computer system (3000) 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, for example, through haptic output, sound, light, and smell / taste. Such human interface output devices may include haptic output devices (e.g., haptic feedback via a touch screen (3010), data gloves (not shown), or joystick (3005), but may also be haptic feedback devices that do not function as input devices), audio output devices (speakers (3009), headphones (not shown), etc.), visual output devices (such as screens (3010) including CRT screens, LCD screens, plasma screens, OLED screens, etc., each with or without touch screen input capability, haptic feedback capability, some of which may output two-dimensional visual output or three or more dimensional output via means such as stereographic output, virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown), etc.), and printers (not shown).
[0245] The computer system (3000) may also include human accessible storage devices and their associated media, such as optical media including CD / DVD ROM / RW (3020) or similar media (3021) with CDs / DVDs, thumb drives (3022), and removable hard drives or solid state drives (3023), legacy magnetic media such as tapes and floppy disks (not shown), dedicated ROM / ASIC / PLD based devices such as security dongles (not shown), and the like.
[0246] Those skilled in the art should also understand that the term "computer-readable medium" as used in connection with the subject matter disclosed herein does not include transmission media, carrier waves, or other transitory signals.
[0247] The computer system (3000) may further include an interface (3054) to one or more communication networks (3055). The network may be, for example, a wireless, wired, or optical network. The network may further be a local, wide area, metropolitan, vehicular, industrial, real-time, delay-tolerant network, and the like. Examples of networks include local area networks such as Ethernet and wireless LAN, cellular networks including GSM, 3G, 4G, 5G, LTE, and the like, TV wired or wireless wide area digital networks including cable TV, satellite TV, and terrestrial broadcast TV, and vehicular and industrial networks including CANBus and the like. Certain networks generally require an external network interface adapter connected to a specific general-purpose data port or peripheral bus (3049) (e.g., a USB port of the computer system (3000)). Other networks are generally integrated into the core of the computer system (3000) by connecting 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 any of these networks, the computer system (3000) can communicate with other entities. Such communications may be unidirectional receive only (e.g., broadcast TV), unidirectional transmit only (e.g., from a CANbus to a particular CANbus device), or bidirectional, for example, to other computer systems using local or wide area digital networks. As noted above, specific protocols and protocol stacks may be used for each of these networks and network interfaces.
[0248] The aforementioned human interface devices, human accessible storage devices, and network interfaces may be connected to the core (3040) of the computer system (3000).
[0249] The cores (3040) may include one or more central processing units (CPUs) (3041), graphics processing units (GPUs) (3042), dedicated programmable processing units in the form of field programmable gate areas (FPGAs) (3043), hardware accelerators for specific tasks (3044), graphics adapters (3050), etc. These devices may be connected via a system bus (3048), along with read only memory (ROM) (3045), random access memory (3046), and internal mass storage devices (3047) such as internal hard drives, SSDs, etc. that are not accessible to the user. In some computer systems, the system bus (3048) is accessible in the form of one or more physical plugs, allowing expansion with additional CPUs, GPUs, etc. Peripheral devices may be connected directly to the core's system bus (3048) or via a peripheral bus (3049). In one example, a screen (3010) may be connected to the graphics adapter (3050). Peripheral bus architectures include PCI, USB, etc.
[0250] The CPU (3041), GPU (3042), FPGA (3043) and accelerator (3044) may combine to execute certain instructions that may constitute the aforementioned computer code. The computer code may be stored in a ROM (3045) or a RAM (3046). Transient data may also be stored in the RAM (3046) and permanent data may be stored, for example, in an internal mass storage device (3047). A cache memory, which may be closely associated with one or more of the CPU (3041), GPU (3042), mass storage device (3047), ROM (3045), RAM (3046), etc., may be used to enable fast storage and retrieval from any memory device.
[0251] 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.
[0252] By way of example and not of limitation, a computer system having the architecture (3000), and in particular the core (3040), may 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 may be media associated with a user-accessible mass storage device as described above, as well as specific storage of the core (3040) that is non-transitory in nature, such as mass storage device (3047) internal to the core or ROM (3045). Software implementing various embodiments of the present disclosure may be stored in such devices and executed by the core (3040). The computer-readable media may include one or more memory devices or chips, depending on the particular needs. The software may cause the core (3040), and in particular the processor (including CPU, GPU, FPGA, etc.) therein, to perform certain processes or certain portions of certain processes described herein, including defining data structures stored in RAM (3046) and modifying such data structures according to the processes defined by the software. Additionally or alternatively, the computer system may provide functionality as a result of logic hardwired or otherwise embodied in circuitry (e.g., accelerator (3044)) that may operate in place of or together with software to perform certain processes or certain portions of certain processes described herein. References to software may include logic, where appropriate, and vice versa. References to computer-readable media may include circuitry (such as integrated circuits (ICs)) that store software for execution, circuitry that embodies logic for execution, or both, where appropriate. The present disclosure includes any suitable combination of hardware and software. Appendix A: Acronyms JEM: joint exploration model VVC: versatile video coding BMS:benchmark set MV: Motion Vector HEVC: High Efficiency Video Coding MPM: Most likely mode WAIP: Wide-Angle Intra Prediction SEI: Supplementary Enhancement Information VUI: Video Usability Information GOP: Groups of Pictures TU: Transform Unit PU: Prediction Unit CTU: Coding Tree Unit CTB: Coding Tree Block PB: Prediction Block HRD:Hypothetical Reference Decoder SDR: Standard Dynamic Range SNR: Signal Noise Ratio CPU: Central Processing Unit GPU: Graphics Processing Unit CRT: Cathode Ray Tube LCD: Liquid-Crystal Display OLED: Organic Light-Emitting Diode CD: Compact Disc DVD: Digital Video Disc ROM: Read-Only Memory RAM: Random Access Memory ASIC: Application-Specific Integrated Circuit PLD: Programmable Logic Device LAN: Local Area Network GSM: Global System for Mobile communication LTE:Long-Term Evolution CANBus: Controller Area Network Bus USB: Universal Serial Bus PCI: Peripheral Component Interconnect FPGA: Field Programmable Gate Arrays SSD: Solid-state drive IC: Integrated Circuit CU: Coding Unit PDPC: Position Dependent Prediction Combination ISP: Intra Sub-Partitions SPS: Sequence Parameter Setting
[0253] While this disclosure has described some exemplary embodiments, there are alterations, permutations, and various substitute equivalents that fall within the scope of this disclosure. It should thus be understood that those skilled in the art can devise numerous systems and methods that, although not explicitly shown or described herein, embody the principles of the disclosure and are within its spirit and scope.
Claims
1. A method for filtering in video encoding, comprising: based on a determination that (i) an intra block copy (IBC) mode is disabled for a chroma component of a block and the IBC mode is enabled for a luma component of the block, or (ii) a separate partitioning structure is applied to the luma component of the block and the chroma component of the block; enabling at least one loop filter for the chroma components of the block; determining a first sample of the luma component at a location within the block based on a first loop filter configuration that does not include the at least one loop filter; determining a second sample of the chroma component at the location within the block based on a second loop filter arrangement including the at least one loop filter.
2. the IBC mode is disabled for the chroma component of the block, and the IBC mode is enabled for the luma component of the block; 2. The method of claim 1 , comprising: encoding separate coding information indicating that the IBC mode is disabled for the chroma components of the block and that the IBC mode is enabled for the luma component of the block.
3. The enabling step includes enabling at least one loop filter in the second loop filter configuration, the at least one loop filter including at least one of a deblocking filter, a constrained directional emphasis filter (CDEF), a loop reconstruction filter, a local sample offset (LSO) filter, and a cross-component sample offset (CCSO) filter; 2. The method of claim 1, wherein the method comprises disabling the deblocking filter, the CDEF, the loop recovery filter, the LSO filter, and the CCSO filter in the first loop filter configuration.
4. The method of claim 3, wherein the enabling step includes the step of enabling the deblocking filter, the CDEF, the loop restoration filter, the LSO filter, and the CCSO filter in the second loop filter configuration associated with the chroma component in response to the IBC mode being disabled for the chroma component and the IBC mode being enabled for the luma component.
5. The method of claim 3, wherein the enabling step includes a step of enabling one of the LSO filter or the CCSO filter in the second loop filter configuration associated with the chroma component in response to the IBC mode being disabled for the chroma component and the IBC mode being enabled for the luma component.
6. The method of claim 3, wherein the enabling step includes a step of enabling the CDEF and the CCSO filter in the second loop filter configuration associated with the chroma component in response to the IBC mode being disabled for the chroma component and the IBC mode being enabled for the luma component.
7. A step of determining separated coding information for the luma and chroma components in the block, the separated coding information indicating at least one of: (i) an enabling / disabling difference of the IBC mode for the luma and chroma components; and (ii) the separated partitioning structure for the luma and chroma components.
2. The method of claim 1, further comprising: encoding the separated coding information in at least one of a block level, a video parameter set (VPS), a sequence parameter set (SPS), a picture parameter set (PPS), an adaptive parameter set (APS), a slice header, and a tile header. determining, based on the separation of the chroma and luma components, a first enable / disable flag associated with the luma component and a second enable / disable flag associated with the chroma components; and encoding the first enable / disable flag and the second enable / disable flag in at least one of a block level, a video parameter set (VPS), a sequence parameter set (SPS), a picture parameter set (PPS), an adaptation parameter set (APS), a slice header, and a tile header.
9. The separated partitioning structure is applied to the luma component of the block and to the chroma component of the block; The method of claim 1 , comprising: encoding separate coding information indicating that the separate partitioning structure applies to the luma component of the block and to the chroma components of the block.
10. An apparatus for filtering in video encoding, comprising: processing circuitry; The processing circuitry includes: Apparatus configured to carry out the method according to any one of claims 1 to 9.
11. A program that causes a processor to execute a method according to any one of claims 1 to 9.
12. A method for filtering in video decoding, comprising the steps of: based on a determination that (i) an intra block copy (IBC) mode is disabled for a chroma component of a block and the IBC mode is enabled for a luma component of the block, or (ii) a separate partitioning structure is applied to the luma component of the block and the chroma component of the block; enabling at least one loop filter for the chroma components of the block; reconstructing a first sample of the luma component at a position within the block based on a first loop filter configuration that does not include the at least one loop filter; and reconstructing a second sample of the chroma component at the location within the block based on a second loop filter arrangement including the at least one loop filter.