Bidirectional prediction block vector with CU-level weights in IBC
By adopting bidirectional predicted intra-block copy (IBC) mode and adaptive weight combination technology in video encoding and decoding technology, the problem of poor video data compression efficiency and quality in the prior art is solved, and more efficient and accurate video encoding is achieved.
Patent Information
- Application Number
- CN202480004051.3
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2024-04-23
- Filing Date
- 2024-04-25
- Publication Date
- 2025-04-25
AI Technical Summary
Existing video encoding and decoding technologies are difficult to effectively utilize redundancy in video data when compressing video data, resulting in poor encoding efficiency and video quality.
Bidirectional predicted intra-block copy (IBC) mode is adopted to combine samples of two reference encoding blocks by adaptively identifying the target weights, thereby improving the encoding efficiency and accuracy of video content materials.
It improves the encoding efficiency and accuracy of video content materials, enhances the flexibility of bidirectional prediction IBC mode, and can compress video data more effectively.
Smart Images

Figure CN119895866A_ABST
Abstract
Description
[0001] Incorporation by Reference
[0002] This application claims priority to U.S. Provisional Application No. 63 / 461,877, filed on April 25, 2023, entitled “Bidirectional Prediction Block Vectors with CU-Level Weights in IBC,” and U.S. Application No. 18 / 643,957, filed on April 23, 2024, entitled “Bidirectional Prediction Block Vectors with CU-Level Weights in IBC,” the entire contents of which are incorporated by reference into this application. Technical Field
[0003] The present application relates to video coding and decoding technology, and more particularly to a system and method for predicting image samples from video data. Background Art
[0004] Digital video is supported by a variety of electronic devices, such as digital televisions, laptop or desktop computers, tablet computers, digital cameras, digital recording devices, digital media players, video game consoles, smart phones, video teleconferencing devices, video streaming devices, etc. These electronic devices transmit and receive or otherwise communicate digital video data over a communication network, and / or store the digital video data on a storage device. Due to the limited bandwidth capacity of the communication network and the limited memory resources of the storage device, video codecs can be used to compress the video data according to at least one video codec standard before communicating or storing the video data. Video codecs can be performed by hardware and / or software on an electronic / client device or a server providing a cloud service.
[0005] Video codecs typically utilize prediction methods (e.g., inter-frame prediction, intra-frame prediction, or the like) that exploit the redundancy inherent in video data. Video codecs aim to compress video data into a form that uses a lower bit rate while avoiding or minimizing degradation of video quality. A variety of video codec standards have been developed. For example, High Efficiency Video Coding (HEVC / H.265) is a video compression standard designed as part of the MPEG-H project. ITU-T and ISO / IEC released the HEVC / H.265 standard in 2013 (version 1), 2014 (version 2), 2015 (version 3), and 2016 (version 4). Versatile Video Coding (VVC / H.266) is a video compression standard intended to be a successor to HEVC. ITU-T and ISO / IEC released the VVC / H.266 standard in 2020 (version 1) and 2022 (version 2). AOMedia Video 1 (AV1) is an open video codec format designed as an alternative to HEVC. On January 8, 2019, the validated specification version 1.0.0 with Errata 1 was released. Summary of the invention
[0006] As described above, encoding (compression) reduces bandwidth and / or storage space requirements. As described in detail later, lossless compression and lossy compression can be used. Lossless compression refers to a technique that reconstructs an exact copy of the original signal from the compressed original signal through a decoding process. Lossy compression refers to an encoding / decoding process in which the original video information is not completely retained during the encoding process and is not completely restored during the decoding process. When lossy compression is used, the reconstructed signal may be different from the original signal, but the distortion between the original signal and the reconstructed signal is reduced enough to make the reconstructed signal useful for the intended application. The amount of tolerable distortion depends on the application. For example, users of certain consumer video streaming applications may tolerate higher distortion than users of movie or television broadcast applications. The compression ratio achievable by a particular encoding algorithm can be selected or adjusted to reflect various distortion tolerances: higher tolerable distortion generally allows encoding algorithms that produce higher losses and higher compression ratios.
[0007] The present application describes methods, systems, and non-volatile computer-readable storage media for applying a bidirectional prediction frame block intra-block copy (IBC) mode to predict a current coding block. Two block vectors (BVs) identifying two reference coding blocks are used to predict the current coding block. A target weight is adaptively identified to combine samples of two reference coding blocks, thereby enhancing the flexibility of the bidirectional prediction IBC mode. In some embodiments, a target weight is selected from a predefined weight list using an index signaled in a video bitstream. Alternatively, in some embodiments, a target weight is selected from a predefined weight list based on a template matching cost. In some embodiments, the target weight is adaptively determined based on the template matching cost of the reference coding block. Compared with a bidirectional prediction IBC mode that does not use adaptive weights, a bidirectional prediction IBC mode that uses adaptive weighting improves the encoding efficiency and accuracy of video content materials.
[0008] According to an embodiment of the present application, a video decoding method is provided, including:
[0009] Receive a video bitstream, wherein the video bitstream includes a current image frame and a first syntax element for a bidirectional prediction intra-frame block copy (IBC) mode;
[0010] Based on the first syntax element, determining that a current coding block of the current image frame is encoded according to the bidirectional prediction IBC mode, wherein two reference coding blocks are located in a reconstructed portion of the current image frame;
[0011] identifying, in the reconstructed portion of the current image frame, the two reference coding blocks corresponding to the current coding block;
[0012] For the current coding block, adaptively determining a target weight associated with the two reference coding blocks;
[0013] Based on the target weight, combining the two reference coding blocks and predicting the current coding block; and,
[0014] The current image frame including the current coding block is reconstructed.
[0015] According to an embodiment of the present application, a video encoding method is provided, including:
[0016] receiving video data, wherein the video data includes a current image frame;
[0017] Encoding the current image frame, wherein the current image frame includes a current coding block;
[0018] Determining whether to enable a bidirectional prediction intra block copy (IBC) mode to encode the current coding block, wherein two reference coding blocks are located in a reconstructed portion of the current image frame;
[0019] Send the encoded current image frame via the video code stream;
[0020] Signaling a first syntax element for the bidirectional prediction (IBC) mode in the video bitstream, the first syntax element indicating whether to use two reference coding blocks to encode the current coding block of the current image frame, wherein the two reference coding blocks are located in a reconstructed portion of the current image frame;
[0021] When the first syntax element indicates that the bidirectional prediction IBC mode is enabled, a target weight of the current coding block is adaptively determined, and the target weight is used to combine the two reference coding blocks to predict the current coding block frame.
[0022] According to an embodiment of the present application, a method for code stream conversion is provided, including:
[0023] Acquire a source video sequence, wherein the source video sequence includes a current coding block of a current image frame;
[0024] Performing conversion between the source video sequence and a video code stream, wherein the video code stream includes:
[0025] The current image frame;
[0026] a first syntax element for a bi-predictive intra block copy (IBC) mode, the first syntax element indicating whether to encode the current coding block of the current image frame using two reference coding blocks, wherein the two reference coding blocks are located in a reconstructed part of the current image frame;
[0027] When the first syntax element indicates that the bidirectional prediction IBC mode is enabled, a target weight of the current coding block is adaptively determined, and the target weight is used to combine the two reference coding blocks to predict the current coding block frame.
[0028] According to an embodiment of the present application, a computing system is provided, such as a streaming media system, a server system, a personal computer system or other electronic device. The computing system includes a control circuit and a memory storing one or more groups of instructions. The one or more groups of instructions include instructions for executing any method described herein. In some embodiments, the computing system includes an encoder component and / or a decoder component.
[0029] According to some embodiments, a non-volatile computer-readable storage medium is provided. The non-volatile computer-readable storage medium stores one or more sets of instructions for execution by a computing system. The one or more sets of instructions include instructions for executing any of the methods described herein.
[0030] Therefore, a device and system having a video encoding method are disclosed. Such a method, device and system can supplement or replace traditional methods, devices or systems for video encoding and decoding.
[0031] The features and advantages described in the specification are not necessarily all-inclusive, and in particular, some additional features and advantages will be apparent to one of ordinary skill in the art in view of the drawings, description and claims provided in this application. In addition, it should be noted that the language used in the specification is primarily selected for readability and instructional purposes and is not necessarily intended to describe or limit the subject matter described herein. BRIEF DESCRIPTION OF THE DRAWINGS
[0032] In order to understand the present application in more detail, a more specific description may be made with reference to the features of various embodiments, some of which are illustrated in the accompanying drawings. However, the accompanying drawings only illustrate the relevant features of the present application and are therefore not necessarily to be considered limiting, as those skilled in the art will understand after reading the present application that the description may admit other effective features.
[0033] Figure 1 is a schematic diagram of an exemplary block diagram of a communication system according to an embodiment of the present application;
[0034] Figure 2A is a schematic diagram of an exemplary block diagram of an encoder component according to an embodiment of the present application;
[0035] Figure 2B is a schematic diagram of an exemplary block diagram of a decoder component according to an embodiment of the present application;
[0036] Figure 3 is a schematic diagram of an exemplary block diagram of a server system according to an embodiment of the present application;
[0037] Figure 4 A schematic diagram of predicting a current coding block in a bidirectional IBC mode according to an embodiment of the present application is shown;
[0038] Figure 5 A schematic diagram of a video decoding method according to an embodiment of the present application is shown.
[0039] According to common practice, the various features shown in the drawings are not necessarily drawn to scale, and like reference numerals may be used to denote like features throughout the specification and drawings. DETAILED DESCRIPTION
[0040] The present application describes methods, systems, and non-volatile computer-readable storage media for applying a bidirectional prediction intra-block copy (IBC) mode to predict a current coding block. Two block vectors (BVs) identifying two reference coding blocks are used to predict the current coding block. Adaptively identify target weights to combine samples of two reference coding blocks, thereby enhancing the flexibility of the bidirectional prediction IBC mode. In some embodiments, the target weight is selected from a predefined weight list using an index signaled via a video bitstream. Alternatively, in some embodiments, the target weight is selected from a predefined weight list based on a template matching cost. In some embodiments, the target weight is adaptively determined based on the template matching cost of the reference coding block. Compared with the bidirectional prediction IBC mode that does not use adaptive weights, the bidirectional prediction ICC mode using adaptive weighting improves the coding efficiency and accuracy of video content materials.
[0041] Figure 1 1 is a block diagram illustrating a communication system 100 according to some embodiments. The communication system 100 includes a source device 102 and at least two electronic devices 120 (e.g., electronic device 120-1 to electronic device 120-m) communicatively coupled to each other via at least one network. In some embodiments, the communication system 100 is a streaming system, for example, for video-available applications such as video conferencing applications, digital TV applications, and media storage and / or distribution applications.
[0042] Source device 102 includes a video source 104 (e.g., a camera component or media storage) and an encoder component 106. In some embodiments, video source 104 is a digital camera (e.g., configured to create an uncompressed video sample stream). Encoder component 106 generates at least one encoded video stream from the video stream. The video stream from video source 104 can be high data volume compared to encoded video stream 108 generated by encoder component 106. Because encoded video stream 108 has a lower data volume (less data) than the video stream from the video source, encoded video stream 108 requires less bandwidth to transmit and requires less storage space to store than the video stream from video source 104. In some embodiments, source device 102 does not include encoder component 106 (e.g., configured to transmit uncompressed video to at least one network 110).
[0043] At least one network 110 represents any number of networks that transmit information between source device 102, server system 112, and / or electronic device 120, including, for example, wired (wired) and / or wireless communication networks. At least one network 110 can exchange data in circuit switching and / or packet switching channels. Representative networks include telecommunication networks, local area networks, wide area networks, and / or the Internet.
[0044] At least one network 110 includes a server system 112 (e.g., a distributed / cloud computing system). In some embodiments, the server system 112 is or includes a streaming media server (e.g., configured to store and / or distribute video content, such as an encoded video stream from the source device 102). The server system 112 includes a codec component 114 (e.g., configured to encode and / or decode video data). In some embodiments, the codec component 114 includes an encoder component and / or a decoder component. In various embodiments, the codec component 114 is instantiated as hardware, software, or a combination thereof. In some embodiments, the codec component 114 is configured to decode the encoded video stream 108 and re-encode the video data using different encoding standards and / or methods to generate encoded video data 116. In some embodiments, the server system 112 is configured to generate at least two video formats and / or encodings from the encoded video stream 108. In some embodiments, the server system 112 acts as a Media-Aware Network Element (MANE). For example, the server system 112 may be configured to prune the encoded video stream 108 to customize a potentially different stream for at least one of the electronic devices 120. In some embodiments, the MANE is provided separately from the server system 112.
[0045] Electronic device 120-1 includes a decoder component 122 and a display 124. In some embodiments, decoder component 122 is configured to decode encoded video data 116 to generate an outgoing video stream that can be rendered on a display or other type of rendering device. In some embodiments, at least one of electronic devices 120 does not include a display component (e.g., communicatively coupled to an external display device and / or includes media storage). In some embodiments, electronic device 120 is a streaming client. In some embodiments, electronic device 120 is configured to access server system 112 to obtain encoded video data 116.
[0046] The source device and / or at least two electronic devices 120 are sometimes referred to as “end devices” or “user devices.” In some embodiments, at least one of the source device 102 and / or the electronic devices 120 is an example of a server system, a personal computer, a portable device (e.g., a smart phone, a tablet, or a laptop), a wearable device, a video conferencing device, and / or other types of electronic devices.
[0047] In an example operation of the communication system 100, the source device 102 transmits an encoded video stream 108 to the server system 112. For example, the source device 102 may encode a picture stream captured by the source device. The server system 112 receives the encoded video stream 108 and may decode and / or encode the encoded video stream 108 using a codec component 114. For example, the server system 112 may apply a coding that is more optimal for network transmission and / or storage to the video data. The server system 112 may transmit the encoded video data 116 (e.g., at least one encoded video stream) to at least one of the electronic devices 120. Each electronic device 120 may decode the encoded video data 116 and optionally display the video picture.
[0048] Figure 2A1 is a block diagram illustrating example elements of an encoder component 106 according to some embodiments. The encoder component 106 receives video data (e.g., a source video sequence) from a video source 104. In some embodiments, the encoder component includes a receiver (e.g., a transceiver) component configured to receive the source video sequence. In some embodiments, the encoder component 106 receives the video sequence from a remote video source (e.g., a video source that is a component of a device different from the encoder component 106). The video source 104 may provide a source video sequence in the form of a digital video sample stream, which may have any suitable bit depth (e.g., 8 bits, 10 bits, or 12 bits), any color space (e.g., BT.601 Y CrCB or RGB), and any suitable sampling structure (e.g., Y CrCb 4:2:0 or Y CrCb 4:4:4). In some embodiments, the video source 104 is a storage device that stores previously captured / prepared videos. In some embodiments, the video source 104 is a camera that captures local image information as a video sequence. The video data may be provided as at least two separate pictures that impart motion when viewed sequentially. The picture itself may be organized as a spatial array of pixels, where each pixel may include at least one sample, depending on the sampling structure, color space in use, etc. The relationship between pixels and samples can be readily understood by one of ordinary skill in the art.
[0049] The encoder component 106 is configured to encode and / or compress the pictures of the source video sequence into an encoded video sequence 216 in real time or under other time constraints required by the application. In some embodiments, the encoder component 106 is configured to perform conversion between the source video sequence and a code stream of visual media data (e.g., a video code stream). Implementing an appropriate encoding speed is a function of the controller 204. In some embodiments, the controller 204 controls other functional units as described below and is functionally coupled to the other functional units. The parameters set by the controller 204 may include rate control related parameters (e.g., lambda values for picture skipping, quantizers, and / or rate distortion optimization techniques), picture size, picture group (GOP) layout, maximum motion vector search range, etc. Other functions of the controller 204 can be easily identified by those of ordinary skill in the art as they may involve the encoder component 106 optimized for a particular system design.
[0050] In some embodiments, the encoder component 106 is configured to operate in an encoding loop. In a simplified example, the encoding loop includes a source decoder 202 (e.g., responsible for creating symbols, such as a symbol stream, based on an input picture to be encoded and at least one reference picture), and a (local) decoder 210. The decoder 210 reconstructs the symbols to create sample data in a similar manner to the (remote) decoder (when the compression between the symbols and the encoded video code stream is lossless). The reconstructed sample stream (sample data) is input to the reference picture memory 208. Since the decoding of the symbol stream results in a bit-accurate result that is independent of the decoder location (local or remote), the contents of the reference picture memory 208 are also bit-accurate between the local encoder and the remote encoder. In this way, the prediction part of the encoder interprets the same sample values as the decoder will interpret when using prediction during decoding as reference picture samples.
[0051] The operation of decoder 210 may be the same as the operation of a remote decoder (such as decoder component 122), which will be described below in conjunction with Figure 2B However, briefly refer to Figure 2B , since the symbols are available and the encoding / decoding of the symbols into the encoded video sequence by the entropy encoder 214 and the parser 254 can be lossless, the entropy decoding portion of the decoder component 122 (including the buffer memory 252 and the parser 254) may not be fully implemented in the local decoder 210.
[0052] Except parsing / entropy decoding, the decoder techniques described in this application can exist in the corresponding encoder in a substantially identical functional form. For this reason, the disclosed subject matter focuses on the decoder operation. In addition, the description of the encoder techniques can be brief because they may be contrary to the decoder techniques.
[0053] As part of its operation, source decoder 202 can perform motion compensated predictive coding, which predictively encodes an input frame with reference to at least one previously encoded frame from a video sequence that is designated as a reference frame. In this manner, encoding engine 212 encodes the difference between a pixel block of an input frame and a pixel block of at least one reference frame that can be selected as at least one predictive reference for the input frame. Controller 204 can manage the coding operations of source decoder 202, including, for example, the setting of parameters and subgroup parameters for encoding video data.
[0054] The decoder 210 decodes the encoded video data of the frame that can be designated as the reference frame based on the symbols created by the source decoder 202. The operation of the encoding engine 212 can advantageously be a lossy process. When the encoded video data is in the video decoder ( Figure 2AThe reconstructed video sequence may be a copy of the source video sequence with some errors when decoded at a remote video decoder (not shown). Decoder 210 replicates the decoding process that may be performed on the reference frames by the remote video decoder and may cause the reconstructed reference frames to be stored in reference picture memory 208. In this manner, encoder component 106 locally stores copies of the reconstructed reference frames that have common content (absent transmission errors) with the reconstructed reference frames that will be obtained by the remote video decoder.
[0055] The predictor 206 may perform a prediction search for the encoding engine 212. That is, for a new frame to be encoded, the predictor 206 may search the reference picture memory 208 for sample data (as candidate reference pixel blocks) or certain metadata, such as reference picture motion vectors, block shapes, etc., that may be used as appropriate prediction references for the new picture. The predictor 206 may operate on a sample block by pixel block basis to find an appropriate prediction reference. As determined by the search results obtained by the predictor 206, the input picture may have prediction references extracted from at least two reference pictures stored in the reference picture memory 208.
[0056] The outputs of all of the above functional units may be entropy encoded in entropy encoder 214. Entropy encoder 214 converts the symbols generated by the various functional units into an encoded video sequence by losslessly compressing the symbols according to techniques known to those of ordinary skill in the art (e.g., Huffman coding, variable length coding, and / or arithmetic coding).
[0057] In some embodiments, the output of the entropy encoder 214 is coupled to a transmitter. The transmitter may be configured to buffer at least one coded video sequence created by the entropy encoder 214 so that they are ready for transmission via a communication channel 218, which may be a hardware / software link to a storage device that will store the coded video data. The transmitter may be configured to merge the coded video data from the source decoder 202 with other data to be transmitted (e.g., coded audio data and / or an auxiliary data stream (source not shown)). In some embodiments, the transmitter may transmit additional data along with the coded video. The source decoder 202 may include such data as part of the coded video sequence. The additional data may include time / space / SNR enhancement layers, other forms of redundant data (such as redundant pictures and slices), supplemental enhancement information (SEI) messages, visual usability information (VUI) parameter set fragments, etc.
[0058] The controller 204 may manage the operation of the encoder component 106. During encoding, the controller 204 may assign a specific encoded picture type to each encoded picture, which may affect the encoding technique applied to the corresponding picture. For example, a picture may be assigned as an intra picture (I picture), a predictive picture (P picture), or a bidirectional predictive picture (B picture). Intra pictures may be encoded and decoded without using any other frame in the sequence as a prediction source. Some video codecs allow different types of intra pictures, including, for example, independent decoder refresh (IDR) pictures. Those of ordinary skill in the art know those variants of I pictures and their corresponding applications and features, and therefore are not repeated here. Predictive pictures may be encoded and decoded using intra prediction or inter prediction, which uses at most one motion vector and reference index to predict the sample values of each block. Bidirectional predictive pictures may be encoded and decoded using intra prediction or inter prediction, which uses at most two motion vectors and reference indexes to predict the sample values of each block. Similarly, at least two predictive pictures may use more than two reference pictures and associated metadata to reconstruct a single block.
[0059] The source picture may typically be spatially subdivided into at least two blocks of samples (e.g., blocks of 4x4, 8x8, 4x8, or 16x16 samples each) and encoded on a block-by-block basis. Blocks may be predictively encoded with reference to other (already encoded) blocks determined by the coding assignment applied to the block's corresponding picture. For example, blocks of an I picture may be non-predictively encoded, or they may be predictively encoded (spatial prediction or intra-prediction) with reference to already encoded blocks of the same picture. Pixel blocks of a P picture may be non-predictively encoded with reference to one previously encoded reference picture via spatial prediction or via temporal prediction. Blocks of a B picture may be non-predictively encoded with reference to one or two previously encoded reference pictures via spatial prediction or via temporal prediction.
[0060] Video may be captured as at least two source pictures (video pictures) in a temporal sequence. Intra-picture prediction (often abbreviated as intra-prediction) exploits spatial correlations in a given picture, and inter-picture prediction exploits (temporal or other) correlations between pictures. In an example, a particular picture in encoding / decoding (which is referred to as the current picture) is partitioned into blocks. When a block in the current picture is similar to a reference block in a previously encoded and still buffered reference picture in the video, the block in the current picture may be encoded by a vector called a motion vector. The motion vector points to a reference block in a reference picture, and in the case of using at least two reference pictures, may have a third dimension that identifies the reference picture.
[0061] The encoder component 106 may perform encoding operations according to a predetermined video encoding technique or standard, such as any of the techniques or standards described herein. In its operation, the encoder component 106 may perform various compression operations, including predictive encoding operations that exploit temporal and spatial redundancy in the input video sequence. Thus, the encoded video data may conform to the syntax specified by the video encoding technique or standard being used.
[0062] Figure 2B is a block diagram illustrating example elements of decoder component 122 according to some embodiments. Figure 2B The decoder component 122 in is coupled to the channel 218 and the display 124. In some embodiments, the decoder component 122 includes a transmitter coupled to the loop filter 256 and configured to transmit data to the display 124 (eg, via a wired or wireless connection).
[0063] In some embodiments, the decoder component 122 includes a receiver coupled to the channel 218 and configured to receive data from the channel 218 (e.g., via a wired or wireless connection). The receiver can be configured to receive at least one encoded video sequence to be decoded by the decoder component 122. In some embodiments, the decoding of each encoded video sequence is independent of other encoded video sequences. Each encoded video sequence can be received from the channel 218, which can be a hardware / software link to a storage device that stores the encoded video data. The receiver can receive the encoded video data and other data, such as encoded audio data and / or auxiliary data streams, which can be forwarded to their corresponding use entities (not depicted). The receiver can separate the encoded video sequence from the other data. In some embodiments, the receiver receives additional (redundant) data with the encoded video. The additional data can be included as part of at least one encoded video sequence. The decoder component 122 can use the additional data to decode the data and / or more accurately reconstruct the original video data. The additional data can be in the form of, for example, time, space or SNR enhancement layers, redundant stripes, redundant pictures, forward error correction codes, etc.
[0064] According to some embodiments, decoder component 122 includes a buffer memory 252, a parser 254 (sometimes also referred to as an entropy decoder), a scaler / inverse transform unit 258, an intra picture prediction unit 262, a motion compensated prediction unit 260, an aggregator 268, a loop filter unit 256, a reference picture memory 266, and a current picture memory 264. In some embodiments, decoder component 122 is implemented as an integrated circuit, a series of integrated circuits, and / or other electronic circuits. Decoder component 122 may be implemented at least partially in software.
[0065] Buffer memory 252 is coupled between channel 218 and parser 254 (e.g., to combat network jitter). In some embodiments, buffer memory 252 is separate from decoder component 122. In some embodiments, a separate buffer memory is provided between the output of channel 218 and decoder component 122. In some embodiments, in addition to buffer memory 252 internal to decoder component 122 (e.g., which is configured to handle playout timing), a separate buffer memory is provided external to decoder component 122 (e.g., to combat network jitter). When receiving data from a store / forward device with sufficient bandwidth and controllability or from an isochronous network, buffer memory 252 may not be required or may be very small. For use on a best-effort packet network such as the Internet, buffer memory 252 may be required, may be relatively large and / or have an adaptive size, and may be implemented at least in part in an operating system or similar element external to decoder component 122.
[0066] The parser 254 is configured to reconstruct symbols 270 from the encoded video sequence. The symbols may include, for example, information for managing the operation of the decoder component 122 and / or information for controlling a rendering device such as the display 124. The control information for at least one rendering device may be in the form of, for example, a supplemental enhancement information (SEI) message or a video usability information (VUI) parameter set fragment (not depicted). The parser 254 parses (entropy decodes) the encoded video sequence. The encoding of the encoded video sequence may be based on a video coding technique or standard and may follow principles known to those skilled in the art, including variable length coding, Huffman coding, arithmetic coding with or without context sensitivity, etc. The parser 254 may extract a set of subgroup parameters of the group from the encoded video sequence based on at least one parameter corresponding to at least one of the pixel subgroups in the video decoder. The subgroup may include a group of pictures (GOP), a picture, a tile, a slice, a macroblock, a coding unit (CU), a block, a transform unit (TU), a prediction unit (PU), etc. Parser 254 may also extract information such as transform coefficients, quantizer parameter values, motion vectors, etc. from the encoded video sequence.
[0067] The reconstruction of the symbol 270 may involve at least two different units, depending on the type of the coded video picture or its portion (such as: inter- and intra-pictures, inter- and intra-blocks) and other factors. Which units are involved and how they are involved may be controlled by sub-group control information parsed from the coded video sequence by the parser 254. For clarity, the flow of such sub-group control information between the parser 254 and the following at least two units is not depicted.
[0068] The decoder component 122 may be conceptually subdivided into at least two functional units, and in some embodiments, these units closely interact with each other and may be at least partially integrated with each other. However, for the sake of clarity, the conceptual subdivision of functional units is maintained herein.
[0069] The scaler / inverse transform unit 258 receives the quantized transform coefficients and control information (such as which transform to use, block size, quantization factor and / or quantization scaling matrix) from the parser 254 as at least one symbol 270. The scaler / inverse transform unit 258 may output a block including sample values, which may be input into the aggregator 268. In some cases, the output samples of the scaler / inverse transform unit 258 relate to intra-coded blocks; that is, blocks that do not use prediction information from previously reconstructed pictures, but may use prediction information from previously reconstructed portions of the current picture. Such prediction information may be provided by the intra-picture prediction unit 262. The intra-picture prediction unit 262 may use surrounding already reconstructed information extracted from the current (partially reconstructed) picture from the current picture memory 264 to generate a block of the same size and shape as the block under reconstruction. The aggregator 268 may add the prediction information already generated by the intra-picture prediction unit 262 to the output sample information provided by the scaler / inverse transform unit 258 on a per-sample basis.
[0070] In other cases, the output samples of the scaler / inverse transform unit 258 relate to blocks that are inter-coded and possibly motion compensated. In such cases, the motion compensated prediction unit 260 may access the reference picture memory 266 to extract samples for prediction. After the extracted samples are motion compensated according to the symbols 270 associated with the block, these samples may be added to the output of the scaler / inverse transform unit 258 (in this case referred to as residual samples or residual signals) by the aggregator 268 to generate output sample information. The address within the reference picture memory 266 from which the motion compensated prediction unit 260 extracts the prediction samples may be controlled by a motion vector. The motion vector may be available to the motion compensated prediction unit 260 in the form of a symbol 270, which may have, for example, X, Y, and reference picture components. Motion compensation may also include, for example, interpolation of sample values extracted from the reference picture memory 266 when using sub-sample accurate motion vectors, motion vector prediction mechanisms.
[0071] The output samples of aggregator 268 may be subjected to various loop filtering techniques in loop filter unit 256. The video compression techniques may include in-loop filter techniques controlled by parameters included in the coded video bitstream and provided to loop filter unit 256 as symbols 270 from parser 254, but may also be responsive to meta-information obtained during decoding of a coded picture or a previous (in decoding order) portion of a coded video sequence, and to previously reconstructed and loop filtered sample values. The output of loop filter unit 256 may be a stream of samples that may be output to a rendering device such as display 124, as well as stored in reference picture memory 266 for use in future inter-picture prediction.
[0072] Once reconstructed, certain coded pictures may be used as reference pictures for future predictions. Once a coded picture is reconstructed and the coded picture has been identified as a reference picture (e.g., by parser 254), the current reference picture may become part of reference picture memory 266, and a new current picture memory may be reallocated before starting reconstruction of the next coded picture.
[0073] The decoder component 122 may perform decoding operations according to a predetermined video compression technique that may be documented in a standard, such as any of the standards described herein. The encoded video sequence may conform to the syntax specified by the video compression technique or standard being used, in the sense that it follows the syntax of the video compression technique or standard, as specified in the video compression technology document or standard and particularly in the profile document therein. Also, in order to conform to some video compression techniques or standards, the complexity of the encoded video sequence may be within limits as 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 (measured in, for example, megasamples per second), maximum reference picture size, etc. In some cases, the limits set by the level may be further limited by the hypothetical reference decoder (HRD) specification and metadata for HRD buffer management signaled in the encoded video sequence.
[0074] Figure 3 is a block diagram illustrating a computer device 300 according to some embodiments. The computer device 300 may be, for example, Figure 1 The computer device 300 includes a control circuit 302, at least one network interface 304, a memory 314, a user interface 306, and at least one communication bus 312 for interconnecting these components. In some embodiments, the control circuit 302 includes at least one processor (e.g., a CPU, a GPU, and / or a DPU). In some embodiments, the control circuit includes at least one field programmable gate array, a hardware accelerator, and / or at least one integrated circuit (e.g., an application specific integrated circuit).
[0075] At least one network interface 304 may be configured to interface with at least one communication network (e.g., wireless, wired, and / or optical network). The communication network may be local, wide area, metropolitan, vehicular and industrial, real-time, delay tolerant, etc. Examples of communication networks include local area networks (such as Ethernet, wireless LAN), cellular networks (including GSM, 3G, 4G, 5G, LTE, etc.), TV wired or wireless wide area digital networks (including cable TV, satellite TV, and terrestrial broadcast TV), vehicular and industrial (including CANBus), etc. Such communication may be one-way, receive-only (e.g., broadcast TV), one-way send-only (e.g., CANbus to certain CANbus devices), or two-way (e.g., to other computer systems using local or wide area digital networks). Such communication may include communication with at least one cloud computing network.
[0076] The user interface 306 includes at least one output device 308 and / or at least one input device 310. The at least one input device 310 may include at least one of the following: a keyboard, a mouse, a trackpad, a touch screen, a data glove, a joystick, a microphone, a scanner, a camera, etc. The at least one output device 308 may include at least one of the following: an audio output device (e.g., a speaker), a visual output device (e.g., a display or a detector), etc.
[0077] The memory 314 may include high-speed random access memory (such as DRAM, SRAM, DDR RAM, and / or other random access solid-state memory devices) and / or non-volatile memory (such as at least one magnetic disk storage device, optical disk storage device, flash memory device, and / or other non-volatile solid-state storage device). The memory 314 optionally includes at least one storage device located away from the control circuit 302. The memory 314 or alternatively at least one non-volatile solid-state memory device within the memory 314 includes a non-transitory computer-readable storage medium. In some embodiments, the memory 314 or the non-transitory computer-readable storage medium of the memory 314 stores the following programs, modules, instructions, and data structures, or a subset or superset thereof:
[0078] Operating system 316, which includes procedures for handling various basic system services and for performing hardware-related tasks;
[0079] A network communication module 318 for connecting the computer device 300 to other computing devices via the at least one network interface 304 (eg, via a wired and / or wireless connection);
[0080] A codec module 320 for performing various functions related to encoding and / or decoding data (such as video data). In some embodiments, the codec module 320 is an example of the codec component 114. The codec module 320 includes, but is not limited to, at least one of the following:
[0081] o a decoding module 322 for performing various functions related to decoding encoded data, such as those previously described with respect to decoder component 122; and
[0082] o an encoding module 340 for performing various functions with respect to encoding data, such as those previously described with respect to encoder component 106; and
[0083] Picture memory 352 for storing pictures and picture data, for example, for use with codec module 320. In some embodiments, picture memory 352 includes at least one of the following: reference picture memory 208, buffer memory 252, current picture memory 264, and reference picture memory 266.
[0084] In some embodiments, the decoding module 322 includes a parsing module 324 (e.g., configured to perform the various functions previously described with respect to the parser 254), a transform module 326 (e.g., configured to perform the various functions previously described with respect to the scaler / inverse transform unit 258), a prediction module 328 (e.g., configured to perform the various functions previously described with respect to the motion compensated prediction unit 260 and / or the intra-picture prediction unit 262), and a filter module 330 (e.g., configured to perform the various functions previously described with respect to the loop filter 256).
[0085] In some embodiments, the encoding module 340 includes a code module 342 (e.g., configured to perform various functions previously described with respect to the source decoder 202 and / or the encoding engine 212) and a prediction module 344 (e.g., configured to perform various functions previously described with respect to the predictor 206). In some embodiments, the decoding module 322 and / or the encoding module 340 includes Figure 3 A subset of the modules shown. For example, a shared prediction module is used by both the decoding module 322 and the encoding module 340.
[0086] Each of the above-identified modules stored in the memory 314 corresponds to a set of instructions for performing the functions described in the present application. The above-identified modules (e.g., instruction sets) do not have to be implemented as separate software programs, procedures, or modules, and therefore various subsets of these modules can be combined or otherwise rearranged in various embodiments. For example, the codec module 320 optionally does not include a separate decoding module and encoding module, but uses the same set of modules to perform these two groups of functions. In some embodiments, the memory 314 stores a subset of the above-identified modules and data structures. In some embodiments, the memory 314 stores additional modules and data structures not described above.
[0087] although Figure 3 A computer device 300 is shown according to some embodiments, but Figure 3 The present invention is intended more as a functional description of various features that may be present in at least one server system rather than as a schematic diagram of the structure of the embodiments described in the present application. In practice, items shown separately may be combined, and some items may be separated. For example, Figure 3 Some of the items shown separately in the figure can be implemented on a single server, and a single item can be implemented by at least one server. The actual number of servers used to implement computer device 300 and how the features are distributed among them will vary from implementation to implementation and will optionally depend in part on the amount of data traffic that the server system handles during peak usage periods and during average usage periods.
[0088] Figure 4 4 is a flow chart of an example process 400 for predicting a current coding block 402 in a bi-directional prediction IBC mode according to some embodiments. A GOP includes a sequence of image frames, which also includes a current image frame 404. The current image frame 404 may include a color image, i.e., a non-monochrome image frame, which has multiple color samples (e.g., chroma samples and luma samples) co-located with each other. The video decoder 122 ( Figure 2B ) receives a video code stream 116 including a current image frame 404. The video code stream 116 includes a first syntax element 406 for a bi-predictive intra-block copy (IBC) mode. Based on the first syntax element 406, it is determined that a current coding block 402 of the current image frame 404 is encoded using two reference coding blocks 408A and 408B located in a reconstructed portion of the current image frame 404 according to the bi-predictive IBC mode. The two reference coding blocks 408A and 408B correspond to the current coding block 402. The video decoder 122 identifies the two reference coding blocks 408A and 408B in the reconstructed portion of the current image frame 404. A target weight 410 (w ) associated with the two reference coding blocks 408A and 408B is adaptively determined for the current coding block 402. T). Based on the target weight 410 (w T ) combines the two reference coding blocks 408A and 408B to predict the current coding block 402. The video decoder 122 reconstructs the current coding block 402 using the target weight 410 (w T ) The current image frame of the current coding block predicted by the first syntax element 406 is signaled for the current coding block 402 at the coding block level.
[0089] In some embodiments, based on the target weight 410 (w T ) predicts the samples of the current coding block 402 as follows:
[0090] predSamples=w T *refBlock1+(1-w T )*refBlock2+P OFFSET (1)
[0091] Where preSamples represents the value of the sample of the current coding block 402; refBlock1 and refBlock2 represent the samples of the first reference block 408A and the second reference block 408B respectively; and P OFFSET is the offset sample value. In the example, P OFFSET = 0. In another example, P OFFSET =0.5. Alternatively, in some embodiments, based on the target weight 410 (w T ) predicts the samples of the current coding block 402 as follows:
[0092] predSamples=w T *refBlock1+w T ′*refBlock2+P OFFSET (2)
[0093] where w T ' is the supplementary weight associated with the second reference block 408B, and the target weight 410 (w T ) is associated with the first reference block 408A. The weight w T and w T 'The sum is not limited to 1.
[0094] In some embodiments, a first block vector BV1 is identified for a first reference block 408A, connecting the current coding block 402 to the first reference block 408A. A second block vector BV2 is identified for a second reference block 408B, connecting the current coding block 402 to the second reference block 408B. Both the first block vector BV1 and the second block vector BV2 point to a block location in a reconstructed portion in the current coding block 402. For example, the first reference block 408A is located in the top left reconstructed portion 404TL of the current coding block 402, and the first reference block 408A is located in the top reconstructed portion 404T of the current coding block 402.
[0095] In some embodiments, the video decoder 122 stores a list 420 of predefined weights. The video code stream 116 includes a weight index 414, and the video decoder 122 selects a target weight 410 (w T ).
[0096] Alternatively, in some embodiments, the video decoder 122 stores a list 420 of predefined weights, and the video bitstream 116 does not include a weight index 414. The video decoder 122 adaptively determines the target weight 410 (w T ). For intra-frame prediction, template matching is a decoder-side block vector derivation method for finding the closest match between the current template 412 of the current coding block 402 and the reference template 418A in the reconstructed portion of the current image frame 404. The template matching cost 422 is applied to determine whether the reference template 418A is the closest match to the current template 412. In the example, the sum of absolute differences (SAD) of corresponding samples of the reference template 418A and the current template 412 is used to determine the template matching cost 422. In the bidirectional prediction IBC mode, two closest matches are identified and correspond to two reference templates 418A and 418B. The current template 412 includes a block of samples that are immediately adjacent to the current coding block 402 and have been reconstructed. Each of the reference templates 418A and 418B has the same shape and the same size as the current template 412. In some embodiments, the current template 412 is selected from a top current template 412T located at the top of the current coding block 402, a left current template 412L located on the left side of the current coding block 402, and an L-shaped current template 412L sharing the top edge and left edge of the current coding block 402.
[0097] More specifically, in some embodiments associated with template matching, the video decoder 122 obtains a list 420 of predefined weights and identifies a subset of predefined weights 416. For each predefined weight in the subset of predefined weights 416, the video decoder 122 combines two reference templates 418A and 418B of two reference coding blocks 408A and 488B based on the corresponding predefined weight 416 to generate a prediction template 412P of the current coding block 402. The prediction template 412P is compared with the current template 412 to determine a template matching cost 422 corresponding to the corresponding predefined weight 416. In some embodiments, the template matching cost 422 is determined based on the SAD of samples of the prediction template and samples of the current template. According to the corresponding template matching cost 422 corresponding to one of the subset of predefined weights 416 satisfying the predefined selection criteria, the one of the subset of predefined weights 416 is selected as the target weight 410 (w T For example, according to the predefined selection criteria, the target weight 410 (w T ) has a corresponding template matching cost 422T that is equal to or less than the corresponding template matching cost 422 corresponding to any different remaining predefined weights 416R in the subset of predefined weights 416. In other words, the target weight 410 (w T ) corresponds to the minimum template matching cost 422T among the template matching costs 422 corresponding to the subset of predefined weights 416.
[0098] In some embodiments, the list 420 of predefined weights includes, for example, an ordered sequence of predefined weights arranged in increasing or decreasing order. Examples of the list 420 of predefined weights include, but are not limited to, {-2, 3, 4, 5, 10}, {1, 2, 3, 4, 5, 6, 7}, and {1, 3, 4, 5, 7} in units of 1 / 8. In some embodiments, a subset of predefined weights 416 includes predefined weights 416D distributed in the list 420 of predefined weights. Alternatively, in some embodiments, a subset of predefined weights 416 includes predefined weights 416S that are continuously located in the list 420 of predefined weights. For example, a subset of predefined weights 416 includes an inherited bidirectional prediction weight w0 and two adjacent weights in the list of predefined weights. The inherited bidirectional prediction weight w0 may result in a higher level of accuracy than any other weight in the list 420 of predefined weights. For example, if the inherited bidirectional prediction weight w0 is 4, the subset of predefined weights 416 includes three weights {3, 4, 5} in units of 1 / 8. In some embodiments not shown, the subset of predefined weights 416 includes a center weight and an equal number (e.g., 2, 3, or more) of weights on both sides of the center weight in the list 420 of predefined weights.
[0099] In some embodiments, the video decoder 122 applies a scaling factor 424H (e.g., less than 1) to at least the corresponding template matching cost 422H corresponding to the inherited bidirectional prediction weight w0, thereby generating an updated template matching cost 426H. For example, the updated template matching cost 426H is compared with the template matching cost 422 corresponding to the remaining weight 416 different from the inherited bidirectional prediction weight w0 to identify the template matching cost 426H corresponding to the target weight 410 (w0). T )’s corresponding template matching cost is 422T.
[0100] In some embodiments, the current coding block 402 has a neighboring coding block 428, and a neighboring weight 430 (w N ) encodes the neighboring coding block 428. For each predefined weight in the subset of predefined weights 416 associated with the current coding block 402, the video decoder 122 encodes the neighboring coding block 428 based on the neighboring weights 430 (w N ) determines a corresponding scaling factor 424, and applies the corresponding scaling factor 424 to scale the corresponding template matching cost 422, thereby generating a corresponding updated template matching cost 426. T ) is generated based on the corresponding updated template matching costs 426 corresponding to the subset of predefined weights 416.
[0101] In some embodiments, the scaling factor 424 is less than 1. The smaller the scaling factor 424, the higher the chance of the corresponding updated template matching cost 426. For example, the subset of predefined weights 416 includes a first predefined weight 416A corresponding to an equal weight mode. The first scaling factor 424A is applied to scale the corresponding template matching cost 422A corresponding to the first predefined weight 416A, thereby generating an updated first template matching cost 426A. The first scaling factor 424A is less than 1. In addition, in some embodiments, the subset of predefined weights 416 also includes one or more remaining predefined weights 416R different from the first predefined weight 416A. For each of the one or more remaining weights 416R, the video decoder 122 applies the remaining scaling factor 424R to scale the corresponding template matching cost 422R corresponding to the corresponding remaining weight 416R, thereby generating an updated remaining template matching cost 426R. The first scaling factor 424A is equal to or less than the remaining scaling factor 424R of each remaining weight 416R (e.g., it is complementary to the first predefined weight 416A). In these ways, the first weight 416A has a higher chance of resulting in the minimum updated template matching cost 426 and is selected as the target weight 410 (w ) compared to the one or more remaining predefined weights 416R. T ).
[0102] In some embodiments, the video bitstream 116 further includes a second syntax element 432, which indicates a target weight 410 (w T ) is determined based on two template matching costs 434A and 434B of two reference coding blocks 408A and 408B. In addition, in some embodiments, the two reference coding blocks 408A and 408B include a first reference block 408A and a second reference block 408B. When the second syntax element is enabled, the video decoder 122 determines a first template matching cost 434A (TMcost1) associated with the first reference block 408A, and a second template matching cost 434B (TMcost2) associated with the second reference block 408B. The target weight 410 (w is determined based on the first template matching cost 434A and the second template matching cost 434B. T ),as follows:
[0103]
[0104] The sample value P of the current template 412 is represented as a combination of two sample values P1 and P2 from two reference templates 418A and 418B as follows:
[0105]
[0106] The sample value of the current coding block 402 is also represented as a combination of two sample values from two reference coding blocks 408A and 408B. In addition, in some embodiments, when the second syntax element 432 is disabled, the target weight 410 (w T ). In some embodiments, the second syntax element 432 comprises a flag and is signaled on the coding block level for the current coding block 402.
[0107] Figure 5 4 is a flow chart illustrating a method 500 for encoding a video according to some embodiments. A bi-directional prediction IBC mode is applied to predict prediction samples of a current coding block 402 based on two block vectors BV1 and BV2 associated with two reference coding blocks 408A and 408B, which are located in a reconstructed portion of a current image frame 404. An adaptive target weight 410 (w T) to combine two prediction samples from two reference coding blocks 408A and 408B identified by two block vectors BV1 and BV2, thereby predicting the associated samples of the current coding block 402. In some embodiments, bidirectional prediction with CU-level weights (BCW) is applied to combine the two prediction samples from the two reference coding blocks 408A and 408B. In some embodiments, intra-frame template matching prediction (IntraTMP) is a special intra-frame prediction mode that copies the best prediction block from the reconstructed part of the current image frame 404, and the template 418A or 418B (for example, having an L shape) of the current image frame 404 matches the current template 412. For a predefined search range, the encoder searches for the template that is most similar to the current template 412 in the reconstructed part of the current image frame 404, and uses the corresponding block 408A or 408B as the prediction block. The encoder then signals the use of this mode, and performs the same prediction operation on the decoder side.
[0108] In some embodiments, when encoding the current coding block in bidirectional prediction IBC mode, an adaptive target weight 410 (w T ) to combine two prediction blocks (e.g., reference coding blocks 408A and 408B) from two different BVs (BV1 and BV2). In some embodiments, the coding unit level syntax (e.g., the first syntax element 406) is signaled to select an adaptive target weight 410 (w) from a predefined list 420 of adaptive weights (e.g., BCW weights in VVC and ECM). T ). In some embodiments, template matching is used to determine the template matching cost at different adaptive weights. The adaptive weight corresponding to the minimum template matching cost is selected as the target weight 410 (w T ). In some embodiments, the template matching cost 422 for different subsets of adaptive weights 416 has different scaling factors 424, depending on the adaptive weight usage of one or more neighboring coding blocks 428.
[0109] In some embodiments, in equal weight mode (e.g., when template matching cost 422 corresponds to a corresponding weight equal to 0.5), scaling factor 424A is applied to template matching cost 422A. In an example, scaling factor 424A is less than 1 to make the equal weight mode selected more frequently. In another example, scaling factor 424A is always the smallest scaling factor relative to all other scaling factors 424R to make the equal weight mode selected more frequently than all other weights 416R.
[0110] In some embodiments, the template matching costs 422 corresponding to the block vectors BV1 and BV2 are used to derive the adaptive weights (eg, the target weights 410 (w T)). In the example, the template matching cost 422 (TMcost1) is associated with the first prediction block P1 (e.g., the first reference block 408A) corresponding to the first block vector BV1. The template matching cost 422 (TMcost2) is associated with the second prediction block P2 (e.g., the second reference block 408B) corresponding to the second block vector BV2. The weighted average of the bidirectional prediction blocks (e.g., the two reference coding blocks 408A and 408B) is expressed based on equation (4).
[0111] In some embodiments, a coding unit level flag (eg, the second syntax element 432) is signaled to indicate whether the template matching costs of the two reference coding blocks are directly used to determine the target weight 410 (w T If the flag is true (eg, has a first value), the template matching costs of the two reference coding blocks are directly used to determine the target weight 410 (w T If the flag has a second value different from the first value, then an equal weight is used, ie, a target weight 410 (w T ) is equal to 0.5.
[0112] although Figure 5 The various logical stages are illustrated in a particular order, but stages that are not order-dependent may be reordered, and other stages may be combined or decomposed. Some reordering or other groupings not specifically mentioned will be apparent to one of ordinary skill in the art, and thus the ordering and groupings presented herein are not exhaustive. Furthermore, it should be appreciated that the stages may be implemented in hardware, firmware, software, or any combination thereof.
[0113] Turning now to some example embodiments.
[0114] (A1) In some embodiments, a method 500 for decoding video data is implemented. The method 500 includes: receiving (operation 502) a video code stream including a current image frame, wherein the video code stream includes a first syntax element for a bidirectional prediction intra-frame block copy (IBC) mode; based on the first syntax element, determining (operation 504) that a current coding block of the current image frame is encoded according to the bidirectional prediction IBC mode, wherein two reference coding blocks are located in a reconstructed portion of the current image frame; in the reconstructed portion of the current image frame, identifying (operation 506) the two reference coding blocks corresponding to the current coding block; for the current coding block, adaptively determining (operation 508) target weights associated with the two reference coding blocks; based on the target weights, combining (operation 510) the two reference coding blocks and predicting the current coding block; and reconstructing (operation 512) the current image frame including the current coding block.
[0115] (A2) In some embodiments of A1, the two reference coding blocks include a first reference block and a second reference block, and the method (500) further includes: identifying a first block vector associated with the first reference block; and identifying a second block vector associated with the second reference block.
[0116] (A3) In some embodiments of A1 or A2, the method 500 further includes selecting the target weight from a list of predefined weights based on a weight index, wherein the weight index is received together with the video bitstream.
[0117] (A4) In some embodiments of A1 or A2, the method 500 also includes: obtaining a list of predefined weights; for each predefined weight in a subset of predefined weights, based on the predefined weight, combining the two reference templates of the two reference coding blocks and generating a prediction template of the current coding block; determining the template matching cost corresponding to the predefined weight based on the prediction template and the current template of the current coding block; and in response to the template matching cost corresponding to a predefined weight in the subset of predefined weights satisfying a predefined selection criterion, setting the predefined weight as the target weight.
[0118] (A5) In some embodiments of A4, according to the predefined selection criteria, the template matching cost corresponding to the target weight is equal to or less than the template matching cost corresponding to any different remaining predefined weight in the subset of predefined weights.
[0119] (A6) In some embodiments of A4 or A5, the subset of predefined weights includes an inherited bidirectional prediction weight and two adjacent weights in the list of predefined weights, and the method also includes: applying at least a scaling factor to the template matching cost corresponding to the inherited bidirectional prediction weight.
[0120] (A7) In some embodiments of any one of A4 to A6, the method 500 also includes identifying adjacent coding blocks of the current coding block, wherein the adjacent coding blocks are encoded using adjacent weights in the bidirectional prediction IBC mode; for each predefined weight in the subset of the predefined weights, based on the adjacent weights, determining a scaling factor corresponding to the predefined weight, and applying the scaling factor to scale the template matching cost corresponding to the predefined weight.
[0121] (A8) In some embodiments of any one of A4 to A7, the subset of predefined weights includes a first predefined weight corresponding to an equal-weight pattern, and the method 500 also includes applying a first scaling factor to scale the template matching cost corresponding to the first predefined weight, wherein the first scaling factor is less than 1.
[0122] (A9) In some embodiments of A8, the subset of predefined weights also includes one or more remaining predefined weights different from the first predefined weight, and the method also includes: for each remaining predefined weight of the one or more remaining predefined weights, applying a remaining scaling factor to scale the template matching cost corresponding to the remaining predefined weight, wherein the first scaling factor is equal to or less than the remaining scaling factor of each remaining predefined weight.
[0123] (A10) In some embodiments of any one of A4 to A9, the sum of absolute differences (SAD) between samples of the prediction template and samples of the current template is determined.
[0124] (A11) In some embodiments of A1 or A2, the video bitstream further includes a second syntax element, wherein the second syntax element indicates whether the target weight is determined based on two template matching costs of the two reference coding blocks.
[0125] (A12) In some embodiments of A11, the two reference coding blocks include a first reference block and a second reference block, and in response to the second syntax element being enabled, a first template matching cost associated with the first reference block is determined; a second template matching cost associated with the second reference block is determined; and based on the first template matching cost and the second template matching cost, the target weight is determined.
[0126] (A13) In some embodiments of A12, based on the target weight, the samples of the two reference coding blocks are combined and the samples of the current coding block are predicted, which is calculated as follows:
[0127]
[0128] Wherein P1, P2 and P represent the sample values of the two reference coding blocks and the sample value of the current coding block respectively, and TMcost1 and TMcost2 represent the first template matching cost and the second template matching cost respectively.
[0129] (A14) In some embodiments of A11, the further embodiment includes: in response to the second syntax element being deactivated, setting the target weight based on an equal weight mode.
[0130] (A15) In some embodiments of any one of A11 to A14, the second syntax element includes a flag, and the flag is signaled for the current coding block at the coding block level.
[0131] (A16) In some embodiments of any one of A1 to A15, the first syntax element is signaled for the current coding block at a coding block level.
[0132] (A17) In some embodiments, a method of video encoding includes: receiving video data including a current image frame; encoding the current image frame including a current coding block; determining whether to enable a bidirectional prediction intra-frame block copy (IBC) mode to encode the current coding block of the current image frame using two reference coding blocks located in a reconstructed portion of the current image frame; transmitting the encoded current image frame via a video code stream; and signaling a first syntax element for the IBC mode via the video code stream, the first syntax element indicating whether to encode the current coding block of the current image frame using the two reference coding blocks located in the reconstructed portion of the current image frame; wherein when the first syntax element indicates that the bidirectional prediction IBC mode is enabled, a target weight is adaptively determined for the current coding block and used to combine the two reference coding blocks to predict the current coding block.
[0133] (A18) In some embodiments, a method for bitstream conversion includes: obtaining a source video sequence including a current coding block of a current image frame; and performing conversion between the source video sequence and a video bitstream, wherein the video bitstream includes: the current image frame; and a first syntax element for a bidirectional predictive intra-block copy (IBC) mode, the first syntax element indicating whether the current coding block of the current image frame is encoded using two reference coding blocks located in a reconstructed portion of the current image frame; wherein when the first syntax element indicates that the bidirectional predictive IBC mode is enabled, a target weight is adaptively determined for the current coding block and used to combine the two reference coding blocks to predict the current coding block.
[0134] On the other hand, some embodiments include a computing system (e.g., server system 112) that includes a control circuit (e.g., control circuit 302) and a memory (e.g., memory 314) coupled to the control circuit, the memory storing one or more sets of instructions configured to be executed by the control circuit, the one or more sets of instructions including instructions for performing any of the methods described herein (e.g., A1 to A18 above).
[0135] On the other hand, some embodiments include a non-volatile computer-readable storage medium storing one or more sets of instructions for execution by control circuitry of a computing system, the one or more sets of instructions including instructions for performing any of the methods described herein (e.g., A1 to A18 above).
[0136] The proposed methods can be used alone or in combination in any order. In addition, each method (or embodiment), encoder and decoder can be implemented by a processing circuit (e.g., one or more processors or one or more integrated circuits). For example, one or more processors execute a program stored in a non-transitory computer-readable medium. In the following, the term block can be interpreted as a prediction block, a coding block, or a coding unit, i.e., a CU.
[0137] It should be understood that although the terms "first", "second", etc. may be used in the present application to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another element.
[0138] The terms used in this application are only used for the purpose of describing specific embodiments and are not intended to limit the claims. As used in the description of the embodiments and the appended claims, the singular forms "a", "an" and "the" are also intended to include plural forms, unless the context clearly indicates otherwise. It will also be understood that the term "and / or" as used in this application refers to and covers any and all possible combinations of at least one of the associated listed items. It will be further understood that when used in this specification, the terms "comprises" and / or "comprising" specify the presence of the features, integers, steps, operations, elements and / or parts, but do not exclude the presence or addition of at least one other feature, integer, step, operation, element, part and / or its group.
[0139] As used herein, the term "if" may be interpreted to mean "when" or "at" or "in response to determining" or "upon determining" or "in response to detecting" that the stated antecedent is true, depending on the context. Similarly, the phrase "if it is determined that [the stated antecedent is true]" or "if [the stated antecedent is true]" or "when [the stated antecedent is true]" may be interpreted to mean "upon determining" or "in response to determining" or "upon determining" or "upon detecting" or "in response to detecting" that the stated antecedent is true, depending on the context.
[0140] For purposes of explanation, the foregoing description has been described with reference to specific embodiments. However, the above illustrative discussion is not intended to be exhaustive or to limit the claims to the precise forms disclosed. Many modifications and variations are possible in light of the above teachings. The embodiments are chosen and described in order to best explain the principles of operation and practical application, thereby enabling others skilled in the art to realize.
Claims
1. A video data decoding method, characterized in that: include: Receive a video bitstream, wherein the video bitstream includes a current image frame and a first syntax element for a bidirectional prediction intra-frame block copy (IBC) mode; Based on the first syntax element, determining that a current coding block of the current image frame is encoded according to the bidirectional prediction IBC mode, wherein two reference coding blocks are located in a reconstructed portion of the current image frame; identifying, in the reconstructed portion of the current image frame, the two reference coding blocks corresponding to the current coding block; For the current coding block, adaptively determining a target weight associated with the two reference coding blocks; Based on the target weight, combining the two reference coding blocks and predicting the current coding block; and, The current image frame including the current coding block is reconstructed.
2. The method according to claim 1, characterized in that The two reference coding blocks include a first reference block and a second reference block, and the method further includes: identifying a first block vector associated with the first reference block; A second block vector associated with the second reference block is identified.
3. The method according to claim 1, further comprising: The target weight is selected from a list of predefined weights based on a weight index, wherein the weight index is received together with the video bitstream.
4. The method according to claim 1, further comprising: Get a list of predefined weights; For each predefined weight in the subset of predefined weights, Based on the predefined weight, combining the two reference templates of the two reference coding blocks and generating a prediction template of the current coding block; Determining a template matching cost corresponding to the predefined weight based on the predicted template and the current template of the current coding block; In response to a template matching cost corresponding to a predefined weight in the subset of predefined weights satisfying a predefined selection criterion, the predefined weight is set as the target weight.
5. The method according to claim 4, characterized in that According to the predefined selection criterion, the template matching cost corresponding to the target weight is equal to or less than the template matching cost corresponding to any different remaining predefined weight in the subset of predefined weights.
6. The method according to claim 4, characterized in that The subset of predefined weights includes the inherited bidirectional prediction weight and two adjacent weights in the list of predefined weights, the method further comprising: At least a scaling factor is applied to the template matching cost corresponding to the inherited bidirectional prediction weight.
7. The method according to claim 4, further comprising: Identifying a neighboring coding block of the current coding block, wherein the neighboring coding block is encoded using neighboring weights in the bidirectional prediction IBC mode; For each predefined weight in the subset of predefined weights, a scaling factor corresponding to the predefined weight is determined based on the neighboring weights, and the scaling factor is applied to scale the template matching cost corresponding to the predefined weight.
8. The method according to claim 4, characterized in that The subset of predefined weights includes a first predefined weight corresponding to an equal weight mode, the method further comprising: A first scaling factor is applied to scale the template matching cost corresponding to the first predefined weight, wherein the first scaling factor is less than 1.
9. The method according to claim 8, characterized in that The subset of predefined weights further includes one or more remaining predefined weights different from the first predefined weight, the method further comprising: For each of the one or more remaining predefined weights, a remaining scaling factor is applied to scale the template matching cost corresponding to the remaining predefined weight, wherein the first scaling factor is equal to or less than the remaining scaling factor of each remaining predefined weight.
10. The method according to claim 4, characterized in that Determining the corresponding template matching cost corresponding to each predefined weight in the subset of predefined weights also includes: The sum of absolute differences (SAD) between the samples of the prediction template and the samples of the current template is determined.
11. The method according to claim 1, characterized in that The video code stream further includes a second syntax element, which indicates whether to determine the target weight of the current coding block based on two template matching costs of the two reference coding blocks.
12. The method according to claim 11, characterized in that The two reference coding blocks include a first reference block and a second reference block, and the method further includes: In response to the second syntax element being enabled, determining a first template matching cost associated with the first reference block; determining a second template matching cost associated with the second reference block; The target weight is determined based on the first template matching cost and the second template matching cost.
13. The method according to claim 12, characterized in that The samples of the two reference coding blocks are combined based on the target weight to predict the samples of the current coding block as follows: Wherein P1, P2 and P represent the sample values of the two reference coding blocks and the sample value of the current coding block respectively, and TMcost1 and TMcost2 represent the first template matching cost and the second template matching cost respectively.
14. The method according to claim 11, characterized in that Determining the target weight further includes: In response to the second syntax element being deactivated, the target weight is set based on an equal weight mode.
15. The method according to claim 11, characterized in that The second syntax element comprises a flag, the flag being signaled at coding block level for the current coding block.
16. The method according to claim 1, characterized in that The first syntax element is signaled for the current coding block at a coding block level.
17. A computing system, characterized in that: include: Control circuit; A memory storing one or more programs, wherein the one or more programs are configured to be executed by the control circuit, and the one or more programs further include instructions for: receiving video data, wherein the video data includes a current image frame; Encoding the current image frame, wherein the current image frame includes a current coding block; Determining whether to enable a bidirectional prediction intra block copy (IBC) mode to encode the current coding block, wherein two reference coding blocks are located in a reconstructed portion of the current image frame; Send the encoded current image frame via the video code stream; Signaling a first syntax element for the bidirectional prediction (IBC) mode in the video bitstream, the first syntax element indicating whether to use two reference coding blocks to encode the current coding block of the current image frame, wherein the two reference coding blocks are located in a reconstructed portion of the current image frame; When the first syntax element indicates that the bidirectional prediction IBC mode is enabled, a target weight of the current coding block is adaptively determined, and the target weight is used to combine the two reference coding blocks to predict the current coding block frame.
18. The computing system according to claim 17, characterized in that: The one or more programs also include instructions for: The target weight is selected from a list of predefined weights based on a weight index, wherein the weight index is received together with the video bitstream.
19. A non-volatile computer-readable storage medium, characterized in that: One or more programs are stored, the one or more programs are executed by the control circuit of the computing system, the one or more programs include instructions for: Acquire a source video sequence, wherein the source video sequence includes a current coding block of a current image frame; Performing conversion between the source video sequence and a video code stream, wherein the video code stream includes: The current image frame; a first syntax element for a bi-predictive intra block copy (IBC) mode, the first syntax element indicating whether to encode the current coding block of the current image frame using two reference coding blocks, wherein the two reference coding blocks are located in a reconstructed part of the current image frame; When the first syntax element indicates that the bidirectional prediction IBC mode is enabled, a target weight of the current coding block is adaptively determined, and the target weight is used to combine the two reference coding blocks to predict the current coding block frame.
20. The non-volatile computer-readable storage medium of claim 19, wherein: The one or more programs include instructions for: Get a list of predefined weights; For each predefined weight in the subset of predefined weights, Based on the predefined weight, combining the two reference templates of the two reference coding blocks and generating a prediction template of the current coding block; Determining a template matching cost corresponding to the predefined weight based on the predicted template and the current template of the current coding block; In response to a template matching cost corresponding to a predefined weight in the subset of predefined weights satisfying a predefined selection criterion, the predefined weight is set as the target weight.