Reference Picture Resampling for Video Encoding and Decoding

JP2025514816A5Pending Publication Date: 2026-04-28GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP LTD
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP LTD
Filing Date
2023-04-21
Publication Date
2026-04-28

AI Technical Summary

Technical Problem

Existing video encoding and decoding techniques face inefficiencies due to inaccurate interpolation results from 4-tap interpolation filters used for resampling reference pictures, leading to low coding efficiency.

Method used

The use of 6-tap chromatic interpolation filters for resampling reference pictures in video encoding and decoding, reusing a set of 32 filters for motion compensation, provides more accurate interpolation results.

Benefits of technology

This approach improves video encoding and decoding efficiency by reducing the value of inter prediction residuals and optimizing storage utilization, leading to better codec performance.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

In some embodiments, the video decoder decodes the video bitstream into video frames. The decoder decodes the video frames from the video bitstream. The decoder further performs inter prediction to decode a current frame of the video using the decoded frames as reference frames. The step of performing inter prediction performs reference picture resampling by upsampling the current frame's reference frames using one or more filters selected from a set of 32 6-tap interpolation filters. The set of interpolation filters is also used to interpolate chrominance components for motion compensation. The decoded frames and the decoded current frame are output for display.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] (CROSS-REFERENCE TO RELATED APPLICATIONS) This application claims priority to U.S. provisional application No. 63 / 363,386, filed on April 21, 2022, entitled "Use of Chroma Interpolation Filter for Reference Picture Resampling," the entire contents of which are incorporated herein by reference.

[0002] This application relates generally to video processing, and more particularly to applying chrominance interpolation filters to reference picture resampling in video encoding and decoding. [Background technology]

[0003] Commonly seen devices with camera capabilities (e.g., smartphones, tablets, and personal computers) have made it easier than ever to collect videos and images. However, the amount of data even for short videos can be quite large. Video encoding and decoding techniques (including video encoding and decoding) allow video data to be compressed into smaller sizes, which allows for the storage and transmission of various videos. Video encoding and decoding are used in a wide range of applications, including digital TV broadcasting, video transmission over the Internet and mobile networks, real-time applications (e.g., video chat, video conferencing), DVDs and Blu-ray discs, etc. To reduce the consumption of storage space for storing videos and / or network bandwidth for transmitting videos, the efficiency of video encoding and decoding methods needs to be improved. Summary of the Invention

[0004] Some embodiments relate to using chromaticity interpolation filters for reference picture resampling in video encoding and decoding. In one example, a method for decoding video from a video bitstream includes: decoding one or more frames of the video from the video bitstream; and decoding a current frame of the video by performing inter prediction using the decoded one or more frames as reference frames. Performing inter prediction includes performing reference picture resampling by upsampling a reference frame of the current frame using at least one filter selected from a set of 32 6-tap interpolation filters. The decoding method further includes displaying the decoded one or more frames and the decoded current frame.

[0005] In another example, a non-transitory computer-readable medium has stored thereon program code executable by one or more processing devices to perform the following operations: decoding one or more frames of video from a video bitstream; and decoding a current frame of the video by performing inter prediction using the decoded one or more frames as reference frames. Performing inter prediction includes performing reference picture resampling by upsampling the reference frame of the current frame using at least one filter selected from a set of 32 6-tap interpolation filters. The operations further include displaying the decoded one or more frames and the decoded current frame.

[0006] In yet another example, a system includes a processing device and a non-transitory computer-readable medium communicatively coupled to the processing device. The processing device is configured to perform the following operations by executing program code stored on the non-transitory computer-readable medium: decoding one or more frames of video from a video bitstream; and decoding a current frame of the video by performing inter prediction using the decoded one or more frames as reference frames. Performing inter prediction includes performing reference picture resampling by upsampling on a reference frame of the current frame using at least one filter selected from a set of 32 6-tap interpolation filters. The operations further include displaying the decoded one or more frames and the decoded current frame.

[0007] In another example, a method for encoding a video includes accessing a plurality of frames of a video and performing inter prediction on the plurality of frames to generate prediction residuals for the plurality of frames, where performing inter prediction includes performing reference picture resampling by upsampling a reference frame of a current frame in the plurality of frames using at least one filter selected from a set of 32 6-tap interpolation filters, and the encoding method further includes encoding the prediction residuals for the plurality of frames into a bitstream representing the video.

[0008] In another example, a non-transitory computer-readable medium has stored thereon program code executable by one or more processing devices to perform the following operations: accessing a plurality of frames of a video; and performing inter prediction on the plurality of frames to generate prediction residuals for the plurality of frames. Performing inter prediction includes performing reference picture resampling by upsampling a reference frame of a current frame in the plurality of frames using at least one filter selected from a set of 32 6-tap interpolation filters. The operations further include encoding the prediction residuals for the plurality of frames into a bitstream representing a video.

[0009] In yet another example, a system includes a processing device and a non-transitory computer-readable medium communicatively coupled to the processing device. The processing device is configured to perform the following operations by executing program code stored on the non-transitory computer-readable medium: accessing a plurality of frames of a video; and performing inter prediction on the plurality of frames to generate a prediction residual for the plurality of frames. Performing inter prediction includes performing reference picture resampling by upsampling a reference frame of a current frame in the plurality of frames using at least one filter selected from a set of 32 6-tap interpolation filters. The operations further include encoding the prediction residual for the plurality of frames into a bitstream representing a video.

[0010] These illustrative examples are not intended to limit the disclosure, but are intended to provide examples to facilitate understanding. Additional examples are described and further explanations are provided in specific embodiments. [Brief description of the drawings]

[0011] [Figure 1] FIG. 1 is a block diagram illustrating an example of a video encoder configured to implement embodiments presented herein. [Diagram 2] FIG. 2 is a block diagram illustrating an example of a video decoder configured to implement embodiments presented herein. [Diagram 3] FIG. 2 illustrates an example of a Coding Tree Unit (CTU) partitioning of a picture in a video according to some embodiments of the present disclosure. [Figure 4] FIG. 2 illustrates an example of coding unit division of a coding tree unit according to some embodiments of the present disclosure. [Figure 5A] FIG. 2 illustrates an example of interpolation for resampling of a reference picture for a given upsampling ratio, according to some embodiments of the present disclosure. [Figure 5B] FIG. 13 illustrates another example of interpolation for resampling of reference pictures for a given upsampling ratio, according to some embodiments of the present disclosure. [Figure 6] FIG. 2 illustrates an example of a process for determining an interpolation filter for resampling of a reference picture, according to some embodiments of the present disclosure. [Figure 7] FIG. 2 illustrates another example of a process for encoding video, according to some embodiments of the present disclosure. [Figure 8] FIG. 2 illustrates another example of a process for decoding video according to some embodiments of the present disclosure. [Figure 9] FIG. 1 illustrates an example of a computing system that may be used to implement some embodiments of the present disclosure. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0012] The features, embodiments, and advantages of the present disclosure can be better understood by reading the following specific embodiments with reference to the drawings.

[0013] Various embodiments provide a mechanism for using chromaticity interpolation filters for resampling reference pictures in video encoding and decoding. As mentioned above, more video data is being generated, stored, and transmitted. This is beneficial to improve the efficiency of video encoding and decoding techniques. One method for improving the efficiency of video encoding and decoding techniques is inter-prediction, which uses pixels or samples of other frames (called "reference frames" or "reference pictures") that have already been reconstructed to predict video pixels or samples in a current frame waiting to be decoded. To perform inter-prediction, an interpolation filter is typically used, for example during motion compensation, to determine predicted samples at sub-pel positions in a reference frame by using values ​​of samples at integer pel positions. In some cases, the reference frame may have a different resolution than the current frame. In such cases, the reference frame is resampled to the same resolution as the current frame, for example by upsampling a lower resolution reference frame to match the resolution of the current frame. In upsampling, values ​​of samples at integer pel positions are used to interpolate samples at sub-pel positions. Existing interpolation filters for resampling reference pictures use a 4-tap filter to upsample the chrominance components of the reference picture, which may result in inaccurate interpolation results, leading to low coding efficiency.

[0014] Various embodiments described herein may solve these problems by using 6-tap interpolation filters for reference picture resampling, thereby providing better and more accurate interpolation results. In some embodiments, a video encoder or decoder reuses a set of 32 6-tap chroma interpolation filters for motion compensation to perform reference picture upsampling of a video. To select a filter from the set of 32 6-tap chroma interpolation filters, the video codec may determine an upsampling ratio based on a resolution of a current frame, a resolution of a reference frame, and an upsampling position. An interpolation filter may be selected from the set of 32 6-tap chroma interpolation filters by determining a position that is closest to a fractional part of the upsampling position among the 32 positions corresponding to the 32 interpolation filters, and selecting an interpolation filter corresponding to the determined position from the set of 32 interpolation filters.

[0015] As described herein, some embodiments improve video encoding and decoding efficiency by using a 6-tap interpolation filter for reference picture resampling and reusing a set of 32 6-tap chrominance interpolation filters for configured motion compensation. By using a 6-tap interpolation filter instead of the existing 4-tap filter, more accurate interpolation can be achieved in upsampling because more neighboring samples are considered in generating the interpolated sample. Thus, the value of the inter prediction residual is smaller, improving video encoding and decoding efficiency. Also, reusing the motion compensation interpolation filter for reference picture resampling reduces storage utilization of video encoders and decoders. These techniques can become effective codec tools in future video encoding and decoding standards.

[0016] Referring now to the drawings, Figure 1 is a block diagram illustrating an example of a video encoder 100 configured to realize embodiments proposed herein. In the example shown in Figure 1, the video encoder 100 comprises a partitioning module 112, a transform module 114, a quantization module 115, an inverse quantization module 118, an inverse transform module 119, an in-loop filter module 120, an intra prediction module 126, an inter prediction module 124, a motion estimation module 122, a decoded picture buffer 130, and an entropy coding module 116.

[0017] The input of the video encoder 100 is an input video 102 that includes a sequence of pictures (also called frames or images). In a block-based video encoder, for each picture, the video encoder 100 employs a partition module 112 to partition the picture into blocks 104, each block including a number of pixels. The blocks may be macroblocks, coding tree units, coding units, prediction units, and / or prediction blocks. One picture may include blocks of different sizes, and the block partitioning of different pictures of a video may also be different. Different predictions (such as intra prediction or inter prediction or mixed intra and inter prediction) may be used to encode each block.

[0018] Typically, the first picture of a video signal is an intra-coded picture, which is coded using only intra prediction. In the intra prediction mode, blocks of the picture are predicted using only coded data from the same picture. An intra-coded picture can be decoded without information from other pictures. To perform intra prediction, the video encoder 100 shown in FIG. 1 can employ an intra prediction module 126. The intra prediction module 126 is configured to generate an intra prediction block (prediction block 134) using reconstructed samples in a reconstruction block 136 of a neighboring block of the same picture. The intra prediction is performed according to the intra prediction mode selected for the block. Then, the video encoder 100 calculates the difference between the block 104 and the intra prediction block 134. This difference is called a residual block 106.

[0019] To further remove redundancy from the block, the transform module 114 transforms the residual block 106 into a transform domain by applying a transform to the samples in the block. Examples of transforms may include, but are not limited to, a discrete cosine transform (DCT) or a discrete sine transform (DST). The transformed values ​​may be referred to as transform coefficients that represent the residual block in the transform domain. In some examples, the residual block may be directly quantized without being transformed by the transform module 114. This is referred to as a transform skip mode.

[0020] The video encoder 100 may further use a quantization module 115 to quantize the transform coefficients to obtain quantized coefficients. Quantization involves dividing a sample by a quantization step length and then rounding, while inverse quantization involves multiplying the quantized value by the quantization step length. Such a quantization process is called scalar quantization. Quantization is used to reduce the dynamic range of a video sample (transformed or untransformed) so that the video sample can be represented with fewer binary bits.

[0021] Quantization of coefficients / samples within a block can be done independently, and such quantization methods are adopted in some existing video compression standards, such as H.264 or AVC (advance video codec) and H.265 or HEVC (high efficiency video coding). For one N×M block, some scan orders can convert the two-dimensional coefficients of the block into a one-dimensional array for coefficient quantization and encoding and decoding. Quantization of coefficients within a block can utilize scan order information. For example, quantization of a given coefficient within a block may depend on the state of the previously quantized value in the scan order. To further improve codec efficiency, multiple quantizers may be used. Which quantizer is used to quantize the current coefficient depends on the previous information of the current coefficient in the encoding / decoding scan order. Such a quantization method is called dependent quantization.

[0022] The degree of quantization may be adjusted by a quantization step length. For example, in the case of scalar quantization, different quantization step lengths may be applied to achieve finer or coarser quantization. A small quantization step length corresponds to finer quantization, and a large quantization step length corresponds to coarser quantization. The quantization step length may be indicated by a quantization parameter (QP). The quantization parameter is provided in the encoded bitstream of the video, so that a video decoder can access and apply the quantization parameter for decoding.

[0023] The entropy coding module 116 then encodes the quantized samples to further reduce the size of the video signal. The entropy coding module 116 is configured to apply an entropy coding algorithm to the quantized samples. In some examples, the quantized samples are binarized into binary terms (bins), and the coding algorithm further compresses the binary terms into binary bits. Examples of binarization methods include, but are not limited to, TR (truncated Rice), EGk (Exp-Golomb) combined binarization, and k-th order Exp-Golomb binarization. Examples of entropy coding algorithms include, but are not limited to, variable length coding (VLC), context adaptive VLC (CAVLC), arithmetic coding, binarization, context adaptive binary arithmetic coding (CABAC), syntax-based context-adaptive binary arithmetic coding (SBAC), probability interval partitioning entropy (PIPE) coding, or other entropy coding techniques. The entropy coded data is added to the output coded video 132 bitstream.

[0024] As described above, the reconstructed block 136 from the neighboring blocks is used for intra prediction of the block of the picture. Generating the reconstructed block 136 of a block includes calculating a reconstructed residual of this block. The reconstructed residual can be determined by applying an inverse quantization and an inverse transform to the quantized residual of the block. The inverse quantization module 118 is configured to apply an inverse quantization to the quantized samples to obtain dequantized coefficients. The inverse quantization module 118 applies a quantization scheme inverse to that applied to the quantization module 115 by utilizing the same quantization step length as the quantization module 115. The inverse transform module 119 is configured to apply an inverse transform of the transform applied to the transform module 114, such as an inverse DCT or an inverse DST, to the dequantized samples. The output of the inverse transform module 119 is the reconstructed residual of the block in the pixel domain. The reconstructed residual may be added to the prediction block 134 of the block to obtain the reconstructed block 136 in the pixel domain. The inverse transform module 119 is not applied to blocks whose transform is skipped. The dequantized samples are the reconstructed residuals of the block.

[0025] Inter prediction or intra prediction can be used to encode blocks in subsequent pictures after an initial intra prediction picture. In inter prediction, blocks in a picture are predicted based on one or more previously encoded video pictures. To perform inter prediction, video encoder 100 uses inter prediction module 124. Inter prediction module 124 is configured to perform motion compensation on the blocks based on motion estimates provided by motion estimation module 122.

[0026] The motion estimation module 122 performs motion estimation by comparing the current block 104 of the current picture with the decoded reference picture 108. The decoded reference picture 108 is stored in the decoded picture buffer 130. The motion estimation module 122 selects a reference block from the decoded reference picture 108 that best matches the current block. The motion estimation module 122 further identifies an offset between the location of the reference block (e.g., x-coordinate, y-coordinate) and the current block location. This offset is called a motion vector (MV) and is provided to the inter prediction module 124 together with the selected reference block. In some cases, multiple reference blocks are identified for the current block in multiple decoded reference pictures 108. Thus, multiple motion vectors are generated and provided to the inter prediction module 124 together with the corresponding reference blocks.

[0027] The inter prediction module 124 performs motion compensation using the motion vector(s) and other inter prediction parameters to generate a prediction of the current block (i.e., inter prediction block 134). For example, based on the motion vector(s), the inter prediction module 124 may identify, in a corresponding reference picture, a prediction block(s) pointed to by the motion vector(s). If there are one or more prediction blocks, these prediction blocks are combined with some weights to generate the prediction block 134 of the current block.

[0028] For an inter-predicted block, video encoder 100 may subtract inter-predicted block 134 from block 104 to generate a residual block 106. Residual block 106 may be transformed, quantized, and entropy coded in a manner similar to the residual of an intra-predicted block described above. Similarly, a reconstructed block 136 for an inter-predicted block may be obtained by inverse quantizing and inverse transforming the residual before combining it with the corresponding predicted block 134.

[0029] To obtain the decoded picture 108 for motion estimation, the reconstruction block 136 is processed by the in-loop filter module 120. The in-loop filter module 120 is configured to smooth pixel transitions, thereby improving video quality. The in-loop filter module 120 may be configured to implement one or more loop filters, such as an unlocked filter, a sample-adaptive offset (SAO) filter, an adaptive loop filter (ALF), etc.

[0030] 2 is a block diagram illustrating an example of a video decoder 200 configured to realize embodiments proposed herein. The video decoder 200 processes encoded video 202 in a bitstream to generate decoded pictures 208. In the example illustrated in FIG. 2, the video decoder 200 includes an entropy decoding module 216, an inverse quantization module 218, an inverse transform module 219, an in-loop filter module 220, an intra prediction module 226, an inter prediction module 224, and a decoded picture buffer 230.

[0031] The entropy decoding module 216 is configured to perform entropy decoding on the encoded video 202. The entropy decoding module 216 decodes the coding parameters, including quantization coefficients, intra-prediction parameters and inter-prediction parameters, and other information. In some examples, the entropy decoding module 216 decodes the bitstream of the encoded video 202 into a binary representation and further converts the binary representation into quantization levels of the coefficients. The entropy decoded levels are then inverse quantized by the inverse quantization module 218 and then inverse transformed to the pixel domain by the inverse transform module 219. The functions of the inverse quantization module 218 and the inverse transform module 219 are similar to the inverse quantization module 118 and the inverse transform module 119, respectively, described above with respect to FIG. 1. The inverse transformed residual blocks may be added to the corresponding prediction blocks 234 to generate the reconstruction blocks 236. The inverse transform module 219 is not applied to blocks whose transformations have been skipped. The dequantized samples generated by the inverse quantization module 118 are used to generate a reconstruction block 236 .

[0032] Based on the prediction mode of the block, a prediction block 234 of a particular block is generated. If the coding parameters of a block indicate that the block is intra predicted, a reconstructed block 236 of a reference block in the same picture may be input to the intra prediction module 226 to generate the prediction block 234 of the block. If the coding parameters of a block indicate that the block is inter predicted, the prediction block 234 is generated by the inter prediction module 224. The intra prediction module 226 and the inter prediction module 224 function similarly to the intra prediction module 126 and the inter prediction module 124 of FIG. 1, respectively.

[0033] As described above with respect to Figure 1, inter prediction involves one or more reference pictures. The video decoder 200 generates a decoded picture 208 of the reference picture by applying an in-loop filter module 220 to the reconstructed blocks of the reference picture. The decoded picture 208 is stored in a decoded picture buffer 230 for use and output by an inter prediction module 224.

[0034] Referring to FIG. 3, FIG. 3 is a diagram illustrating an example of coding tree unit division of a picture in a video according to some embodiments of the present disclosure. As described above with respect to FIG. 1 and FIG. 2, to encode a picture of a video, the picture is divided into blocks, such as coding tree units (CTUs) 302 of versatile video coding (VVC) shown in FIG. 3. For example, the CTUs 302 may be blocks of 128x128 pixels. The CTUs are processed according to an order (for example, the order shown in FIG. 3). In some examples, as shown in FIG. 4, each CTU 302 in a picture may be divided into one or more coding units (CUs) 402, and the CUs 402 may be further divided into prediction units or transform units (TUs) for prediction and transformation. Depending on the codec scheme, the CTUs 302 may be divided into CUs 402 in different manners. For example, in VVC, the CUs 402 may be rectangular or square and may be encoded without further division into prediction units or transform units. Each CU 402 may be the same size as the root CTU 302 or may be a smaller subdivision of the root CTU 302, such as a 4x4 block. As shown in Figure 4, the division of CTUs 302 into CUs 402 in VVC may be a quad-tree division, a binary tree division, or a ternary tree division. In Figure 4, the solid lines indicate a quad-tree division, and the dashed lines indicate a binary tree or a ternary tree division.

[0035] About motion compensation Tools employed in mixed video coding systems (such as VVC and HEVC) predict video pixels or samples of a current frame waiting to be decoded using pixels or samples from other frames that have already been reconstructed. Codec tools following this architecture are usually called "inter prediction" tools, and the reconstructed frames may be called "reference frames". In still video scenes, inter prediction of pixels or samples in a current frame can be achieved by decoding and using reference pixels or samples from a reference frame. However, in video scenes involving motion, an inter prediction tool with motion compensation must be used. For example, a current block of samples in a current frame can be predicted based on a "prediction block" from samples of a reference frame, which is determined by first decoding a "motion vector" of the position of the prediction block in a reference frame signaled relative to the position of the current block in the current frame. More complex inter prediction tools are used to exploit video scenes with complex motion (such as occlusion and affine motion).

[0036] About Interpolation When the position of a prediction block relative to the position of a current block is represented by an integer number of samples, the samples of the prediction block can be directly obtained based on the corresponding sample positions in a reference frame. However, in general, the actual motion in a scene is likely to correspond to a non-integer number of samples. In this case, the prediction block may be determined using fractional-pel motion compensation. To determine the samples of the prediction block, the values ​​of the samples at the desired fractional-pel positions are obtained by interpolating with the available samples at the integer-pel positions. The interpolation method is selected by balancing design requirements such as complexity, accuracy of the motion vector, interpolation error, and robustness against noise. Despite such trade-offs, it has been found that predicting based on an interpolated prediction block using fractional-pel motion compensation is advantageous compared to a prediction block with integer-pel motion compensation.

[0037] For ease of computation, most interpolation methods can be realized by convolving the available reference frame samples with a linear, shift-invariant set of coefficients. Such an operation is also known as filtering. Video coding standards usually realize the interpolation of 2-D prediction blocks by applying 1-D filtering separably in the vertical and horizontal directions. To be able to transmit the signaling of motion vector information, motion vectors are usually restricted to multiples of fractional pixel precision. For example, motion vectors used for luma prediction may be restricted to multiples of 1 / 16 pixel precision.

[0038] In the above interpolation example, the determination of the samples of the prediction block is governed by a finite set of interpolation filters. For example, for 1 / 16 pixel accuracy, the total number of filters required for luma interpolation is 16. Each filter in the filter set can be represented by their phase, and for a filter set designed with 1 / P pixel accuracy, the phases can be numbered from 0 to P-1. Each filter in the filter set H has a phase of h 0 , h 1 , …h P-1 For implementation regularity, each filter usually has the same length N. The length of the filter may also be called the support of the filter. The relationship between each filter coefficient (also called tap) and a particular filter with phase number k is given by Equation 1.

[0039] [Formula 1] h k ={h k [0],h k [1],...h k [N-1]} The interpolation process of the predicted block can be simplified to the design of a fixed set of P interpolation filters, each with N coefficients. Also, many of these filters are redundant. P-1 Interpolation with a filter is a virtual h -1This is equivalent to performing the interpolation with a filter (i.e., a filter with a phase of -1), but taking into account that the region of support is shifted forward by one pixel, and -1 The filter is h 1 This can be realized by a mirror image of the filter, and therefore the filter design is sought to be further simplified to designing a set of filters with phases from 0 to P / 2. The remaining filters can be defined based on the initial P / 2 phase.

[0040]

number

[0041] [Table 1]

[0042] For the chrominance components, there are 32 filters as shown in Table 2, which realize the interpolation with an increment of 1 / 32 sample shift. In Table 2, each row represents the coefficient of a 6-tap filter at the corresponding position. For example, the k-th row (k=0,...,31) of Table 2 represents the coefficient of a 6-tap filter at position k / 32.

[0043] [Table 2(1)] [Table 2(2)]

[0044] About reference picture resampling In real-time communication use cases, rate control mechanisms are implemented to ensure that communication can continue even with unstable network connections. One mechanism to achieve this is dynamic resolution adjustment. That is, if network capacity is reduced, real-time communication systems can switch to transmitting lower resolution video in order to achieve the goal of saving bitrate. In older video standards such as AVC and HEVC, this feature can only be achieved by initiating the resolution change with the transmission of so-called "IDR" or "IRAP" frames, which are coded without any dependency on previously decoded frames. Such independent frames cannot take advantage of efficient inter-prediction tools, including motion compensation, and therefore require significantly higher bitrates to transmit.

[0045] VVC overcomes this limitation by employing Reference Picture Resampling (RPR) tools. In RPR, reference pictures can be resampled to match the resolution of the current frame, which means that inter-prediction tools can use reference pictures with different resolutions. This allows for seamless resolution switching without the need to transmit IDR or IRAP frames.

[0046] To implement RPR, the resampling process needs to be normatively defined. If the reference picture has a lower resolution than the current picture, upsampling is performed on the reference picture. If the reference picture has a higher resolution than the current picture, downsampling is performed on the reference picture. Existing RPR implementations use 4-tap filters to upsample the chrominance components of the reference picture. These 4-tap filters may not provide accurate upsampling results.

[0047] To achieve more accurate reference picture upsampling, the chrominance interpolation filter can be reused for reference picture resampling. Let the sample value of the chrominance component of the reference picture be x[i,j], where i,j are integer values. In the case of translation motion compensation, we need to interpolate the chrominance components at non-integer positions. However, the sample interval is still unit distance. For example, we can sample the chrominance component x at the following positions of the block:

[0048]

number

[0049] where A, B are the integer components of the first sample's position, a, b are the non-integer components of the first sample's position, and X, Y are the size of the block.

[0050] If the reference picture has a lower resolution than the current picture, the requirement to upsample the chrominance components can be redefined as sampling the signal x at a denser sample interval (i.e., the spacing between samples is less than unit distance), some of which must necessarily be located at non-integer sample positions. Since chrominance interpolation filters have been defined for motion compensation, reusing these filters is advantageous in reducing the storage cost of video encoding and decoding implementations. As long as we sample x at non-integer positions with 1 / 32 sample accuracy, there are relevant chrominance interpolation filters suitable for performing RPR upsampling.

[0051] In one embodiment, the entire reference picture is upsampled by a known ratio r and the resulting upsampled reference picture is stored in a buffer. The value of r is calculated by the ratio of the resolution of the current picture to the resolution of the reference picture. The upsampled reference picture samples are then used as input to an inter prediction tool to predict the current picture.

[0052] The exact upsampling position to be interpolated may depend on the sampling convention. For example, when r=2, in one example, for a reference picture whose original sample is located at i∈[0,W−1], the upsampling position along the i dimension (horizontal dimension) is:

[0053] i=0,0.5,1,1.5,2,2.5…,W-1,W-0.5 An example of this upsampling position is shown in FIG. 5A. In FIG. 5A, the circles represent the original samples and the crosses represent the upsampling positions. The advantage of this arrangement is that half of the samples are located at the positions of the original samples (e.g., i=0, 1, ..., W-1). In this way, only half of the remaining samples (e.g., i=0.5, 1.5, ..., W-0.5) need to be interpolated. To interpolate the half-pixel interpolated samples, a 6-tap chromaticity filter pointing to the 16 / 32 positions shown in Table 2 can be used, i.e., a filter with the following coefficients:

[0054] {10,-40,158,158,-40,10} In another example where r=2, the upsampling positions along the i dimension may be located at the following positions:

[0055] i=-0.25,0.25,0.75,1.25,…W-1.25,W-0.75 An example of this upsampling location is shown in Figure 5B. As in Figure 5A, in Figure 5B, the circles represent the original samples and the crosses represent the upsampling locations. The advantage of this arrangement is that the upsampling locations are symmetrically arranged with respect to the original reference picture samples. To interpolate the 1 / 4 pixel interpolated samples, we use a 6-tap chrominance filter pointing to the 8 / 32 location and a 6-tap chrominance filter at the 24 / 32 location, i.e., the following filters:

[0056] {8,-35,227,73,-22,5} {5,-22,73,227,-35,8} In particular, a chromaticity filter oriented at the 8 / 32 position may be used to generate interpolated samples at positions 0.25, 1.25, ..., -0.75, and a chromaticity filter oriented at the 24 / 32 position may be used to generate interpolated samples at positions -0.25, 0.75, ..., -1.25.

[0057] Other interpolation filters can be selected based on the value of r and the sampling convention. For example, if r=4 and the upsampling positions are located at 0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75..., then a chroma filter at a position of 8 / 32, a chroma filter at a position of 16 / 32, and a chroma filter at a position of 24 / 32 can be used to generate upsampling values. For example, a chroma filter at a position of 8 / 32 can be used to generate upsampling values ​​at 0.25, 1.25,..., a chroma filter at a position of 16 / 32 can be used to generate upsampling values ​​at 0.5, 1.5,..., and a chroma filter at a position of 24 / 32 can be used to generate upsampling values ​​at 0.75, 1.75,...

[0058] In another example where r=1.5, the upsampling positions may be located at 0, 2 / 3, 4 / 3, 2, 8 / 3, 10 / 3, 4, .... In this example, the interpolation filters to be used for the different upsampling positions can be determined by identifying the chromaticity filter at the position closest to the fractional part of the corresponding upsampling position. For example, for upsampling positions at 2 / 3, 8 / 3, ..., the chromaticity filter at the 21 / 32 position (i.e., a filter with coefficients {8, -31, 106, 204, -41, 10}) can be used since the 21 / 32 position is closer to 2 / 3 than the other chromaticity filter positions. Similarly, for upsampling positions at 4 / 3, 10 / 3, ..., the chromaticity filter at the 11 / 32 position (i.e., a filter with coefficients {10, -41, 204, 106, -31, 8}) can be used since the 11 / 32 position is closer to 1 / 3 than the other chromaticity filter positions.

[0059] In another embodiment, if a part of a reference picture is needed for the application of inter prediction tools, real-time resampling can be performed only on this part of the reference picture. The advantage of this embodiment is that it reduces the resampling complexity and buffer storage.

[0060] 6 illustrates a process 600 for determining an interpolation filter for resampling a reference picture according to some embodiments of the present disclosure. One or more computing devices (e.g., a computing device implementing the video encoder 100, a computing device implementing the video decoder 100, or other computing devices) may implement the operations illustrated in FIG. 6 by executing appropriate program code.

[0061] In step 602, the process 600 includes accessing a set of chrominance interpolation filters. In some examples, the set of chrominance interpolation filters is used for motion compensation of the current frame. For example, the set of chrominance interpolation filters may be the filters shown in Table 2, which realize interpolation with an increment of 1 / 32 sample shift. In step 604, the process 600 includes determining an upsampling ratio r and an upsampling position of the current frame. As described above, the upsampling ratio r may be determined based on the resolutions of the current frame and the reference frame. For example, if the resolution of the current frame is 2W×2H and the resolution of the reference frame is W×H, then the upsampling ratio r=2. The upsampling position may be determined based on the sampling convention and the upsampling ratio. For example, the upsampling position may be determined to include an original reference picture sample to reduce the number of samples to be interpolated. Alternatively or additionally, the upsampling position may be determined to be symmetrically located with respect to the original reference picture sample.

[0062] In step 606, the process 600 includes identifying one or more interpolation filters for resampling the reference picture from the collection of chrominance interpolation filters. The identification can be performed based on the upsampling ratio and upsampling position determined in step 604. For example, the interpolation filter can be determined by identifying the chrominance filter that is located closest to the corresponding upsampling position. For example, for upsampling positions at s / t, 1s / t, 2s / t... positions, where s / t is the fractional part of the upsampling position, the chrominance filter having the closest associated position to s / t can be identified to be used to generate the upsampling values ​​at these positions. As shown in the above example, according to the upsampling position, one or more interpolation filters may be required to generate the upsampling values ​​at the fractional pixel positions. For upsampling positions at integer positions (e.g., 0, 1, 2,...), no interpolation filter is required and the original sample values ​​of the reference picture in the upsampling reference frame are used. In step 608, the identified interpolation filter(s) can be output and used to resampling the reference picture.

[0063] 7 illustrates an example process 700 for encoding video using chromaticity interpolation filters for reference picture resampling, according to some embodiments of the present disclosure. One or more computing devices (e.g., computing devices implementing video encoder 100) implement the operations illustrated in FIG. 7 by executing appropriate program code, such as, for example, program code implementing inter prediction module 124 and other modules. For illustrative purposes, process 700 is described with reference to several illustrated examples. However, other implementations are possible.

[0064] At step 702, the process 700 includes accessing a set of frames or pictures of a video signal. As described in detail above with respect to FIG. 1, the set of frames of the video is divided into blocks. The blocks may be, for example, the encoding unit 402 described in FIG. 4, or any type of block that is processed by a video encoder when performing inter prediction. At step 704, the process 700 includes performing inter prediction on the set of frames using a set of interpolation filters to generate prediction residuals for multiple frames. In some examples, the set of interpolation filters includes chrominance interpolation filters as shown in Table 2, which are used for motion compensation of chrominance samples. As described in detail above, this set of chrominance interpolation filters may be reused for resampling of the reference frame. Selecting an interpolation filter(s) for resampling of the reference picture from the set of chrominance interpolation filters may be performed according to the process 600 described above with respect to FIG. 6. The video encoder may use the selected interpolation filter(s) to upsample the chrominance components of the reference frame to calculate an inter prediction value for the block, and calculate a residual by subtracting the inter prediction from the samples of the block.

[0065] At step 706, the process 700 includes encoding the prediction residuals of the set of frames into a bitstream representing the video. As described in detail above with respect to Figure 1, the encoding may include operations such as transforming, quantizing, and entropy coding the prediction residuals. The encoded binary bits of the prediction residuals may be included in the bitstream of the video along with other data.

[0066] 8 illustrates a process 800 for decoding video according to some embodiments of the present disclosure. One or more computing devices may implement the operations illustrated in FIG. 8 by executing appropriate program code. For example, a computing device implementing the video decoder 200 may implement the operations illustrated in FIG. 8 by executing program code of the inter-prediction module 224. For illustrative purposes, the process 800 is described with reference to several illustrated examples. However, other implementations are possible.

[0067] At step 802, the process 800 includes decoding one or more frames from a video bitstream (such as the encoded video 202). As described in detail above with respect to FIG. 2, the decoding includes entropy decoding, dequantization, inverse transform, and reconstructing blocks of the frames based on inter- or intra-predicted blocks. At step 804, the process 800 includes performing inter prediction to decode a current frame of the video based on the one or more decoded frames. For example, as described in detail above, the one or more decoded frames may be used as reference frames, and inter prediction of the current frame may be performed based on a set of motion vectors and interpolation filters decoded from the video bitstream.

[0068] In some examples, the set of interpolation filters used for motion compensation includes chrominance interpolation filters as shown in Table 2. As described in detail above, this set of chrominance interpolation filters may be reused for resampling the reference picture to upsample to a reference frame with a lower resolution than the current frame. The interpolation filter(s) for resampling the reference picture may be selected from the set of chrominance interpolation filters according to the process 600 described above for FIG. 6. The video decoder may use the selected interpolation filter(s) to upsample to a reference frame with a lower resolution than the current frame before performing motion compensation. In step 806, the process 800 includes decoding the remaining frames in the video into images. In some examples, the decoding is performed according to the process described above for FIG. 2. The decoded video may be output for display.

[0069] Example of a Computing System Any suitable computing system may be used to perform the operations described herein. For example, FIG. 9 illustrates an example of a computing device 900 capable of implementing the video encoder 100 of FIG. 1 or the video decoder 200 of FIG. 2. In some embodiments, the computing device 900 may include a processor 912 communicatively coupled to a memory 914 to execute computer-executable program code and / or access information stored in the memory 914. The processor 912 may include a microprocessor, an application-specific integrated circuit ("ASIC"), a state machine, or other processing device. The processor 912 may include any of a number of processing devices or may include only one processing device. Such a processor may include or be in communication with a computer-readable medium that stores instructions that, when executed by the processor 912, cause the processor to perform the operations described herein.

[0070] The memory 914 may include any suitable non-transitory computer readable medium. The computer readable medium may include any electronic, optical, magnetic, or other storage device capable of providing computer readable instructions or other program code to a processor. Non-limiting examples of computer readable media include disks, memory chips, ROM, RAM, ASICs, configured processors, optical memory, magnetic tape or other magnetic storage devices, or other media from which a computer processor can read instructions. The instructions may include processor-specific instructions generated by a compiler and / or interpreter from code written in any suitable computer programming language. Such computer programming languages ​​include C, C++, C#, Visual Basic, Java, Python, Perl, JavaScript, ActionScript, and the like.

[0071] The computing device 900 may further include a bus 916. The bus 916 may be communicatively coupled to one or more components of the computing device 900. The computing device 900 may further include a number of external or internal devices, such as input devices or output devices. For example, the computing device 900 is shown as having an input / output ("I / O") interface 918, which may receive input from one or more input devices 920 or provide output to one or more output devices 922. The one or more input devices 920 and the one or more output devices 922 may be communicatively coupled to the I / O interface 918. The communicative coupling may be achieved in any suitable manner (e.g., a connection via a printed circuit board, a connection via a cable, communication via wireless transmission, etc.). Non-limiting examples of input devices 920 include a touchscreen (e.g., one or more cameras for imaging the touch area, or a pressure sensor for detecting pressure changes due to a touch), a mouse, a keyboard, or any other device that can be used to generate input events in response to a user's physical manipulation of the computing device. Non-limiting examples of output devices 922 include an LCD screen, an external display, speakers, or any other device that can be used to display or otherwise present output generated by the computing device.

[0072] The computing device 900 may execute the following program code, which configures the processor 912 to perform one or more operations described above with respect to Figures 1-8. The program code may include the video encoder 100 or the video decoder 200. The program code may reside in the memory 914 or any suitable computer readable medium and may be executed by the processor 912 or any other suitable processor.

[0073] The computing device 900 may further include at least one network interface device 924. The network interface devices 924 may include any device or group of devices suitable for establishing a wired or wireless data connection to one or more data networks 928. Non-limiting examples of the network interface devices 924 include Ethernet network adapters, modems, and / or similar devices. The computing device 900 may transmit messages in the form of electronic or optical signals through the network interface devices 924.

[0074] General Considerations Numerous details have been described herein to provide a thorough understanding of the claimed subject matter. However, those skilled in the art will understand that the claimed subject matter may be practiced without these details. In other instances, methods, apparatus, or systems known to those skilled in the art have not been described in detail so as not to obscure the claimed subject matter.

[0075] Unless otherwise indicated, it is to be understood that discussions herein using "processing," "computing," "calculating," "determining," "identifying," or similar terms refer to operations or processes of a computing device (e.g., one or more computers or similar electronic computing devices) that manipulate or transform data represented as physical electronic or magnetic quantities in the memory, registers, or information storage, transmission, or display devices of the computing platform.

[0076] The systems discussed herein are not limited to any particular hardware architecture or configuration. A computing device may include any suitable arrangement of components conditioned to provide a result with respect to one or more inputs. Suitable computing devices include microprocessor-based general-purpose computer systems that can access stored software that programs or configures the computing system from a general-purpose computing device to a special-purpose computing device that implements one or more embodiments of the present subject matter. In the software used to program or configure a computing device, any suitable programming language, scripting language, or other type of language or combination of languages ​​may be used to implement the teachings contained herein.

[0077] Method embodiments of the present disclosure may be performed in operation of such a computing device. The order of steps presented in the above examples may be changed, for example, steps may be reordered, combined, and / or decomposed into sub-steps. Some steps or processes may be performed in parallel.

[0078] As used herein, "adapted to" or "configured to" is open and inclusive language and does not exclude equipment adapted or configured to perform additional tasks or steps. Furthermore, use of the term "based on" is open and inclusive because a process, step, calculation, or other operation "based on" one or more stated conditions or values ​​may in fact be based on other conditions or values ​​other than those stated. Titles, lists, and numbers contained herein are for convenience of description only and are not meant to be limiting.

[0079] While the present subject matter has been described in detail with respect to specific embodiments thereof, it is to be understood that those skilled in the art, upon learning the above, may readily make modifications, variations, and equivalents to these embodiments. It is therefore to be understood that the present disclosure is presented for purposes of illustration and not limitation, and is not intended to exclude the inclusion of modifications, variations, and / or additions to the present subject matter as would become apparent to those skilled in the art.

Claims

1. A method for decoding video from a video bitstream, The steps of decoding one or more frames of the video from the video bitstream, The steps include decoding the current frame of the video by performing interpretation using one or more decoded frames as reference frames, The steps include displaying the decoded one or more frames and the decoded current frame, The step of performing the aforementioned inter prediction is: [Math 1 (1)] [Math 1 (2)] A method comprising the step of performing resampling of a reference picture by upsampling the reference frame of the current frame using at least one filter selected from a set of 32 interpolation filters having the coefficients.

2. The step of performing the interpretation further includes the step of performing motion compensation for the current frame using the set of 32 interpolation filters. The method according to claim 1.

3. The set of 32 interpolation filters is an interpolation filter for the chromaticity component of the video. The method according to claim 2.

4. The step of selecting the filter from the set of 32 interpolation filters is: The steps include determining the upsampling ratio and upsampling position of the reference frame, The step of identifying a filter from the set of 32 interpolation filters based on the upsampling ratio and the upsampling position, The method according to claim 1.

5. The step of identifying the filter from the set of 32 interpolation filters based on the upsampling ratio and the upsampling position is: The steps include determining the position closest to the fractional part of the upsampling position among the 32 positions corresponding to the 32 interpolation filters, The process includes the step of selecting an interpolation filter corresponding to a determined position from the set of 32 interpolation filters. The method according to claim 4.

6. The upsampling ratio is 2, and the selected filter is one of the interpolation filters with coefficients {10, -40, 158, 158, -40, 10}, {8, -35, 227, 73, -22, 5}, or {5, -22, 73, 227, -35, 8}. The method according to claim 4.

7. The upsampled reference frame is stored in a buffer. The method according to claim 1.

8. A method for encoding video, The steps include accessing multiple frames of the aforementioned video, The steps include performing interpretation on the plurality of frames to generate prediction residuals for the plurality of frames, The step includes encoding the predicted residuals of the plurality of frames into a bitstream representing the video, The step of performing the aforementioned inter prediction is: [Math 2 (1)] [Math 2 (2)] A method comprising the step of performing resampling of a reference picture by upsampling the reference frame of the current frame in the plurality of frames using at least one filter selected from a set of 32 interpolation filters having coefficients such as .

9. The step of performing the interpretation further includes the step of performing motion compensation for the current frame using the set of 32 interpolation filters. The method according to claim 8.

10. The set of 32 interpolation filters is an interpolation filter for the chromaticity component of the video. The method according to claim 9.

11. The step of selecting the filter from the set of 32 interpolation filters is: The steps include determining the upsampling ratio and upsampling position of the reference frame, The step of identifying a filter from the set of 32 interpolation filters based on the upsampling ratio and the upsampling position, The method according to claim 8.

12. The step of identifying the filter from the set of 32 interpolation filters based on the upsampling ratio and the upsampling position is: The steps include determining the position closest to the fractional part of the upsampling position among the 32 positions corresponding to the 32 interpolation filters, The process includes the step of selecting an interpolation filter corresponding to a determined position from the set of 32 interpolation filters. The method according to claim 11.

13. The upsampling ratio is 2, and the selected filter is one of the interpolation filters with coefficients {10, -40, 158, 158, -40, 10}, {8, -35, 227, 73, -22, 5}, or {5, -22, 73, 227, -35, 8}. The method according to claim 11.

14. The upsampled reference frame is stored in a buffer. The method according to claim 8.

15. A non-temporary computer-readable medium in which program code is stored, wherein the program code is stored in one or more processing devices. Steps to access multiple frames of the video, The steps include performing interpretation on the plurality of frames to generate prediction residuals for the plurality of frames, The operation includes the step of encoding the predicted residuals of the plurality of frames into a bitstream representing the video, The step of performing the aforementioned inter prediction is: [Math 3 (1)] [Math 3 (2)] A non-temporary computer-readable medium comprising the step of performing resampling of a reference picture by upsampling the reference frame of the current frame in the plurality of frames using at least one filter selected from a set of 32 interpolation filters having the coefficients.