Generalized bi-prediction for video coding with reduced coding complexity
阅读说明:本技术 用于具有降低的译码复杂性的视频译码的广义双预测 (Generalized bi-prediction for video coding with reduced coding complexity ) 是由 张焱 修晓宇 贺玉文 叶艳 于 2019-01-23 设计创作,主要内容包括:示例性实施例包括用于对包括多个图片的视频进行译码的系统和方法,所述多个图片包括当前图片、第一参考图片和第二参考图片,其中每个图片包括多个块。在一种方法中,对于所述当前图片中的至少当前块,至少部分基于所述当前图片的时间层和/或量化参数,确定可用双预测权重的数目。从可用双预测权重中识别一对权重。使用所识别的权重,所述当前块接着被预测为所述第一参考图片中的第一参考块和所述第二参考图片中的第二参考块的加权和。还描述用于有效搜索和选择一对双预测权重以用于块的预测的编码技术。(Example embodiments include systems and methods for coding video comprising a plurality of pictures including a current picture, a first reference picture, and a second reference picture, wherein each picture comprises a plurality of blocks. In one method, for at least a current block in the current picture, a number of available bi-prediction weights is determined based at least in part on a temporal layer and/or a quantization parameter of the current picture. A pair of weights is identified from the available bi-predictive weights. Using the identified weights, the current block is then predicted as a weighted sum of a first reference block in the first reference picture and a second reference block in the second reference picture. Encoding techniques for efficiently searching and selecting a pair of bi-prediction weights for prediction of a block are also described.)
1. A method of coding video comprising a plurality of pictures, the plurality of pictures comprising a current picture, a first reference picture, and a second reference picture, each picture comprising a plurality of blocks, the method comprising: for at least a current block in the current picture:
determining a number of available bi-prediction weights based at least in part on a quality metric of the current picture;
identifying a first weight and a second weight from the determined number of available bi-predictive weights; and
predicting the current block as a weighted sum of a first reference block in the first reference picture and a second reference block in the second reference picture, wherein the first reference block is weighted by the first weight and the second reference block is weighted by the second weight.
2. The method of claim 1, wherein the quality metric is determined by a temporal layer of the current picture, the number of available bi-prediction weights being based on the temporal layer of the current picture.
3. The method of claim 2, wherein the number of available bi-predictive weights is decreased for increasing temporal layers.
4. The method of any of claims 2-3, wherein seven bi-prediction weights are available for at least one lowest temporal layer.
5. The method of any of claims 2-4, wherein three bi-prediction weights are available for at least one temporal layer above the lowest temporal layer.
6. The method according to any one of claims 2-5, wherein one bi-prediction weight of 0.5 is available for at least one highest temporal layer.
7. The method of claim 1, wherein the quality metric is determined by a quantization parameter of the current picture, the number of available bi-prediction weights being based on the quantization parameter of the current picture.
8. The method of claim 7, wherein the number of available bi-prediction weights is decreased for increasing quantization parameters.
9. The method according to any one of claims 7-8, wherein seven bi-prediction weights are available for at least one lowest value of the quantization parameter.
10. The method according to any one of claims 7-9, wherein three bi-predictive weights are available for at least one value of the quantization parameter that is higher than the lowest value of the quantization parameter.
11. The method according to any one of claims 7-10, wherein one bi-predictive weight of 0.5 is available for at least one highest value of the quantization parameter.
12. The method of any of claims 1-11, wherein the first weight is greater than the second weight, and wherein the method further comprises:
comparing reference picture qualities of the first reference picture and the second reference picture; and
in response to determining that the first reference picture has higher quality than the second reference picture, assigning the first weight to the first reference block and the second weight to the second reference block.
13. The method of claim 12, wherein comparing reference picture qualities comprises: selecting one of the first and second reference pictures that is temporally closer to the current picture as the higher quality reference picture.
14. The method of claim 12, wherein comparing reference picture qualities comprises: selecting as the higher quality reference picture a reference picture of the first reference picture and the second reference picture having a lower associated quantization parameter.
15. A system comprising a processor and a non-transitory computer-readable medium storing instructions operable to perform a method of coding a video comprising a plurality of pictures including a current picture, a first reference picture, and a second reference picture, each picture comprising a plurality of blocks, the method comprising: for at least a current block in the current picture:
determining a number of available bi-prediction weights based at least in part on a quality metric of the current picture;
identifying a first weight and a second weight from the determined number of available bi-predictive weights; and
predicting the current block as a weighted sum of a first reference block in the first reference picture and a second reference block in the second reference picture, wherein the first reference block is weighted by the first weight and the second reference block is weighted by the second weight.
Background
Video coding systems are widely used to compress digital video signals to reduce the storage requirements and/or transmission bandwidth of such signals. Among various types of video coding systems, such as block-based systems, wavelet-based systems, and object-based systems, block-based hybrid video coding systems are most widely used and deployed today. Examples of block-based video coding systems include a number of international video coding standards such as MPEG-1/2/4 part 2, h.264/MPEG-4 part 10AVC, VC-1, and the latest video coding standard known as High Efficiency Video Coding (HEVC), which is developed by ITU-T/SG16/Q.6/VCEG and JCT-VC (video coding joint collaboration team) of ISO/IEC/MPEG.
Disclosure of Invention
Exemplary embodiments include methods for use in video encoding and decoding (collectively, "transcoding"). A method of coding video comprising a plurality of pictures, the plurality of pictures comprising a current picture, a first reference picture, and a second reference picture, wherein each picture comprises a plurality of blocks. In one method, for at least a current block in the current picture, a number of available bi-prediction weights is determined based at least in part on a quality metric, such as a temporal layer and/or a quantization parameter, of the current picture. A pair of weights (a first weight and a second weight) is identified from the determined number of available bi-predictive weights. The current block is then predicted as a weighted sum of a first reference block in the first reference picture and a second reference block in the second reference picture, wherein the first reference block is weighted by the first weight and the second reference block is weighted by the second weight. The same prediction may be performed on both the encoder and decoder sides, and the encoder may signal the prediction residual in the bitstream.
In some embodiments, the number of available bi-predictive weights is signaled in the bitstream.
In some embodiments, information identifying a pair of bi-prediction weights is signaled in the bitstream, and if one of the weights in the pair is greater than the other, the greater weight is used with the higher quality reference picture. In such embodiments, it is not necessary to signal in the bitstream which weight of the pair is associated with which reference picture, as this information can be inferred from the comparison quality of the reference pictures. In some embodiments, the higher quality reference picture may be a reference picture that is temporally closer to the current picture. In some embodiments, the higher quality reference picture may be a reference picture with a lower quantization parameter.
In some embodiments, the number of available bi-prediction weights depends at least in part on similarity between reference blocks, wherein the higher the level of similarity between reference blocks, the lower the number of available bi-prediction weights.
In additional exemplary embodiments, techniques are described for selecting appropriate bi-predictive weights for encoding a video block without having to search all available bi-predictive weights.
Further embodiments provide an encoder and decoder comprising a processor and a non-transitory computer-readable medium storing instructions operable to perform the encoding and decoding operations described herein. Additional embodiments include a non-transitory computer-readable storage medium storing a bitstream generated using the methods described herein.
Drawings
Fig. 1 is a functional block diagram of a block-based video encoder.
Fig. 2 is a functional block diagram of a video decoder.
FIG. 3 is a template T for local illumination compensationcAnd its prediction block T0And T1Schematic illustration of an example of (a).
Fig. 4 is a functional block diagram of a video encoder according to some embodiments.
Fig. 5 is a functional block diagram of an exemplary generalized bi-prediction module for use in an exemplary video encoder, such as the encoder of fig. 4.
Fig. 6 is a functional block diagram of a video decoder according to some embodiments.
Fig. 7 is a functional block diagram of a generalized bi-prediction module used in an exemplary video decoder, such as the decoder of fig. 6.
FIG. 8 is a schematic diagram of multiple temporal layers and a hierarchical prediction structure.
Fig. 9 is a flow diagram of a generalized bi-prediction (GBi) adaptation and acceleration method employed in some embodiments.
Fig. 10 is a schematic diagram of an example architecture of a two-layer scalable (scalable) video encoder.
Fig. 11 is a schematic diagram of an example architecture of a two-layer scalable video decoder.
Fig. 12 is a diagram showing an example of a structure of a decoded bitstream.
Fig. 13 is a schematic diagram illustrating an example communication system.
Figure 14 is a diagram illustrating an exemplary wireless transmit/receive unit (WTRU).
Detailed Description
Overview of block-based video coding.
Fig. 1 is a functional block diagram of a block-based hybrid video coding system. The
Fig. 2 is a functional block diagram of a block-based video decoder. The
In modern video codecs, bi-directional Motion Compensated Prediction (MCP) is known for its high efficiency by removing temporal redundancy by exploiting temporal correlation between pictures, and it has been widely used in most prior art video codecs. However, the bi-predictive signal is simply formed by combining two mono-predictive signals using a weight value equal to 0.5. This is not necessarily the best way to combine two mono-prediction signals, especially under conditions where the illumination changes rapidly from one reference picture to another. Thus, several prediction techniques aim to compensate for luminance variations over time by applying some global or local weight and offset values to each sample value in a reference picture.
Weighted bi-prediction.
Weighted bi-prediction is a coding tool that is mainly used to compensate illumination variations over time, such as fading transitions, when performing motion compensation. For each slice, two sets of multiplicative weight values and addition offset values are explicitly indicated and applied to the motion compensated prediction separately, one at a time for each reference list. This technique works best when the luminance varies linearly from picture to picture and the luminance variation is global at the picture/slice level.
And (4) local illumination compensation.
Local illumination compensation solves this problem by adapting the parameters (two pairs of multiplicative weight values and additive offset values) on a block-by-block basis. Instead of indicating weighted bi-prediction of these parameters at the slice level, the technique takes the best parameters to fit the template (T)C) And a prediction signal (T) of the template0And T1) In between (see fig. 3). By minimizing T separatelyCAnd T0For the first pair of weight and offset values and TCAnd T1The resulting parameters are optimized for the difference in illumination between (for the second pair of weights and offset values). Then, the same motion compensation process as the weighted bi-prediction is performed using the derived parameters.
Generalized bi-prediction.
Generalized bi-prediction (GBi) has been proposed to improve motion compensated prediction in bi-prediction mode. Generalized bi-prediction is described in, for example, the following documents: C. -c.chen, x.xiu, y.he, y.ye, "Generalized Bi-predictive for Inter Coding (Generalized Bi-prediction for Inter Coding)", jfet-C0047, 2016 month 5; and international application publication No. WO2017197146, "Systems and Methods for generalized multi-Hypothesis Prediction for Video Coding," published in 2017, 11, 16.
In the bi-prediction mode, the prediction signal at sample x is given by equation 1 and can be calculated by equation 1:
P[x]=w0*P0[x+v0]+w1*P1[x+v1]equation 1
Wherein P [ x ]]Representing the resulting prediction signal, P, of a sample x at a picture position xi[x+vi]Is to use the Motion Vector (MV) v of the ith list (e.g. list 0, list 1)iX of (2)Predict a signal, and w0And w1Are two weight values shared between all samples in a block. Based on this formula, the weight value w can be adjusted0And w1To obtain a plurality of prediction signals. To w0And w1Some configurations of (c) may imply the same prediction as conventional uni-prediction and bi-prediction, e.g., (w)0,w1) For uni-prediction with reference list L0, (0, 1) for uni-prediction with reference list L1, and (0.5 ) for conventional bi-prediction with both reference lists. The weights are signaled for each CU. To reduce the signaling overhead, one constraint that may be applied is w0+w11. Under this constraint, only one weight needs to be signaled. (thus, the signaling of a single weight may be referred to as signaling for a pair of weights). Thus, equation 1 can be further simplified as:
P[x]=(1-w1)*P0[x+v0]+w1*P1[x+v1]equation 2
To further reduce the weight signaling overhead, w1May be discretized into a finite number of available bi-predictive weights, e.g., seven weights { -1/4,1/4,3/8,1/2,5/8,3/4,5/4}, so each weight value may be indicated by an index value within a very small finite range. In this case, the available pair of bi-predictive weights may be represented as (-1/4,5/4), (1/4,3/4), (3/8,5/8), (1/2), (5/8,3/8), (3/4,1/4), and (5/4, -1/4).
Fig. 4 is a block diagram of a video encoder according to some embodiments. Similar to the video encoder shown in fig. 1, spatial prediction and temporal prediction are two basic pixel domain prediction modules. The spatial prediction module may be the same as that described in fig. 1, however, in contrast to the
Fig. 6 is a functional block diagram of an exemplary video decoder that decodes a bitstream generated by, for example, the video encoder of fig. 4. The coding mode and prediction information are used to derive the prediction signal using spatial prediction or motion compensated prediction (with generalized bi-prediction support). For generalized bi-prediction, the block motion information and weight values may be received and decoded in order to generate the prediction block.
With the block motion information and weight values, the generalized bi-prediction module (e.g.,
Hierarchical prediction and temporal layers.
Hierarchical prediction structures are widely used in random access configurations to provide efficient temporal prediction. Fig. 8 schematically shows an example of hierarchical prediction using four Temporal Layers (TL), where the arrows depict the prediction relationship between the current picture and its reference pictures (the arrows start from the reference picture and go to the predicted current picture). As shown, in hierarchical prediction, higher TL pictures are typically predicted from temporally closer reference pictures (e.g., TL-3 pictures are predicted from temporally neighboring pictures), while lower TL layer pictures have a larger temporal distance from their reference pictures (e.g., TL0 picture with Picture Order Count (POC) or POC8 is 8 pictures away from its reference picture with picture order count POC 0). Note also that at the highest TL (TL-3 in fig. 8), pictures are not used as reference pictures by any other pictures, i.e. they are non-reference pictures. In this embodiment, four TLs are used. Deeper levels may be used, for example, jfet Common Test Conditions (CTC) uses five TLs in its random access configuration.
In hierarchical prediction, the picture/slice-level Quantization Parameter (QP) value may be adjusted according to the TL in which the current picture is located. Specifically, if QP0 is used for TL0 pictures, QP0+ delta (tlx) may be used for pictures located at TLx, where delta () is a function based on temporal level and delta () is zero or a positive integer. In one example, delta (tlx) may be set to TLx.
Summary of exemplary embodiments.
At the encoder side, deriving the optimal motion vector and optimal GBi weights may significantly increase the computational complexity. To find the optimal weight/motion vector combination, the encoder may operate to iteratively refine the two MVs and the weights for bi-prediction, i.e., v in equation 20、v1And w1. This process is performed at the CU level, and if an exhaustive search is used, the computational complexity will become extremely high. For some CUs, it may not be valid to test all seven weights { -1/4,1/4,3/8,1/2,5/8,3/4,5/4 }. For example, referring to equation 2, when two predictions P for a current CU to be coded0And P1Similarly, whatever weight values are applied, the final biprediction will be similar. This means that the encoder does not have to test so many weight options and signal the best weight selected from among so many weights. In contrast, in P0And P1In a very similar case, allowing more weights will result in more signaling overhead for the weights, which may reduce the decoding efficiency of GBi.
Example embodiments disclosed herein relate to improving coding efficiency and reducing coding complexity of GBi.
In some embodiments, the number of available GBi weights is reduced based on the temporal layer, the temporal distance of two reference pictures, or the relative quality of two prediction signals.
In some embodiments, the coding complexity of GBi is reduced by reusing GBi weights for different motion vector precisions.
Some embodiments include techniques for determining when to terminate the process of determining GBi weights to reduce coding complexity.
Some embodiments include techniques for quickly determining GBi weights based on motion estimation costs.
This disclosure describes techniques for reducing the complexity of generalized bi-prediction. These techniques may be implemented using the encoder of fig. 4 and the decoder of fig. 6. Some embodiments provide for reducing GBi weight signaling overhead. Some embodiments may operate to reduce the complexity of GBi weight selection.
Picture/slice level GBi adaptation based on TL and QP.
As discussed above, QP adaptation is widely used in hierarchical prediction. When QP adaptation is used in conjunction with bi-prediction, two reference pictures may have different quality if they are from two temporal layers. Part of the GBi gain comes from this because more weight can be applied to reference blocks from reference pictures with higher quality (e.g., lower QP) for better final prediction. With this consideration, GBi weights may be adapted when coding pictures at different temporal layers.
In a first embodiment, the number of allowed GBi weights may be adapted according to the TL of the current picture. Denote the allowed number of GBi weight indices of temporal layer i as ci. For a coding structure with k temporal layers, the number of weights that can be used for each temporal layer can be represented as { c }0,c1,…,ck-1}. Typically, lower temporal layer pictures are of higher quality and will be used more frequently as reference pictures to code other pictures (from the same or higher temporal levels). Therefore, the coding quality of lower TL pictures is more important in achieving better overall coding efficiency. Thus, in some embodiments, lower TL pictures may use a greater number of GBi weights in order to improve the prediction quality and coding quality of the lower TL pictures. For example, condition c may apply0≤c1≤…≤ck-1So that there is a greater number of weight choices for lower TL pictures. At higher temporal layers, the number of allowed GBi weights is reduced compared to lower temporal layers. This may not only reduce the signaling overhead of higher TL picturesAnd coding of higher TL pictures can be accelerated. For example, the lowest temporal layer or layers (e.g., TL0 and/or TL1) may allow for seven different sets of weights, the higher intermediate temporal layers (e.g., TL2) may allow only three different sets of weights, and at the highest temporal level (e.g., TL3 in fig. 8), for non-reference pictures, only conventional bi-prediction may be allowed (i.e., only one set (0.5, 0.5) of weights).
The GBi gain of a block in a high temporal layer picture may be relatively small compared to a block in a lower temporal layer picture. This is because high temporal layer pictures typically have reference pictures that are very close in temporal distance, so blocks in these high TLs tend to be more accurately or sufficiently predicted even without GBi. Furthermore, higher QPs are typically used for high temporal layer pictures, which results in more skipped blocks and/or zero-residual blocks. Thus, in addition to adapting GBi based on TL of the current picture, QP values of the current picture may also be considered in GBi adaptation. For example, if the slice/picture level QP of the current picture is high enough, only conventional bi-prediction with equal weight is allowed (or a smaller set of GBi weights is allowed). This may bring some quality degradation, but the loss can be compensated by reducing the signaling overhead. GBi index signaling may be skipped or GBi indices may be decoded using fewer bits because GBi is turned off or a smaller set of GBi weights is used. Embodiments using slice level QP based GBi adaptation may be used in conjunction with the TL based GBi adaptation described above. If TL and/or slice level QP of the current picture is high enough, the number of GBi weights allowed may be reduced, or GBi may be disabled completely (e.g., for bi-prediction, only equal weights are allowed). At the decoder side, the temporal layer and/or slice QP values are known to the decoder. Thus, if the decoder determines that GBi has been turned off based on TL and/or slice QP values, it may skip GBi weight information parsing at the CU level. By skipping the GBi process for certain temporal layers and/or slice QP values, GBi can be accelerated with negligible performance penalty.
In another embodiment, instead of determining the number of available weights for a current picture by using TL for the picture and/or with QP for the picture, the encoder may adaptively select the number of GBi weights it uses when encoding the current picture. In this case, the encoder may signal the number of GBi weights allowed at slice/picture level and the actually allowed GBi weights in the bitstream. This high level signaling of allowed GBi weights may be signaled as part of the slice header or may be signaled in the picture parameter set PPS. At the CU level, only allowed weights for the current slice/picture may be used, and only GBi indices associated with these allowed weights may be signaled.
Block-level GBi adaptation based on reference signal quality.
As described above, some embodiments adapt the number of GBi weights at the picture level based on TL and/or slice level QP. Block-level GBi adjustment may also be employed in addition to or instead of adjusting GBi weights at the picture level.
In bi-prediction, the current block is predicted from two reference pictures, one for each reference picture list. Then, in GBi, two reference signals P0And P1Are combined using equation 2, and in some embodiments may be based on the two prediction signals P0And P1The GBi weights are adapted at the block level. Instead of allowing a complete set of, for example, seven weights in GBi for the current block, the allowable weights may be limited in such a way that only larger weights are used for predictions with higher quality and only smaller weights are used for predictions with lower quality. For example, in unconstrained GBi, w1Is P1May have, for example, seven values, which may be { -1/4,1/4,3/8,1/2,5/8,3/4,5/4 }. For a current block coded with bi-prediction mode, if P1Has a ratio of P0High quality, then for w1Only w greater than or equal to (1/2) may be allowed1A subset of values. For example, only the subset 1/2,5/8,3/4,5/4 may be allowed for the current block. On the other hand, if P0Has a ratio of P1High quality, only w less than or equal to (1/2) is allowed1A subset of values. For example, for a current blockOnly the subset-1/4, 1/4,3/8,1/2 may be allowed. In this way, GBi weight signaling overhead may be reduced and coding may also be accelerated.
Different embodiments may use different techniques to estimate P0And P1Relative mass of (c). In a first embodiment, the temporal distance between the current slice and each of its reference pictures in list 0 and list 1 may be used to estimate P0And P1Relative mass of (c). In particular, prediction signals from reference pictures that are temporally closer to the current picture are more likely to have higher correlation and therefore provide higher quality prediction. R0And R1Respectively, represents P obtained therefrom0and P1The reference picture of (2). And d is0and d1Each represents R0and R1The temporal distance from the current picture. The temporal distance between two pictures can be measured by the difference in their picture order counts. If d is0≤d1Then P0Most likely to have a ratio of P1Higher quality, and therefore w1The value should be limited to a value less than or equal to (1/2), i.e., only towards P0A larger weight is assigned. In some embodiments, at equal distances in time d0=d1In the case of (2), all weight pairs may be considered.
In a second embodiment, P may be considered in determining the relative mass0and P1The associated QP value. This may be for reference picture R0And R1Slice level QP values for coding, or it may be for predicting a block P0And P1Block-level QP values for coding, which may occur, for example, in coding reference picture R0And R1In the case of applying a block-level QP change when coding. Since fractional-pel (fractional-pel) precision motion vectors can be used for motion compensated prediction to obtain P0And P1And P is0And P1May correspond to R0And R1More than one block partition in. With P0For example. If it covers R0Is partitioned, and if so, is usedCoding each of the N block partitions with a different block-level QP, the average of these block-level QPs can be used to calculate the sum P0Associated block level QP. QP0And QP1Respectively represent and P0And P1The associated QP value. Without loss of generality, let QP be assumed0≤QP1. Then P is0Most likely to have a ratio of P1Higher quality, therefore w1The value should be limited to a value less than or equal to 1/2, i.e. only towards P0A larger weight is assigned. In some embodiments, all weight pairs may be considered with equal QP values.
In the third embodiment, P0And P1Temporal distance from current picture and distance from P0And P1The associated QPs may be used in combination to determine the number of allowed GBi weights for the current block. For example, if d0≤d1And QP0≤QP1Then the allowed GBi weight of the current block may be further constrained to support a larger weight for P0. For example, in this case, only the largest two weights may be used for P0. In contrast, at w1Of the full set of, e.g., seven weight values of (c), only two minimum values are allowed for the current block-1/4, 1/4 }.
Similar to picture-level GBi adaptation, block-level GBi adaptation may also be used to speed up encoding. In the motion estimation phase, a bi-predictive motion search may be performed by: selecting one reference picture from each reference picture list, searching for the best motion vector for the reference picture selected from one list, fixing the motion vector for the reference picture selected from the list, and refining the motion vector for the reference picture selected from another list. At this stage, in an exemplary embodiment, P may be calculated0And P1And/or from P0And P1Associated QP values to determine a subset of allowed GBi weights for the current block. During an encoder search, if a greater weight is being applied to a reference block from a farther reference picture (and thus not allowed for the current block), then dual may be stopped for this reference picture pairA predictive motion search, and the process may proceed to the next reference picture pair.
GBi adaptation based on the similarity between two predicted signals.
GBi prediction is calculated using equation 2, where two prediction signals P0And P1Is weighted averaged. When P is present0And P1When sufficiently similar, applying a larger set of weights will not be very helpful, since the final predictions will be very similar to each other, regardless of how different the weights are. Thus, in some embodiments, the set of GBi weights may be determined by evaluating P0And P1Similarity between them and determining P0And P1The level of similarity between them. In some embodiments, P is calculated0And P1A Sum of Absolute Differences (SAD) value between them to determine the similarity level. If the SAD value is less than a predetermined threshold, unequal GBi weights may be skipped for the current block and only conventional bi-prediction may be allowed. Other similarity measures, such as Sum of Squared Errors (SSE), may also be used. In some embodiments, a hierarchical constraint approach may be applied. For example, a set of two thresholds may be used, where T0<T1. If SAD (P)0,P1)<T0Then only conventional bi-prediction (with equal weight) is allowed. If T is0≤SAD(P0,P1)<T1Then only a small set of GBi weights is allowed, for example, a constrained set of three weights containing {1/4, 1/2, 3/4} (in this case, the two most biased weights and the equal weight). Finally, if T1≤SAD(P0,P1) Then a complete set of e.g. seven GBi weights is allowed.
In some embodiments, the similarity-based GBi adaptation may be used in combination with the above-described picture-level or block-level GBi adaptation. For example, in the hierarchical constraint method described above, if T0≤SAD(P0,P1)<T1Then can be according to P0And P1Further constrains a set of three weights for the constraint. Without loss of generality, assume P0Has a ratio of P1Higher quality (e.g., from temporally closer reference pictures, and/or with P0Lower associated QP), then the set of three weights may be further constrained to a set of inclusion allowances for w1Two weights of {1/4, 1/2 }.
The encoder accelerates: reuse of GBi weights for different motion vector precisions.
Currently in JEM, for explicit (i.e., non-merge) inter prediction modes, motion vectors may have different precisions: 1/4 pixel accuracy, 1 pixel accuracy, and 4 pixel accuracy. Allowing more motion vector precision on the block level provides a more trade-off between bit rate and quality. Without the encoder acceleration technique, with a seven-weight configuration example, with three different motion vector precisions, the motion search and rate-distortion processing would be performed 21 times for bi-prediction, which would result in a very high encoder complexity.
In general, final motion vectors decided by the explicit inter prediction mode with different motion vector precisions are very similar to each other. As a result, the best reference block decided by one motion vector precision may be almost the same as those from other motion vector precisions. From this observation, it is reasonable to reuse the best GBi weight from one motion precision for the other motion vector precision.
In one embodiment, according to the current implementation of JEM software, 1/4 pixel accuracy is always tested first in the motion search of the explicit inter prediction mode. In an exemplary embodiment, after cycling through all GBi weights to find the best GBi weight for the 1/4 pixel precision case, for a motion search for residual motion vector precision, the other GBi weights may be skipped. For example, subsequent searches may only test the conventional (1/2) weight pairs plus the optimal GBi weight selected by the 1/4 pixel precision search. By doing so, the number of GBi weight iterations can be reduced, thus reducing encoder complexity. In alternative embodiments, the encoding commands for motion vector precision may be changed, and thus the reuse may be flexible for other combinations, e.g., the best GBi weight selected by 1 pixel may be used for 1/4 pixel and 4 pixel encoding.
In another embodiment, instead of reusing only the best GBi weights for another motion vector precision, the best two or N weights are selected as candidates for another motion vector precision to mitigate the potential penalty that may have been brought to the encoder by this simplified approach. A threshold may be used to determine whether another GBi weight other than the best GBi weight is still tested by the other motion vector precision. If the rate-distortion cost is less than the threshold calculated from the best GBi weight cost, then that particular GBi weight will also be reused for the other motion vector precision.
Embodiments reusing the optimal GBi weights may be combined with the above-described GBi adaptation method to further increase the flexibility of the encoder, thereby finding a better tradeoff between complexity and performance. By doing so, the complexity of the GBi encoding process may be reduced while still providing high performance.
The encoder accelerates: early termination of GBi procedure.
In some embodiments, the GBi weight search process is simplified by early termination. Two types of early termination conditions are described below.
One early termination condition used in some embodiments is based on the partition depth of the current block. In the current design of JEM, a binary quad-tree CU hierarchy is employed, where the Coding Tree Units (CTUs) are first partitioned using quad-tree partitions. The leaf nodes of the quadtree serve as the roots of a Binary Tree (BT). Generally, when the CU size is very small, GBi is less effective. Thus, in some embodiments, the current BT depth is checked in order to decide whether to terminate the GBi search process prematurely. Equal weight is always applied to the motion search regardless of BT depth. For unequal weight pairs, the remaining GBi weights may be skipped in the motion search if the current BT depth is found to be already greater than the threshold. Instead of using the BT depth, the BT size may also be used to determine whether non-equal GBi weights will be tested in a motion search. Non-equal GBi weights may be skipped if the BT size (e.g., BT width multiplied by BT height) is less than a predetermined threshold.
In some embodiments, the method may also be used to disable GBi for the current BT standardly if the current BT has a depth greater than a preset threshold and/or if its size is less than a preset threshold. When the method is used standardised, the decoder may operate to parse GBi weights for such block skips.
Another early termination condition used in some embodiments is based on a Coded Block Flag (CBF). The CBF flag is used in the JEM codec to indicate whether or not a residual error calculated by subtracting the prediction block from the current block is to be encoded and signaled to the decoder. In general, when the encoder decides to skip the residual error, it indicates that the prediction is good enough, since all quantized transform coefficients can be set to 0. With this in mind, in some embodiments, if the encoder has found one GBi weight (equal or not), for which the CBF flag may be set to 0 (indicating that the residual error does not need to be decoded), the check of the remaining GBi weights in the motion search process is terminated, as this indicates that a valid weight pair for the current block has been found.
There may be two cases where the encoder will decide to set the CBF to 0. The first case is when the encoder attempts a mode where the CBF is set to 0 in an attempt to reduce overhead. The second case is that all transform coefficients are actually 0 after quantization of the transform coefficients. From a performance perspective, early termination of the GBi weight test due to the first scenario may result in performance degradation. Thus, in some embodiments, early termination based on the CBF flag may be performed only for the second case.
The encoder accelerates: GBi reduction based on merge mode.
In current JEM implementations, the explicit inter prediction mode in which the GBi weight index search occurs is located after all other inter prediction modes. With this design, information from other inter prediction modes may be used to speed up the GBi search process in some embodiments. More specifically, if the best inter prediction mode is a skip merge candidate when the explicit inter prediction mode is to be tested, and the GBi weights from that skip merge mode are unequal weights (the GBi weight for a skip merge block is inherited from the selected skip merge candidate), there is no need to check the unequal weights of the explicit inter prediction mode, since using GBi weights merged from spatial or temporal neighboring blocks already provides very good prediction without the need to transmit residuals.
In another embodiment, to further ensure the performance of GBi, during the explicit inter prediction mode test, we may want to test the same GBi weights as the merge weights from the skip merge mode, in addition to equal weights.
In another embodiment, during the explicit inter prediction mode test, all GBi weights (including equal weights) may be tested, except for the same GBi weight as the merge weight.
The encoder accelerates: GBi reduction based on motion estimation cost.
The current GBi implementation is a rate-distortion based implementation, where after motion estimation, a rate-distortion (RD) cost is calculated for encoding the current block using each of the possible GBi weights. Then, the GBi weight with the smallest RD cost is selected. The RD process is relatively complex because of the transform and quantization involved. Thus, in some embodiments, by selecting the best GBi weight in the motion estimation stage, the complexity of GBi may be further reduced.
In the motion estimation phase, the bit rate has been estimated for mono-prediction and bi-prediction in order to decide whether or not to use bi-prediction. Furthermore, the SAD or Sum of Absolute Transformed Differences (SATD) is also calculated (depending on the motion vector precision, SAD or SATD may be used) as distortion. Using the estimated bit rate and distortion, a cost may be calculated. In an exemplary embodiment, the cost from the motion estimation stage may be used to select the best GBi weight (i.e., selecting the GBi weight as the weight with the lowest SAD or SATD). By doing so, only one RD cost calculation needs to be performed, thereby reducing the complexity of GBi.
Fig. 9 is a flow chart summarizing the proposed GBi adaptation and acceleration method. To provide a better tradeoff between signaling overhead and performance of GBi and speed up coding, various embodiments are disclosed in this disclosure. These embodiments may be used in various combinations. In the example of fig. 9, several embodiments are combined. Given a complete set of GBi weights, picture-level GBi weight adaptation may be applied (902), e.g., based on TL, QP of the current picture or encoder decisions, and a reduced set of GBi weights may be selected for the current picture. Then, when coding each block (904) in the current picture, block-level GBi weight adaptation (906) may be applied, e.g., based on the temporal distance of the two prediction blocks, their relative quality, and/or their similarity to each other, and a further reduced set of GBi weights may be selected for the current block. Then, within the set of allowed GBi weights for the current block, the encoder may select the best coding mode for the current block (908), including the best motion vector, reference index, and best corresponding GBi weight, using the acceleration methods described herein (e.g., based on the depth of the current block, partition size, CBF flag, etc.).
Note that while FIG. 9 depicts a flowchart in which several of the disclosed embodiments are used, a subset of the disclosed embodiments may alternatively be used. For example, the picture-level GBi adaptation (902) may be bypassed and the full set of GBi weights may be fed directly into the block-level GBi adaptation block. Other combinations are possible, for example, encoder acceleration (908) may not be applied, and instead an exhaustive search for optimal GBi weights may be performed.
Although many embodiments are described herein as starting with a set of seven GBi weights { -1/4,1/4,3/8,1/2,5/8,3/4,5/4} as a complete set of GBi weights, the proposed method is generally applicable to any set of starting GBi weights (which may include a different number of weights) and/or a set of different weights.
Overview of scalable video coding.
As described above, some embodiments employ multi-layer video coding techniques. For example, multi-layer video coding techniques, such as scalable video coding and/or multiview video coding, may be designed to process more than one video layer, where each layer may be decoded to reconstruct a video signal of a particular spatial resolution, temporal resolution, fidelity, and/or view.
Scalable video coding may improve the quality of experience of video applications running on devices with different capabilities on heterogeneous networks. Scalable video coding may encode a signal once at the highest representation (e.g., temporal resolution, spatial resolution, quality, etc.), but enables decoding from a subset of the video stream according to the particular rate and representation required by certain applications running on the client device. Scalable video coding may save bandwidth and/or storage compared to non-scalable solutions. International video standards (e.g., MPEG-2 video, h.263, MPEG4 visual, h.264, etc.) may have a variety of tools and/or profiles that support scalability modes.
Table 1 provides examples of different types of scalability and the corresponding standards that can support them. Bit depth scalability and/or chroma format scalability may be tied to video formats (e.g., higher than 8-bit video, and chroma sampling formats higher than YUV4:2:0), which may be used primarily by professional video applications, for example. Aspect ratio scalability may be provided.
TABLE 1
Scalable video coding may use a base layer bitstream to provide a first video quality level associated with a first set of video parameters. Scalable video coding may use one or more enhancement layer bitstreams to provide one or more higher quality levels associated with one or more sets of enhancement parameters. The set of video parameters may include one or more of: spatial resolution, frame rate, reconstructed video quality (e.g., in the form of SNR, PSNR, VQM, visual quality, etc.), 3D capabilities (e.g., having two or more views), luma and chroma bit depths, chroma format, and underlying single-layer coding standards. Different use cases may use different types of scalability, e.g., as shown in table 1. The scalable coding architecture may provide a common structure that may be configured to support one or more scalabilities (e.g., the scalabilities listed in table 1). The scalable coding architecture can be flexible to support different scalabilities with minimal configuration effort. A scalable coding architecture may include at least one preferred mode of operation that may not require changes to block-level operations so that coding logic (e.g., encoding logic and/or decoding logic) may be maximally reused in a scalable coding system. For example, a scalable coding architecture based on picture-level inter-layer processing and management units may be provided, where the inter-layer prediction may be performed at the picture level.
Fig. 10 is a schematic diagram of an example architecture of a two-layer scalable video encoder. Video encoder 950 may receive video (e.g., an enhancement layer video input). The enhancement layer video may be downsampled using downsampler 952 to create a lower level video input (e.g., a base layer video input). The enhancement layer video input and base layer video input may correspond to each other via the downsampling process and may enable spatial scalability. Base layer encoder 954 (e.g., HEVC encoder in this example) may encode the base layer video input block on a block-by-block basis and generate a base layer bitstream. Fig. 1 is a schematic diagram of an exemplary block-based single-layer video encoder that may be used as the base layer encoder in fig. 10.
At the enhancement layer, an Enhancement Layer (EL) encoder 956 may receive the EL input video input, which may have a higher spatial resolution (e.g., and/or higher values of other video parameters) than the base layer video input. The EL encoder 956 may generate the EL bitstream in a substantially similar manner as the base layer video encoder 954, e.g., by using spatial prediction and/or temporal prediction to achieve compression. Inter-layer prediction (ILP) may be available at EL encoder 956 to improve its coding performance. Unlike spatial prediction and temporal prediction, which can derive a prediction signal based on a coded video signal in a current enhancement layer, inter-layer prediction can derive a prediction signal based on an encoded video signal from a base layer (e.g., and/or other lower layers when more than two layers are present in a scalable system). At least two forms of inter-layer prediction (picture level ILP and block level ILP) may be used in the scalable system. Picture level ILP and block level ILP are discussed herein. The bitstream multiplexer 958 may combine the base layer bitstream and the enhancement layer bitstream together to produce a scalable bitstream.
Fig. 11 is a schematic diagram of an example architecture of a two-layer scalable video decoder. The two-layer scalable video decoder architecture of fig. 11 may correspond to the scalable encoder of fig. 10. Video decoder 1000 may receive a scalable bit stream from, for example, a scalable encoder (e.g., scalable encoder 900). The demultiplexer 1002 may separate the scalable bit stream into a base layer bit stream and an enhancement layer bit stream. Base layer decoder 1004 may decode the base layer bitstream and may reconstruct the base layer video. Fig. 2 is a schematic diagram of an exemplary block-based single-layer video decoder that may be used as the base layer decoder in fig. 11.
The enhancement layer decoder 1006 may decode the enhancement layer bitstream. The EL decoder 1006 may decode the EL bitstream in a substantially similar manner as the base layer video decoder 1004. An enhancement layer decoder may use information from the current layer and/or information from one or more dependent layers (e.g., a base layer) to do so. For example, such information from one or more dependent layers may pass through inter-layer processing, which may be done when picture-level ILP and/or block-level ILP are used. Although not shown, additional ILP information may be multiplexed with the base and enhancement layer bitstreams at MUX 958. The ILP information may be demultiplexed by DEMUX 1002.
Embodiments that use temporal layers to determine the number of available bi-predictive weights.
In some embodiments, a method of coding video comprising a plurality of pictures including a current picture, a first reference picture, and a second reference picture, each picture comprising a plurality of blocks is provided. The method includes, for at least a current block in the current picture: determining a number of available bi-prediction weights based at least in part on a temporal layer of the current picture; identifying a first weight and a second weight from the determined number of available bi-predictive weights; and predicting the current block as a weighted sum of a first reference block in the first reference picture and a second reference block in the second reference picture, wherein the first reference block is weighted by the first weight and the second reference block is weighted by the second weight.
In some embodiments, the number of bits used to identify the bi-predictive weights in the bitstream is based on the determined number of available bi-predictive weights. In some embodiments, an index identifying at least the first weight is signaled in the bitstream only if the number of available bi-predictive weights is greater than one. In some embodiments, the sum of the first and second weights is one. In some such embodiments, the number of available bi-prediction weights is decreased for increasing temporal layers. In some embodiments, seven bi-prediction weights may be used for at least one lowest temporal layer. In some embodiments, three bi-predictive weights may be used for at least one temporal layer above the lowest temporal layer. In some embodiments, one bi-predictive weight of 0.5 may be used for at least one highest temporal layer.
In some embodiments, a method is provided for encoding video comprising a plurality of pictures including a current picture, a first reference picture, and a second reference picture, each picture comprising a plurality of blocks. The method includes, for at least a current block in the current picture: determining a number of available bi-prediction weights based at least in part on a temporal layer of the current picture; selecting a first weight and a second weight for prediction of the current block from among the determined number of available bi-prediction weights; and signaling an index identifying at least the first weight in a bitstream only if the determined number of the available bi-predictive weights is greater than one. In some such methods, the number of bits used to signal the index is based on the determined number of available bi-predictive weights.
In some embodiments, a method for decoding video from a bitstream is provided, wherein the video comprises a plurality of pictures including a current picture, a first reference picture, and a second reference picture, each picture having a plurality of blocks. The method includes, for at least a current block in the current picture: determining a number of available bi-prediction weights based at least in part on a temporal layer of the current picture; parsing an index identifying at least a first bi-predictive weight from the bitstream only if the determined number of the available bi-predictive weights is greater than one. In some such embodiments, the number of bits used to signal the index is based on the determined number of available bi-predictive weights.
Embodiments that use a quantization parameter to determine the number of available weights.
In some embodiments, a method of coding video comprising a plurality of pictures including a current picture, a first reference picture, and a second reference picture, each picture comprising a plurality of blocks is provided. The method includes, for at least a current block in the current picture: determining a number of available bi-prediction weights based at least in part on a quantization parameter of the current picture; identifying a first weight and a second weight from the determined number of available bi-predictive weights; and predicting the current block as a weighted sum of a first reference block in the first reference picture and a second reference block in the second reference picture, wherein the first reference block is weighted by the first weight and the second reference block is weighted by the second weight.
In some such embodiments, the number of bits in the bitstream used to identify the bi-predictive weights is based on the determined number of available bi-predictive weights. In some embodiments, an index identifying at least the first weight is signaled in the bitstream only if the number of available bi-predictive weights is greater than one. In some embodiments, the sum of the first and second weights is one. In some embodiments, the number of available bi-predictive weights is decreased for increasing quantization parameters.
In some embodiments, seven bi-predictive weights may be used for at least one lowest value of the quantization parameter. In some embodiments, three bi-predictive weights may be used for at least one value of the quantization parameter above the lowest value of the quantization parameter. In some embodiments, one bi-predictive weight of 0.5 may be used for at least one highest value of the quantization parameter.
In some embodiments, a method is provided for encoding video comprising a plurality of pictures including a current picture, a first reference picture, and a second reference picture, each picture comprising a plurality of blocks. The method includes, for at least a current block in the current picture: determining a number of available bi-prediction weights based at least in part on a quantization parameter of the current picture; selecting a first weight and a second weight for prediction of the current block from among the determined number of available bi-prediction weights; and signaling an index identifying at least the first weight in a bitstream only if the determined number of the available bi-predictive weights is greater than one. In some such embodiments, the number of bits used to signal the index is based on the determined number of available bi-predictive weights.
A method of decoding video from a bitstream, the video comprising a plurality of pictures, the plurality of pictures comprising a current picture, a first reference picture, and a second reference picture, each picture comprising a plurality of blocks. The method includes, for at least a current block in the current picture: determining a number of available bi-prediction weights based at least in part on a quantization parameter of the current picture; and parsing an index identifying at least a first bi-predictive weight from the bitstream only if the determined number of the available bi-predictive weights is greater than one. In some such embodiments, the number of bits used to signal the index is based on the determined number of available bi-predictive weights.
Embodiments that use a quality metric to determine the number of available weights.
In some embodiments, a method is provided for coding video comprising a plurality of pictures including a current picture, a first reference picture, and a second reference picture, each picture comprising a plurality of blocks. The method includes, for at least a current block in the current picture: determining a number of available bi-prediction weights based at least in part on a quality metric of the current picture; identifying a first weight and a second weight from the determined number of available bi-predictive weights; and predicting the current block as a weighted sum of a first reference block in the first reference picture and a second reference block in the second reference picture, wherein the first reference block is weighted by the first weight and the second reference block is weighted by the second weight.
In some such embodiments, the quality metric is determined by a temporal layer of the current picture. In some embodiments, the quality metric is determined by a quantization parameter of the current picture. In some embodiments, the quality metric is determined by a quantization parameter and a temporal layer of the current picture.
In some embodiments, a method is provided for coding video comprising a plurality of pictures including a current picture, a first reference picture, and a second reference picture, each picture comprising a plurality of blocks. The method includes, for at least a current block in the current picture: determining a number of available bi-prediction weight pairs based at least in part on a quality metric of the current picture; identifying weight pairs from the determined number of available bi-predictive weight pairs, the identified weight pairs including a higher weight and a lower weight; determining which of the first and second reference pictures is a higher quality reference picture and which is a lower quality reference picture; and predicting the current block as a weighted sum of a higher quality reference block in the higher quality reference picture and a lower quality reference block in the lower quality reference picture, wherein the higher quality reference block is weighted by the higher weight and the lower quality reference block is weighted by the lower weight.
Embodiments that signal the number of available weights.
In some embodiments, a method of coding video comprising a plurality of pictures including a current picture, a first reference picture, and a second reference picture, each picture comprising a plurality of blocks is provided. The method includes, for at least a current block in the current picture: determining a number of available bi-predictive weights, wherein the number of available bi-predictive weights is signaled in a bitstream; identifying a first weight and a second weight from the determined number of available bi-predictive weights; and predicting the current block as a weighted sum of a first reference block in the first reference picture and a second reference block in the second reference picture, wherein the first reference block is weighted by the first weight and the second reference block is weighted by the second weight. In some embodiments, the number of bits used to identify the bi-predictive weights in the bitstream is based on the determined number of available bi-predictive weights. In some embodiments, an index identifying at least the first weight is signaled in a bitstream only if the number of available bi-predictive weights is greater than one.
Embodiments of assigning weights based on reference picture quality.
In some embodiments, a method is provided for encoding video comprising a plurality of pictures including a current picture, a first reference picture, and a second reference picture, each picture comprising a plurality of blocks. The method includes, for at least a current block in the current picture: determining which of the first and second reference pictures is a higher quality reference picture and which is a lower quality reference picture; identifying a first weight and a second weight from among a plurality of available bi-predictive weights, wherein the second weight is not greater than the first weight; and predicting the current block as a weighted sum of a higher quality reference block in the higher quality reference picture and a lower quality reference block in the lower quality reference picture, wherein the higher quality reference block is weighted by the first weight and the lower quality reference block is weighted by the second weight.
In some such embodiments, determining which of the first and second reference pictures is a higher quality reference picture and which is a lower quality reference picture comprises: selecting one of the first and second reference pictures that is temporally closer to the current picture as a higher quality reference picture. In some embodiments, each of the first and second reference pictures has an associated quantization parameter, and wherein determining which of the first and second reference pictures is a higher quality reference picture and which is a lower quality reference picture comprises: selecting one of the first and second reference pictures having a lower associated quantization parameter as the higher quality reference picture. The associated quantization parameter may be a slice-level quantization parameter of the first and second reference pictures. The associated quantization parameter may be a block-level quantization parameter of a corresponding reference block in the first reference picture and the second reference picture. The block-level quantization parameters for the respective reference blocks may be determined by averaging the block-level quantization parameters for the block partitions used to code the respective reference blocks.
Some embodiments include determining a number of available bi-prediction weights, wherein the number of available bi-prediction weights is determined based at least in part on a quality difference between the higher quality and lower quality reference pictures. A larger quality difference may correspond to a lower number of available bi-predictive weights. The quality difference may be determined based on both the respective associated quantization parameter of the respective reference picture and a temporal distance of the respective reference picture from the current picture.
In some embodiments, a level of similarity between the first reference block and the second reference block is determined; and determining a number of available bi-predictive weights based at least in part on the similarity level, wherein the identifying with respect to the first weight and the second weight is performed from among the determined number of available bi-predictive weights. In some embodiments, a number of available bi-prediction weights is determined based at least in part on a temporal layer of the current picture, wherein the identifying with respect to the first and second weights is performed from among the determined number of available bi-prediction weights. In some embodiments, a number of available bi-prediction weights is determined based at least in part on a quantization parameter of the current picture, wherein the identifying with respect to the first and second weights is performed from among the determined number of available bi-prediction weights.
In some embodiments, the first and second weights are identified using an index signaled in the bitstream. In some such embodiments, the index identifies unordered weight pairs selected from the group consisting of {5/4, -1/4}, {3/4,1/4}, {5/8,3/8}, and {1/2,1/2 }.
Embodiments that use picture similarity to determine the number of available weights.
In some embodiments, a method of coding video comprising a plurality of pictures including a current picture, a first reference picture, and a second reference picture, each picture comprising a plurality of blocks is provided. The method includes, for at least a current block in the current picture: identifying a first reference block in the first reference picture and a second reference block in the second reference picture; determining a level of similarity between the first reference block and the second reference block; determining a number of available bi-predictive weights based at least in part on the similarity level; identifying a first weight and a second weight from the determined number of available bi-predictive weights; and predicting the current block as a weighted sum of a first reference block in the first reference picture and a second reference block in the second reference picture, wherein the first reference block is weighted by the first weight and the second block is weighted by the second weight. In some such embodiments, determining the level of similarity comprises determining a sum of absolute differences between the first reference block and the second reference block.
In some embodiments, in response to determining that the level of similarity is above a threshold, the first weight and the second weight are both 0.5. In some embodiments, the number of available bi-predictive weights is seven for at least one lowest similarity level. In some embodiments, the number of available bi-predictive weights is three for at least one similarity level higher than the lowest similarity level.
An embodiment of a multi-stage motion search is used.
In some embodiments, a method of encoding video in a bitstream is provided. The method includes, for at least one current block in a current picture: performing a first bi-predictive motion search to select a first set of motion vectors and a first pair of bi-predictive weights using a first level of precision, the first search determining a set of N pairs of optimal bi-predictive weights; performing at least a second search to select at least a second set of motion vectors and at least a second pair of bi-predictive weights using at least a second level of precision different from the first level of precision, the second search performed only on the N pairs of best bi-predictive weights; selecting a selected set of motion vectors and bi-prediction weights for coding of the current block from among (i) the first set of motion vectors and first pair of bi-prediction weights and (ii) at least the second set of motion vectors and second pair of bi-prediction weights; and encoding the current block using the selected set of motion vectors and bi-prediction weights. In some embodiments, the first level of precision is 1/4 pixels. In some embodiments, the second level of precision is 1 pixel.
In some embodiments, the set of N-best pairs is a single best pair of bi-predictive weights. In some embodiments, the set of N-best pairs includes pairs (1/2 ). In some embodiments, the set of N-best pairs includes a best pair of bi-predictive weights and the pair (1/2 ). In some embodiments, the set of N-best pairs includes all pairs that give a rate-distortion cost less than a predetermined threshold.
In some embodiments, the first search is performed over a predetermined set of seven bi-predictive weights. In some embodiments, the first search is performed over a predetermined set of available bi-prediction weights, wherein the number of available bi-prediction weights is determined based at least in part on a temporal level of the current picture. In some embodiments, the first search is performed over a predetermined set of available bi-prediction weights, wherein the number of available bi-prediction weights is determined based at least in part on a quantization parameter of the current picture. In some embodiments, encoding the current block comprises: decoding an information in the bitstream, the information identifying the selected set of motion vectors and bi-prediction weights.
Embodiments that use binary tree depth to limit motion search.
In some embodiments, a method of encoding video in a bitstream is provided. The method includes, for at least one current block in a current picture: determining whether a binary tree depth of the current block is not greater than a predetermined threshold; and only if the binary tree depth is not greater than the threshold: performing a search for a set of optimal motion vectors and bi-predictive weights, the search being performed over a plurality of pairs of bi-predictive weights; and encoding the current block using the optimal pair of bi-prediction weights. In some such embodiments, responsive to determining that the binary tree depth is greater than the threshold, a search for a best set of motion vectors is performed, the search being performed using only equal bi-predictive weights.
Embodiments that use block sizes to limit motion search.
In some embodiments, a method of encoding video in a bitstream is provided. The method includes, for at least one current block in a current picture: determining whether a block size of the current block is less than a predetermined threshold; and only if the block size is less than the threshold: performing a search for a set of optimal motion vectors and bi-predictive weights, the search being performed over a plurality of pairs of bi-predictive weights; and encoding the current block using the optimal pair of bi-prediction weights. In some embodiments, the method further includes, in response to a determination that the binary tree depth is less than the threshold, performing a search for a best set of motion vectors, the search performed using only equal bi-prediction weights. In some such embodiments, the block size is the product of the width and height of the current block.
Embodiments that use CBF to limit motion search.
In some embodiments, a method of encoding video in a bitstream is provided. The method includes, for at least one current block in a current picture: performing a bi-predictive motion search among a plurality of bi-predictive weights; during the bi-predictive motion search, determining whether a pair of bi-predictive weights has been found such that a coded block flag may be set to zero; in response to determining that a pair of bi-predictive weights has been found to enable setting a coding block flag to zero, terminating the search; and encoding the current block using the found pair of bi-prediction weights.
In some embodiments, a method of encoding video in a bitstream is provided. The method includes, for at least one current block in a current picture: performing a bi-predictive motion search among a plurality of bi-predictive weights; determining, during the bi-predictive motion search, whether a pair of bi-predictive weights has been found such that prediction of the current block using the pair of bi-predictive weights has all-zero transform coefficients; in response to determining that a pair of bi-prediction weights has been found such that a prediction of the current block made using the pair of bi-prediction weights has all-zero transform coefficients, terminating the search; and encoding the current block using the found pair of bi-prediction weights.
Embodiments that use skip merge mode to limit motion search.
In some embodiments, a method of encoding video in a bitstream is provided. The method includes, for at least one current block in a current picture: performing a first inter prediction search among a plurality of merge candidate inter prediction modes to identify an optimal inter prediction merge mode for prediction of the current block; determining whether the best inter-prediction merge mode is a skip-merge candidate associated with a pair of unequal generalized bi-prediction weights; performing a second inter-prediction search among a plurality of explicit inter-prediction modes, wherein the second search is performed on a plurality of unequal generalized bi-prediction weights only in response to determining that the best inter-prediction merge mode is not a skip-merge candidate associated with the unequal pair of generalized bi-prediction weights; and encoding the current block using an inter prediction mode selected from the first or second inter prediction searches.
In some such methods, an inter prediction mode candidate is a skip merge mode candidate only if the prediction for the current block using the inter prediction mode candidate has all-zero transform coefficients. In some methods, in response to determining that the best inter-prediction merge mode is a skip-merge candidate associated with a pair of unequal generalized bi-prediction weights, the second search includes a search over an explicit inter-prediction mode using at least the pair of unequal generalized bi-prediction weights. In some methods, in response to determining that the best inter-prediction merge mode is a skip-merge candidate associated with a pair of unequal generalized bi-prediction weights, the second search includes searching on an explicit inter-prediction mode that excludes the pair of unequal generalized bi-prediction weights.
Embodiments that use distortion metrics in motion search.
In some embodiments, a method of encoding video in a bitstream is provided. The method includes, for at least one current block in a current picture: during a motion estimation phase, computing a distortion metric with respect to each of a plurality of combinations of bi-predictive motion vectors and bi-predictive weight pairs; selecting a bi-predictive motion vector and associated bi-predictive weight pair based on the distortion metric; calculating a rate-distortion cost for predicting the current block using the selected bi-predictive motion vector and associated bi-predictive weight pair; determining whether to encode the current block using the selected bi-predictive motion vector and associated bi-predictive weight pair based at least in part on the rate-distortion cost; and encoding the current block based on the determination. The distortion measure may be, for example, a sum of absolute differences or a sum of absolute transformed differences.
In some such embodiments, the selected bi-predictive motion vector and associated bi-predictive weight pair is the bi-predictive motion vector and associated bi-predictive weight pair for which only a rate-distortion cost for the current block is calculated.
In some embodiments, a method of coding video comprising a plurality of pictures including a current picture, a first reference picture, and a second reference picture, each picture comprising a plurality of blocks is provided. The method includes, for at least a current block in the current picture: determining a number of available bi-prediction weight pairs based at least in part on a quality metric of the current picture; identifying a weight pair from the determined number of available bi-predictive weight pairs, the identified weight pair comprising a higher weight and a lower weight; determining which of the first and second reference pictures is a higher quality reference picture and which is a lower quality reference picture; and predicting the current block as a weighted sum of a higher quality reference block in the higher quality reference picture and a lower quality reference block in the lower quality reference picture, wherein the higher quality reference block is weighted by the higher weight and the lower quality reference block is weighted by the lower weight.
The bitstream structure is decoded.
Fig. 12 is a diagram showing an example of a structure of a decoded bit stream. The coded bitstream 1300 consists of several NAL (network abstraction layer) units 1301. The NAL units may include coded sample data (e.g., coded slice 1306), or high level syntax metadata such as parameter set data, slice header data 1305, or supplemental enhancement information data 1307 (which may be referred to as SEI messages). A parameter set is a high level syntax structure containing basic syntax elements that may be applied to multiple bitstream layers, such as video parameter set 1302(VPS), or may be applied to a coded video sequence within one layer, such as sequence parameter set 1303(SPS), or may be applied to several coded pictures within one coded video sequence, such as picture parameter set 1304 (PPS). The parameter sets may be sent with coded pictures of the video bitstream or by other means, including out-of-band transmission using a reliable channel, hard coding, etc. Slice header 1305 is also a high level syntax structure that may contain some picture related information that is relatively small or related only to certain slices or picture types. SEI messages 1307 carry information that may not be needed by the decoding process but may be used for various other purposes, such as picture output timing or display and loss detection and concealment.
Communication device and system.
Fig. 13 is a schematic diagram showing an example of a communication system. The communication system 1400 may include an encoder 1402, a communication network 1404, and a decoder 1406. The encoder 1402 may communicate with the network 1404 via a connection 1408, which may be a wired connection or a wireless connection. The encoder 1402 may be similar to the block-based video encoder of fig. 1. The encoder 1402 may include a single layer codec (e.g., fig. 1) or a multiple layer codec (e.g., fig. 10). For example, the encoder 1402 may be similar to the multi-layer (e.g., two-layer) scalable coding system of fig. 9 with picture-level ILP support. The decoder 1406 may communicate with the network 1404 via a connection 1410, which may be a wired connection or a wireless connection. The decoder 1406 may be similar to the block-based video decoder of fig. 2. The decoder 1406 may comprise a single layer codec (e.g., fig. 2) or a multiple layer codec (e.g., fig. 11). For example, the decoder 1406 may be similar to the multi-layer (e.g., two-layer) scalable decoding system of fig. 11 with picture-level ILP support.
The encoder 1402 and/or the decoder 1406 may be incorporated into a variety of wired communication devices and/or wireless transmit/receive units (WTRUs), such as, but not limited to, digital televisions, wireless broadcast systems, network elements/terminals, servers (e.g., content or network servers (e.g., such as hypertext transfer protocol (HTTP) servers)), Personal Digital Assistants (PDAs), laptop or desktop computers, tablet computers, digital cameras, digital recording devices, video gaming devices, video game consoles, cellular or satellite radio telephones, digital media players, and/or the like.
The communication network 1404 may be a suitable type of communication network. For example, the communication network 1404 may be a multiple-access system that provides content, such as voice, data, video, messaging, broadcast, etc., to a plurality of wireless users. The communications network 1404 may enable multiple wireless users to access such content by sharing system resources, including wireless bandwidth. For example, the communication network 1404 may employ one or more channel access methods such as Code Division Multiple Access (CDMA), Time Division Multiple Access (TDMA), Frequency Division Multiple Access (FDMA), orthogonal FDMA (ofdma), single carrier FDMA (SC-FDMA), and/or the like. The communication network 1404 may include a plurality of connected communication networks. The communication network 1404 may include the internet and/or one or more private business networks, such as a cellular network, a WiFi hotspot, and/or an Internet Service Provider (ISP) network, among others.
Figure 14 is a system diagram of an exemplary WTRU. As shown, the exemplary WTRU1500 may include a
The
The transmit/receive
Further, although the transmit/receive
The
The
The
The
The
The WTRU1500 may be configured to transmit and/or receive wireless signals, and may include, by way of example, a User Equipment (UE), a mobile station, a fixed or mobile subscriber unit, a pager, a cellular telephone, a Personal Digital Assistant (PDA), a smartphone, a laptop computer, a netbook, a tablet computer, a personal computer, a wireless sensor, a consumer electronics product, or any other terminal capable of receiving and processing compressed video communications.
The WTRU1500 and/or a communication network (e.g., communication network 804) may implement a radio technology such as Universal Mobile Telecommunications System (UMTS) terrestrial radio access (UTRA), which may establish the
The WTRU1500 and/or a communication network (e.g., communication network 804) may implement radio technologies such as IEEE 802.16 (e.g., Worldwide Interoperability for Microwave Access (WiMAX)), CDMA2000, CDMA 20001X, CDMA2000EV-DO, interim standard 2000(IS-2000), interim standard 95(IS-95), interim standard 856(IS-856), Global System for Mobile communications (GSM), enhanced data rates for GSM evolution (EDGE), GSM EDGE (GERAN), and so forth. The WTRU1500 and/or a communication network (e.g., communication network 804) may implement a radio technology such as IEEE 802.11, IEEE 802.15, or the like.
Note that the various hardware elements of one or more of the described embodiments are referred to as "modules," which perform (i.e., execute, carry out, etc.) the various functions described herein in connection with the respective modules. As used herein, a module includes hardware (e.g., one or more processors, one or more microprocessors, one or more microcontrollers, one or more microchips, one or more Application Specific Integrated Circuits (ASICs), one or more Field Programmable Gate Arrays (FPGAs), one or more memory devices) as deemed appropriate by one of ordinary skill in the relevant art for a given implementation. Each described module may also include instructions executable to perform one or more functions described as being performed by the respective module, and it is noted that these instructions may take the form of or include hardware (i.e., hardwired) instructions, firmware instructions, and/or software instructions, etc., and may be stored in any suitable non-transitory computer-readable medium or media, such as those commonly referred to as RAM, ROM, etc.
Although features and elements are described above in particular combinations or sequences, one of ordinary skill in the art will recognize that each feature or element can be used alone or in any combination with the other features and elements. Furthermore, the methods described herein may be implemented in a computer program, software, or firmware incorporated in a computer-readable medium for execution by a computer or processor. Examples of computer readable storage media include, but are not limited to, read-only memory (ROM), random-access memory (RAM), registers, cache memory, semiconductor memory devices, magnetic media such as internal hard disks and removable disks, magneto-optical media, and optical media such as CD-ROM disks and Digital Versatile Disks (DVDs). A processor in association with software may be used to implement a radio frequency transceiver for use in a WTRU, UE, terminal, base station, RNC, or any host computer.
- 上一篇:一种医用注射器针头装配设备
- 下一篇:选择性环路滤波下的图像编码的装置及方法