Method and device for video processing and medium
By adjusting motion vectors through a sample adjustment process, the method enhances video encoding and decoding efficiency in existing technologies.
Patent Information
- Application Number
- CN202380032943.X
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2022-04-08
- Filing Date
- 2023-04-07
- Publication Date
- 2024-12-17
AI Technical Summary
Existing video encoding and decoding technologies, such as MPEG-2, MPEG-4, ITU-T H.263, ITU-TH.264/MPEG-4 Part 10 AVC, and ITU-T H.265 HEVC, require improvements in encoding and decoding efficiency.
A method for video processing that involves obtaining a first motion vector (MV) for a target video block by applying a sample adjustment process, adjusting the MV based on a second MV, and performing conversion based on the adjusted MV, along with a device and medium for executing this method to enhance codec efficiency.
The proposed method improves codec efficiency by better supporting sample adjustment, resulting in higher codec gain.
Smart Images

Figure CN119156823A_ABST
Abstract
Description
Technical Field
[0001] Embodiments of the present disclosure relate generally to video processing techniques, and more particularly to sample adjustment. Background Art
[0002] Nowadays, digital video capabilities 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-T H.263, ITU-TH.264 / MPEG-4 Part 10 Advanced Video Codec (AVC), ITU-T H.265 High Efficiency Video Codec (HEVC) standard, and Versatile Video Codec (VVC) standard. However, it is generally expected that the encoding and decoding efficiency of video encoding and decoding technologies can be further improved. Summary of the invention
[0003] Embodiments of the present disclosure provide a solution for video processing.
[0004] In a first aspect, a method for video processing is provided. The method includes: for conversion between a current video block of a video and a bitstream of the video, obtaining a first motion vector (MV) for a target video block, the target video block being determined by applying a sample adjustment process to a plurality of samples of the current video block; adjusting a first MV based on a second MV generated for the target video block; and performing conversion based on the adjusted first MV.
[0005] According to the method of the first aspect of the present disclosure, the MV for the video block is adjusted using another MV, and its samples are adjusted based on the adjustment process. Compared with the traditional scheme, the proposed method can advantageously better support sample adjustment, thereby achieving higher codec gain and improving codec efficiency.
[0006] In a second 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.
[0007] In a third aspect, a non-transitory computer-readable storage medium is provided, wherein the non-transitory computer-readable storage medium stores instructions, which enable a processor to execute the method according to the first aspect of the present disclosure.
[0008] In a fourth aspect, another non-transitory computer-readable recording medium is provided. The non-transitory computer-readable recording medium stores a bitstream of a video, the bitstream being generated by a method performed by a video processing device. The method comprises: obtaining a first MV for a target video block, the target video block being determined by applying a sample adjustment process to a plurality of samples of a current video block of the video; adjusting the first MV based on a second MV generated for the target video block; and generating a bitstream based on the adjusted first MV.
[0009] In a fifth aspect, a method for storing a bitstream of a video is provided. The method includes: obtaining a first MV for a target video block, the target video block being determined by applying a sample adjustment process to a plurality of samples of a current video block of the video; adjusting the first MV based on a second MV generated for the target video block; generating a bitstream based on the adjusted first MV; and storing the bitstream in a non-transitory computer-readable recording medium.
[0010] 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 disclosure, nor is it intended to limit the scope of the claimed subject matter. BRIEF DESCRIPTION OF THE DRAWINGS
[0011] 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.
[0012] Figure 1 A block diagram showing an example video encoding and decoding system according to some embodiments of the present disclosure is shown;
[0013] Figure 2 A block diagram of a first example video encoder according to some embodiments of the present disclosure is shown;
[0014] Figure 3 A block diagram of an example video decoder according to some embodiments of the present disclosure is shown;
[0015] Figure 4 The current coding tree unit (CTU) processing order and its available reference samples in the current and left CTUs are shown;
[0016] Figure 5 The residual encoding and decoding pass for transforming a skipped block is shown;
[0017] Figure 6 An example of a block encoded and decoded in palette mode is shown;
[0018] Figure 7A sub-block based index map scan for a palette is shown;
[0019] Figure 8 A decoding flow chart with adaptive color transform (ACT) is shown;
[0020] Fig. 9 The intra-frame template matching search area used is shown;
[0021] Fig.10 A first example of motion vector adjustment according to the motion vector of a neighboring block using horizontal flip coding is shown;
[0022] Fig.11 A second example of motion vector adjustment according to the motion vector of a neighboring block using vertical flip coding is shown;
[0023] Fig.12 A third example of motion vector adjustment according to the motion vector of a neighboring block using horizontal flip coding is shown;
[0024] Fig.13 A fourth example of motion vector adjustment according to the motion vector of a neighboring block using vertical flip coding is shown;
[0025] Fig.14 A flowchart showing a method for video processing according to an embodiment of the present disclosure; and
[0026] Fig.15 A 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 will now be described with reference to some embodiments. It should be understood that these embodiments are described only for the purpose of illustrating and helping those skilled in the art to understand and implement the present disclosure, without implying any limitation on the scope of the present disclosure. In addition to the methods described below, the disclosure described herein can also be implemented in various ways.
[0029] In the following description and claims, unless defined otherwise, all scientific and technical terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which the present 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 must include 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, whether or not explicitly described, it is considered to be within the knowledge of those skilled in the art to affect such feature, structure, or characteristic in relation to other embodiments.
[0031] It should be understood that although the terms "first" and "second" etc. can be used to describe various elements, these elements should not be limited to these terms. These terms are only used to distinguish one element from another element. For example, a first element can be referred to as a second element, and similarly, a second element can be referred to as a first element without departing from the scope of the exemplary embodiments. 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, the singular forms "a", "an", and "the" are also intended to include the plural forms unless the context clearly indicates otherwise. It should also be understood that the terms "comprises", "includes", and / or "having" when used herein indicate the presence of the 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 can 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] 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 that receives video data from a video content provider, a computer graphics system for generating video data, and / or combinations 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 bitstream. The bitstream may include a bit sequence that forms a codec representation of the video data. The bitstream may include a codec picture and associated data. The codec picture is a codec representation of the picture. The associated data may include a sequence parameter set, a picture parameter set, and other grammatical structures. The I / O interface 116 may include a modulator / demodulator and / or a transmitter. The encoded video data may be directly transmitted to the destination device 120 via the network 130A via the I / O interface 116. The encoded 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 further 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 and decoding 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 codec modes (intra-frame coding or inter-frame coding), for example, based on the error result, and provide the generated intra-frame codec block or inter-frame codec block to the residual generation unit 207 to generate residual block data, and to the reconstruction unit 212 to reconstruct the codec block for use as a reference picture. In some examples, the mode selection unit 203 may select a combination of intra-frame and inter-frame prediction (CIIP) modes, where the prediction is based on an inter-frame prediction signal and an intra-frame prediction signal. In the case of inter-frame 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 a neighboring 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 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 of 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 spatially or temporally adjacent.
[0065] The motion compensation unit 302 may generate motion compensated blocks, possibly performing interpolation based on interpolation filters.Identifiers for the interpolation filters used with sub-pixel precision may be included in the syntax elements.
[0066] The motion compensation unit 302 may calculate interpolated values for sub-integer pixels of a reference block using interpolation filters used by the video encoder 200 during encoding of the video block. The motion compensation unit 302 may determine the interpolation filters used by the video encoder 200 based on received syntax information, and the motion compensation unit 302 may use the interpolation filters 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-frame coding 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, 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 304 inverse 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 305 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 302 or the intra prediction unit 303. If necessary, a deblocking filter may also be applied to filter the decoded block 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 example 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, and the embodiments disclosed in the section are not limited 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 coding and decoding technologies. In addition, although some embodiments describe the video encoding steps in detail, it should be understood that the corresponding decoding steps of canceling the encoding 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 the reordering of samples in image / video coding. It can be applied to existing video coding standards such as HEVC, VVC, etc. 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 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, in which temporal prediction plus transform codec is used. In order to explore future video codec technologies beyond HEVC, VCEG and MPEG jointly founded the Joint Video Exploration Team (JVET) in 2015. JVET meetings are held simultaneously every quarter, and the new video codec standard was officially named Versatile Video Codec (VVC) at the JVET meeting in April 2018, when the first version of the VVC Test Model (VTM) was released. The VVC working draft and the test model VTM are updated after each meeting. The VVC project achieved technical completion (FDIS) at the July 2020 meeting. 2.1 Existing Screen Content Encoding Tools 2.1.1 Intra-block copy (IBC) Intra-block copying (IBC) is a tool adopted in the HEVC extension on SCC. It is well known that it significantly improves the encoding and decoding efficiency of screen content materials. Since the IBC mode is implemented as a block-level coding 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 indicate the displacement from the current block to the reference block, which has been reconstructed within the current picture. The luminance block vector of the CU encoded and decoded by IBC has integer precision. The chrominance block vector is also rounded to integer precision. When combined with AMVR, the IBC mode can switch between 1-pixel and 4-pixel motion vector precision. The CU encoded and decoded by IBC is regarded as a third prediction mode in addition to the intra or 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 4×4 sub-blocks. For current blocks of larger size, the hash key is determined to match the hash key of the reference block when all hash keys in all 4×4 sub-blocks match the hash keys in the corresponding reference positions. If multiple reference blocks are found whose hash keys match the hash key of the current block, the block vector cost of each matching reference is calculated and the one with the smallest cost is selected. In the block matching search, the search range is set to cover the previous CTU and the current CTU. At CU level, the IBC mode is signaled through a flag, which can be signaled as IBC AMVP mode or IBC Skip / Merge mode as shown below: – IBC skip / merge mode: The merge candidate index is used to indicate which block vector from the list of neighboring candidate IBC codec blocks 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 and decoded 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 top neighbor (if IBC coded). When either neighbor is not available, the default block vector is used as predictor. A flag is signaled to indicate the block vector predictor index. 2.1.1.1 IBC Reference Area In order to reduce memory consumption and decoder complexity, IBC in VVC only allows the reconstruction of predefined areas, which include the area of the current CTU and a certain area of the left CTU. Figure 4 The reference area of the IBC mode is shown, where each block represents a 64×64 luma sample unit. Depending on the location of the current codec CU location within the current CTU, the following applies: – If the current block falls into the 64×64 block to the upper left of the current CTU, in addition to the samples already reconstructed in the current CTU, the CPR mode can also be used to refer to the reference samples in the lower right 64x64 block of the left CTU. The current block can also use the CPR mode to refer to the reference samples in the lower left 64×64 block of the left CTU and the left Reference samples in the top right 64×64 block of the CTU. – If the current block falls into the 64×64 block to the upper right of the current CTU, in addition to the samples that have been reconstructed in the current CTU, if the luma position (0, 64) has not been reconstructed relative to the current CTU, the current block can also use the CPR mode to refer to the reference samples in the lower left 64×64 block and the lower right 64×64 block of the left CTU; Otherwise, the current block may also refer to reference samples in the lower right 64×64 block of the left CTU. – If the current block falls into the 64×64 block to the lower left of the current CTU, in addition to the samples that have been reconstructed in the current CTU, if the luma position (64, 0) has not been reconstructed relative to the current CTU, the current block can also use the CPR mode to refer to the reference samples in the upper right 64×64 block and the lower right 64×64 block of the left CTU. Otherwise, the current block may also use the CPR mode to refer to the reference samples in the 64×64 block in the lower right corner of the left CTU. – If the current block falls into the 64×64 block to the lower right of the current CTU, only the CPR mode can be used to refer to the samples that have been reconstructed in the current CTU. This restriction allows the IBC mode to be implemented using local on-chip memory for hardware implementation. 2.1.1.2 Interaction between IBC and other codecs The interaction between IBC mode and other inter-frame codec tools in VVC, such as pairwise merge candidates, history-based motion vector predictor (HMVP), combined intra / frame prediction modes (CIIP), merge mode with motion vector difference (MMVD), and geometric partition model (GPM), is as follows: – IBC can be used with pairwise merge candidates and HMVP. A new pairwise IBC merge candidate can be generated by averaging two IBC merge candidates. For HMVP, IBC motions are inserted into the history buffer for future reference. – IBC cannot be used in conjunction with the following interframe tools: Affine Motion, CIIP, MMVD, and GPM. – When DUAL_TREE partitioning is used, IBC is not allowed for chroma codec blocks. Unlike in the HEVC Screen Content Codec Extension, the current picture is no longer included as one of the reference pictures in reference picture list 0 for IBC prediction. The motion vector derivation process for IBC mode excludes all neighboring blocks in inter mode and vice versa. The following IBC design aspects are applied: – IBC shares the same process as regular MV merging, including pairwise merging candidates and history-based motion predictors, but TMVP and zero vectors are not allowed since they are invalid for IBC mode. – Separate HMVP buffers (5 candidates each) for legacy MV and IBC. – Block vector constraints are implemented as bitstream consistency constraints, where the encoder needs to ensure that there are no invalid vectors in the bitstream and that merges should not be used if the merge candidate is invalid (out of range or 0). This bitstream consistency constraint is represented by a virtual buffer as described below. – For deblocking, IBC is handled as an inter mode. – If the current block is coded using IBC prediction mode, AMVR does not use quarter pixels; instead, AMVR is signaled to only indicate whether the MV is inter-pixel or 4-integer pixels. - The number of IBC merge candidates may be signaled in the slice header separately from the number of normal, sub-block and geometric merge candidates. The concept of virtual buffer is used to describe the allowable reference area for IBC prediction mode and valid block vector. Denoting the CTU size as ctbSize, the width of the virtual buffer ibcBuf is wIbcBuf=128×128 / ctbSize, and the height hIbcBuf=ctbSize. For example, for a CTU of size 128×128, the size of ibcBuf is also 128×128; and for a CTU of size 64×64, the size of ibcBuf is 256×64; for a CTU of size 32×32, the size of ibcBuf is 512×32. The size of VPDU in each dimension is min(ctbSize, 64), Wv = min(ctbSize, 64). The virtual IBC buffer ibcBuf is maintained as follows. – At the start of decoding each CTU line, flush the entire ibcBuf with invalid value -1. -When starting to decode the VPDU (xVPDU, yVPDU) relative to the upper left corner of the picture, set ibcBuf[x][y] = -1, where x = xVPDU% wIbcBuf, ..., xVPDU% wIbcBuf + Wv-1; y = yVPDU% ctbSize, ..., yVPDU% ctbSize + Wv-1. -After decoding, the CU contains the (x,y) relative to the upper left corner of the picture, set ibcBuf[x%wIbcBuf][y%ctbSize]=recSample[x][y] For a block covering coordinates (x, y), it is valid if the following holds for the block vector bv = (bv[0], bv[1]); otherwise, it is invalid: ibcBuf[(x+bv[0])%wIbcBuf][(y+bv[1])%ctbSize] should not be equal to -1. 2.1.2 Block Differential Pulse Coded Modulation (BDPCM) VVC supports Block Differential Pulse Coded Modulation (BDPCM) for screen content coding. At the sequence level, the BDPCM enable flag is signaled in the SPS; this flag is signaled only when transform skip mode (described in the next section) is enabled in the SPS. When BDPCM is enabled, if the CU size is less than or equal to MaxTsSize×MaxTsSize in terms of luma samples and if the CU is intra-coded, a flag is sent at the CU level, where MaxTsSize is the maximum block size allowed for transform skip mode. The flag indicates whether conventional intra-coding or BDPCM is used. If BDPCM is used, the BDPCM prediction direction flag is transmitted to indicate whether the prediction is horizontal or vertical. The block is then predicted using a conventional horizontal or vertical intra prediction process with unfiltered reference samples. The residuals are quantized, and the difference between each quantized residual and its predictor, i.e., the previously coded residual of a horizontal or vertical (depending on the BDPCM prediction direction) neighboring position, is coded. For a block of size M (height) × N (width), let r i,j , 0≤i≤M-1, 0≤j≤N-1 is the prediction residual. Let Q(r i,j ), 0≤i≤M-1, 0≤j≤N-1 represents the residual r i,j BDPCM is applied to the quantized residual values, resulting in a quantized version of The modified M×N array in is predicted from the quantized residual values of its neighbors. For vertical BDPCM prediction mode, for 0≤j≤(N-1), the following is used to derive For the horizontal BDPCM prediction mode, for 0≤j≤(N-1), the following is used to derive On the decoder side, the above process is reversed to calculate Q(r i,j ), 0≤i≤M-1, 0≤j≤N-1, as follows: If using vertical BDPCM (2-3) If using horizontal BDPCM (2-4) The inverse quantized residual Q -1 (Q(r i,j )) is added to the intra block prediction value to produce the reconstructed sample value. The predicted quantized residual value is converted to Sent to the decoder. For lossless codec, if slice_ts_residual_coding_disabled_flag is set to 1, the quantized residual values are sent to the decoder using conventional transform residual codec as described in 2.2.2. For MPM modes for future intra-mode codecs, if the BDPCM prediction direction is horizontal or vertical, respectively, the horizontal or vertical prediction mode is stored for the BDPCM-encoded CU, respectively. For deblocking, if the two blocks on both sides of the block boundary are encoded and decoded using BDPCM, then the specific block boundary is not deblocked. 2.1.3 Residual Codec for Transform Skip Mode VVC allows transform skip mode for luma blocks of size up to MaxTsSize×MaxTsSize, where the value of MaxTsSize is signaled in the PPS and can be at most 32. When a CU is encoded and decoded in transform skip mode, its prediction residual is quantized and encoded using the transform skip residual encoding and decoding process. This process is modified from the transform coefficient encoding and decoding process described in 2.2.2. In transform skip mode, the residual of the TU is also encoded and decoded in units of non-overlapping sub-blocks of size 4×4. For better coding efficiency, some modifications are made to customize the residual coding and decoding process to the residual signal characteristics. The following summarizes the differences between transform skip residual coding and conventional transform residual coding: - A forward scan order is applied to scan sub-blocks within a transformed block and also scan positions within the sub-blocks; – no signaling of the final (x, y) position; – When all previous flags are equal to 0, coded_sub_block_flag is coded and decoded for each sub-block except the last sub-block; –sig_coeff_flag context modeling uses a simplified template, and the context model of sig_coeff_flag depends on the top and left neighbor values; – The context model of the abs_level_gt1 flag also depends on the left sig_coeff_flag value and the upper sig_co-eff_flag value; – par_level_flag to use only one context model; – signaling additional greater than 3, 5, 7, 9 flags to indicate coefficient levels, with one context for each flag; – Binarization for the remainder values derived using Rice parameters with fixed order = 1; – The context model for the sign flag is determined based on the left and above neighbor values, and the sign flag is parsed after sig_coeff_flag to keep all context coded bins together. For each subblock, if coded_subblock_flag is equal to 1 (i.e., there is at least one non-zero quantized residual in the subblock), the coding and decoding of the quantized residual level is performed in three scanning passes (see Figure 5 ): - First scan pass: Encode and decode the validity flag (sig_coeff_flag), the sign flag (coeff_sign_flag), the flag that the absolute level is greater than 1 (abs_level_gtx_flag[0]), and the parity check (par_level_flag). For a given scan position, if sig_coeff_flag is equal to 1, coeff_sign_flag is encoded and decoded, followed by abs_level_gtx_flag[0] (which specifies whether the absolute level is greater than 1). If abs_level_gtx_flag[0] is equal to 1, par_level_flag is additionally encoded and decoded to specify the parity of the absolute level. – Scan pass greater than x: For each scan position where the absolute level is greater than 1, up to four abs_level_gtx_flag[i] are encoded for i=1...4 to indicate whether the absolute level at the given position is greater than 3, 5, 7 or 9, respectively. – Remainder scan pass: The absolute level remainder abs_remainder is encoded and decoded in bypass mode. The absolute level remainder is binarized using a fixed Rice parameter value of 1. The binary bits in scan passes #1 and #2 (the first scan pass and greater than x scan passes) are context-coded until the maximum number of context-coded binary bits in the TU has been exhausted. The maximum number of context-coded binary bits in the residual block is limited to 1.75*block_width*block_height, or equivalently, an average of 1.75 context-coded binary bits per sample position. The binary bits in the last scan pass (remainder scan pass) are bypass-coded. The variable RemCbs is first set to the maximum number of context-coded binary bits for the block and is reduced by 1 each time a context-coded binary bit is coded. When RemCcbs is greater than or equal to 4, the context-coded binary bits are used to encode and decode the syntax elements in the first codec pass, including sig_coeff_flag, coeff_sign_flag, abs_level_gt1_flag, and par_level_flag. If RemCcbs becomes smaller than 4 when encoding and decoding the first pass, the remaining coefficients that have not been encoded in the first pass are encoded and decoded in the remainder scanning pass (pass#3). After the first pass of encoding and decoding is completed, if RemCcbs is greater than or equal to 4, the context-coded binary bits are used to encode and decode the syntax elements in the second pass of encoding and decoding, including abs_level_gt3_flag, abs_level_gt5_flag, abs_level_gt7_flag, and abs_level_gt9_flag. If RemCcbs becomes less than 4 when encoding and decoding the second pass, the remaining coefficients that have not been encoded and decoded in the second pass are encoded and decoded in the remainder scan pass (pass#3). Figure 5 The transform skip residual coding process is shown. The stars mark the positions where the context coded bins are exhausted, at which point all remaining bins are coded using bypass coding. In addition, for blocks not coded in BDPCM mode, a horizontal mapping mechanism is applied to transform skipped residual coding until the maximum number of context coded binary bits has been reached. Horizontal mapping uses the top and left neighbor coefficient levels to predict the current coefficient level in order to reduce signaling cost. For a given residual position, denote absCoeff as the absolute coefficient level before mapping, and absCoeffMod as the coefficient level after mapping. Let X0 denote the absolute coefficient level of the left neighbor position, and let X1 denote the absolute coefficient level of the top neighbor position. Horizontal mapping is performed as follows: pred=max(X0,X1); if(absCoeff == pred) absCoeffMod = 1; else absCoeffMod = (absCoeff <pred)?absCoeff+1:absCoeff; The absCoeffMod value is then encoded as described above.After all context-decoded bins have been exhausted, horizontal mapping is disabled for all remaining scan positions in the current block. 2.1.4 Palette Mode In VVC, palette mode is used for picture content encoding and decoding in all chroma formats supported in 4:4:4 profile (i.e., 4:4:4, 4:2:0, 4:2:2, and monochrome). When palette mode is enabled, if the CU size is less than or equal to 64×64, a flag is transmitted at the CU level, and the number of samples in the CU is greater than 16 to indicate whether palette mode is used. Considering that applying palette mode on small CUs introduces insignificant codec gain and brings additional complexity on small blocks, palette mode is disabled for CUs less than or equal to 16 samples. A palette-encoded codec unit (CU) is treated as a prediction mode different from intra-prediction, inter-prediction, and intra-block copy (IBC) modes. If palette mode is used, the sample values in a CU are represented by a set of representative color values. This set is called a palette. For positions with sample values close to the palette colors, the palette index is signaled. Samples outside the palette can also be specified by signaling escape symbols. For samples within a CU coded and decoded using escape symbols, their component values are signaled directly using (possibly) quantized component values. This is done in Figure 6 The quantized escaped symbols are binarized using a fifth-order exponential Golomb binarization process (EG5). For palette encoding and decoding, the palette predictor is maintained. For the non-wavefront case, the palette predictor is initialized to 0 at the beginning of each stripe. For the WPP case, the palette predictor at the beginning of each CTU row is initialized to the predictor derived from the first CTU in the previous CTU row, so that the initialization scheme between the palette predictor and CABAC synchronization is unified. For each entry in the palette predictor, a reuse flag is signaled to indicate whether it is part of the current palette in the CU. The reuse flag is sent using a run length codec of zero. Thereafter, the number of new palette entries and the component values of the new palette entries are signaled. After encoding the palette-encoded CU, the palette predictor will be updated with the current palette, and entries from the previous palette predictor that are not reused in the current palette will be added to the end of the new palette predictor until the maximum allowed size is reached. An escape flag is signaled for each CU to indicate whether there is an escape symbol in the current CU. If there is an escape symbol, the palette table is expanded by one and the last index is assigned as the escape symbol. In a manner similar to the coefficient groups (CGs) used in transform coefficient coding, a CU coded with palette mode is divided into multiple line-based coefficient groups, each consisting of m samples (i.e., m=16), where the index run of the escape mode, the palette index value, and the quantized color are encoded / parsed sequentially for each CG. As in HEVC, horizontal or vertical traversal scanning can be applied to scan samples, such as Figure 7 as shown in . The encoding and decoding order for the palette run encoding and decoding in each fragment is as follows: For each sample position, a context encoded binary bit run_copy_flag=0 is signaled to indicate whether the pixel has the same mode as the previous sample position, that is, whether the previously scanned sample and the current sample are both of run type COPY_ABOVE, or whether the previously scanned sample and the current sample both have run type INDEX and the same index value. Otherwise, run_copy_flag=1 is signaled. If the current sample has a different mode from the previous sample, then a context encoded binary bit copy_above_palette_indices_flag is signaled to indicate the run type of the current sample, that is, INDEX or COPY_ABOVE. Here, if the sample is in the first row (horizontal traversal scan) or the first column (vertical traversal scan), the decoder does not have to parse the run type because the INDEX mode is used by default. In the same way, if the previously parsed run type is COPY_ABOVE, the decoder does not have to parse the run type. After palette run encoding of samples in one encoding pass, index values (for INDEX mode) and quantized escape colors are grouped and encoded using CABAC bypass encoding in another encoding pass. This separation of context encoding binary bits and bypass encoding binary bits can improve throughput within each line CG. For slices with dual luma / chroma trees, the palette is applied separately to luma (Y component) and chroma (Cb and Cr components), where the luma palette entries contain only Y values, and the chroma palette entries contain both Cb and Cr values. For slices of a single tree, the palette is applied jointly on the Y, Cb, Cr components, i.e., each entry in the palette contains Y, Cb, Cr values, unless when a CU is encoded using local dual-tree encoding, in which case the encoding of luma and chroma is handled separately. In this case, if the corresponding luma blocks or chroma blocks are encoded using palette mode, their palettes are applied in a manner similar to the dual-tree case (this is relevant for non-4:4:4 codecs and will be further explained in 2.1.4.1). For slices decoded with dual-tree codec, the maximum palette predictor size is 63, and the maximum palette table size for the codec of the current CU is 31. For slices decoded with dual-tree codec, the maximum predictor and palette table sizes are halved, i.e., for each of the luma palette and chroma palette, the maximum predictor size is 31 and the maximum table size is 15. For deblocking, palette-coded blocks on the side of a block boundary are not deblocked. 2.1.4.1 Palette Mode for Non-4:4:4 Content The palette modes in VVC are supported for all chroma formats in a similar manner as the palette modes in HEVC SCC. For non-4:4:4 content, the following customizations apply: 1. When signaling an escape value for a given sample position, if that sample position has only a luma component but no chroma components due to chroma subsampling, then only the luma escape value is signaled. This is the same as in HEVCSCC. 2. For local double-tree blocks, the palette pattern is the same as the palette applied to a single T-block with two exceptions Patterns apply to blocks in the same way: a. The process of palette predictor update is slightly modified as follows. Since the local dual-tree block contains only luma (or chroma) components, the predictor update process uses the signaled value of the luma (or chroma) component and fills in the "missing" chroma (or luma) component by setting it to a default value (1<<(component bit depth - 1)). b. The maximum palette predictor size remains at 63 (because the slices are encoded and decoded using a single tree), but the maximum palette table size for luma / chroma blocks remains at 15 (because the blocks are encoded and decoded using separate palettes). 3. For palette mode in monochrome format, the number of color components in a palette-encoded block is set to 1 instead of 3. 2.1.4.2 Encoder Algorithm for Palette Mode On the encoder side, the following steps are used to generate the palette table of the current CU. 1. First, to derive the initial entries in the palette table of the current CU, a simplified K-means clustering is applied. Initialize the palette table of the current CU to an empty table. For each sample position in the CU, calculate the SAD between this sample and each palette table entry, and obtain the minimum SAD among all palette table entries. If the minimum SAD is less than the predefined error limit errorLimit, the current sample is clustered with the palette table entry with the minimum SAD. Otherwise, a new palette table entry is created. The threshold errorLimit is QP-dependent and is retrieved from a lookup table containing 57 elements covering the entire QP range. After all samples of the current CU have been processed, the initial palette entries are sorted according to the number of samples clustered with each palette entry, and any entries after the 31st entry are discarded. 2. In the second step, the initial palette table colors are adjusted by considering two options: using the centroid of each cluster from step 1 or using one of the palette colors in the palette predictor. The option with the lower rate-distortion cost is selected as the final color of the palette table. If a cluster has only a single sample and the corresponding palette entry is not in the palette predictor, the corresponding sample is converted to an escape symbol in the next step. 3. The resulting palette table contains some new entries from the centroids of the clusters in step 1, and some entries from the palette predictors. Therefore, the table is reordered again so that all new entries (i.e., The centroid) is placed at the beginning of the table, followed by the entries from the palette predictor. Given the palette table of the current CU, the encoder selects a palette index for each sample position in the CU. For each sample position, the encoder checks the RD cost of all index values corresponding to the palette table entry, as well as the index representing the escape symbol, and selects the index with the minimum RD cost using the following equation: RD cost = distortion × (isChroma? 0.8:1) + lambda × bypassed bits (2-5) After determining the index map for the current CU, each entry in the palette table is checked to see if it is used by at least one sample position in the CU. Any unused palette entry will be removed. After deciding the index map for the current CU, the trellis RD optimization is applied to find the best values of run_copy_flag and run type for each sample position by comparing the RD costs of three options: same as the previously scanned position, run type COPY_ABOVE, or run type INDEX. When calculating the SAD value, the sample values are scaled down to 8 bits unless the CU is encoded or decoded in lossless mode, in which case the actual input bit depth is used to calculate the SAD. In addition, in the case of lossless codecs, only the ratio is used in the above rate-distortion optimization step (because lossless codecs do not cause distortion). 2.2 Adaptive Color Transformation In the HEVC SCC extension, Adaptive Color Transform (ACT) is applied to reduce the redundancy between the three color components in the 444 chroma format. ACT is also adopted in the VVC standard to enhance the codec efficiency of the 444 chroma format codec. As in HEVC SCC, ACT performs an in-loop color space conversion in the prediction residual domain by adaptively converting the residual from the input color space to the YCgCo space. Figure 8A decoding flow chart for applying ACT is shown. Two color spaces are adaptively selected by signaling an ACT flag at the CU level. When the flag is equal to 1, the residual of the CU is encoded and decoded in the YCgCo space; otherwise, the residual of the CU is encoded and decoded in the original color space. In addition, similar to the HEVC ACT design, for inter and IBc CUs, ACT is enabled only when there is at least one non-zero coefficient in the CU. ACT is only enabled when the chroma component selects the same intra prediction mode of the luminance component (i.e., DM mode). 2.2.1.1ACT Mode In the HEVC SCC extension, ACT supports both lossless and lossy codecs based on the lossless flag (i.e., cu_transquant_bypass_flag). However, there is no flag in the bitstream to indicate whether lossy or lossless codec is applied. Therefore, the YCgCo-R transform is applied as ACT to support both lossy and lossless cases. The YCgCo-R reversible color transform is shown below. Since the YCgCo-R transform is not normalized. In order to compensate for the dynamic range change of the residual signal before and after the color transform, the QP adjustment of (-5, 1, 3) is applied to the transform residuals of the Y, Cg and Co components respectively. The adjusted quantization parameter only affects the quantization and inverse quantization of the residual in the CU. For other encoding and decoding processes (such as deblocking), the original QP is still applied. Additionally, because the forward and inverse color transforms require access to the residuals of all three components, ACT mode is always disabled for single tree partitioning and ISP mode, where the prediction block sizes for different color components are different. When ACT is applied, transform skip (TS) and block differential pulse codec modulation (BDPCM) extended to code chroma residuals are also enabled. 2.2.1.2 ACT Fast Encoding Algorithm To avoid brute force RD searches in both the original and converted color spaces, the following fast encoding algorithm is applied in the VTM reference software to reduce encoder complexity when ACT is enabled. – The order of RD checking for enabling / disabling ACT depends on the original color space of the input video. For RGB video, RD cost for ACT mode is checked first; for YCbCr video, RD cost for non-ACT mode is checked first. RD cost for the second color space is checked only if there is at least one non-zero coefficient in the first color space. – When a CU is obtained through different partitioning paths, the same ACT enable / disable decision is reused. Specifically, when the CU is encoded and decoded for the first time, the selected color space used to encode and decode the residual of a CU will be stored. Then, when the same CU is obtained by another partitioning path, instead of checking the RD cost of the two spaces, the stored color space decision will be reused directly. – The RD cost of the parent CU is used to decide whether to check the RD cost of the second color space of the current CU. For example, if the RD cost of the first color space is less than the RD cost of the second color space for the parent CU, the second color space is not checked for the current CU. – To reduce the number of tested codec modes, the selected codec modes are shared between the two color spaces. Specifically, for intra mode, the pre-selected intra mode candidates according to SATD-based intra mode selection are shared between the two color spaces. For inter and IBC modes, only one block vector search or motion estimation is performed. Block vectors and motion vectors are shared by the two color spaces. 2.2.2 Intra-frame template matching Intra Template Matching Prediction (Intra TMP) is a special intra prediction mode that copies the best prediction block from the reconstructed part of the current frame, whose L-shaped template matches the current template. For a predefined search range, the encoder searches for the template that is most similar to the current template in the reconstructed part of the current frame and uses the corresponding block as the prediction block. The encoder then signals the use of this mode and performs the same prediction operation on the decoder side. By combining the L-shaped causal neighbors of the current block with Fig. 9 The prediction signal is generated by matching another block in a predefined search area in the image to generate a prediction signal, the predefined search area including: R1: current CTU; R2: upper left CTU; R3: above CTU; R4: Left CTU. SAD is used as the cost function. In each region, the decoder searches for the template with the minimum SAD relative to the current region and uses its corresponding block as the prediction block. The size of all regions (SearchRange_w, SearchRange_h) is proportional to the block size (BlkW, BlkH) with a fixed number of SAD comparisons per pixel. That is: SearchRange_w=a*BlkW SearchRange_h=a*BlkH Where 'a' is a constant that controls the gain / complexity tradeoff. In practice, 'a' is equal to 5. The intra template matching tool is enabled on width and height for CUs of size less than or equal to 64. This maximum CU size for intra template matching is configurable. When DIMD is not used for the current CU, the intra template matching prediction mode is signaled at the CU level through a dedicated flag. 2.3 Sample Reordering 2.3.1 Reordering of Reconstructed Samples The detailed solutions below should be considered as examples to explain the general concept. These solutions should not be interpreted in a narrow sense. In addition, these solutions can be combined in any way. In the following disclosure, a block may refer to a codec block (CB), a codec unit (CU), a prediction block (PB), a prediction unit (PU), a transform block (TB), a transform unit (TU), a sub-block, a sub-CU, a codec tree unit (CTU), a codec tree block (CTB), or a codec group (CG). In the following disclosure, a region may refer to any video unit, such as a picture, a slice, or a block. A region may also refer to a non-rectangular area, such as a triangle. In the following disclosure, W and H represent the width and height of the rectangular area mentioned. 1. It is proposed that samples in a region can be reordered. a. The reordering of samples can be defined as follows: Assume that the position (x, y) in the region before reordering The sample at position (x, y) is denoted as S(x, y), and the sample at position (x, y) in the region after reordering is denoted as R(x, y). It is required that R(x, y) = S(f(x, y), g(x, y)), where (f(x, y), g(x, y)) is the position in the region, and f and g are two functions. i. For example, it is required that there exists at least one position (x, y) such that ((x, y), g(x, y)) is not equal to (x, y). y). b. The samples in the area to be reordered can be: i. The original sample before encoding; ii. Prediction sample; iii. Reconstruct the sample; iv. Transformed samples (transformation coefficients); v. Samples before inverse transformation (coefficients before inverse transformation); vi. Samples before deblocking filtering; vii. Samples after deblocking filtering; viii. Samples before SAO processing; ix. Samples after SAO processing; x. Samples before ALF processing; xi. Samples after ALF processing; xii. Samples before post-processing; xiii. Samples after post-processing. c. In one example, reordering may be applied in more than one stage. i. For example, at least two of the samples listed in item 1.b above may be reordered. 1) For example, different re-ranking methods can be applied to the two samples. 2) For example, the same re-ranking method can be applied to both samples. d. In one example, the reordering may be a horizontal flip. For example, f(x, y) = Px, g(x, y) = y. For example, P = W-1. e. In one example, the reordering may be a vertical flip. For example, f(x, y) = x, g(x, y) = Qy. For example, Q = H-1. f. In one example, the reordering may be a horizontal-vertical flip. For example, f(x, y) = Px, g(x, y) = Qy. For example, P = W-1 and Q = H-1. g. In one example, the reordering may be a shift. For example, f(x, y) = (P + x) % W, g(x, y) = (Q + y) % H, where P and Q are integers. h. In one example, the reordering may be a rotation. i. In one example, there exists at least one (x, y) such that (x, y) is equal to (f(x, y), g(x, y)). j. In one example, whether and / or how to reorder samples may be signaled from the encoder to the decoder, e.g., in SPS / sequence header / PPS / picture header / APS / slice header / sub-picture / tile / CTU row / CTU / CU / PU / TU. i. For example, a first flag is signaled to indicate whether reordering is applied. 1) For example, the first flag may be encoded and decoded using context encoding and decoding. ii. For example, a second syntax element (eg, a flag) is signaled to indicate which reordering method (eg, horizontal flip or vertical flip) is used. 1) For example, the second syntax element is signaled only if it is indicated that reordering is applied. 2) For example, context coding may be used to codec the second syntax element. 2. Propose whether and / or how to reorder samples may depend on codec information. a. In one example, whether and / or how to reorder samples may be derived depending on codec information at picture level / slice level / CTU level / CU level / PU level / TU level. b. In one example, the codec information may include: i. The size of the area. ii. The codec mode of the region (e.g., inter, intra, or IBC). iii. Motion information (such as motion vectors and reference indices). iv. Intra prediction mode (eg angular intra prediction mode, planar or DC). v. Inter prediction modes (such as affine prediction, bi-directional prediction / uni-directional prediction, merge mode, combined inter-intra prediction (CIIP), merge with motion vector difference (MMVD), temporal motion vector prediction (TMVP), sub-TMVP). vi. Quantization parameter (QP). vii. Codec tree segmentation information such as codec tree depth. viii. Color format and / or color components. 3. It is proposed that at least one parsing or decoding process other than the reordering process may depend on whether and / or how the samples are reordered. a. For example, a syntax element may be conditionally signaled based on whether or not reordering is applied. b. For example, different scan orders may be used based on whether and / or how the samples are reordered. c. For example, deblocking filtering / SAO / ALF may be used based on whether and / or how samples are reordered. 4. In one example, the samples may be processed by at least one auxiliary process before or after the resampling process. Some possible auxiliary processes may include: (combinations may be allowed) a. For example, at least one sample may be added by an offset. b. For example, at least one sample may be multiplied by a factor. c. For example, at least one sample may be cropped. d. For example, at least one sample may be filtered. e. For example, at least one sample X can be modified to T(X), where T is a function. 5. In one example, for a block encoded and decoded in IBC mode a. For example, a first flag is signaled to indicate whether the reconstructed samples should be reordered. i. For example, the first flag may be encoded and decoded using context encoding and decoding. b. For example, a second flag may be signaled to indicate whether the reconstructed sample should be flipped horizontally or vertically. i. For example, the second flag is signaled only when the first flag is true. ii. For example, the second flag may be encoded and decoded using context encoding and decoding. 2.3.2 Sample Reordering - Application Conditions and Interaction with Other Processes The detailed solutions below should be considered as examples to explain the general concept. These solutions should not be interpreted in a narrow sense. In addition, these solutions can be combined in any way. The term “video unit” or “codec unit” may refer to a picture, a slice, a tile, a codec tree block (CTB), a codec tree unit (CTU), a codec block (CB), a CU, a PU, a TU, a PB, a TB. The term "block" may refer to a codec tree block (CTB), a codec tree unit (CTU), a codec block (CB), a CU, a PU, a TU, a PB, a TB. Note that the terms mentioned below are not limited to the specific terms defined in existing standards. Any changes in encoding tools are also applicable. 1. Regarding the application conditions of sample reordering (e.g., the first problem and related problems), the following method is proposed: a. Whether the reordering process is applied to the reconstructed / original / prediction block may depend on the coded information of the video unit. a. For example, it may depend on the prediction method. b. For example, if the video unit is encoded with one or more modes / techniques listed below, then the reordering process may be applied to the video unit. Otherwise, the reordering process is disabled. i. Intra-block copy (also called IBC). ii. Current Picture Reference (also called CPR). iii. Intra-template matching (also called Intra-TM). iv. IBC template matching (or IBC mode based on template matching). v. Merge-based encoding and decoding. vi. Codec based on AMVP. c. For example, it may depend on the block dimensions (such as block width and / or height). d. For example, if the dimensions W×H of the video unit meet one or more of the rules listed below, then the reordering process may be applied to the video unit. Otherwise, the reordering process is disabled. i. If W>=T1 and / or H>=T2. ii. If W <= T1 and / or H <= T2. iii. If W>T1 and / or H>T2. iv. If W<T1 and / or H<T2. v.If W×H>=T. vi. If W×H>T. vii. If W×H<=T. viii.If W×H<T. 2. Regarding which kinds of samples are reordered and the interaction with other processes (e.g., the second question and related questions), the following methods are proposed: a. A possible sample reordering method can refer to one or more of the following processes: a. The shaped domain samples of the video unit (eg, obtained based on the LMCS method) may be reordered. i. For example, the shaped domain luma samples of a video unit (eg, obtained by luma mapping based on the LMCS method) may be reordered. b. The original domain (rather than the LMCS reshaped domain) samples of the video unit can be reordered. i. For example, the original domain chroma samples of a video unit may be reordered. ii. For example, the original domain luma samples of a video unit may be reordered. c. The reconstructed samples of the video unit can be reordered. i. For example, the reconstructed samples of a video unit may be reordered immediately after adding the decoded residual to the prediction. ii. For example, the integer-domain luma reconstruction samples of a video unit may be reordered. iii. For example, the raw domain luma reconstruction samples of a video unit may be reordered. iv. For example, the original domain chroma reconstructed samples of a video unit may be reordered. d. The inverse brightness mapping of the LMCS process may be applied based on the reordered reconstructed samples. e. A loop filtering process (eg, luma / chroma bilateral filter, luma / chroma SAO, CCSAO, luma / chroma ALF, CCALF, etc.) may be applied based on the reordered reconstructed samples. i. For example, the loop filter process may be applied based on reconstructed samples reordered in the original domain (rather than the LMCS shaping domain). f. Distortion calculations (eg, SSE calculations between original samples and reconstructed samples) may be based on the reordered reconstructed samples. i. For example, the distortion calculation can be based on the reconstructed samples reordered from the original domain. g. The original samples of a video unit can be reordered. i. For example, the integer-domain raw luma samples of a video unit may be reordered. ii. For example, the original domain raw luma samples of a video unit may be reordered. iii. For example, the original domain raw chroma samples of a video unit may be reordered. iv. For example, the residual can be generated by subtracting the prediction from the reordered original samples. h. The prediction samples of the video unit can be reordered. i. For example, the reordering process for prediction samples may be performed immediately after the motion compensation process. ii. For example, sign prediction may be applied based on the reordered prediction samples of the video unit. General Aspects 3. Whether and / or how to apply the method disclosed above may be signaled at the sequence level / picture group level / picture level / slice level / tile group level, for example in the sequence header / picture header / SPS / VPS / DPS / DCI / PPS / APS / slice header / tile group header. 4. Whether and / or how to apply the above disclosed methods can be signaled in PB / TB / CB / PU / TU / CU / VPDU / CTU / CTU row / slice / tile / sub-picture / other kinds of areas containing more than one sample or pixel. 5. Whether and / or how to apply the above disclosed method may depend on the coded information, such as block size, color format, single tree / dual tree partitioning, color component, slice / picture type. 2.3.3 Sample Reordering - Sample Reordering, Signaling and Storage The detailed solutions below should be considered as examples to explain the general concept. These solutions should not be interpreted in a narrow way. In addition, these solutions can be combined in any way. The term “video unit” or “codec unit” may refer to a picture, a slice, a tile, a codec tree block (CTB), a codec tree unit (CTU), a codec block (CB), a CU, a PU, a TU, a PB, a TB. The term "block" may refer to a codec tree block (CTB), a codec tree unit (CTU), a codec block (CB), a CU, a PU, a TU, a PB, a TB. Note that the terms mentioned below are not limited to the specific terms defined in existing standards. Any changes in encoding tools are also applicable. 1. Regarding the signaling of sample reordering (e.g., the first problem and related problems), the following method is proposed: a. For example, at least one new syntax element (e.g., flag, index, variable, parameter, etc.) may be signaled Use of sample reordering to specify video units. a. For example, assuming a particular prediction method is used for a video unit, at least one new syntax element (eg, a flag) may be further signaled to specify the use of sample reordering. b. For example, assuming that the intra template matching usage flag specifies that the video unit is coded by intra template matching, a first new syntax element (eg, a flag) may be further signaled to specify the use of sample reordering for the video unit coded by intra template matching. c. For example, assuming that the IBC amvp flag specifies that the video unit is coded by IBC amvp, a first new syntax element (eg, a flag) may be further signaled to specify the use of sample reordering for the video unit coded by IBC amvp. d. For example, assuming that the IBC merge flag specifies that the video unit is coded by IBC merge, a first new syntax element (eg, a flag) may be further signaled to specify the use of sample reordering for the IBC merge coded video unit. b. In addition, for example, if the first new syntax element specifies that sample reordering is used for a video unit encoded and decoded by a specific prediction method, a second new syntax element (e.g., a flag) may be further signaled to specify which reordering method (e.g., horizontal flipping or vertical flipping) is used for the video unit. c. For example, a single new syntax element (e.g., parameter or variable or index) may be signaled to a video unit, rather than multiple concatenated syntax elements, specifying the type of reordering applied to the video unit (e.g., no flip, horizontal flip, or vertical flip). a. For example, assuming that the intra template matching usage flag specifies that the video unit is encoded and decoded by intra template matching, a new syntax element (e.g., index) can be further signaled to specify the type of reordering of samples of the video unit encoded and decoded by intra template matching. b. For example, assuming that the IBC amvp flag specifies that the video unit is coded by IBC amvp, a new syntax element (eg, index) may be further signaled to specify the type of sample reordering for the video unit coded by IBC amvp. c. For example, assuming that the IBC merge flag specifies that the video unit is coded by IBC merge, a new syntax element (eg, index) may be further signaled to specify the type of sample reordering for the video unit coded by IBC merge. d. Additionally, for example, a new syntax element (eg, index) equal to 0 specifies that sample reordering is not used; equal to 1 specifies that sample reordering method A is used; equal to 2 specifies that sample reordering method B is used; and so on. d. For example, one or more syntax elements related to sample reordering may be context encoded and decoded. a. For example, the context may be based on neighbor block / sample coding information (e.g., availability, prediction mode, whether merge coded, whether IBC coded, whether sample reordering is applied, which sample reordering method is used, etc.). e. Alternatively, for example, instead of signaling whether to perform sample reordering and / or which reordering method to use for a video unit, some (or all) of these steps may be determined based on predefined rules (without signaling). a. For example, the predefined rules may be based on the information of neighboring block / sample encodings. b. For example, assuming that the IBC merge flag specifies that the video unit is encoded and decoded via IBC merging, a process may be performed to determine whether and how to perform reordering based on predefined rules / processes. i. Alternatively, for example, assume that the first new syntax element specifies sample reordering for a video unit, however, instead of further signaling the reordering method, how to reorder is determined based on a predefined rule / procedure (no signaling). ii. Alternatively, for example, whether to perform reordering may be determined implicitly based on a predefined rule / process, but how to reorder may be signaled. c. For example, assuming that the IBC amvp flag specifies that the video unit is coded by IBC amvp, a process can be performed to determine whether and how to perform reordering based on predefined rules / processes. i. Alternatively, for example, assume that the first new syntax element specifies sample reordering for a video unit, however, instead of further signaling the reordering method, how to reorder may be determined based on a predefined rule / procedure (no signaling). ii. Alternatively, for example, whether to perform reordering may be determined implicitly based on a predefined rule / process, but how to reorder may be signaled. d. For example, assuming that the intra template matching flag specifies that the video unit is encoded by IBC merging, a process can be performed to determine whether and how to perform reordering based on predefined rules / processes. i. Alternatively, for example, assume that the first new syntax element specifies sample reordering for a video unit, however, instead of further signaling the reordering method, how to reorder may be determined based on a predefined rule / procedure (no signaling). ii. Alternatively, for example, whether to perform reordering may be determined implicitly based on a predefined rule / process, but how to reorder may be signaled. f. For example, whether to perform reordering and / or how to reorder can be inherited from the encoded and decoded blocks. a. For example, it can be inherited from adjacent spatial neighbor blocks. b. For example, it may be inherited from non-adjacent spatial neighbors. c. For example, it may be inherited from a history-based motion table such as some HMVP table. d. For example, it may be inherited from the temporal motion candidate. e. For example, it can be inherited based on the IBC merge candidate list. f. For example, it can be inherited based on the IBC amvp candidate list. g. For example, it can be inherited based on a generated motion candidate list / table. h. For example, in case a video unit is encoded and decoded via IBC merge mode, sample reordering inheritance may be allowed. i. For example, in case a video unit is encoded and decoded by IBC AMVP mode, sample reordering inheritance may be allowed. j. For example, in the case where a video unit is encoded and decoded via intra template matching mode, sample reordering inheritance may be allowed. 2. With regard to the storage of sample reordering states (e.g., second and related issues), the following method is proposed: a. For example, information on whether and / or how to reorder video units may be stored. a. For example, the stored information can be used for encoding and decoding of future video units. b. For example, this information may be stored in a buffer. i. For example, a buffer can be a line buffer, a table, more than one line buffer, a picture buffer, a compressed picture buffer, a temporal buffer, etc. c. For example, this information may be stored in a historical motion vector table (such as a HMVP table). b. For example, codec information may be stored (e.g., whether sample reordering is applied, which sample reordering method is used, block availability, prediction mode, whether merged codec is used, whether IBC codec is used, etc.) to derive the context of the sample reordering syntax element. General Aspects 3. Whether and / or how to apply the method disclosed above can be applied at the sequence level / picture group level / picture level / strip level / Signaled at tile group level, for example in sequence header / picture header / SPS / VPS / DPS / DCI / PPS / APS / slice header / tile group header. 4. Whether and / or how the above disclosed methods can be applied in PB / TB / CB / PU / TU / CU / VPDU / CTU / CTU The rows / slices / tiles / sub-pictures / other kinds of regions containing more than one sample or pixel are signaled. 5. Whether and / or how to apply the above disclosed method may depend on the coded information, such as block size, color format, single / dual tree partitioning, color component, slice / picture type. 3 Questions To date, codec tools such as IBC (in VVC and ECM) and intra template matching (in ECM) directly copy the previously coded blocks in the current picture. However, the samples in the reconstructed block can be reordered / transformed / flipped / rotated to obtain higher codec gain. The following issues can be considered: 1. Motion candidate list generation for sample re-ranking. 2. Implicit determination of sample reordering. 3. How to reorder samples. 4. Motion vector adjustment for sample reordering. 4 Detailed solutions The detailed solutions below should be considered as examples to explain the general concept. These solutions should not be interpreted in a narrow sense. In addition, these solutions can be combined in any way. The term “video unit” or “codec unit” may refer to a picture, a slice, a tile, a codec tree block (CTB), a codec tree unit (CTU), a codec block (CB), a CU, a PU, a TU, a PB, a TB. The term "block" may refer to a codec tree block (CTB), a codec tree unit (CTU), a codec block (CB), a CU, a PU, a TU, a PB, a TB. Note that the terms mentioned below are not limited to the specific terms defined in existing standards. Any changes in codec tools are also applicable. 4.1 Regarding motion candidate list generation for sample reordering (eg, the first problem and related problems), the following method is proposed. a. For example, the IBC merge motion candidate list can be used for both the regular IBC merge mode and the sample reordering based IBC merge mode. b. For example, the IBC amvp motion predictor candidate list may be used for both the regular IBC amvp mode and the sample reordering based IBC amvp mode. c. For example, a new motion (predictor) candidate list is generated for the target video unit using codec with sample reordering. a. For example, the new candidate list may only consider motion candidates that utilize the same reordering method as that of the target video unit. b. For example, the new candidate list may only consider motion candidates that utilize sample reordering codecs (but regardless of the type of sample reordering method). c. Alternatively, a new candidate list may be generated without considering the sample reordering method for each motion candidate. d. For example, non-adjacent motion candidates may be inserted into a new candidate list. i. For example, non-adjacent candidates utilizing sample reordering (but regardless of the type of sample reordering method) may be inserted. ii. For example, non-adjacent candidates of the same reordering method as that of the target video unit may be inserted. iii. For example, non-adjacent candidates may be inserted regardless of whether a sample re-ranking method is applied to the candidates. e. For example, new motion candidates may be generated according to certain rules and inserted into the new candidate list. i. For example, the rules can be based on an averaging process. ii. For example, the rules can be based on the editing process. iii. For example, the rules can be based on a scaling process. d. For example, the generation of the motion (prediction) candidate list for the target video unit may depend on the reordering method. a. For example, a reordering method associated with each motion candidate (from spatial or temporal domain or history table) may be inserted into a list, whether or not the target video unit will be encoded with sample reordering. b. For example, if the target video unit is to be encoded with sample reordering, only those motion candidates (from spatial or temporal domain or history table) that are encoded with the same reordering method as that of the target video unit are inserted into the list. c. For example, if the target video unit is to be coded with sample reordering, only those motion candidates (from the spatial domain or the temporal domain or the history table) that are coded with sample reordering are inserted into the list. d. For example, if the target video unit is not coded using sample reordering, those motion candidates (from the spatial domain or temporal domain or the history table) coded using the same reordering method may not be inserted into the list. e. Alternatively, the generation of a motion list for a video unit may not depend on the reordering method associated with each motion candidate. e. For example, adaptive reordering of merge candidates (ARMC) of video units may depend on the reordering method. a. For example, if the target video unit is to be encoded using sample reordering, motion candidates encoded using the same reordering method as that of the target video unit may be placed before those motion candidates encoded using a different reordering method. b. For example, if the target video unit is to be encoded with sample reordering, motion candidates encoded with sample reordering (but regardless of the type of sample reordering method) may be placed before those motion candidates encoded with a different reordering method. c. For example, if the target video unit is encoded without sample reordering, motion candidates that are encoded without the reordering method may be placed before those motion candidates that are encoded with the reordering method. d. Alternatively, ARMC may be applied to video units regardless of the reordering method associated with each motion candidate. f. For example, an IBC merge candidate list can be constructed that allows encoding and decoding of candidates with or without sample reordering. a. For example, depending on whether the spatial / temporal block is coded with or without sample reordering, candidates from the spatial / temporal block are determined to use or not use sample reordering. b. For example, depending on whether the block corresponding to the history table entry was encoded with or without sample reordering, the candidate from the history table entry is determined to utilize or not utilize sample reordering. c. For example, depending on whether the selected IBC merge candidate is coded with or without sample reordering, the current block is determined to be coded with or without sample reordering. 4.2 Regarding the implicit determination of sample reordering (eg, the second problem and related problems), the following method is proposed. a. Whether to reorder the reconstructed / original / predicted samples of a video unit can be implicitly derived from the codec information at both the encoder and the decoder. a. Implicit derivation can be based on cost / error / difference calculated using codec information. i. For example, the cost / error / difference can be calculated based on template matching. ii. For example, template matching can be performed by comparing samples in the first template and the second template. 1. For example, a first template is constructed from a set of predefined samples that are neighbors to the current video unit, and a second template is constructed from a set of corresponding samples that are neighbors to the reference video unit. 2. For example, the cost / error may refer to the cumulative sum of the differences between the samples in the first template and the corresponding samples in the second template. a. For example, the difference may be based on the luma sample values. 3. For example, a sample may refer to a reconstructed sample or a variant based on a reconstructed sample. 4. For example, a sample can refer to a predicted sample or a variant based on a predicted sample. b. For example, the first cost (represented by Cost0) can be calculated without reordering, and the second cost (represented by Cost1) can be calculated by using the ordering. Finally, the minimum cost value among {Cost0, Cost1} is identified, and the corresponding codec method (without reordering or with reordering) is determined as the final codec method of the video unit. c. Alternatively, whether to reorder the reconstructed / original / predicted samples of a video unit may be signaled in the bitstream. i. For example, it can be signaled by a syntax element (eg, a flag). b. Which reordering method to use to reorder the reconstructed / original / prediction samples can be implicitly derived from the codec information at both the encoder and the decoder. a. For example, whether to flip horizontally or vertically. b. Implicit derivation can be based on cost / error / difference calculated using codec information. i. For example, the cost / error / difference can be calculated based on template matching. ii. For example, template matching can be performed by comparing samples in the first and second templates. 1. For example, a first template is constructed from a set of predefined samples that are neighbors to the current video unit, and a second template is constructed from a set of corresponding samples that are neighbors to the reference video unit. 2. For example, the cost / error may refer to the cumulative sum of the differences between the samples in the first template and the corresponding samples in the second template. a. For example, the difference may be based on the luma sample values. 3. For example, a sample may refer to a reconstructed sample or a variant based on a reconstructed sample. 4. For example, a sample can refer to a predicted sample or a variant based on a predicted sample. iii. For example, the first cost (denoted by Cost0) may be calculated without using reordering method A. The second cost (represented by Cost1) can be calculated using reordering method B. Finally, The minimum cost value among {Cost0, Cost1} is identified, and the corresponding codec method (reordering method A, reordering method B) is determined as the final codec method of the video unit. c. Alternatively, which reordering method is used to reorder the reconstructed / original / predicted samples of a video unit can be signaled in the bitstream. i. For example, it may be signaled by a syntax element (eg, a flag, an index, a parameter or a variable). c. Whether or which reordering method to use to reorder the reconstructed / original / prediction samples of a video unit can be implicitly derived from the codec information at both the encoder and the decoder. a. For example, the first cost (represented by Cost0) can be calculated without reordering, the second cost (represented by Cost1) can be calculated using reordering method A; the third cost (represented by Cost2) can be calculated using reordering method B. Finally, the minimum cost value among {Cost0, Cost1, Cost2} is identified, and the corresponding codec method (without reordering, reordering method A, reordering method B) is determined as the final codec method of the video unit. 4.3 Regarding how to reorder samples (eg, the third problem and related problems), the following method is proposed. a. A possible sample reordering method can refer to one or more of the following processes: a. The reordering process can be applied on a video unit basis. i. For example, the reordering process can be based on block / CU / PU / TU. ii. For example, the reordering process may not be tile / slice / picture based. b. Samples of a video unit may be transformed according to an M-parameter model (eg, M=2, 4, 6, or 8). c. Samples of a video unit can be reordered. d. Samples of video units can be rotated. e. The samples of the video unit can be transformed according to the affine model. f. The samples of the video unit can be transformed according to the linear model. g. The samples of the video unit can be transformed according to the projection model. h. The samples of the video unit can be flipped in the horizontal direction. i. The samples of the video unit can be flipped along the vertical direction. 4.4 Regarding motion vector adjustment for sample reordering (eg, the fourth problem and related problems), the following method is proposed. a. Assuming that a first motion vector is obtained for a sample reordering codec video unit (eg, current block) based on codec information of neighboring blocks, a second motion vector may be generated to refine / adjust the first motion vector. a. For example, a motion vector candidate for IBC merge mode based on the second motion vector may be obtained. b. For example, a motion vector prediction value for IBC AMVP mode may be obtained based on the second motion vector. c. For example, how to generate the second motion vector may be based on the prediction method of the current block (eg, whether the video unit is encoded and decoded via the MERGE mode or the AMVP mode). d. For example, based on the block size (such as block width and / or height) of the current block, a second motion vector may be generated. e. For example, based on a fixed / predetermined number (eg, 4 or 8, which may be the granularity of the spatial motion vector storage unit) the second motion vector may be generated. f. For example, based on a reordering method of the current block and the neighboring blocks (eg, a reordering method, such as no reordering, horizontal flipping, or vertical flipping), a second motion vector may be generated. i. In one example, assuming that the current block is undergoing IBC AMVP with horizontal flipping, the motion vectors of the horizontally flipped encoded neighboring blocks may be refined / adjusted for constructing the motion vector predictor list. 1. Additionally or alternatively, the motion vectors of vertically flipped and / or non-reordered coded neighbor blocks may not be refined / adjusted for constructing the motion vector predictor list. ii. In one example, assuming that the current block is undergoing IBC AMVP with vertical flipping, the motion vectors of the vertically flipped coded neighbor blocks may be refined / adjusted for constructing the motion vector predictor list. 1. Additionally or alternatively, the motion vectors of horizontally flipped and / or non-reordered coded neighbor blocks may not be refined / adjusted for constructing the motion vector predictor list. g. For example, a second motion vector may be generated based on the coding information of the neighboring blocks. h. For example, the neighboring block may be adjacent to the left side, lower left side, upper side, upper right side, or upper left side of the current block. i. For example, based on the prediction mode of the neighboring block (eg, whether it is coded by MODE_IBC) a second motion vector may be generated. j. For example, based on the block size (such as block width and / or height) of the neighboring block, a second motion vector may be generated. k. For example, based on a reordering method of neighboring blocks (eg, a reordering method, such as no reordering, horizontal flipping, or vertical flipping), a second motion vector may be generated. 1. For example, a second motion vector may be generated based on the position of the neighboring block relative to the current block (eg, adjacent to the left, lower left, above, upper right, or upper left of the current block). m. For example, a second motion vector may be generated based on the coordinates of the position of the current block or a neighboring block (such as a center point or an upper left point). n. For example, based on adding a shift factor to the first motion vector, a second motion vector may be generated. i. For example, the shift factor may have the same precision as the first motion vector. ii. For example, a shift factor based on the block size (such as block width and / or height) of the current block may be generated. iii. For example, a shift factor based on a fixed / predetermined number (such as 4 or 8 or 2, which may be the granularity of the spatial motion vector storage unit) may be generated. o. For example, the second motion vector may be different from the first motion vector. p. For example, in Fig.10 An example of adjusting the current motion vector (block vector) is shown in FIG. 1 , where W1 represents the width of the current block, W2 represents the width of the left neighboring block of the current block, leftMV represents the motion vector (block vector) of the left neighboring block, and curMV represents the motion vector (block vector) of the current block. Thus, for example, the left neighboring block is adjusted using Fig.10 The horizontal flip shown is encoded and decoded, instead of directly inheriting leftMV to curMV, the horizontal component of curMV can be calculated as curMVx=leftMVx-(W2< <precFactor)-(W1<<precFactor)。 i. For example, precFactor may be a value based on the precision difference between MV / BV precision and integer precision (such as 0 or 4 or 6). ii. For example, W2 may be equal to a value (eg, W2=4 or 2 or 8, which may be the granularity of the spatial motion vector storage unit). iii. In addition, the left neighboring block may be a previously coded block on the left side (adjacent or non-adjacent) of the current block. iv. In addition, the left neighboring block may be located below and to the left of the current block. q. For example, the current motion vector (block vector) adjustment example is Fig.11 As shown in , H1 represents the height of the current block, H2 represents the height of the upper neighboring block of the current block, aboveMV represents the motion vector (block vector) of the upper neighboring block, and curMV represents the motion vector (block vector) of the current block. Fig.11 As shown in the case of encoding and decoding the upper neighbor block by vertical flipping, instead of directly inheriting aboveMV to curMV, the vertical component of curMV can be calculated as curMVy=aboveMVy-(H2< <precFactor)-(H1<<precFactor)。 i. For example, precFactor may be based on a value of the precision difference between MV / BV precision and integer precision (such as 0 or 4 or 6). ii. For example, H2 may be equal to a value (such as H2=4 or 2 or 8, which may be the granularity of the spatial motion vector storage unit). iii. In addition, the upper neighbor block may be a previously coded block above (adjacent or non-adjacent) the current block. iv. In addition, the upper neighbor block can be located above and to the right of the current block. b. Assuming that a first motion vector is obtained for a sample reordering codec video unit (e.g., a current block) based on codec information of neighboring blocks, a second motion vector may be generated to refine / adjust the first motion vector. Whether to adjust / refine the first motion vector to the second motion vector may depend on whether the assumed second motion vector satisfies a specific rule. a. For example, if at least one rule is not satisfied, the hypothesized second motion vector may not be used. i. For example, the second motion vector may be discarded. ii. For example, both the first motion vector and the second motion vector may be discarded. iii. For example, the first motion vector may be used without adjustment / refinement. iv. For example, the second motion vector may be set equal to the first motion vector. b. For example, if all rules are satisfied, the hypothetical second motion vector may be used as the second motion vector. c. For example, a rule may include at least one of the following: i. The reference block pointed to by the assumed second motion vector is within the valid area (wherein the valid area may be a predefined previously encoded area). ii. The reference block pointed to by the assumed second motion vector is within the current picture. iii. The reference block pointed to by the assumed second motion vector is located in the same CTU row of the video unit. iv. The reference block pointed to by the assumed second motion vector is located in the same tile of the video unit. v. The reference block pointed to by the assumed second motion vector is located in the same CTU or the left CTU of the video unit. vi. The reference block pointed to by the assumed second motion vector is within the already coded area. c. For example, two examples of current motion vector (block vector) adjustment are Fig.12 and Fig.13 , where (x1, y1) and (x2, y2) represent the coordinates of the center points of the neighboring block and the current block, respectively, (W1, H1) and (W2, H2) represent the width and height of the left neighboring block and the current block, BV represents the motion vector (block vector) of the left neighboring block, BV' represents the motion vector (block vector) of the current block, and (x'1, y'1) and (x'2, y'2) represent the coordinates of the upper left corner points of the neighboring block and the current block, respectively a. For example, (x1, y1) and (x2, y2) can be derived as 1. x1=x'1+W1 / 2+sx and y1=y'1+H1 / 2+sy. 2. x2=x'2+W2 / 2+sx and y2=y'2+W1 / 2+sy. Where sx and sy are offsets, such as 0, 1, -1. b. The MV (BV) adjustment / refinement method may depend on how the sample reordering is performed. i. In one example, for horizontal flipping, BV' x =2(x1-x2)+BV x and / or BV' y =BV y ,like Fig.12 shown. ii. In one example, for vertical flip, BV' y =2(y1-y2)+BV y and / or BV' x =BVx ,like Fig.13 shown. c. In addition, BV can have integer precision. d. Additionally, BV can indicate the fractional precision domain MV, so, i. In one example, for horizontal flipping, MV'x=((2(x1-x2))< <precFactor)+MVx。 ii. In one example, for vertical flip, MV'y=((2(y1-y2))< <precFactor)+MVy。 Here, precFactor may be a value based on the precision difference between MV precision and integer precision (eg, 0, 4, or 6). d. In one example, the neighboring blocks disclosed herein may be adjacent to or not adjacent to the current block. e. In one example, the information of neighbor blocks disclosed herein may be stored in a table (such as a history-based motion vector prediction, HMVP table), and the information may be extracted from the table to perform MV adjustment. a. For example, this information may include: i. Motion information (MV and / or BV and / or reference picture and / or intra prediction). ii. Coordinates of the center point. iii. The coordinates of the upper left corner. iv. Width and / or Height. v. Sample reordering type (such as no reordering, vertical flip, and / or horizontal flip). f. The refined / adjusted MV / BV can be clipped to within the range. General 4.5 Whether and / or how to apply the above disclosed method may be signaled at the sequence level / picture group level / picture level / slice level / tile group level, for example in the sequence header / picture header / SPS / VPS / DPS / DCI / PPS / PPS / slice header / tile group header. 4.6 Whether and / or how the above disclosed methods can be applied in PB / TB / CB / PU / TU / CU / VPDU / CTU / CTU A row / slice / tile / sub-picture / other kind of area containing more than one sample or pixel is signaled. 4.7 Whether and / or how to apply the above disclosed method may depend on codec information, such as block size, color format, single / dual tree partitioning, color component, slice / picture type.
[0071] More details of embodiments of the present disclosure related to sample adjustment will be described below. The embodiments of the present disclosure should be considered as examples to explain general concepts and should not be interpreted in a narrow sense. In addition, these embodiments can be applied individually 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] Fig.14 1400 is a flowchart of a method 1400 for video processing according to some embodiments of the present disclosure. The method 1400 may be implemented during a conversion between a current video block of a video and a bitstream of the video. Fig.14 As shown, method 1400 starts at 1402, where 1402 is to obtain a first MV for a target video block. The target video block is determined by applying a sample adjustment process to a plurality of samples of a current video block.
[0074] In some embodiments, the plurality of samples may include reconstructed samples of the current video block, original samples of the current video block, predicted samples of the current video block, etc. Additionally or alternatively, the sample adjustment process may include reordering the plurality of samples, flipping the plurality of samples, shifting the plurality of samples, rotating the plurality of samples, transforming the plurality of samples, etc. In one example, the plurality of samples may be transformed according to an M parameter model, where M is an integer, such as 2, 4, 6, or 8. Alternatively, the plurality of samples may be transformed according to an affine model, a linear model, a projection model, etc. In another instance, the plurality of samples may be flipped along a horizontal direction or a vertical direction.
[0075] As used herein, information about how to adjust samples of a video block in a sample adjustment process may also be referred to as an adjustment method, a scheme for the adjustment process, or a type of the adjustment process. In addition, given that a target video block may be considered an intermediate result of a conversion between a current video block and a bitstream, an element for the target video block (such as an MV or a motion candidate list) may also be considered an element for the current video block.
[0076] In some embodiments, a first MV may be determined based on the codec information of a neighboring video block of the current video block. As an example and not limitation, the first MV may be determined as an MV for a neighboring video block. As used herein, a neighboring video block of the current video block may be a block adjacent to the current video block or a block not adjacent to the current video block. In addition, the MV for the video block may include a block vector (BV) for the video block.
[0077] At 1404, based on the second MV generated for the target video block, the first MV may be adjusted. In some embodiments, the second MV may be the same as the first MV. Alternatively, the second MV may be different from the first MV. The adjustment of the first MV and the generation of the second MV will be described in detail below. It should be understood that in some cases, the second MV may be directly used as the adjusted first MV. In some embodiments, the adjusted first MV may be clipped to be within the range.
[0078] At 1406, a conversion is performed based on the motion candidate list. In one example, the conversion may include encoding the current video block into a bitstream. Alternatively or additionally, the conversion may include decoding the current video block from the bitstream. It should be understood that the above illustrations and / or examples are described for illustrative purposes only. The scope of the present disclosure is not limited in this regard.
[0079] In view of the above, the MV of the video block whose sample is adjusted based on the adjustment process is adjusted using another MV. Compared with the traditional scheme, the proposed method can advantageously better support sample adjustment, thereby achieving higher coding gain and improving coding efficiency.
[0080] In some embodiments, the adjusted first MV may be a motion vector candidate for an intra-block copy (IBC) merge mode for encoding and decoding the target video block. Alternatively, the adjusted first MV may be a motion vector predictor for an IBC advanced motion vector prediction (AMVP) mode for encoding and decoding the target video block.
[0081] In some embodiments, the information on how to generate the second MV may depend on the prediction scheme used to encode the target video block, for example, whether the target video block is encoded using merge mode or AMVP mode.
[0082] In some embodiments, the second MV may be generated based on the size of the target video block. For example, the second MV may be generated based on the height of the target video block and / or the width of the target video block. In some alternative or additional embodiments, the second MV may be generated based on a predefined number. In one example, the predefined number may be the granularity of a spatial motion vector storage unit (such as 4 or 8). In other embodiments, the second MV may be generated based on at least one of: information about whether multiple samples of the current video block are adjusted, or information about how to adjust multiple samples of the current video block.
[0083] In some embodiments, multiple samples may be flipped horizontally. In this case, the current video block may also be described as being encoded and decoded with horizontal flipping. The target video block may be encoded and decoded using IBC AMVP. The motion vectors of the neighboring video blocks for the current video block may be adjusted for constructing a list of motion vector predictors for the target video block, and the neighboring video blocks are encoded and decoded using horizontal flipping. Additionally or alternatively, the motion vectors of the neighboring video blocks for the current video block may not be adjusted for constructing a list of motion vector predictors for the target video block, and the neighboring video blocks are encoded and decoded using vertical flipping or are encoded and decoded without using a sample adjustment process.
[0084] In some embodiments, multiple samples may be flipped vertically. In this case, the current video block may also be described as being encoded and decoded using vertical flipping. The target video block may be encoded and decoded using IBC AMVP. The motion vectors of neighboring video blocks for the current video block may be adjusted for constructing a list of motion vector predictors for the target video block, and the neighboring video blocks are encoded and decoded using vertical flipping. Additionally or alternatively, the motion vectors of neighboring video blocks for the current video block may not be adjusted for constructing a list of motion vector predictors for the target video block, and the neighboring video blocks are encoded and decoded using horizontal flipping or are encoded and decoded without a sample adjustment process.
[0085] In some embodiments, the second MV may be generated based on the encoding and decoding information of the neighboring video blocks of the current video block. In some other embodiments, the second MV may be generated based on at least one of the following: a prediction scheme for encoding and decoding the neighboring video blocks of the current video block, the size of the neighboring video blocks, the height of the neighboring video blocks, the width of the neighboring video blocks, information on whether the samples of the neighboring video blocks are adjusted, information on how to adjust the samples of the neighboring video blocks, the position of the neighboring video blocks relative to the current video block, the coordinates of the position of the current video block, the coordinates of the position of the neighboring video blocks, the coordinates of the center point of the current video block, the coordinates of the center point of the neighboring video blocks, the coordinates of the upper left point of the current video block, or the coordinates of the upper left corner point of the neighboring video blocks. It should be understood that the above examples are described for description purposes only. The scope of the present disclosure is not limited in this regard.
[0086] In some embodiments, the neighboring video blocks may include a left neighboring video block of the current video block, a lower left neighboring video block of the current video block, an upper neighboring video block of the current video block, an upper right neighboring video block of the current video block, an upper left neighboring video block of the current video block, and the like.
[0087] In some embodiments, the second MV may be generated by adding an offset to the first MV. For example, the precision of the offset may be the same as the precision of the first MV. In one example, the offset may be generated based on the size of the current video block (such as the height of the current video block and / or the width of the current video block). In another example, the offset may be generated based on a predefined number. For example, the predefined number may be the granularity of the spatial motion vector storage unit, such as 2, 4, or 8.
[0088] In some embodiments, at 1404, if it is determined that the second MV satisfies a set of rules, the first MV may be adjusted using the second MV. In one example, if the second MV does not satisfy at least one of the set of rules, the conversion may be performed based on the first MV. In another example, if the second MV does not satisfy at least one of the set of rules, the second MV may not be used, or both the first MV and the second MV may not be used and the MV for the target video block may be obtained in any other suitable manner. In yet another example, if the second MV does not satisfy at least one of the set of rules, the second MV may be set equal to the first MV.
[0089] In some embodiments, a set of rules may include at least one of the following: (1) the reference video block indicated by the second MV is located in the valid area; (2) the reference video block is located in a picture of the video and the current video block is included in the picture, in other words, the reference video block pointed to by the second MV is in the current picture; (3) the reference video block is located in a codec tree unit (CTU) row of the video, and the current video block is located in the same CTU row; (4) the reference video block is located in a tile of the video and the current video block is included in the same tile; (5) the reference video block is located in a CTU of the video, and the current video block is included in the same CTU; (6) the reference video block is located in a CTU of the video, and the CTU is located to the left of the CTU in which the current video block is included; or (7) the reference video block is located in an area of the video that is encoded and decoded before the current video block. In some embodiments, the above-mentioned valid area may include a predefined area of the video that is encoded and decoded before the current video block. It should be understood that the above examples are described for illustrative purposes only. The scope of the present disclosure is not limited in this regard.
[0090] In some embodiments, the first MV may be an MV for a left neighboring video block of the current video block, and the second MV may be generated based on the width of the current video block and the width of the left neighboring video block. Fig.10 , in the case where the left neighboring video block of the current video block is encoded and decoded using horizontal flipping, the horizontal component of the adjusted first MV may be determined as follows: curMVx=leftMVx-(W2< <precFactor)-(W1<<precFactor)(1) Wherein curMVx represents the horizontal component of the adjusted first MV, leftMVx represents the horizontal component of the MV for the left neighboring video block, W1 represents the width of the current video block, W2 represents the width of the left neighboring video block, and precFactor represents a predetermined value (e.g., 0, 4, or 6) or a value that depends on the precision difference between the MV precision and the integer precision.
[0091] In some embodiments, the width of the left neighbor video block may be equal to the granularity of the spatial motion vector storage unit (e.g., 2, 4, or 8). The left neighbor video block may include a video block that is encoded and decoded before the current video block and is located to the left of the current video block. In one example, the left neighbor video block may be located below and to the left of the current video block.
[0092] In some embodiments, the first MV may be an MV for an upper neighboring video block of the current video block, and the second MV may be generated based on the height of the current video block and the height of the left neighboring video block. Fig.11 , in the case where the upper neighboring video block of the current video block is encoded and decoded using vertical flipping, the vertical component of the adjusted first MV may be determined as follows: curMVy=aboveMVy-(H2< <precFactor)-(H1<<precFactor)(2) Wherein curMVy represents the adjusted vertical component of the first MV, aboveMVy represents the vertical component of the MV for the upper neighboring video block, H1 represents the height of the current video block, H2 represents the height of the upper neighboring video block, and precFactor represents a predetermined value (e.g., 0, 4, or 6) or a value that depends on the precision difference between the MV precision and the integer precision.
[0093] In some embodiments, the height of the upper neighbor video block may be equal to the granularity of the spatial motion vector storage unit, such as 2, 4 or 8. The upper neighbor video block may include a video block that may be encoded and decoded before the current video block and is located above the current video block. In one example, the upper neighbor video block is located above and to the right of the current video block.
[0094] In some embodiments, the adjusted first MV may be determined based on at least one of: coordinates of a center point of the current video block, coordinates of a center point of a neighboring video block of the current video block, coordinates of an upper left corner point of the current video block, and coordinates of an upper left corner point of a neighboring video block.
[0095] In some embodiments, the information about how to adjust the first MV may depend on the information about how to adjust the multiple samples of the current video block. Fig.12 , in the case where multiple samples of the current video block are horizontally flipped, the horizontal component of the adjusted first MV may be determined as follows: BV' x =2(x1-x2)+BV x (3) Among them, BV' x represents the horizontal component of the adjusted first MV, BV x represents the horizontal component of the MV of the left neighboring video block of the current video block, x1 represents the abscissa of the center point of the left neighboring video block, and x2 represents the abscissa of the center point of the current video block.
[0096] Additionally or alternatively, the vertical component of the adjusted first MV may be equal to the vertical component of the MV for the left neighboring video block of the current video block.
[0097] In some embodiments, reference Fig.13, in the case where multiple samples of the current video block are vertically flipped, the vertical component of the adjusted first MV may be determined as follows: BV' y =2(y1-y2)+BV y (4) Among them, BV' y represents the vertical component of the adjusted first MV, BV y represents the vertical component of the MV of the left neighboring video block of the current video block, y1 represents the ordinate of the center point of the left neighboring video block, and y2 represents the ordinate of the center point of the current video block.
[0098] Additionally or alternatively, the horizontal component of the adjusted first MV may be equal to the horizontal component of the MV for the left neighboring video block of the current video block.
[0099] In some embodiments, the MV may have integer precision. Alternatively, the MV may have fractional precision.
[0100] In some embodiments, where multiple samples of the current video block are horizontally flipped, the horizontal component of the adjusted first MV may be determined as follows: MV' x =((2(x1-x2))< <precFactor)+MV x (5) Among them, MV' x represents the horizontal component of the adjusted first MV, MV x represents the horizontal component of the MV of the left neighboring video block of the current video block, x1 represents the abscissa of the center point of the left neighboring video block, x2 represents the abscissa of the center point of the current video block, and precFactor represents a predetermined value (e.g., 0, 4, or 6) or a value that depends on the precision difference between the MV precision and the integer precision.
[0101] In some embodiments, where multiple samples of the current video block are flipped vertically, the vertical component of the adjusted first MV may be determined as follows: MV' y =((2(y1-y2))< <precFactor)+MV y (6) Among them, MV' y represents the vertical component of the adjusted first MV, MV y represents the vertical component of the MV of the left neighboring video block of the current video block, y1 represents the vertical coordinate of the center point of the left neighboring video block, y2 represents the vertical coordinate of the center point of the current video block, and precFactor represents a predetermined value or a value depending on the precision difference between the MV precision and the integer precision.
[0102] In some embodiments, the horizontal coordinate of the center point of the left neighboring video block of the current video block may be determined based on the horizontal coordinate of the upper left corner point of the left neighboring video block and the width of the left neighboring video block. As an example and not a limitation, the horizontal coordinate of the center point of the left neighboring video block may be determined as follows: x1=x'1+W1 / 2+sx, where x1 represents the horizontal coordinate of the center point of the left neighboring video block, x'1 represents the horizontal coordinate of the upper left corner point of the left neighboring video block, W1 represents the width of the left neighboring video block, and sx represents a first offset, such as 0, 1, or -1.
[0103] In some embodiments, the ordinate of the center point of the left neighboring video block of the current video block may be determined based on the ordinate of the upper left corner point of the left neighboring video block and the height of the left neighboring video block. As an example and not a limitation, the ordinate of the center point of the left neighboring video block may be determined as follows: y1=y'1+H1 / 2+sy, where y1 represents the ordinate of the center point of the left neighboring video block, y'1 represents the ordinate of the upper left corner point of the left neighboring video block, H1 represents the height of the left neighboring video block, and sy represents a second offset, such as 0, 1, or -1.
[0104] In some embodiments, the horizontal coordinate of the center point of the current video block can be determined based on the horizontal coordinate of the upper left corner point of the current video block and the width of the current video block. As an example and not limitation, the horizontal coordinate of the center point of the current video block can be determined as follows: x2=x'2+W2 / 2+sx, where x2 represents the horizontal coordinate of the center point of the current video block, x'2 represents the horizontal coordinate of the upper left corner point of the current video block, W2 represents the width of the current video block, and sx represents a first offset, such as 0, 1 or -1.
[0105] In some embodiments, the ordinate of the center point of the current video block may be determined based on the ordinate of the upper left corner point of the current video block and the height of the current video block. As an example and not limitation, the ordinate of the center point of the current video block may be determined as follows: y2=y'2+H2 / 2+sy, where y2 represents the ordinate of the center point of the current video block, y'2 represents the ordinate of the upper left corner point of the current video block, H2 represents the height of the current video block, and sy represents a second offset, such as 0, 1, or -1.
[0106] It should be understood that the above equations are described for illustrative purposes only. The relevant elements may be determined in any other suitable manner. The scope of the present disclosure is not limited in this regard.
[0107] In some embodiments, information of neighboring video blocks of the current video block may be stored in a table. For example, the table may be a history-based motion vector prediction (HMVP) table. Additionally, the stored information may be obtained from the table and used to adjust the first MV.
[0108] In some embodiments, the information of the neighboring video block may include at least one of the following: motion information of the neighboring video block (such as MV or reference picture), coordinates of the center point of the neighboring video block, coordinates of the upper left corner point of the neighboring video block, the width of the neighboring video block, the height of the neighboring video block, information about whether the samples of the neighboring video block are adjusted, information about how to adjust the samples of the neighboring video block, etc.
[0109] In some embodiments, a motion candidate list may be generated for another video block of the video that is different from the current video block. The motion candidates in the motion candidate list may be from a block encoded and decoded using a sample adjustment process or a block encoded and decoded without using a sample adjustment process. For example, the motion candidate list may be an IBC merge candidate list.
[0110] In some embodiments, information about whether a first motion candidate from a first block associated with another video block is encoded and decoded using a sample adjustment process may depend on information about whether the first block is encoded and decoded using a sample adjustment process. For example, if the first block is encoded and decoded using a sample adjustment process, the first motion candidate may be encoded and decoded using a sample adjustment process. If the first block is not encoded and decoded using a sample adjustment process, the first motion candidate may not be encoded and decoded using a sample adjustment process. For example, the first block may be a spatial domain block or a temporal domain block of another video block.
[0111] In some embodiments, the information about whether the second motion candidate from the entry in the history table for another video block is encoded using the sample adjustment process may depend on the information about whether the second block corresponding to the entry is encoded using the sample adjustment process. For example, if the second block is encoded using the sample adjustment process, the second motion candidate may be encoded using the sample adjustment process. If the second block is not encoded using the sample adjustment process, the second motion candidate may not be encoded using the sample adjustment process.
[0112] In some embodiments, the information about whether another video block is encoded and decoded using a sample adjustment process may depend on information about whether a target motion candidate for encoding and decoding another video block is encoded and decoded using a sample adjustment process. The target motion candidate is selected from a motion candidate list. For example, if the target motion candidate is encoded and decoded using a sample adjustment process, the other video block may be encoded and decoded using a sample adjustment process. If the target motion candidate is not encoded and decoded using a sample adjustment process, the other video block may not be encoded and decoded using a sample adjustment process.
[0113] 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 first MV for a target video block is obtained. The target video block is determined by applying a sample adjustment process to multiple samples of a current video block of the video. The first MV is adjusted based on a second MV generated for the target video block. In addition, a bitstream is generated based on the adjusted first MV.
[0114] According to some other embodiments of the present disclosure, a method for storing a bitstream of a video is provided. In the method, a first MV for a target video block is obtained. The target video block is determined by applying a sample adjustment process to multiple samples of a current video block of the video. The first MV is adjusted based on a second MV generated for the target video block. In addition, a bitstream is generated based on the adjusted first MV, and the bitstream is stored in a non-transitory computer-readable recording medium.
[0115] Embodiments of the present disclosure may be described according to the following clauses, features of which may be combined in any reasonable way.
[0116] Clause 1. A method for video processing, comprising: for conversion between a current video block of a video and a bitstream of the video, obtaining a first motion vector (MV) for a target video block, wherein the target video block is determined by applying a sample adjustment process to multiple samples of the current video block; adjusting the first MV based on a second MV generated for the target video block; and performing the conversion based on the adjusted first MV.
[0117] Clause 2. A method according to clause 1, wherein the adjusted first MV is one of: a motion vector candidate for an intra block copy (IBC) merge mode for encoding and decoding the target video block; or a motion vector prediction value for an IBC advanced motion vector prediction (AMVP) mode for encoding and decoding the target video block.
[0118] Clause 3. The method of any one of clauses 1 to 2, wherein the information on how to generate the second MV depends on a prediction scheme used to encode the target video block.
[0119] Clause 4. The method of any of clauses 1 to 3, wherein the second MV is generated based on a size of the target video block.
[0120] Clause 5. The method of any one of clauses 1 to 3, wherein the second MV is generated based on at least one of: a height of the target video block; or a width of the target video block.
[0121] Clause 6. The method of any one of clauses 1 to 5, wherein the second MV is generated based on a predefined number.
[0122] Clause 7. The method of clause 6, wherein the predefined number is a granularity of a spatial motion vector storage unit.
[0123] Clause 8. A method according to any one of clauses 1 to 7, wherein the second MV is generated based on at least one of the following: information about whether the multiple samples of the current video block are adjusted; or information about how to adjust the multiple samples of the current video block.
[0124] Clause 9. A method according to any one of clauses 1 to 8, wherein the multiple samples are horizontally flipped, the target video block is encoded and decoded via IBC AMVP, the motion vectors of neighboring video blocks for the current video block are adjusted for constructing a list of motion vector prediction values for the target video block, and the neighboring video blocks are encoded and decoded via horizontal flipping.
[0125] Clause 10. A method according to any one of clauses 1 to 8, wherein the multiple samples are horizontally flipped, the target video block is encoded and decoded via IBC AMVP, the motion vectors of the neighboring video blocks for the current video block are not adjusted for constructing a list of motion vector prediction values for the target video block, and the neighboring video blocks are encoded and decoded via vertical flipping or are encoded and decoded without the sample adjustment process.
[0126] Clause 11. A method according to any one of clauses 1 to 8, wherein the multiple samples are vertically flipped, the target video block is encoded and decoded via IBC AMVP, the motion vectors of neighboring video blocks for the current video block are adjusted for constructing a list of motion vector prediction values for the target video block, and the neighboring video blocks are encoded and decoded via vertical flipping.
[0127] Clause 12. A method according to any one of clauses 1 to 8, wherein the multiple samples are vertically flipped, the target video block is encoded and decoded via IBC AMVP, and the motion vectors of the neighboring video blocks for the current video block are not adjusted for constructing a list of motion vector prediction values for the target video block, and the neighboring video blocks are encoded and decoded via horizontal flipping or are encoded and decoded without the sample adjustment process.
[0128] Clause 13. The method of any one of clauses 1 to 12, wherein the second MV is generated based on codec information of neighboring video blocks of the current video block.
[0129] Clause 14. A method according to any one of clauses 1 to 13, wherein the second MV is generated based on at least one of the following: a prediction scheme for encoding and decoding a neighboring video block of the current video block, a size of the neighboring video block, a height of the neighboring video block, a width of the neighboring video block, information about whether samples of the neighboring video block are adjusted, information about how to adjust the samples of the neighboring video block, a position of the neighboring video block relative to the current video block, coordinates of the position of the current video block, coordinates of the position of the neighboring video block, coordinates of the center point of the current video block, coordinates of the center point of the neighboring video block, coordinates of the upper left corner point of the current video block, or coordinates of the upper left corner point of the neighboring video block.
[0130] Clause 15. A method according to any one of Clauses 13 to 14, wherein the neighboring video blocks include at least one of the following: a left neighboring video block of the current video block, a lower left neighboring video block of the current video block, an upper neighboring video block of the current video block, an upper right neighboring video block of the current video block, or an upper left neighboring video block of the current video block.
[0131] Clause 16. The method of any one of clauses 1 to 15, wherein the second MV is generated by adding an offset to the first MV.
[0132] Clause 17. The method of clause 16, wherein the precision of the offset is the same as the precision of the first MV.
[0133] Clause 18. The method of any one of clauses 16 to 17, wherein the offset is generated based on a size of the current video block.
[0134] Clause 19. The method of any one of clauses 16 to 17, wherein the offset is generated based on at least one of: a height of the current video block, or a width of the current video block.
[0135] Clause 20. The method of any one of clauses 16 to 19, wherein the offset is generated based on a predefined number.
[0136] Clause 21. The method of clause 20, wherein the predefined number is a granularity of a spatial motion vector storage unit.
[0137] Clause 22. The method of any one of clauses 1 to 21, wherein the second MV is different from the first MV.
[0138] Clause 23. The method of any one of clauses 1 to 22, wherein adjusting the first MV comprises adjusting the first MV using the second MV if it is determined that the second MV satisfies a set of rules.
[0139] Clause 24. The method of any one of clauses 1 to 22, wherein the converting is performed based on the first MV if the second MV does not satisfy at least one of a set of rules.
[0140] Clause 25. The method of any one of clauses 1 to 22, wherein the second MV is not used if the second MV does not satisfy at least one of a set of rules.
[0141] Clause 26. The method of any one of clauses 1 to 22, wherein the first MV and the second MV are not used if the second MV does not satisfy at least one of a set of rules.
[0142] Clause 27. The method of any one of clauses 1 to 22, wherein the second MV is set equal to the first MV if the second MV does not satisfy at least one of a set of rules.
[0143] Clause 28. A method according to any one of clauses 23 to 27, wherein the set of rules includes at least one of the following: the reference video block indicated by the second MV is located in a valid area; the reference video block is located in a picture of the video, and the current video block is included in the picture; the reference video block is located in a codec tree unit (CTU) row of the video, and the current video block is located in the same CTU row; the reference video block is located in a tile of the video, and the current video block is included in the same tile; the reference video block is located in a CTU of the video, and the current video block is included in the same CTU; the reference video block is located in a CTU of the video, and the CTU is located to the left of the CTU in which the current video block is included; or the reference video block is located in an area of the video that is encoded and decoded before the current video block.
[0144] Clause 29. The method of clause 28, wherein the active region comprises a predefined region of the video that is encoded prior to the current video block.
[0145] Clause 30. The method according to any one of Clauses 1 to 29, wherein the first MV is an MV for a left neighboring video block of the current video block, and the second MV is generated based on the width of the current video block and the width of the left neighboring video block.
[0146] Clause 31. The method according to any one of Clauses 1 to 30, wherein the left neighboring video block of the current video block is encoded and decoded with horizontal flipping, and the horizontal component of the adjusted first MV is determined as follows: curMVx = leftMVx - (W2 << precFactor) - (W1 << precFactor), where curMVx represents the horizontal component of the adjusted first MV, leftMVx represents the horizontal component of the MV for the left neighboring video block, W1 represents the width of the current video block, W2 represents the width of the left neighboring video block, and precFactor represents a predetermined value or a value depending on the precision difference between the MV precision and the integer precision.
[0147] Clause 32. The method according to Clause 31, wherein the width of the left neighboring video block is equal to the granularity of the spatial motion vector storage unit.
[0148] Clause 33. The method according to any one of Clauses 30 to 32, wherein the left neighboring video block includes a video block that is encoded and decoded before the current video block and is located on the left side of the current video block.
[0149] Clause 34. The method according to any one of Clauses 30 to 33, wherein the left neighboring video block is located at the lower left of the current video block.
[0150] Clause 35. The method according to any one of Clauses 1 to 29, wherein the first MV is an MV for an upper neighboring video block of the current video block, and the second MV is generated based on the height of the current video block and the height of the left neighboring video block.
[0151] Clause 36. For the method according to any one of Clauses 1 to 29 and 35, wherein the upper neighboring video block of the current video block is coded and decoded with vertical flipping, and the vertical component of the adjusted first MV is determined as follows: curMVy = aboveMVy - (H2 << precFactor) - (H1 << precFactor), where curMVy represents the vertical component of the adjusted first MV, aboveMVy represents the vertical component of the MV for the upper neighboring video block, H1 represents the height of the current video block, H2 represents the height of the upper neighboring video block, and precFactor represents a predetermined value or a value depending on the precision difference between the MV precision and the integer precision.
[0152] Clause 37. For the method according to Clause 36, wherein the height of the upper neighboring video block is equal to the granularity of the spatial motion vector storage unit.
[0153] Clause 38. For the method according to any one of Clauses 35 to 37, wherein the upper neighboring video block includes a video block that is coded and decoded before the current video block and is located above the current video block.
[0154] Clause 39. For the method according to any one of Clauses 35 to 38, wherein the upper neighboring video block is located at the upper right of the current video block.
[0155] Clause 40. For the method according to any one of Clauses 1 to 29, wherein the adjusted first MV is determined based on at least one of the following: the coordinates of the center point of the current video block, the coordinates of the center point of the neighboring video block of the current video block, the coordinates of the upper left corner point of the current video block, or the coordinates of the upper left corner point of the neighboring video block.
[0156] Clause 41. For the method according to any one of Clauses 1 to 40, wherein the information on how to adjust the first MV depends on the information on how to adjust the multiple samples of the current video block.
[0157] Clause 42. For the method according to any one of Clauses 40 to 41, wherein the multiple samples are horizontally flipped, and the horizontal component of the adjusted first MV is determined as follows: BV’x = 2(x1 - x2) + BVx, where BV’x represents the horizontal component of the adjusted first MV, BVx represents the horizontal component of the MV for the left neighboring video block of the current video block, x1 represents the abscissa of the center point of the left neighboring video block, and x2 represents the abscissa of the center point of the current video block.
[0158] Clause 43. The method according to any one of Clauses 40 to 42, wherein the plurality of samples are horizontally flipped, and the vertical component of the adjusted first MV is equal to the vertical component of the MV for the left neighboring video block of the current video block.
[0159] Clause 44. The method according to any one of Clauses 40 to 41, wherein the plurality of samples are vertically flipped, and the vertical component of the adjusted first MV is determined as follows: BV’y = 2(y1 - y2) + BVy, where BV’y represents the vertical component of the adjusted first MV, BVy represents the vertical component of the MV for the left neighboring video block of the current video block, y1 represents the ordinate of the center point of the left neighboring video block, and y2 represents the ordinate of the center point of the current video block.
[0160] Clause 45. The method according to any one of Clauses 40 to 41 and 44, wherein the plurality of samples are vertically flipped, and the horizontal component of the adjusted first MV is equal to the horizontal component of the MV for the left neighboring video block of the current video block.
[0161] Clause 46. The method according to any one of Clauses 40 to 45, wherein the MV has integer precision.
[0162] Clause 47. The method according to any one of Clauses 40 to 41, wherein the MV has fractional precision.
[0163] Clause 48. The method according to Clause 47, wherein the plurality of samples are horizontally flipped, and the horizontal component of the adjusted first MV is determined as follows: MV’x = ((2(x1 - x2)) << precFactor) + MVx, where MV’x represents the horizontal component of the adjusted first MV, MVx represents the horizontal component of the MV for the left neighboring video block of the current video block, x1 represents the abscissa of the center point of the left neighboring video block, x2 represents the abscissa of the center point of the current video block, and precFactor represents a predetermined value or a value depending on the precision difference between the MV precision and the integer precision.
[0164] Clause 49. The method according to Clause 47, wherein the plurality of samples are vertically flipped, and the vertical component of the adjusted first MV is determined as follows: MV’y = ((2(y1 - y2)) << precFactor) + MVy, where MV’y represents the vertical component of the adjusted first MV, MVy represents the vertical component of the MV for the left neighboring video block of the current video block, y1 represents the ordinate of the center point of the left neighboring video block, y2 represents the ordinate of the center point of the current video block, and precFactor represents a predetermined value or a value depending on the precision difference between the MV precision and the integer precision.
[0165] Clause 50. The method according to any one of Clauses 40 to 49, wherein the abscissa of the center point of the left neighboring video block of the current video block is determined based on the abscissa of the upper left corner point of the left neighboring video block and the width of the left neighboring video block.
[0166] Clause 51. The method according to Clause 50, wherein the abscissa of the center point of the left neighboring video block is determined as follows: x1 = x’1 + W1 / 2 + sx, where x1 represents the abscissa of the center point of the left neighboring video block, x'1 represents the abscissa of the upper left corner point of the left neighboring video block, W1 represents the width of the left neighboring video block, and sx represents a first offset.
[0167] Clause 52. The method according to any one of Clauses 40 to 51, wherein the ordinate of the center point of the left neighboring video block of the current video block is determined based on the ordinate of the upper left corner point of the left neighboring video block and the height of the left neighboring video block.
[0168] Clause 53. The method according to Clause 52, wherein the ordinate of the center point of the left neighboring video block is determined as follows: y1 = y’1 + H1 / 2 + sy, where y1 represents the ordinate of the center point of the left neighboring video block, y'1 represents the ordinate of the upper left corner point of the left neighboring video block, H1 represents the height of the left neighboring video block, and sy represents a second offset.
[0169] Clause 54. The method according to any one of Clauses 40 to 53, wherein the abscissa of the center point of the current video block is determined based on the abscissa of the upper left corner point of the current video block and the width of the current video block.
[0170] Clause 55. A method according to clause 54, wherein the horizontal coordinate of the center point of the current video block is determined as follows: x2=x'2+W2 / 2+sx, wherein x2 represents the horizontal coordinate of the center point of the current video block, x'2 represents the horizontal coordinate of the upper left corner point of the current video block, W2 represents the width of the current video block, and sx represents a first offset.
[0171] Clause 56. The method of any one of clauses 40 to 55, wherein the vertical coordinate of the center point of the current video block is determined based on the vertical coordinate of the upper left corner point of the current video block and the height of the current video block.
[0172] Clause 57. A method according to Clause 56, wherein the vertical coordinate of the center point of the current video block is determined as follows: y2=y'2+H2 / 2+sy, wherein y2 represents the vertical coordinate of the center point of the current video block, y'2 represents the vertical coordinate of the upper left corner point of the current video block, H2 represents the height of the current video block, and sy represents a second offset.
[0173] Clause 58. The method of any one of clauses 1 to 57, wherein information of neighboring video blocks of the current video block is stored in a table.
[0174] Clause 59. The method of clause 58, wherein the table comprises a history-based motion vector prediction (HMVP) table.
[0175] Clause 60. The method of any one of clauses 58 to 59, wherein the stored information is obtained from the table and used to adjust the first MV.
[0176] Clause 61. A method according to any one of clauses 58 to 60, wherein the information of the neighboring video block includes at least one of the following: motion information of the neighboring video block, coordinates of a center point of the neighboring video block, coordinates of an upper left corner point of the neighboring video block, a width of the neighboring video block, a height of the neighboring video block, information about whether samples of the neighboring video block are adjusted, or information about how to adjust the samples of the neighboring video block.
[0177] Clause 62. The method of any one of clauses 1 to 61, wherein the adjusted first MV is clipped to within a range.
[0178] Clause 63. The method of any one of clauses 1 to 62, wherein the first MV is determined based on codec information of neighboring video blocks of the current video block.
[0179] Clause 64. A method according to any one of clauses 1 to 63, wherein the sample adjustment process includes at least one of the following: reordering the multiple samples of the current video block, flipping the multiple samples, shifting the multiple samples, rotating the multiple samples, or transforming the multiple samples.
[0180] Clause 65. The method of any one of clauses 1 to 64, wherein the plurality of samples comprises one of: reconstructed samples of the current video block, original samples of the current video block, or predicted samples of the current video block.
[0181] Clause 66. The method of any one of clauses 9 to 65, wherein the neighboring video blocks of the current video block are adjacent to or non-adjacent to the current video block.
[0182] Clause 67. The method of any of clauses 1 to 66, wherein the MV for the target video block comprises a block vector (BV) for the target video block.
[0183] Clause 68. A method according to any one of clauses 1 to 67, wherein a motion candidate list is generated for another video block of the video that is different from the current video block, and the motion candidates in the motion candidate list are from blocks encoded and decoded by the sample adjustment process or blocks not encoded and decoded by the sample adjustment process.
[0184] Clause 69. The method of clause 68, wherein the motion candidate list is an IBC merge candidate list.
[0185] Clause 70. A method according to any one of clauses 68 to 69, wherein information about whether a first motion candidate from a first block associated with the other video block is encoded and decoded by the sample adjustment process depends on information about whether the first block is encoded and decoded by the sample adjustment process.
[0186] Clause 71. A method according to clause 70, wherein if the first block is encoded and decoded by the sample adjustment process, the first motion candidate is encoded and decoded by the sample adjustment process, and if the first block is not encoded and decoded by the sample adjustment process, the first motion candidate is not encoded and decoded by the sample adjustment process.
[0187] Clause 72. The method of any one of clauses 70 to 71, wherein the first block is a spatial domain block or a temporal domain block of the other video block.
[0188] Clause 73. A method according to any one of clauses 68 to 72, wherein information about whether a second motion candidate from an entry in a history table for the other video block has been encoded and decoded by the sample adjustment process depends on information about whether a second block corresponding to the entry has been encoded and decoded by the sample adjustment process.
[0189] Clause 74. A method according to clause 73, wherein if the second block is encoded and decoded by the sample adjustment process, the second motion candidate is encoded and decoded by the sample adjustment process, and if the second block is not encoded and decoded by the sample adjustment process, the second motion candidate is not encoded and decoded by the sample adjustment process.
[0190] Clause 75. A method according to any one of clauses 68 to 74, wherein the information about whether the other video block is encoded and decoded by the sample adjustment process depends on information about whether a target motion candidate for encoding and decoding the other video block is encoded and decoded by the sample adjustment process, and the target motion candidate is selected from the motion candidate list.
[0191] Clause 76. A method according to Clause 75, wherein if the target motion candidate is encoded and decoded by the sample adjustment process, the other video block is encoded and decoded by the sample adjustment process, and if the target motion candidate is not encoded and decoded by the sample adjustment process, the other video block is not encoded and decoded by the sample adjustment process.
[0192] Clause 77. The method of any one of clauses 1 to 76, wherein the converting comprises encoding the current video block into the bitstream.
[0193] Clause 78. The method of any one of clauses 1 to 76, wherein the converting comprises decoding the current video block from the bitstream.
[0194] Clause 79. 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 78.
[0195] Clause 80. A non-transitory computer-readable storage medium storing instructions that cause a processor to perform the method of any one of clauses 1 to 78.
[0196] Item 81. A non-transitory computer-readable recording medium storing a bitstream of a video, the bitstream being generated by a method performed by a video processing device, wherein the method comprises: obtaining a first MV for a target video block, the target video block being determined by applying a sample adjustment process to multiple samples of a current video block of the video; adjusting the first MV based on a second MV generated for the target video block; and generating the bitstream based on the adjusted first MV.
[0197] Clause 82. A method for storing a bitstream of a video, comprising: obtaining a first MV for a target video block, wherein the target video block is determined by applying a sample adjustment process to multiple samples of a current video block of the video; adjusting the first MV based on a second MV generated for the target video block; generating the bitstream based on the adjusted first MV; and storing the bitstream in a non-transitory computer-readable recording medium. Example Device
[0198] Fig.15 A block diagram of a computing device 1500 in which various embodiments of the present disclosure may be implemented is shown. The computing device 1500 may be implemented as a source device 110 (or video encoder 114 or 200) or a destination device 120 (or video decoder 124 or 300), or may be included in a source device 110 (or video encoder 114 or 200) or a destination device 120 (or video decoder 124 or 300).
[0199] It should be understood that Fig.15 The computing device 1500 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.
[0200] like Fig.15 As shown, computing device 1500 includes a general computing device 1500. Computing device 1500 may include at least one or more processors or processing units 1510, memory 1520, storage unit 1530, one or more communication units 1540, one or more input devices 1550, and one or more output devices 1560.
[0201] In some embodiments, computing device 1500 can be implemented as any user terminal or server terminal with computing capability. 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 electronic book device, a gaming device, or any combination thereof, and includes the accessories and peripherals of these devices, or any combination thereof. It is conceivable that computing device 1500 can support any type of interface to the user (such as a "wearable" circuit device, etc.).
[0202] Processing unit 1510 may be a physical processor or a virtual processor and may implement various processes based on a program stored in memory 1520. In a multi-processor system, multiple processing units execute computer executable instructions in parallel to improve the parallel processing capability of computing device 1500. Processing unit 1510 may also be referred to as a central processing unit (CPU), a microprocessor, a controller, or a microcontroller.
[0203] The computing device 1500 typically includes various computer storage media. Such media can be any media accessible by the computing device 1500, including but not limited to volatile media and non-volatile media, or removable media and non-removable media. The memory 1520 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 1530 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 1500.
[0204] The computing device 1500 may also include additional removable / non-removable storage media, volatile / non-volatile storage media. Fig.15 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.
[0205] The communication unit 1540 communicates with another computing device via a communication medium. In addition, the functionality of the components in the computing device 1500 can be implemented by a single computing cluster or multiple computing machines that can communicate via a communication connection. Therefore, the computing device 1500 can operate in a networked environment using logical connections to one or more other servers, networked personal computers (PCs), or other general network nodes.
[0206] Input device 1550 may be one or more of various input devices, such as a mouse, keyboard, trackball, voice input device, etc. Output device 1560 may be one or more of various output devices, such as a display, speaker, printer, etc. With the aid of communication unit 1540, computing device 1500 may also communicate with one or more external devices (not shown), such as storage devices and display devices, and computing device 1500 may also communicate with one or more devices that enable a user to interact with computing device 1500, or any device that enables computing device 1500 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).
[0207] In some embodiments, some or all components of the computing device 1500 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.
[0208] In an embodiment of the present disclosure, the computing device 1500 may be used to implement video encoding / decoding. The memory 1520 may include one or more video encoding / decoding modules 1525 having one or more program instructions. These modules can be accessed and executed by the processing unit 1510 to perform the functions of the various embodiments described herein.
[0209] In an example embodiment performing video encoding, input device 1550 may receive video data as input 1570 to be encoded. The video data may be processed by, for example, video codec module 1525 to generate an encoded bitstream. The encoded bitstream may be provided as output 1580 via output device 1560.
[0210] In an example embodiment performing video decoding, input device 1550 may receive an encoded bitstream as input 1570. The encoded bitstream may be processed by, for example, video codec module 1525 to generate decoded video data. The decoded video data may be provided as output 1580 via output device 1560.
[0211] 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 video block of a video and a bitstream of the video, obtaining a first motion vector (MV) for a target video block, the target video block being determined by applying a sample adjustment process to a plurality of samples of the current video block; adjusting the first MV based on a second MV generated for the target video block; as well as The converting is performed based on the adjusted first MV.
2. The method of claim 1, wherein the adjusted first MV is one of: a motion vector candidate for an intra block copy (IBC) merge mode for encoding and decoding the target video block; or A motion vector predictor for an IBC advanced motion vector prediction (AMVP) mode for encoding and decoding the target video block. 3 . The method according to claim 1 , wherein the information on how to generate the second MV depends on a prediction scheme used to encode and decode the target video block. 4 . The method according to claim 1 , wherein the second MV is generated based on a size of the target video block.
5. The method according to any one of claims 1 to 3, wherein the second MV is generated based on at least one of the following: The height of the target video block; or The width of the target video block. The method according to any one of claims 1 to 5, wherein the second MV is generated based on a predefined number. The method according to claim 6 , wherein the predefined number is a granularity of a spatial motion vector storage unit.
8. The method according to any one of claims 1 to 7, wherein the second MV is generated based on at least one of the following: information about whether the plurality of samples of the current video block are adjusted; or Information on how to adjust the plurality of samples of the current video block.
9. The method according to any one of claims 1 to 8, wherein the multiple samples are horizontally flipped, the target video block is encoded and decoded via IBC AMVP, the motion vectors of neighboring video blocks for the current video block are adjusted for constructing a motion vector prediction value list for the target video block, and the neighboring video blocks are encoded and decoded via horizontal flipping.
10. The method according to any one of claims 1 to 8, wherein the multiple samples are horizontally flipped, the target video block is encoded and decoded via IBC AMVP, the motion vectors of the neighboring video blocks for the current video block are not adjusted for constructing the motion vector prediction value list for the target video block, and the neighboring video blocks are encoded and decoded via vertical flipping or are encoded and decoded without the sample adjustment process.
11. The method according to any one of claims 1 to 8, wherein the multiple samples are vertically flipped, the target video block is encoded and decoded via IBC AMVP, the motion vectors of neighboring video blocks for the current video block are adjusted to construct a motion vector prediction value list for the target video block, and the neighboring video blocks are encoded and decoded via vertical flipping.
12. The method according to any one of claims 1 to 8, wherein the multiple samples are vertically flipped, the target video block is encoded and decoded via IBC AMVP, and the motion vectors of the neighboring video blocks for the current video block are not adjusted for constructing the motion vector prediction value list for the target video block, and the neighboring video blocks are encoded and decoded via horizontal flipping or are encoded and decoded without the sample adjustment process. 13 . The method according to claim 1 , wherein the second MV is generated based on codec information of neighboring video blocks of the current video block.
14. The method according to any one of claims 1 to 13, wherein the second MV is generated based on at least one of the following: a prediction scheme for encoding and decoding neighboring video blocks of the current video block, The size of the neighboring video blocks, The height of the neighboring video block, The width of the neighboring video block, information about whether samples of the neighboring video blocks are adjusted, information on how to adjust the samples of the neighboring video blocks, The position of the neighboring video block relative to the current video block, The coordinates of the position of the current video block, The coordinates of the positions of the neighboring video blocks, The coordinates of the center point of the current video block, The coordinates of the center point of the neighboring video block, The coordinates of the upper left corner of the current video block, or The coordinates of the upper left corner of the neighboring video block.
15. The method according to any one of claims 13 to 14, wherein the neighboring video blocks include at least one of the following: the left neighboring video block of the current video block, The lower left neighboring video block of the current video block, the upper neighboring video block of the current video block, The upper right neighboring video block of the current video block, or The upper left neighboring video block of the current video block.
16. The method according to any one of claims 1 to 15, wherein the second MV is generated by adding an offset to the first MV. The method of claim 16 , wherein a precision of the offset is the same as a precision of the first MV.
18. The method of any one of claims 16 to 17, wherein the offset is generated based on a size of the current video block.
19. The method of any one of claims 16 to 17, wherein the offset is generated based on at least one of: The height of the current video block, or The width of the current video block.
20. The method according to any one of claims 16 to 19, wherein the offset is generated based on a predefined number. The method according to claim 20 , wherein the predefined number is a granularity of a spatial motion vector storage unit.
22. The method of any one of claims 1 to 21, wherein the second MV is different from the first MV.
23. The method of any one of claims 1 to 22, wherein adjusting the first MV comprises: If it is determined that the second MV satisfies a set of rules, the first MV is adjusted using the second MV.
24. The method of any one of claims 1 to 22, wherein the conversion is performed based on the first MV if the second MV does not satisfy at least one of a set of rules.
25. The method of any one of claims 1 to 22, wherein if the second MV does not satisfy at least one of a set of rules, the second MV is not used.
26. The method of any one of claims 1 to 22, wherein the first MV and the second MV are not used if the second MV does not satisfy at least one of a set of rules.
27. The method of any one of claims 1 to 22, wherein the second MV is set equal to the first MV if the second MV does not satisfy at least one of a set of rules.
28. The method of any one of claims 23 to 27, wherein the set of rules comprises at least one of the following: The reference video block indicated by the second MV is located in the valid area; The reference video block is located in a picture of the video, and the current video block is included in the picture; The reference video block is located in a codec tree unit (CTU) row of the video, and the current video block is located in the same CTU row; The reference video block is located in a tile of the video, and the current video block is included in the same tile; The reference video block is located in a CTU of the video, and the current video block is included in the same CTU; The reference video block is located in a CTU of the video, and the CTU is located to the left of the CTU in which the current video block is included; or The reference video block is located in a region of the video that is encoded before the current video block.
29. The method of claim 28, wherein the active region comprises a predefined region of the video that is encoded prior to the current video block.
30. The method according to any one of claims 1 to 29, wherein the first MV is an MV for a left neighboring video block of the current video block, and the second MV is generated based on a width of the current video block and a width of the left neighboring video block.
31. The method according to any one of claims 1 to 30, wherein a left neighboring video block of the current video block is coded and decoded by being horizontally flipped, and a horizontal component of the adjusted first MV is determined as follows: curMVx=leftMVx-(W2< <precFactor)-(W1<<precFactor), Wherein curMVx represents the adjusted horizontal component of the first MV, leftMVx represents the horizontal component of the MV for the left neighboring video block, W1 represents the width of the current video block, W2 represents the width of the left neighboring video block, and precFactor represents a predetermined value or a value that depends on the precision difference between the MV precision and the integer precision.
32. The method of claim 31, wherein the width of the left neighbor video block is equal to a granularity of a spatial motion vector storage unit.
33. The method of any one of claims 30 to 32, wherein the left neighboring video block comprises a video block that is encoded and decoded before the current video block and is located to the left of the current video block.
34. The method of any one of claims 30 to 33, wherein the left neighbor video block is located below and to the left of the current video block.
35. The method according to any one of claims 1 to 29, wherein the first MV is an MV for an upper neighboring video block of the current video block, and the second MV is generated based on a height of the current video block and a height of the left neighboring video block.
36. The method according to any one of claims 1 to 29 and 35, wherein an upper neighboring video block of the current video block is coded and decoded by being vertically flipped, and a vertical component of the adjusted first MV is determined as follows: curMVy=aboveMVy-(H2< <precFactor)-(H1<<precFactor), Wherein curMVy represents the adjusted vertical component of the first MV, aboveMVy represents the vertical component of the MV for the upper neighboring video block, H1 represents the height of the current video block, H2 represents the height of the upper neighboring video block, and precFactor represents a predetermined value or a value that depends on the precision difference between the MV precision and the integer precision.
37. The method of claim 36, wherein the height of the above neighbor video block is equal to a granularity of a spatial motion vector storage unit.
38. The method of any one of claims 35 to 37, wherein the above neighboring video block comprises a video block that is encoded and decoded before the current video block and is located above the current video block.
39. The method according to any one of claims 35 to 38, wherein the upper neighbor video block is located above and to the right of the current video block.
40. The method of any one of claims 1 to 29, wherein the adjusted first MV is determined based on at least one of: The coordinates of the center point of the current video block, The coordinates of the center points of the neighboring video blocks of the current video block, The coordinates of the upper left corner of the current video block, or The coordinates of the upper left corner of the neighboring video block.
41. The method of any one of claims 1 to 40, wherein information about how to adjust the first MV depends on information about how to adjust the plurality of samples of the current video block.
42. The method of any one of claims 40 to 41, wherein the plurality of samples are flipped horizontally, and the adjusted horizontal component of the first MV is determined as follows: BV' x =2(x1-x2)+BV x , in, BV' x represents the adjusted horizontal component of the first MV, BV x represents the horizontal component of the MV of the left neighboring video block of the current video block, x1 represents the abscissa of the center point of the left neighboring video block, and x2 represents the abscissa of the center point of the current video block.
43. The method of any one of claims 40 to 42, wherein the plurality of samples are horizontally flipped, and a vertical component of the adjusted first MV is equal to a vertical component of an MV for a left neighboring video block of the current video block.
44. The method of any one of claims 40 to 41, wherein the plurality of samples are flipped vertically, and the vertical component of the adjusted first MV is determined as follows: BV’ y =2(y1-y2)+BV y , in, BV' y represents the adjusted vertical component of the first MV, BV y represents the vertical component of the MV of the left neighboring video block of the current video block, y1 represents the ordinate of the center point of the left neighboring video block, and y2 represents the ordinate of the center point of the current video block.
45. The method of any one of claims 40 to 41 and 44, wherein the plurality of samples are flipped vertically, and a horizontal component of the adjusted first MV is equal to a horizontal component of an MV for a left neighboring video block of the current video block.
46. A method according to any one of claims 40 to 45, wherein the MV has integer precision.
47. The method of any one of claims 40 to 41, wherein the MV has fractional precision.
48. The method of claim 47, wherein the plurality of samples are flipped horizontally, and the adjusted horizontal component of the first MV is determined as follows: MV’ x =((2(x1-x2))<<precFactor)+MV x , in, MV' x represents the adjusted horizontal component of the first MV, MV x represents the horizontal component of the MV of the left neighboring video block of the current video block, x1 represents the abscissa of the center point of the left neighboring video block, x2 represents the abscissa of the center point of the current video block, and precFactor represents a predetermined value or a value depending on the precision difference between the MV precision and the integer precision.
49. The method of claim 47, wherein the plurality of samples are flipped vertically, and a vertical component of the adjusted first MV is determined as follows: MV' y =((2(y1-y2))< <precFactor)+MV y , in, MV' y represents the adjusted vertical component of the first MV, MV y represents the vertical component of the MV of the left neighboring video block of the current video block, y1 represents the vertical coordinate of the center point of the left neighboring video block, y2 represents the vertical coordinate of the center point of the current video block, and precFactor represents a predetermined value or a value depending on the precision difference between the MV precision and the integer precision.
50. The method according to any one of claims 40 to 49, wherein the horizontal coordinate of the center point of the left neighboring video block of the current video block is determined based on the horizontal coordinate of the upper left corner point of the left neighboring video block and the width of the left neighboring video block.
51. The method of claim 50, wherein the abscissa of the center point of the left neighbor video block is determined as follows: x1=x'1+W1 / 2+sx, in, x1 represents the abscissa of the center point of the left neighboring video block, x′1 represents the abscissa of the upper left corner point of the left neighboring video block, W1 represents the width of the left neighboring video block, and sx represents a first offset.
52. The method according to any one of claims 40 to 51, wherein the vertical coordinate of the center point of the left neighboring video block of the current video block is determined based on the vertical coordinate of the upper left corner point of the left neighboring video block and the height of the left neighboring video block.
53. The method of claim 52, wherein the ordinate of the center point of the left neighbor video block is determined as follows: y1=y'1+H1 / 2+sy, in, y1 represents the ordinate of the center point of the left neighboring video block, y′1 represents the ordinate of the upper left corner point of the left neighboring video block, H1 represents the height of the left neighboring video block, and sy represents a second offset.
54. The method according to any one of claims 40 to 53, wherein the horizontal coordinate of the center point of the current video block is determined based on the horizontal coordinate of the upper left corner point of the current video block and the width of the current video block.
55. The method of claim 54, wherein the abscissa of the center point of the current video block is determined as follows: x2=x'2+W2 / 2+sx, in, x2 represents the horizontal coordinate of the center point of the current video block, x′2 represents the horizontal coordinate of the upper left corner point of the current video block, W2 represents the width of the current video block, and sx represents a first offset.
56. The method according to any one of claims 40 to 55, wherein the vertical coordinate of the center point of the current video block is determined based on the vertical coordinate of the upper left corner point of the current video block and the height of the current video block.
57. The method of claim 56, wherein the ordinate of the center point of the current video block is determined as follows: y2=y'2+H2 / 2+sy, in, y2 represents the ordinate of the center point of the current video block, y′2 represents the ordinate of the upper left corner point of the current video block, H2 represents the height of the current video block, and sy represents a second offset.
58. The method according to any one of claims 1 to 57, wherein information of neighboring video blocks of the current video block is stored in a table.
59. The method of claim 58, wherein the table comprises a history-based motion vector prediction (HMVP) table.
60. The method of any one of claims 58 to 59, wherein the stored information is obtained from the table and used to adjust the first MV.
61. The method according to any one of claims 58 to 60, wherein the information of the neighboring video blocks comprises at least one of the following: The motion information of the neighboring video blocks, The coordinates of the center point of the neighboring video block, The coordinates of the upper left corner point of the neighboring video block, The width of the neighboring video block, The height of the neighboring video block, Information about whether samples of the neighboring video blocks are adjusted, or Information on how to adjust the samples of the neighboring video blocks.
62. The method of any one of claims 1 to 61, wherein the adjusted first MV is clipped to within a range.
63. The method according to any one of claims 1 to 62, wherein the first MV is determined based on codec information of neighboring video blocks of the current video block.
64. The method of any one of claims 1 to 63, wherein the sample adjustment process comprises at least one of the following: reordering the plurality of samples of the current video block, flipping the plurality of samples, shifting the plurality of samples, Rotate the plurality of samples, or The plurality of samples are transformed.
65. The method of any one of claims 1 to 64, wherein the plurality of samples comprises one of: the reconstructed sample of the current video block, The original sample of the current video block, or The predicted samples of the current video block.
66. The method of any one of claims 9 to 65, wherein a neighboring video block of the current video block is adjacent to or non-adjacent to the current video block.
67. The method of any one of claims 1-66, wherein the MV for the target video block comprises a block vector (BV) for the target video block.
68. The method according to any one of claims 1 to 67, wherein a motion candidate list is generated for another video block of the video different from the current video block, and the motion candidates in the motion candidate list are from blocks encoded and decoded by the sample adjustment process or blocks not encoded and decoded by the sample adjustment process.
69. The method of claim 68, wherein the motion candidate list is an IBC merge candidate list.
70. The method of any one of claims 68 to 69, wherein information about whether a first motion candidate from a first block associated with the other video block is encoded and decoded by the sample adjustment process depends on information about whether the first block is encoded and decoded by the sample adjustment process.
71. The method of claim 70, wherein if the first block is encoded and decoded by the sample adjustment process, the first motion candidate is encoded and decoded by the sample adjustment process, and If the first block is not encoded by the sample adjustment process, the first motion candidate is not encoded by the sample adjustment process.
72. The method of any one of claims 70 to 71, wherein the first block is a spatial domain block or a temporal domain block of the other video block.
73. A method according to any one of claims 68 to 72, wherein information about whether a second motion candidate from an entry in a history table for the other video block has been encoded and decoded by the sample adjustment process depends on information about whether a second block corresponding to the entry has been encoded and decoded by the sample adjustment process.
74. The method of claim 73, wherein if the second block is encoded by the sample adjustment process, the second motion candidate is encoded by the sample adjustment process, and If the second block is not encoded by the sample adjustment process, the second motion candidate is not encoded by the sample adjustment process.
75. The method according to any one of claims 68 to 74, wherein the information about whether the other video block is encoded and decoded by the sample adjustment process depends on information about whether a target motion candidate for encoding and decoding the other video block is encoded and decoded by the sample adjustment process, and the target motion candidate is selected from the motion candidate list.
76. The method of claim 75, wherein if the target motion candidate is encoded and decoded by the sample adjustment process, the another video block is encoded and decoded by the sample adjustment process, and If the target motion candidate is not encoded by the sample adjustment process, then the another video block is not encoded by the sample adjustment process.
77. The method of any one of claims 1 to 76, wherein the converting comprises encoding the current video block into the bitstream.
78. The method of any one of claims 1 to 76, wherein the converting comprises decoding the current video block from the bitstream.
79. 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 a method according to any one of claims 1 to 78.
80. A non-transitory computer readable storage medium storing instructions, the instructions causing a processor to perform the method according to any one of claims 1 to 78.
81. A non-transitory computer-readable recording medium storing a bit stream of a video, the bit stream being generated by a method performed by a video processing device, wherein the method comprises: Obtaining a first MV for a target video block, the target video block being determined by applying a sample adjustment process to a plurality of samples of a current video block of the video; adjusting the first MV based on a second MV generated for the target video block; as well as The bitstream is generated based on the adjusted first MV.
82. A method for storing a bitstream of a video, comprising: Obtaining a first MV for a target video block, the target video block being determined by applying a sample adjustment process to a plurality of samples of a current video block of the video; adjusting the first MV based on a second MV generated for the target video block; generating the bitstream based on the adjusted first MV; as well as The bit stream is stored in a non-transitory computer-readable recording medium.
Citation Information
Cited By
Question generation method and device, content display method and device, medium and electronic equipment
CN120492585A
