Method, device, and computer program for video coding
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- TENCENT AMERICA LLC
- Filing Date
- 2025-08-27
- Publication Date
- 2026-05-07
AI Technical Summary
Existing video coding technologies face challenges in efficiently reducing redundancy and maintaining image quality, particularly in scenarios where reference pictures have unequal weighting, leading to suboptimal compression and reconstruction of chroma and luma components.
Implementing refinement techniques such as bidirectional optical flow (BDOF) and decoder-side motion vector refinement (DMVR) to enhance video encoding and decoding, specifically disabling these techniques when equal-weighting conditions for chroma and luma components are not met, and ensuring proper reference picture ordering.
Improves video compression efficiency by optimizing the reconstruction process, maintaining image quality, and reducing data redundancy, especially in scenarios with unequal weighting of reference pictures.
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
[Background technology]
[0001] Incorporation by Reference This application claims the benefit of priority to U.S. Patent Application No. 16 / 851,052, entitled "Method and Apparatus for Video Coding," filed April 16, 2020, which in turn claims the benefit of priority to U.S. Provisional Application No. 62 / 836,598, entitled "Conditions for Applying DMVR / BDOF," filed April 19, 2019. The entire disclosures of the prior applications are incorporated herein by reference in their entireties.
[0002] Technical Field This disclosure describes embodiments generally related to video coding.
[0003] background The background discussion provided in this application is intended to generally present the context of the present disclosure. Work under the names of the current inventors is not admitted, expressly or impliedly, as prior art to the present disclosure to the extent that that work is described in this background section or in a descriptive manner that would not otherwise qualify it as prior art at the time of filing.
[0004] Video coding and decoding can be performed using inter-picture prediction with motion compensation. Uncompressed digital video can contain a series of pictures, each with spatial dimensions of, for example, 1920 x 1080 luminance samples and associated chrominance samples. The series of pictures can have a fixed or variable picture rate (informally known as the frame rate), for example, 60 pictures per second, or 60 Hz. Uncompressed video has significant bitrate requirements. For example, 1080p60 4:2:0 video (1920 x 1080 luminance sample resolution at a 60 Hz frame rate) with 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 of the goals of video coding and decoding is to reduce redundancy in the input video signal through compression. Compression can sometimes help reduce the bandwidth or storage requirements by more than two orders of magnitude. Both lossless and non-lossless compression, as well as combinations of them, can be used. Lossless compression refers to a technique where an exact copy of the original signal can be reconstructed from a compressed version of the original signal. When non-lossless compression is used, the reconstructed signal may not be identical to the original signal, but the distortion between the original and reconstructed signal is small enough that the reconstructed signal is useful for the intended application. For video, non-lossless compression is widely used. The amount of acceptable distortion depends on the application; for example, users of certain consumer streaming applications may be able to tolerate higher distortion than users of television distribution applications. Achievable compression ratios can reflect that higher acceptable / tolerable distortion can result in higher compression ratios.
[0006] Motion compensation may be a non-lossless compression technique in which blocks of sample data from a previously reconstructed picture or portion thereof (reference picture) are used to predict a newly reconstructed picture or portion thereof, after being spatially shifted in the direction indicated by a motion vector (hereafter referred to as MV). In some cases, the reference picture may be the same as the picture currently being reconstructed. MV may have two dimensions, X and Y, or three dimensions, the third of which is an indication of the reference picture in use (the latter may indirectly be considered a temporal dimension).
[0007] In some video compression techniques, the motion vector applicable to a particular area of sample data can be predicted from other motion vectors, e.g., from those associated with other areas of sample data spatially adjacent to the area being reconstructed and preceding that MV in decoding order. This can significantly reduce the amount of data required to code the motion vector, thereby eliminating redundancy and increasing compression. MV prediction can work effectively, for example, when coding input video signals derived from a camera (known as natural video), because there is a statistical likelihood that areas larger than the area to which a single motion vector is applicable will move in similar directions and, therefore, can potentially be predicted using similar motion vectors derived from MVs in neighboring areas. This results in a motion vector for a given area that is found to be similar or identical to the motion vector predicted from surrounding MVs, which, after entropy coding, can be represented using fewer bits than would be used to code the motion vector directly. In some cases, MV prediction can be an example of lossless compression of a signal (i.e., a motion vector) derived from the original signal (i.e., a sample stream). In other cases, the MV prediction itself may be non-lossless due to rounding errors, for example when computing a predictor from several surrounding MVs.
[0008] Various MV prediction mechanisms are described in H.265 / HEVC (ITU-T Rec. H.265, “High Efficiency Video Coding”, December 2016). Among the many MV prediction mechanisms provided by H.265, the one described in this application is a technique hereafter referred to as “spatial merging.”
[0009] Referring to Figure 1, a current block (101) contains samples that have been found by the encoder during a motion search process to be predictable from a spatially shifted previous block of the same size. Instead of coding its MV directly, the MV can be derived from metadata associated with one or more reference pictures, e.g., from the most recent reference picture (in decoding order) using MVs associated with A0, A1, and any of five neighboring blocks (102 to 106, respectively), denoted as B0, B1, and B2. In H.265, MV prediction can use predictors from the same reference picture as the neighboring blocks. Summary of the Invention
[0010] Aspects of the disclosure provide methods and apparatuses for video encoding / decoding. In some examples, the apparatus for video decoding includes a receiving circuit and a processing circuit. For example, the processing circuit decodes prediction information for a current block in a current picture from a coded video bitstream. The prediction information indicates an inter-prediction mode that may utilize refinement techniques based on a first reference picture and a second reference picture. The processing circuit determines whether a first equal-weighting condition for chroma components from the first reference picture and the second reference picture is satisfied. In response to not satisfying the first equal-weighting condition for chroma components from the first reference picture and the second reference picture, the processing circuit disables refinement techniques in reconstructing samples in the current block.
[0011] In some embodiments, the processing circuit disables refinement techniques in the reconstruction of luma samples in the current block in response to not satisfying a first equal-weighting condition for chroma components from the first reference picture and the second reference picture. In some examples, the processing circuit determines whether a second equal-weighting condition for luma components from the first reference picture and the second reference picture is satisfied. Then, the processing circuit disables refinement techniques in the reconstruction of luma samples in the current block in response to not satisfying at least one of the first equal-weighting condition for chroma components and the second equal-weighting condition for luma components.
[0012] In some embodiments, the processing circuitry disables refinement techniques in the reconstruction of chroma samples in the current block in response to not satisfying a first equal-weighting condition for chroma components from the first reference picture and the second reference picture.
[0013] It should be noted that the refinement techniques may include at least one of bidirectional optical flow (BDOF) and decoder-side motion vector refinement (DMVR).
[0014] In some embodiments, one of the first reference picture and the second reference picture has a picture order count greater than the current picture, and the other of the first reference picture and the second reference picture has a picture order count less than the current picture.
[0015] In some embodiments, the processing circuit determines that the equal weighting condition of the chroma components from the first reference picture and the second reference picture is not satisfied based on at least one of a first flag for the chroma weight of the first reference picture and a second flag for the chroma weight of the second reference picture not being equal to zero.
[0016] 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 video decoding method for video decoding. [Brief explanation of the drawings]
[0017] Further features, nature and various advantages of the disclosed subject matter will become more apparent from the following detailed description and accompanying drawings.
[0018] [Figure 1] FIG. 1 is a schematic diagram of a current block and its surrounding spatial merge candidates in one example.
[0019] [Figure 2] FIG. 2 is a simplified block diagram schematic of a communication system (200) according to one embodiment.
[0020] [Figure 3] FIG. 3 is a simplified block diagram schematic of a communication system (300) according to one embodiment.
[0021] [Figure 4] FIG. 2 is a schematic diagram of a simplified block diagram of a decoder according to one embodiment.
[0022] [Figure 5] FIG. 2 is a schematic diagram of a simplified block diagram of an encoder according to one embodiment.
[0023] [Figure 6] 4 shows a block diagram of an encoder according to another embodiment;
[0024] [Figure 7] 10 shows a block diagram of a decoder according to another embodiment;
[0025] [Figure 8]An example of an expanded coding unit area in bi-directional optical flow (BDOF) is shown.
[0026] [Figure 9] An example of decoder-side motion vector refinement (DMVR) is shown.
[0027] [Figure 10A] The following is a list of conditions for applying the BDOF technique. [Figure 10B] The following is a list of conditions for applying the BDOF technique.
[0028] [Figure 11A] The following is a list of conditions for applying DMVR technology. [Figure 11B] The following is a list of conditions for applying DMVR technology.
[0029] [Figure 12] 1 shows a flowchart outlining an example process according to some embodiments of the present disclosure.
[0030] [Figure 13] 1 is a schematic diagram of a computer system according to an embodiment. DETAILED DESCRIPTION OF THE INVENTION
[0031] Figure 2 illustrates a simplified block diagram of a communication system (200) according to one embodiment of the present disclosure. The communication system (200) includes multiple terminal devices that can communicate with each other, for example, via a network (250). For example, the communication system (200) includes a first pair of terminal devices (210) and (220) interconnected via the network (250). In the example of Figure 2, the first pair of terminal devices (210) and (220) perform unidirectional transmission of data. For example, the terminal device (210) can code video data (e.g., a stream of video pictures captured by the terminal device (210)) for transmission to the other terminal device (220) via the network (250). The coded video data can be transmitted in the form of one or more coded video bitstreams. The terminal device (220) can receive the coded video data from the network (250), decode the coded video data to reconstruct a video picture, and display the video picture according to the reconstructed video data. Unidirectional data transmission may be common in media serving applications, etc.
[0032] In another example, the communication system (200) includes a second pair of terminal devices (230) and (240) for bidirectional transmission of coded video data, such as may occur during a video conference. For bidirectional data transmission, for example, each of the terminal devices (230) and (240) can code video data (e.g., a stream of video pictures captured by the terminal device) for transmission to the other of the terminal devices (230) and (240) over the network (250). Each of the terminal devices (230) and (240) can also receive coded video data transmitted by the other of the terminal devices (230) and (240), decode the coded video data to reconstruct the video pictures, and display the video pictures on an accessible display device in accordance with the reconstructed video data.
[0033] In the example of FIG. 2 , the terminal devices 210, 220, 230, and 240 are shown as servers, personal computers, and smartphones, but 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. The network 250 may represent any number of networks that carry coded video data between the terminal devices 210, 220, 230, and 240, including, for example, wired and / or wireless communication networks. The communication network 250 may exchange data over circuit-switched and / or packet-switched channels. Exemplary networks include telecommunications networks, local area networks, wide area networks, and / or the Internet. For purposes of the present disclosure, the architecture and topology of the network 250 may not be important to the operation of the present disclosure, unless otherwise described below.
[0034] Figure 3 illustrates the placement of a video encoder and video decoder in a streaming environment as an example application of the disclosed subject matter, which 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.).
[0035] The streaming system may include a video source (301), such as a digital camera, and may also include a capture subsystem (313) capable of generating a stream of uncompressed video pictures (302). In one example, the video picture stream (302) includes samples captured by the digital camera. The video picture stream (302), depicted as a thicker line to emphasize its larger amount of data compared to the encoded video data (304) (or coded video bitstream), may be processed by an electronic device (320) including a video encoder (303) coupled to the video source (301). The video encoder (303) may include hardware, software, or a combination thereof to enable or implement aspects of the disclosed subject matter, as described in more detail below. The encoded video data (304) (or encoded video bitstream (304)), depicted as a thin line to emphasize its smaller amount of data compared to the stream of video pictures (302), can be stored on the streaming server (305) for future use. One or more streaming client subsystems, such as the client subsystems (306) and (308) of FIG. 3, can access the streaming server (305) to retrieve copies (307) and (309) of the encoded video data (304). The client subsystem (306) can include a video decoder (310), for example, within the electronic device (330). The video decoder (310) decodes the incoming copy of the encoded video data (307) and generates an output stream of video pictures (311) that can be rendered on a display (312) (e.g., a display screen) or other rendering device (not shown). In some streaming systems, the encoded video data (304), (307), and (309) (e.g., video bitstreams) may be encoded according to a particular video coding / compression standard.Examples of these standards include ITU-T Recommendation H.265. In one example, a video coding standard under development is informally known as Versatile Video Coding (VVC). The disclosed subject matter may be used in the context of VVC.
[0036] It should be noted that the electronic devices 320 and 330 may include other components (not shown). For example, the electronic device 320 may include a video decoder (not shown), and the electronic device 330 may also include a video encoder (not shown).
[0037] 4 shows a block diagram of a video decoder (410) according to one embodiment of the present disclosure. The video decoder (410) can be included in an electronic device (430). The electronic device (430) can include a receiver (431) (e.g., receiving circuitry). The video decoder (410) can be used in place of the video decoder (310) in the example of FIG. 3.
[0038] The receiver (431) can receive one or more coded video sequences to be decoded by the video decoder (410); in the same or another embodiment, it can receive one coded video sequence at a time, where the decoding of each coded video sequence is independent of the other coded video sequences. The coded video sequences can be received from a channel (401), which can be a hardware or software link to a storage device that stores the coded video data. The receiver (431) can receive the coded video data along with other data, such as coded audio data and / or auxiliary data streams, which can be transferred using respective entities (not shown). The receiver (431) can separate the coded video sequences from other data. To address network jitter, a buffer memory (415) can be coupled between the receiver (431) and the entropy decoder / parser (420) (hereinafter referred to as the "parser (420)"). In certain applications, the buffer memory (415) is part of the video decoder (410). In other cases, it may be external to the video decoder (410) (not shown). In yet another example, there may be a buffer memory (not shown) external to the video decoder (410), for example, to deal with network jitter, and even another buffer memory (415) internal to the video decoder (410), for example, to handle playback timing. If the receiver (431) is receiving data from a store-and-forward device with sufficient bandwidth and controllability or from a synchronous network, the buffer memory (415) may not be necessary or may be small.For use in best-effort packet networks such as the Internet, a buffer memory (415) may be required, which may be relatively large and may advantageously be adaptively sized, and may be implemented at least in part in an operating system or similar element (not shown) outside the video decoder (410).
[0039] The video decoder (410) may include a parser (420) for reconstructing symbols (421) from the coded video sequence. These symbol categories include information used to manage the operation of the video decoder (410) and, potentially, information for controlling a rendering device, such as a rendering device (412) (e.g., a display screen) that is not an integral part of the electronic device (430) but may be coupled to the electronic device (430), as shown in FIG. 4. The rendering device control information may be in the form of supplemental enhancement information (SEI) messages or video usability information (VUI) parameter set fragments (not shown). The parser (420) may parse / entropy decode the received coded video sequence. The coding of the coded video sequence may follow a variety of video coding techniques or standards, including variable length coding, Huffman coding, arithmetic coding with or without context effects, and so forth. The parser (420) can extract from the coded video sequence a set of subgroup parameters for at least one subgroup of pixels in the video decoder based on at least one parameter corresponding to the group. The subgroup can 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 (420) can also extract from the coded video sequence information such as transform coefficients, quantization parameter values, motion vectors, etc.
[0040] The parser (420) is capable of performing an entropy decoding / parsing process on the video sequence received from the buffer memory (415) to generate symbols (421).
[0041] The reconstruction of the symbols (421) may include several different units depending on the type of coded video picture or portion thereof (inter- and intra-picture, inter- and intra-block) and other factors. Which units are included and how can be controlled by subgroup control information parsed by the parser (420) from the coded video sequence. The flow of such subgroup control information between the parser (420) and the following units is not depicted for clarity.
[0042] Beyond the functional blocks already described, the video decoder (410) may be conceptually subdivided into a number of functional units, as described below. In a practical implementation operating within commercial constraints, many of these units will 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 appropriate.
[0043] The first unit is a scalar / inverse transform unit (451), which receives quantized transform coefficients as well as control information (including the transform to be used, block size, quantization factor, quantization scaling matrix, etc.) from the parser (420) as symbols (421). The scalar / inverse transform unit (451) can output blocks containing sample values that can be input to an aggregator (455).
[0044] In some cases, the output samples of the scaler / inverse transform (451) 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 can be provided by the intra-picture prediction unit (452). In some cases, the intra-picture prediction unit (452) generates blocks of the same size and shape as the block being reconstructed using already reconstructed surrounding information retrieved from the current picture buffer (458). The current picture buffer (458), for example, buffers a partially reconstructed and / or fully reconstructed current picture. The aggregator (455) optionally adds, on a sample-by-sample basis, the prediction information generated by the intra-prediction unit (452) to the output sample information as provided by the scaler / inverse transform unit (451).
[0045] In other cases, the output samples of the scalar / inverse transform unit (451) may relate to a block that may be inter-coded and motion-compensated. In such cases, the motion-compensated prediction unit (453) may access the reference picture memory (457) to retrieve samples used for prediction. After motion-compensating the retrieved samples according to the symbols (421) associated with the block, these samples are added by the aggregator (455) to the output of the scalar / inverse transform unit (451) (in this case, referred to as residual samples or residual signals) to generate output sample information. The addresses in the reference picture memory (457) from which the motion-compensated prediction unit (453) fetches prediction samples may be controlled by motion vectors available to the motion-compensated prediction unit (453), for example, in the form of symbols (421) that may have X, Y, and reference picture components. Motion compensation can also include interpolation of sample values taken from a reference picture memory (457), motion vector prediction mechanisms, etc., where sub-sample accurate motion vectors are used.
[0046] The output samples of the aggregator (455) may be subjected to various loop filtering techniques in the loop filter unit (456). The video compression techniques are controlled by parameters contained in the coded video sequence (also called the coded video bitstream) and made available to the loop filter unit (456) as symbols (421) from the parser (420), but may include in-loop filter techniques that may be responsive to meta-information obtained during decoding of previous portions (in decoding order) of the coded picture or coded video sequence, as well as to previously reconstructed loop-filtered sample values.
[0047] The output of the loop filter unit (456) can be a stream of samples that can be output to a rendering device (412) or stored in a reference picture memory (457) for use in future inter-picture prediction.
[0048] Once a given coded picture is fully reconstructed, it can be used as a reference picture for future prediction. For example, once the coded picture corresponding to the current picture is fully reconstructed and the coded picture is identified as a reference picture (e.g., by the parser (420)), the current picture buffer (458) can become part of the reference picture memory (457), and a new current picture buffer can be reallocated before starting the reconstruction of a subsequent coded picture.
[0049] The video decoder (410) can perform decoding operations according to a predetermined video compression technique in a standard, such as ITU-T Rec. H.265. A coded video sequence can conform to the syntax specified by the video compression technique or standard in use, in the sense that the coded video sequence conforms to both the syntax of the video compression technique or standard and the profile, as documented in the video compression technique or standard. Specifically, a profile can select certain tools from all tools available in the video compression technique or standard as the only tools that can be used under that profile. Compliance also requires that the complexity of the coded video sequence be within a range defined by the level of the video compression technique or standard. In some cases, the level limits the maximum picture size, maximum frame rate, maximum reconstruction sample rate (e.g., measured in megasamples per second), maximum reference picture size, etc. The limits set by the level can, in some cases, be further constrained by a hypothetical reference decoder (HRD) specification and metadata for HRD buffer management signaled in the coded video sequence.
[0050] In one embodiment, the receiver (431) may 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 (410) to properly decode the data and / or to more accurately reconstruct the original video data. The additional data may be in the form of, for example, temporal, spatial, or signal-to-noise ratio (SNR) enhancement layers, redundant slices, redundant pictures, forward error correction codes, etc.
[0051] 5 shows a block diagram of a video encoder (503) according to one embodiment of the present disclosure. The video encoder (503) is included in an electronic device (520). The electronic device (520) includes a transmitter (540) (e.g., a transmission circuit). The video encoder (503) can be used in place of the video encoder (303) in the example of FIG. 3.
[0052] The video encoder (503) may receive video samples from a video source (501) (which in the example of FIG. 5 is not part of the electronic device (520)) capable of capturing video images to be coded by the video encoder (503). In another example, the video source (501) is part of the electronic device (520).
[0053] The video source (501) may provide a source video sequence to be coded by the video encoder (503) in the form of a digital video sample stream, which may be of any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, ...), any color space (e.g., BT.601 YCrCB, RGB, ...), and any suitable sampling structure (e.g., YCrCb 4:2:0, YCrCb 4:4:4). In a media serving system, the video source (501) may be a storage device that stores pre-prepared video. In a video conferencing system, the video source (501) may be a camera that captures local image information as a video sequence. The video data may be provided as multiple individual pictures that convey motion when viewed in sequence. The picture itself 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 will readily understand the relationship between pixels and samples. The following discussion focuses on examples.
[0054] According to one embodiment, the video encoder (503) is capable of coding and compressing pictures of a source video sequence into a coded video sequence (543) in real time or under any other time constraint required by the application. Enforcing an appropriate coding rate is one function of the controller (550). In some embodiments, the controller (550) controls and is functionally coupled to other functional units as described below, the coupling of which is not depicted for clarity. Parameters set by the controller (550) may include rate control-related parameters (picture skip, quantizer, lambda value for rate-distortion optimization techniques, etc.), picture size, group-of-picture (GOP) layout, maximum motion vector search range, etc. The controller (550) may be configured with other appropriate functions associated with the video encoder (503) optimized for a particular system design.
[0055] In some embodiments, the video encoder (503) is configured to operate in a coding loop. As a simplified explanation, in one example, the coding loop may include a source coder (530) (e.g., responsible for generating a symbol stream based on an input picture to be coded and reference pictures) and a (local) decoder (533) embedded in the video encoder (503). The decoder (533) reconstructs the symbols to generate sample data in a manner similar to that generated by a (remote) decoder (since any compression between the symbols and the coded video bitstream is lossless in the video compression techniques contemplated by the disclosed subject matter). The reconstructed sample stream (sample data) is input to a reference picture memory (534). Because decoding the symbol stream yields bit-exact results independent of the location of the decoder (local or remote), the contents of the reference picture memory (534) are also bit-exact between the local and remote encoders. In other words, the encoder's predictor "sees" the exact same sample values for the reference picture samples that the decoder would "see" if it were using prediction during decoding. This basic principle of reference picture synchronization (and the resulting drift if synchronization cannot be maintained, e.g., due to channel errors) is used in several related technologies as well.
[0056] The operation of the "local" decoder (533) may be the same as that of a "remote" decoder, such as the video decoder (410) already described in detail above in connection with Figure 4. However, briefly referring also to Figure 4, because symbols are available and the encoding / decoding of the symbols into a coded video sequence by the entropy coder (545) and parser (420) may be lossless, the entropy decoding portion of the video decoder (410), including the buffer memory (415) and parser (420), may not be fully implemented in the local decoder (533).
[0057] An observation that can be made at this point is that decoder techniques other than analysis / entropy decoding that are present in a decoder must necessarily be present in the corresponding encoder, in substantially identical 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, as they are the reverse of the decoder techniques that have been comprehensively described. Only in certain areas is a more detailed description necessary, and is provided below.
[0058] In operation, the source coder (530), in some instances, 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 (532) codes differences between pixel blocks of the input picture and pixel blocks of reference pictures that may be selected as predictive references for the input picture.
[0059] The local video decoder (533) can decode coded video data of pictures that can be designated as reference pictures based on symbols generated by the source coder (530). The operation of the coding engine (532) can advantageously be a non-lossless process. When the coded video data is decoded by a video decoder (not shown in FIG. 5), the reconstructed video sequence can typically be a replica of the source video sequence with some errors. The local video decoder (533) can repeat the decoding process that can be performed by the video decoder on the reference pictures, causing the reconstructed reference pictures to be stored in the reference picture cache (534). In this way, the video encoder (503) can locally store copies of reconstructed reference pictures that have common content with reconstructed reference pictures obtained by a far-end video decoder (assuming there are no transmission errors).
[0060] The predictor (535) can perform a prediction search for the coding engine (532). That is, for a new picture to be coded, the predictor (535) can search the reference picture memory (534) for sample data (as candidate reference pixel blocks) or predetermined metadata (reference picture motion vectors, block shapes, etc.), which may serve as suitable prediction references for the new picture. The predictor (535) can operate on a sample-block-pixel-block basis to find suitable prediction references. In some cases, as determined by the search results obtained by the predictor (535), an input picture may have prediction references drawn from multiple reference pictures stored in the reference picture memory (534).
[0061] The controller (550) may manage the coding operations of the source coder (530), including, for example, setting parameters and subgroup parameters used to encode the video data.
[0062] All outputs of the aforementioned functional units can be subjected to entropy coding in an entropy coder (545), which converts the symbols produced by the various functional units into a coded video sequence by losslessly compressing the symbols according to techniques such as Huffman coding, variable length coding, or arithmetic coding.
[0063] The transmitter (540) can buffer the coded video sequence, as produced by the entropy coder (545), and prepare it for transmission over a communication channel (560), which may be a hardware or software link to a storage device that stores the coded video data. The transmitter (540) can merge the coded video data from the video coder (503) with other data to be transmitted, such as coded audio data and / or auxiliary data streams (sources not shown).
[0064] The controller (550) can manage the operation of the video encoder (503). During coding, the controller (550) can assign a particular coded picture type to each coded picture, which can affect the coding technique that can be applied to each picture. For example, a picture may frequently be assigned as one of the following picture types:
[0065] An intra picture (I-picture) is one that can be coded and decoded without using any other picture in the 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 these variations of I-pictures and their respective uses and characteristics.
[0066] A predicted picture (P-picture) can be coded and decoded using intra- or inter-prediction, which uses at most one motion vector and reference index to predict the sample values of each block.
[0067] Bidirectionally predicted pictures (B-pictures) can be coded and decoded using intra- or inter-prediction, which uses at most two motion vectors and reference indices to predict the sample values of each block. Similarly, multiple predicted pictures can use more than two reference pictures and associated metadata for the reconstruction of a block.
[0068] A source picture is typically spatially subdivided into multiple sample blocks (e.g., blocks of 4x4, 8x8, 4x8, or 16x16 samples) and can be coded block by block. Blocks can be predictively coded with reference to other (already coded) blocks, as determined by the coding assignment applied to the respective picture. For example, blocks of an I-picture can be non-predictively coded, or they can be predictively coded with reference to previously coded blocks of the same picture (spatial prediction or intra-prediction). Pixel blocks of a P-picture can be predictively coded with spatial or temporal prediction with reference to one previously coded reference picture. Blocks of a B-picture can be predictively coded with spatial or temporal prediction with reference to one or two previously coded reference pictures.
[0069] The video encoder (503) may perform coding operations according to a predetermined video coding technique or standard, such as ITU-T Rec. H.265. In this operation, the video encoder (503) may perform various compression operations, including predictive coding operations that exploit temporal and spatial redundancies in the input video sequence. The coded video data may therefore conform to a syntax specified by the video coding technique or standard being used.
[0070] In one embodiment, the transmitter (540) can transmit additional data along with the coded video. The source coder (530) can include such data as part of the coded video sequence. The additional data can include temporal, spatial, and SNR enhancement layers, as well as other types of redundant data (such as redundant pictures and slices, SEI messages, VUI parameter set fragments, etc.).
[0071] Video can be captured as multiple source pictures (video pictures) in a time sequence. Intra-picture prediction (often abbreviated as intra-prediction) exploits spatial correlation within a given picture, while inter-picture prediction exploits correlation (temporal or otherwise) between pictures. In one example, a particular picture under encoding / decoding, called the current picture, is divided into blocks. If a block in the current picture is similar to a reference block in a reference picture that was previously coded and is still buffered in the video, the block in the current picture can be coded by a vector called a motion vector. The motion vector points to a reference block within the reference picture and may have a third dimension that identifies the reference picture if multiple reference pictures are used.
[0072] In some embodiments, bi-prediction techniques may be used for inter-picture prediction. Bi-prediction techniques use two reference pictures, such as a first reference picture and a second reference picture, that both precede the current picture in decoding order (but may be past and future, respectively, in display order) in the video. A block in the current picture may be coded with 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 and second reference blocks.
[0073] Furthermore, to improve coding efficiency, it is possible to use merge mode techniques for inter-picture prediction.
[0074] According to some embodiments of the present disclosure, prediction, such as inter-picture prediction and intra-picture prediction, is performed on a block-by-block basis. For example, according to the HEVC standard, pictures in a video picture sequence are partitioned into coding tree units (CTUs) for compression, and CTUs within a picture have the same size, such as 64x64 pixels, 32x32 pixels, or 16x16 pixels. Generally, a CTU includes three coding tree blocks (CTBs): one luma CTB and two chroma CTBs. Each CTU can be recursively quadtree partitioned into one or more coding units (CUs). For example, a 64x64 pixel CTU can be partitioned into one CU of 64x64 pixels, four CUs of 32x32 pixels, or 16 CUs of 16x16 pixels. In one example, each CU is analyzed to determine the CU's prediction type, such as an inter-prediction type or an intra-prediction type. A CU is divided into one or more prediction units (PUs) depending on temporal and / or spatial predictability. Generally, each PU includes a luma prediction block (PB) and two chroma PBs. In one embodiment, prediction operations in coding (encoding / decoding) are performed in units of prediction blocks. Using a luma prediction block as an example of a prediction block, the prediction block includes a matrix of values (e.g., luma values) for pixels, such as 8x8 pixels, 16x16 pixels, 8x16 pixels, 16x8 pixels, etc.
[0075] 6 shows a diagram of a video encoder (603) according to another embodiment of the present disclosure. The video encoder (603) is configured to receive a processed block of sample values (e.g., a predictive block) in a current video picture in a sequence of video pictures and encode the processed block into a coded picture that is part of a coded video sequence. In one example, the video encoder (603) is used in place of the video encoder (303) of the example of FIG. 3.
[0076] In an HEVC example, the video encoder (603) receives a matrix of sample values for a processing block, such as an 8x8 sample prediction block. The video encoder (603) determines whether the processing block is best coded using intra mode, inter mode, or bi-prediction mode, e.g., using rate-distortion optimization. If the processing block is to be coded in intra mode, the video encoder (603) may use intra prediction techniques to encode the processing block into a coded picture; if the processing block is to be coded in inter mode or bi-prediction mode, the video encoder (603) may use inter prediction techniques or bi-prediction techniques, respectively, to encode the processing block into a coded picture. In certain video coding techniques, the merge mode may be an inter prediction picture sub-mode, in which case the motion vector is derived from one or more motion vector predictors without the benefit of any motion vector components coded outside the predictor. In certain other video coding techniques, there may be motion vector components applicable to the current block. In one example, the video encoder (603) includes other components, such as a mode decision module (not shown), to determine the mode of the processing block.
[0077] In the example of Figure 6, the video encoder (603) includes an inter-encoder (630), an intra-encoder (622), a residual calculator (623), a switch (626), a residual encoder (624), a general controller (621), and an entropy encoder (625) coupled together as shown in Figure 6.
[0078] The inter-encoder (630) is configured to receive samples of a current block (e.g., a processing block), compare the block with one or more reference blocks in a reference picture (e.g., a block in a previous picture and a block in a subsequent picture), generate inter-prediction information (e.g., a description of redundant information due to the encoding technique, motion vectors, merge mode information), and calculate an inter-prediction result (e.g., a predicted block) based on the inter-prediction information using any suitable technique. In some examples, the reference picture is a decoded reference picture that has been decoded based on the coded video information.
[0079] The intra encoder (622) is configured to receive samples of a current block (e.g., a processing block), optionally compare the block to previously coded blocks in the same picture, generate transformed and quantized coefficients, and optionally generate intra prediction information (e.g., intra prediction direction information according to one or more intra coding techniques). In one example, the intra encoder (622) also calculates an intra prediction result (e.g., a prediction block) based on the intra prediction information and reference blocks in the same picture.
[0080] The general controller (621) is configured to determine general control data and control other components of the video encoder (603) based on the general control data. In one example, the general controller (621) determines the mode of the block and provides a control signal to the switch (626) based on the mode. For example, if the mode is intra mode, the general controller (621) controls the switch (626) to select intra mode results for use by the residual calculator (623) and the entropy encoder (625) to select intra prediction information and include it in the bitstream; if the mode is inter mode, the general controller (621) controls the switch (626) to select inter prediction results for use by the residual calculator (623) and the entropy encoder (625) to select inter prediction information and include it in the bitstream.
[0081] The residual calculator (623) is configured to calculate the difference (residual data) between the received block and a prediction result selected from the intra-encoder (622) or the inter-encoder (630). The residual encoder (624) is configured to operate on the residual data to encode the residual data and generate transform coefficients. In one example, the residual encoder (624) is configured to transform the residual data from the spatial domain to the frequency domain 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 (603) also includes a residual decoder (628). The residual decoder (628) is configured to perform an inverse transform and generate decoded residual data. The decoded residual data can be used by the intra-encoder (622) and the inter-encoder (630), as appropriate. For example, the inter-encoder (630) may generate decoded blocks based on the decoded residual data and inter-prediction information, and the intra-encoder (622) may generate decoded blocks based on the decoded residual data and intra-prediction information. The decoded blocks are processed appropriately to generate decoded pictures, which may be buffered in memory circuitry (not shown) and, in some instances, used as reference pictures.
[0082] The entropy encoder (625) is configured to format a bitstream to include the coded blocks. The entropy encoder (625) is configured to include various information in accordance with an appropriate standard, such as the HEVC standard. In one example, the entropy encoder (625) is configured to include general control data, selected prediction information (e.g., intra-prediction information or inter-prediction information), residual information, and other appropriate information in the bitstream. Note that, when coding blocks in a merged sub-mode of either an inter mode or a bi-prediction mode in accordance with the disclosed subject matter, the residual information is not present.
[0083] 7 shows a diagram of a video decoder (710) according to another embodiment of the present disclosure. The video decoder (710) is configured to receive coded pictures that are part of a coded video sequence and decode the coded pictures to generate reconstructed pictures. In one embodiment, the video decoder (710) is used in place of the video decoder (310) in the example of FIG. 3.
[0084] In the example of Figure 7, the video decoder (710) includes an entropy decoder (771), an inter decoder (780), a residual decoder (773), a reconstruction module (774), and an intra decoder (772) coupled together as shown in Figure 7.
[0085] The entropy decoder (771) can be configured to reconstruct, from a coded picture, certain symbols that represent syntax elements that make up the coded picture. Such symbols can include, for example, the mode in which the block is coded (e.g., intra mode, inter mode, bi-prediction mode, merge submode, or the latter two in another submode), prediction information (e.g., intra-prediction information or inter-prediction information) that can identify certain samples or metadata used for prediction by the intra-decoder (772) or inter-decoder (780), 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, inter-prediction information is provided to the inter-decoder (780); if the prediction type is an intra-prediction type, intra-prediction information is provided to the intra-decoder (772). The residual information can be inverse-quantized and provided to the residual decoder (773).
[0086] The inter decoder (780) is configured to receive inter prediction information and generate inter prediction results based on the inter prediction information.
[0087] The intra decoder (772) is configured to receive intra prediction information and generate a prediction result based on the intra prediction information.
[0088] The residual decoder (773) is configured to perform inverse quantization to extract unquantized transform coefficients and process the unquantized transform coefficients to transform the residual from the frequency domain to the spatial domain. The residual decoder (773) may also require certain control information (including quantization parameters (QPs)), which may be provided by the entropy decoder (771) (this may be only a small amount of control information, so a data path is not depicted).
[0089] The reconstruction module (774) is configured to combine, in the spatial domain, the residual as output by the residual decoder (773) and the prediction result (possibly output by an inter- or intra-prediction module) to form a reconstructed block, which is part of a reconstructed picture, which may be part of a reconstructed video. It should be noted that other appropriate processes, such as deblocking processes, may be performed to improve visual quality.
[0090] It should be noted that the video encoders (303), (503), and (603) and the video decoders (310), (410), and (710) may be implemented using any suitable technology. In one embodiment, the video encoders (303), (503), and (603) and the video decoders (310), (410), and (710) may be implemented using one or more integrated circuits. In another embodiment, the video encoders (303), (503), and (503) and the video decoders (310), (410), and (710) may be implemented using one or more processors executing software instructions.
[0091] Aspects of the present disclosure provide conditions for applying decoder-side motion vector refinement (DMVR) and / or bidirectional optical flow (BDOF).
[0092] Various coding standards, such as HEVC and VVC, are being developed to encompass new technologies.
[0093] In some implementations of VVC, for each inter-predicted CU, motion parameters include a motion vector, a reference picture index, and a reference picture list usage index, as well as additional information required for VVC's new coding features used to generate inter-predicted samples. Motion parameters can be signaled explicitly or implicitly. In one example, when a CU is coded in skip mode, the CU is associated with one PU and the CU has no significant residual coefficients, coded motion vector deltas, or reference picture indexes. In another example, merge mode is specified, whereby motion parameters for the current CU are obtained from neighboring CUs, including spatial and temporal candidates and the additional schedule introduced in VVC. Merge mode can be applied not only for skip mode but also to any inter-predicted CU. An alternative to merge mode is explicit transmission of motion parameters, in which the motion vector, the corresponding reference picture index for each reference picture list, the reference picture list usage flag, and other necessary information are explicitly signaled for each CU.
[0094] Beyond the inter-coding capabilities in HEVC, VVC Test Model 3 (VTM3) includes many new and refined inter-predictive coding tools, such as enhanced merge prediction, merge mode with motion vector differential (MMVD), affine motion compensation prediction, sub-block-based temporal motion vector prediction (SbTMVP), triangular partition prediction, combined inter and intra prediction (CIIP), etc. Some features of the above-mentioned inter-predictive coding tools are described in this disclosure.
[0095] According to some aspects of the present disclosure, a motion refinement technique called bidirectional optical flow (BDOF) mode is used in inter prediction. BDOF is referred to as BIO in some examples. BDOF is used to refine the bi-predictive signal of a CU at the 4x4 sub-block level. BDOF is applied to a CU if the CU meets the following conditions: 1) the height of the CU is not 4 and the CU is not in 4x8 size; 2) the CU is not coded using affine mode or ATMVP merge mode; and 3) the CU is coded using a "true" bi-predictive mode, i.e., one of the two reference pictures is before the current picture in display order and the other is after the current picture in display order. BDOF is only applied to the luma component in some examples.
[0096] In BDOF mode, motion refinement is based on the concept of optical flow, which assumes that object motion is smooth. For each 4x4 sub-block, motion refinement (v x ,v y ) is calculated by minimizing the difference between the L0 and L1 predicted samples. Then, motion refinement is used to adjust the bi-predicted sample values in the 4x4 sub-block. The following steps are applied in the BDOF process:
[0097] First, the horizontal and vertical gradients of the two prediction signals
number
number
[0098] Then the gradient auto- and cross-correlations S1, S2, S3, S4, S5, S6 are calculated:
number
[0099] Then, motion refinement (v x ,v y ) is derived using auto- and cross-correlation terms as follows:
number
[0100] Based on the motion refinement and gradients, the following adjustments are calculated for each sample in the 4x4 sub-block:
number
[0101] Finally, the BDOF samples of the CU are calculated by adjusting the bi-predictive samples as follows:
number
[0102] In the above case, n a ,nb ,n S2 The values of are equal to 3, 6, and 12, respectively. These values are selected so that the multiplier in the BDOF process does not exceed 15 bits, and the maximum bit width of the intermediate parameters in the BDOF process is kept within 32 bits.
[0103] To derive the gradient value, we use a number of predicted samples I in list k (k=0,1) outside the current CU boundary. (k) (i,j) can be generated.
[0104] Figure 8 shows an example of an extended CU region in BDOF. In the example in Figure 8, a 4x4 CU (810) is shown as the shaded area. BDOF uses one row / column extended around the CU boundary, and the extended area is shown as a dashed 6x6 block (820). To limit the computational effort required to generate prediction samples outside the boundary, a bilinear filter is used to generate prediction samples in the extended area (white locations), and a regular 8-tap motion-compensated interpolation filter is used to generate prediction samples inside the CU (gray locations). These extended sample values are only used in gradient calculations. In the remaining steps of the BDOF process, if any sample and gradient values outside the CU boundary are needed, they are padded (i.e., repeated) from their nearest neighbors.
[0105] According to one aspect of the present disclosure, decoder-side motion vector refinement (DMVR) is a decoder-side motion vector derivation (DMVD) technique used to improve / refine MVs based on a starting point.
[0106] In some cases, decoder-side motion vector refinement based on bilateral matching can be applied to improve the accuracy of the motion vectors in merge mode. In bi-predictive operation, a refined motion vector is searched around the initial motion vector in reference picture list L0 and reference picture list L1. The bilateral matching method calculates the distortion between two candidate blocks in reference picture list L0 and list L1.
[0107] In one example, in the case of bi-predictive operation, for prediction of one block region, two prediction blocks can be formed using MV0 from the first reference picture candidate list L0 and MV1 from the second reference picture candidate list L1, respectively. In the DMVR method, the two bi-predictive motion vectors MV0 and MV1 are further refined by a bilateral template matching process. Bilateral template matching is applied at the decoder to perform a distortion-based search between the bilateral template and the reconstructed samples in the reference pictures to obtain the refined MVs without transmitting additional motion information.
[0108] Figure 9 shows an example of DMVR based on bilateral template matching. In DMVR, as shown in Figure 9, A bilateral template (940) is generated as a weighted combination (i.e., average) of two prediction blocks (920) and (930) from the initial MV0 from the first reference picture candidate list L0 and the MV1 from the second reference picture candidate list L1, respectively. The template matching process involves calculating a cost metric between the sample region (around the initial prediction block) in the reference pictures Ref0 and Ref1 and the generated template (940). For each of the two reference pictures Ref0 and Ref1, the MV that results in the smallest template cost is considered the updated MV for that list to replace the original MV. For example, MV0' replaces MV0, and MV1' replaces MV1. In some examples, nine MV candidates are searched for each list. The nine MV candidates include the original MV and eight surrounding MVs, each with one luma sample offset horizontally or vertically or both relative to the original MV. Finally, two new MVs, namely MV0′ and MV1′, are used to generate the final bi-prediction result for the current block, as shown in Figure 9. The sum of absolute differences (SAD) can be used as a cost measure.
[0109] In some cases, DMVR is applied to a CU coded under certain mode conditions. For example, DMVR is applied to a CU in CU-level merge mode with bi-predictive MVs. Furthermore, one reference picture is in the past and the other reference picture is in the future with respect to the current picture. The distance from both reference pictures to the current picture (i.e., the Picture Order Count (POC) difference) is the same. The CU has more than 64 luma samples and the height of the CU is more than 8 luma samples.
[0110] The refined MVs derived by the DMVR process are used to generate inter prediction samples and are also used for temporal motion vector prediction for future picture coding, while the original MVs are used in the deblocking process and are also used for spatial motion vector prediction for future CU coding.
[0111] In some embodiments, a pair of merge candidates is determined based on signals in the received bitstream and used as input to the DMVR process. For example, the pair of merge candidates is denoted as initial motion vector (MV0, MV1). In some examples, the search points searched by the DMVR obey the motion vector difference mirroring condition. In other words, the points checked by the DMVR, i.e., the points indicated by the pair of candidate motion vectors (MV0', MV1'), obey (Eq. 7) and (Eq. 8):
number
[0112] In some embodiments, a technique called bi-prediction with weighted average (BWA) is used. The BWA technique is also called generalized bi-prediction (GBi). In one example, such as HEVC, a bi-prediction signal is generated by averaging two prediction signals obtained from two different reference pictures and / or using two different motion vectors. In other examples using BWA, such as in the VVC Working Draft and VMT, the bi-prediction mode is extended beyond simple averaging to allow for a weighted average of two prediction signals. In examples such as the VVC Draft, GBi (generalized bi-prediction) is also called bi-prediction with CU-level weighting (BCW). In the BWA / GBi / BCW mode, CU-level weighted prediction is performed at the CU. For example, if the BWA / GBi / BCW mode is enabled for a CU, the weighting can be signaled for that CU by the BCW index. For example, in the case of a bi-prediction P bi-pred is generated using (Eq.9):
number
[0113] In an example implementation of GBi, five weights are allowed for weighted average bi-prediction, with w∈{-2, 3, 4, 5, 10}. For each bi-predicted CU, the weight w is determined by one of a first method and a second method. In the first method, for non-merged CUs, the weight index is signaled after the motion vector differential. In the second method, for merged CUs, the weight index is estimated from neighboring blocks based on the merge candidate index. In some examples, weighted average bi-prediction is applied only to CUs with 256 or more luma samples (i.e., CU width × CU height is 256 or more). For low-latency pictures, all five weights can be used. For non-low-latency pictures, in one example, only three weights are used (w∈{3, 4, 5}).
[0114] In some examples, such as AVC, HEVC, VVC, etc., weighted prediction (WP) is offered as a supported coding tool. In one example, WP can be used to improve inter-prediction performance when the source material uses fading or cross-fading, for example when subjected to illumination variations.
[0115] In some examples, according to WP, the inter prediction signal P is replaced by a linear weighted prediction signal P′ (using weights w and offset o), for example according to (Eq. 10) for uni-prediction: Single prediction: P'= w×P + o (Eq.10)
[0116] In bi-prediction, when the inter prediction signal P0 is relative to the reference L0, with the weight w0 and offset o0 relative to the reference L0, and the inter prediction signal P1 is relative to the reference L1, with the weight w1 and offset o1 relative to the reference L1, the linear weighted prediction signal P' can be calculated according to (Eq.11): Bi-prediction: P'= (w0 × P0 + o0 + w1 × P1 + o1) / 2 (Eq.11)
[0117] The applicable weights and offsets are selected by the encoder and conveyed in the bitstream from the encoder to the decoder. The L0 and L1 suffixes define the reference picture lists List0 and List1, respectively. Bit depth is maintained at 14-bit precision (HEVC version 1) before averaging the prediction signal, as is the case with the interpolation filters.
[0118] In some embodiments, the WP allows weighting parameters (weight and offset) to be signaled for each reference picture in each of the reference picture lists L0 and L1. Then, during motion compensation, the weight and offset of the corresponding reference picture are applied. The WP and BWA are designed for different types of video content. Because interaction between the WP and BWA complicates VVC decoder design, to avoid it, if a CU uses the WP, the BWA weight index is not signaled and w is estimated to be 4 (i.e., equal weights are applied).
[0119] According to some aspects of the present disclosure, certain bi-prediction tools, such as BDOF and DMVR, rely on equal weighting for prediction from two directions.
[0120] In one example, whether to apply the BDOF method depends on conditions, including conditions for both the GBi and weighted flag of explicit weighted prediction for the luma component (also called the use flag of weighted prediction for the luma component).
[0121] 10A shows Table 1A summarizing a list of conditions for applying the BDOF method according to one embodiment. In the example of FIG. 10A, condition (1010A) requires that the Gbi index be zero. The Gbi index can be signaled or inferred. In one example, the Gbi index is used to specify the weights used to weight the prediction signals from two reference pictures. If the Gbi index is zero, equal weights are used to weight the prediction signals from the two reference pictures.
[0122] Furthermore, in the example of Figure 10A, condition (1020A) requires that the flags for using weighted prediction for the luma component in reference picture lists L0 and L1 are 0. If the flags for using weighted prediction for the luma component in reference picture lists L0 and L1 are 0, default weights can be used, and the default weights are equal for the two directions.
[0123] In an implementation example, if the Gbi index satisfies the condition (1010A) and the weight flag satisfies the condition (1020A), BDOF is enabled, and whether to apply BDOF can be further determined according to other conditions, such as other conditions in FIG. 10A.
[0124] In some cases, if the SAD of the reference block is weighted with uneven weights, DMVR may find non-matching blocks. Similar to the application of BDOF, whether to apply DMVR can be determined based on conditions. The conditions include conditions for both GBi and the weighting flag of explicit weighted prediction for the luma component (also called the use flag of weighted prediction for the luma component).
[0125] 11A shows Table 2A summarizing a list of conditions for applying the DMVR method. In the example of FIG. 11A, condition (1110A) requires that the Gbi index be zero. The Gbi index can be signaled or inferred. In one example, the Gbi index is used to specify the weights used to weight the prediction signals from two reference pictures. If the Gbi index is zero, equal weights are used to weight the prediction signals from the two reference pictures.
[0126] Furthermore, in the example of Figure 11A, condition (1120A) requires that the flags for using weighted prediction for the luma components in reference picture lists L0 and L1 are 0. If the flags for using weighted prediction for the luma components in reference picture lists L0 and L1 are 0, default weights can be used, and the default weights are equal for the two directions.
[0127] In an example implementation, if the Gbi index satisfies condition (1110A) and the weight flag satisfies condition (1120A), the DMVR is enabled, and whether to apply the DMVR can be further determined according to other conditions, such as the other conditions in FIG.
[0128] According to some aspects of the disclosure, the conditions for applying BDOF and / or DMVR include checking a flag for use of weighted prediction for the luma component and also checking a flag for use of weighted prediction for the chroma component.
[0129] According to one aspect of the present disclosure, BDOF can be applied to only the luma component. In some embodiments, the chroma weighting of the current block of the weighted prediction can also be checked.
[0130] FIG. 10B shows Table 1B summarizing a list of conditions for applying the BDOF method according to some embodiments. In the example of FIG. 10B, the use of weighted prediction flags for the chroma components, as represented by chroma_weight_l0_flag[refIdxL0] and chroma_weight_l1_flag[refIdxL1], is checked, as indicated by (1030B). If the use of weighted prediction flags for the chroma components is zero, equal weighting is used for the chroma components, and BDOF can be enabled. Furthermore, if other conditions in FIG. 10B are met, BDOF can be applied to the luma component. However, if at least one of chroma_weight_l0_flag[refIdxL0] and chroma_weight_l1_flag[refIdxL1] is not equal to 0, BDOF can be disabled and cannot be applied to the luma component.
[0131] According to another aspect of the present disclosure, BDOF may be applied separately to luma and chroma components, and the conditions for using the luma component BDOF may include a luma weighting of the current block in weighted prediction, and the conditions for using the chroma component BDOF may include a chroma weighting of the current block in weighted prediction.
[0132] In one embodiment, to determine the application of BDOF to the luma component, the use flag of weighted prediction for the luma component, as represented by luma_weight_l0_flag[refIdxL0] and luma_weight_l1_flag[refIdxL1], is checked. If both use flags of weighted prediction for the luma component are zero, equal weighting is used and BDOF may be enabled. Furthermore, if other conditions in Figure 10B are met, BDOF may be applied to the luma component. However, if at least one of luma_weight_l0_flag[refIdxL0] and luma_weight_l1_flag[refIdxL1] is not equal to 0, BDOF may be disabled and cannot be applied to the luma component.
[0133] In another embodiment, to determine the application of BDOF to a chroma component, the use flags of weighted prediction for the chroma components, as represented by chroma_weight_l0_flag[refIdxL0] and chroma_weight_l1_flag[refIdxL1], are checked. If both use flags of weighted prediction for the chroma components are zero, equal weighting is used and BDOF may be enabled. Furthermore, if the other conditions in FIG. 10B (except (1020B)) are met, BDOF may be applied to the chroma components. However, if at least one of chroma_weight_l0_flag[refIdxL0] and chroma_weight_l1_flag[refIdxL1] is not equal to 0, BDOF may be disabled and cannot be applied to the chroma components.
[0134] According to one aspect of the present disclosure, DMVR can be applied to only the luma component. In some embodiments, in addition to the condition, the chroma weighting of the current block of the weighted prediction can also be checked.
[0135] FIG. 11B shows Table 2B summarizing a list of conditions for applying the DMVR method according to some embodiments. In the example of FIG. 11B, the weighted prediction usage flag for the chroma components, as represented by chroma_weight_l0_flag[refIdxL0] and chroma_weight_l1_flag[refIdxL1], is checked, as indicated by (1130B). If the weighted prediction usage flag for the chroma components is zero, equal weighting is used for the chroma components, and DMVR can be enabled. Furthermore, if other conditions in FIG. 11B are met, DMVR can be applied to the luma component. However, if at least one of chroma_weight_l0_flag[refIdxL0] and chroma_weight_l1_flag[refIdxL1] is not equal to 0, DMVR can be disabled and cannot be applied to the luma component.
[0136] According to another aspect of the present disclosure, the DMVR may be applied separately to the luma and chroma components, and the conditions for using the luma component DMVR may include the luma weighting of the current block in the weighted prediction, and the conditions for using the chroma component DMVR may include the chroma weighting of the current block in the weighted prediction.
[0137] In one embodiment, to determine the application of DMVR to the luma component, the use flag of weighted prediction for the luma component, as represented by luma_weight_l0_flag[refIdxL0] and luma_weight_l1_flag[refIdxL1], is checked. If both use flags of weighted prediction for the luma component are zero, equal weighting is used and DMVR may be enabled. Furthermore, if other conditions in Figure 11B are met, DMVR may be applied to the luma component. However, if at least one of luma_weight_l0_flag[refIdxL0] and luma_weight_l1_flag[refIdxL1] is not equal to 0, DMVR may be disabled and cannot be applied to the luma component.
[0138] In another embodiment, to determine the application of DMVR to a chroma component, the use flags of weighted prediction for the chroma components, as represented by chroma_weight_l0_flag[refIdxL0] and chroma_weight_l1_flag[refIdxL1], are checked. If both use flags of weighted prediction for the chroma components are zero, equal weighting is used and DMVR may be enabled. Furthermore, if other conditions in FIG. 11B (except (1120B)) are met, DMVR may be applied to the chroma components. However, if at least one of chroma_weight_l0_flag[refIdxL0] and chroma_weight_l1_flag[refIdxL1] is not equal to 0, DMVR may be disabled and cannot be applied to the chroma components.
[0139] FIG. 12 shows a flowchart outlining a process (1200) according to an embodiment of the present disclosure. The process (1200) can be used to reconstruct a block, thereby generating a prediction block for the block being reconstructed. In various embodiments, the process (1200) is performed by a processing circuit, such as a processing circuit in a terminal device (210), (220), (230), or (240), a processing circuit performing the functions of a video encoder (303), a processing circuit performing the functions of a video decoder (310), a processing circuit performing the functions of a video decoder (410), or a processing circuit performing the functions of a video encoder (503). In some embodiments, the process (1200) is implemented by software instructions, and thus, the processing circuit performs the process (1200) when the processing circuit executes the software instructions. The process begins at (S1201) and proceeds to (S1210).
[0140] At (S1210), prediction information for a current block in a current picture is decoded from a coded video bitstream. The prediction information indicates an inter-prediction mode that may use a refinement technique based on a first reference picture and a second reference picture. In some embodiments, the refinement technique includes at least one of BDOF and DMVR. In some examples, the current picture has a larger picture order count (POC) than one of the first reference picture and the second reference picture and a smaller POC than the other of the first reference picture and the second reference picture.
[0141] At (S1220), it may be determined whether a first equal-weighting condition for chroma components from the first reference picture and the second reference picture is satisfied. In some examples, a first flag for chroma weighting of the first reference picture (e.g., chroma_weight_l0_flag[refIdxL0]) and a second flag for chroma weighting of the second reference picture (e.g., chroma_weight_l1_flag[refIdsL1]) are checked. If both the first flag and the second flag are zero, the first equal-weighting condition for the chroma components is satisfied. If at least one of the first flag and the second flag is not zero, it may be determined that the first equal-weighting condition is not satisfied.
[0142] At (S1230), in response to not satisfying the first equal-weighting condition, refinement techniques are disabled in the reconstruction of samples within the current block. In some embodiments, refinement techniques may be applied only to the luma component. Thus, in response to not satisfying the first equal-weighting condition, refinement techniques are disabled in the reconstruction of luma samples of the current block. In some embodiments, refinement techniques may be applied separately to the luma and chroma components. Thus, in response to not satisfying the first equal-weighting condition, refinement techniques are disabled in the reconstruction of chroma samples of the current block. The process then proceeds to (S1299), where it ends.
[0143] It should be noted that once the first equal weighting condition is met, other appropriate conditions, such as the conditions of Figure 10B or Figure 11B, are also checked to determine whether the refinement technique can be applied to the reconstruction of the samples in the current block.
[0144] The techniques described above may be implemented as computer software using computer-readable instructions and may be physically stored on one or more computer-readable media. For example, Figure 13 illustrates a computer system (1300) suitable for implementing certain embodiments of the disclosed subject matter.
[0145] Computer software may be coded using any suitable machine code or computer language that may be subject to assembly, compilation, linking, or similar mechanisms to create code that contains instructions that may be executed directly by one or more computer central processing units (CPUs), graphics processing units (GPUs), etc., or that may go through interpretation, microcode execution, etc.
[0146] The instructions may be executed on various types of computers or components thereof, including, for example, personal computers, tablet computers, servers, smartphones, gaming devices, Internet of Things devices, etc.
[0147] 13 for computer system 1300 are exemplary in nature and are not intended to suggest any limitation on the scope of use or functionality of the computer software implementing the embodiments of the present disclosure, nor should the arrangement of components be interpreted as having any dependency or requirement regarding any one or combination of components illustrated in the exemplary embodiment of computer system 1300.
[0148] The computer system (1300) may include certain human interface input devices that may respond to input by one or more human users, for example, via tactile input (e.g., keystrokes, swipes, data glove movements), auditory input (e.g., voice, claps), visual input (e.g., gestures), or olfactory input (not shown). Human interface devices may also be used to capture certain media that do not necessarily involve direct conscious human input, such as audio (e.g., speech, music, ambient sounds), images (e.g., scanned images, photographic images obtained from still-image cameras), and video (e.g., two-dimensional video, three-dimensional video, including stereoscopic pictures).
[0149] The input human interface devices may include one or more of (only one of each is depicted) a keyboard (1301), a mouse (1302), a trackpad (1303), a touch screen (1310), a data glove (not shown), a joystick (1305), a microphone (1306), a scanner (1307), and a camera (1308).
[0150] The computer system 1300 may also include certain human interface output devices that may stimulate one or more of the human user's senses, for example, through tactile output, sound, light, and smell / taste. Such human interface output devices can include haptic output devices (e.g., haptic feedback via a touch screen (1310), data gloves (not shown), joystick (1305), although there can be haptic feedback devices that do not serve as input), auditory output devices (e.g., speakers (1309), headphones (not shown)), visual output devices (e.g., screens (1310), including CRT screens, LCD screens, plasma screens, and OLED screens, each with or without touch screen input capability, each with or without haptic feedback capability, some of which may be capable of outputting two-dimensional visual output, three-dimensional or higher output by means such as stereoscopic output; virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown)), and printers (not shown).
[0151] The computer system (1300) may also include human-accessible storage devices and their associated media, such as optical media (1321), including CD / DVD ROM / RW (1320), thumb drives (1322), removable hard drives or solid state drives (1323), legacy magnetic media (not shown), such as tape and floppy disks (not shown), and specialized ROM / ASIC / PLD-based devices, such as security dongles (not shown).
[0152] Those skilled in the art will also understand that the term "computer-readable medium" as used in connection with the subject matter disclosed herein does not encompass transmission media, carrier waves, or other transitional signals.
[0153] The computer system (1300) may also include interfaces to one or more communications networks. Networks may be, for example, wireless, wired, or optical. Networks may further be local, wide-area, metropolitan, vehicular, and industrial, real-time, delay-tolerant, and the like. Examples of networks include Ethernet, wireless LANs, cellular networks (including GSM, 3G, 4G, 5G, LTE, and the like), TV wired or wireless wide-area digital networks (including cable, satellite, and terrestrial TV), and vehicular and industrial networks including CANbus. Certain networks generally require an external network interface adapter attached to a particular general-purpose data port or peripheral bus (1349) (e.g., a USB port on the computer system (1300)); others are generally integrated into the core of the computer system (1300) by attaching to a system bus, as described below (e.g., an Ethernet interface is integrated in a PC computer system, and a cellular network interface is integrated in a smartphone computer system). Using any of these networks, the computer system (1300) can communicate with other entities. Such communication can be one-way receive-only (e.g., broadcast television), one-way transmit-only (e.g., CANbus to certain CANbus devices), or two-way, such as to other computer systems using local or wide-area digital networks. Specific protocols and protocol stacks, as described above, can be used with each of these networks and network interfaces.
[0154] The aforementioned human interface devices, human accessible storage devices, and network interfaces can be attached to the core (1340) of the computer system (1300).
[0155] A core (1340) may include one or more central processing units (CPUs) (1341), graphics processing units (GPUs) (1342), specialized programmable processing devices in the form of field programmable gate arrays (FPGAs) (1343), task-specific hardware accelerators (1344), etc. These devices, along with read-only memory (ROM) (1345), random access memory (1346), and internal mass storage devices (e.g., internal non-user-accessible hard drives, SSDs, etc.) (1347), may be connected via a system bus (1348). In some computer systems, the system bus (1348) may be accessible in the form of one or more physical plugs to allow expansion with additional CPUs, GPUs, etc. Peripheral devices may be attached directly to the core's system bus (1348) or via a peripheral bus (1349). Peripheral bus architectures include PCI, USB, and the like.
[0156] The CPU (1341), GPU (1342), FPGA (1343), and accelerator (1344) may combine to execute specific instructions that may constitute the aforementioned computer code. The computer code may be stored in ROM (1345) or RAM (1346). Temporary data may be stored in RAM (1346), while persistent data may be stored in, for example, internal mass storage (1347). Rapid storage and retrieval from any memory device may be enabled through the use of cache memory, which may be closely associated with one or more of the CPU (1341), GPU (1342), mass storage (1347), ROM (1345), RAM (1346), etc.
[0157] The computer-readable medium can have computer code thereon for performing various computer-implemented operations. The medium and computer code can be those specially designed and constructed for the purposes of the present disclosure, or they can be of the kind well known and available to those having skill in the computer software arts.
[0158] By way of example, and not limitation, a computer system having the architecture (1300), specifically the core (1340), may provide functionality by executing software embodied in one or more tangible computer-readable media as a result of a processor (including a CPU, GPU, FPGA, accelerator, etc.). Such computer-readable media may be media associated with user-accessible mass storage as described above, as well as specific storage of the core (1340) that is non-transitory in nature, such as the core's internal mass storage (1347) or ROM (1345). Software implementing various embodiments of the present disclosure may be stored in such devices and executed by the core (1340). The computer-readable media may include one or more memory devices or chips, depending on particular needs. The software may cause the core (1340), and in particular the processor (including a CPU, GPU, FPGA, etc.) therein, to perform certain processes or portions of certain processes described herein, including defining data structures stored in RAM (1346) and modifying such data structures according to processes defined by the software. Additionally or alternatively, a computer system may provide functionality as a result of logic hardwired or otherwise embodied in circuitry (e.g., accelerator (1344)), which may execute in place of or in conjunction with software to perform a particular process or portion of a particular process described herein. References to software include logic, and vice versa, where appropriate. References to computer-readable media may include circuitry (such as an integrated circuit (IC)) that stores software for execution, circuitry that embodies logic for execution, or both, as appropriate. The present disclosure encompasses any appropriate combination of hardware and software.
[0159] While this disclosure has described several exemplary embodiments, there are alterations, permutations, and various substitute equivalents that fall within the scope of this disclosure. It will thus be appreciated that those skilled in the art will be able to devise many systems and methods that, while not explicitly shown or described herein, embody the principles of the present disclosure and are therefore within its spirit and scope.
[0160] <Additional Notes> (Appendix 1) 1. A method for video decoding in a decoder, comprising: a processor decoding prediction information for a current block in a current picture from a coded video bitstream, the prediction information indicating an inter-prediction mode that may utilize a refinement technique based on a first reference picture and a second reference picture; the processor determining whether a first equal weighting condition for chroma components from the first reference picture and the second reference picture is satisfied; in response to not satisfying the first equal-weighting condition for the chroma components from the first reference picture and the second reference picture, the processor disabling the refinement techniques in reconstructing samples in the current block; A method comprising: (Appendix 2) In response to not satisfying the first equal-weighting condition for the chroma components from the first reference picture and the second reference picture, the processor disables the refinement techniques in reconstructing luma samples in the current block. 2. The method of claim 1, further comprising: (Appendix 3) determining whether a second equal weighting condition for luma components from the first reference picture and the second reference picture is satisfied; in response to not satisfying at least one of the first equal-weighting condition for the chroma components and the second equal-weighting condition for the luma component, the processor disabling the refinement techniques in the reconstruction of the luma samples in the current block. 3. The method of claim 2, further comprising: (Appendix 4) In response to the first equal-weighting condition of the chroma components from the first reference picture and the second reference picture not being satisfied, the processor disables the refinement techniques in reconstructing chroma samples in the current block. 4. The method of any one of claims 1 to 3, further comprising: (Appendix 5) 5. The method of any one of claims 1 to 4, wherein the refinement technique includes at least one of bidirectional optical flow (BDOF) and decoder-side motion vector refinement (DMVR). (Appendix 6) one of the first reference picture and the second reference picture has a picture order count greater than the current picture; 6. The method of any one of claims 1 to 5, wherein the other of the first reference picture and the second reference picture has a smaller picture order count than the current picture. (Appendix 7) determining, by the processor, that the equal weighting condition of the chroma components from the first reference picture and the second reference picture is not satisfied based on at least one of a first flag of chroma weight of the first reference picture and a second flag of chroma weight of the second reference picture not being equal to zero; 7. The method of any one of claims 1 to 6, further comprising: (Appendix 8) 1. An apparatus for video decoding, comprising a processing circuit, the processing circuit comprising: decoding current block prediction information in a current picture from a coded video bitstream, the prediction information indicating an inter-prediction mode that may utilize a refinement technique based on a first reference picture and a second reference picture; determining whether a first equal weighting condition for chroma components from the first reference picture and the second reference picture is satisfied; disabling the refinement techniques in reconstructing samples in the current block in response to not satisfying the first equal-weighting condition for the chroma components from the first reference picture and the second reference picture; The apparatus is configured to: (Appendix 9) The processing circuitry disabling the refinement techniques in the reconstruction of luma samples in the current block in response to not satisfying the first equal-weighting condition for the chroma components from the first reference picture and the second reference picture. 9. The apparatus of claim 8, further configured to: (Appendix 10) The processing circuitry determining whether a second equal weighting condition for luma components from the first reference picture and the second reference picture is satisfied; disabling the refinement techniques in the reconstruction of the luma samples in the current block in response to not satisfying at least one of the first equal-weighting condition for the chroma components and the second equal-weighting condition for the luma component. 10. The apparatus of claim 9, configured to: (Appendix 11) The processing circuitry disabling the refinement techniques in reconstructing chroma samples in the current block in response to not satisfying the first equal-weighting condition for the chroma components from the first reference picture and the second reference picture. 11. The apparatus of any one of appendixes 8 to 10, configured to: (Appendix 12) 12. The apparatus of any one of appendixes 8 to 11, wherein the refinement techniques include at least one of bidirectional optical flow (BDOF) and decoder-side motion vector refinement (DMVR). (Appendix 13) one of the first reference picture and the second reference picture has a picture order count greater than the current picture; 13. The apparatus of any one of claims 8 to 12, wherein the other of the first reference picture and the second reference picture has a smaller picture order count than the current picture. (Appendix 14) The processing circuitry determining that the equal weighting condition of the chroma components from the first reference picture and the second reference picture is not satisfied based on at least one of a first flag of chroma weight of the first reference picture and a second flag of chroma weight of the second reference picture being not equal to zero; 14. The apparatus of any one of claims 8 to 13, configured to: (Appendix 15) On the computer, decoding prediction information for a current block in a current picture from a coded video bitstream, the prediction information indicating an inter-prediction mode that may utilize refinement techniques based on a first reference picture and a second reference picture; determining whether a first equal weighting condition for chroma components from the first reference picture and the second reference picture is satisfied; disabling the refinement techniques in reconstructing samples in the current block in response to not satisfying the first equal-weighting condition for the chroma components from the first reference picture and the second reference picture; A computer program that runs. (Appendix 16) The computer, disabling the refinement techniques in the reconstruction of luma samples in the current block in response to not satisfying the first equal-weighting condition for the chroma components from the first reference picture and the second reference picture. 16. The computer program of claim 15, further comprising: (Appendix 17) The computer, determining whether a second equal weighting condition for luma components from the first reference picture and the second reference picture is satisfied; disabling the refinement techniques in the reconstruction of the luma samples in the current block in response to not satisfying at least one of the first equal-weighting condition for the chroma components and the second equal-weighting condition for the luma component. 17. The computer program of claim 16, further comprising: (Appendix 18) The computer, disabling the refinement techniques in reconstructing chroma samples in the current block in response to not satisfying the first equal-weighting condition for the chroma components from the first reference picture and the second reference picture. 18. The computer program of any one of appendices 15 to 17, further comprising: (Appendix 19) 19. The computer program of any one of claims 15 to 18, wherein the refinement techniques include at least one of bidirectional optical flow (BDOF) and decoder-side motion vector refinement (DMVR). (Appendix 20) The computer, determining that the equal weighting condition of the chroma components from the first reference picture and the second reference picture is not satisfied when at least one of a first flag of chroma weight of the first reference picture and a second flag of chroma weight of the second reference picture is not equal to zero; 20. The computer program of any one of appendices 15 to 19, further comprising: (Appendix 21) 1. A method for video encoding in an encoder, comprising: a processor determining prediction information for a current block in a current picture and transmitting a coded video bitstream including the prediction information to an encoder; the prediction information indicating an inter-prediction mode that may utilize a refinement technique based on a first reference picture and a second reference picture; The method of claim 1, wherein the refinement technique is disabled in reconstructing samples in the current block if a first equal weighting condition of chroma components from the first reference picture and the second reference picture is not satisfied.
[0161] Appendix A: Acronyms JEM: joint exploration model VVC: versatile video coding BMS: benchmark set MV: Motion Vector HEVC: High Efficiency Video Coding SEI: Supplementary Enhancement Information VUI: Video Usability Information GOPs: Groups of Pictures TUs: Transform Units PUs: Prediction Units CTUs: Coding Tree Units CTBs: Coding Tree Blocks PBs: Prediction Blocks HRD: Hypothetical Reference Decoder SNR: Signal Noise Ratio CPUs: Central Processing Units GPUs: Graphics Processing Units 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 communications LTE: Long-Term Evolution CANBus: Controller Area Network Bus USB: Universal Serial Bus PCI: Peripheral Component Interconnect FPGA: Field Programmable Gate Areas SSD: solid-state drive IC: Integrated Circuit CU: Coding Unit
Claims
1. The encoding method performed by the encoder, The processor determines the prediction information for the current block in the current picture and encodes the prediction information. The prediction information includes an inter-prediction mode in which refinement techniques based on the first and second reference pictures are available. If the first equal weighting condition for the chroma components from the first and second reference pictures is not met, the refinement technique is disabled in the reconstruction of the sample in the current block. A method for determining that the first equal weighting condition is satisfied when the first flag of the chroma weight of the first reference picture is equal to a predetermined value and the second flag of the chroma weight of the second reference picture is equal to a predetermined value.
2. A computer program that causes the processor to perform the procedure described in claim 1.
3. A storage medium for storing the computer program described in claim 2.