Video decoding method and apparatus, video coding method and apparatus, storage medium, electronic device and program product

By introducing intra-block copying parameters in video encoding and decoding, and matching the IBC mode according to the image generation method, the problem of low encoding performance of intra-block copying technology in camera-captured images is solved, and the encoding efficiency of video bitstream is improved.

WO2025123665A9PCT designated stage Publication Date: 2026-04-23TENCENT TECHNOLOGY (SHENZHEN) CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
TENCENT TECHNOLOGY (SHENZHEN) CO LTD
Filing Date
2024-07-12
Publication Date
2026-04-23

AI Technical Summary

Technical Problem

In existing video coding standards, intra-frame block copying technology has low coding performance for camera-captured images, resulting in poor video stream coding efficiency.

Method used

Intra-frame block copying parameters are introduced during video encoding and decoding to improve encoding performance by matching IBC modes for different image generation methods.

Benefits of technology

It improves the encoding performance of video streams, especially for camera-captured and computer-generated images, enhancing encoding efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2024105282_23042026_PF_FP_ABST
    Figure CN2024105282_23042026_PF_FP_ABST
Patent Text Reader

Abstract

Disclosed in the present application are a video decoding method and apparatus, a video coding method and apparatus, a storage medium, an electronic device and a program product. The video decoding method comprises: acquiring a video bitstream, wherein the video bitstream comprises decoding indication information, the decoding indication information comprises an intra block copy parameter, and the intra block copy parameter is used for performing decoding indication on an intra block copy mode; and on the basis of the decoding indication information, decoding the video bitstream.
Need to check novelty before this filing date? Find Prior Art

Description

Video decoding methods, video encoding methods, devices, storage media, electronic devices and software products

[0001] This application claims priority and benefits to patent application No. 202311692791.4, filed with the China National Intellectual Property Administration on December 10, 2023, the entire contents of which are incorporated herein by reference. Technical Field

[0002] This application belongs to the field of video encoding and decoding technology, and particularly relates to a video decoding method, a video encoding method, a video decoding device, a video encoding device, a computer-readable storage medium, an electronic device, and a computer program product. Background Technology

[0003] In current video coding standards such as Audio Video Coding Standard 3 (AVS3) and the international video coding standard VVC / H.266 (versatile video coding, VVC), the Intra Block Copy (IBC) technology is currently configured for encoding screen content images, and is disabled by default for camera-captured images, resulting in lower encoding performance of the video stream corresponding to camera-captured images.

[0004] Summary of the Invention

[0005] This application aims to at least solve one of the technical problems existing in the prior art. To this end, this application proposes a video decoding method, a video encoding method, a video decoding apparatus, a video encoding apparatus, a computer-readable storage medium, an electronic device, and a computer program product, which can improve encoding performance.

[0006] In a first aspect, this application provides a video decoding method including acquiring a video bitstream, the video bitstream including decoding indication information, the decoding indication information including intra-frame block copying parameters, the intra-frame block copying parameters being used to provide decoding indication of the intra-frame block copying mode; and decoding the video bitstream according to the decoding indication information.

[0007] Secondly, this application provides a video encoding method including acquiring video data; encoding and compressing the video data to obtain a video bitstream, wherein the decoding indication information of the video bitstream includes intra-frame block copying parameters, and the intra-frame block copying parameters are used to provide decoding indication of the intra-frame block copying mode.

[0008] Thirdly, this application provides a video decoding apparatus including a first acquisition module and a decoding module. The first acquisition module is used to acquire a video bitstream, the video bitstream including decoding indication information, the decoding indication information including intra-frame block copying parameters, the intra-frame block copying parameters being used to provide decoding indication of the intra-frame block copying mode; the decoding module is used to decode the video bitstream according to the decoding indication information.

[0009] Fourthly, this application provides a video encoding apparatus including a second acquisition module and an encoding module. The second acquisition module is used to acquire video data; the encoding module is used to encode and compress the video data to obtain a video bitstream, wherein the decoding indication information of the video bitstream includes intra-frame block copying parameters, and the intra-frame block copying parameters are used to provide decoding indication of the intra-frame block copying mode.

[0010] Fifthly, this application provides a non-transitory computer-readable storage medium having a computer program stored thereon, which, when executed by a processor, implements the above-described video decoding method or video encoding method.

[0011] In a sixth aspect, this application provides an electronic device, including a memory, a processor, and a computer program stored in the memory and executable on the processor, wherein the processor executes the program to implement the above-described video decoding method or video encoding method.

[0012] Seventhly, the computer program product includes a computer program that, when executed by a processor, implements the aforementioned video decoding method or video encoding method.

[0013] The video encoding method, video decoding method, video encoding apparatus, video decoding apparatus, computer-readable storage medium, electronic device, and computer program provided in this application introduce IBC parameters indicating the IBC mode in the high-level syntax (i.e., decoding indication information) of video encoding and decoding. This allows the corresponding IBC mode to be used for encoding according to the image generation method of the video data during video encoding. It also allows video encoding to select a suitable set of IBC tools for different image generation scenarios (such as camera shooting or computer generation), which is beneficial to improving the encoding performance of video streams with different image generation methods. Attached Figure Description

[0014] The above and / or additional aspects and advantages of this application will become apparent and readily understood from the description of the embodiments taken in conjunction with the following drawings, in which:

[0015] Figure 1 is a schematic diagram of the video encoding principle provided in an embodiment of this application;

[0016] Figure 2 is a schematic diagram of the inter-frame prediction principle provided in an embodiment of this application;

[0017] Figure 3 is a schematic diagram of the sheet structure provided in an embodiment of this application;

[0018] Figure 4 is a schematic diagram of the principle of intra-block copying provided in the embodiments of this application;

[0019] Figure 5 is a schematic diagram illustrating the principle of block partitioning provided in an embodiment of this application;

[0020] Figure 6 is a schematic diagram of the framework of the video encoding and decoding system provided in an embodiment of this application;

[0021] Figure 7 is a flowchart illustrating the video decoding method provided in this application embodiment;

[0022] Figure 8 is a flowchart illustrating the video encoding method provided in an embodiment of this application;

[0023] Figure 9 is a schematic diagram of the video decoding device provided in an embodiment of this application;

[0024] Figure 10 is a schematic diagram of the video encoding device provided in an embodiment of this application;

[0025] Figure 11 is a schematic diagram of the structure of the electronic device provided in an embodiment of this application;

[0026] Figure 12 is a schematic diagram of the hardware structure of the electronic device provided in an embodiment of this application. Detailed Implementation

[0027] The embodiments of this application are described in detail below. Examples of these embodiments are shown in the accompanying drawings, wherein the same or similar reference numerals denote the same or similar elements or elements having the same or similar functions throughout. The embodiments described below with reference to the accompanying drawings are exemplary and are only used to explain this application, and should not be construed as limiting this application.

[0028] The following is a description of some of the technical terms used in this application:

[0029] 1. Video encoding:

[0030] Video signals, from the perspective of how they are acquired, can be divided into two types: those captured by cameras and those generated by computers. Due to differences in statistical characteristics, the corresponding compression encoding methods may also differ.

[0031] Please refer to Figure 1. Modern mainstream video coding technologies, taking the international video coding standards HEVC / H.265 (High Efficiency Video Coding), VVC, and AVS3 as examples, employ a hybrid coding framework to perform the following series of operations and processing on the input raw video signal:

[0032] (1) Block partition structure: The input video pictures are divided into several non-overlapping processing units based on their size. Each processing unit will undergo a similar compression operation. This processing unit is called a CTU or LCU. Further subdivisions can be made below the CTU to obtain one or more basic coding units, called CUs. Each CU is the most basic element in a coding process. The following describes the various coding methods that can be used for each CU.

[0033] (2) Predictive Coding: This includes intra-picture prediction and inter-frame prediction. The original video signal is predicted by the selected reconstructed video signal to obtain the residual video signal. The encoder needs to select the most suitable predictive coding mode from among many possible modes for the current CU and inform the decoder.

[0034] Currently, mainstream video coding standards such as HEVC, VVC, AVS3, the first-generation video coding standard AV1 (Alliance for Open Media Video 1), and the second-generation video coding standard (Alliance for Open Media Video 2), all developed by the Alliance for Open Media, employ a block-based hybrid coding framework. They divide the raw video data into a series of coded blocks and combine video coding methods such as prediction, transform, and entropy coding to achieve video data compression. Motion compensation is a commonly used prediction method in video coding. Based on the redundancy characteristics of video content in the temporal or spatial domains, motion compensation derives the predicted value of the current coded block from the already coded regions. These prediction methods include inter-frame prediction, intra-frame block copy prediction, and intra-frame string copy prediction. In specific coding implementations, these prediction methods may be used individually or in combination. For coded blocks using these prediction methods, one or more two-dimensional displacement vectors are typically explicitly or implicitly encoded in the bitstream to indicate the displacement of the current block (or its sibling blocks) relative to one or more reference blocks.

[0035] It is important to note that the displacement vector may have different names depending on the prediction mode and implementation. This article will uniformly describe them as follows: 1) The displacement vector in inter-frame prediction is called the motion vector (MV); 2) The displacement vector in intra-frame block copying is called the block vector (BV); 3) The displacement vector in intra-frame string copying is called the string vector (SV). The following section introduces the relevant techniques in inter-frame prediction and intra-frame block copying prediction.

[0036] a. Intra-frame prediction: The predicted signal comes from a region within the same image that has already been encoded and reconstructed.

[0037] b. Inter-frame prediction: The predicted signal comes from other images that have already been encoded and are different from the current image (called reference images).

[0038] As shown in Figure 2, inter-frame prediction utilizes the correlation in the video's temporal domain to predict the pixels of the current image using pixels from neighboring encoded images. This effectively removes temporal redundancy and saves bits of encoded residual data. Here, P is the current frame, Pr is the reference frame, B is the current block to be encoded, and Br is the reference block for B. B' and B have the same coordinates in the image; Br's coordinates are (xr, yr), and B''s coordinates are (x, y). The displacement between the current encoded block and its reference block is called the motion vector (MV), i.e., MV = (xr - x, yr - y).

[0039] Considering the strong correlation between neighboring blocks in the temporal or spatial domains, MV prediction techniques can be used to further reduce the bits required to encode MVs. In H.265 / HEVC, inter-frame prediction includes two MV prediction techniques: Merge and AMVP.

[0040] (3) Transform Coding and Quantization: The residual video signal undergoes transformation operations such as Discrete Fourier Transform (DFT) and Discrete Cosine Transform (DCT) to convert the signal into the transform domain, which are called transform coefficients. In the transform domain, the signal undergoes further lossy quantization, losing some information, making the quantized signal more suitable for compression. In some video coding standards, there may be more than one transform method to choose from. Therefore, the encoder needs to select one of the transforms for the current encoding CU and inform the decoder. The fineness of quantization is usually determined by the quantizer parameter (QP). A larger QP value means that coefficients with a wider range of values ​​will be quantized into the same output, which usually leads to greater distortion and a lower bit rate; conversely, a smaller QP value means that coefficients with a smaller range of values ​​will be quantized into the same output, which usually leads to less distortion and a higher bit rate.

[0041] (4) Entropy Coding or Statistical Coding: The quantized transform domain signal is statistically compressed and encoded based on the frequency of each value, finally outputting a binary (0 or 1) compressed bitstream. Simultaneously, other information generated during encoding, such as the selected mode and motion vectors, also requires entropy coding to reduce the bit rate. Statistical coding is a lossless coding method that can effectively reduce the bit rate required to represent the same signal. Common statistical coding methods include Variable Length Coding (VLC) or Content Adaptive Binary Arithmetic Coding (CABAC).

[0042] (5) Loop Filtering: The encoded image undergoes inverse quantization (scaling & inv.transform), inverse transform, and prediction compensation operations (the reverse operations of (2) to (4) above) to obtain the reconstructed decoded image. Compared with the original image, the reconstructed image has some information that differs from the original image due to the influence of quantization, resulting in distortion. Filtering the reconstructed image, such as deblocking, SAO, or ALF filters, can effectively reduce the degree of distortion caused by quantization. Since these filtered reconstructed images will be used as a reference for subsequent encoded images to predict future signals, the above filtering operations are also called loop filtering, or filtering operations within the coding loop.

[0043] 2. Video Decoding: This is the inverse process of video encoding. Based on the encoding process described above, it can be seen that at the decoding end, for each CU, after obtaining the video bitstream, the decoder first performs entropy decoding to obtain various mode information and quantized transform coefficients. Each coefficient undergoes inverse quantization and inverse transform to obtain the residual signal. On the other hand, based on the known encoding mode information, the prediction signal corresponding to that CU can be obtained. Adding the two together yields the reconstructed signal. Finally, the reconstructed value of the decoded image needs to undergo loop filtering to generate the final output signal.

[0044] 3. Video stream structure

[0045] (1) Video sequence

[0046] A video sequence is the highest-level syntactic structure of a bitstream (i.e., a video bitstream). A video sequence begins with a first sequence header, and an end-of-sequence code or video edit code indicates the end of a video sequence. The sequence header between the first sequence header and the first occurrence of an end-of-sequence code or video edit code is a repeating sequence header. Each sequence header is followed by one or more coded images, each preceded by an image header. The coded images are arranged in bitstream order, which should be the same as the decoding order. The decoding order may differ from the display order.

[0047] (2) Image

[0048] An image can be a frame or a field, and its encoded data starts with the image start code and ends with the sequence start code, sequence end code, or the next image start code.

[0049] Image types include: I-frames (i.e., first type images); P-frames (i.e., second type images); and B-frames (i.e., third type images). A fully encoded frame is called an I-frame. A frame generated by referencing a previous I-frame and only containing the differences in encoding is called a P-frame. There is also a type of frame encoded by referencing both previous and subsequent frames, called a B-frame.

[0050] (3 pieces)

[0051] A slice is a rectangular region in an image (such as region A, region B, etc.), containing a portion of the image containing several maximum coding units. Slices should not overlap. The slice structure is shown in Figure 3.

[0052] (4) Maximum coding unit, coding tree and coding unit

[0053] The image is divided into maximum coding units (such as CTUs in video coding). Maximum coding units should not overlap. The sample in the upper left corner of the maximum coding unit should not exceed the image boundary, while the sample in the lower right corner of the maximum coding unit can exceed the image boundary.

[0054] The coding tree determines how the largest coding unit is divided into multiple coding units (such as CUs in video coding), such as binary trees, quadtrees, and enhanced quadtrees. One coding unit can be a block of images.

[0055] The coding unit is divided into one or more transform blocks, which are the basic units for transform coding.

[0056] 4. Intra Block Copy (IBC)

[0057] IBC is an intra-frame coding tool adopted in the HEVC Screen Content Coding (SCC) extension, which significantly improves the coding efficiency of screen content. IBC technology is also adopted in AVS3, VVC, and AV1 to improve the performance of screen content coding. IBC utilizes the spatial correlation of screen content video, using the already encoded image pixels in the current image to predict the pixels of the current block to be encoded, effectively saving the bits required to encode pixels. Figure 4 is a schematic diagram of IBC technology, where the displacement between the current coding block and its reference block is called the block vector (BV).

[0058] 5. AVS3 block partitioning structure

[0059] AVS3 adopts a basic block partitioning structure of QT (quadtree) + BT (binary tree) + EQT (enhanced quadtree). The previous generation AVS2 standard used quadtree partitioning, dividing a CU into four subCUs. In addition to quadtree partitioning, AVS3 also supports binary tree (BT) and EQT partitioning. BT can divide a CU into two subCUs (left / right or top / bottom); EQT includes both horizontal and vertical I-shaped partitioning methods, dividing a CU into four subCUs.

[0060] Please refer to Figure 5. The representation of the QT+BT+EQT basic block partitioning structure in the bitstream in AVS3 is shown in Figure 5. First, it is determined whether it is QT. If it is QT, quadtree partitioning is performed directly. If it is not QT, it is necessary to further determine whether to not partition. If not partitioning, the determination ends. If partitioning is required, it is necessary to determine whether it is EQT or BT. Regardless of whether it is EQT or BT, it is necessary to determine whether the partitioning is horizontal or vertical.

[0061] The video decoding method and video encoding method provided in this application embodiment can be applied to a video encoding and decoding system. The video encoding and decoding system may include a content production device (corresponding to an encoding device) and a content presentation device (corresponding to a decoding device). The content production device may refer to the electronic device used by the provider of video data (e.g., the content creator of the video data). The electronic device may be a terminal (such as a PC (Personal Computer), a smart mobile device (such as a smartphone), etc.) or a server.

[0062] The server can be a standalone physical server, a server cluster or distributed system composed of multiple physical servers, or a cloud server that provides basic cloud computing services such as cloud services, cloud databases, cloud computing, cloud functions, cloud storage, network services, cloud communication, middleware services, domain name services, security services, CDN, and big data and artificial intelligence platforms. The content presentation device can refer to the electronic device used by the user of the video data (e.g., the viewer of the video data, i.e., the business target). This electronic device can be a terminal (such as a PC, a smart mobile device (such as a smartphone), a VR device (such as a VR headset, VR glasses, etc.), a smart home appliance, an in-vehicle terminal, an aircraft, etc.), and it integrates a client application.

[0063] The client here can be a client capable of displaying data information such as text, images, audio, and video, including but not limited to multimedia clients (e.g., video clients), social clients (e.g., instant messaging clients), news applications (e.g., news clients), entertainment clients (e.g., game clients), shopping clients, in-vehicle clients, browsers, etc. This client can be a standalone client or an embedded sub-client integrated into another client (e.g., a social client); there is no limitation on this.

[0064] The content creation device and the content presentation device can be the same device or different devices. Both include multiple modules, each used to perform different functions. These modules can be integrated into the same electronic device or located in different electronic devices. The content creation device can be used to perform functions such as video data acquisition and encoding. Correspondingly, the content presentation device can be used to perform functions such as decoding, rendering, and displaying encapsulated files. Please refer to Figure 6, which is a schematic diagram of the framework of a video data encoding and decoding system provided in an embodiment of this application.

[0065] In Figure 6, on the content creation device side, the real-world visual scene is captured by a set of cameras or a camera device with multiple lenses and sensors. The captured camera images A are video data B, which includes multiple frames of captured images. Alternatively, on the content creation device side, multiple frames of screen content images A can serve as video data B. After content acquisition is complete, the video data B is encoded to obtain video stream C, which is then sent to the content presentation device.

[0066] On the content presentation device side, the video stream C is decoded, and then the decoded video data B' is rendered to obtain the rendered video D, which is then displayed based on the video D.

[0067] It is understood that the encoding and decoding technologies involved in this application can be implemented using cloud technology; for example, using a cloud server as a content production device. Cloud technology refers to a hosting technology that unifies a series of resources such as hardware, software, and networks within a wide area network or local area network to realize the computation, storage, processing, and sharing of data.

[0068] Based on the above introduction of basic concepts and related scenarios, embodiments of this application provide a video encoding method, a video decoding method, a video encoding device, a video decoding device, a computer storage medium, and an electronic device.

[0069] To support the video encoding method in this application, the embodiments of this application, based on existing technologies, add several descriptive fields at the system layer and define corresponding high-level syntax data structures. In the following sections, the above video encoding method will be described in detail with reference to various syntax tables.

[0070] Please refer to Figure 7, which is a flowchart illustrating the video encoding method provided in this application embodiment, specifically including:

[0071] Step 011: Obtain the video stream. The video stream includes decoding indication information, which includes intra-block copying parameters. The intra-block copying parameters are used to indicate the decoding mode of intra-block copying.

[0072] Step 012: Decode the video stream according to the decoding instruction information.

[0073] Specifically, a bitstream, or video bitstream, is obtained by encoding and compressing video data (such as images captured by a camera or images of screen content generated by a computer).

[0074] The image generation method of a video stream can be determined based on the generation method of the video data that generates the video stream. For example, the image generation method of a video stream can include camera shooting and computer (specifically, electronic device) generation. When the video stream is generated from images captured by a camera, the image generation method of the video stream can be determined to be camera shooting. When the video stream is generated from screen content images generated by a computer, the image generation method of the video stream can be determined to be computer generation.

[0075] The decoding end can obtain the video stream sent by the encoding end. The video stream contains decoding instruction information for decoding instruction. The decoding end can then decode the video stream according to the decoding instruction information.

[0076] Decoding indication information is used to indicate the decoding of different data in the video stream. Decoding indication information includes the video sequence, which is the highest-level syntax structure of the video stream.

[0077] Decoding indication information includes intra-block copying parameters, or IBC parameters. Intra-block copying parameters are used to indicate the decoding mode of intra-block copying; that is, IBC parameters indicate the IBC mode used when encoding the video stream.

[0078] The intra-frame block copying (IBC) mode matches the image generation method corresponding to the video bitstream. For example, video sequences with different image generation methods correspond to different IBC modes.

[0079] IBC parameters are used to characterize the IBC technology used when encoding video data. For example, IBC parameters can indicate whether IBC mode is allowed and the IBC mode used during encoding.

[0080] Optionally, the IBC parameters are set to at least one of the following: sequence-level parameters, image-level parameters, slice-level parameters, and block-level parameters of the video sequence.

[0081] Optionally, the IBC mode includes a first sub-mode and a second sub-mode, such that the first sub-mode and the second sub-mode correspond to the camera shooting method and the computer-generated method, respectively; or, the first sub-mode and the second sub-mode correspond to the computer-generated method and the camera shooting method, respectively.

[0082] The intra-block copying parameters corresponding to the first sub-mode are set to at least one of the following: sequence-level parameters, image-level parameters, slice-level parameters, and block-level parameters of the video sequence; the intra-block copying parameters corresponding to the second sub-mode are set to at least one of the following: sequence-level parameters, image-level parameters, slice-level parameters, and block-level parameters of the video sequence.

[0083] Optionally, the intra-block copying parameters corresponding to the first sub-mode are set in the image-level parameter information, and the intra-block copying parameters corresponding to the second sub-mode are set in the image-level parameter information.

[0084] Alternatively, the intra-block copying parameters corresponding to the first sub-mode are set in the sequence-level parameter information, and the intra-block copying parameters corresponding to the second sub-mode are set in the image-level parameter information.

[0085] Alternatively, the intra-block copying parameters corresponding to the first sub-mode can be set in the image-level parameter information, and the intra-block copying parameters corresponding to the second sub-mode can be set in the sequence-level parameter information.

[0086] Specifically, the IBC parameter set in the sequence-level parameter information is effective for the entire video sequence, the IBC parameter set in the image-level parameter information is effective for the corresponding image, the IBC parameter set in the slice-level parameter information is effective for the corresponding image slice, and the IBC parameter set in the block-level parameter information is effective for the corresponding image block.

[0087] Optionally, the sequence-level parameter information includes a sequence header, which includes intra-block copying parameters.

[0088] A video sequence includes a sequence header, followed by one or more coded images. The IBC parameters set in the sequence header are effective for all coded images following the sequence header. In other words, the coded images following the sequence header can be encoded according to the IBC parameters of the sequence header.

[0089] Optionally, the image-level parameter information includes an image header, which includes intra-block copying parameters.

[0090] A video sequence includes an image header. Before each coded image following the sequence header, there is an image header. The IBC parameters set in the image header are effective for all coded images following the image header. That is to say, the coded images following the image header can be encoded according to the IBC parameters of the image header.

[0091] Optionally, the slice-level parameter information includes a slice header, which includes intra-frame block copying parameters.

[0092] The video sequence includes a title sequence. The encoded image is divided into multiple segments, each preceded by a title sequence. The IBC parameters set in the title sequence are effective for all segments following the title sequence. In other words, the segments following the title sequence can be encoded according to the IBC parameters of the title sequence.

[0093] Optionally, the block-level parameter information includes coding blocks (or coding units), prediction blocks (or prediction units), and transform blocks (or transform units). The block-level parameter information may include intra-block copying parameters.

[0094] During encoding, the coding block, prediction block, and transform block can be encoded according to the IBC parameters in the coding block, prediction block, and transform block, respectively.

[0095] The IBC-related technologies in this application include a variety of pre-defined tools and methods, forming an IBC tool list.

[0096] Optionally, the tool methods include Adaptive Motion Vector Resolution (AMVR), Adaptive Block Vector Resolution (ABVR), Class-based Block Vector Prediction (CBVP), Filtered Intra Block Copy (FIBC), Fractional PEL IBC (IBC-FRAC), Symmetric Intra Block Copy (SIBC), Reconstruction-Reordered IBC (RRIBC), Inter Prediction Correction (InterPC), Intra Block Copy with Local Illumination Compensation (IBC), IBC merge mode with block vector differences (IBC-MBVD), and Combined intra block copy and intra prediction merging mode. The method comprises at least one of the following: intra-block copying prediction (IBC-CIIP), intra-block copying with geometry partitioning (IBC-GPM), intra-block copying with template matching (IBC-TM), intra-block copying motion vector prediction merging method (IBC with BVP and merge, IBC BVP-merge), and bi-predictive intra-block copying method (Bi-predictive IBC merge, IBC Bi-Pred).

[0097] The following section introduces each of the tools and methods:

[0098] (1) Adaptive block vector resolution

[0099] The international video coding standard VVC / H.266 (versatile video coding) introduces a CU-level adaptive motion vector resolution (AMVR) scheme. AMVR allows encoding the motion vector difference (MVD) of the CU at different precisions. Depending on the current CU mode, the MVD of the current CU can adaptively select quarter-luminance samples, half-luminance samples, integer luminance samples, or four-luminance samples. The AVS3 standard adopts ABVR technology, which allows the block vector difference (BVD) of the IBC to select integer luminance sample or four-luminance sample precision.

[0100] (2) Category-based block vector prediction

[0101] AVS3 adopts Class-based Block Vector Prediction (CBVP), similar to History-based Motion Vector Prediction (HMVP). This method first uses a History-based Block Vector Prediction (HBVP) list to store information about historical IBC coded blocks. Besides recording the block values ​​(BV) of historical coded blocks, it also records their position, size, and other information. For the current coded block, candidate BVs in the HBVP are classified according to the following criteria:

[0102] Category 0: The area of ​​a historical coded block is greater than or equal to 64 pixels;

[0103] Category 1: BV frequency is greater than or equal to 2;

[0104] Category 2: The coordinates of the top-left corner of the historical encoded block are located to the left of the top-left corner coordinates of the current block;

[0105] Category 3: The coordinates of the top-left corner of the historical coded block are located above the coordinates of the top-left corner of the current block;

[0106] Category 4: The coordinates of the top-left corner of the historical encoded block are located to the upper left of the top-left corner of the current block;

[0107] Category 5: The coordinates of the top-left corner of the historical coded block are located to the upper right of the top-left corner coordinates of the current block;

[0108] Category 6: The coordinates of the top-left corner of the historical coded block are located to the lower left of the top-left corner coordinates of the current block;

[0109] In this algorithm, instances within each category are arranged in reverse order of their encoding sequence (the closer the encoding sequence is to the current block, the higher the sort order). The block value (BV) corresponding to the first historical encoded block is the candidate BV for that category. Then, candidate BVs for each category are added to the CBVP list in order from category 0 to category 6. This list is then used to derive the predicted block vector.

[0110] The next-generation international video coding standard's reference software platform (Enhanced Compression Model, ECM) includes a clustering-based Block Vector Prediction (BVP) mode. The construction of the IBC Merge / AMVP candidate list has been modified compared to the VVC inter-frame Merge / AMVP model as follows:

[0111] During the construction of the IBC AMVP candidate list, when both BV candidate components are non-zero, clustering of BVP candidates can be applied. If there are more than two valid BV candidates, and a maximum of six candidates can be clustered, then L2 distance is used for clustering.

[0112] The clustering method is applied in the order of the candidate list. Candidates assigned to a group are removed from the list for subsequent clustering. Within each group, the BVP with the lowest template matching cost is selected as the representative candidate for that group. Finally, the representative candidates from the first two groups are selected as candidates for the IBC AMVP list.

[0113] Merge and Advanced Motion Vector Prediction (AMVP) are two motion vector prediction methods used in video coding standards H.265 / HEVC, H.266 / VVC, and AVS3.

[0114] (3) Block copy intra-prediction filtering

[0115] An additional filtered IBC mode is introduced in ECM, in which a filter is applied to the IBC predictor, which is obtained by minimizing the mean square error (MSE) between the current template and the reference template.

[0116] The filter output is calculated as follows:

[0117] predLumaVal=c0C+c1N+c2S+c3E+c4W+c5P+c6B;

[0118] The nonlinear term P represents the second power of the central sample C and is scaled to the range of sample values ​​of the content.

[0119] P = (C*C + midVal) >> bitDepth;

[0120] The bias term B represents the scalar offset between the input and output and is set to the intermediate brightness value (512 for 10-bit content).

[0121] (4) IBC mode with pixel-level precision

[0122] In the additional options, the choice of block vector resolution is expanded to include quarter-pixel resolution in addition to full-pixel and 4-pixel resolutions. Similar to the Inter-Frame Adaptive Motion Vector Resolution (AMVR) syntax, the first bit is passed to indicate whether the BV is at quarter-pixel resolution, and the second bit is passed to switch between full-pixel and 4-pixel resolutions. Interpolation filters are applied to the luma (8-point interpolation) and chroma (6-point interpolation) components of the IBC block. For template-based IBC tools, a 2-point bilinear interpolation filter is applied to generate the template prediction block. Reference sample padding is performed when some reference samples are located outside the IBC reference region. Horizontal padding is performed first, followed by vertical padding, as needed.

[0123] (5) Intra-prediction mode based on reconstructed value inversion for block copying

[0124] ECM allows the use of Reconstruction Reordering (RR-IBC) mode for IBC coded blocks. When RR-IBC is applied, samples in the reconstructed block are flipped according to the current block's flipping type. At the encoder end, the original block is flipped before motion search and residual calculation, while the prediction block is not flipped. At the decoder end, the reconstructed block is flipped back to recover the original block. For RR-IBC coded blocks, both horizontal and vertical flipping methods are supported. SIBC is another flip-based block copy intra-prediction mode; unlike RR-IBC, SIBC flips the predicted values.

[0125] (6) Intra-frame prediction with block copying and local illumination compensation

[0126] Intra-Block Copying with Local Illumination Compensation (IBC-LIC) compensates for local illumination variations between IBC-coded CUs and their predicted blocks in an image by deriving linear equations. The parameters of these linear equations are the same as those for Inter-Frame Prediction Local Illumination Compensation (LIC), derived from templates of the current and reference blocks. The only difference is that the reference template is generated using block vectors in IBC-LIC. IBC-LIC can be applied to both IBC AMVP and IBC Merge modes.

[0127] (7) IBC Merge mode with block vector residuals

[0128] In IBC-MBVD, a distance set of 1-128 pixels is included, with two horizontal directions and two vertical directions. This method selects candidate BVPs based on IBC Merge and determines the BVD from the distance and direction sets, thereby deriving the BV from the BVPs and BVDs.

[0129] (8) IBC and Intra-Prediction Combination Mode

[0130] Combined Intra-Block Copy and Intra-Prediction (IBC-CIIP) is a coding tool used to obtain the CUs of two prediction signals using IBC and intra-prediction, and then weighted summation of the two prediction signals to generate the final prediction signal.

[0131] (9) IBC model with geometric partitioning

[0132] Intra-Block Copy with Geometric Partitioning (IBC-GPM) divides a CU into two sub-partitions using geometric partitioning. Predictive signals for both sub-partitions are generated using IBC and intra-prediction. When using IBC-GPM, a geometric partitioning mode set flag is passed, indicating whether to select the first or second geometric partitioning mode set, followed by the geometric partitioning mode index. An IBC-GPM intra-frame flag is passed, indicating whether to use intra-prediction for the first sub-partition. When using intra-prediction for a sub-partition, an intra-prediction mode index is passed. When using IBC for a sub-partition, a merge index is passed.

[0133] (10) IBC mode with template matching

[0134] In IBC, template matching is used in both the IBC Merge mode and the IBC AMVP mode.

[0135] In IBC-TM Merge mode, selected candidates are optimized using a template matching method. In IBC-TM AMVP mode, up to three candidates are selected from the IBC-TM Merge list. These three selected candidates are refined using a template matching method and sorted according to their resulting template matching costs. Then, only the top two candidates are considered in the motion estimation process as usual. In IBC-TM Merge mode, all refinement is performed with integer precision, while in IBC-TM AMVP mode, refinement can be performed with integer or 4-pixel precision depending on the AMVR value. Such refinement only accesses samples that do not require interpolation. In both cases, the refined motion vector and the template used in each refinement step must conform to the constraints of the reference region.

[0136] (11) Intra-block copying motion vector prediction Merge mode method and bidirectional prediction intra-block copying mode method

[0137] IBC BVP-merge is similar to AMVP-merge; it obtains a motion vector (BV) from the IBC block vector prediction (BVP) and a second motion vector (BV) from the IBC merge to form a bidirectional prediction for IBC. Two different indices need to be passed, one for IBC BVP and one for IBC merge.

[0138] In bidirectional prediction IBC Merge, two motion vectors (BVs) are obtained from the existing IBC Merge list, utilizing two different indices passed.

[0139] The IBC tool list may include one or more of the above-mentioned tool methods. In one example, the IBC tool list is shown in Table 1 below:

[0140] Table 1

[0141] Optionally, the IBC parameters may include multiple tool method set parameters. The tool method set parameters are the parameters corresponding to the tool method set formed by one or more tool methods in the IBC tool list. The tool method set parameters can represent the tool method set used when encoding the current video stream.

[0142] Each sub-mode of IBC indicates the tool method used when encoding the video stream. The tool methods corresponding to each sub-mode of IBC form a tool method set parameter, and each sub-mode has its own set of tool method parameters.

[0143] Please refer to Table 2 below. Table 2 shows the differences in encoding effects between camera-captured sequences and computer-generated screen content sequences when applying various tools and methods.

[0144] Table 2

[0145] Optionally, the tool method set parameters include multiple tool method parameters (such as ABVR, FIBC, etc. in Table 1). The value of the tool method parameter is a first preset parameter (such as 0) or a second preset parameter (such as 1). When the value of the tool method parameter is the first preset parameter, it means that the tool method set parameter does not use the tool method. When the value of the tool method parameter is the second preset parameter, it means that the tool method set parameter uses the tool method.

[0146] Based on Table 2 above, corresponding tool method set parameters can be set for the IBC mode corresponding to the camera shooting method (such as sub-mode 1) and the IBC mode corresponding to the computer generation method (such as sub-mode 2), respectively. For example, sub-mode 1 corresponds to tool method set parameter 1, and sub-mode 2 corresponds to tool method set parameter 2.

[0147] In one example, the utility method set parameter 1 and utility method set parameter 2 are shown in Table 3 below:

[0148] Table 3

[0149] Among them, the tool method set parameter 1 includes various tool methods used when encoding video data captured by a camera, and the tool method set parameter 2 includes various tool methods used when encoding video data generated by a computer.

[0150] When performing IBC, the tool method set parameter 1 is used to encode video streams with image generation methods captured by cameras, and the tool method set parameter 2 is used to encode video streams with image generation methods generated by computers. This ensures that the IBC parameters match the image generation methods of the video streams, thereby improving the encoding performance of video data with different image generation methods.

[0151] Optionally, tool method set parameter 1 may include one or more of the above-mentioned tool method parameters, and tool method set parameter 2 may also include one or more of the above-mentioned tool method parameters. Tool method set parameter 1 and tool method set parameter 2 are different.

[0152] For example, both Tool Method Set Parameter 1 and Tool Method Set Parameter 2 include ABVR and CBVP parameters. The values ​​of ABVR and CBVP parameters in Tool Method Set Parameter 1 are 0 and 1, respectively, while the values ​​of ABVR and CBVP parameters in Tool Method Set Parameter 2 are 1 and 1, respectively.

[0153] For example, both Tool Method Set Parameter 1 and Tool Method Set Parameter 2 include ABVR and FIBC parameters. The values ​​of ABVR and FIBC parameters in Tool Method Set Parameter 1 are 0 and 1, respectively, while the values ​​of ABVR and FIBC parameters in Tool Method Set Parameter 2 are 1 and 0, respectively.

[0154] For example, both Tool Method Set Parameter 1 and Tool Method Set Parameter 2 include ABVR, FIBC, and SIBC parameters. The values ​​of ABVR, FIBC, and SIBC parameters in Tool Method Set Parameter 1 are 0, 1, and 0, respectively, while the values ​​of ABVR, FIBC, and SIBC parameters in Tool Method Set Parameter 2 are 1, 0, and 1, respectively.

[0155] For example, both Tool Method Set Parameter 1 and Tool Method Set Parameter 2 include ABVR, FIBC, and CBVP parameters. The values ​​of ABVR, FIBC, and CBVP parameters in Tool Method Set Parameter 1 are 0, 1, and 1, respectively, while the values ​​of ABVR, FIBC, and CBVP parameters in Tool Method Set Parameter 2 are 1, 0, and 1, respectively.

[0156] For example, both Tool Method Set Parameter 1 and Tool Method Set Parameter 2 include ABVR, FIBC, IBC-LIC, and CBVP parameters. The values ​​of ABVR, FIBC, IBC-LIC, and CBVP parameters in Tool Method Set Parameter 1 are 0, 1, 1, and 1, respectively, while the values ​​of ABVR, FIBC, IBC-LIC, and CBVP parameters in Tool Method Set Parameter 2 are 1, 0, 1, and 1, respectively.

[0157] Optionally, there are multiple IBC modes, each with its corresponding set of tools and methods, such as one or more sets of tools and methods per mode. Furthermore, each IBC mode corresponds one-to-one with the image generation method of the video data; that is, each image generation method requires a corresponding IBC mode. After determining the image generation method of the video data, the corresponding IBC mode can be determined, and then one of the one or more sets of tools and methods corresponding to that IBC mode can be used for encoding.

[0158] If the IBC mode includes sub-mode 1 and sub-mode 2, the IBC mode is sub-mode 1 when the image generation method is camera shooting, and sub-mode 2 when the image generation method is computer generation. Sub-mode 1 can correspond to parameter 1 of the tool method set in Table 3, and sub-mode 2 can correspond to parameter 2 of the tool method set in Table 3, so as to quickly determine the tool method set for IBC during encoding.

[0159] Thus, the encoding performance of video data with different image generation methods can be improved by using a matching set of IBC tools for encoding video data with different image generation methods.

[0160] It is understandable that the tool set parameters corresponding to the video data of each image generation method can be obtained by conducting encoding experiments on a large amount of video data and verifying the experimental data, thereby obtaining the tool set parameters that meet the user's requirements for the video data encoding performance of each image generation method.

[0161] In some implementations, the configuration parameters of each tool method in each tool method set parameter can be determined according to the corresponding IBC mode.

[0162] Specifically, when applying each utility method during the coding process, the configuration parameters for each utility method need to be set first. Different configuration parameters result in different coding performance when using the utility methods. Therefore, for each IBC mode, the configuration parameters of each utility method corresponding to that IBC mode need to be set to ensure that the configuration parameters of each utility method match the corresponding IBC mode. This helps improve the coding performance when using the set of utility methods corresponding to the IBC mode.

[0163] For example, the ABVR tool can select different vector precisions based on different IBC modes. Similarly, the IBC-PF tool can select different types or numbers of filter modes based on different IBC modes; the IBC-TM tool can select different search ranges based on different IBC modes; and the CBVP tool can select different classification methods and sorting orders based on different IBC modes.

[0164] Optionally, the configuration parameters of each utility method in the utility method set parameters can be determined according to the corresponding mode and encoding information.

[0165] Specifically, in addition to determining the configuration parameters of each tool method in the corresponding tool method set parameters based on the IBC mode, the configuration parameters of each tool method can also be adjusted based on the encoding information. The encoding information includes information required for encoding, such as the predictive coding mode, block size during block partitioning, quantization parameters, etc., and may also include the configuration parameters of each tool method.

[0166] For example, ABVR's configuration parameters include vector precision. When the block size is greater than a preset threshold, a larger vector precision configuration is used, while when the block size is less than the preset threshold, a smaller vector precision configuration is used. This adjusts the ABVR's vector precision in the current IBC mode according to the block size during encoding. Another example is IBC-TM's configuration parameters, which include search range. The search range is positively correlated with the ABVR's vector precision; that is, the higher the ABVR's vector precision, the larger the search range.

[0167] In some implementations, to determine the tool method set used for encoding during decoding, the tool method set parameters corresponding to each IBC mode need to be defined in the decoding instruction information. However, to be applicable to all encoded images, the tool method set parameters can be set in the sequence-level parameter information (such as the sequence header of a video sequence).

[0168] Optionally, the configuration parameters available for each utility method in the utility method set parameters can also be defined in the sequence-level parameter information (such as the sequence header).

[0169] Optionally, the tool method set parameters include multiple tool method parameters, and the values ​​of the tool method parameters are multiple preset parameter values. The configuration parameters of the tool method correspond to the preset parameter values, such as a one-to-one correspondence between preset parameter values ​​and configuration parameters, or one preset parameter value corresponds to multiple configuration parameters.

[0170] In this way, by setting the values ​​of the parameters of each utility method, the configuration parameters of each utility method can be determined when encoding using the utility method set corresponding to the utility method set parameters. This enables precise configuration of the parameters of each utility method set, which is beneficial to improving coding performance.

[0171] Optionally, the mapping table of configuration parameters and corresponding preset parameter values ​​of various tool methods can be defined in the sequence header or directly set at the encoding and decoding ends. After determining the value of each tool method parameter in the tool method set, the mapping table can be queried to obtain the configuration parameters of each tool method when performing IBC.

[0172] For example, the values ​​of ABVR tool method parameters include {0, 1}, and the configuration parameters of ABVR (such as vector precision) include {1 pixel, 4 pixels}. When the preset parameter values ​​and configuration parameters correspond one-to-one, the mapping relationship between the preset parameter values ​​of ABVR tool method parameters and the configuration parameters of ABVR is shown in Table 4 below:

[0173] Table 4

[0174] Combining Tables 3 and 4, that is to say, when the IBC mode is sub-mode 1, the ABVR tool method parameter is 0, that is, the ABVR configuration parameter corresponding to sub-mode 1 is 1 pixel; when the IBC mode is sub-mode 2, the ABVR tool method parameter is 1, that is, the ABVR configuration parameter corresponding to sub-mode 2 is 4 pixels.

[0175] When a preset parameter value corresponds to one or more configuration parameters, the mapping relationship between the preset parameter values ​​of the ABVR tool method parameters and the configuration parameters of ABVR is shown in Table 5 below:

[0176] Table 5

[0177] Combining Tables 3 and 5, that is, when the IBC mode is sub-mode 1, the ABVR tool method parameter value is 0, that is, the ABVR configuration parameter corresponding to sub-mode 1 is 1 pixel; when the IBC mode is sub-mode 2, the ABVR tool method parameter value is 1, that is, the ABVR configuration parameter corresponding to sub-mode 2 is 1 pixel and 4 pixels.

[0178] In some implementations, the intra-block copying parameters include at least one of a flag parameter and a mode parameter. The flag parameter is used to characterize whether intra-block copying is allowed, and the mode parameter is used to characterize the mode of intra-block copying. The mode parameter matches the image generation method of the video data.

[0179] Specifically, as described above, the tool set parameters corresponding to each IBC mode are defined in the sequence header. However, the specific IBC mode used during video sequence encoding is not yet defined. Therefore, IBC parameters may also include at least one of a flag parameter and a mode parameter. The flag parameter determines whether IBC is allowed in the video sequence, while the mode parameter determines the specific IBC mode used for encoding the video sequence. In other words, the mode parameter matches the image generation method of the video data. Encoding video data with different image generation methods using different tool sets corresponding to different IBC modes can improve encoding performance.

[0180] During decoding, after determining that the video sequence has undergone IBC by parsing the flag parameters, the IBC mode during video sequence encoding can be determined by parsing the mode parameters. The corresponding tool method set parameters for the IBC mode are queried in the sequence header, thereby realizing the decoding instruction for IBC, enabling the decoding end to decode correctly, and thus improving encoding and decoding performance.

[0181] In some implementations, the value of the flag parameter can be a first preset value (e.g., 0) or a second preset value (e.g., 1). The first preset value and the second preset value are different. When the flag parameter is the first preset value, intra-block copying is not performed (i.e., IBC mode is not allowed). When the flag parameter is the second preset value, intra-block copying is performed (i.e., IBC mode is not allowed).

[0182] Optionally, IBC mode is not allowed for P and B images; that is, the flag parameter of the IBC parameter in the image header and / or sequence header corresponding to the P and B images is set to a first preset value. Since IBC mode is less effective for P and B images, it is not permitted for them.

[0183] Optionally, when the flag parameter is a first preset value, the mode parameter is not encoded (e.g., the mode parameter is not set) and decoded, thereby reducing the computational load of encoding and decoding. As shown in Table 6 below, if the flag parameter in the sequence header is a first preset value, the mode parameter in the sequence header is not encoded and decoded.

[0184] In some implementations, the mode parameter may take multiple preset values, which are different from each other. When the mode parameter is a different preset value, the mode of intra-block copying is different, and the mode of intra-block copying corresponds one-to-one with the preset value.

[0185] Specifically, the number of preset values ​​is the same as the number of preset IBC modes, meaning there is a one-to-one correspondence between IBC modes and preset values. For example, if multiple preset values ​​include 0 and 1, and the IBC modes include sub-mode 1 and sub-mode 2, a preset value of 0 corresponds to sub-mode 1 of IBC, and a preset value of 1 corresponds to sub-mode 2 of IBC.

[0186] Thus, by encoding the mode parameters, a decoding indication is given for the target IBC mode (such as submode 1 or submode 2) used during encoding.

[0187] Optionally, the image generation method corresponding to the video stream includes a first generation method and a second generation method. The first generation method and the second generation method are different. The value of the mode parameter matches the image generation method. The value of the mode parameter includes a first preset value (such as 0) or a second preset value (such as 1). The first preset value matches the first generation method, and the second preset value matches the second generation method.

[0188] In this way, the image generation method, the value of the mode parameter, and the IBC mode can be matched one by one. Video data with different image generation methods are encoded through the corresponding IBC mode, and the decoding is indicated by the value of the corresponding mode parameter.

[0189] Optionally, the first generation method is one of camera shooting generation and computer generation, and the second generation method is the other of camera shooting generation and computer generation.

[0190] For example, the flag parameter seq_ibc_flag and the mode parameter seq_ibc_mode are defined in the sequence header, as shown in Table 6 below:

[0191] Table 6

[0192] The bitstream descriptions corresponding to Table 6 are as follows:

[0193] The Sequence Header Block Copy Intra-Prediction Flag (Seq_ibc_flag) is a binary variable. A value of '1' indicates that Block Copy Intra-Prediction (IBC) can be used; a value of '0' indicates that Block Copy Intra-Prediction should not be used. The value of SeqIbcFlag is equal to the value of seq_ibc_flag. If seq_ibc_flag does not exist in the bitstream, the value of SeqIbcFlag is 0.

[0194] The Sequence Header Block Copy Intra-Prediction Mode Flag (seq_ibc_mode) is an N-bit unsigned integer (N is determined by the total number of modes; for example, if only 2 seed modes are allowed, then N = log2(2) = 1), indicating that block copy intra-prediction is used. The value of SeqIbcMode is equal to the value of seq_ibc_mode. If seq_ibc_mode does not exist in the bitstream, the value of SeqIbcMode is 0.

[0195] For example, the flag parameter pic_ibc_flag and the mode parameter pic_ibc_mode are defined in the image header, as shown in Table 7 below:

[0196] Table 7

[0197] The bitstream descriptions corresponding to Table 7 are as follows:

[0198] In the following, n = ceil(log2(total_mode_num)), where total_mode_num is the total number of allowed modes, which can be a preset value;

[0199] The image header block copy intra-prediction flag, `pic_ibc_flag`, is a binary variable. A value of '1' indicates that block copy intra-prediction can be used; a value of '0' indicates that block copy intra-prediction should not be used. The value of `PicIbcFlag` is equal to the value of `pic_ibc_flag`. If `pic_ibc_flag` does not exist in the bitstream, the value of `PicIbcFlag` is 0.

[0200] The image header block copy intra-prediction mode flag pic_ibc_mode is an N-bit unsigned integer (N is determined by the total number of modes; for example, if only 2 sub-modes are allowed, then N = log2(2) = 1), indicating the sub-mode type used. The value of PicIbcMode is equal to the value of pic_ibc_mode. If pic_ibc_mode does not exist in the bitstream, the value of PicIbcMode is 0.

[0201] For example, the flag parameter slice_ibc_flag and the mode parameter slice_ibc_mode can be defined in the title sequence, as shown in Table 8 below:

[0202] Table 8

[0203] The bitstream descriptions corresponding to Table 8 are as follows:

[0204] The slice_ibc_flag flag is a binary variable. A value of '1' indicates that slice-copy intra-prediction can be used; a value of '0' indicates that slice-copy intra-prediction should not be used. The value of SliceIbcFlag is equal to the value of slice_ibc_flag. If slice_ibc_flag does not exist in the bitstream, the value of SliceIbcFlag is 0.

[0205] The slice block copies the intra-prediction mode flag slice_ibc_mode, an N-bit unsigned integer (N is determined by the total number of modes; for example, if only 2 sub-modes are allowed, then N = log2(2) = 1), indicating the sub-mode type used. The value of sliceIbcMode is equal to the value of slice_ibc_mode. If slice_ibc_mode does not exist in the bitstream, the value of sliceIbcMode is 0.

[0206] Optionally, a preset value can correspond to multiple IBC modes, so that during encoding, one or more of the available IBC modes can be used for encoding according to actual needs.

[0207] For example, the IBC mode includes submode 1, submode 2, and submode 3. The flag parameter seq_ibc_flag and the mode parameter seq_ibc_mode are defined in the sequence header, as shown in Table 9 below:

[0208] Table 9

[0209] In some implementations, the priority of sequence-level parameter information, image-level parameter information, slice-level parameter information, and block-level parameter information decreases in that order. When the flag parameter in the first priority parameter information is a first preset value, at least one of the mode parameter in the first priority parameter information and the intra-frame block copy parameter in the second priority parameter information is not encoded or decoded, and the second priority is lower than the first priority.

[0210] Specifically, after determining that intra-block copying is not allowed based on the high-priority (i.e., first-priority) flag parameter, at least one of the high-priority mode parameter, the low-priority (i.e., second-priority) flag parameter, and the low-priority mode parameter can be selectively left unencoded or undecoded (i.e., not encoded or undecoded at least one of them) to avoid coding redundancy and reduce the computational load of encoding and decoding.

[0211] For example, after determining that intra-block copying is not allowed based on high-priority flag parameters, high-priority mode parameters are not encoded or decoded; or, after determining that intra-block copying is not allowed based on high-priority flag parameters, low-priority mode parameters are not encoded or decoded; or, after determining that intra-block copying is not allowed based on high-priority flag parameters, low-priority flag parameters are not encoded or decoded.

[0212] For example, after determining that intra-block copying is not allowed based on high-priority flag parameters, high-priority mode parameters are not encoded or decoded; or, after determining that intra-block copying is not allowed based on high-priority flag parameters, low-priority mode parameters are not encoded or decoded; or, after determining that intra-block copying is not allowed based on high-priority flag parameters, low-priority flag parameters are not encoded or decoded; or, after determining that intra-block copying is not allowed based on high-priority flag parameters, both high-priority and low-priority mode parameters are not encoded or decoded; or, after determining that intra-block copying is not allowed based on high-priority flag parameters, both high-priority mode parameters and low-priority flag parameters are not encoded or decoded.

[0213] For example, after determining that intra-block copying is not allowed based on high-priority flag parameters, high-priority mode parameters, low-priority mode parameters, and low-priority flag parameters are not encoded or decoded.

[0214] The parameter information with the first priority can be any one of sequence-level, image-level, or slice-level parameter information. The parameter information with the second priority can be any one of image-level, slice-level, or block-level parameter information.

[0215] In other words, when the flag parameter in the sequence-level parameter information is a first preset value, the sequence-level mode parameters, image-level IBC parameters, slice-level IBC parameters, and block-level IBC parameters are not decoded; when the flag parameter in the image-level parameter information is a first preset value, the image-level mode parameters, slice-level IBC parameters, and block-level IBC parameters are not decoded; when the flag parameter in the slice-level parameter information is a first preset value, the slice-level mode parameters and block-level IBC parameters are not decoded.

[0216] In one example, see Table 10 below. When the flag parameters in the image header are set to the first preset value, the mode parameters in the image header and the IBC parameters in the title sequence are not decoded.

[0217] Table 10

[0218] Optionally, if the flag parameter in the parameter information of the first priority is a second preset value, it indicates that IBC is allowed. If there is no mode parameter in the parameter information of the first priority, the mode parameter of IBC needs to be determined in the parameter information of the next priority, so as to determine the IBC mode of at least one of the encoded images, slices and blocks following the next priority.

[0219] Optionally, if the flag parameters of the first priority and the second priority are both second preset values, and the mode parameters in the parameter information of the first priority are inconsistent with the mode parameters of the second priority, then the IBC mode corresponding to the mode parameters of the second priority shall be used for encoding.

[0220] Specifically, please refer to Table 11 below. When both the sequence header and the image header allow IBC (i.e., the flag parameters of both the sequence header and the image header are 1), if the mode parameters of the sequence header and the image header are inconsistent, such as the mode parameters of the sequence header and the image header being 0 and 1 respectively, the encoded image following the image header will be encoded according to the IBC mode corresponding to mode parameter 1 (such as sub-mode 2), thereby realizing the image-level IBC mode setting.

[0221] Table 11

[0222] Please refer to Table 12 below. When both the image header and the slice header allow IBC (i.e., the flag parameters of both the image header and the slice header are 1), if the mode parameters of the image header and the slice header are inconsistent, such as the mode parameters of the image header and the slice header being 1 and 0 respectively, then the image slice following the slice header will be encoded according to the IBC mode corresponding to the mode parameter being 0 (such as sub-mode 1), thereby realizing the slice-level IBC mode setting.

[0223] Table 12

[0224] In some implementations, the intra-block copying parameters include flag parameters, which characterize whether intra-block copying is allowed and the mode of intra-block copying. The flag parameters are matched with the image generation method of the video data.

[0225] Specifically, in order to reduce the computational load of encoding and decoding, it is not necessary to set the mode parameter separately, but only the flag parameter. The flag parameter indicates whether intra-block copying is allowed and the mode of intra-block copying.

[0226] Optionally, IBC can be allowed by different values ​​of the flag parameter; for example, if the flag parameter is a first preset value (e.g., 0), IBC is not allowed, while if the flag parameter is a value other than the first preset value, IBC is allowed.

[0227] Optionally, IBC mode is not allowed for P and B images; that is, the flag parameter of the IBC parameter in the image header and / or sequence header corresponding to the P and B images is set to the first preset value. Since IBC mode is not recommended for P and B images due to its poor performance, it is not permitted for them.

[0228] Optionally, the specific IBC mode can be determined by taking different values ​​for the flag parameter other than the first preset value. For example, multiple second preset values ​​can be used to correspond to each IBC mode, such as a one-to-one correspondence between the IBC mode and the second preset value.

[0229] In other words, when the flag parameter has different second preset values, IBC is allowed and the IBC modes are different.

[0230] Optionally, the image generation method corresponding to the video stream includes a first generation method and a second generation method, which are different. The value of the flag parameter matches the image generation method corresponding to the video stream, and the value of the mode parameter includes two second preset values, which match the first generation method and the second generation method respectively. For example, the two second preset values ​​are 1 and 2, where 1 corresponds to the first generation method and 2 corresponds to the second generation method.

[0231] In this way, the image generation method, the value of the flag parameter (specifically the second preset value), and the IBC mode can be matched one by one. Video data with different image generation methods are encoded through the corresponding IBC mode and decoded through the corresponding second preset value.

[0232] Please refer to Table 13 below. Taking the IBC mode as an example, which includes sub-mode 1 and sub-mode 2, the flag parameter seq_ibc_flag in the IBC parameters defined in the sequence header is as follows.

[0233] Table 13

[0234] The bit stream description in Table 13 is as follows:

[0235] The Sequence Header Block Copy Mode Flag (seq_ibc_flag) is an N-bit unsigned integer (N is determined by the total number of modes; for example, if only 2 sub-modes are allowed, then N = log2(2) = 1). A value of '0' indicates that block copy intra-prediction should not be used, while a value greater than '0' indicates that block copy intra-prediction mode can be used and indicates the sub-mode type of the block copy intra-prediction mode. The value of SeqIbcFlag is equal to the value of seq_ibc_flag. If seq_ibc_flag does not exist in the bitstream, the value of SeqIbcFlag is 0.

[0236] Please refer to Table 14 below for the flag parameter pic_ibc_flag in the IBC parameters defined in the image header.

[0237] Table 14

[0238] The bit stream description in Table 14 is as follows:

[0239] The image header block copy mode flag pic_ibc_flag is an N-bit unsigned integer (N is determined by the total number of modes; for example, if only 2 sub-modes are allowed, then N = log2(2) = 1). A value of '0' indicates that block copy intra-prediction should not be used, and a value greater than '0' indicates that block copy intra-prediction mode can be used, and indicates the sub-mode type of block copy intra-prediction mode. The value of PicIbcFlag is equal to the value of pic_ibc_flag. If pic_ibc_flag does not exist in the bitstream, the value of PicIbcFlag is 0.

[0240] Please refer to Table 15 below for the slice_ibc_flag flag parameter in the IBC parameters defined in the slice header.

[0241] Table 15

[0242] The bitstream description in Table 15 is as follows:

[0243] The slice_ibc_flag flag is an N-bit unsigned integer (N is determined by the total number of modes; for example, if only 2 sub-modes are allowed, then N = log2(2) = 1). A value of '0' indicates that slice-copy intra-prediction should not be used, while a value greater than '0' indicates that slice-copy intra-prediction mode can be used and indicates the sub-mode type of slice-copy intra-prediction mode. The value of SliceIbcFlag is equal to the value of slice_ibc_flag. If slice_ibc_flag does not exist in the bitstream, the value of SliceIbcFlag is 0.

[0244] Optionally, a second preset value can also correspond to multiple IBC modes, so that during encoding, one or more of the available IBC modes can be used for encoding according to actual needs.

[0245] Please refer to Table 16 below. Taking the IBC mode including submode 1, submode 2 and submode 3 as an example, the flag parameter seq_ibc_flag in the IBC parameters defined in the sequence header is as follows.

[0246] Table 16

[0247] Table 17 below provides a specific example of a high-level syntax that allows two IBC submodes (submode 1 and submode 2).

[0248] Table 17

[0249] The sequence header stream is described as follows:

[0250] Sequence header block copy intra-prediction flag seq_ibc_flag

[0251] A binary variable. A value of '1' indicates that block copy intra-prediction can be used; a value of '0' indicates that block copy intra-prediction should not be used. The value of SeqIbcFlag is equal to the value of seq_ibc_flag. If seq_ibc_flag does not exist in the bitstream, the value of SeqIbcFlag is 0.

[0252] The image headstream is described as follows:

[0253] The image header block copy intra-prediction flag, `pic_ibc_flag`, is a binary variable. A value of '1' indicates that block copy intra-prediction can be used; a value of '0' indicates that block copy intra-prediction should not be used. The value of `PicIbcFlag` is equal to the value of `pic_ibc_flag`. If `pic_ibc_flag` does not exist in the bitstream, the value of `PicIbcFlag` is 0.

[0254] The image header block copy intra-prediction mode flag pic_ibc_mode is an N-bit unsigned integer (N is determined by the total number of modes; for example, if only 2 sub-modes are allowed, then N = log2(2) = 1), indicating the sub-mode type used. The value of PicIbcMode is equal to the value of pic_ibc_mode. If pic_ibc_mode does not exist in the bitstream, the value of PicIbcMode is 0.

[0255] Furthermore, if this instance controls the ABVR tool, the following bitstream description exists at the coding unit level:

[0256] Adaptive block vector precision index abvr_index

[0257] Used to determine the block vector precision of a coding unit. The value of AbvrIndex is equal to abvr_index. If AbvrIndex is '0', it indicates a block vector precision of 1 pel. If AbvrIndex is '1', it indicates a block vector precision of 4 pel. If abvr_index does not exist in the bitstream, the value of AbvrIndex is 0.

[0258] Furthermore, if this instance controls IBC-related filtering tools, the bitstream description at the coding unit level is as follows:

[0259] The block copy intra-predictive filtering flag, `ibc_filter_flag`, determines whether block copy intra-predictive filtering is used. The value of `ibcFilterFlag` is equal to `ibc_filter_flag`. If `ibcFilterFlag` is '0', it means block copy intra-predictive filtering is not used. If `ibcFilterFlag` is '1', it means it is used. If `ibc_filter_flag` is not present in the bitstream, its value is 0.

[0260] Based on the methods described in the above embodiments, this application also provides a video encoding method. Please refer to Figure 8, which is a flowchart illustrating the video decoding method provided in this application, specifically including:

[0261] Step 021: Acquire video data;

[0262] Step 022: Encode and compress the video data to obtain a video stream. The decoding indication information of the video stream includes intra-frame block copying parameters, which are used to indicate the decoding mode of intra-frame block copying.

[0263] It should be noted that the video encoding process and the video decoding process are reversible. Therefore, the syntax definitions involved in the video encoding method provided in this application can be found in the above-described video decoding method embodiments, and will not be repeated here.

[0264] According to the method described in the above embodiments, this application also provides a video decoding device for performing the steps in the above video decoding method. Please refer to FIG9, which is a schematic structural diagram of the video decoding device 300 provided in this application embodiment. The video decoding device 300 includes a first acquisition module 301 and an encoding module 302, wherein:

[0265] The first acquisition module 301 is used to acquire a video stream, which includes decoding indication information, including intra-frame block copying parameters. The intra-frame block copying parameters are used to provide decoding indication of the intra-frame block copying mode.

[0266] The decoding module 302 is used to decode the video stream according to the decoding instruction information.

[0267] It should be noted that the specific details of each module unit in the video decoding device 300 have been described in detail in the embodiments of the video encoding method, and will not be repeated here.

[0268] According to the method described in the above embodiments, this application also provides a video encoding apparatus for performing the steps in the above video encoding method. Please refer to FIG10, which is a schematic structural diagram of the video encoding apparatus 400 provided in this application embodiment. The video encoding apparatus 400 includes a second acquisition module 401 and an encoding module 402, wherein:

[0269] The second acquisition module 401 is used to acquire video data;

[0270] The encoding module 402 is used to encode and compress video data to obtain a video bitstream. The decoding indication information of the video bitstream includes intra-frame block copying parameters, which are used to indicate the decoding mode of intra-frame block copying.

[0271] It should be noted that the specific details of each module unit in the video decoding device 400 have been described in detail in the embodiments of the video decoding method described above, and will not be repeated here.

[0272] In some embodiments, the video encoding and video decoding devices in this application can be electronic devices or components within electronic devices, such as integrated circuits or chips. The electronic device can be a terminal or other devices besides a terminal. Exemplarily, the electronic device can be a mobile phone, tablet computer, laptop computer, PDA, in-vehicle electronic device, mobile internet device (MID), augmented reality (AR) / virtual reality (VR) device, robot, wearable device, ultra-mobile personal computer (UMPC), netbook, or personal digital assistant (PDA), etc. It can also be a server, network attached storage (NAS), personal computer (PC), television set (TV), ATM, or self-service machine, etc. This application does not specifically limit the scope of the electronic device.

[0273] In some embodiments, as shown in FIG11, this application embodiment also provides an electronic device 500, including a processor 501, a memory 502, and a computer program stored in the memory 502 and executable on the processor 501. When the program is executed by the processor 501, it implements the various processes of the above-described video decoding method and video encoding method embodiments and can achieve the same technical effect. To avoid repetition, it will not be described again here.

[0274] It should be noted that the electronic devices in the embodiments of this application include the aforementioned mobile electronic devices and non-mobile electronic devices.

[0275] Figure 12 is a schematic diagram of the hardware structure of an electronic device that implements an embodiment of this application.

[0276] The electronic device 600 includes, but is not limited to, components such as: radio frequency unit 601, network module 602, audio output unit 603, input unit 604, sensor 605, display unit 606, user input unit 607, interface unit 608, memory 609, and processor 610.

[0277] Those skilled in the art will understand that the electronic device 600 may also include a power supply (such as a battery) for powering various components. The power supply can be logically connected to the processor 610 through a power management system, thereby enabling functions such as managing charging, discharging, and power consumption through the power management system. The electronic device structure shown in Figure 12 does not constitute a limitation on the electronic device. The electronic device may include more or fewer components than shown, or combine certain components, or have different component arrangements, which will not be elaborated here.

[0278] It should be understood that, in this embodiment, the input unit 604 may include a graphics processing unit (GPU) 6041 and a microphone 6042. The GPU 6041 processes image data of still images or videos obtained by an image capture device (such as a camera) in video capture mode or image capture mode. The display unit 606 may include a display panel 6061, which may be configured in the form of a liquid crystal display, an organic light-emitting diode, or the like. The user input unit 607 includes at least one of a touch panel 6071 and other input devices 6072. The touch panel 6071 is also called a touch screen. The touch panel 6071 may include a touch detection device and a touch controller. Other input devices 6072 may include, but are not limited to, physical keyboards, function keys (such as volume control buttons, power buttons, etc.), trackballs, mice, and joysticks, which will not be described in detail here.

[0279] The memory 609 can be used to store software programs and various data. The memory 609 may primarily include a first storage area for storing programs or instructions and a second storage area for storing data. The first storage area may store the operating system, application programs or instructions required for at least one function (such as sound playback, image playback, etc.). Furthermore, the memory 609 may include volatile memory or non-volatile memory, or both. The non-volatile memory may be read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), or flash memory. Volatile memory can be random access memory (RAM), static random access memory (SRAM), dynamic random access memory (DRAM), synchronous dynamic random access memory (SDRAM), double data rate synchronous dynamic random access memory (DDRSDRAM), enhanced synchronous dynamic random access memory (ESDRAM), synchronous link dynamic random access memory (SLDRAM), and direct memory bus RAM (DRRAM). The memory 609 in this embodiment includes, but is not limited to, these and any other suitable types of memory.

[0280] Processor 610 may include one or more processing units; processor 610 integrates an application processor and a modem processor, wherein the application processor mainly handles operations involving the operating system, user interface, and applications, and the modem processor mainly handles wireless communication signals, such as a baseband processor. It is understood that the aforementioned modem processor may also not be integrated into processor 610.

[0281] This application also provides a non-transitory computer-readable storage medium storing a computer program. When the computer program is executed by a processor, it implements the various processes of the above-described video decoding method and video encoding method embodiments and achieves the same technical effect. To avoid repetition, it will not be described again here.

[0282] The processor is the processor in the electronic device described in the above embodiments. The computer-readable storage medium may be a computer read-only memory (ROM), random access memory (RAM), magnetic disk, or optical disk, etc.

[0283] This application also provides a computer program product, including a computer program that, when executed by a processor, implements the aforementioned video decoding method and video encoding method. The processor may be a processor in the electronic device described in the above embodiments. When executed by the processor, the computer program implements the various processes of the embodiments of the aforementioned video decoding method and video encoding method, achieving the same technical effects; therefore, to avoid repetition, further details are omitted here.

[0284] Although embodiments of this application have been shown and described, those skilled in the art will understand that various changes, modifications, substitutions and alterations can be made to these embodiments without departing from the principles and spirit of this application, the scope of which is defined by the claims and their equivalents.

Claims

1. A method of video decoding, the method comprising: include: Acquire a video stream, the video stream including decoding indication information, the decoding indication information including intra-block copying parameters, the intra-block copying parameters being used to provide decoding indication of the intra-block copying mode; The video stream is decoded according to the decoding instruction information.

2. The method of claim 1, wherein, The intra-frame block copying mode includes a first sub-mode and a second sub-mode, and the decoding indication information includes a video sequence; the intra-frame block copying parameters corresponding to the first sub-mode are set to at least one of the sequence-level parameter information, image-level parameter information, slice-level parameter information, and block-level parameter information of the video sequence; the intra-frame block copying parameters corresponding to the second sub-mode are set to at least one of the sequence-level parameter information, image-level parameter information, slice-level parameter information, and block-level parameter information of the video sequence.

3. The method of claim 2, wherein, The intra-block copying parameters corresponding to the first sub-mode are set in the image-level parameter information, and the intra-block copying parameters corresponding to the second sub-mode are set in the image-level parameter information; or, the intra-block copying parameters corresponding to the first sub-mode are set in the sequence-level parameter information, and the intra-block copying parameters corresponding to the second sub-mode are set in the image-level parameter information; or, the intra-block copying parameters corresponding to the first sub-mode are set in the image-level parameter information, and the intra-block copying parameters corresponding to the second sub-mode are set in the sequence-level parameter information.

4. The method according to any one of claims 1 to 3, characterized in that, The intra-frame block copying mode matches the image generation method corresponding to the video bitstream.

5. The method according to any one of claims 1 to 4, characterized in that, The intra-block copying parameters include at least one of a flag parameter and a mode parameter. The flag parameter is used to characterize whether intra-block copying is allowed, and the mode parameter is used to characterize the mode of intra-block copying. The value of the flag parameter includes a first preset value or a second preset value. The first preset value and the second preset value are different. When the flag parameter is the first preset value, intra-block copying is not allowed. When the flag parameter is the second preset value, intra-block copying is allowed.

6. The method of claim 5, wherein, The priority of sequence-level parameter information, image-level parameter information, slice-level parameter information, and block-level parameter information decreases in that order. When the flag parameter in the first priority parameter information is the first preset value, at least one of the mode parameter in the first priority parameter information and the intra-frame block copy parameter in the second priority parameter information is not encoded or decoded, and the second priority is lower than the first priority.

7. The method of claim 5, wherein, The mode parameter has multiple preset values, and these preset values ​​are different from each other. When the mode parameter is a different preset value, the intra-block copying mode is different. Each preset value corresponds to at least one intra-block copying mode.

8. The method of claim 5, wherein, The image generation method corresponding to the video stream includes a first generation method and a second generation method. The first generation method and the second generation method are different. The value of the mode parameter matches the image generation method. The value of the mode parameter includes a first preset value or a second preset value. The first preset value matches the first generation method, and the second preset value matches the second generation method.

9. The method according to any one of claims 1 to 4, characterized in that, The intra-block copying parameters include a flag parameter, the value of which includes a first preset value and multiple second preset values. When the flag parameter is the first preset value, intra-block copying is not performed. When the flag parameter is the second preset value, intra-block copying is performed, and when the flag parameter is different for the second preset value, the intra-block copying mode is different, and each second preset value corresponds to at least one intra-block copying mode.

10. The method of claim 9, wherein, The image generation method corresponding to the video stream includes a first generation method and a second generation method. The first generation method and the second generation method are different. The value of the flag parameter matches the image generation method corresponding to the video stream. The value of the mode parameter includes two second preset values, which match the first generation method and the second generation method respectively.

11. The method according to claim 8 or 10, characterized in that, The first generation method is one of camera shooting generation and computer generation, and the second generation method is the other of camera shooting generation and computer generation.

12. The method of claim 2, wherein, The method for performing intra-block copying includes a variety of preset tool methods. The intra-block copying parameters also include multiple tool method set parameters. The tool method set parameters include at least one of the tool methods. The tool method set parameters are set in the sequence-level parameter information. Each sub-mode of intra-block copying is used to indicate the tool method used when encoding the video bitstream. Each sub-mode of intra-block copying has a corresponding tool method set parameter.

13. The method of claim 12, wherein, The tool method includes at least one of the following: adaptive motion vector resolution method, adaptive block vector resolution method, category-based block vector prediction method, block copy intra-prediction filtering method, intra-block copy mode method with subpixel accuracy, mirrored block copy intra-prediction mode method, block copy intra-prediction mode method based on reconstructed value inversion, inter-frame prediction correction method, block copy intra-prediction method with local illumination compensation, intra-block copy merging method with block vector residual, intra-block copy and intra-prediction merging mode method, intra-block copy mode with geometric partitioning, intra-block copy mode method with template matching, intra-block copy motion vector prediction merging method, and bidirectional prediction intra-block copy mode method.

14. The method of claim 12, wherein, The tool method set parameters include multiple tool method parameters, and the values ​​of the tool method parameters include multiple preset parameter values, which correspond to the configuration parameters of the tool methods.

15. The method of claim 14, wherein, The configuration parameters of each tool method in the tool method set parameters are determined according to the corresponding mode; or, the configuration parameters of each tool method in the tool method set parameters are determined according to the corresponding mode and encoding information.

16. The method according to any one of claims 5-8, characterized in that, If the flag parameters in the parameter information of the first priority and the parameter information of the second priority are both the second preset value, and the mode parameters in the parameter information of the first priority and the mode parameters in the parameter information of the second priority are inconsistent, then the mode parameters corresponding to the mode parameters of the second priority shall be used for decoding.

17. The method of claim 5 or 9, wherein, The image types of the video stream's image frames include a first type, a second type, and a third type. The first type of image is a fully encoded image. The second type of image is an image generated by referencing a previous first type of image, containing only the encoded difference portion. The third type of image is an image generated by referencing the encoding of the preceding and following images. The first type of image and the second type of image do not undergo intra-frame block copying.

18. A method of video encoding, comprising: include: Acquire video data; The video data is encoded and compressed to obtain a video stream. The decoding indication information of the video stream includes intra-frame block copying parameters, which are used to indicate the decoding mode of intra-frame block copying.

19. An apparatus for video decoding, the apparatus comprising: include: The first acquisition module is used to acquire a video stream, the video stream including decoding indication information, the decoding indication information including intra-frame block copying parameters, the intra-frame block copying parameters being used to provide decoding indication of the intra-frame block copying mode; The decoding module is used to decode the video stream according to the decoding instruction information.

20. A video encoding apparatus, comprising: include: The second acquisition module is used to acquire video data; The encoding module is used to encode and compress the video data to obtain a video bitstream. The decoding indication information of the video bitstream includes intra-frame block copying parameters, which are used to indicate the decoding mode of intra-frame block copying.

21. A non-transitory computer-readable storage medium having stored thereon a computer program, characterized in that, When executed by a processor, the computer program implements the video decoding method as described in any one of claims 1-17 or the video encoding method as described in claim 18.

22. An electronic device comprising a memory, a processor, and a computer program stored on the memory and executable on the processor, wherein, When the processor executes the program, it implements the video decoding method as described in any one of claims 1-17 or the video encoding method as described in claim 18.

23. A computer program product, characterised in that, The computer program product includes a computer program that, when executed by a processor, implements the video decoding method as described in any one of claims 1-17 or the video encoding method as described in claim 18.