Video encoding method, encoder and decoder
By improving the intra prediction parallel decoding technology, using wavefront delay to determine the availability of adjacent CTUs and using prediction block decoding CUs, the problem of insufficient video compression efficiency in the prior art is solved, and more efficient video encoding is achieved.
Patent Information
- Application Number
- CN202380063440.9
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2022-09-08
- Filing Date
- 2023-09-05
- Publication Date
- 2025-04-11
AI Technical Summary
With the surge in Internet videos, existing video encoding technologies still cannot meet the needs of higher video compression efficiency.
By improving intra prediction parallel decoding technology, the availability of at least one adjacent CTU of the current encoding tree unit (CTU) in the current frame is determined using wavefront delay, and the current encoding unit (CU) is decoded using a prediction block.
Parallel decoding of the code stream is realized, the efficiency and throughput of video encoding are improved, and the requirements of higher video compression efficiency are met.
Smart Images

Figure CN119817101A_ABST
Abstract
Description
[0001] Cross-references
[0002] This application claims priority to U.S. Provisional Application No. 63 / 375,031 filed on September 8, 2022, the entire contents of which are incorporated herein by reference in their entirety and constitute a part of this specification. Technical Field
[0003] The present disclosure generally relates to video coding. The present disclosure relates to a video coding method, an encoder and a decoder. Background Art
[0004] A wide variety of devices can incorporate digital video capabilities, including digital televisions, digital live broadcast systems, wireless broadcast systems, personal digital assistants (PDAs), laptop or desktop computers, tablet computers, e-book readers, digital cameras, digital recording devices, digital media players, video gaming devices, video game consoles, cellular or satellite wireless telephones, video conferencing equipment, video streaming devices, and the like.
[0005] Digital video devices implement video compression technologies developed by the Moving Picture Experts Group (MPEG)-2, MPEG-4, ITU-TH.263, ITU-TH.264, Advanced Video Coding (AVC), or High Efficiency Video Coding (HEVC) to more efficiently transmit and receive digital video information. By implementing these video coding technologies, video devices can more efficiently transmit, receive, encode, decode, and / or store digital video information.
[0006] With the surge in Internet videos, although digital video compression technology is constantly developing, higher requirements are still placed on video compression efficiency. Summary of the invention
[0007] The embodiments of the present application provide a video encoding method, an encoder and a decoder, which can decode a code stream in parallel by utilizing improved intra-frame prediction.
[0008] In a first aspect, an embodiment of the present application provides a video encoding method applied to a decoder. The video encoding method includes: retrieving a code stream corresponding to a current frame, parsing the code stream to obtain a current coding tree unit (CTU) of the current frame; determining the availability of at least one adjacent CTU of the current CTU in the current frame according to a wavefront delay, wherein the wavefront delay is a delay in the row direction in units of CTUs between a current CTU located in a current CTU row and an adjacent CTU located in a previous CTU row, and the current CTU and the adjacent CTU are decoded in parallel; determining a prediction block in at least one adjacent CTU for a current coding unit (CU) in the current CTU; and decoding the current CU using the prediction block.
[0009] According to an embodiment, when decoding the first CTU of the current CTU row, the method further includes: when the wavefront delay is N CTUs, inheriting the state information from the adjacent CTU located in the previous CTU row that has been decoded at the latest. The delay of the adjacent CTU in the row direction is N-1 CTUs.
[0010] According to an embodiment, the step of determining the availability of at least one neighboring CTU of a current CTU in a current frame according to a wavefront delay comprises: for a current CTU located at an i-th CTU row and a j-th CTU column i,j , when the wavefront delay is N CTUs, if bj ≥ (ia) × N, then determine the adjacent CTU located in the ath CTU row and the bth CTU column a,b Not available.
[0011] According to an embodiment, the availability of at least one neighboring CTU of a current CTU in a current frame is determined according to a wavefront delay in response to enabling a sequence parameter set (SPS) level syntax element.
[0012] According to an embodiment, the step of determining the availability of at least one neighboring CTU of a current CTU in a current frame according to a wavefront delay comprises: for a current CTU located at an i-th CTU row and a j-th CTU column i,j , determine the intra-block copy (IBC) reference area, the IBC reference area includes the area located at a distance from the current CTU i,j and when the wavefront delay is N CTUs, if bj ≥ (ia) × N, then determine the adjacent CTU located in the ath CTU row and the bth CTU column in the IBC reference area a,b Not available.
[0013] According to one embodiment, the IBC reference region includes: adjacent CTUs in the CTU rows two rows above the i-th CTU row that satisfy (j - 2) ≤ k ≤ (j + 1) i-2,k , adjacent CTUs in the previous CTU row of the i-th CTU row that satisfy (j - 2) ≤ k ≤ (j + 1) i-1,k , and adjacent CTUs that satisfy (j - 2) ≤ k ≤ (j - 1) i,k .
[0014] According to one embodiment, the IBC reference region includes: adjacent CTUs in the previous CTU row of the i-th CTU row that satisfy (j - 1) ≤ k i-1,k , and adjacent CTUs that satisfy k < j i,k .
[0015] According to one embodiment, the IBC reference region includes: adjacent CTUs in the CTU rows two rows above the i-th CTU row that satisfy (j - 2) ≤ k i-2,k , adjacent CTUs in the previous CTU row of the i-th CTU row that satisfy any k i-1,k , and adjacent CTUs that satisfy k < j i,k .
[0016] According to one embodiment, the steps of determining a prediction block of a current CU in a current CTU in at least one adjacent CTU include: decoding an IBC block vector from a bitstream; and using the IBC block vector to determine a prediction block in at least one adjacent CTU within the IBC reference region for the current CU. Wherein, if the IBC block vector points to a region outside the IBC reference region, or is modified by a mapping function to point to a region within the IBC reference region, or is binarized into a codeword space bounded within the limits of the IBC reference region, then the IBC block vector is determined to be illegal.
[0017] In a second aspect, an embodiment of the present application provides a decoder, including a communication interface, a storage device, and a processor. The communication interface is configured to retrieve a bitstream corresponding to a current frame. The storage device is configured to store at least one computer-executable instruction. The processor is coupled to the communication interface and the storage device, and is configured to execute at least one computer-executable instruction to: parse the bitstream to obtain a current Coding Tree Unit (CTU) of the current frame; determine the availability of at least one adjacent CTU of the current CTU in the current frame according to a wavefront delay, where the wavefront delay is the delay in the row direction in CTU units between the current CTU in the current CTU row and an adjacent CTU in the previous CTU row, and the current CTU and the adjacent CTU are decoded in parallel; determine a prediction block in at least one adjacent CTU for a current Coding Unit (CU) in the current CTU; and decode the current CU using the prediction block.
[0018] According to an embodiment, the processor is configured to: when decoding the first CTU of the current CTU row, when the wavefront delay is N CTUs, inherit the state information from the adjacent CTU located in the previous CTU row that has been decoded at the latest. The delay of the adjacent CTU in the row direction is N-1 CTUs.
[0019] According to an embodiment, for a current CTU located at the i-th CTU row and the j-th CTU column i,j , the processor is configured to: when the wavefront delay is N CTUs, if bj ≥ (ia) × N, determine the adjacent CTU located in the ath CTU row and the bth CTU column a,b Not available.
[0020] According to an embodiment, for a current CTU located at the i-th CTU row and the j-th CTU column i,j The processor is configured to: determine an IBC reference area, the IBC reference area includes a location away from the current CTU i,j and when the wavefront delay is N CTUs, if bj ≥ (ia) × N, then determine the adjacent CTU located in the ath CTU row and the bth CTU column in the IBC reference area a,b Not available.
[0021] According to an embodiment, the processor is configured to: decode an IBC block vector from a bitstream; and use the IBC block vector to determine a prediction block in at least one adjacent CTU within an IBC reference area for a current CU. If the IBC block vector points to an area outside the IBC reference area, or is modified by a mapping function to point to an area within the IBC reference area, or is binarized into a codeword space bounded within the limits of the IBC reference area, the IBC block vector is determined to be illegal.
[0022] In a third aspect, an embodiment of the present application provides a video encoding method applied to an encoder. The video encoding method includes: retrieving a current frame of a video; dividing the current frame into a plurality of CTUs; determining the availability of at least one adjacent CTU of the current CTU in the current frame according to a wavefront delay, wherein the wavefront delay is a delay in the row direction in units of CTUs between a current CTU located in a current CTU row and an adjacent CTU located in a previous CTU row, and the current CTU and the adjacent CTU are encoded in parallel; performing intra-frame prediction on a current CU of the current CTU to obtain a prediction block from at least one adjacent CTU; and encoding a block vector pointing to the prediction block into a bitstream corresponding to the current frame.
[0023] According to an embodiment, the step of determining the availability of at least one neighboring CTU of a current CTU in a current frame according to a wavefront delay comprises: for a current CTU located at an i-th CTU row and a j-th CTU column i,j , when the wavefront delay is N CTUs, if bj ≥ (ia) × N, then determine the adjacent CTU located in the ath CTU row and the bth CTU column a,b Not available.
[0024] According to an embodiment, the step of determining the availability of at least one neighboring CTU of a current CTU in a current frame according to a wavefront delay comprises: for a current CTU located at an i-th CTU row and a j-th CTU column i,j , determine the IBC reference area, the IBC reference area includes the area located at a distance from the current CTU i,j and when the wavefront delay is N CTUs, if bj ≥ (ia) × N, then determine the adjacent CTU located in the ath CTU row and the bth CTU column in the IBC reference area a,b Not available.
[0025] In a fourth aspect, an embodiment of the present application provides an encoder, comprising a communication interface, a storage device, and a processor. The communication interface is configured to retrieve a current frame of a video. The storage device is configured to store at least one computer executable instruction. The processor is coupled to the communication interface and the storage device, and is configured to execute at least one computer executable instruction to: divide the current frame into a plurality of CTUs; determine the availability of at least one adjacent CTU of the current CTU in the current frame according to the wavefront delay, wherein the wavefront delay is a delay in the row direction in units of CTUs between the current CTU located in the current CTU row and the adjacent CTU located in the previous CTU row, and the current CTU and the adjacent CTU are encoded in parallel; perform intra-frame prediction on the current CU of the current CTU to obtain a prediction block from at least one adjacent CTU; and encode a block vector pointing to the prediction block into a bitstream corresponding to the current frame.
[0026] According to an embodiment, for a current CTU located at the i-th CTU row and the j-th CTU column i,j , the processor is configured to: when the wavefront delay is N CTUs, if bj ≥ (ia) × N, determine the adjacent CTU located in the ath CTU row and the bth CTU column a,b Not available.
[0027] According to an embodiment, for a current CTU located at the i-th CTU row and the j-th CTU column i,j The processor is configured to: determine an IBC reference area, the IBC reference area includes a location away from the current CTU i,jand when the wavefront delay is N CTUs, if bj ≥ (ia) × N, then determine the adjacent CTU located in the ath CTU row and the bth CTU column in the IBC reference area a,b Not available.
[0028] According to an embodiment, the residual restoration unit restores the residual level of the color component of each of the plurality of points by calculating a product of a decoded symbol multiplied by an absolute level of a decoded level of the residual level of the color component. BRIEF DESCRIPTION OF THE DRAWINGS
[0029] When read in conjunction with the accompanying drawings, the various aspects of the present disclosure can be best understood through the following detailed description. It should be noted that, in accordance with industry practice, the various features are not drawn to scale. In fact, for the sake of clarity of discussion, the size of each feature can be increased or decreased arbitrarily.
[0030] Figure 1 is a schematic structural diagram of a video encoding system according to an embodiment of the present disclosure.
[0031] Figure 2 It is a schematic structural diagram of a video decoding system according to an embodiment of the present disclosure.
[0032] Figure 3A is a schematic diagram of dividing an image into blocks called CTUs according to an embodiment of the present disclosure.
[0033] Figure 3B It is a schematic diagram of dividing a CTU into CUs according to an embodiment of the present disclosure.
[0034] Figure 4A is a schematic diagram showing CABAC and palette predictor propagation according to an embodiment of the present disclosure.
[0035] Figure 4B is a schematic diagram illustrating a wavefront of a WPP according to an embodiment of the present disclosure.
[0036] Figure 5A is a schematic diagram showing an extended IBC reference area according to an embodiment of the present disclosure.
[0037] Figure 5B is a schematic diagram showing an extended IBC reference area according to an embodiment of the present disclosure.
[0038] Figure 6 It is a schematic diagram of the hardware structure of the decoder provided in the embodiment of the present application according to the embodiment of the present disclosure.
[0039] Figure 7 is a flowchart of an encoding method applied to a decoder according to an embodiment of the present disclosure.
[0040] Figure 8 is a schematic diagram illustrating neighboring block availability of wavefront delay according to an embodiment of the present disclosure.
[0041] Fig. 9 is a flowchart of an encoding method applied to a decoder according to an embodiment of the present disclosure.
[0042] Fig.10 is a schematic diagram illustrating neighboring block availability of wavefront delay according to an embodiment of the present disclosure.
[0043] Fig.11 is a schematic diagram illustrating neighboring block availability of wavefront delay according to an embodiment of the present disclosure.
[0044] Fig.12 is a flowchart of an encoding method applied to a decoder according to an embodiment of the present disclosure.
[0045] Fig.13 is a schematic diagram of the hardware structure of an encoder according to an embodiment of the present disclosure.
[0046] Fig.14 is a flowchart of a video encoding method applied to a decoder according to an embodiment of the present disclosure. DETAILED DESCRIPTION
[0047] In order to understand the features and technical contents of the embodiments of the present application in more detail, the implementation of the embodiments of the present application will be described in detail below with reference to the accompanying drawings. The accompanying drawings are only for reference and explanation and are not intended to limit the embodiments of the present application.
[0048] The present disclosure proposes several aspects of methods to modify the reference area of the Intra Block Copy (IBC) tool and the general intra prediction tool to support the Wavefront Parallel Processing (WPP) feature. These aspects include: restrictions on state propagation and CTU availability to enable WPP; modifications to the intra prediction reference area; and processing of IBC block vectors. The proposed method can be used in future video coding standards.
[0049] Encoding a video is the process of encoding each frame of the video into a bitstream, frame by frame. Similarly, decoding a video bitstream after it has been encoded and compressed is the process of decoding the bitstream frame by frame. Each frame can also be called an image, and a video can be called a sequence of images. In order to efficiently compress the video, the order of the bitstream may be different from the order in which the images are displayed, so the order in which the images are decoded may also be different from the order in which the images are displayed. Typically, for groups of images, such as 8, 16, or 32 images, the order of the images is reordered into a hierarchy suitable for compression.
[0050] Modern international video coding standards usually describe a block-based hybrid method for decoding bitstreams. For example, the High Efficiency Video Coding (HEVC) and Versatile Video Coding (VVC) standards are block-based hybrid spatiotemporal prediction coding schemes. That is, in order to generate such a bitstream when encoding each image, the image needs to be divided into multiple blocks and then these blocks are encoded one by one. For the regularity of hardware implementation, usually, an image is first divided into the largest coding unit (LCU) or coding tree unit (CTU) of N×N pixels of the same size, which are arranged from one side of the image to the other in a raster scan order. Then, each CTU is further divided into multiple blocks called coding units (CU), which are not necessarily the same size. Therefore, encoding a video image sequence is to encode each CU of each image in turn, and decoding the bitstream of a video image sequence is also to decode each CU of each image in turn, and finally reconstruct the entire video image sequence.
[0051] In order to adapt to the different image content and attributes of each part of the image, the most effective encoding can be carried out in a targeted manner. The size of the CU in the image may be different, some are 8*8 pixels, some are 64*64 pixels, and so on. The shape of the CU may be rectangular, and in an image, each CU may have different shapes and sizes.
[0052] For example, first divide an image into CTUs of exactly the same size of 64*64 pixels, that is, N=64. Among them, one CTU consists of 3 CUs of 32*32 pixels and 4 CUs of 16*16 pixels, and another CTU consists of 2 CUs of 32*32 pixels, 3 CUs of 16*16 pixels and 20 CUs of 8*8 pixels. A CU can be further divided into several sub-regions. Sub-regions include but are not limited to prediction units (PU) and transform units (TU). In summary, a coding block or decoding block refers to the area in an image that is encoded or decoded.
[0053] Figure 1 is a schematic structural diagram of a video encoding system according to an embodiment of the present disclosure. Figure 1As shown, the video coding system 100 includes a transform and quantization unit 101, an intra-frame estimation unit 102, an intra-frame prediction unit 103, a motion compensation unit 104, a motion estimation unit 105, an inverse transform and inverse quantization unit 106, a filter control analysis unit 107, a filtering unit 108, an entropy coding unit 109 and a decoded image buffer unit 110. The filtering unit 108 can implement one or more in-loop filtering operations, such as deblocking, sample adaptive offset (Sample Adaptive Offset, SAO), adaptive loop filtering (Adaptive Loop Filtering, ALF) based on Wiener filter estimation, bilateral filtering and neural network loop filtering (Neural Network Loop Filtering, NNLF). The entropy coding unit 109 can implement header information coding and context-based adaptive binary arithmetic coding (Context-based Adaptive Binary Arithmetic Coding, CABAC).
[0054] For the input video, a coding tree unit (CTU) can be obtained by preliminary partitioning, and a CU can be obtained by applying content adaptive partitioning to a CTU. A CU consists of one or more coding blocks (CB), each of which corresponds to a color component of the video. Next, for the residual pixel information obtained after intra-frame prediction or inter-frame prediction, the coding block is transformed by the transformation and quantization unit 201, including transforming the residual information from the pixel domain to the transform domain, and quantizing the obtained transform coefficients to further reduce the bit rate.
[0055] The intra-frame estimation unit 102 and the intra-frame prediction unit 103 are used to perform intra-frame prediction encoding on the coding block. In one example, the intra-frame estimation unit 102 and the intra-frame prediction unit 103 are used to determine the intra-frame prediction mode for encoding the coding block. The motion compensation unit 104 and the motion estimation unit 105 are used to perform inter-frame prediction encoding on the received coding block relative to one or more blocks in one or more reference images to provide temporal prediction information. The motion estimation performed by the motion estimation unit 105 is a process of generating a motion vector, which can estimate the motion of the coding block. The motion compensation unit 104 is used to perform motion compensation based on the motion vector determined by the motion estimation unit 105. After determining the intra-frame prediction mode, the intra-frame prediction unit 103 is used to provide the selected intra-frame prediction data to the entropy coding unit 109, and the motion estimation unit 105 is used to send the calculated motion vector data to the entropy coding unit 109.
[0056] The inverse transform and inverse quantization unit 106 is used to reconstruct the coding block. The residual block is reconstructed in the pixel domain, and the block effect of the reconstructed residual block is removed by the filter control analysis unit 107 and the filtering unit 108, and then the reconstructed residual block is added to the prediction of the image in the decoded image cache unit 110 to generate a reconstructed coding block. The entropy coding unit 109 is used to encode various coding parameters and quantized transform coefficients. In the CABAC-based coding algorithm, the context can be based on adjacent coding blocks, and the entropy coding unit 109 can be used to encode information indicating a determined intra-frame prediction mode and output a code stream of the video signal. The decoded image cache unit 110 is used to store the reconstructed coding block for prediction reference. As the image coding proceeds, reconstructed coding blocks will be continuously generated, and these reconstructed coding blocks will be stored in the decoded image cache unit 110.
[0057] Figure 2 is a schematic structural diagram of a video decoding system according to an embodiment of the present disclosure. Figure 2 As shown, the video decoding system 200 includes but is not limited to an entropy decoding unit 201, an inverse transform and inverse quantization unit 202, an intra-frame prediction unit 203, a motion compensation unit 204, a filtering unit 205, and a decoded image buffer unit 206. The entropy decoding unit 201 can implement header information decoding and CABAC. The filtering unit 205 can implement one or more in-loop filtering operations, such as deblocking, sample adaptive offset (Sample Adaptive Offset, SAO), adaptive loop filtering (Adaptive Loop Filtering, ALF) based on Wiener filter estimation, bilateral filtering, and neural network loop filtering (Neural Network Loop Filtering, NNLF).
[0058] After encoding the input video signal, a code stream of the video signal is output. The code stream is input into the video decoding system 200. First, the decoded transform coefficients are obtained by the entropy decoding unit 201. The decoded transform coefficients are processed by the inverse transform and inverse quantization unit 202 to generate a residual block in the pixel domain. The intra-frame prediction unit 203 can be used to generate prediction data for the current coding block based on the determined intra-frame prediction mode and the data from the previous decoded block of the current frame or image.
[0059] The motion compensation unit 204 is used to determine the prediction information of the coding block by analyzing the motion vector and other related syntax elements, and use the prediction information to generate a prediction of the coding block being decoded. The decoded block is formed by adding the residual block from the inverse transform and inverse quantization unit 202 to the corresponding prediction generated by the intra-frame prediction unit 203 or the motion compensation unit 204. The blocking effect of the decoded video signal is removed by the filtering unit 205, which can improve the video quality. The decoded block is then stored in the decoded image cache unit 206. The decoded image cache unit 206 is used to store reference images for subsequent intra-frame prediction or motion compensation, and is also used to output the video signal, that is, to obtain the restored original video signal.
[0060] Figure 3A FIG. 1 is a schematic diagram of dividing an image into blocks called CTUs according to an embodiment of the present disclosure. Figure 3A As shown, a frame of image is divided into multiple regions of the same size by rows and columns, each region is called a CTU, where the side length of the CTU can be 128 pixels, 64 pixels, etc. Since the division in the horizontal and vertical directions is rigid, there is no overlap between CTUs.
[0061] For example, a CTU 300 is a block of 128*128 pixels. Each CTU 300 in an image may be divided into one or more CUs (coding units), which can be used for prediction and transformation.
[0062] Figure 3B FIG. 1 is a schematic diagram of dividing a CTU into CUs according to an embodiment of the present disclosure. Figure 3B As shown, unlike HEVC, in VVC, CU 302 can be rectangular or square and can be encoded without further division into prediction units or transform units. Each CU 302 can be as large as its root CTU 300, or a subdivision of the root CTU 300 as small as 4*4 blocks.
[0063] VVC uses many new coding tools, which are described in detail below.
[0064] In this disclosure, it is assumed that encoding refers to encoding and decoding methods and systems.
[0065] The CTUs in each image are arranged in a regular grid. Then, in this disclosure, CTUs are referenced according to their position in the grid, so CTU i,j In this disclosure, the CTU grid index starts from 0, so, for example, the CTU at the upper left corner of the image is called CTU 0,0 .exist Figure 3AIn the example of , the CTUs of the entire image are decoded in raster scan order. When decoding each CTU, the syntax elements are decoded from the bitstream by the CABAC arithmetic decoder, and the context that models the probability distribution of these syntax elements is updated accordingly. The updated context is used to decode the next CTU in raster scan decoding order.
[0066] One advantage of this context update strategy is that the context modeling gradually adapts and learns the statistics of the video signal with each decoded CTU. However, this also imposes a sequential dependency in the raster scan decoding order. One consequence of this dependency is that all CABAC decoding must be done sequentially, and the speed of the decoding process is in fact limited by the performance of a single decoder core. For high data rate video sequences, such as high resolution and high frame rate, the throughput requirements on the decoder are increased.
[0067] Images can be divided into independently decodable units, such as slices or tiles. In this case, a relatively low throughput decoder can be used to decode individual slices / tiles in parallel. However, this results in a significant compression loss.
[0068] [Wavefront Parallel Processing]
[0069] VVC provides an alternative mechanism called Wavefront Parallel Processing (WPP) to achieve parallel decoding at the cost of lower compression efficiency.
[0070] When the SPS level syntax element sps_entropy_coding_sync_enabled_flag is enabled, the relationship between CTUs is modified in two ways.
[0071] Figure 4A is a schematic diagram showing CABAC and palette predictor propagation according to an embodiment of the present disclosure. Figure 4A As shown, first, the inheritance of state information between CTUs that is usually performed in raster scan order is modified. At the beginning of each CTU row, instead of inheriting state information from the last CTU row that has been decoded, the state information is inherited from the first CTU of the last CTU row that has been decoded. The state information may consist of the CABAC context as described above and the palette predictor when the palette encoding tool is enabled, but the present disclosure is not limited thereto.
[0072] Second, when the syntax element sps_entropy_coding_sync_enabled_flag is enabled, the neighboring CTU availability for prediction is modified. In general, if any of the following is true, the current CTUi,j The adjacent CTU is determined to be unavailable.
[0073] a. The adjacent CTU is outside the image boundary. For example: CTU -1,0 Not available.
[0074] b. The adjacent CTU and the current CTU i,j Located in different slices or tiles.
[0075] c. The adjacent CTU is located in the current CTU in raster scan decoding order i,j After that. For example, CTU i,j+1 Not available.
[0076] When the syntax element sps_entropy_coding_sync_enabled_flag is enabled, the availability of CTUs for prediction is further restricted by another condition. That is, if the neighboring CTU a,b The CTU column position of is greater than the current CTU, that is, if b>j, then CTU a,b Not available.
[0077] The restriction imposed by the syntax element sps_entropy_coding_sync_enabled_flag allows decoding of the codestream in a parallel structure called Wavefront Parallel Processing (WPP).
[0078] Figure 4B Schematic diagram showing the wavefront of a WPP according to an embodiment of the present disclosure. Figure 4B As shown, CTU i,j , CTU i-1,j+1 , CTU i-2,j+2 and CTU i-3,j+3 A diagonal concatenation of sets of CTUs can be decoded in parallel. i,j The decoding does not depend on CTU i-1,j+1 , because the neighboring CTU is marked as unavailable for prediction and the state information (such as CABAC context) is inherited from the CTU i-1,j .
[0079] exist Figure 4B In the example of , the maximum number of decoder cores that can process in parallel is min(X,Y), where X is the number of CTU columns in the image and Y is the number of CTU rows in the image. WPP has less impact on compression efficiency than slice or tile partitioning because prediction and state propagation can still be performed across CTU rows in a restricted manner.
[0080] [Intra Block Copy]
[0081] One intra prediction tool available in the VVC standard is Intra Block Copy (IBC). When a CU is predicted by IBC, the corresponding block vector is used to determine the location of the prediction block. In VVC, the prediction block is obtained from a virtual IBC buffer of size 256*128 in the luminance sample. For a typical CTU of size 128*128 pixels, the size of the virtual IBC buffer is two CTUs. This IBC cache can also be called a "reference area" or "search area" because an IBC-encoded CU cannot be predicted from blocks outside the IBC cache.
[0082] In exploratory activities for enhanced compression beyond VVC, it has been proposed to extend the IBC reference area to the current CTU row, and the previous two CTU rows.
[0083] Figure 5A Schematic diagram showing an extended IBC reference area according to an embodiment of the present disclosure. Figure 5A As shown, the extended reference area 52 is represented by the shaded area. That is, if the current CTU i,j The block CU1 in is predicted by IBC, then it can reference any CTU that satisfies k≥j-2 from the CTU rows two rows above. i-2,k ; You can reference any CTU from the previous CTU line i-1,k ; and any CTU that satisfies k≤j-1 can be referenced from the current CTU row i,k In this embodiment, CTU i-2,j+1 The prediction block PB1 in is used as a predictor for decoding the block CU1.
[0084] Although any block in the extended IBC reference area can be referenced by an IBC block vector, it is impractical to determine the block vector at the encoder by exhaustive search. For example, in the Enhanced Compression software Model (ECM), the encoder performs a complete per-sample search only in the "local search area 52a" indicated by the CTU shaded by the solid line. The local search area 52a consists of any CTU in the CTU row two rows above that satisfies (j-2)≤k≤(j+1). i-2,k , any CTU in the previous CTU row that satisfies (j-2)≤k≤(j+1) i-1,k , and any CTU that satisfies (j-2)≤k≤(j-1) i,k Equivalently, the local search area 52a is composed of CTU i-2,j-2 , CTU i-2,j-1 , CTU i-2,j , CTU i-2,j+1 , CTUi-1,j-2 , CTU i-1,j-1 , CTU i-1,j , CTU i-1,j+1 , CTU i,j-2 and CTU i,j-1 composition.
[0085] To limit the memory cache burden, it is recommended to extend the IBC reference area only to the current CTU row and the previous CTU row as a special case when the CTU size is 256*256 pixels.
[0086] Figure 5B Schematic diagram showing an extended IBC reference area according to an embodiment of the present disclosure. Figure 5B As shown, the extended reference area 54 is represented by a shaded area. That is, if the current CTU i,j The block in is predicted by IBC, then it can reference any CTU satisfying k ≥ j-1 from the previous CTU row. i-1,k , and any CTU that satisfies k≤j-1 can be referenced from the current CTU row 1,k In this embodiment, CTU i-1,j+1 The prediction block PB2 in is used as a predictor for decoding block CU2.
[0087] Reference to above Figure 5A Similar to the general situation described above, the ECM encoder is only Figure 5B The IBC block vector is completely searched in the local search area 54a indicated by the CTU with solid line shadow. That is, when the CTU size is 256*256, the local search area 54a is composed of CTU i-1,j-1 , CTU i-1,j and CTU i,j-1 composition.
[0088] [Decoder]
[0089] Figure 6 Schematic diagram of the hardware structure of the decoder provided by the embodiment of the present application according to the embodiment of the present disclosure. Figure 6 The decoder 60 includes a communication interface 62 , a storage device 64 , and a processor 66 , which is coupled to the communication interface 62 and the storage device 64 via a bus system 68 .
[0090] The communication interface 62 is, for example, a network card supporting a wired network connection such as Ethernet, a wireless network card supporting wireless communication standards such as Institute of Electrical and Electronics Engineers (IEEE) 802.11n / b / g / ac / ax / be, or any other network connection device, but the present embodiment is not limited thereto. The communication interface 62 is configured to retrieve a bit stream corresponding to the current frame.
[0091] The storage device 64 may be a volatile memory or a non-volatile memory, or may include both volatile and non-volatile memory. Among them, the non-volatile memory may be a read-only memory (ROM), a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), or a flash memory. The volatile memory may be a random access memory (RAM), used as an external cache. The storage device 64 described in the present application is configured to store at least one computer executable instruction.
[0092] The processor 66 is coupled to the communication interface 62 and the storage device 64 via a bus system 68. It is understood that the bus system 68 is used as a data bus to implement the connection and communication between these components. In addition to the data bus, the bus system 68 can also be a power bus, a control bus, a status signal bus or a combination thereof, but the present embodiment is not limited thereto.
[0093] It can be understood that the components in this embodiment can be integrated into one processing unit, or each component can exist physically separately, or two or more components can be integrated into one component.
[0094] Figure 7 is a flowchart of an encoding method applied to a decoder according to an embodiment of the present disclosure. Figure 6 and Figure 7 , the method of this embodiment is applied to Figure 6 The decoder 60 in FIG. Detailed steps of the encoding method of the exemplary embodiment of the present disclosure together with the components in the decoder 60 will be described below.
[0095] In step S702 , the processor 66 retrieves a code stream corresponding to the current frame by using the communication interface 62 .
[0096] In step S704 , the processor 66 parses the code stream to obtain a current coding tree unit (CTU) of the current frame.
[0097] In step S706, the processor 66 determines the availability of at least one adjacent CTU of the current CTU in the current frame according to the wavefront delay, wherein the wavefront delay is the delay in the row direction in units of CTUs between the current CTU in the current CTU row and the adjacent CTU in the previous CTU row, and the current CTU and the adjacent CTU are decoded in parallel.
[0098] In some embodiments, when decoding the first CTU of the current CTU row, when the wavefront delay is N CTUs, the processor 66 may inherit state information from the adjacent CTU located in the previous CTU row that has been decoded at the latest, wherein the adjacent CTU is delayed by N-1 CTUs in the row direction, thereby enabling wavefront parallel processing (WPP). Examples of state information include CABAC context, palette predictor, and persistent Rice parameters, but the present disclosure is not limited thereto.
[0099] It should be noted that in the present disclosure, the first aspect of the present disclosure proposes a general implementation of the WPP feature. Define the wavefront delay as N, where N is the delay in CTUs between the decoded "wavefront" at CTU row i and the decoded wavefront at the next CTU row i+1. Then, when advanced syntax elements (such as sps_entropy_coding_sync_enabled_flag) are enabled, the video encoding and the resulting bitstream are modified in two ways.
[0100] a. At the beginning of each CTU row i, the status information is not inherited from the last CTU of the previous CTU row, but from the CTU that has been decoded in the previous CTU row at the latest. i-1,N-1 Inherited state information.
[0101] b. The availability of neighboring CTUs for prediction is subject to another limitation. That is, if bj ≥ (ia) * N, then the neighboring CTU a,b Marked as unavailable for current CTU i,j The predictor of .
[0102] Figure 8 is a schematic diagram showing the neighboring block availability of wavefront delay according to an embodiment of the present disclosure. Figure 8 , because the wavefront delay is defined as N, the usable area is demarcated by a solid line (including area A and area B, where area B is the IBC reference area), and the unusable area is demarcated by a dotted line (i.e., area C).
[0103] It should be noted that when N = 1, the above restrictions allow the WPP feature of VVC. The CTU availability restriction (unavailable when bj≥ia) is less restrictive than VVC (unavailable when b>j), but still allows the implementation of the WPP feature.
[0104] Setting the wavefront delay N to different values allows a trade-off between compression efficiency and parallelism. Higher values of N result in higher compression efficiency because the state information can fit into more CTUs before being propagated to the next CTU row, and larger areas of the image are marked as available for prediction. However, higher values of N also reduce the number of parallel decoder cores that can be used to decode the image. If X is the number of CTU columns in the image and Y is the number of CTU rows in the image, the maximum number of decoder cores that can process in parallel is
[0105] Back to Figure 7 In step S708, the processor 66 determines a prediction block in at least one neighboring CTU for a current coding unit (CodingUnit, CU) in the current CTU.
[0106] Finally, in step S710 , the processor 66 decodes the current CU using the prediction block.
[0107] Based on the above, the present disclosure provides a modification to Wavefront Parallel Processing (WPP) by limiting adjacent CTUs used for prediction, so that a code stream can be decoded by multiple low-cost decoder cores and the decoding throughput can be improved.
[0108] In a second aspect of the present disclosure, when the syntax element sps_entropy_coding_sync_enabled_flag is enabled, intra prediction tools are restricted to be consistent with the region available for prediction, which region needs to allow WPP. When combined with the first aspect, the CTU i,j The IBC reference area is modified as follows Figure 5A The extended reference area described is similar to Figure 8 The shown can be used in CTU i,j The intersection of the regions of Figure 8 IBC reference area B is shown. More generally, when the syntax element sps_entropy_coding_sync_enabled_flag is enabled, any intra prediction tools are restricted to the area available for prediction. For example, the IBC reference area can be further extended to more CTU rows, or its shape modified, but it still has to be masked to the intersection with the area available for prediction.
[0109] For example, if the wavefront delay N = 1, the IBC reference region of the blocks in the current CTU i,j is modified to any CTU in the CTU row two rows above that satisfies j - 2 ≤ k < j + 2 i-2,k , any CTU in the previous CTU row that satisfies k < j + 1 i-1,k , and any CTU in the current CTU row that satisfies k < j i,k . If the wavefront delay N = 3, the IBC reference region of the blocks in the current CTU i,j is modified to any CTU in the CTU row two rows above the i-th CTU row that satisfies j - 2 ≤ k < j + 6 i-2,k , any CTU in the previous CTU row of the i-th CTU row that satisfies k < j + 4 i-1,k , and any CTU that satisfies k < j i,k .
[0110] Fig. 9 is a flowchart of an encoding method applied to a decoder according to an embodiment of the present disclosure. Referring also to Figure 6 and Fig. 9 , the method of this embodiment is applied to the decoder 60 in Figure 6 . The detailed steps of the encoding method of the exemplary embodiment of the present disclosure together with the components in the decoder 60 will be described below.
[0111] In step S902, the processor 66 retrieves the code stream corresponding to the current frame by using the communication interface 62.
[0112] In step S904, the processor 66 parses the code stream to obtain the current coding tree unit (CTU) of the current frame.
[0113] In step S906, the processor 66 determines the IBC reference region, where the IBC reference region includes a plurality of adjacent CTUs within a fixed range from the current CTU i,j . For example, the local search region in FIG. 5 is determined as the IBC reference region.
[0114] In step S908, when the wavefront delay is N CTUs, if b - j ≥ (i - a) × N, the processor 66 determines that the adjacent CTU at the a-th CTU row and the b-th CTU column in the IBC reference region a,b is unavailable. In some embodiments, the IBC reference region is modified by removing the determined unavailable CTUs. For example, Figure 8 the region B in
[0115] In step S910, the processor 66 determines a prediction block of a current coding unit (CU) in the current CTU within a modified IBC reference region.
[0116] Finally, in step S912, the processor 66 decodes the current CU using the prediction block.
[0117] Based on the above, the present disclosure provides modifications to the IBC reference region and WPP to allow compatibility between IBC and WPP while still expanding the IBC reference region to allow improved intra prediction.
[0118] For the special case where the CTU size is 256*256 pixels, the IBC reference region is modified to be the intersection of the extended reference region as Figure 5B described and the region available for prediction as Figure 8 shown. For example, if the wavefront delay N = 1, the IBC reference region of the blocks in the current CTU i,j is modified to any CTU in the previous CTU row that satisfies j - 1 ≤ k < j + 1 i-1,k , and any CTU in the current CTU row that satisfies k < j i,k .
[0119] In some embodiments, the second aspect is combined with the restrictions imposed by the syntax element sps_entropy_coding_sync_enabled_flag in VVC to obtain the IBC reference region of the CTU i,j .
[0120] In another embodiment, step S908 is modified such that the unavailable rule is the same as the VVC standard. That is, if b > j, the adjacent CTU a,b at the a-th CTU row and the b-th CTU column is unavailable. Fig.10 is a schematic diagram showing the availability of adjacent blocks of the wavefront delay according to this embodiment of the present disclosure. Referring to Fig.10 , if the wavefront delay N = 1, the IBC reference region of the blocks in the current CTU i,j is modified to any CTU in the CTU row two rows above that satisfies j - 2 ≤ k ≤ j i-2,k , any CTU in the previous CTU row that satisfies k ≤ j i-1,k , and any CTU in the current CTU row that satisfies k < j i,k . The IBC reference region is smaller than that in the arrangement as Figure 8 shown, which may result in reduced compression performance. However, for ease of implementation and cache management, it may be desirable to use a regular-shaped IBC reference region as Fig.10 shown.
[0121] In some embodiments, when the syntax element sps_entropy_coding_sync_enabled_flag is disabled, the IBC reference area may first be reduced to the above reference area. Figure 5A and Figure 5B The local search area described. Reducing the IBC reference area will generally result in a reduction in the compression performance of the IBC tool. However, there are several reasons why this arrangement is desirable.
[0122] First, the reduction in compression performance can be small because the local search area consists of spatially close CTUs, and these CTUs are likely to provide the best predictor for the current block. Second, the local search area has a fixed size in CTUs, so the IBC cache requirement depends only on the CTU size. For outline design and hardware implementation, this may be more desirable than the IBC reference area because the IBC reference area depends on both the CTU size and the CTU row width. Third, when the syntax element sps_entropy_coding_sync_enabled_flag is enabled, the WPP feature can be retained without further restricting the IBC reference area. For example, if the first aspect is implemented with a delay of N=2, no further restrictions are required in the IBC reference area. If the first aspect is implemented with a delay of N=1, then when the syntax element sps_entropy_coding_sync_enabled_flag is enabled, the IBC reference area is still modified to its intersection with the area available for prediction.
[0123] Fig.11 It shows that the original IBC reference area is reduced to Figure 5A When the syntax element sps_entropy_coding_sync_enabled_flag is disabled, the IBC reference area is set equal to the local search area 52a, which is defined by the CTU i-2,j-2 , CTU i-2,j-1 , CTU i-2,j , CTU i-2,j+1 , CTU i-1,j-2 , CTU i-1,j-1 , CTU i-1,j , CTU i-1,j+1 , CTU i,j-2 and CTU i,j-1When the syntax element sps_entropy_coding_sync_enabled_flag is enabled and the wavefront delay N=1, the availability of the neighboring CTUs for prediction is limited by the unavailable area delimited by the dashed line (i.e., area C') and the available area delimited by the solid line (i.e., area A'). The IBC reference area is modified to area B' containing the neighboring CTUs, which consists of CTU i-2,j-2 , CTU i-2,j-1 , CTU i-2,j , CTU i-2,j+1 , CTU i-1,j-2 , CTU i-1,j-1 , CTU i-1,j , CTU i,j-2 and CTU i,j-1 composition.
[0124] In some embodiments of the second aspect, regardless of the value of the syntax element sps_entropy_coding_sync_enabled_flag, when the syntax element sps_entropy_coding_sync_enabled_flag is enabled, the reference area of the IBC tool may be reduced to be consistent with the area available for prediction. Figure 8 or Fig.10 The reduced IBC reference area in is always available to the IBC tool. While this reduces the potential compression efficiency of the IBC tool, this restriction may be preferable for encoder implementations. The change in reference area when the syntax element sps_entropy_coding_sync_enabled_flag is enabled or disabled means that the encoder needs to implement two independent IBC search algorithms in order to maximize coding gain. In practice, it may be preferable to optimize a single search algorithm for the reduced IBC reference area.
[0125] In the third aspect of the present disclosure, the binarization of the IBC block vector written into the codestream is not limited to being consistent with the IBC reference region described in the second aspect, but the value of the block vector that causes the IBC reference region to be illegal. For example, the binarization of the IBC block vector may be located in an unbounded codeword space, or in a bounded codeword space whose maximum value exceeds the range of the IBC reference region. Codewords with values that cause the IBC vector to point outside the IBC reference region are illegal in the codestream.
[0126] In some embodiments, the values written into the codestream may be passed into a mapping function to determine the IBC block vector, where the function can only generate block vectors that point inside the IBC reference region. For example, the function may clip the codeword value, or apply a modulo operation to force the block vector to be legal.
[0127] In some embodiments, the IBC block vectors may be binarized into a bounded codeword space that does not allow transmission of block vectors pointing outside the IBC reference region.
[0128] Fig.12 is a flowchart of an encoding method applied to a decoder according to an embodiment of the present disclosure. Figure 6 and Fig.12 , the method of this embodiment is applied to Figure 6 The decoder 60 in FIG. Detailed steps of the encoding method of the exemplary embodiment of the present disclosure together with the components in the decoder 60 will be described below.
[0129] In step S1202 , the processor 66 retrieves a code stream corresponding to the current frame by using the communication interface 62 .
[0130] In step S1204, the processor 66 parses the code stream to obtain a current coding tree unit (CTU) of the current frame.
[0131] In step S1206, the processor 66 determines an IBC reference area, wherein the IBC reference area includes a region located 100 km from the current CTU. i,j Multiple adjacent CTUs within a fixed range.
[0132] In step S1208, when the wavefront delay is N CTUs, if bj≥(ia)×N, the processor 66 determines the adjacent CTU located in the ath CTU row and the bth CTU column in the IBC reference area. a b Not available.
[0133] In step S1210 of this embodiment, the processor 66 does not use samples in the modified IBC reference area to determine the prediction block, but decodes the IBC block vector from the bitstream.
[0134] In step S1212 , the processor 66 uses the IBC block vector to determine a prediction block in a neighboring CTU within the IBC reference area for the current CU.
[0135] In some embodiments, if the IBC block vector points to an area outside the IBC reference area, the IBC block vector is determined to be illegal. For example, if the horizontal component of the IBC block vector is transmitted in 3 bits, values 0 to 5 will point to an area within the IBC reference area, but values 6 and 7 will point to an area outside the IBC reference area. Then the binarized IBC block vector horizontal component {110, 111} with values 6 and 7 is determined to be illegal.
[0136] In some embodiments, the IBC block vector is modified by a mapping function to point to an area within the IBC reference area. For example, assuming that the horizontal component of the IBC block vector is transmitted in 3 bits, the decoded value can be clipped to max(x,5), so that the binarized horizontal component {000,001,010,011,100,101} maintains the original value, while the value of the binarized horizontal component {110,111} is clipped to 5. In another example, assuming that the horizontal component of the IBC block vector is transmitted in 3 bits, the modulus operator x%6 can be applied, so that the binarized horizontal component {000,001,010,011,100,101} maintains the original value, while the value of the binarized horizontal component {110} is changed to 0, and the value of the binarized horizontal component {110} is changed to 1.
[0137] In some embodiments, the IBC block vector is binarized into a codeword space that is bounded within the limits of the IBC reference region. For example, assume that the horizontal component of the IBC block vector can take values between 0 and 5, but a value of 6 or 7 would point to a region outside the IBC reference region. Truncated binary codewords, such as {000=0, 001=1, 010=2, 011=3, 10=4, 11=5}, are used to create a codeword space limited to the allowed values of the horizontal component.
[0138] [Encoder]
[0139] Fig.13 Schematic diagram of the hardware structure of the encoder according to the embodiment of the present disclosure. Fig.13 The encoder 130 includes a communication interface 132 , a storage device 134 , and a processor 136 , and the processor 136 is coupled to the communication interface 132 and the storage device 134 via a bus system 138 .
[0140] It is understood that the hardware structure of the communication interface 132, the storage device 134, the processor 136 and the bus system 138 is similar to Figure 6 The hardware structures of the communication interface 62, storage device 64, processor 66 and bus system 68 are similar, so the details are not described here.
[0141] In this embodiment, the communication interface 132 is configured to retrieve a current frame of a video, and the processor 136 is configured to execute computer executable instructions stored in the storage device 134 to perform the following video encoding method.
[0142] Fig.14 is a flowchart of a video encoding method applied to a decoder according to an embodiment of the present disclosure. Fig.13 and Fig.14 , the method of this embodiment is applied to Fig.13The encoder 130 in FIG. Detailed steps of a video encoding method of an exemplary embodiment of the present disclosure together with components in the encoder 120 will be described below.
[0143] In step S1402 , the processor 136 retrieves a current frame of the video by using the communication interface 132 .
[0144] In step S1404 , the processor 136 divides the current frame into a plurality of CTUs.
[0145] In step S1406, the processor 136 determines the availability of at least one adjacent CTU of the current CTU in the current frame according to the wavefront delay, wherein the wavefront delay is the delay in the row direction in units of CTUs between the current CTU in the current CTU row and the adjacent CTU in the previous CTU row, and the current CTU and the adjacent CTU are encoded in parallel.
[0146] In step S1408 , the processor 136 performs intra prediction on the current CU of the current CTU to obtain a prediction block from at least one neighboring CTU.
[0147] In step S1410 , the processor 136 encodes a block vector pointing to the prediction block into a code stream corresponding to the current frame.
[0148] In summary, in the video coding method, encoder and decoder of the present disclosure, modifications are described, which allow intra-frame prediction, especially IBC prediction, by extending the reference area to maintain compatibility with the WPP feature. Therefore, it is possible to decode the code stream supporting the IBC coding tool through multiple low-cost decoder cores, thereby improving the decoding throughput.
[0149] It is obvious to those skilled in the art that various modifications and changes can be made to the disclosed embodiments without departing from the scope or spirit of the present disclosure. In view of the above, the present disclosure is intended to cover all modifications and changes that fall within the scope of the appended claims and their equivalents.
Claims
1. A video encoding method, applied to a decoder, the video encoding method comprising: Retrieving a code stream corresponding to a current frame, and parsing the code stream to obtain a current coding tree unit CTU of the current frame; Determining availability of at least one neighboring CTU of the current CTU in the current frame according to a wavefront delay, wherein the wavefront delay is a delay in a row direction in units of CTUs between the current CTU located in a current CTU row and a neighboring CTU located in a previous CTU row, the current CTU and the neighboring CTU being decoded in parallel; Determine a prediction block in the at least one neighboring CTU for a current coding unit CU in the current CTU; and The current CU is decoded using the prediction block.
2. The method according to claim 1, further comprising: When decoding the first CTU of the current CTU row, when the wavefront delay is N CTUs, the state information is inherited at the latest from the adjacent CTU located in the previous CTU row that has been completely decoded, and the delay of the adjacent CTU in the row direction is N-1 CTUs.
3. The method according to claim 1, wherein: The step of determining availability of at least one neighboring CTU of the current CTU in the current frame according to the wavefront delay comprises: For the current CTU located at the i-th CTU row and j-th CTU column i,j , When the wavefront delay is N CTUs, if bj≥(ia)×N, the adjacent CTU located in the ath CTU row and the bth CTU column is determined. a,b Not available.
4. The method according to claim 1, wherein: Availability of at least one neighboring CTU of the current CTU in the current frame is determined according to the wavefront delay in response to a sequence parameter set (SPS) level syntax element being enabled.
5. The method according to claim 1, wherein: The step of determining availability of at least one neighboring CTU of the current CTU in the current frame according to the wavefront delay comprises: For the current CTU located at the i-th CTU row and j-th CTU column i,j , Determine an intra-block copy IBC reference area, the IBC reference area includes a location located 100 km from the current CTU i,j A plurality of adjacent CTUs within a fixed range of ; and When the wavefront delay is N CTUs, if vj≥(ia)×N, the adjacent CTU located in the ath CTU row and the bth CTU column in the IBC reference area is determined a,b Not available.
6. The method according to claim 5, wherein The IBC reference areas include: The adjacent CTU in the CTU row two rows above the i-th CTU row i-2,k , where (j-2)≤k≤(j+1); the adjacent CTU in the CTU row above the i-th CTU row i-1,k , where (j-2)≤k≤(j+1); and adjacent CTU i,k , where (j-2)≤k≤(j-1).
7. The method according to claim 5, wherein The IBC reference areas include: The adjacent CTU in the CTU row above the i-th CTU row i-1,k , where (j-1)≤k; and adjacent CTU i,k , where k <j。 8. The method according to claim 5, wherein The IBC reference areas include: The adjacent CTU in the CTU row two rows above the i-th CTU row i-2,k , where (j-2)≤k; the CTU row in the upper row of the i-th CTU row satisfies any k adjacent CTUs i-1,k ; and adjacent CTU i,k , where k <j。 9. The method according to claim 5, wherein: The step of determining a prediction block in the at least one neighboring CTU for a current CU in the current CTU comprises: Decoding an IBC block vector from the codestream; and Determine a prediction block in at least one neighboring CTU within the IBC reference area for the current CU using the IBC block vector; If the IBC block vector points to an area outside the IBC reference area, or is modified by a mapping function to point to an area within the IBC reference area, or is binarized into a codeword space bounded within the limits of the IBC reference area, the IBC block vector is determined to be illegal.
10. A decoder comprising: a communication interface configured to retrieve a code stream corresponding to a current frame; a storage device configured to store at least one computer executable instruction; as well as a processor coupled to the communication interface and the memory device and configured to execute the at least one computer-executable instruction to: Parsing the bitstream to obtain a current coding tree unit CTU of the current frame; Determining availability of at least one neighboring CTU of the current CTU in the current frame according to a wavefront delay, wherein the wavefront delay is a delay in a row direction in units of CTUs between the current CTU located in a current CTU row and a neighboring CTU located in a previous CTU row, the current CTU and the neighboring CTU being decoded in parallel; Determine a prediction block in the at least one neighboring CTU for a current coding unit CU in the current CTU; and The current CU is decoded using the prediction block.
11. The decoder according to claim 10, wherein The processor is configured to: when decoding the first CTU of the current CTU row, when the wavefront delay is N CTUs, inherit the status information from the adjacent CTU located in the previous CTU row that has been completely decoded at the latest, and the delay of the adjacent CTU in the row direction is N-1 CTUs.
12. The decoder of claim 10, wherein For the current CTU located at the i-th CTU row and j-th CTU column i,j , The processor is configured to: when the wavefront delay is N CTUs, if bj≥(ia)×N, determine the adjacent CTU located in the ath CTU row and the bth CTU column a,b Not available.
13. The decoder of claim 10, wherein For the current CTU located at the i-th CTU row and j-th CTU column i,j , The processor is configured to: determine an intra-block copy (IBC) reference area, wherein the IBC reference area includes a location located 100 meters from the current CTU i,j A plurality of adjacent CTUs within a fixed range of ; and When the wavefront delay is N CTUs, if bj≥(ia)×N, then the adjacent CTU located in the ath CTU row and the bth CTU column in the IBC reference area is determined. a,b Not available.
14. The decoder of claim 13, wherein The processor is configured to: decode an IBC block vector from the bitstream; and use the IBC block vector to determine a prediction block in at least one neighboring CTU in the IBC reference area for the current CU; in, If the IBC block vector points to an area outside the IBC reference region, or is modified by a mapping function to point to an area within the IBC reference region, or is binarized to a codeword space bounded within the limits of the IBC reference region, the IBC block vector is determined to be illegal.
15. A video encoding method, applied to an encoder, the method comprising: Retrieve the current frame of the video; Dividing the current frame into a plurality of coding tree units CTU; Determining availability of at least one neighboring CTU of a current CTU in the current frame according to a wavefront delay, wherein the wavefront delay is a delay in a row direction in units of CTUs between the current CTU located in a current CTU row and a neighboring CTU located in a previous CTU row, the current CTU and the neighboring CTU being encoded in parallel; Performing intra prediction on a current coding unit CU of the current CTU to obtain a prediction block from the at least one neighboring CTU; and A block vector pointing to the prediction block is encoded into a code stream corresponding to the current frame.
16. The method according to claim 15, wherein: The step of determining availability of at least one neighboring CTU of the current CTU in the current frame according to the wavefront delay comprises: For the current CTU located at the i-th CTU row and j-th CTU column i,j , When the wavefront delay is N CTUs, if bj≥(ia)×N, the adjacent CTU located in the ath CTU row and the bth CTU column is determined. a,b Not available.
17. The method according to claim 15, wherein: The step of determining availability of at least one neighboring CTU of the current CTU in the current frame according to the wavefront delay comprises: For the current CTU located at the i-th CTU row and j-th CTU column i,j , Determine an intra-block copy IBC reference area, the IBC reference area includes a location located 100 km from the current CTU i,j A plurality of adjacent CTUs within a fixed range of ; and When the wavefront delay is N CTUs, if bj≥(ia)×N, determine the adjacent CTU located in the ath CTU row and the bth CTU column in the IBC reference area. a,b Not available.
18. An encoder comprising: a communication interface configured to retrieve a current frame of a video; a storage device configured to store at least one computer executable instruction; as well as a processor coupled to the communication interface and the memory device and configured to execute the at least one computer-executable instruction to: Dividing the current frame into a plurality of coding tree units CTU; Determining availability of at least one neighboring CTU of a current CTU in the current frame according to a wavefront delay, wherein the wavefront delay is a delay in a row direction in units of CTUs between the current CTU located in a current CTU row and a neighboring CTU located in a previous CTU row, the current CTU and the neighboring CTU being encoded in parallel; Performing intra prediction on a current coding unit CU of the current CTU to obtain a prediction block from the at least one neighboring CTU; and A block vector pointing to the prediction block is encoded into a code stream corresponding to the current frame.
19. The encoder according to claim 18, wherein For the current CTU located at the i-th CTU row and j-th CTU column i,j , The processor is configured to: when the wavefront delay is N CTUs, if bj≥(ia)×N, determine the adjacent CTU located in the ath CTU row and the bth CTU column a,b Not available.
20. The encoder of claim 18, wherein For the current CTU located at the i-th CTU row and j-th CTU column i,j , The processor is configured to: determine an intra-block copy (IBC) reference area, wherein the IBC reference area includes a location located 100 meters from the current CTU i,j A plurality of adjacent CTUs within a fixed range of ; and When the wavefront delay is N CTUs, if bj≥(ia)×N, then the adjacent CTU located in the ath CTU row and the bth CTU column in the IBC reference area is determined. ab Not available.
Citation Information
Patent Citations
Rules for intra-picture prediction modes when wavefront parallel processing is enabled
CN105874795A
Intra block copy prediction restrictions for parallel processing
CN106797479A
Motion vector storage for video coding
WO2020076838A1