WO2023173809A1 - 视频编解码方法、装置、存储介质、电子设备及计算机程序产品 - Google Patents
视频编解码方法、装置、存储介质、电子设备及计算机程序产品 Download PDFInfo
- Publication number
- WO2023173809A1 WO2023173809A1 PCT/CN2022/135499 CN2022135499W WO2023173809A1 WO 2023173809 A1 WO2023173809 A1 WO 2023173809A1 CN 2022135499 W CN2022135499 W CN 2022135499W WO 2023173809 A1 WO2023173809 A1 WO 2023173809A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- vector
- block
- displacement vector
- prediction
- decoded
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
- H04N19/521—Processing of motion vectors for estimating the reliability of the determined motion vectors or motion vector field, e.g. for smoothing the motion vector field or for correcting motion vectors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
- H04N19/517—Processing of motion vectors by encoding
- H04N19/52—Processing of motion vectors by encoding by predictive encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/136—Incoming video signal characteristics or properties
- H04N19/137—Motion inside a coding unit, e.g. average field, frame or block difference
- H04N19/139—Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/159—Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
Definitions
- the present application relates to the field of computer and communication technologies, and in particular to a video encoding and decoding method, device, storage medium, electronic equipment and computer program product.
- a default prediction vector can be derived. However, if these default prediction vectors are improperly selected, it will affect the encoding performance.
- Embodiments of the present application provide a video encoding and decoding method, device, computer-readable storage medium, electronic equipment and computer program products, which can, to a certain extent, construct a more suitable displacement vector based on the reference frame being the decoded block of the current frame.
- a candidate list of predicted vectors to ensure that more accurate predicted vectors are selected, which is beneficial to improving coding performance.
- An embodiment of the present application provides a video decoding method, which includes: generating a prediction vector candidate list based on the displacement vector of a decoded block whose reference frame is the current frame; and selecting a prediction of the current block to be decoded from the prediction vector candidate list.
- Vector perform decoding processing on the current block based on the prediction vector of the current block.
- An embodiment of the present application provides a video encoding method, which includes: generating a prediction vector candidate list based on the displacement vector of a coded block whose reference frame is the current frame; and selecting a prediction of the current block to be encoded from the prediction vector candidate list.
- Vector encoding the current block based on the prediction vector of the current block.
- An embodiment of the present application provides a video decoding device, including: a first generation unit configured to generate a prediction vector candidate list based on the reference frame being the displacement vector of the decoded block of the current frame; a first selection unit configured to generate a prediction vector candidate list from the decoded block of the current frame. Select the prediction vector of the current block to be decoded from the prediction vector candidate list; the first processing unit is configured to decode the current block based on the prediction vector of the current block.
- An embodiment of the present application provides a video encoding device, including: a second generation unit configured to generate a prediction vector candidate list based on the reference frame being a displacement vector of a coded block of the current frame; a second selection unit configured to generate a prediction vector candidate list from the Select the prediction vector of the current block to be encoded from the prediction vector candidate list; the second processing unit is configured to perform encoding processing on the current block based on the prediction vector of the current block.
- Embodiments of the present application provide a computer-readable storage medium.
- a computer program is stored on the computer-readable storage medium.
- the computer program is executed by a processor, the method described in the above embodiments is implemented.
- Embodiments of the present application provide an electronic device, including: one or more processors; a memory configured to store one or more programs, when the one or more programs are executed by the one or more processors , so that the electronic device implements the method described in the above embodiment.
- Embodiments of the present application provide a computer program product or computer program.
- the computer program product or computer program includes computer instructions, and the computer instructions are stored in a computer-readable storage medium.
- the processor of the computer device reads the computer instructions from the computer-readable storage medium, and the processor executes the computer instructions, so that the computer device executes the method provided above.
- a predictor vector candidate list is generated, and then the predictor vector of the current block is selected from the predictor vector candidate list, so that the reference frame can be the displacement vector of the decoded block of the current frame.
- construct a more suitable prediction vector candidate list to ensure that more accurate prediction vectors are selected from it, which is beneficial to improving coding performance.
- Figure 1 is a schematic diagram of an exemplary system architecture in an embodiment of the present application
- Figure 2 is a schematic diagram of the placement of the video encoding device and the video decoding device in the streaming transmission system in the embodiment of the present application;
- Figure 3 is a schematic diagram of the relationship between SB and B in the embodiment of the present application.
- Figure 4 is a basic flow chart of a video encoder in an embodiment of the present application.
- Figure 5 is a schematic diagram of inter-frame prediction in an embodiment of the present application.
- Figure 6 is a schematic diagram of intra-frame block copying in an embodiment of the present application.
- Figure 7 is a schematic diagram of the reference range of IBC in AV1 in the embodiment of the present application.
- Figure 8 is a schematic diagram of the reference range of IBC in AV2 in the embodiment of the present application.
- Figure 9 is a flow chart of the video decoding method in the embodiment of the present application.
- Figure 10 is a schematic diagram of selecting decoded blocks adjacent to the current block in an embodiment of the present application.
- Figure 11 is a flow chart of the video decoding method in the embodiment of the present application.
- Figure 12 is a flow chart of the video encoding method in the embodiment of the present application.
- Figure 13 is a block diagram of a video decoding device in an embodiment of the present application.
- Figure 14 is a block diagram of a video encoding device in an embodiment of the present application.
- FIG. 15 is a schematic structural diagram of a computer system of an electronic device in an embodiment of the present application.
- Figure 1 is a schematic diagram of an exemplary system architecture of the technical solution of the embodiment of the present application.
- system architecture 100 includes a plurality of terminal devices that can communicate with each other through, for example, network 150 .
- the system architecture 100 may include a first terminal device 110 and a second terminal device 120 interconnected through a network 150 .
- the first terminal device 110 and the second terminal device 120 perform one-way data transmission.
- the first terminal device 110 may encode video data (such as a video picture stream collected by the terminal device 110) for transmission to the second terminal device 120 through the network 150.
- the encoded video data is represented by one or more
- the encoded video is transmitted in the form of a stream.
- the second terminal device 120 can receive the encoded video data from the network 150, decode the encoded video data to restore the video data, and display video pictures according to the restored video data.
- the system architecture 100 may include a third terminal device 130 and a fourth terminal device 140 that perform bidirectional transmission of encoded video data, which bidirectional transmission may occur, for example, during a video conference.
- each of the third terminal device 130 and the fourth terminal device 140 may encode video data (eg, a video picture stream collected by the terminal device) for transmission to the third terminal device through the network 150 130 and another terminal device among the fourth terminal devices 140 .
- Each of the third terminal device 130 and the fourth terminal device 140 may also receive the encoded video data transmitted by the other terminal device of the third terminal device 130 and the fourth terminal device 140, and may The video data is decoded to recover the video data, and the video picture can be displayed on an accessible display device based on the recovered video data.
- the first terminal device 110 , the second terminal device 120 , the third terminal device 130 and the fourth terminal device 140 may be servers or terminals, but the principles disclosed in this application may not be limited thereto.
- the server can be an independent physical server, or a server cluster or distributed system composed of multiple physical servers. It can also provide cloud services, cloud databases, cloud computing, cloud functions, cloud storage, network services, cloud communications, and middleware. Cloud servers that provide basic cloud computing services such as software services, domain name services, security services, Content Delivery Network (CDN), and big data and artificial intelligence platforms.
- the terminal can be a smartphone, tablet, laptop, desktop computer, smart speaker, smart voice interaction device, smart watch, smart home appliance, vehicle terminal, aircraft, etc., but is not limited to this.
- the network 150 shown in FIG. 1 represents any number of networks for transmitting encoded video data between the first terminal device 110 , the second terminal device 120 , the third terminal device 130 and the fourth terminal device 140 , including, for example, wired and /or wireless communication network.
- Communication network 150 may exchange data in circuit-switched and/or packet-switched channels.
- the network may include telecommunications networks, local area networks, wide area networks, and/or the Internet. For purposes of this application, unless explained below, the architecture and topology of network 150 may be immaterial to the operations disclosed herein.
- FIG. 2 illustrates the placement of a video encoding device and a video decoding device in a streaming environment.
- the subject matter disclosed herein is equally applicable to other video-enabled applications, including, for example, video conferencing, digital television (TV), storage of compressed video on digital media including CDs, DVDs, memory sticks, etc., and the like.
- the streaming system may include a capture subsystem 213, which may include a video source 201 such as a digital camera, which creates an uncompressed video picture stream 202.
- the video picture stream 202 includes samples captured by a digital camera. Compared to the encoded video data 204 (or the encoded video stream 204), the video picture stream 202 is depicted as a thick line to emphasize the high data volume of the video picture stream.
- the video picture stream 202 can be processed by the electronic device 220.
- Device 220 includes video encoding device 203 coupled to video source 201 .
- Video encoding device 203 may include hardware, software, or a combination of hardware and software to implement or implement aspects of the disclosed subject matter as described in greater detail below.
- the encoded video data 204 (or encoded video stream 204 ) is depicted as a thin line compared to the video picture stream 202 to emphasize the lower data amount of the encoded video data 204 (or encoded video stream 202 ).
- 204 which may be stored on the streaming server 205 for future use.
- One or more streaming client subsystems such as client subsystem 206 and client subsystem 208 in FIG. 2 , may access streaming server 205 to retrieve copies 207 and 209 of encoded video data 204 .
- Client subsystem 206 may include, for example, video decoding device 210 in electronic device 230 .
- Video decoding device 210 decodes the incoming copy of the encoded video data 207 and produces an output video picture stream 211 that can be presented on a display 212 (eg, a display screen) or another presentation device.
- the encoded video data 204, video data 207, and video data 209 may be encoded according to certain video encoding/compression standards.
- electronic device 220 and electronic device 230 may include other components not shown in the figures.
- electronic device 220 may include a video decoding device
- electronic device 230 may further include a video encoding device.
- the video frame image when After inputting a video frame image, the video frame image will be divided into several non-overlapping processing units according to a block size, and each processing unit will perform similar compression operations.
- This processing unit is called the Coding Tree Unit (CTU), or the Largest Coding Unit (LCU).
- the CTU can be further divided into more refined divisions to obtain one or more basic coding units (Coding Unit, CU).
- CU is the most basic element in a coding link.
- this processing unit may also be called a coding tile, which is a rectangular area of a multimedia data frame that can be independently decoded and encoded.
- the coding slice can be divided further down to obtain one or more maximum coding blocks (Superblock, SB).
- SB is the starting point of block division, which can be divided into multiple sub-blocks, and then the maximum coding block can be further divided into Divide down to obtain one or more blocks.
- Each block is the most basic element of a coding session.
- the relationship between SB and block (B) can be as shown in Figure 3, that is, one SB can contain several Bs.
- Predictive Coding includes intra-frame prediction and inter-frame prediction. After the original video signal is predicted by the selected reconstructed video signal, the residual video signal is obtained. The encoding end needs to decide which predictive coding mode to select for the current coding unit (or coding block) and inform the decoding end. Among them, intra-frame prediction means that the predicted signal comes from an area in the same image that has been encoded and reconstructed; inter-frame prediction means that the predicted signal comes from other images that have been encoded and are different from the current image (called a reference image). .
- Transform & Quantization After the residual video signal undergoes transformation operations such as Discrete Fourier Transform (DFT) and Discrete Cosine Transform (DCT), the signal is converted into the transform domain. Called the transformation coefficient. The transform coefficient performs a lossy quantization operation and loses certain information, making the quantized signal conducive to compressed expression. In some video coding standards, there may be more than one transformation method to choose from, so the encoding end also needs to select one of the transformation methods for the current coding unit (or coding block) and inform the decoding end. The degree of fineness of quantization is usually determined by the quantization parameter (Quantization Parameter, QP).
- QP Quantization Parameter
- a larger value of QP means that coefficients with a larger value range will be quantized into the same output, so it usually results in greater distortion and comparison.
- Low code rate on the contrary, the QP value is small, which means that coefficients with a smaller value range will be quantized into the same output, so it usually brings smaller distortion and corresponds to a higher code rate.
- Entropy Coding or statistical coding The quantized transform domain signal will be statistically compressed and coded according to the frequency of occurrence of each value, and finally a binary (0 or 1) compressed code stream will be output. At the same time, encoding produces other information, such as the selected encoding mode, motion vector data, etc., which also require entropy encoding to reduce the code rate.
- Statistical coding is a lossless coding method that can effectively reduce the bit rate required to express the same signal. Common statistical coding methods include variable length coding (VLC) or context-based binary arithmetic coding (Content Adaptive Binary Arithmetic Coding, CABAC).
- the context-based binary arithmetic coding (CABAC) process mainly includes three steps: binarization, context modeling and binary arithmetic coding.
- the binary data can be encoded through conventional encoding mode and bypass coding mode (Bypass Coding Mode).
- the bypass encoding mode does not need to assign a specific probability model to each binary bit.
- the input binary bit bin value is directly encoded with a simple bypass encoder to speed up the entire encoding and decoding.
- different grammatical elements are not completely independent, and the same grammatical elements themselves also have certain memorability.
- the encoded symbolic information used as conditions is called context.
- the binary bits of the syntax element enter the context modeler sequentially, and the encoder assigns an appropriate probability model to each input binary bit based on the value of the previously encoded syntax element or binary bit.
- the process is context modeling.
- the context model corresponding to the syntax element can be located through the context index increment (context index increment, ctxIdxInc) and the context start index (context index Start, ctxIdxStart). After the bin value and the assigned probability model are sent to the binary arithmetic encoder for encoding, the context model needs to be updated according to the bin value, which is the adaptive process in encoding.
- Loop Filtering The changed and quantized signal will obtain a reconstructed image through the operations of inverse quantization, inverse transformation and prediction compensation. Compared with the original image, some information of the reconstructed image is different from the original image due to the influence of quantization, that is, the reconstructed image will produce distortion. Therefore, filtering operations can be performed on the reconstructed image, such as Deblocking filter (DB), Adaptive Pixel Offset (Sample Adaptive Offset, SAO) or Adaptive Loop Filter (ALF) and other filters. It can effectively reduce the distortion caused by quantization. Since these filtered reconstructed images will be used as references for subsequent encoded images to predict future image signals, the above-mentioned filtering operations are also called loop filtering, that is, filtering operations within the encoding loop.
- DB Deblocking filter
- SAO Sample Adaptive Offset
- ALF Adaptive Loop Filter
- FIG. 4 shows a basic flow chart of a video encoder, in which intra prediction is taken as an example for explanation.
- the original image signal s k [x, y] and the predicted image signal Perform a difference operation to obtain the residual signal u k [x, y].
- the residual signal u k [x, y] is transformed and quantized to obtain the quantized coefficients.
- the quantized coefficients are encoded through entropy coding to obtain the encoded bits.
- the reconstructed residual signal u' k [x, y] is obtained through inverse quantization and inverse transformation processing, and the predicted image signal Superimposed with the reconstructed residual signal u' k [x, y] to generate an image signal image signal
- the reconstructed image signal s' k [x, y] is output through loop filtering.
- the reconstructed image signal s' k [x, y] ] can be used as a reference image for the next frame for motion estimation and motion compensation prediction. Then based on the motion compensation prediction result s' r [x+m x ,y+m y ] and the intra prediction result Get the predicted image signal of the next frame And continue to repeat the above process until the encoding is completed.
- the decoding end for each coding unit (or coding block), after obtaining the compressed code stream (ie, bit stream), entropy decoding is performed to obtain various mode information and quantization coefficients. Then the quantized coefficients undergo inverse quantization and inverse transformation to obtain the residual signal.
- the prediction signal corresponding to the coding unit (or coding block) can be obtained, and then the reconstructed signal can be obtained by adding the residual signal and the prediction signal, and the reconstructed signal then passes through the loop Filtering and other operations produce the final output signal.
- Mainstream video coding standards (such as HEVC, VVC, AVS3, AV1, AV2) all adopt block-based hybrid coding framework.
- the original video data is divided into a series of coding blocks, and video coding methods such as prediction, transformation and entropy coding are combined to achieve video data compression.
- motion compensation is a type of prediction method commonly used in video coding. Motion compensation is based on the redundant characteristics of video content in the time domain or spatial domain, and derives the prediction value of the current coding block from the coded area.
- Such prediction methods include: inter-frame prediction, intra-frame block copy prediction, intra-frame string copy prediction, etc. In coding implementation, these prediction methods may be used alone or in combination.
- AV1 is Alliance for Open Media Video 1, which is the first generation video coding standard formulated by the Open Media Alliance
- AV2 is Alliance for Open Media Video 2 which is the second generation video coding standard formulated by the Open Media Alliance. standard.
- the displacement vector may have different names. In the embodiments of this application, they are uniformly described in the following manner: 1) The displacement vector in inter-frame prediction is called motion displacement. Vector (Motion Vector, MV); 2) The displacement vector in intra-frame block copy is called block displacement vector (BV); 3) The displacement vector in intra-frame string copy is called string displacement vector (String Vector, SV) ).
- Motion Vector Motion Vector
- BV block displacement vector
- String Vector String Vector
- inter-frame prediction uses the correlation in the video time domain to predict the pixels of the current image using pixels adjacent to the encoded image to achieve the purpose of effectively removing video time domain redundancy and effectively saving coding residual data.
- bits P represents the current frame
- Pr represents the reference frame
- B represents the current coding block
- Br represents B's reference block.
- the coordinates of B' in the reference frame are the same as the coordinates of B in the current frame.
- the coordinates of Br are (x r , y r ), and the coordinates of B' are (x, y).
- inter-frame prediction includes two MV prediction technologies: Merge and Advanced Motion Vector Prediction (AMVP).
- Merge mode will create a MV candidate list for the current prediction unit (PU), in which there are 5 candidate MVs (and their corresponding reference images). Traverse these five candidate MVs and select the one with the smallest rate-distortion cost as the optimal MV. If the codec builds the candidate list in the same way, the encoder only needs to transmit the index of the optimal MV in the candidate list.
- HEVC's MV prediction technology also has a skip mode, which is a special case of Merge mode. After finding the optimal MV through Merge mode, if the current block and the reference block are basically the same, then there is no need to transmit For residual data, you only need to transmit the MV index and a skip flag.
- AMVP mode uses the MV correlation of neighboring blocks in the spatial and temporal domains to build a candidate prediction MV list for the current PU.
- the AMVP candidate MV list also includes both air domain and time domain situations. The difference is that the length of the AMVP list is only 2.
- Intra-frame block copy is an encoding tool adopted in the HEVC Screen Content Coding (SCC) extension, which significantly improves the encoding efficiency of screen content.
- SCC Screen Content Coding
- IBC technology is also adopted to improve the performance of screen content encoding. IBC uses the spatial correlation of screen content video and uses the pixels of the encoded image on the current image to predict the pixels of the current block to be encoded, which can effectively save money. The number of bits required to encode a pixel. As shown in Figure 6, the displacement between the current block and its reference block in IBC is called block displacement vector (Block Vector, BV).
- Block Vector Block Vector
- the IBC mode uses a global reference range scheme, that is, the reconstructed area of the current frame is allowed to be used as a reference block for the current block.
- IBC uses off-chip memory to store reference samples, the following restrictions need to be added to solve potential hardware implementation issues of IBC:
- the location of the reference block needs to meet the hardware writeback delay limit. For example, the area of 256 reconstructed samples in the horizontal direction of the current block is not allowed to be used as a reference block.
- the reference range of IBC consists of two parts, called the global reference range and the local reference range.
- the global reference range is the reference range allowed in AV1;
- the local reference range is the newly added reference range, whose size can be, for example, 64 ⁇ 64 (that is, the SB area where the current block is located).
- the pixel samples of this reference range are stored in the additional in on-chip memory, so there is no need to disable the loop filter when using only this reference range.
- IBC allows the use of different reference ranges. For example, for key frames, IBC allows the use of global reference ranges and local reference ranges. For non-key frames, IBC only allows the use of local reference ranges.
- the local reference range can have different sizes in different implementations. For example, in addition to 64 ⁇ 64, it can also be 128 ⁇ 128, etc.
- the value of the block vector has a large change. For example, when the reference block is located in the local reference range, the absolute value of the block vector will be less than 64; and when the reference block is located in the global reference range, the absolute value of the block vector will be greater than 64.
- the default prediction block vectors all point to the global reference range, without taking into account the situation that the current block is in the local reference range. For reference blocks within the local reference range, the default prediction block vector cannot provide better prediction and will result in larger block vector coding overhead.
- FIG. 9 shows a flowchart of a video decoding method provided by an embodiment of the present application.
- the video decoding method can be executed by a device with computing processing functions, such as a terminal device or a server.
- the video decoding method at least includes the following steps:
- Step S910 Generate a prediction vector candidate list based on the displacement vector of the decoded block in which the reference frame is the current frame;
- Step S920 Select the prediction vector of the current block to be decoded from the prediction vector candidate list
- Step S930 Decode the current block based on the prediction vector of the current block.
- the technical solution of the embodiment shown in Figure 9 can construct a more suitable prediction vector candidate list based on the displacement vector of the decoded block of the current frame based on the reference frame, so as to ensure that a more accurate prediction vector is selected from it, which is beneficial to improving coding performance.
- the technical solution of the embodiment shown in Figure 9 can be used to derive a "default" prediction vector, that is, only when each component of the prediction block vector of the current block is 0 is derived through the fixed rules in the standard.
- the prediction vector is derived using the method shown in Figure 9.
- the technical solution of the embodiment shown in Figure 9 can also be directly used.
- steps S910 to S930 shown in Figure 9 are described in detail below:
- step S910 a prediction vector candidate list is generated based on the displacement vector of the decoded block whose reference frame is the current frame.
- the displacement vector may have different names.
- the displacement vector in inter-frame prediction may be called the motion displacement vector MV
- the displacement vector in intra-frame block copying The vector is called the block displacement vector BV
- the displacement vector in intra-frame string copy is called the string displacement vector SV.
- a prediction vector candidate list may be constructed based on the displacement vectors of decoded blocks adjacent to the current block.
- the displacement vector of the decoded block adjacent to the current block can be obtained from the displacement vector of the decoded block whose reference frame is the current frame, and then the decoded blocks adjacent to the current block can be obtained in the set order.
- the displacement vectors of the blocks are sorted to generate a first displacement vector list, and then a prediction vector candidate list is generated based on the first displacement vector list.
- the first displacement vector list can be used as a prediction vector candidate list.
- the decoded blocks adjacent to the current block may include at least one of the following: a decoded block located n 1 rows above the current block, a decoded block located n 2 columns left of the current block; where n 1 and n 2 are positive integers.
- adjacent decoded blocks may be decoded blocks in 3 rows above the current block or in 3 columns to the left, and the basic unit of each row or column may be 8 ⁇ 8 in size.
- the information of the displacement vector is usually stored in 4 ⁇ 4 units. In the implementation, multiple displacement vectors can be obtained by searching through an 8 ⁇ 8 unit, and for different rows or columns, the search can obtain The number of displacement vectors can be different.
- the setting order may be the decoding order of decoded blocks, the scanning order of decoded blocks, and the weight corresponding to the displacement vector.
- the weight corresponding to the displacement vector may be associated with at least one of the following factors: the number of repetitions of the displacement vector, the block size corresponding to the displacement vector, and the block position corresponding to the displacement vector.
- the displacement vector repeats more times, the greater the weight corresponding to the displacement vector, the higher the order in the first displacement vector list; if the block corresponding to the displacement vector is smaller, then the displacement vector corresponds to a smaller block.
- the greater the corresponding weight the higher the order in the first displacement vector list; if the position of the block corresponding to the displacement vector is closer to the current block, then the greater the weight corresponding to the displacement vector, the higher the order in the first displacement vector list.
- the order in the list is also higher.
- a prediction vector candidate list may be constructed based on the displacement vectors of historical decoded blocks.
- the displacement vector of the historical decoded block can be obtained from the displacement vector of the decoded block whose reference frame is the current frame, and then the displacement vector of the historical decoded block can be obtained in a first-in, first-out manner according to the set order. Added to a queue of a set length to generate a second displacement vector list, and then generate a prediction vector candidate list based on the second displacement vector list.
- the second displacement vector list can be used as a prediction vector candidate list.
- the queue length is 3, then displacement vector 1, displacement vector 2 and displacement vector 3 can be stored in the set order.
- the displacement vector in the queue becomes : Displacement vector 2, displacement vector 3 and displacement vector 4; if a new displacement vector 5 needs to be added, the displacement vectors in the queue become: displacement vector 3, displacement vector 4 and displacement vector 5.
- the setting order may be the decoding order of decoded blocks, the scanning order of decoded blocks, and the weight corresponding to the displacement vector.
- the weight corresponding to the displacement vector may be associated with at least one of the following factors: the number of repetitions of the displacement vector, the block size corresponding to the displacement vector, and the block position corresponding to the displacement vector.
- the displacement vector repeats more times, the greater the weight corresponding to the displacement vector, the higher the order in the first displacement vector list; if the block corresponding to the displacement vector is smaller, then the displacement vector corresponds to a smaller block.
- the greater the corresponding weight the higher the order in the first displacement vector list; if the position of the block corresponding to the displacement vector is closer to the current block, then the greater the weight corresponding to the displacement vector, the higher the order in the first displacement vector list.
- the order in the list is also higher.
- the same displacement vector that already exists in the queue is deleted.
- the queue stores displacement vector 1, displacement vector 2 and displacement vector 3.
- the displacement vector 4 is the same as the displacement vector 2, then the displacement vector 2 can be deleted from the queue.
- the resulting queue becomes: displacement vector 1, displacement vector 3, and displacement vector 4.
- a second displacement vector list may correspond to at least one area to be decoded, and the area to be decoded includes one of the following: a maximum coding block SB where the current block is located, a row in the maximum coding block SB where the current block is located , the tile where the current block is located.
- a second displacement vector list corresponds to one SB, or a second displacement vector list corresponds to multiple SBs.
- the displacement vector in the second displacement vector list corresponding to the target area to be decoded ie, the designated area to be decoded
- Adding a displacement vector to the second displacement vector list means that a maximum number can be set for the second displacement vector list corresponding to the area to be decoded. When the maximum number is exceeded, the addition of displacement vectors to the corresponding second displacement vector list can be stopped.
- the number of operations of adding a displacement vector to the corresponding second displacement vector list can also be recorded.
- the operation of adding a displacement vector to the corresponding second displacement vector list is stopped. Add new displacement vector. That is, this embodiment determines whether to stop adding displacement vectors to the corresponding second displacement vector list by recording the number of operations of adding displacement vectors to the second displacement vector list.
- a prediction vector candidate list may be constructed based on the displacement vectors of decoded blocks adjacent to the current block and the displacement vectors of historical decoded blocks.
- the displacement vector of the decoded block adjacent to the current block can be obtained from the displacement vector of the decoded block whose reference frame is the current frame, and from the displacement vector of the decoded block whose reference frame is the current frame, Obtain the displacement vector of the historical decoded block, and then generate a prediction vector candidate list based on the acquired displacement vector of the adjacent decoded block and the displacement vector of the historical decoded block.
- the acquired displacement vectors may be arranged in a set order to generate the Predictor vector candidate list. Duplicate displacement vectors can also be deleted during this process.
- the displacement vectors that are not within the preset area may also be deleted,
- the preset area includes at least one of the following: the current image, the current slice, the current global reference range, and the current local reference range.
- the set order when arranging the obtained displacement vectors in a set order, may be the decoding order of decoded blocks, the scanning order of decoded blocks, the type of decoded blocks, the displacement vector the corresponding weight.
- the weight corresponding to the displacement vector may be associated with at least one of the following factors: the number of repetitions of the displacement vector, the block size corresponding to the displacement vector, and the block position corresponding to the displacement vector.
- a decoded block can be a decoded block adjacent to the current block (i.e., the coding block in the aforementioned first displacement vector list), or it can be a historical decoded block (i.e., the coding block in the aforementioned second displacement vector list). ).
- the type of the decoded block is used to indicate whether the decoded block is a decoded block adjacent to the current block (that is, it represents a coded block in the aforementioned first displacement vector list) or a historical decoded block (that is, it represents the aforementioned coding block in the second displacement vector list).
- the displacement vectors of the decoded blocks adjacent to the current block can be arranged before the displacement vectors of the historical decoded blocks.
- the displacement vectors of the decoded blocks adjacent to the current block can also be arranged before the displacements of the historical decoded blocks. After vector.
- the displacement vector of the decoded block adjacent to the current block can also be obtained from the displacement vector of the decoded block whose reference frame is the current frame, and the decoded blocks adjacent to the current block can be processed in a set order.
- the displacement vectors of the blocks are sorted to generate a first displacement vector list; then the displacement vectors of the historical decoded blocks are obtained from the displacement vectors of the decoded blocks whose reference frame is the current frame, and the historical decoded blocks are sorted in the set order.
- the displacement vectors are added to the queue of set length in a first-in-first-out manner to generate a second displacement vector list; and then a prediction vector candidate list is generated based on the first displacement vector list and the second displacement vector list.
- the process of generating the prediction vector candidate list may be to merge the first displacement vector list and the second displacement vector list, and delete duplicate displacement vectors, to generate a candidate list of predicted vectors.
- the displacement vectors in the first displacement vector list when merging the first displacement vector list and the second displacement vector list, can be arranged before the displacement vectors in the second displacement vector list; of course, it can also Arrange the displacement vectors in the first displacement vector list after the displacement vectors in the second displacement vector list.
- the preset area includes at least one of the following: the current image, the current slice, the current global reference range, and the current local reference range; then, in the process of merging the first displacement vector list and the second displacement vector list, delete those that are not in the preset area. Let the displacement vector in the area.
- step S920 the prediction vector of the current block to be decoded is selected from the prediction vector candidate list.
- the process of selecting the prediction vector of the current block from the prediction vector candidate list may be to obtain the prediction vector index information from the code stream, and then select the corresponding prediction vector from the prediction vector candidate list based on the prediction vector index information. Select a prediction vector at the position as the prediction vector of the current block.
- the prediction vector index information may employ context-based multi-symbol arithmetic encoding.
- the code stream may also contain a maximum value of prediction vector index information.
- the maximum value may be located in a sequence header, an image header, or a slice header.
- the maximum value may represent the maximum amount of prediction vector index information.
- the maximum values corresponding to different displacement vector prediction modes are the same or different.
- the process of selecting the prediction vector of the current block from the prediction vector candidate list may also be to select a prediction vector from the prediction vector candidate list as the prediction vector of the current block according to a set selection strategy.
- the i-th (i is a positive integer) prediction vector can be selected in order as the prediction vector of the current block, or one can be selected randomly.
- step S930 the current block is decoded based on the prediction vector of the current block.
- the process of decoding the current block based on the prediction vector of the current block in step S930 may be to use the prediction vector of the current block as the displacement vector of the current block to decode the current block.
- the process of decoding the current block based on the prediction vector of the current block in step S930 may be to decode the vector residual of the current block from the code stream, and obtain the vector residual of the current block based on the vector residual and the prediction of the current block.
- the vector calculates the displacement vector of the current block, and then decodes the current block according to the displacement vector of the current block.
- FIG 11 shows a flow chart of a video decoding method according to an embodiment of the present application.
- the video decoding method can be executed by a device with computing processing functions, such as a terminal device or a server.
- the video decoding method at least includes the following steps:
- Step S1110 decode the code stream to obtain the reference range type indication information.
- the reference range type indication information is used to indicate the target reference range used in the intra-frame block copy mode.
- the target reference range includes the global reference range and the local reference range. at least one.
- the reference range category indication information can be implemented through two flag bits.
- the reference range category indication information can include a first flag bit and a second flag bit.
- the first flag bit is used to indicate the intra-frame block copy mode. Whether the global reference range is allowed to be used, the second flag bit is used to indicate whether the intra block copy mode allows the use of the local reference range.
- the value of the first flag bit is 1, it means that the intra-block copy mode allows the use of the global reference range; the value of the first flag bit is 0, it means that the intra-block copy mode does not allow the use of the global reference range. Reference range. If the value of the second flag bit is 1, it means that the intra block copy mode allows the use of the local reference range; if the value of the second flag bit is 0, it means that the intra block copy mode does not allow the use of the local reference range.
- the reference range category indication information can be implemented through a flag bit.
- the reference range category indication information can include a third flag bit, and the third flag bit is a first value (such as 1).
- the third flag bit is a second value (for example, 0), it indicates that the intra-block copy mode allows the use of the local reference range.
- the reference range category indication information may include a fourth flag bit.
- the fourth flag bit is a first value (such as 1), it indicates that the intra block copy mode allows the use of the global reference range and the local reference range;
- the four flag bits are the second value (for example, 0), it indicates that the intra block copy mode allows the use of the local reference range.
- Step S1120 Generate a prediction vector candidate list based on the displacement vector of the decoded block in which the reference frame is the current frame.
- step S1110 and step S1120 does not limit the execution order of step S1110 and step S1120.
- step S1120 based on the displacement vector of the decoded block whose reference frame is the current frame, the process of generating a prediction vector candidate list may be: from the displacement vector of the decoded block whose reference frame is the current frame. , obtain the target decoded block whose corresponding reference block is within the target reference range and adopts intra block copy mode, and then generate a prediction vector candidate list based on the displacement vector of the target decoded block.
- the process of generating a prediction vector candidate list based on the reference frame being the displacement vector of the decoded block of the current frame may be: based on the reference frame being the displacement vector of the decoded block of the current frame, Calculate the reference block of the current block, then determine the target reference block within the target reference range among the reference blocks of the current block, and then generate a prediction vector candidate list based on the displacement vector of the decoded block corresponding to the target reference block.
- the position information of the reference block of the current block may be determined according to the coordinates of the current block and the displacement vector of the decoded block. For example, based on the abscissa coordinate of the current block and the horizontal component of a displacement vector, the abscissa coordinate of a corresponding reference block can be calculated; based on the ordinate of the current block and the vertical component of a displacement vector, the ordinate of a corresponding reference block can be calculated. coordinate.
- the reference range category indication information may be image-level reference range category indication information or slice-level reference range category indication information. Then if the number of displacement vectors included in the prediction vector candidate list does not reach the set number, Then, the preset block vector can be filled in the prediction vector candidate list according to the image-level reference range category indication information or the slice-level reference range category indication information.
- At least one of the following block vectors can be selected to fill the prediction vector candidate list: (-sb_w-D,0), (0,-sb_h), (sb_x-b_w -cur_x-D,0), (0,sb_y-b_h-cur_y), (-M ⁇ sb_w-D,-N ⁇ sb_h).
- the precision of these block vectors may be at the whole pixel level, and different precision representations may be used during implementation.
- At least one of the following block vectors can be selected to fill the predictor vector candidate list: (-b_w,0), (0,-b_h), (-b_w,-b_h), (-2 ⁇ b_w,0), (0,-2 ⁇ b_h), (0,0), (0,-vb_w), (-vb_h,0), (-vb_w,-vb_h); where b_w represents The width of the current block; b_h represents the height of the current block; vb_w represents the preset block width, such as 64, 32, 16, 8 or 4; vb_h represents the preset block height, such as 64, 32, 16, 8 or 4.
- the precision of these block vectors may be at the whole pixel level, and different precision representations may be used during implementation.
- At least one of the above block vectors can be selected for filling.
- candidate prediction block vectors that meet any of the following conditions can also be selected for filling:
- cur_x represents the abscissa of the upper left corner of the current block
- cur_y represents the ordinate of the upper left corner of the current block
- b_w represents the width of the current block
- b_h represents the height of the current block
- bvpi_x represents the horizontal component of the i-th candidate prediction block vector
- bvpi_y Represents the vertical component of the i-th candidate prediction block vector
- min_x and min_y represent the coordinates of the upper left corner of the slice where the current block is located
- max_x and max_y represent the global coordinates in the row where the specified maximum coding block is located.
- the coordinates of the lower right corner of the reference range specifying the largest coding block as the largest coding block where the current block is located; if the target reference range is a local reference range, min_x and min_y represent the upper left corner coordinates of the local reference range where the current block is located, max_x and max_y represent The coordinates of the lower right corner of the local reference range where the current block is located.
- the following operations can be performed:
- Step S1130 Select a prediction vector corresponding to the target reference range from the prediction vector candidate list.
- the process of selecting the prediction vector corresponding to the target reference range from the prediction vector candidate list may be
- the prediction vector index information is obtained by decoding from the code stream, and then a prediction vector is selected from a corresponding position in the prediction vector candidate list as the prediction vector of the current block according to the prediction vector index information.
- the process of selecting a prediction vector corresponding to the target reference range from the prediction vector candidate list may also be to select a prediction vector corresponding to the target reference range from the prediction vector candidate list according to a set selection strategy.
- the corresponding prediction vector is used as the prediction vector of the current block.
- the i-th (i is a positive integer) prediction vector corresponding to the target reference range can be selected in order as the prediction vector of the current block, or one can be selected randomly.
- Step S1140 Decode the current block based on the prediction vector of the current block.
- the process of decoding the current block based on the prediction vector of the current block may be to use the prediction vector of the current block as the displacement vector of the current block to decode the current block.
- the vector residual of the current block may be obtained by decoding from the code stream, the displacement vector of the current block may be calculated based on the vector residual and the prediction vector of the current block, and then the current block may be decoded based on the displacement vector of the current block.
- the displacement vector prediction mode indication information can also be obtained by decoding from the code stream. On this basis, if the displacement vector prediction mode indication information indicates that the current block adopts the Skip prediction mode, the prediction vector of the current block is used as the displacement vector of the current block, and the decoding process of the residual coefficient of the current block is skipped to The current block is decoded;
- the displacement vector prediction mode indication information indicates that the current block adopts the NearMV prediction mode, then the prediction vector of the current block is used as the displacement vector of the current block, and the residual coefficient of the current block is decoded to decode the current block;
- the displacement vector residual of the current block is obtained by decoding from the code stream, and the displacement vector of the current block is calculated based on the displacement vector residual and the prediction vector of the current block, and The residual coefficient of the current block is decoded to decode the current block.
- the process of decoding to obtain the displacement vector residual of the current block from the code stream may be to directly decode the symbol and value of the displacement vector of the current block from the code stream; or it may also be to obtain the symbol and value of the displacement vector of the current block from the code stream; or it may be to obtain the displacement vector residue of the current block from the code stream.
- the joint type indication information (joint_type) is obtained through decoding.
- the joint type indication information is used to indicate the consistency of the components between the displacement vector residual of the current block and the prediction vector of the current block. That is, the joint type indication information can indicate the current Whether the components between the displacement vector residual of the block and the prediction vector of the current block are consistent, the displacement vector residual of the current block is obtained by decoding according to the joint type indication information.
- the encoding end does not need to Encode the horizontal component of the displacement vector residual in the code stream; if the joint type indication information indicates that the horizontal component between the displacement vector residual and the prediction vector is inconsistent and the vertical component is consistent, then only the horizontal component needs to be decoded from the code stream.
- the encoding end does not need to encode the vertical component of the displacement vector residual in the code stream; if the joint type indication information indicates that the horizontal and vertical components between the displacement vector residual and the prediction vector are consistent, then There is no need to decode the displacement vector residual from the code stream. In this case, the encoding end does not need to encode the displacement vector residual in the code stream; if the joint type indication information indicates the horizontal and vertical components between the displacement vector residual and the prediction vector If they are not consistent, then the horizontal and vertical components of the displacement vector residual need to be decoded from the code stream.
- FIG. 12 shows a flowchart of a video encoding method according to an embodiment of the present application.
- the video encoding method can be executed by a device with computing processing functions, such as a terminal device or a server.
- the video encoding method at least includes step S1210 to step S1230. The details are as follows:
- step S1210 generate a prediction vector candidate list based on the displacement vector of the encoded block whose reference frame is the current frame;
- step S1220 select the prediction vector of the current block to be encoded from the prediction vector candidate list
- step S1230 the current block is encoded based on the prediction vector of the current block.
- selecting the prediction vector of the current block to be encoded from the prediction vector candidate list includes: decoding the code stream to obtain the prediction vector index information;
- a prediction vector is selected from a corresponding position in the prediction vector candidate list as the prediction vector of the current block to be encoded.
- prediction vector index information is obtained by decoding from the code stream, including:
- the prediction vector index information is decoded from the code stream to obtain the prediction vector index information.
- the prediction vector index information uses context-based multi-symbol arithmetic encoding.
- the code stream contains the maximum value of the prediction vector index information, and the maximum value is located in the sequence header, image header or slice header;
- the maximum values corresponding to different displacement vector prediction modes are the same or different.
- selecting the prediction vector of the current block to be encoded from the prediction vector candidate list includes:
- a predictor vector is selected from the predictor candidate list as the predictor vector of the current block to be encoded.
- a prediction vector candidate list is generated based on the displacement vector of the coded block whose reference frame is the current frame, including:
- a prediction vector candidate list is generated.
- the adjacent coded blocks include at least one of the following: a coded block located n 1 rows above the current block, a coded block located n 2 columns to the left of the current block; where n 1 and n 2 is a positive integer.
- a prediction vector candidate list is generated based on the displacement vector of the coded block whose reference frame is the current frame, including:
- the displacement vectors of the historical coded blocks are added to the queue of the set length in a first-in, first-out manner to obtain the second displacement vector list;
- a prediction vector candidate list is generated based on the second displacement vector list.
- the video encoding method further includes:
- a second displacement vector list corresponds to at least one region to be encoded, and the region to be encoded includes one of the following:
- the largest coding block in which the current block is located the row in the largest coding block in which the current block is located, and the slice in which the current block is located.
- the video encoding method further includes:
- a prediction vector candidate list is generated based on the displacement vector of the coded block whose reference frame is the current frame, including:
- a prediction vector candidate list is generated based on the first displacement vector list and the second displacement vector list.
- generating a prediction vector candidate list based on the first displacement vector list and the second displacement vector list includes:
- the video encoding method further includes:
- the preset area includes at least one of the following: the current image, the current slice, the current global reference range, and the current local reference range.
- the setting order includes one of the following: a coding order of coded blocks, a scanning order of coded blocks, a type of coded blocks, and a weight of a displacement vector;
- the weight is associated with at least one of the following factors: the number of repetitions of the displacement vector, the block size corresponding to the displacement vector, and the block position corresponding to the displacement vector.
- the video encoding method further includes:
- the reference range category indication information is obtained by decoding from the code stream.
- the reference range category indication information is used to indicate the target reference range used in the intra-frame block copy mode.
- the target reference range includes at least one of a global reference range and a local reference range;
- a prediction vector corresponding to the target reference range is selected as the prediction vector of the current block to be encoded.
- a prediction vector candidate list is generated based on the displacement vector of the coded block whose reference frame is the current frame, including:
- a prediction vector candidate list is generated based on the displacement vector of the coded block whose reference frame is the current frame, including:
- a prediction vector candidate list is generated based on the displacement vector of the coded block corresponding to the target reference block.
- the reference range category indication information is image-level reference range category indication information or slice-level reference range category indication information; the video encoding method further includes:
- the preset block vectors are filled in the prediction vector candidate list according to the image-level reference range category indication information or the slice-level reference range category indication information.
- the video encoding method further includes: decoding from the code stream to obtain the displacement vector prediction mode indication information;
- Encoding the current block based on the prediction vector of the current block includes:
- the prediction vector of the current block is used as the displacement vector of the current block, and the encoding process of the residual coefficient of the current block is skipped;
- the prediction vector of the current block is used as the displacement vector of the current block, and the residual coefficient of the current block is encoded
- the displacement vector residual of the current block is obtained by decoding from the code stream, and the displacement vector of the current block is determined based on the displacement vector residual and the prediction vector of the current block. , and encode the residual coefficient of the current block.
- decoding the code stream to obtain the displacement vector prediction mode indication information includes: if it is determined that the displacement vector prediction mode indication information needs to be decoded according to the length of the predictor candidate list, decoding the code stream to obtain the displacement vector prediction Mode indication information.
- the displacement vector residual of the current block is obtained by decoding from the code stream, including:
- the joint type indication information is obtained by decoding from the code stream.
- the joint type indication information is used to indicate the consistency of the components between the displacement vector residual of the current block and the prediction vector of the current block. According to the joint type indication information, the joint type indication information is decoded to obtain the current block's Displacement vector residual.
- the technical solution of the embodiment of the present application can construct a more suitable prediction vector candidate list based on the displacement vector of the decoded block of the current frame based on the reference frame, so as to ensure that a more accurate prediction vector is selected from it, which is beneficial to improving coding. performance.
- the displacement vector of the current block when decoding the current block, needs to be decoded.
- the following description takes the current block as an IBC block as an example.
- the displacement vector of the IBC block is the block vector bv(bv_x, bv_y).
- bvp_mode may be included in the code stream to indicate the block vector prediction mode used.
- the following prediction modes may be used alone or in combination:
- Block vector prediction mode includes Skip prediction mode.
- the bv of the current block is equal to the prediction block vector (Block Vector Prediction, bvp), and the residual coefficient of the current block defaults to 0, and no decoding is required.
- Block vector prediction mode includes Near Motion Vector (NearMV) prediction mode.
- NearMV Near Motion Vector
- the bv of the current block is equal to bvp, but the residual coefficient of the current block needs to be decoded.
- the block vector prediction mode includes the new motion vector (New Motion Vector, NewMV) prediction mode.
- bvd Block Vector Difference, block vector residual
- the bv of the current block bvd + bvp, At the same time, the residual coefficient of the current block needs to be decoded.
- direct decoding can be used when decoding bvd, that is, decoding the symbol and absolute value of bvd from the code stream. Or you can also divide the decoding method of bvd into several categories, and then decode joint_type first to confirm the category, and then decode bvd. For example, there are four situations: the components of bvd and bvp are consistent, and there is no need to decode bvd; the horizontal components of bvd and bvp are consistent, but the vertical components are inconsistent.
- the bvp of the current block can be derived from the predicted block vector candidate list.
- the predicted block vector index bvp_index can be decoded, and then derived according to the position of the bvp indicated by bvp_index in the predicted block vector candidate list.
- the bvp of the current block or you can also export bvp according to a fixed rule sequence without decoding index, such as checking the first 2 candidate bvp in the predicted block vector candidate list, and then export the first candidate bvp that is not 0 as the current block bvp.
- the code stream contains reference range category indication information ibc_ref_type used to indicate the reference block of the current IBC block
- the bvp of the corresponding category needs to be used. For example, if it indicates that the reference block of the current IBC block is within the global reference range, then the bvp corresponding to the global reference range needs to be used; if it indicates that the reference block of the current IBC block is within the local reference range, then the bvp corresponding to the local reference range needs to be used. Corresponding bvp.
- ibc_ref_type belongs to block-level reference range category indication information.
- the code stream can also contain image-level reference range category indication information, or slice-level reference range category indication information to respectively indicate the reference of the current image or IBC block in the current slice. scope.
- the indication can also be provided through multi-level reference range category indication information, such as image-level reference range category indication information and block-level reference range category indication information.
- the construction method of the prediction block vector candidate list bvp_list is as follows:
- the predicted block vector candidate list bvp_list may include block vector information of adjacent decoded blocks in the spatial domain, that is, the spatial based block vector prediction list (SBVP).
- SBVP spatial based block vector prediction list
- an SBVP with a length of N1 can be constructed, and the BVs of adjacent decoded IBC blocks in the spatial domain are recorded in a set order.
- the adjacent decoded IBC blocks in the spatial domain include decoded blocks in rows N1 above the current block or columns N2 to the left, and N1 and N2 are positive integers.
- the setting order may be the decoding order of adjacent decoded IBC blocks in the spatial domain, the scanning order, the weight corresponding to the displacement vector of the adjacent decoded IBC blocks in the spatial domain, etc.
- the weight corresponding to the displacement vector may be associated with at least one of the following factors: the number of repetitions of the displacement vector, the block size corresponding to the displacement vector, and the block position corresponding to the displacement vector.
- the SBVP can be constructed according to the reference range type of the bv (such as global reference range, local reference range, etc.), for example, it can only include bvs whose reference blocks are within the corresponding reference range.
- the predicted block vector candidate list bvp_list may include block vector information of historical decoded blocks, that is, history based block vector prediction list (HBVP).
- HBVP history based block vector prediction list
- an HBVP with a length of N2 can be constructed, and the BV of the decoded IBC blocks (or the BV of the decoded block whose reference frame is the current frame) is recorded in a set order. After each IBC block is decoded, the The bvs of the decoded block are added to the HBVP in First Input First Output (FIFO) order, where the bvs adjacent to the current block in decoding order have higher priority.
- FIFO First Input First Output
- duplication checking can be performed when inserting bv into HBVP. If there is a BV in the list that is duplicated with the new BV to be inserted, the duplicate BV in HBVP will be deleted.
- HBVP may have a limit on the number of checks. For a SB, SB row or tile, when the number of BVs added to HBVP exceeds a preset value, the BVs of decoded blocks may be stopped being added to HBVP. And HBVP can also be reset by pressing SB, SB row or tile.
- the bv in HBVP can also have different arrangement orders, such as according to the decoding order of the decoded IBC blocks, the scanning order, the weight corresponding to the displacement vector of the decoded IBC blocks, etc.
- the weight corresponding to the displacement vector may be associated with at least one of the following factors: the number of repetitions of the displacement vector, the block size corresponding to the displacement vector, and the block position corresponding to the displacement vector.
- the prediction block vector candidate list bvp_list can also be composed of a combination of the two.
- bvp_list is constructed by SBVP and HBVP, duplication checking can be performed so that the list does not contain duplicate instances.
- the code stream contains reference range category indication information (which can be block-level reference range category indication information ibc_ref_type, or image-level or slice-level reference range category indication information), then the following method can be used to construct bvp_list:
- the code stream contains one or more of the reference range category indication information, bvp_mode and bvp_index.
- the code stream includes ibc_ref_type, bvp_mode and bvp_index.
- decoding ibc_ref_type If the value of ibc_ref_type is 0, it indicates that the reference block of the current IBC block is in the local reference range, otherwise the reference block of the current IBC block is in the global reference range.
- the maximum length of the constructed bvp_list is 8, and during construction, only candidates corresponding to ibc_ref_type are used to construct the prediction block vector candidate list. And it is allowed to use candidate bvs that are adjacent in the spatial domain or in historical coding order. For example, you can first add the candidate bv in SBVP to the bvp_list. If the bvp_list list is not filled, then add the candidate bv in HBVP.
- the code stream includes bvp_mode and bvp_index.
- bvp_list there are two block vector prediction modes, including NearMV mode and NewMV mode. You can confirm the position of bvp in bvp_list based on bvp_index, and then determine the bvp.
- the maximum length of the constructed bvp_list is 8. During specific construction, only the candidate bvs in the SBVP can be used.
- the code stream includes bvp_index.
- the block vector prediction mode has only one prediction mode, NewMV mode. You can confirm the position of bvp in bvp_list based on bvp_index, and then determine the bvp.
- the maximum length of the constructed bvp_list is 8. During specific construction, only the candidate bvs in the SBVP can be used.
- the code stream includes a flag indicating the reference range, bvp_mode and bvp_idx.
- the flag indicating the reference range may be allowed_global_intrabc and allowed_local_intrabc, which respectively indicate whether the current image or the block in the current slice is allowed to use the global reference range or the local reference range.
- allowed_global_intrabc For example, if the value of allowed_global_intrabc is 1, it indicates that the use of the global reference range is allowed; if the value of allowed_global_intrabc is 0, it indicates that the use of the global reference range is not allowed. If the value of allowed_local_intrabc is 1, it indicates that the local reference range is allowed to be used; if the value of allowed_local_intrabc is 0, it indicates that the use of the local reference range is not allowed.
- the decoding end also includes:
- Decode bvp_mode to confirm the mode used. For example, it can include two modes, 0 means NewMV mode, and 1 means NearMV mode.
- the maximum length of the constructed bvp_list is 4, and the bvp_list is composed of SBVP and HBVP. If the list length is less than 4, the bvp_list is filled according to the reference range, as follows:
- the technical solution of the embodiment of the present application can select an appropriate default prediction vector derivation method according to the reference range type, so as to select the corresponding prediction vector for different reference ranges, thereby improving the accuracy of vector prediction and reducing the error of the displacement vector.
- Encoding cost improve encoding performance.
- a more suitable prediction vector candidate list can also be constructed based on the displacement vector of the decoded block of the current frame based on the reference frame to ensure that a more accurate prediction vector is selected from it, which is beneficial to improving coding performance.
- FIG. 13 shows a block diagram of a video decoding device according to an embodiment of the present application.
- the video decoding device can be provided in a device with computing processing functions, such as a terminal device or a server.
- a video decoding device 1300 includes: a first generation unit 1302, a first selection unit 1304, and a first processing unit 1306.
- the first generation unit 1302 is configured to generate a prediction vector candidate list according to the displacement vector of the decoded block of the current frame whose reference frame is the current frame; the first selection unit 1304 is configured to select the current block to be decoded from the prediction vector candidate list. prediction vector; the first processing unit 1306 is configured to perform decoding processing on the current block based on the prediction vector of the current block.
- the first selection unit 1304 is configured to: decode the code stream to obtain prediction vector index information, and select a prediction vector from a corresponding position in the prediction vector candidate list according to the prediction vector index information. as the prediction vector of the current block.
- the first selection unit 1304 is further configured to: determine whether the predictor vector index information needs to be decoded according to the length of the predictor vector candidate list; if it is determined that the predictor vector index information needs to be decoded, The prediction vector index information is obtained by decoding in the code stream.
- the prediction vector index information adopts context-based multi-symbol arithmetic coding.
- the code stream contains the maximum value of the prediction vector index information, and the maximum value is located in the sequence header, image header or slice header; wherein, the maximum value corresponding to different displacement vector prediction modes The values are the same or different.
- the first selection unit 1304 is configured to select a prediction vector from the prediction vector candidate list as the prediction vector of the current block according to the set selection strategy.
- the first generation unit 1302 is configured to: obtain the displacement vector of the decoded block adjacent to the current block from the displacement vector of the decoded block whose reference frame is the current frame; according to the setting In sequence, the displacement vectors of decoded blocks adjacent to the current block are sorted to generate a first displacement vector list; and the prediction vector candidate list is generated according to the first displacement vector list.
- the adjacent decoded blocks include at least one of the following: a decoded block located n 1 rows above the current block, a decoded block located n 2 columns left of the current block; wherein , n 1 and n 2 are positive integers.
- the first generation unit 1302 is configured to: obtain the displacement vector of the historical decoded block from the displacement vector of the decoded block whose reference frame is the current frame; and convert the historical decoded block according to the set order.
- the displacement vector of the decoded block is added to a queue of a set length in a first-in, first-out manner to generate a second displacement vector list; the prediction vector candidate list is generated based on the second displacement vector list.
- the first generation unit 1302 is further configured to: when adding the displacement vector of the historical decoded block to the queue, if the same displacement vector already exists in the queue, delete Remove the same displacement vector that already exists in the queue.
- one of the second displacement vector lists corresponds to at least one area to be decoded, and the area to be decoded includes one of the following: the largest coding block where the current block is located, the largest coding block where the current block is located, The row in the encoding block, the slice in which the current block is located.
- the first generation unit 1302 is further configured to: if the displacement vector in the second displacement vector list corresponding to the target area to be decoded exceeds a set value, stop displacing data to the target area to be decoded. Add a displacement vector to the second displacement vector list.
- the first generation unit 1302 is further configured to: if the number of times a displacement vector is added to the second displacement vector list corresponding to the target area to be decoded exceeds a set number of times, stop adding the displacement vector to the target area to be decoded. Add a displacement vector to the second displacement vector list corresponding to the region.
- the first generation unit 1302 is configured to: obtain the displacement vector of the decoded block adjacent to the current block from the displacement vector of the decoded block whose reference frame is the current frame, and generate the displacement vector according to the setting. Sequentially sort the displacement vectors of decoded blocks adjacent to the current block to generate a first displacement vector list;
- the prediction vector candidate list is generated based on the first displacement vector list and the second displacement vector list.
- the first generation unit 1302 is configured to: merge the first displacement vector list and the second displacement vector list, and delete duplicate displacement vectors to generate the prediction vector candidate list .
- the first generation unit 1302 is further configured to: detect whether there is a displacement vector that is not within a preset area in the first displacement vector list and the second displacement vector list, and the preset The area includes at least one of the following: the current image, the current slice, the current global reference range and the current local reference range; in the process of merging the first displacement vector list and the second displacement vector list, delete the The displacement vector within the preset area.
- the setting order includes one of the following: the decoding order of decoded blocks, the scanning order of decoded blocks, the type of decoded blocks, and the weight corresponding to the displacement vector; wherein the weight and At least one of the following factors is associated: the number of repetitions of the displacement vector, the block size corresponding to the displacement vector, and the block position corresponding to the displacement vector.
- the video decoding device further includes: a decoding unit configured to decode from the code stream to obtain reference range category indication information, where the reference range category indication information is used to indicate the target used in the intra block copy mode.
- reference range the target reference range includes at least one of a global reference range and a local reference range; the first selection unit 1304 is configured to: select a prediction corresponding to the target reference range from the prediction vector candidate list Vector.
- the first generation unit 1302 is configured to: from the displacement vector of the decoded block whose reference frame is the current frame, obtain the corresponding reference block that is within the target reference range and adopts an intra-frame block. Copy the target decoded block of the mode; generate the predictor vector candidate list according to the displacement vector of the target decoded block.
- the first generation unit 1302 is configured to: calculate the reference block of the current block based on the reference frame being the displacement vector of the decoded block of the current frame; determine that the reference block of the current block is in the a target reference block within the target reference range; and generate the prediction vector candidate list according to the displacement vector of the decoded block corresponding to the target reference block.
- the reference range category indication information is image-level reference range category indication information or slice-level reference range category indication information; the first generating unit 1302 is further configured to: if the prediction vector candidate list If the number of displacement vectors contained in the block vector does not reach the set number, then the preset block vector is filled in the prediction vector candidate list according to the image-level reference range category indication information or the slice-level reference range category indication information.
- the video decoding device further includes: a decoding unit configured to decode the code stream to obtain the displacement vector prediction mode indication information; the first processing unit 1306 is configured to:
- the prediction vector of the current block is used as the displacement vector of the current block, and the calculation of the residual coefficient of the current block is skipped.
- the displacement vector prediction mode indication information indicates that the current block adopts the NearMV prediction mode, then the prediction vector of the current block is used as the displacement vector of the current block, and the residual coefficient of the current block is decoded, to decode the current block;
- the displacement vector residual of the current block is obtained by decoding from the code stream. According to the displacement vector residual and the current block The prediction vector calculates the displacement vector of the current block, and decodes the residual coefficient of the current block to decode the current block.
- the decoding unit is further configured to: determine whether the displacement vector prediction mode indication information needs to be decoded according to the length of the prediction vector candidate list; if it is determined that the displacement vector prediction mode indication information needs to be decoded, then The displacement vector prediction mode indication information is obtained by decoding the code stream.
- the process by which the first processing unit 1306 decodes from the code stream to obtain the displacement vector residual of the current block includes: decoding from the code stream to obtain the displacement vector of the current block. the symbol and value; or
- Joint type indication information is obtained by decoding from the code stream.
- the joint type indication information is used to indicate whether the components between the displacement vector residual of the current block and the prediction vector of the current block are consistent. According to the joint type indication information, The type indication information is decoded to obtain the displacement vector residual of the current block.
- FIG 14 shows a block diagram of a video encoding device according to an embodiment of the present application.
- the video encoding device can be provided in a device with computing processing functions, such as a terminal device or a server.
- a video encoding device 1400 includes: a second generation unit 1402, a second selection unit 1404, and a second processing unit 1406.
- the second generation unit 1402 is configured to generate a prediction vector candidate list according to the displacement vector of the encoded block whose reference frame is the current frame; the second selection unit 1404 is configured to select the current block to be encoded from the prediction vector candidate list. prediction vector; the second processing unit 1406 is configured to perform encoding processing on the current block based on the prediction vector of the current block.
- FIG. 15 shows a schematic structural diagram of a computer system suitable for implementing an electronic device according to an embodiment of the present application.
- the computer system 1500 includes a central processing unit (Central Processing Unit, CPU) 1501, which can be loaded into a random computer according to a program stored in a read-only memory (Read-Only Memory, ROM) 1502 or from a storage part 1508. Access the program in the memory (Random Access Memory, RAM) 1503 to perform various appropriate actions and processing, such as performing the method described in the above embodiment. In RAM 1503, various programs and data required for system operation are also stored.
- CPU 1501, ROM 1502 and RAM 1503 are connected to each other through bus 1504.
- An input/output (I/O) interface 1505 is also connected to bus 1504.
- the following components are connected to the I/O interface 1505: an input part 1506 including a keyboard, a mouse, etc.; an output part 1507 including a cathode ray tube (Cathode Ray Tube, CRT), a liquid crystal display (Liquid Crystal Display, LCD), etc., and a speaker, etc. ; a storage part 1508 including a hard disk, etc.; and a communication part 1509 including a network interface card such as a Local Area Network (LAN) card, a modem, etc.
- the communication section 1509 performs communication processing via a network such as the Internet.
- Driver 1510 is also connected to I/O interface 1505 as needed.
- Removable media 1511 such as magnetic disks, optical disks, magneto-optical disks, semiconductor memories, etc., are installed on the drive 1510 as needed, so that a computer program read therefrom is installed into the storage portion 1508 as needed.
- the process described above with reference to the flowchart may be implemented as a computer software program.
- embodiments of the present application include a computer program product including a computer program carried on a computer-readable storage medium, the computer program including a computer program for executing the method shown in the flowchart.
- the computer program may be downloaded and installed from the network via communications portion 1509, and/or installed from removable media 1511.
- CPU central processing unit
- the computer-readable storage medium shown in the embodiments of the present application can be read-only memory (Read-Only Memory, ROM), random access memory (Random Access Memory, RAM), erasable programmable read-only memory ( Erasable Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), flash memory, magnetic surface memory, optical disk, or CD-ROM; it can also include the above One or any combination of various devices.
- Read-Only Memory Read-Only Memory
- RAM Random Access Memory
- EPROM Erasable Programmable Read-Only Memory
- EEPROM Electrically Erasable Programmable Read-Only Memory
- flash memory magnetic surface memory, optical disk, or CD-ROM; it can also include the above One or any combination of various devices.
- the units involved in the embodiments of this application can be implemented in software or hardware, and the described units can also be provided in a processor. Among them, the names of these units do not constitute a limitation on the unit itself under certain circumstances.
- Embodiments of the present application also provide a computer-readable storage medium.
- the computer-readable storage medium may be included in the electronic device described in the above embodiments; it may also exist independently without being assembled into the electronic device.
- the computer-readable storage medium carries one or more programs. When the one or more programs are executed by an electronic device, the electronic device implements the method described in the above embodiments.
- the example embodiments described here can be implemented by software, or can be implemented by software combined with necessary hardware. Therefore, the technical solution according to the embodiment of the present application can be embodied in the form of a software product, which can be stored in a non-volatile storage medium (which can be a CD-ROM, U disk, mobile hard disk, etc.) or on the network , including several instructions to cause a computing device (which can be a personal computer, server, touch terminal, or network device, etc.) to execute the method according to the embodiment of the present application.
- a non-volatile storage medium which can be a CD-ROM, U disk, mobile hard disk, etc.
- a computing device which can be a personal computer, server, touch terminal, or network device, etc.
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Description
Claims (29)
- 一种视频解码方法,所述视频解码方法包括:根据参考帧为当前帧的已解码块的位移矢量,生成预测矢量候选列表;从所述预测矢量候选列表中选择待解码的当前块的预测矢量;基于所述当前块的预测矢量对所述当前块进行解码处理。
- 根据权利要求1所述的视频解码方法,其中,所述从所述预测矢量候选列表中选择待解码的当前块的预测矢量,包括:从码流中解码得到预测矢量索引信息;根据所述预测矢量索引信息,从所述预测矢量候选列表中的相应位置处,选择一个预测矢量作为待解码的当前块的预测矢量。
- 根据权利要求2所述的视频解码方法,其中,所述从码流中解码得到预测矢量索引信息,包括:当根据所述预测矢量候选列表的长度,确定需要解码所述预测矢量索引信息时,则从所述码流中解码得到预测矢量索引信息。
- 根据权利要求2或3所述的视频解码方法,其中,所述预测矢量索引信息采用基于上下文的多符号算数编码。
- 根据权利要求2所述的视频解码方法,其中,所述码流中包含有所述预测矢量索引信息的最大值,所述最大值位于序列头、图像头或者片头中;其中,不同的位移矢量预测模式对应的所述最大值相同或者不同。
- 根据权利要求1所述的视频解码方法,其中,所述从所述预测矢量候选列表中选择待解码的当前块的预测矢量,包括:按照设定的选择策略,从所述预测矢量候选列表中选择一个预测矢量作为待解码的当前块的预测矢量。
- 根据权利要求1所述的视频解码方法,其中,所述根据参考帧为当前帧的已解码块的位移矢量,生成预测矢量候选列表,包括:从参考帧为当前帧的已解码块的位移矢量中,获取所述当前块相邻近的已解码块的位移矢量;按照设定顺序,对所述当前块相邻近的已解码块的位移矢量进行排序,得到第一位移矢量列表;根据所述第一位移矢量列表,生成所述预测矢量候选列表。
- 根据权利要求7所述的视频解码方法,其中,所述相邻近的已解码块包括以下至少一个:处于所述当前块上方n 1行的已解码块、处于所述当前块左方n 2列的已解码块;其中,n 1和n 2为正整数。
- 根据权利要求1所述的视频解码方法,其中,所述根据参考帧为当前帧的已解码块的位移矢量,生成预测矢量候选列表,包括:从参考帧为当前帧的已解码块的位移矢量中,获取历史已解码块的位移矢量;按照设定顺序,将所述历史已解码块的位移矢量按照先入先出的方式添加至设定长度的队列中,得到第二位移矢量列表;根据所述第二位移矢量列表,生成所述预测矢量候选列表。
- 根据权利要求9所述的视频解码方法,其中,所述视频解码方法还包括:在将所述历史已解码块的位移矢量添加至所述队列中时,若所述队列中已存在 相同的位移矢量,则删掉所述队列中已存在的相同的位移矢量。
- 根据权利要求9所述的视频解码方法,其中,一个所述第二位移矢量列表对应至少一个待解码区域,所述待解码区域包括以下中的一个:所述当前块所在的最大编码块、所述当前块所在的最大编码块中的行、所述当前块所在的片。
- 根据权利要求11所述的视频解码方法,其中,所述视频解码方法还包括:若目标待解码区域所对应的第二位移矢量列表中的位移矢量超过设定值,则停止向所述目标待解码区域所对应的第二位移矢量列表中添加位移矢量;或者,若向目标待解码区域所对应的第二位移矢量列表中添加位移矢量的次数超过设定次数,则停止向所述目标待解码区域所对应的第二位移矢量列表中添加位移矢量。
- 根据权利要求1所述的视频解码方法,其中,所述根据参考帧为当前帧的已解码块的位移矢量,生成预测矢量候选列表,包括:从参考帧为当前帧的已解码块的位移矢量中,获取所述当前块相邻近的已解码块的位移矢量,并按照设定顺序对所述当前块相邻近的已解码块的位移矢量进行排序,得到第一位移矢量列表;从参考帧为当前帧的已解码块的位移矢量中,获取历史已解码块的位移矢量,并按照设定顺序将所述历史已解码块的位移矢量按照先入先出的方式添加至设定长度的队列中,得到第二位移矢量列表;根据所述第一位移矢量列表和所述第二位移矢量列表,生成所述预测矢量候选列表。
- 根据权利要求13所述的视频解码方法,其中,所述根据所述第一位移矢量列表和所述第二位移矢量列表,生成所述预测矢量候选列表,包括:将所述第一位移矢量列表和所述第二位移矢量列表进行合并,得到合并后的位移矢量列表;从合并后的位移矢量列表中删除重复的位移矢量,得到所述预测矢量候选列表。
- 根据权利要求14所述的视频解码方法,其中,所述视频解码方法还包括:检测所述第一位移矢量列表和所述第二位移矢量列表中的位移矢量;在将所述第一位移矢量列表和所述第二位移矢量列表进行合并的过程中,删除未处于预设区域内的位移矢量;其中,所述预设区域包括以下至少一个:当前图像、当前片、当前的全局参考范围和当前的局部参考范围。
- 根据权利要求7、8或13所述的视频解码方法,其中,所述设定顺序包括以下中的一个:已解码块的解码顺序、已解码块的扫描顺序、已解码块的类型、位移矢量的权重;其中,所述权重与以下至少一个因素相关联:位移矢量的重复次数、位移矢量所对应的块大小、位移矢量所对应的块位置。
- 根据权利要求1所述的视频解码方法,其中,所述视频解码方法还包括:从码流中解码得到参考范围类别指示信息,所述参考范围类别指示信息用于指示帧内块复制模式所使用的目标参考范围,所述目标参考范围包括全局参考范围和局部参考范围中的至少一个;所述从所述预测矢量候选列表中选择待解码的当前块的预测矢量,包括:从所述预测矢量候选列表中,选择与所述目标参考范围相对应的预测矢量作为所述待解码的当前块的预测矢量。
- 根据权利要求17所述的视频解码方法,其中,所述根据参考帧为当前帧的 已解码块的位移矢量,生成预测矢量候选列表,包括:从参考帧为当前帧的已解码块的位移矢量中,获取所对应的参考块处于所述目标参考范围内、且采用帧内块复制模式的目标已解码块;根据所述目标已解码块的位移矢量,生成所述预测矢量候选列表。
- 根据权利要求17所述的视频解码方法,其中,所述根据参考帧为当前帧的已解码块的位移矢量,生成预测矢量候选列表,包括:根据参考帧为当前帧的已解码块的位移矢量,确定所述当前块的参考块;在所述当前块的参考块中,确定处于所述目标参考范围内的目标参考块;根据所述目标参考块所对应的已解码块的位移矢量,生成所述预测矢量候选列表。
- 根据权利要求17所述的视频解码方法,其中,所述参考范围类别指示信息为图像级的参考范围类别指示信息或者片级的参考范围类别指示信息;所述视频解码方法还包括:若所述预测矢量候选列表中位移矢量的数量未达到设定数量,则根据所述图像级的参考范围类别指示信息或者片级的参考范围类别指示信息,向所述预测矢量候选列表中填充预设的块矢量。
- 根据权利要求1至3、5至15、17至20中任一项所述的视频解码方法,其中,所述视频解码方法还包括:从码流中解码得到位移矢量预测模式指示信息;所述基于所述当前块的预测矢量对所述当前块进行解码处理,包括:若所述位移矢量预测模式指示信息指示所述当前块采用跳过预测模式,则将所述当前块的预测矢量作为所述当前块的位移矢量,且跳过对所述当前块的残差系数的解码过程;若所述位移矢量预测模式指示信息指示所述当前块采用近运动矢量预测模式,则将所述当前块的预测矢量作为所述当前块的位移矢量,并对所述当前块的残差系数进行解码;若所述位移矢量预测模式指示信息指示所述当前块采用新运动矢量预测模式,则从所述码流中解码得到所述当前块的位移矢量残差,根据所述位移矢量残差和所述当前块的预测矢量,确定所述当前块的位移矢量,并对所述当前块的残差系数进行解码。
- 根据权利要求21所述的视频解码方法,其中,所述从码流中解码得到位移矢量预测模式指示信息,包括:若根据所述预测矢量候选列表的长度,确定需要解码所述位移矢量预测模式指示信息,则从所述码流中解码得到所述位移矢量预测模式指示信息。
- 根据权利要求21所述的视频解码方法,其中,当所述位移矢量预测模式指示信息指示所述当前块采用新运动矢量预测模式时,所述从所述码流中解码得到所述当前块的位移矢量残差,包括:从所述码流中解码得到所述当前块的位移矢量的符号和数值;或者,从所述码流中解码得到联合类型指示信息,所述联合类型指示信息用于指示所述当前块的位移矢量残差与所述当前块的预测矢量之间的分量的一致性,根据所述联合类型指示信息,解码得到所述当前块的位移矢量残差。
- 一种视频编码方法,所述方法包括:根据参考帧为当前帧的已编码块的位移矢量,生成预测矢量候选列表;从所述预测矢量候选列表中选择待编码的当前块的预测矢量;基于所述当前块的预测矢量对所述当前块进行编码处理。
- 一种视频解码装置,所述装置包括:第一生成单元,配置为根据参考帧为当前帧的已解码块的位移矢量,生成预测矢量候选列表;第一选择单元,配置为从所述预测矢量候选列表中选择待解码的当前块的预测矢量;第一处理单元,配置为基于所述当前块的预测矢量对所述当前块进行解码处理。
- 一种视频编码装置,所述装置包括:第二生成单元,配置为根据参考帧为当前帧的已编码块的位移矢量,生成预测矢量候选列表;第二选择单元,配置为从所述预测矢量候选列表中选择待编码的当前块的预测矢量;第二处理单元,配置为基于所述当前块的预测矢量对所述当前块进行编码处理。
- 一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至23中任一项所述的视频解码方法,或实现如权利要求24所述的视频编码方法。
- 一种电子设备,所述电子设备包括:一个或多个处理器;存储器,配置为存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备实现如权利要求1至23中任一项所述的视频解码方法,或实现如权利要求24所述的视频编码方法。
- 一种计算机程序产品,所述计算机程序产品包括计算机指令,所述计算机指令存储在计算机可读存储介质中,电子设备的处理器从所述计算机可读存储介质读取并执行所述计算机指令,使得所述电子设备执行如权利要求1至23中任一项所述的视频解码方法,或实现如权利要求24所述的视频编码方法。
Priority Applications (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| EP22931820.9A EP4496314A4 (en) | 2022-03-16 | 2022-11-30 | Video encoding method and apparatus, video decoding method and apparatus, and storage medium, electronic device and computer program product |
| KR1020247009420A KR20240051197A (ko) | 2022-03-16 | 2022-11-30 | 비디오 인코딩 및 디코딩 방법, 장치, 저장 매체, 전자 기기 및 컴퓨터 프로그램 제품 |
| JP2024513809A JP2025509017A (ja) | 2022-03-16 | 2022-11-30 | ビデオ符号化方法及び復号化方法、並びにその装置、記憶媒体、電子機器、コンピュータプログラム製品 |
| US18/516,013 US20240089494A1 (en) | 2022-03-16 | 2023-11-21 | Video encoding and decoding method and apparatus, storage medium, electronic device, and computer program product |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202210260543.1A CN116805968A (zh) | 2022-03-16 | 2022-03-16 | 视频编解码方法、装置、计算机可读介质及电子设备 |
| CN202210260543.1 | 2022-03-16 |
Related Child Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US18/516,013 Continuation US20240089494A1 (en) | 2022-03-16 | 2023-11-21 | Video encoding and decoding method and apparatus, storage medium, electronic device, and computer program product |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2023173809A1 true WO2023173809A1 (zh) | 2023-09-21 |
Family
ID=88022138
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/CN2022/135499 Ceased WO2023173809A1 (zh) | 2022-03-16 | 2022-11-30 | 视频编解码方法、装置、存储介质、电子设备及计算机程序产品 |
Country Status (6)
| Country | Link |
|---|---|
| US (1) | US20240089494A1 (zh) |
| EP (1) | EP4496314A4 (zh) |
| JP (1) | JP2025509017A (zh) |
| KR (1) | KR20240051197A (zh) |
| CN (1) | CN116805968A (zh) |
| WO (1) | WO2023173809A1 (zh) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN117615129A (zh) * | 2024-01-23 | 2024-02-27 | 腾讯科技(深圳)有限公司 | 帧间预测方法、装置、计算机设备及存储介质 |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN120676147A (zh) * | 2024-03-18 | 2025-09-19 | 中兴通讯股份有限公司 | 视频块处理方法、电子设备及存储介质 |
| CN121509677A (zh) * | 2024-08-09 | 2026-02-10 | 腾讯科技(深圳)有限公司 | 视频编解码方法、装置、计算机可读介质及电子设备 |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN106464896A (zh) * | 2014-07-07 | 2017-02-22 | 寰发股份有限公司 | 帧内区块复制搜索和补偿范围的方法 |
| CN107027038A (zh) * | 2016-01-29 | 2017-08-08 | 谷歌公司 | 动态参考运动矢量编码模式 |
| WO2019036080A1 (en) * | 2017-08-15 | 2019-02-21 | Google Llc | ESTIMATION OF CONSTRAINED MOTION FIELD FOR INTERPRETING |
| CN113709458A (zh) * | 2020-05-22 | 2021-11-26 | 腾讯科技(深圳)有限公司 | 视频编解码中的位移矢量预测方法、装置及设备 |
| CN113767622A (zh) * | 2019-06-20 | 2021-12-07 | Jvc建伍株式会社 | 动图像编码装置、动图像编码方法及动图像编码程序、动图像解码装置、动图像解码方法及动图像解码程序 |
-
2022
- 2022-03-16 CN CN202210260543.1A patent/CN116805968A/zh active Pending
- 2022-11-30 KR KR1020247009420A patent/KR20240051197A/ko active Pending
- 2022-11-30 EP EP22931820.9A patent/EP4496314A4/en active Pending
- 2022-11-30 WO PCT/CN2022/135499 patent/WO2023173809A1/zh not_active Ceased
- 2022-11-30 JP JP2024513809A patent/JP2025509017A/ja active Pending
-
2023
- 2023-11-21 US US18/516,013 patent/US20240089494A1/en active Pending
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN106464896A (zh) * | 2014-07-07 | 2017-02-22 | 寰发股份有限公司 | 帧内区块复制搜索和补偿范围的方法 |
| CN107027038A (zh) * | 2016-01-29 | 2017-08-08 | 谷歌公司 | 动态参考运动矢量编码模式 |
| WO2019036080A1 (en) * | 2017-08-15 | 2019-02-21 | Google Llc | ESTIMATION OF CONSTRAINED MOTION FIELD FOR INTERPRETING |
| CN113767622A (zh) * | 2019-06-20 | 2021-12-07 | Jvc建伍株式会社 | 动图像编码装置、动图像编码方法及动图像编码程序、动图像解码装置、动图像解码方法及动图像解码程序 |
| CN113709458A (zh) * | 2020-05-22 | 2021-11-26 | 腾讯科技(深圳)有限公司 | 视频编解码中的位移矢量预测方法、装置及设备 |
Non-Patent Citations (1)
| Title |
|---|
| See also references of EP4496314A4 |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN117615129A (zh) * | 2024-01-23 | 2024-02-27 | 腾讯科技(深圳)有限公司 | 帧间预测方法、装置、计算机设备及存储介质 |
| CN117615129B (zh) * | 2024-01-23 | 2024-04-26 | 腾讯科技(深圳)有限公司 | 帧间预测方法、装置、计算机设备及存储介质 |
Also Published As
| Publication number | Publication date |
|---|---|
| US20240089494A1 (en) | 2024-03-14 |
| JP2025509017A (ja) | 2025-04-11 |
| KR20240051197A (ko) | 2024-04-19 |
| EP4496314A1 (en) | 2025-01-22 |
| CN116805968A (zh) | 2023-09-26 |
| EP4496314A4 (en) | 2025-06-25 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| WO2023173809A1 (zh) | 视频编解码方法、装置、存储介质、电子设备及计算机程序产品 | |
| WO2023005709A1 (zh) | 视频编码方法、装置、介质及电子设备 | |
| WO2022022299A1 (zh) | 视频编解码中的运动信息列表构建方法、装置及设备 | |
| WO2022174637A1 (zh) | 视频编解码方法、装置、计算机可读介质及电子设备 | |
| CN116805969A (zh) | 视频编解码方法、装置、计算机可读介质及电子设备 | |
| US20250071306A1 (en) | Video coding/decoding method and apparatus, computer-readable medium, and electronic device | |
| HK40092646A (zh) | 视频编解码方法、装置、计算机可读介质及电子设备 | |
| TWI806480B (zh) | 視訊編解碼方法、裝置、計算機可讀媒體及電子設備 | |
| CN114079788B (zh) | 视频编解码中的运动信息列表构建方法、装置及设备 | |
| CN115086656B (zh) | 视频编解码方法、装置、计算机可读介质及电子设备 | |
| CN115086655B (zh) | 视频编解码方法、装置、计算机可读介质及电子设备 | |
| CN115209146B (zh) | 视频编解码方法、装置、计算机可读介质及电子设备 | |
| WO2025252185A1 (zh) | 视频编解码方法、装置、计算机可读介质及电子设备 | |
| WO2025118926A1 (zh) | 视频编解码方法、装置、介质及电子设备 | |
| WO2026026351A1 (zh) | 视频编解码方法、装置及计算机可读介质 | |
| CN121509677A (zh) | 视频编解码方法、装置、计算机可读介质及电子设备 | |
| WO2025241790A1 (zh) | 视频编解码方法、装置、计算机可读介质及电子设备 | |
| HK40064931B (zh) | 视频编解码中的运动信息列表构建方法、装置及设备 | |
| WO2025195257A1 (zh) | 视频处理方法、装置、介质及电子设备 | |
| WO2025190039A1 (zh) | 图像处理方法、装置、存储介质、电子设备及程序产品 | |
| HK40065622B (zh) | 视频编解码中的运动信息列表构建方法、装置及设备 | |
| HK40065622A (zh) | 视频编解码中的运动信息列表构建方法、装置及设备 | |
| CN121967700A (zh) | 视频编解码方法、装置、计算机可读介质及电子设备 | |
| WO2026026369A1 (zh) | 视频编解码方法、装置、设备及介质 | |
| CN121099076A (zh) | 视频编解码方法、装置、计算机可读介质及电子设备 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 22931820 Country of ref document: EP Kind code of ref document: A1 |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 2024513809 Country of ref document: JP |
|
| ENP | Entry into the national phase |
Ref document number: 20247009420 Country of ref document: KR Kind code of ref document: A |
|
| REG | Reference to national code |
Ref country code: BR Ref legal event code: B01A Ref document number: 112024016361 Country of ref document: BR |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 2022931820 Country of ref document: EP |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| ENP | Entry into the national phase |
Ref document number: 2022931820 Country of ref document: EP Effective date: 20241016 |
|
| ENP | Entry into the national phase |
Ref document number: 112024016361 Country of ref document: BR Kind code of ref document: A2 Effective date: 20240809 |