Method and device for video processing and medium
By adaptively updating the IBC virtual buffer and merging candidate sorting, the problems of insufficient update of intra-block replication virtual buffers and low efficiency of merging candidates in the prior art are solved, and the efficiency and quality of video encoding and decoding are improved.
Patent Information
- Application Number
- CN202380042076.8
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2022-05-23
- Filing Date
- 2023-05-22
- Publication Date
- 2025-01-03
AI Technical Summary
The existing video encoding and decoding technology has insufficient virtual buffer update mechanism in intra-block copy (IBC), resulting in insufficient improvement in encoding and decoding efficiency and quality, and the inefficiency of merging candidate sorting methods.
An adaptive IBC virtual buffer update method is proposed. The encoding and decoding process is optimized by selecting blocks with merged mode codecs in the IBC virtual buffer and reordering the merge candidates based on the compiled and decoding information.
Improves encoding and decoding efficiency and quality, and improves the performance of video processing by dynamically updating virtual buffers and merging candidate sorts.
Smart Images

Figure CN119256545A_ABST
Abstract
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application claims priority to U.S. Provisional Application No. 63 / 344,926, filed on May 23, 2022, which is assigned to the assignee of the present application and is incorporated by reference in its entirety into this application. Technical Field
[0002] Embodiments of the present disclosure relate generally to video processing techniques, and more particularly, to an intra block copy (IBC) mode. Background Art
[0003] Nowadays, digital video functions are being applied to all aspects of people's lives. For video encoding / decoding, various types of video compression technologies have been proposed, such as MPEG-2, MPEG-4, ITU-TH.263, ITU-TH.264 / MPEG-4 Part 10 Advanced Video Codec (AVC), ITU-TH.265 High Efficiency Video Codec (HEVC) standard, and Versatile Video Codec (VVC) standard. However, the encoding and decoding efficiency and encoding and decoding quality of video encoding and decoding technologies are expected to be further improved. Summary of the invention
[0004] An embodiment of the present disclosure provides a solution for video processing.
[0005] In a first aspect, a method for video processing is provided. The method includes: for conversion between a current block of a video and a bitstream of the video, determining that a first prediction mode is applied to the current block, in which a prediction sample of the current block is derived based on a reference value determined by a block vector for the current block in a virtual buffer; wherein the reference value in the virtual buffer is derived from a block of sample values in the same video region of the current video block; performing conversion based on the prediction sample; determining a group of blocks from the multiple blocks based on coded and decoded information of the multiple blocks in the same video region, the multiple blocks being coded and decoded before the current block; and updating the virtual buffer based on the group of blocks.
[0006] According to the method of the first aspect of the present disclosure, the virtual buffer for the first prediction mode is updated based on the coded information. Compared with the conventional solution, the proposed method can advantageously update the virtual buffer adaptively. Thus, the coding efficiency and coding quality can be improved.
[0007] In a second aspect, another method for video processing is provided, which includes: obtaining a merge list for the current block for conversion between a current block of a video and a bitstream of the video; reordering the merge candidates based on coded information of the merge candidates in the merge list; and performing conversion based on the reordered merge candidates.
[0008] According to the method of the second aspect of the present disclosure, based on the coded information, the merging candidates in the merging list are reordered. Compared with conventional solutions, the proposed method can advantageously reorder the merging candidates in the merging list, thereby improving coding efficiency and coding quality.
[0009] In a third aspect, a device for video processing is provided. The device includes a processor and a non-volatile memory having instructions thereon. The instructions, when executed by the processor, cause the processor to perform the method according to the first aspect of the present disclosure.
[0010] In a fourth aspect, a non-transitory computer-readable storage medium is provided, wherein the non-transitory computer-readable storage medium stores instructions, and the instructions enable a processor to execute the method according to the first aspect of the present disclosure.
[0011] In a fifth aspect, another non-transitory computer-readable recording medium is proposed. The non-transitory computer-readable recording medium stores a bitstream of a video generated by a method performed by a device for video processing. The method includes: determining that a first prediction mode is applied to a current block of a video, in which a prediction sample of the current block is derived based on a reference value determined by a block vector for the current block in a virtual buffer; wherein the reference value in the virtual buffer is derived from a block of sample values in the same video area of the current video block; generating a bitstream based on the prediction sample; determining a group of blocks from a plurality of blocks based on coded and decoded information of a plurality of blocks in the same video area, the plurality of blocks being coded and decoded before the current block; and updating the virtual buffer based on the group of blocks.
[0012] In a sixth aspect, a method for storing a bitstream of a video is proposed. The method includes: determining that a first prediction mode is applied to a current block of the video, in which, based on a reference value determined by a block vector for the current block in a virtual buffer, a prediction sample of the current block is derived; wherein the reference value in the virtual buffer is derived from a block of sample values in the same video region of the current video block; generating a bitstream based on the prediction sample; determining a group of blocks from a plurality of blocks based on coded and decoded information of a plurality of blocks in the same video region, the plurality of blocks being coded and decoded before the current block; updating the virtual buffer based on the group of blocks; and storing the bitstream in a non-transitory computer-readable recording medium.
[0013] In a seventh aspect, a non-transitory computer-readable recording medium is provided. The non-transitory computer-readable recording medium stores a bitstream of a video generated by a method performed by a device for video processing. The method includes: obtaining a merge list for a current block of the video; reordering the merge candidates based on the coded information of the merge candidates in the merge list; and generating a bitstream based on the reordered merge candidates.
[0014] In an eighth aspect, a method for storing a bitstream of a video is provided, the method comprising: obtaining a merge list for a current block of the video; reordering the merge candidates based on the coded information of the merge candidates in the merge list; generating a bitstream based on the reordered merge candidates; and storing the bitstream in a non-transitory computer-readable recording medium.
[0015] This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter. BRIEF DESCRIPTION OF THE DRAWINGS
[0016] The above and other objects, features and advantages of the exemplary embodiments of the present disclosure will become more apparent through the following detailed description with reference to the accompanying drawings. In the exemplary embodiments of the present disclosure, the same reference numerals generally refer to the same components.
[0017] Figure 1 A block diagram showing an example video encoding and decoding system according to some embodiments of the present disclosure is shown;
[0018] Figure 2 A block diagram of a first example video encoder according to some embodiments of the present disclosure is shown;
[0019] Figure 3 A block diagram of an example video decoder according to some embodiments of the present disclosure is shown;
[0020] Figure 4 A schematic diagram of intra-frame block copying is shown;
[0021] Figure 5 The current codec tree unit (CTU) processing order and available reference samples in the current and left CTUs are shown;
[0022] Figure 6 A schematic diagram showing 67 intra prediction modes in VCC;
[0023] Figure 7 A schematic diagram of a sort-based IBC merge list is shown;
[0024] Figure 8 A flowchart of a method for video processing according to some embodiments of the present disclosure is shown;
[0025] Fig. 9 A flowchart of a method for video processing according to some embodiments of the present disclosure is shown;
[0026] Fig.10A block diagram of a computing device is shown in which various embodiments of the present disclosure may be implemented.
[0027] Throughout the drawings, same or similar reference numbers generally refer to same or similar elements. DETAILED DESCRIPTION
[0028] The principle of the present disclosure is now described in conjunction with some embodiments. It should be understood that these embodiments are described only for illustrative purposes to help those skilled in the art understand and implement the present disclosure without any limitation to the scope of the present disclosure. The disclosure described herein can be implemented in various ways except for the manner described below.
[0029] In the following description and claims, unless defined otherwise, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this disclosure belongs.
[0030] References in this disclosure to "one embodiment," "an embodiment," "an example embodiment," etc. indicate that the described embodiment may include a particular feature, structure, or characteristic, but not every embodiment necessarily includes the particular feature, structure, or characteristic. Furthermore, these phrases do not necessarily refer to the same embodiment. Furthermore, when a particular feature, structure, or characteristic is described in conjunction with an example embodiment, it is considered to be within the knowledge of those skilled in the art to affect such feature, structure, or characteristic in other embodiments, whether or not explicitly described.
[0031] It should be understood that although the terms "first" and "second" etc. may be used herein 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. For example, without departing from the scope of the exemplary embodiments, a first element may be referred to as a second element, and similarly a second element may be referred to as a first element. As used herein, the term "and / or" includes any and all combinations of one or more of the listed terms.
[0032] The terms used herein are only used for the purpose of describing specific embodiments and are not intended to limit the exemplary embodiments. As used herein, unless the context clearly indicates otherwise, the singular forms "a", "an", and "the" are intended to include the plural forms as well. It should also be understood that when used herein, the terms "comprises", "comprising", "has", "having", "includes", and / or "including" specify the presence of stated features, elements, and / or components, etc., but do not exclude the presence or addition of one or more other features, elements, components, and / or combinations thereof. Example Environment
[0033] Figure 1 1 is a block diagram illustrating an example video codec system 100 that may utilize the techniques of the present disclosure. As shown, the video codec system 100 may include a source device 110 and a destination device 120. The source device 110 may also be referred to as a video encoding device, and the destination device 120 may also be referred to as a video decoding device. In operation, the source device 110 may be configured to generate encoded video data, and the destination device 120 may be configured to decode the encoded video data generated by the source device 110. The source device 110 may include a video source 112, a video encoder 114, and an input / output (I / O) interface 116.
[0034] The video source 112 may include a source such as a video capture device. Examples of a video capture device include, but are not limited to, an interface for receiving video data from a video content provider, a computer graphics system for generating video data, and / or a combination thereof.
[0035] The video data may include one or more pictures. The video encoder 114 encodes the video data from the video source 112 to generate a bit stream. The bit stream may include a bit sequence that forms a coded representation of the video data. The bit stream may include coded pictures and associated data. The coded pictures are coded representations of pictures. The associated data may include sequence parameter sets, picture parameter sets and other grammatical structures. The I / O interface 116 may include a modulator / demodulator and / or a transmitter. The coded video data may be directly transmitted to the destination device 120 via the network 130A via the I / O interface 116. The coded video data may also be stored on a storage medium / server 130B for access by the destination device 120.
[0036] The destination device 120 may include an I / O interface 126, a video decoder 124, and a display device 122. The I / O interface 126 may include a receiver and / or a modem. The I / O interface 126 may obtain encoded video data from the source device 110 or the storage medium / server 130B. The video decoder 124 may decode the encoded video data. The display device 122 may display the decoded video data to the user. The display device 122 may be integrated with the destination device 120, or may be outside the destination device 120, which is configured to be connected to an external display device interface.
[0037] The video encoder 114 and the video decoder 124 may operate according to a video compression standard, such as the High Efficiency Video Codec (HEVC) standard, the Versatile Video Codec (VVC) standard, and other existing and / or future standards.
[0038] Figure 2 is a block diagram showing an example of a video encoder 200 according to some embodiments of the present disclosure, which may be Figure 1 An example of a video encoder 114 in the system 100 is shown.
[0039] Video encoder 200 may be configured to implement any or all of the techniques of this disclosure. Figure 2 In the example of , video encoder 200 includes multiple functional components. The techniques described in this disclosure can be shared between the various components of video encoder 200. In some examples, a processor can be configured to perform any or all of the techniques described in this disclosure.
[0040] In some embodiments, the video encoder 200 may include a partitioning unit 201, a prediction unit 202, a residual generation unit 207, a transformation unit 208, a quantization unit 209, an inverse quantization unit 210, an inverse transformation unit 211, a reconstruction unit 212, a buffer 213 and an entropy coding unit 214, and the prediction unit 202 may include a mode selection unit 203, a motion estimation unit 204, a motion compensation unit 205 and an intra-frame prediction unit 206.
[0041] In other examples, the video encoder 200 may include more, fewer, or different functional components. In one example, the prediction unit 202 may include an intra-block copy (IBC) unit. The IBC unit may perform prediction in an IBC mode, where at least one reference picture is a picture where the current video block is located.
[0042] Furthermore, although some components (such as the motion estimation unit 204 and the motion compensation unit 205) may be integrated, for the purpose of explanation, these components are described in detail below. Figure 2 are shown separately in the example.
[0043] The partitioning unit 201 may partition a picture into one or more video blocks. The video encoder 200 and the video decoder 300 may support various video block sizes.
[0044] The mode selection unit 203 may select one of a plurality of coding modes (intra or inter) based on the error result, for example, and provide the resulting intra-coded block or inter-coded block to the residual generation unit 207 to generate residual block data, and to the reconstruction unit 212 to reconstruct the coded block for use as a reference picture. In some examples, the mode selection unit 203 may select a combination of intra and inter prediction (CIIP) modes, where the prediction is based on an inter prediction signal and an intra prediction signal. In the case of inter prediction, the mode selection unit 203 may also select a resolution for the motion vector (e.g., sub-pixel precision or integer pixel precision) for the block.
[0045] To perform inter-frame prediction on the current video block, the motion estimation unit 204 may generate motion information for the current video block by comparing the current video block with one or more reference frames from the buffer 213. The motion compensation unit 205 may determine a predicted video block for the current video block based on the motion information and decoded samples of pictures from the buffer 213 other than the picture associated with the current video block.
[0046] The motion estimation unit 204 and the motion compensation unit 205 may perform different operations on the current video block, for example, depending on whether the current video block is in an I slice, a P slice, or a B slice. As used herein, an "I slice" may refer to a portion of a picture consisting of macroblocks, all of which are based on macroblocks within the same picture. Furthermore, as used herein, in some aspects, a "P slice" and a "B slice" may refer to a portion of a picture consisting of macroblocks that are independent of macroblocks in the same picture.
[0047] In some examples, the motion estimation unit 204 may perform unidirectional prediction on the current video block, and the motion estimation unit 204 may search the reference pictures of list 0 or list 1 to find the reference video block for the current video block. The motion estimation unit 204 may then generate a reference index and a motion vector, the reference index indicating the reference picture in list 0 or list 1 containing the reference video block, and the motion vector indicating the spatial displacement between the current video block and the reference video block. The motion estimation unit 204 may output the reference index, the prediction direction indicator, and the motion vector as the motion information of the current video block. The motion compensation unit 205 may generate a predicted video block for the current video block based on the reference video block indicated by the motion information of the current video block.
[0048] Alternatively, in other examples, the motion estimation unit 204 may perform bidirectional prediction on the current video block. The motion estimation unit 204 may search the reference pictures in list 0 for a reference video block for the current video block, and may also search the reference pictures in list 1 for another reference video block for the current video block. The motion estimation unit 204 may then generate a plurality of reference indexes and a plurality of motion vectors, the plurality of reference indexes indicating a plurality of reference pictures in list 0 and list 1 containing a plurality of reference video blocks, and the plurality of motion vectors indicating a plurality of spatial displacements between the plurality of reference video blocks and the current video block. The motion estimation unit 204 may output the plurality of reference indexes and the plurality of motion vectors of the current video block as motion information of the current video block. The motion compensation unit 205 may generate a predicted video block for the current video block based on the plurality of reference video blocks indicated by the motion information of the current video block.
[0049] In some examples, motion estimation unit 204 may output a complete set of motion information for use in a decoding process by a decoder. Alternatively, in some embodiments, motion estimation unit 204 may signal motion information of a current video block with reference to motion information of another video block. For example, motion estimation unit 204 may determine that motion information of a current video block is sufficiently similar to motion information of an adjacent video block.
[0050] In one example, motion estimation unit 204 may indicate to video decoder 300 a value in a syntax structure associated with the current video block that indicates that the current video block has the same motion information as another video block.
[0051] In another example, the motion estimation unit 204 may identify another video block and a motion vector difference (MVD) in a syntax structure associated with the current video block. The motion vector difference indicates the difference between the motion vector of the current video block and the motion vector of the indicated video block. The video decoder 300 may use the motion vector of the indicated video block and the motion vector difference to determine the motion vector of the current video block.
[0052] As discussed above, the video encoder 200 may signal motion vectors in a predictive manner.Two examples of prediction signaling techniques that may be implemented by the video encoder 200 include Advanced Motion Vector Prediction (AMVP) and merge mode signaling.
[0053] The intra prediction unit 206 may perform intra prediction on the current video block. When the intra prediction unit 206 performs intra prediction on the current video block, the intra prediction unit 206 may generate prediction data for the current video block based on decoded samples of other video blocks in the same picture. The prediction data for the current video block may include a prediction video block and various syntax elements.
[0054] The residual generation unit 207 may generate residual data for the current video block by subtracting (e.g., indicated by a minus sign) the prediction video block(s) of the current video block from the current video block. The residual data of the current video block may include residual video blocks corresponding to different sample portions of samples in the current video block.
[0055] In other examples, such as in skip mode, there may be no residual data for the current video block, and the residual generation unit 207 may not perform a subtraction operation.
[0056] Transform processing unit 208 may generate one or more transform coefficient video blocks for a current video block by applying one or more transforms to the residual video block associated with the current video block.
[0057] After transform processing unit 208 generates a transform coefficient video block associated with the current video block, quantization unit 209 may quantize the transform coefficient video block associated with the current video block based on one or more quantization parameter (QP) values associated with the current video block.
[0058] The inverse quantization unit 210 and the inverse transform unit 211 may apply inverse quantization and inverse transform to the transform coefficient video block, respectively, to reconstruct a residual video block from the transform coefficient video block. The reconstruction unit 212 may add the reconstructed residual video block to corresponding samples from one or more prediction video blocks generated by the prediction unit 202 to generate a reconstructed video block associated with the current video block for storage in the buffer 213.
[0059] After reconstruction unit 212 reconstructs the video block, a loop filtering operation may be performed to reduce video blocking artifacts in the video block.
[0060] The entropy coding unit 214 may receive data from other functional components of the video encoder 200. When the entropy coding unit 214 receives the data, the entropy coding unit 214 may perform one or more entropy coding operations to generate entropy-coded data and output a bitstream including the entropy-coded data.
[0061] Figure 3 is a block diagram showing an example of a video decoder 300 according to some embodiments of the present disclosure, which may be Figure 1 An example of a video decoder 124 in the system 100 is shown.
[0062] Video decoder 300 may be configured to perform any or all of the techniques of this disclosure. Figure 3 In the example of , video decoder 300 includes multiple functional components. The techniques described in this disclosure can be shared between the various components of video decoder 300. In some examples, a processor can be configured to perform any or all of the techniques described in this disclosure.
[0063] exist Figure 3 In the example of , the video decoder 300 includes an entropy decoding unit 301, a motion compensation unit 302, an intra prediction unit 303, an inverse quantization unit 304, an inverse transform unit 305, and a reconstruction unit 306 and a buffer 307. In some examples, the video decoder 300 can perform a decoding process that is generally opposite to the encoding process described with respect to the video encoder 200.
[0064] The entropy decoding unit 301 can retrieve the encoded bitstream. The encoded bitstream may include entropy-encoded video data (e.g., encoded video data blocks). The entropy decoding unit 301 can decode the entropy-encoded video data, and the motion compensation unit 302 can determine motion information from the entropy-decoded video data, the motion information including motion vectors, motion vector precision, reference picture list indexes, and other motion information. The motion compensation unit 302 can determine the information, for example, by performing AMVP and merge mode. AMVP is used, including deriving several most likely candidates based on data and reference pictures from adjacent PBs. The motion information typically includes horizontal and vertical motion vector displacement values, one or two reference picture indexes, and in the case of prediction areas in B strips, also includes an identification of which reference picture list is associated with each index. As used herein, in some aspects, "merge mode" may refer to deriving motion information from blocks that are adjacent in the spatial or temporal domain.
[0065] The motion compensation unit 302 may generate a motion compensated block, possibly performing interpolation based on interpolation filtering.An identifier for the interpolation filter used with sub-pixel precision may be included in the syntax element.
[0066] The motion compensation unit 302 may calculate interpolated values for sub-integer pixels of a reference block using interpolation filtering used by the video encoder 200 during encoding of the video block. The motion compensation unit 302 may determine the interpolation filter used by the video encoder 200 based on received syntax information, and the motion compensation unit 302 may use the interpolation filter to generate a prediction block.
[0067] The motion compensation unit 302 may use at least part of the syntax information to determine the size of blocks used to encode (multiple) frames and / or (multiple) slices of the encoded video sequence, partition information describing how each macroblock of a picture of the encoded video sequence is partitioned, a mode indicating how each partition is encoded, one or more reference frames (and reference frame lists) for each inter-coded block, and other information for decoding the encoded video sequence. As used herein, in some aspects, a "slice" may refer to a data structure that can be decoded independently of other slices of the same picture in terms of entropy coding and decoding, signal prediction, and residual signal reconstruction. A slice may be an entire picture, or it may be a region of a picture.
[0068] The intra prediction unit 303 may use, for example, an intra prediction mode received in the bitstream to form a prediction block from spatially neighboring blocks. The inverse quantization unit 303 inversely quantizes (i.e., dequantizes) the quantized video block coefficients provided in the bitstream and decoded by the entropy decoding unit 301. The inverse transform unit 303 applies an inverse transform.
[0069] The reconstruction unit 306 may obtain the decoded block, for example, by adding the residual block to the corresponding prediction block generated by the motion compensation unit 202 or the intra prediction unit 303. If necessary, a deblocking filter may also be applied to filter the decoded block in order to remove blocking artifacts. The decoded video block is then stored in a buffer 307, which provides reference blocks for subsequent motion compensation / intra prediction, and the buffer 307 also generates the decoded video for presentation on a display device.
[0070] Some exemplary embodiments of the present disclosure will be described in detail below. It should be noted that the section titles used in this document are for ease of understanding, rather than limiting the embodiments disclosed in the section to that section. In addition, although some embodiments are described with reference to general video codecs or other specific video codecs, the disclosed technology is also applicable to other video codec technologies. In addition, although some embodiments describe the video coding and decoding steps in detail, it should be understood that the corresponding decoding steps of the cancellation codec will be implemented by the decoder. In addition, the term video processing includes video coding or compression, video decoding or decompression, and video transcoding, in which video pixels are represented from one compression format to another compression format or at different compression bit rates. 1. Brief Overview The present disclosure relates to video coding technology. Specifically, it relates to intra-frame block replication in video coding. It can be applied to existing video coding standards, such as HEVC or VCC (Versatile Video Codec) standards, or all other video coding standards. It can also be applied to future video coding standards or video codecs. 2. Introduction Video codec standards have evolved primarily through the development of the well-known ITU-T and ISO / IEC standards. ITU-T developed H.261 and H.263, ISO / IEC developed MPEG-1 and MPEG-4 Visual, and the two organizations jointly developed the H.262 / MPEG-2 Video and H.264 / MPEG-4 Advanced Video Codec (AVC) and H.265 / HEVC standards. Since H.262, video codec standards have been based on a hybrid video codec structure that utilizes temporal prediction plus transform codec. In order to explore future video codec technologies beyond HEVC, VCEG and MPEG jointly established the Joint Video Exploration Team (JVET) in 2015. Since then, JVET has adopted many new methods and put them into reference software called the Joint Video Exploration Model (JEM). In April 2018, a Joint Video Experts Team (JVET) between VCEG (Q6 / 16) and ISO / IEC JTC1 SC29 / WG11 (MPEG) was formed to work on the VVC standard with the goal of a 50% bitrate reduction compared to HEVC. 2.1 Intra-block copy (IBC) 2.1.1 The overall concept of IBC Intra-block copy (IBC), also known as current picture referencing, has been adopted by HEVC Screen Content Codec Extension (HEVC-SCC) and the current VVC Test Model (VTM-16.0). IBC extends the concept of motion compensation from inter-frame codecs to intra-frame codecs. Figure 4 FIG. 2 shows a schematic diagram of intra-frame block replication. Figure 4 As shown, when IBC is applied, the current block is predicted by the reference block in the same picture. Before the current block is encoded or decoded, the samples in the reference block must have been reconstructed. Although IBC is not efficient for sequences captured by most cameras, it shows significant codec gains for screen content. The reason is that there are a large number of repeated patterns in screen content pictures, such as icons and text characters. IBC can effectively remove the redundancy between these repeated patterns. In HEVC-SCC, the inter-coded codec unit (CU) can apply IBC when selecting the current picture as its reference picture. In this case, MV is renamed as block vector (BV), and BV always has integer pixel precision. In order to be compatible with the main profile HEVC, the current picture is marked as a "long-term" reference picture in the decoded picture buffer (DPB). It is worth noting that in the multi-view / 3D video coding standard, the inter-view reference picture is also marked as a "long-term" reference picture. After the BV finds its reference block, a prediction can be generated by copying the reference block. Subtracting the reference pixels from the original signal gives the residual. Then transforms and quantization can be applied like any other codec mode. However, when the reference block is outside the picture, or overlaps with the current block, or is outside the reconstructed area, or is outside the valid area limited by some constraints, some or all pixel values are undefined. There are basically two solutions to deal with this problem. One is to prohibit this situation, such as in bitstream consistency. The other is to fill these undefined pixel values. The following sub-sessions will describe these solutions in detail. 2.1.2 IBC in HEVC Screen Content Codec Extension In the screen content codec extension of HEVC, when a block uses the current picture as a reference, it should be ensured that the entire reference block is within the available reconstructed area, as shown in the following specification text: The variables offsetX and offsetY are derived as follows: offsetX=(ChromaArrayType==0)? 0:(mvCLX[0]&0x7?2:0) (2-1) offsetY=(ChromaArrayType==0)? 0:(mvCLX[1]&0x7?2:0) (2-2) The bitstream consistency requirement is that when the reference picture is the current picture, the luminance motion vector mvLX shall comply with the following constraints: – When the derivation process for z-scan step availability as specified in clause 6.4.1 is called with (xCurr, yCurr) set equal to (xCb, yCb) and the adjacent luminance position (xNbY, yNbY) set equal to (xPb+(mvLX[0]>>2)-offsetX, yPb+(mvLX[1]>>2)-offsetY) as input, the output shall be equal to TRUE. – When the derivation process for z-scanning order availability as specified in clause 6.4.1 is called with (xCurr, yCurr) set equal to (xCb, yCb) and the adjacent luminance position (xNbY, yNbY) set equal to (xPb+(mvLX[0]>>2)+nPbW-1+offsetX, yPb+(mvLX[1]>>2)+nPbH-1+offsetY) as input, the output shall be equal to TRUE. – One or both of the following conditions must be true: –The value of (mvLX[0]>>2)+nPbW+xB1+offsetX is less than or equal to 0. –The value of (mvLX[1]>>2)+nPbH+yB1+offsetY is less than or equal to 0. – The following conditions must be true: (xPb+(mvLX[0]>>2)+nPbSw-1+offsetX) / CtbSizeY-xCurr / CtbSizeY<=yCurr / CtbSizeY-(yPb+(mvLX[1]>>2)+nPbSh-1+offsetY) / CtbSizeY(2-3) Therefore, the situation where the reference block overlaps with the current block or the reference block is outside the picture will not occur. Therefore, there is no need to pad the reference block or the prediction block. 2.1.3 IBC in VVC As mentioned earlier, intra block copy (IBC) is a tool adopted in the HEVC extension on SCC. Since the IBC mode is implemented as a block-level codec mode, block matching (BM) is performed at the encoder to find the best block vector (or motion vector) for each CU. Here, the block vector is used to represent the displacement from the current block to the reference block, which has been reconstructed in the current picture. The luminance block vector of the CU decoded by IBC is integer precision. The chrominance block vector is also rounded to integer precision. The CU decoded by IBC is regarded as a third prediction mode in addition to the intra prediction mode and the inter prediction mode. The IBC mode is applicable to CUs whose width and height are both less than or equal to 64 luminance samples. On the encoder side, hash-based motion estimation is performed for IBC. The encoder performs RD checks on blocks with width or height no greater than 16 luma samples. For non-merge mode, a block vector search is first performed using a hash-based search. If the hash search does not return a valid candidate, a local search based on block matching is performed. In hash-based search, the hash key matching (32-bit CRC) between the current block and the reference blocks is extended to all allowed block sizes. The hash key calculation for each position in the current picture is based on 4x4 sub-blocks. For larger-sized current blocks, the hash key is determined to match the hash key of the reference block when the hash keys of all 4×4 sub-blocks match the hash keys of the corresponding reference positions. If the hash keys of multiple reference blocks are found to match the hash key of the current block, the block vector cost of each matching reference block is calculated, and the one with the smallest cost is selected. In block matching search, the search range is set to cover the previous CTU and the current CTU. At CU level, IBC mode is signaled as a flag and can be signaled as IBC AMV mode or IBC skip / merge mode as follows: - IBC skip / merge mode: The merge candidate index is used to indicate which block vector from the neighboring candidate IBC coded blocks in the list is used to predict the current block. The merge list consists of spatial candidates, HMVP candidates and pairwise candidates. – IBC AMVP mode: Block vector differences are encoded in the same way as motion vector differences. The block vector prediction method uses two candidates as predictors, one from the left neighbor and one from the upper neighbor (if IBC is encoded). When no neighbor is available, the default block vector will be used as the predictor. A flag is signaled to indicate the block vector predictor index. To reduce memory consumption and decoder complexity, IBC in VVC only allows reconstruction of predefined areas, including the area of the current CTU and some areas of the left CTU. Figure 5 The reference area of the IBC mode is shown, where each block represents a 64x64 luma sample unit. like Figure 5 As shown, depending on the position of the current codec CU position in the current CTU, the following applies: – If the current block falls into the upper left 64x64 block of the current CTU, in addition to the reconstructed samples in the current CTU, the reference samples in the lower right 64x64 block in the left CTU can also be referenced, using the CPR mode. The current block can also refer to the reference samples in the lower left 64x64 block in the left CTU and the reference samples in the upper right 64x64 block in the left CTU, using the CPR mode. –If the current block falls into the upper right 64x64 block of the current CTU, in addition to the reconstructed samples in the current CTU, if the luma position (0, 64) has not been reconstructed relative to the current CTU, the current block can also refer to the reference samples in the lower left 64x64 block and the lower right 64x64 block in the left CTU, using the CPR mode; otherwise, the current block can also refer to the reference samples in the lower right 64x64 block in the left CTU. –If the current block falls into the lower left 64x64 block of the current CTU, in addition to the reconstructed samples in the current CTU, if the luma position (0, 64) has not been reconstructed relative to the current CTU, the current block can also refer to the reference samples in the upper right 64x64 block and the lower right 64x64 block in the left CTU, using the CPR mode; otherwise, the current block can also refer to the reference samples in the lower right 64x64 block in the left CTU, using the CPR mode. – If the current block falls into the lower right 64x64 block of the current CTU, only the reconstructed samples in the current CTU can be referenced and the CPR mode is used. This restriction allows the IBC mode to be implemented using local on-chip memory for hardware implementations. 2.2 Intra-frame encoding and decoding 2.2.1 Intra-frame prediction Intra prediction is designed to capture the texture of a block. Angular intra modes take neighboring samples of the current block and predict the current block along an angular direction. To capture arbitrary edge directions present in natural video, the number of directional intra modes in VVC is extended to 65 from the 33 used in HEVC. Figure 6 New directional modes that are not in HEVC are depicted as dashed arrows, and planar and DC modes remain unchanged. These more dense directional intra prediction modes apply to all block sizes and for luma and chroma intra prediction. Figure 6 A schematic diagram showing 67 intra prediction modes in VVC. 2.2.2 Intra-frame prediction mode encoding and decoding In order to efficiently encode and decode the intra prediction mode, the Most Probable Mode (MPM) is used as the prediction of the intra mode of the current block. In order to reduce the complexity of MPM list generation, two available adjacent intra modes are considered and an intra mode encoding and decoding method with 6 MPM modes is used. The following three aspects are considered in constructing the MPM list: – Default intra mode; – Neighboring intra mode; – Intra mode for export. Regardless of whether the MRL and ISP codecs are applied, a unified 6-MPM list is used for intra blocks. The MPM list is constructed based on the intra modes of the left and above neighboring blocks. Assuming that the mode of the left neighboring block is denoted as Left and the mode of the above neighboring block is denoted as Above, the unified MPM list is constructed as follows: – When the neighboring block is not available, the default intra mode is set to planar; – If both Left and Above modes are non-angle modes: ○MPM List → {Planar,DC,V,H,V-4,V+4}. – If one of the modes Left and Above is an angle mode and the other is a non-angle mode: ○ Set the mode Max to the larger of Left and Above; ○MPM list → {Planar,Max,Max-1,Max+1,Max––2,Max+2}. – If Left and Above are both in angle mode and they are different: ○ Set the mode Max to the larger of Left and Above; ○ Set Mode Min to the smaller of Left and Above; ○ If Max-Min is equal to 1: ■MPM list →{Planar,Left,Above,Min–1,Max+1,Min–2}. ○ Otherwise, if Max-Min is greater than or equal to 62: ■MPM list →{Planar,Left,Above,Min+1,Max–1,Min+2}. ○ Otherwise, if Max-Min is equal to 2: ■MPM list →{Planar,Left,Above,Min+1,Min–1,Max+1}. Otherwise: ■MPM list →{Planar,Left,Above,Min–1,–Min+1,Max–1}. – If Left and Above are both in angle mode and are the same: ○MPM list→{Planar,Left,Left-1,Left+1,Left–2,Left+2}. In addition, the first binary bit of the mpm index codeword is CABAC context coded. A total of three contexts are used, corresponding to whether the current intra block is MRL enabled, ISP enabled, or a normal intra block. During the generation of the 6 MPM lists, pruning is used to remove repeated patterns so that only unique patterns can be included in the MPM lists. For entropy coding and decoding of the 61 non-MPM patterns, truncated binary code (TBC) is used. 2.3 Inter-frame prediction Inter prediction is designed to exploit the temporal correlation of video. The general idea of inter prediction mode is to find a reference block for the current block. Motion information indicating the location of the reference block is usually signaled. For each inter-predicted CU, the motion parameters consist of a motion vector, a reference picture index and a reference picture list usage index, as well as additional information required by the new codec features of VVC used for inter-predicted sample generation. Motion parameters can be signaled in an explicit or implicit manner. When a CU is encoded and decoded in skip mode, the CU is associated with one PU, and the CU has no significant residual coefficients, nor does it have a coded motion vector delta or reference picture index. Merge mode is specified as the motion parameters for the current CU are obtained from neighboring CUs, including spatial and temporal candidates, and additional schedules introduced in VVC. Merge mode can be applied to any inter-predicted CU, not just skip mode. Another alternative to merge mode is explicit transmission of motion parameters, where each CU explicitly signals motion vectors, corresponding reference picture indexes and reference picture list usage flags for each reference picture list, and other required information. In VCC, the merge candidate list consists of the following five candidates in order: 1) Spatial MVP from spatially neighboring CUs; 2) Temporal MVP from the co-located CU; 3) History-based MVP from FIFO table; 4) Paired average MVP; 5) Zero MVP. The size of the merge list is signaled in the sequence parameter set header, and the maximum allowed merge list size is 6. For each CU code in merge mode, the index of the best merge candidate is encoded using truncated unary binarization (TU). The first binary bit of the merge index is coded by context, while bypass coding is used for the other binary bits. 2.4 Quantization Parameters The quantization parameter is signaled to indicate the strength of dequantization to be performed. The part of the VVC draft related to the quantization parameter is described as follows. Derivation process for quantization parameters The input to this process is: – Luma position (xCb, yCb) specifies the top-left luma sample of the current codec block relative to the top-left luma sample of the current picture; – The variable cbWidth specifies the width of the current codec block in luma samples; – The variable cbHeight specifies the height of the current codec block in luma samples; – The variable treeType specifies whether a single tree (SINGLE_TREE) or a dual tree is used to partition the codec tree nodes, and when using a dual tree, whether the luma (DUAL_TREE_LUMA) or chroma components (DUAL_TREE_CHROMA) are currently being implemented. In this process, the brightness quantization parameter Qp′ Y and the chromaticity quantization parameter Qp′ Cb , Qp′ Cr and Qp′ CbCr is exported. The luma position (xQg, yQg) specifies the top left luma sample of the current quantization group relative to the top left luma sample of the current picture. The horizontal position xQg and the vertical position yQg are set equal to CuQgTopLeftX and CuQgTopLeftY, respectively. Note--The current quantization group is the codec tree block that shares the same qP Y_PRED Its width and height are equal to the width and height of the codec tree node whose top left luma sample position is assigned to variables CuQgTopLeftX and CuQgTopLeftY. When treeType is equal to SINGLE_TREE or DUAL_TREE_LUMA, the predicted luma quantization parameter qP Y_PRED It is exported through the following order of steps: 1. Variable qP Y_PREV is exported as follows: -If one or more of the following conditions are true, qP Y_PREV is set equal to SliceQp Y . - The current quantization group is the first quantization group in the strip. - The current quantization group is the first quantization group in the tile. - Otherwise, qP Y_PREV Set equal to the luma quantization parameter Qp of the last luma codec unit in the previous quantization group in decoding order Y . 2. Invoke the derivation procedure for neighbor block availability specified in subclause 6.4.4 with position (xCurr, yCurr) set equal to (xCb, yCb), neighbor position (xNbY, yNbY) set equal to (xQg-1, yQg), checkPredModeY set equal to FALSE, and cIdx set equal to 0 as input, and the output is assigned to availableA. Variable qP Y_A is exported as follows: -If one or more of the following conditions are true, qPY_A is set equal to qP Y_PREV : -availableA is equal to FALSE. - The CTB containing the luma codec block covering luma position (xQg-1, yQg) is not equal to the CTB containing the current luma codec block at (xCb, yCb), i.e., one or more of the following conditions are true: -(xQg-1)>>CtbLog2SizeY is not equal to (xCb)>>CtbLog2SizeY –(yQg)>>CtbLog2SizeY is not equal to (yCb)>>CtbLog2SizeY Otherwise, qP Y_A is set equal to the luma quantization parameter Qp of the codec unit containing the luma codec block covering (xQg-1, yQg) Y . 3. Invoke the derivation procedure for neighbor block availability specified in subclause 6.4.4 with position (xCurr, yCurr) set equal to (xCb, yCb), neighbor position (xNbY, yNbY) set equal to (xQg, yQg-1), checkPredModeY set equal to FALSE, and cIdx set equal to 0 as input, and the output is assigned to availableB. The variable qP Y_B is exported as follows: -If one or more of the following conditions are true, qP Y_B is set equal to qP Y_PREV : -availableB is equal to FALSE. - The CTB containing the luma codec block covering luma position (xQg, yQg-1) is not equal to the CTB containing the current luma codec block at (xCb, yCb), i.e. one or more of the following conditions are true: – (xQg)>>CtbLog2SizeY is not equal to (xCb)>>CtbLog2SizeY –(yQg-1)>>CtbLog2SizeY is not equal to (yCb)>>CtbLog2SizeY - Otherwise, qP Y_B is set equal to the luma quantization parameter Qp of the codec unit containing the luma codec block covering (xQg, yQg-1) Y . 4. Predicted brightness quantization parameter qP Y_PRED is exported as follows: -If all of the following conditions are true, then qP Y_PRED is set equal to the luma quantization parameter Qp of the codec unit containing the luma codec block covering (xQg, yQg-1) Y : -availableB is equal to FALSE. - The current quantization group is the first quantization group of the CTB row within the tile. - Otherwise, qP Y_PRED It is derived by: Q Y_PRED =(qP Y_A +qP Y_B +1)>>1 (1109) Variable Qp Y It is derived by: Q Y =((qP Y_PRED +CuQpDeltaVal+64+2*QpBdOffset)%(64+QpBdOffset))-QpBdOffset(1110) Luma quantization parameter Qp′ Y It is derived by: Qp′ Y =Qp Y +QpBdOffset (1111) When sps_chroma_format_idc is not equal to 0 and treeType is equal to SINGLE_TREE or DUAL_TREE_CHROMA, the following applies: -When treeType is equal to DUAL_TREE_CHROMA, the variable Qp Y Set equal to the luma quantization parameter Qp of the luma codec unit Y , the brightness codec unit covers the brightness position (xCb+cbWidth / 2, yCb+cbHeight / 2). -Variable qP Cb ,qP Cr and qP CbCr It is derived by: Q Chroma =Clip3(-QpBdOffset,63,Qp Y ) (1112) Q Cb =ChromaQpTable[0][qP Chroma ] (1113) Q Cr=ChromaQpTable[1][qP Chroma ] (1114) Q CbCr =ChromaQpTable[2][qP Chroma ] (1115) - Chroma quantization parameter Qp′ for components Cb and Cr Cb and Qp′ Cr And joint Cb-Cr codec Qp′ CbCr It is derived by: Qp′ Cb =Clip3(-QpBdOffset,63,qP Cb +pps_cb_qp_offset+sh_cb_qp_offset+CuQpOffset Cb )+QpBdOffset (1116) Qp′ Cr =Clip3(-QpBdOffset,63,qP Cr +pps_cr_qp_offset+sh_cr_qp_offset+CuQpOffset Cr )+QpBdOffset (1117) Qp′ CbCr =Clip3(-QpBdOffset,63,qP CbCr +pps_joint_cbcr_qp_offset_value+sh_joint_cbcr_qp_offset+CuQpOffset CbCr )+QpBdOffset (1118) 3. Question like Figure 5 As shown, the update of the IBC virtual buffer only considers the position of the current 64x64 block. For example, if the size of the CTU is 128x128 and the current block in the upper left 64x64 area is tested in IBC mode, the current block cannot use the samples in the upper left 64x64 area of the CTU to its left, which may lose some encoding and decoding efficiency. In addition, although the size of the virtual buffer can be expanded to include more samples, the hardware cost will also increase. Therefore, an adaptive update mechanism is required for the IBC virtual buffer. Meanwhile, IBC / inter merge candidates are currently sorted by position. However, the introduced distortion of each merge candidate can be estimated based on the previously coded information, and then all IBC / inter merge candidates are sorted according to the estimated criteria. 4. Detailed plan The following detailed schemes should be considered as examples to explain the general concept. These schemes should not be interpreted in a narrow sense. Furthermore, these schemes can be combined in any way. About IBC virtual buffer update: 1. The K blocks to be included in the IBC virtual buffer may be from the previously encoded S blocks. a. In one example, the current block may be a CTU. b. In one example, the current block may be an NxM block (eg, N=64 and M=64). c. In one example, the S blocks may be in different CTU rows. d. In one example, the K blocks may be in different CTU rows. 2. When deciding which blocks to include in the IBC virtual buffer, the coded information of the CUs in these blocks may be considered. a. In one example, the encoded information may include a prediction mode. i. Alternatively, in one example, the encoded information may include an intra prediction mode, an MPM flag and / or an MPM index. ii. Alternatively, in one example, the coded information may include motion information (eg, motion vector / reference index). iii. Alternatively, in one example, the encoded information may include a merge mode flag and / or a merge mode index. iv. Alternatively, in one example, the encoded information may include a quantization parameter. v. In one example, the encoded and decoded information may include two or more of the information described above. 3. Whether to include a block into the IBC virtual buffer may depend on the portion of its samples / CU / PU that is encoded or decoded in a specific mode. a. In one example, a block may be a CTU or a 64x64 block. b. In one example, out of the S blocks, K blocks may need to be included in the IBC virtual buffer. i. In one example, K blocks with the largest portion of samples / CU / PU coded in merge mode are selected. ii. In one example, K blocks with the smallest portion of samples / CU / PU coded in merge mode are selected. iii. In one example, K blocks having the largest portion of samples / CU / PU coded in intra mode are selected. iv. In one example, K blocks with the smallest portion of samples / CU / PU coded in intra mode are selected. v. In one example, K blocks with the largest portion of samples / CU / PU coded in inter mode are selected. vi. In one example, K blocks with the smallest portion of samples / CU / PU coded in inter mode are selected. 4. Whether to include a block into the IBC virtual buffer may depend on the quantization parameter (QP) of the CUs in the block. a. In one example, a block may be a CTU or a 64x64 block. b. In one example, for S blocks, K blocks may need to be included in the IBC virtual buffer. Let QP MIN (i) is the minimum QP of the CU in the i-th block, QP MAX (i) is the maximum QP of the CU in the i-th block, QP AVG (i) is the average QP of the CU in the i-th block, where i belongs to a closed interval [1, S]. i. In one example, in {QP MIN (1),…,QP MIN (S)} has the maximum QP MIN K blocks of values may be selected. 1) Alternatively, in one example, in {QP MAX (1),…,QP MAX (S)} has the maximum QP MAX K blocks of values may be selected. 2) Alternatively, in one example, in {QP AVG (1),…,QP AVG (S)} has the maximum QP AVG K blocks of values may be selected. ii. In one example, in {QP MIN (1),…,QP MIN (S)} has the minimum QP MIN K blocks of values may be selected. 1) Alternatively, in one example, in {QP MAX (1),…,QP MAX (S)} has the minimum QP MAX K blocks of values may be selected. 2) Alternatively, in one example, in {QP AVG (1),…,QP AVG (S)} has the minimum QP AVGK blocks of values may be selected. Regarding the reordering of IBC merge candidates: 5. The position of a candidate in the IBC merge list may depend on the coded information of the candidate. a. In one example, the encoded information may include a prediction mode. i. Alternatively, in one example, the encoded information may include an intra prediction mode, an MPM flag and / or an MPM index. ii. Alternatively, in one example, the coded information may include motion information (eg, motion vector / reference index). iii. Alternatively, in one example, the encoded information may include a merge mode flag and / or a merge mode index. iv. Alternatively, in one example, the encoded information may include a quantization parameter. v. In one example, the encoded and decoded information may include two or more of the information described above. 6. The position of a candidate in the IBC merge list may depend on a statistical process. a. In one example, a counter can be used by statistics. i. In one example, each unit in a slice / tile / frame / picture may have a counter. 1) In one example, the unit may be a 4×4 block. 2) In one example, a counter is assigned to the unit to store motion information. ii. In one example, the values of all counters in a slice / tile / frame / picture may be set to 0. 1) In one example, the value of the counter may be inherited from its IBC merge candidate, and if the merge candidate is selected, the value of the counter may be incremented by 1. 2) In one example, the value of the counter may be inherited from its IBC merge candidate, and if the merge candidate is selected and the current block is encoded and decoded using skip mode / merge mode, the value of the counter may be incremented by 1. 3) In one example, all counters of cells in a block have the same value. 4) In one example, if a block is not encoded using skip mode / merge mode, the values of the counters of all units in the block may be set to 0. b. In one example, the position of a candidate in the IBC merge list may depend on the value of its counter. i. In one example, candidates in the IBC merge list may be sorted based on their counters. 1) In one example, for two merge candidates A and B, if A has a smaller counter value than B, A should be ranked before B in the IBC merge list. c. In one example, Figure 7 As shown, Mi represents the i-th merge candidate, and C represents the counter value of the merge candidate. Figure 7 A schematic diagram showing a sort-based IBC merge list. i. In one example, M1, M2, M3, and M4 are sorted in ascending order based on the counter values of all merge candidates. ii. In one example, M1, M2, M3, and M4 are sorted in descending order based on the counter values of all merge candidates. iii. In one example, if the block is encoded using skip mode / merge mode and M2 is the selected candidate, the counter of the current block may be set equal to the counter value of M2 plus 1. Overall: 7. K, S, M and / or N are integers and may be based on: a. Video content (e.g., screen content or natural content); b. Messages signaled in DPS / SPS / VPS / PPS / APS / picture header / slice header / tile group header / largest codec unit (LCU) / codec unit (CU) / LCU row / LCU group / TU / PU / ; c. The block size of the current block and / or its neighboring blocks; d. Block shapes of the current block and / or its neighboring blocks; e. Indication of color format (such as 4:2:0, 4:4:4); f. Codec tree structure; g. Strip / tile group type and / or picture type; h. Color components (e.g., may only be applied to chroma components or luma components); i. Time layer ID; j. Standard grade / level / tier. 8. Whether and / or how the above methods are applied may be based on: a. Video content (e.g., screen content or natural content); b. Messages signaled in DPS / SPS / VPS / PPS / APS / picture header / slice header / tile group header / largest codec unit (LCU) / codec unit (CU) / LCU row / group / TU / PU / ; c. The block size of the current block and / or its neighboring blocks; d. Block shapes of the current block and / or its neighboring blocks; e. Indication of the color format (e.g. 4:2:0, 4:4:4); f. Codec tree structure; g. Strip / tile group type and / or picture type; h. Color components (e.g., may only be applied to chroma components or luma components); i. Time layer ID; j. Standard grade / level / tier. 9. The above points can also be applied to inter-frame merging coding and reference picture management.
[0071] More details about the IBC mode in the embodiments of the present disclosure are described below. The embodiments of the present disclosure should be regarded as examples to explain the general concept and should not be interpreted in a narrow sense. In addition, these embodiments can be applied alone or in combination in any way.
[0072] As used herein, the term "block" may refer to a codec tree block (CTB), a codec tree unit (CTU), a codec block (CB), a codec unit (CU), a prediction unit (PU), a transform unit (TU), a prediction block (PB), a transform block (TB), a video processing unit including a plurality of samples / pixels, etc. A block may be rectangular or non-rectangular.
[0073] Figure 8 800 is a flowchart of a method 800 for video processing according to some embodiments of the present disclosure. The method 800 may be implemented during the conversion between a current block of a video and a bitstream of the video. Figure 8 As shown, method 800 starts at block 802, where it is determined that a first prediction mode is to be applied to a current block. At block 804, in the first prediction mode, prediction samples of the current block are derived based on reference values in a virtual buffer, the virtual buffer being determined by a block vector for the current block. The reference values in the virtual buffer are derived from a block of sample values of the same video region of the current video block. For example, the video region may be a picture, a slice, etc. As an example and not limitation, the first prediction may be an IBC mode, and the virtual buffer may be referred to as an "IBC virtual buffer".
[0074] At 806, a conversion is performed based on the prediction samples. In one example, the conversion may include encoding the current block into a bitstream. Alternatively or additionally, the conversion may include decoding the current block from a bitstream.
[0075] At 808, a group of blocks is determined from the plurality of blocks based on the coded information of the plurality of blocks of the same video region. The plurality of blocks are coded before the current block. By way of example and not limitation, the coded information may include a prediction mode, an intra prediction mode, a most probable mode (MPM) flag, an MPM index, motion information (e.g., a motion vector or a reference index), a merge mode flag, a merge mode index, a quantization parameter (QP), and / or the like.
[0076] In some embodiments, the current block may be a codec tree unit (CTU) or any other suitable block. In addition, the size of the current block may be N×M, and each of N and M may be an integer. For example, N may be 64 and M may be 64. Similarly, a block in a plurality of blocks may be a CTU or any other suitable block. In addition, a block in a plurality of blocks may have a predetermined size, such as 64×64. It should be understood that the above description and / or examples are for descriptive purposes only. The scope of the present disclosure is not limited in this regard.
[0077] At 810, a virtual buffer is updated based on a set of blocks.
[0078] In view of the above, the virtual buffer for the first prediction mode is updated based on the coded information. Compared with the conventional solution, the proposed method can advantageously update the virtual buffer adaptively. Thus, the coding efficiency and coding quality can be improved.
[0079] In some embodiments, a first block in the plurality of blocks may be in a different CTU row than a second block in the plurality of blocks. That is, the plurality of blocks may be in different CTU rows. Additionally or alternatively, a third block in the group of blocks may be in a different CTU row than a fourth block in the group of blocks. That is, the group of blocks may be in different CTU rows.
[0080] In some embodiments, at 802, a ratio value of a target unit that may be encoded and decoded using a target mode in a corresponding block may be determined for each of the plurality of blocks. In addition, a group of blocks may be selected from the plurality of blocks based on the ratio values of the plurality of blocks. By way of example and not limitation, the target unit may include a sample, a coding unit (CU), a prediction unit (PU), etc. The target mode may include a merge mode, an intra mode, an inter mode, or the like.
[0081] In some embodiments, a group of blocks may include K blocks with the first K largest ratio values. Alternatively, a group of blocks may include K blocks with the first K smallest ratio values. K may be an integer.
[0082] In some embodiments, at 802, for each block in the plurality of blocks, a value of the first parameter may be determined based on a minimum value of the QP of the CU in the corresponding block. In addition, a group of blocks may be selected from the plurality of blocks based on the values of the first parameter for the plurality of blocks. In one example, the group of blocks may include K blocks having the first K largest values of the first parameter. Alternatively, the group of blocks may include K blocks having the first K smallest values of the first parameter. K may be an integer.
[0083] In some embodiments, at 802, for each block in the plurality of blocks, a value of a second parameter may be determined based on a maximum value of a QP of a CU in the corresponding block. In addition, a group of blocks may be selected from the plurality of blocks based on the values of the second parameter for the plurality of blocks. In one example, a group of blocks may include K blocks having the first K largest values of the second parameter. Alternatively, a group of blocks may include K blocks having the first K smallest values of the second parameter. K may be an integer.
[0084] In some embodiments, at 802, for each block in the plurality of blocks, a value of a third parameter may be determined based on an average value of the QP of the CU in the corresponding block. In addition, a group of blocks may be selected from the plurality of blocks based on the values of the third parameter for the plurality of blocks. In one example, the group of blocks may include K blocks having the first K largest values of the third parameter. Alternatively, the group of blocks may include K blocks having the first K smallest values of the third parameter. K may be an integer.
[0085] In some embodiments, the size of the current block may be N×M. The number of blocks in a group of blocks may be K. The number of blocks in the plurality of blocks may be S. At least one of M, N, K or S may be an integer and depends on at least one of: video content of the video, a message included in a dependency parameter set (DPS), a message included in a sequence parameter set (SPS), a message included in a video parameter set (VPS), a message included in a picture parameter set (PPS), a message included in an adaptation parameter set (APS), a message included in a picture header, a message included in a slice header, a message included in a tile group header, a message included in a largest codec unit (LCU), a message included in a CU, a message included in an LCU row, a message included in an LCU group, a message included in a transform unit (TU), a message included in a PU, a size of a current block, a size of neighboring blocks of the current block, a shape of the current block, a shape of neighboring blocks of the current block, an indication of a color format of the video, a codec tree structure associated with the current block, a slice type associated with the current block, a tile group type associated with the current block, a picture type associated with the current block, a color component of the current block, a temporal layer identifier (ID) of the current block, a profile of a standard, a level of a standard, or a hierarchy of a standard.
[0086] In some embodiments, whether to apply the method and / or how to apply the method may depend on at least one of the following: video content of the video, a message included in a DPS, a message included in an SPS, a message included in a VPS, a message included in a PPS, a message included in an APS, a message included in a picture header, a message included in a slice header, a message included in a tile group header, a message included in an LCU, a message included in a CU, a message included in an LCU row, a message included in an LCU group, a message included in a TU, a message included in a PU, a size of a current block, a size of neighboring blocks of the current block, a shape of the current block, a shape of neighboring blocks of the current block, an indication of a color format of the video, a codec tree structure associated with the current block, a slice type associated with the current block, a tile group type associated with the current block, a picture type associated with the current block, a color component of the current block, a temporal layer ID of the current block, a standard profile, a standard level, or a standard hierarchy.
[0087] It should be understood that the above method can also be applied to inter-frame merging coding or reference picture management. In this regard, the scope of the present disclosure is not limited.
[0088] According to another embodiment of the present disclosure, a non-transitory computer-readable recording medium is provided. The non-transitory computer-readable recording medium stores a bitstream of a video generated by a method performed by a device for video processing, the method comprising: determining that a first prediction mode is applied to a current block of the video, in the first prediction mode, deriving a prediction sample of the current block based on a reference value determined by a block vector for the current block in a virtual buffer; wherein the reference value in the virtual buffer is derived from a block of sample values in the same video region of the current video block; generating a bitstream based on the prediction sample; determining a group of blocks from a plurality of blocks based on coded and decoded information of a plurality of blocks in the same video region, the plurality of blocks being coded and decoded before the current block; and updating the virtual buffer based on the group of blocks.
[0089] According to another embodiment of the present disclosure, a method for storing a bitstream of a video is provided. The method includes: determining that a first prediction mode is applied to a current block of the video, in which, based on a reference value determined by a block vector for the current block in a virtual buffer, a prediction sample of the current block is derived; wherein the reference value in the virtual buffer is derived from a block of sample values in the same video region of the current video block; generating a bitstream based on the prediction sample; determining a group of blocks from a plurality of blocks based on coded and decoded information of a plurality of blocks in the same video region, the plurality of blocks being coded and decoded before the current block; updating the virtual buffer based on the group of blocks; and storing the bitstream in a non-transitory computer-readable recording medium.
[0090] Fig. 9900 is a flowchart of a method for video processing according to some embodiments of the present disclosure. The method 900 may be implemented during the conversion between a current block of a video and a bitstream of the video. Fig. 9 As shown, method 900 starts at 902, where a merge list for the current block is obtained. As an example and not limitation, the merge list can be generated based on a predetermined rule. Alternatively, the merge list can be received from any other suitable source. In this regard, the scope of the present disclosure is not limited.
[0091] At 904, the merge candidates in the merge list are reordered based on the coded information of the merge candidates. By way of example and not limitation, the coded information may include a prediction mode, an intra prediction mode, a most probable mode (MPM) flag, an MPM index, motion information (e.g., a motion vector or a reference index), a merge mode flag, a merge mode index, a quantization parameter (QP), and / or the like.
[0092] At 906, a conversion is performed based on the reordered merge candidates. In one example, the conversion may include encoding the current block into a bitstream. Alternatively or additionally, the conversion may include decoding the current block from the bitstream.
[0093] In summary, the merging candidates in the merging list are reordered based on the coded and decoded information. Compared with conventional solutions, the proposed method can advantageously reorder the merging candidates in the merging list, thereby improving the coding efficiency and coding quality.
[0094] In some embodiments, the merge candidates may be reordered based on the statistical process and the encoded and decoded information. For example, a counter for the statistical process may be assigned to each of a plurality of units in one of the following: a strip of video, a tile of video, a frame of video, a picture of video, etc. In some embodiments, each of the plurality of units may include a block of a predetermined size, such as 4×4. Alternatively, a plurality of units are used to store motion information. In other words, motion information may be stored based on a plurality of units.
[0095] In some embodiments, the value of the counter may be set to a first predetermined value for initialization. In one example, if a first merge candidate is selected for a first unit among multiple units, the value of the counter for the first unit may be determined based on a second predetermined value (such as 1) and the sum of the values of the counters for the units corresponding to the first merge candidate. Alternatively, if a first merge candidate is selected for a first unit among multiple units and the first unit is encoded and decoded using a skip mode or a merge mode, the value of the counter for the first unit may be determined based on a second predetermined value (such as 1) and the sum of the values of the counters for the units corresponding to the first merge candidate. Therefore, the counter may estimate the introduced distortion of each merge candidate based on previously encoded and decoded information, and then sort all merge candidates according to the estimated distortion. Therefore, the merge candidates in the merge list may be sorted in a more reasonable manner.
[0096] In some embodiments, the values of the counters of all units in a block of a video may be the same. In addition, if a block of a video is not encoded and decoded using a skip mode and a merge mode, the values of the counters of all units in the block are set to a third predetermined value (e.g., 0). It should be understood that the above examples are for illustrative purposes only. The scope of the present disclosure is not limited in this regard.
[0097] In some embodiments, the position of the merge candidate in the merge list may depend on the value of the counter of the unit corresponding to the merge candidate. For example, based on the value of the counter for the unit corresponding to the merge candidate, the merge candidates in the merge list may be reordered. As an example and not limitation, the merge candidates in the merge list include a second merge candidate and a third merge candidate. If the value of the counter for the unit corresponding to the second merge candidate is less than the third merge candidate, the second merge candidate is located before the third merge candidate in the merge list.
[0098] In some embodiments, based on the value of the counter, the merge candidates in the merge list may be reordered in ascending order. Alternatively, based on the value of the counter, the merge candidates in the merge list may be reordered in descending order.
[0099] In some embodiments, whether to apply the method and / or how to apply the method may depend on at least one of the following: video content of the video, a message included in a DPS, a message included in an SPS, a message included in a VPS, a message included in a PPS, a message included in an APS, a message included in a picture header, a message included in a slice header, a message included in a tile group header, a message included in an LCU, a message included in a CU, a message included in an LCU row, a message included in an LCU group, a message included in a TU, a message included in a PU, a size of a current block, a size of a neighboring block of the current block, a shape of the current block, a shape of a neighboring block of the current block, an indication of a color format of the video, a codec tree structure associated with the current block, a slice type associated with the current block, a tile group type associated with the current block, a picture type associated with the current block, a color component of the current block, a temporal layer ID of the current block, a standard profile, a standard level, or a standard hierarchy.
[0100] It should be understood that the above method can also be applied to inter-frame merging coding or reference picture management. In this regard, the scope of the present disclosure is not limited.
[0101] According to another embodiment of the present disclosure, a non-transitory computer-readable recording medium is provided. The non-transitory computer-readable recording medium stores a bitstream of a video generated by a method performed by a device for video processing. In the method, a merge list for a current block of the video is obtained. Based on the coded information of the merge candidates in the merge list, the merge candidates are reordered. In addition, a bitstream is generated based on the reordered merge candidates.
[0102] According to another embodiment of the present disclosure, a method for storing a bitstream of a video is provided. In the method, a merge list for a current block of the video is obtained. Based on the coded information of the merge candidates in the merge list, the merge candidates are reordered. In addition, a bitstream is generated based on the reordered merge candidates, and the bitstream is stored in a non-transitory computer-readable recording medium.
[0103] Implementations of the present disclosure may be described in view of the following clauses, and features thereof may be combined in any reasonable manner.
[0104] Clause 1. A method for video processing, comprising: for conversion between a current block of a video and a bitstream of the video, determining that a first prediction mode is applied to the current block, in which the prediction sample of the current block is derived based on a reference value determined by a block vector for the current block in a virtual buffer; wherein the reference value in the virtual buffer is derived from a block of sample values in the same video area of the current video block; performing the conversion based on the prediction sample; determining a group of blocks from the multiple blocks based on encoded and decoded information of the multiple blocks in the same video area, the multiple blocks being encoded and decoded before the current block; and updating the virtual buffer based on the group of blocks.
[0105] Clause 2. The method of clause 1, wherein the encoded information comprises at least one of a prediction mode, an intra prediction mode, a most probable mode (MPM) flag, an MPM index, motion information, a merge mode flag, a merge mode index, or a quantization parameter (QP).
[0106] Clause 3. The method according to clause 2, wherein the motion information comprises at least one of the following: a motion vector, or a reference index.
[0107] Clause 4. The method of any one of clauses 1 to 3, wherein the current block is a codec tree unit (CTU).
[0108] Clause 5. The method of any one of clauses 1 to 4, wherein the current block has a size of N×M, and N and M are both integers.
[0109] Clause 6. The method of clause 5, wherein N is 64 and M is 64.
[0110] Clause 7. A method as described in any of clauses 1 to 6, wherein a first block of the plurality of blocks is in a different CTU row than a second block of the plurality of blocks.
[0111] Clause 8. A method as described in any of clauses 1 to 7, wherein a third block in the group of blocks is in a different CTU row than a fourth block in the group of blocks.
[0112] Clause 9. The method of any one of clauses 1 to 8, wherein a block in the plurality of blocks is a CTU.
[0113] Clause 10. The method of any one of clauses 1 to 9, wherein a block in the plurality of blocks has a predetermined size.
[0114] Clause 11. The method of clause 10, wherein the predetermined size is 64x64.
[0115] Clause 12. A method according to any one of clauses 1 to 11, wherein determining the group of blocks comprises: determining, for each block in the plurality of blocks, a proportion value of a target unit encoded and decoded using a target mode in the corresponding block; and selecting the group of blocks from the plurality of blocks based on the proportion values for the plurality of blocks.
[0116] Clause 13. The method of clause 12, wherein the target unit comprises one of: a sample, a coding unit (CU), or a prediction unit (PU).
[0117] Clause 14. The method of any one of clauses 12 to 13, wherein the set of blocks comprises K blocks having the top K largest scale values, and K is an integer.
[0118] Clause 15. The method of any one of clauses 12 to 13, wherein the set of blocks comprises K blocks having the top K smallest scale values, and K is an integer.
[0119] Clause 16. A method according to any one of clauses 12 to 15, wherein the target mode comprises one of: merge mode, intra mode, or inter mode.
[0120] Clause 17. A method according to any one of clauses 1 to 11, wherein determining the group of blocks comprises: determining, for each block in the plurality of blocks, a value of a first parameter based on a minimum value of a QP of a CU in the corresponding block; and selecting the group of blocks from the plurality of blocks based on the value of the first parameter for the plurality of blocks.
[0121] Clause 18. The method of Clause 17, wherein the set of blocks includes K blocks having the top K largest values of the first parameter, and K is an integer.
[0122] Clause 19. The method of Clause 17, wherein the set of blocks includes K blocks having top K smallest values of the first parameter, and K is an integer.
[0123] Clause 20. A method according to any one of clauses 1 to 11, wherein determining the group of blocks comprises: determining, for each block in the plurality of blocks, a value of a second parameter based on a maximum value of a QP of a CU in the corresponding block; and selecting the group of blocks from the plurality of blocks based on the value of the second parameter for the plurality of blocks.
[0124] Clause 21. The method of clause 20, wherein the set of blocks includes K blocks having the top K largest values of the second parameter, and K is an integer.
[0125] Clause 22. The method of Clause 20, wherein the set of blocks includes K blocks having the top K smallest values of the second parameter, and K is an integer.
[0126] Clause 23. A method according to any one of clauses 1 to 11, wherein determining the group of blocks comprises: determining, for each block in the plurality of blocks, a value of a third parameter based on an average value of the QP of the CU in the corresponding block; and selecting the group of blocks from the plurality of blocks based on the value of the third parameter for the plurality of blocks.
[0127] Clause 24. The method of clause 23, wherein the set of blocks includes K blocks having the top K largest values of the third parameter, and K is an integer.
[0128] Clause 25. The method of clause 23, wherein the set of blocks includes K blocks having the top K smallest values of the third parameter, and K is an integer.
[0129] Clause 26. A method according to any one of clauses 1 to 25, wherein the size of the current block is N×M, the number of blocks in the group of blocks is K, the number of blocks in the multiple blocks is S, and at least one of M, N, K or S is an integer and depends on at least one of the following: the video content of the video, a message included in a dependency parameter set (DPS), a message included in a sequence parameter set (SPS), a message included in a video parameter set (VPS), a message included in a picture parameter set (PPS), a message included in an adaptation parameter set (APS), a message included in a picture header, a message included in a slice header, a message included in a tile group header, and a message included in a maximum codec unit. a message in a LCU (LCU), a message in a CU, a message in an LCU row, a message in an LCU group, a message in a transform unit (TU), a message in a PU, a size of the current block, a size of a neighboring block of the current block, a shape of the current block, a shape of a neighboring block of the current block, an indication of a color format of the video, a codec tree structure associated with the current block, a slice type associated with the current block, a tile group type associated with the current block, a picture type associated with the current block, a color component of the current block, a temporal layer identifier (ID) of the current block, a profile of the standard, a level of the standard, or a hierarchy of the standard.
[0130] Clause 27. A method for video processing, comprising: obtaining a merge list for a conversion between a current block of a video and a bitstream of the video; reordering the merge candidates in the merge list based on encoded and decoded information of the merge candidates; and performing the conversion based on the reordered merge candidates.
[0131] Clause 28. The method of clause 27, wherein the merge list is an intra block copy (IBC) merge list.
[0132] Clause 29. The method of clause 27, wherein the merge list is an inter-frame merge list.
[0133] Clause 30. A method according to any one of clauses 27 to 29, wherein the encoded information includes at least one of the following: a prediction mode, an intra-frame prediction mode, a most probable mode (MPM) flag, an MPM index, motion information, a merge mode flag, a merge mode index, or a quantization parameter (QP).
[0134] Clause 31. The method of clause 30, wherein the motion information comprises at least one of: a motion vector, or a reference index.
[0135] Clause 32. The method of any one of clauses 27 to 31, wherein the merge candidates are reordered based on a statistical process and the encoded information.
[0136] Clause 33. A method according to clause 32, wherein a counter for the statistical process is assigned to each of a plurality of units selected from the group consisting of: a strip of the video, a tile of the video, a frame of the video, or a picture of the video.
[0137] Clause 34. The method of clause 33, wherein each unit of the plurality of units comprises a block having a predetermined size.
[0138] Clause 35. The method of any one of clauses 33 to 34, wherein the plurality of cells are used to store motion information.
[0139] Clause 36. The method of any one of clauses 33 to 35, wherein the value of the counter is set to a first predetermined value for initialization.
[0140] Clause 37. A method according to any one of clauses 33 to 36, wherein if a first merge candidate is selected for a first unit among the multiple units, the value of the counter for the first unit is determined based on the sum of a second predetermined value and the value of the counter for the unit corresponding to the first merge candidate.
[0141] Clause 38. A method according to any one of clauses 33 to 36, wherein if a first merge candidate is selected for a first unit among the multiple units and the first unit is encoded and decoded using skip mode or merge mode, the value of the counter for the first unit is determined based on a second predetermined value and the sum of the value of the counter for the unit corresponding to the first merge candidate.
[0142] Clause 39. The method of any one of clauses 33 to 38, wherein the value of the counter is the same for all cells in a block of video.
[0143] Clause 40. The method according to any one of clauses 33 to 39, wherein if the block of the video is encoded without skip mode and merge mode, the values of the counters of all the units in the block are set to a third predetermined value.
[0144] Clause 41. A method according to any of clauses 33 to 40, wherein the position of a merge candidate in the merge list depends on the value of a counter of a cell corresponding to the merge candidate.
[0145] Clause 42. The method of clause 41, wherein the merge candidates in the merge list are reordered based on a value of a counter for a cell corresponding to the merge candidate.
[0146] Clause 43. A method according to any one of clauses 41 to 42, wherein the merge candidates in the merge list include a second merge candidate and a third merge candidate, and if the value of the counter for the unit corresponding to the second merge candidate is less than the third merge candidate, the second merge candidate is located before the third merge candidate in the merge list.
[0147] Clause 44. The method of clause 42, wherein based on the value of the counter, the merge candidates in the merge list are reordered in ascending order.
[0148] Clause 45. The method of clause 42, wherein based on the value of the counter, the merge candidates in the merge list are reordered in descending order.
[0149] Clause 46. A method according to any one of clauses 1 to 45, wherein the method is applied to inter-frame merging coding or reference picture management.
[0150] Clause 47. A method according to any one of clauses 1 to 46, wherein whether to apply the method and / or how to apply the method depends on at least one of the following: video content of the video, a message included in a DPS, a message included in an SPS, a message included in a VPS, a message included in a PPS, a message included in an APS, a message included in a picture header, a message included in a slice header, a message included in a tile group header, a message included in an LCU, a message included in a CU, a message included in an LCU row, a message included in an LCU group, a message included in a TU, a message included in a PU, the size of the current block, the size of the neighboring blocks of the current block, the shape of the current block, the shape of the neighboring blocks of the current block, an indication of the color format of the video, a codec tree structure associated with the current block, a slice type associated with the current block, a tile group type associated with the current block, a picture type associated with the current block, a color component of the current block, a temporal layer ID of the current block, a profile of the standard, a level of the standard, or a hierarchy of the standard.
[0151] Clause 48. A method according to any one of clauses 1 to 47, wherein the converting comprises encoding the current block into the bitstream.
[0152] Clause 49. A method according to any one of clauses 1 to 47, wherein the converting comprises decoding the current block from the bitstream.
[0153] Clause 50. An apparatus for video processing, comprising a processor and a non-transitory memory having instructions thereon, wherein the instructions, when executed by the processor, cause the processor to perform the method of any one of clauses 1 to 49.
[0154] Clause 51. A non-transitory computer-readable storage medium storing instructions that cause a processor to perform the method of any one of clauses 1 to 49.
[0155] Item 52. A non-transitory computer-readable recording medium storing a bitstream of a video generated by a method performed by a device for video processing, wherein the method comprises: determining that a first prediction mode is applied to a current block of the video, in which the prediction sample of the current block is derived based on a reference value determined by a block vector for the current block in a virtual buffer; wherein the reference value in the virtual buffer is derived from a block of sample values in the same video area of the current video block; generating the bitstream based on the prediction sample; determining a group of blocks from the multiple blocks based on encoded and decoded information of the multiple blocks in the same video area, the multiple blocks being encoded and decoded before the current block; and updating the virtual buffer based on the group of blocks.
[0156] Item 53. A method for storing a bitstream of a video, comprising: determining that a first prediction mode is applied to a current block of the video, in which the first prediction mode, based on a reference value determined by a block vector for the current block in a virtual buffer, deriving a prediction sample of the current block; wherein the reference value in the virtual buffer is derived from a block of sample values in the same video area of the current video block; generating the bitstream based on the prediction sample; based on encoded and decoded information of multiple blocks of the same video area, determining a group of blocks from the multiple blocks, the multiple blocks being encoded and decoded before the current block; updating the virtual buffer based on the group of blocks; and storing the bitstream in a non-transitory computer-readable recording medium.
[0157] Item 54. A non-transitory computer-readable recording medium storing a bitstream of a video generated by a method performed by a device for video processing, wherein the method comprises: obtaining a merge list for a current block of the video; reordering the merge candidates in the merge list based on encoded and decoded information of the merge candidates; and generating the bitstream based on the reordered merge candidates.
[0158] Clause 55. A method for storing a bitstream of a video, comprising: obtaining a merge list for a current block of the video; reordering the merge candidates based on encoded and decoded information of the merge candidates in the merge list; generating the bitstream based on the reordered merge candidates; and storing the bitstream in a non-transitory computer-readable recording medium. Example Device
[0159] Fig.10 1 is a block diagram of a computing device 1000 in which various embodiments of the present disclosure may be implemented. The computing device 1000 may be implemented as a source device 110 (or a video encoder 114 or 200) or a destination device 120 (or a video decoder 124 or 300), or may be included in a source device 110 (or a video encoder 114 or 200) or a destination device 120 (or a video decoder 124 or 300).
[0160] It should be understood that Fig.10 The computing device 1000 shown in FIG. 1 is for illustrative purposes only and is not intended to in any way imply any limitation on the functionality and scope of the embodiments of the present disclosure.
[0161] like Fig.10As shown, computing device 1000 includes a general computing device 1000. Computing device 1000 may include at least one or more processors or processing units 1010, memory 1020, storage unit 1030, one or more communication units 1040, one or more input devices 1050, and one or more output devices 1060.
[0162] In some embodiments, the computing device 1000 can be implemented as any user terminal or server terminal with computing capabilities. The server terminal can be a server provided by a service provider, a large computing device, etc. The user terminal can be, for example, any type of mobile terminal, fixed terminal or portable terminal, including a mobile phone, a station, a unit, a device, a multimedia computer, a multimedia tablet computer, an Internet node, a communicator, a desktop computer, a laptop computer, a notebook computer, a netbook computer, a personal communication system (PCS) device, a personal navigation device, a personal digital assistant (PDA), an audio / video player, a digital camera / camcorder, a positioning device, a television receiver, a radio broadcast receiver, an e-book device, a gaming device, or any combination thereof, and includes accessories and peripherals of these devices, or any combination thereof. It is conceivable that the computing device 1000 can support any type of interface to the user (such as a "wearable" circuit device, etc.).
[0163] The processing unit 1010 may be a physical processor or a virtual processor and may implement various processes based on a program stored in the memory 1020. In a multi-processor system, a plurality of processing units execute computer executable instructions in parallel to improve the parallel processing capability of the computing device 1000. The processing unit 1010 may also be referred to as a central processing unit (CPU), a microprocessor, a controller, or a microcontroller.
[0164] The computing device 1000 typically includes various computer storage media. Such media can be any media accessible by the computing device 1000, including but not limited to volatile media and non-volatile media, or removable media and non-removable media. The memory 1020 can be a volatile memory (e.g., a register, a cache, a random access memory (RAM)), a non-volatile memory (such as a read-only memory (ROM), an electrically erasable programmable read-only memory (EEPROM) or flash memory) or any combination thereof. The storage unit 1030 can be any removable or non-removable medium, and can include machine-readable media, such as a memory, a flash drive, a disk, or other media that can be used to store information and / or data and can be accessed in the computing device 1000.
[0165] The computing device 1000 may also include additional removable / non-removable storage media, volatile / non-volatile storage media. Fig.10 Although not shown in the figure, a magnetic disk drive for reading from and / or writing to a removable nonvolatile magnetic disk and an optical disk drive for reading from and / or writing to a removable nonvolatile optical disk may be provided. In this case, each drive may be connected to the bus (not shown) via one or more data medium interfaces.
[0166] The communication unit 1040 communicates with another computing device via a communication medium. In addition, the functionality of the components in the computing device 1000 can be implemented by a single computing cluster or multiple computing machines that can communicate via a communication connection. Therefore, the computing device 1000 can operate in a networked environment using logical connections to one or more other servers, networked personal computers (PCs), or other general network nodes.
[0167] The input device 1050 may be one or more of various input devices, such as a mouse, keyboard, trackball, voice input device, etc. The output device 1060 may be one or more of various output devices, such as a display, a speaker, a printer, etc. With the help of the communication unit 1040, the computing device 1000 may also communicate with one or more external devices (not shown), such as storage devices and display devices, and the computing device 1000 may also communicate with one or more devices that enable a user to interact with the computing device 1000, or any device that enables the computing device 1000 to communicate with one or more other computing devices (e.g., a network card, a modem, etc.), if necessary. Such communication may be performed via an input / output (I / O) interface (not shown).
[0168] In some embodiments, some or all components of the computing device 1000 may also be arranged in a cloud computing architecture rather than being integrated in a single device. In a cloud computing architecture, components may be provided remotely and work together to implement the functions described in the present disclosure. In some embodiments, cloud computing provides computing, software, data access and storage services, which will not require the end user to know the physical location or configuration of the system or hardware that provides these services. In various embodiments, cloud computing provides services via a wide area network (e.g., the Internet) using a suitable protocol. For example, a cloud computing provider provides applications via a wide area network, which can be accessed through a web browser or any other computing component. The software or components of the cloud computing architecture and the corresponding data may be stored on a remote server. The computing resources in a cloud computing environment may be merged or distributed at the location of a remote data center. Cloud computing infrastructures may provide services through a shared data center, although they appear as a single access point for users. Therefore, cloud computing architectures may be used to provide components and functions described herein from a service provider at a remote location. Alternatively, they may be provided by a conventional server, or installed directly or otherwise on a client device.
[0169] In an embodiment of the present disclosure, the computing device 1000 may be used to implement video encoding / decoding. The memory 1020 may include one or more video encoding / decoding modules 1025 having one or more program instructions. These modules can be accessed and executed by the processing unit 1010 to perform the functions of the various embodiments described herein.
[0170] In an example embodiment of performing video encoding, the input device 1050 may receive video data as input 1070 to be encoded. The video data may be processed by, for example, the video codec module 1025 to generate an encoded bitstream. The encoded bitstream may be provided as output 1080 via the output device 1060.
[0171] In an example embodiment of performing video decoding, the input device 1050 may receive an encoded bitstream as input 1070. The encoded bitstream may be processed by, for example, the video codec module 1025 to generate decoded video data. The decoded video data may be provided as output 1080 via the output device 1060.
[0172] Although the present disclosure has been specifically shown and described with reference to the preferred embodiments of the present disclosure, it will be understood by those skilled in the art that various changes can be made in form and detail without departing from the spirit and scope of the present application as defined by the appended claims. These changes are intended to be encompassed by the scope of the present application. Therefore, the foregoing description of the embodiments of the present application is not intended to be limiting.
Claims
1. A method for video processing, comprising: For conversion between a current block of a video and a bitstream of the video, determining that a first prediction mode is applied to the current block, In the first prediction mode, deriving a prediction sample of the current block based on a reference value determined by a block vector for the current block in a virtual buffer; wherein the reference values in the virtual buffer are derived from a block of sample values in the same video region of the current video block; performing the conversion based on the prediction samples; Determine a group of blocks from a plurality of blocks based on coded information of the plurality of blocks of the same video region, the plurality of blocks being coded and decoded before the current block; as well as The virtual buffer is updated based on the set of blocks.
2. The method according to claim 1, wherein the encoded information comprises at least one of the following: Prediction model, Intra prediction mode, Most Probable Mode (MPM) flag, MPM index, Sports information, Merge mode flag, merge mode indexes, or Quantization parameter (QP).
3. The method according to claim 2, wherein the motion information comprises at least one of the following: motion vector, or Reference index. 4 . The method according to claim 1 , wherein the current block is a codec tree unit (CTU). 5 . The method according to claim 1 , wherein the size of the current block is N×M, and N and M are both integers. The method of claim 5 , wherein N is 64 and M is 64.
7. The method of any one of claims 1 to 6, wherein a first block of the plurality of blocks is in a different CTU row than a second block of the plurality of blocks.
8. The method of any one of claims 1 to 7, wherein a third block in the group of blocks is in a different CTU row than a fourth block in the group of blocks.
9. The method according to any one of claims 1 to 8, wherein a block in the plurality of blocks is a CTU.
10. The method according to any one of claims 1 to 9, wherein a block of the plurality of blocks has a predetermined size. The method according to claim 10 , wherein the predetermined size is 64×64.
12. The method according to any one of claims 1 to 11, wherein determining the set of blocks comprises: For each block of the plurality of blocks, determining a value of a proportion of target units that are encoded and decoded using a target mode in the corresponding block; as well as The group of blocks is selected from the plurality of blocks based on the ratio values for the plurality of blocks.
13. The method according to claim 12, wherein the target unit comprises one of the following: sample, Codec Unit (CU), or Prediction Unit (PU).
14. The method according to any one of claims 12 to 13, wherein the set of blocks comprises K blocks having the top K largest scale values, and K is an integer.
15. The method according to any one of claims 12 to 13, wherein the group of blocks includes K blocks having the top K smallest scale values, and K is an integer.
16. The method according to any one of claims 12 to 15, wherein the target mode comprises one of the following: Merge mode, Intra mode, or Interframe mode.
17. The method of any one of claims 1 to 11, wherein determining the set of blocks comprises: For each block of the plurality of blocks, determine a value of a first parameter based on a minimum value of a QP of a CU in the corresponding block; as well as The group of blocks is selected from the plurality of blocks based on the values of the first parameter for the plurality of blocks.
18. The method of claim 17, wherein the set of blocks includes K blocks having the top K largest values of the first parameter, and K is an integer.
19. The method of claim 17, wherein the set of blocks includes K blocks having top K smallest values of the first parameter, and K is an integer.
20. The method of any one of claims 1 to 11, wherein determining the set of blocks comprises: For each block of the plurality of blocks, determine a value of a second parameter based on a maximum value of a QP of a CU in the corresponding block; as well as The group of blocks is selected from the plurality of blocks based on the value of the second parameter for the plurality of blocks.
21. The method of claim 20, wherein the set of blocks includes K blocks having the top K largest values of the second parameter, and K is an integer.
22. The method of claim 20, wherein the set of blocks includes K blocks having the top K smallest values of the second parameter, and K is an integer.
23. The method of any one of claims 1 to 11, wherein determining the set of blocks comprises: For each block of the plurality of blocks, determine a value of a third parameter based on an average value of QPs of CUs in the corresponding block; as well as The group of blocks is selected from the plurality of blocks based on values of the third parameter for the plurality of blocks.
24. The method of claim 23, wherein the set of blocks includes K blocks having the top K largest values of the third parameter, and K is an integer.
25. The method of claim 23, wherein the set of blocks includes K blocks having top K smallest values of the third parameter, and K is an integer.
26. The method according to any one of claims 1 to 25, wherein the size of the current block is N×M, the number of blocks in the group of blocks is K, the number of blocks in the plurality of blocks is S, and at least one of M, N, K or S is an integer and depends on at least one of the following: the video content of the video, Messages included in a Dependent Parameter Set (DPS), The messages included in the Sequence Parameter Set (SPS) The message included in the Video Parameter Set (VPS) is The message included in the Picture Parameter Set (PPS) is Messages included in the Adaptation Parameter Set (APS), Include the message in the picture header, The message included in the stripe header, The message included in the tile group header, The message included in the largest codec unit (LCU), Included in the CU message, Included in the message in the LCU line, Included in the LCU group messages, The message included in the Transformation Unit (TU), The message included in the PU, The size of the current block, The size of the neighboring blocks of the current block, The shape of the current block, The shapes of the neighboring blocks of the current block, an indication of the color format of the video, a codec tree structure associated with the current block, the stripe type associated with the current block, the tile group type associated with the current tile, the picture type associated with the current block, the color components of the current block, the temporal layer identifier (ID) of the current block, Standard grade, the level of the standard, or The level of the standard.
27. A method for video processing, comprising: For conversion between a current block of a video and a bitstream of the video, obtaining a merge list for the current block; reordering the merge candidates in the merge list based on the coded and decoded information of the merge candidates; as well as The transforming is performed based on the reordered merge candidates.
28. The method of claim 27, wherein the merge list is an intra block copy (IBC) merge list.
29. The method of claim 27, wherein the merge list is an inter-frame merge list.
30. The method according to any one of claims 27 to 29, wherein the encoded information comprises at least one of the following: Prediction model, Intra prediction mode, Most Probable Mode (MPM) flag, MPM index, Sports information, Merge mode flag, merge mode indexes, or Quantization parameter (QP).
31. The method according to claim 30, wherein the motion information comprises at least one of the following: motion vector, or Reference index.
32. The method according to any one of claims 27 to 31, wherein the merge candidates are reordered based on a statistical process and the encoded and decoded information.
33. The method of claim 32, wherein a counter for the statistical process is assigned to each unit of a plurality of units selected from the group consisting of: a strip of said video, a tile of said video, frames of the video, or An image of said video.
34. The method of claim 33, wherein each of the plurality of cells comprises a block having a predetermined size.
35. A method according to any one of claims 33 to 34, wherein the plurality of cells are used to store motion information.
36. The method according to any one of claims 33 to 35, wherein the value of the counter is set to a first predetermined value for initialization.
37. A method according to any one of claims 33 to 36, wherein if a first merge candidate is selected for a first unit among the multiple units, the value of the counter for the first unit is determined based on the sum of a second predetermined value and the value of the counter for the unit corresponding to the first merge candidate.
38. A method according to any one of claims 33 to 36, wherein if a first merge candidate is selected for a first unit among the multiple units and the first unit is encoded and decoded using skip mode or merge mode, the value of the counter for the first unit is determined based on a second predetermined value and the sum of the value of the counter for the unit corresponding to the first merge candidate.
39. The method of any one of claims 33 to 38, wherein the value of the counter of all cells in a block of video is the same.
40. The method according to any one of claims 33 to 39, wherein if the block of the video is encoded and decoded without using skip mode and merge mode, the values of the counters of all the units in the block are set to a third predetermined value.
41. The method according to any one of claims 33 to 40, wherein the position of the merge candidate in the merge list depends on the value of the counter of the unit corresponding to the merge candidate.
42. The method of claim 41, wherein the merge candidates in the merge list are reordered based on a value of a counter for a unit corresponding to the merge candidate.
43. A method according to any one of claims 41 to 42, wherein the merge candidates in the merge list include a second merge candidate and a third merge candidate, and if the value of the counter for the unit corresponding to the second merge candidate is less than the third merge candidate, the second merge candidate is located before the third merge candidate in the merge list.
44. The method of claim 42, wherein based on the value of the counter, the merge candidates in the merge list are reordered in ascending order.
45. The method of claim 42, wherein based on the value of the counter, the merge candidates in the merge list are reordered in descending order.
46. The method according to any one of claims 1 to 45, wherein the method is applied to inter-frame merging coding or reference picture management.
47. The method according to any one of claims 1 to 46, wherein whether to apply the method and / or how to apply the method depends on at least one of the following: the video content of the video, Included in the DPS message, The messages included in the SPS, Included in the VPS message, The messages included in the PPS, Messages included in APS, Include the message in the picture header, The message included in the stripe header, The message included in the tile group header, The message included in the LCU, Included in the CU message, Included in the message in the LCU line, Included in the LCU group messages, Included in the message of TU, The message included in the PU, The size of the current block, The size of the neighboring blocks of the current block, The shape of the current block, The shapes of the neighboring blocks of the current block, an indication of the color format of the video, a codec tree structure associated with the current block, the stripe type associated with the current block, the tile group type associated with the current tile, the picture type associated with the current block, the color components of the current block, The time layer ID of the current block, Standard grade, the level of the standard, or The level of the standard.
48. The method of any one of claims 1 to 47, wherein the converting comprises encoding the current block into the bitstream.
49. The method of any one of claims 1 to 47, wherein the converting comprises decoding the current block from the bitstream.
50. An apparatus for video processing, comprising a processor and a non-transitory memory having instructions thereon, wherein the instructions, when executed by the processor, cause the processor to perform the method of any one of claims 1 to 49.
51. A non-transitory computer-readable storage medium storing instructions, the instructions causing a processor to execute the method according to any one of claims 1 to 49.
52. A non-transitory computer-readable recording medium storing a bitstream of a video generated by a method performed by an apparatus for video processing, wherein the method comprises: determining that a first prediction mode is applied to a current block of the video, In the first prediction mode, deriving a prediction sample of the current block based on a reference value determined by a block vector for the current block in a virtual buffer; wherein the reference values in the virtual buffer are derived from a block of sample values in the same video region of the current video block; generating the bitstream based on the prediction samples; Determine a group of blocks from a plurality of blocks based on coded information of the plurality of blocks of the same video region, the plurality of blocks being coded and decoded before the current block; as well as The virtual buffer is updated based on the set of blocks.
53. A method for storing a bitstream of a video, comprising: determining that a first prediction mode is applied to a current block of the video, In the first prediction mode, deriving a prediction sample of the current block based on a reference value determined by a block vector for the current block in a virtual buffer; wherein the reference values in the virtual buffer are derived from a block of sample values in the same video region of the current video block; generating the bitstream based on the prediction samples; Determine a group of blocks from a plurality of blocks based on coded information of the plurality of blocks of the same video region, the plurality of blocks being coded and decoded before the current block; updating the virtual buffer based on the set of blocks; as well as The bit stream is stored in a non-transitory computer-readable recording medium.
54. A non-transitory computer-readable recording medium storing a bitstream of a video generated by a method performed by an apparatus for video processing, wherein the method comprises: Obtaining a merge list for a current block of the video; reordering the merge candidates in the merge list based on the coded and decoded information of the merge candidates; as well as The bitstream is generated based on the reordered merge candidates.
55. A method for storing a bitstream of a video, comprising: Obtaining a merge list for a current block of the video; reordering the merge candidates in the merge list based on the coded and decoded information of the merge candidates; generating the bitstream based on the reordered merge candidates; as well as The bit stream is stored in a non-transitory computer-readable recording medium.
