Method and apparatus for video encoding and decoding using dual prediction
By adopting the weighted double prediction method and optimized motion vector storage in video encoding, the problem of insufficient computational complexity and accuracy of the inter-frame encoding block double prediction process is solved, and the efficiency and compression performance of video encoding are improved.
Patent Information
- Application Number
- CN202411538630.4
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2018-09-21
- Filing Date
- 2019-09-18
- Publication Date
- 2024-12-31
AI Technical Summary
In the existing video encoding technology, the double prediction process of inter-frame encoding blocks is complex and inefficient, especially in triangular partitioning and motion vector storage, there are problems such as large amount of calculation and insufficient accuracy.
Using a weighted double prediction method, the predicted value of the block is obtained through the first and second reference pictures and used as the weighted average to form the third predicted value. The weight depends on the position of the sample in the block, simplifying the edge of the triangle partition. Weighting processing and optimization of motion vector storage and signaling.
It improves the dual prediction accuracy and efficiency of inter-frame encoding blocks, reduces the computational complexity, improves the storage and signaling costs of motion vectors, and improves the compression performance of video encoding.
Smart Images

Figure CN119232926A_ABST
Abstract
Description
[0001] This application is a divisional application of Chinese Patent Application No. 201980060122.0, filed on September 18, 2019, entitled “Method and Device for Video Encoding and Decoding Using Dual Prediction”, and the contents of the parent application are incorporated herein by reference. Technical Field
[0002] A method and apparatus for encoding a video into a bitstream are disclosed. A corresponding decoding method and apparatus are also disclosed. At least some embodiments further relate to bi-prediction of inter-coded blocks in a video compression scheme. Background Art
[0003] The technical field of one or more implementations mainly relates to video compression. In order to achieve high compression efficiency, image and video coding schemes generally use prediction and transformation to exploit spatial and temporal redundancy in video content. Typically, intra-frame or inter-frame prediction is used to exploit intra-frame or inter-frame correlation, and then the difference between the original block and the predicted block (which is generally expressed as a prediction error or prediction residual) is transformed, quantized and entropy encoded. In order to reconstruct the video, the compressed data is decoded by an inverse process corresponding to the entropy encoding, quantization, transformation and prediction. In the HEVC video compression standard (also referred to as Recommendation ITU-TH.265), the dual prediction process used in inter-frame prediction includes averaging 2 unidirectional prediction signals. Figure 1 The dual prediction process in HEVC is shown. Figure 1 As shown, the average of the two unidirectional predictions is performed with a higher precision than the input bit depth or the internal bit depth. The bi-prediction formula is shown in Equation 1, where the offset and shift are used to normalize the final prediction value (predictor) to the input bit depth:
[0004] P bidir =(P L0 +P L1 +offset)>>shift Equation 1
[0005] The HEVC interpolation filter allows certain implementation optimizations since there is no rounding in the intermediate stages.
[0006] The latest additions to video compression technology include various industry standards, various versions of reference software and / or documents, such as the Joint Exploration Model (JEM) developed by the JVET (Joint Video Exploration Team) group and the later VTM (Versatile Video Coding (VVC) Test Model). The goal is to further improve the existing HEVC (High Efficiency Video Coding) standard. For example, in more recent approaches to video codecs, multiple weights are used to average 2 unidirectional predictions to obtain bidirectional predictions. Typically, the weights used are {-1 / 4, 5 / 4}, {3 / 8, 5 / 8} or {1 / 2, 1 / 2} ({1 / 2, 1 / 2} are the weights implemented in HEVC), and the dual prediction formula is modified as in Equation 2. Only one weight is used for the entire block.
[0007] P bidir =((1-w1)*P L0 +w1*P L1 +offset)>>shift Equation 2
[0008] In another approach in video codecs, triangle prediction is used in merge mode. Figure 2 FIG. 4 shows the division of the coding unit CU into two triangular prediction units. Figure 2 As shown in , the CU is partitioned into two triangular prediction units PU0 and PU1 in the diagonal or anti-diagonal direction along the diagonal edge. Each triangular prediction unit in the CU is inter-predicted using its own motion vector and a reference frame index derived from a merge candidate list. In this context, an adaptive weighting process is applied to the diagonal or anti-diagonal edge between the two triangular prediction units to derive the final prediction for the entire CU. Figure 3The weighting process for the diagonal edge between the two triangular prediction units is shown. The triangular prediction unit mode is only applied to CUs in skip or merge mode. When the triangular prediction unit mode is applied to the CU, an index indicating the direction of splitting the CU into two triangular prediction units and the motion vectors of the two triangular prediction units are signaled. For two prediction units, a common list with 5 unidirectional prediction values can be derived, checking the same spatial and temporal positions as in the classic merge process, but only using unidirectional vectors. If there are not enough candidates, the redundant motion vector is not added to the list, and a zero motion vector is added at the end of the list. For a given prediction unit, the number of motion vector prediction values is 5, and for each diagonal, 20 combinations are tested (5*4=20, the same motion vector prediction value cannot be used for two PUs). The index ranges from 0 to 39, and see Table 2, the lookup table is used to derive the split direction and motion vector of each PU from the index. The first element of a given triple gives the diagonal direction, and the second and third elements give the prediction value indexes for PU0 and PU1, respectively. The index syntax is shown in Table 1.
[0009]
[0010] Table 1: Triangle partitions and corresponding merge index syntax
[0011]
[0012] Table 2: Lookup table for determining diagonal direction and predicted values
[0013] Figure 4 1 shows the storage of sub-block motion vectors for triangle partitions according to a particular compression scheme. In one implementation, motion vectors are stored for each 4×4 sub-block. When triangle partitions are used for a CU, the motion vectors for each partition are stored in the same way for each sub-block, but for sub-blocks on the edge, only the motion vectors from one PU are stored, as Figure 4 as shown in .
[0014] The combination of bi-prediction and triangular partitioning of inter-coded blocks raises implementation issues. Therefore, a less computational approach for bi-prediction is needed. Therefore, several embodiments are disclosed to improve bi-prediction for inter-coded blocks. Summary of the invention
[0015] According to one aspect of the present disclosure, a method for encoding a picture is disclosed. This method includes: obtaining a first prediction value of a block of the picture using a first reference picture; obtaining a second prediction value of the block of the picture using a second reference picture; using the first prediction value and the second prediction value to form a third prediction value of the block of the picture for bi-predictive inter-frame prediction, wherein the third prediction value is obtained as a weighted average of the first prediction value and the second prediction value; and wherein the samples of the third prediction value are obtained by applying a first weight to the samples of the first prediction value and by applying a second weight to the samples of the second prediction value; the samples of the third prediction value, the samples of the first prediction value, and the samples of the second prediction value share the same position in the block; and the first weight and the second weight depend on the position of the sample in the block.
[0016] According to another aspect of the present disclosure, a device for encoding a picture is disclosed. A device for obtaining a first prediction value of a block of the picture using a first reference picture; a device for obtaining a second prediction value of the block of the picture using a second reference picture; a device for forming a third prediction value of the block of the picture in a bi-predictive inter-frame prediction using the first prediction value and the second prediction value, wherein the third prediction value is obtained as a weighted average of the first prediction value and the second prediction value; and wherein samples of the third prediction value are obtained by applying a first weight to samples of the first prediction value and by applying a second weight to samples of the second prediction value; the samples of the third prediction value, the samples of the first prediction value, and the samples of the second prediction value share the same position in the block; and the first weight and the second weight depend on the position of the sample in the block. .
[0017] According to one aspect of the present disclosure, a device for encoding a picture is provided, the device comprising a processor and at least one memory coupled to the processor, the processor being configured to implement any variation of the encoding method.
[0018] According to another aspect of the present disclosure, a method for decoding a video is disclosed. The method includes: receiving encoded video data in a bitstream, and for motion compensation, obtaining a first prediction value of a block of the picture using a first reference picture; obtaining a second prediction value of the block of the picture using a second reference picture; using the first prediction value and the second prediction value to form a third prediction value of the block of the picture for bi-predictive inter-frame prediction, wherein the third prediction value is obtained as a weighted average of the first prediction value and the second prediction value; and wherein the samples of the third prediction value are obtained by applying a first weight to the samples of the first prediction value and by applying a second weight to the samples of the second prediction value; the samples of the third prediction value, the samples of the first prediction value, and the samples of the second prediction value share the same position in the block; and wherein the first weight and the second weight depend on the position of the sample in the block.
[0019] According to another aspect of the present disclosure, a device for decoding a video is disclosed. The device includes: a device for receiving encoded video data in a bitstream and a device for processing motion compensation, the device for processing motion compensation further including a device for obtaining a first prediction value of a block of a picture using a first reference picture; a device for obtaining a second prediction value of the block of the picture using a second reference picture; a device for forming a third prediction value of the block of the picture in a bi-predictive inter-frame prediction using the first prediction value and the second prediction value, wherein the third prediction value is obtained as a weighted average of the first prediction value and the second prediction value; wherein the samples of the third prediction value are obtained by applying a first weight to the samples of the first prediction value and by applying a second weight to the samples of the second prediction value; the samples of the third prediction value, the samples of the first prediction value, and the samples of the second prediction value share the same position in the block; and wherein the first weight and the second weight depend on the position of the samples in the block.
[0020] According to one aspect of the present disclosure, there is provided an apparatus for decoding a video, the apparatus comprising a processor and at least one memory coupled to the processor, the processor being configured to receive encoded video data in a bitstream and implement any variation of the decoding method.
[0021] The present disclosure also provides a signal, the signal comprising video data generated by the method or apparatus according to any one of the above descriptions. The embodiment of the present invention also provides a computer program product comprising instructions, when executed by a computer, the instructions cause the computer to perform the described method.
[0022] The present disclosure also provides a computer-readable storage medium on which a bit stream generated according to the above method is stored. The present disclosure also provides a method and apparatus for transmitting a bit stream generated according to the above method.
[0023] A simplified overview of the subject matter is given above in order to provide a basic understanding of some aspects of the subject matter embodiments. This overview is not an exhaustive review of the subject matter. It is not intended to identify the key / important elements of the various embodiments or to describe the scope of the subject matter. Its sole purpose is to present some concepts of the subject matter in a simplified form as a preface to a more detailed description presented later.
[0024] Additional features and advantages of the present disclosure will become apparent from the following detailed description of illustrative embodiments, which proceeds with reference to the accompanying drawings. BRIEF DESCRIPTION OF THE DRAWINGS
[0026] Figure 1 shows the bi-prediction process according to the HEVC standard;
[0027] Figure 2 shows the partitioning of the coding unit CU into two triangular prediction units according to a specific compression scheme;
[0028] Figure 3 shows the weighting process of the diagonal edge between two triangle prediction units according to a particular compression scheme;
[0029] Figure 4 shows sub-block motion vector storage for triangle partitions according to a particular compression scheme;
[0030] Figure 5 shows a motion compensation process for bi-predicted triangle partitions according to a particular compression scheme;
[0031] Figure 6 A motion compensation process for uni-predicted triangle partitions according to a particular compression scheme is shown;
[0032] Figure 7 An example of a modified motion compensation process suitable for triangle prediction according to an embodiment of the present invention is shown;
[0033] Figure 8 shows examples of multiple diagonal patterns according to embodiments of the present disclosure;
[0034] Fig. 9 and Fig.10 Other examples of multiple patterns according to embodiments of the present invention are shown;
[0035] Fig.11 An embodiment of the proposed motion vector storage is shown;
[0036] Fig.12 An exemplary encoder according to an embodiment of the present disclosure is shown;
[0037] Fig.13 An exemplary decoder according to an embodiment of the present disclosure is shown;
[0038] Fig.14 A block diagram illustrating an example of a system in which various aspects and embodiments are implemented;
[0039] Fig.15 The weighted bi-prediction implemented in any one of the decoding method or the encoding method according to an embodiment of the present disclosure is shown. DETAILED DESCRIPTION
[0040] It should be understood that the drawings and descriptions have been simplified to illustrate the elements relevant to a clear understanding of the present principles, while for clarity, many other elements present in typical encoding and / or decoding devices have been removed. It should be understood that although the terms first and second may be used to describe various elements in this article, these elements should not be limited by these terms. These terms are only used to distinguish one element from another element.
[0041] Various embodiments are described with respect to encoding / decoding of pictures. They may be applied to encoding / decoding a portion of a picture (such as a slice or tile), or an entire sequence of pictures.
[0042] Various methods are described above, and each method includes one or more steps or actions for implementing the described method. Unless a specific order of steps or actions is required for the correct operation of the method, the order and / or use of specific steps and / or actions may be modified or combined.
[0043] At least some embodiments relate to methods for video encoding or video decoding including weighted bi-prediction, wherein the weights of the weighted bi-prediction depend on the positions of samples in blocks of a picture of the encoded or decoded video.
[0044] The first problem with weighted motion compensation for bi-predicted triangle partitions is that each PU is bi-predicted and thus involves weighted processing on the edges between the 2 predictions. Figure 5 The motion compensation process for a bi-predicted triangle partition is shown. Figure 3 The samples on the edge are shown, such as Figure 5 As shown, four motion compensations are required. Therefore, a method with less computation is needed.
[0045] A first solution has been proposed which restricts the triangle PU to be uni-predicted to reduce the memory bandwidth. Figure 6The motion compensation process for a single prediction triangle partition is shown. In this case, the motion compensation process is simplified as Figure 6 As shown, however, this solution can still benefit from improvements regarding the accuracy of the process.At least one embodiment is directed to improving the accuracy of the bi-prediction process for inter-coded blocks.
[0046] In the enhancement of bi-predictive triangle partitions, there is a need to improve compression efficiency by adding more patterns. Then, a second problem of weighted motion compensation for bi-predictive partitions is to signal the added modes without the large cost of encoding the index about the combination of partition and motion vector. At least one embodiment is directed to improving the signaling of the bi-prediction process for inter-coded blocks.
[0047] A third problem is the storage of motion vectors for each PU in a sub-block on an edge. For samples on an edge, weighting is done between 2 predictions, which means that at least 2 motion vectors are used to predict the sample, but only the motion vector used to predict the current PU is stored in memory, which may result in suboptimal motion propagation with neighboring blocks. At least one embodiment is directed to improving the storage of motion vectors for the bi-prediction process of inter-coded blocks.
[0048] Therefore, several embodiments are disclosed to improve bi-prediction of inter-coded blocks.
[0049] General Examples
[0050] At least one embodiment of the general method of weighted bi-prediction 1500 is described in Fig.15 . A person skilled in the art may easily implement such a method in any of the motion compensation processes of a video encoding method or a video decoding method, wherein the acquisition of the input information may be determined in the RDO loop in the encoding method or decoded from the received data in the decoder. According to the present principles, the weights of the weighted bi-prediction depend on the positions of the samples in the blocks of the picture of the encoded or decoded video. Therefore, the processing of the triangular partitioning is advantageously performed as a weighted prediction and results in an increased accuracy of the bi-prediction process for inter-coded blocks, as explained later.
[0051] First, in Fig.15 At 1510, for a block of a picture to be encoded / decoded, a first prediction value and a second prediction value are obtained. The first prediction value for the block uses a first reference picture stored in list L0, and the second prediction value for the block uses a second reference picture stored in list L1. The two unidirectional prediction values are combined to form a third prediction value through bidirectional inter-frame prediction.
[0052] According to different embodiments described hereinafter, at 1520, at least one information for determining a position-dependent weight is obtained. This step is optional. According to a non-limiting embodiment, the first information indicates that the block of the picture is partitioned by triangular partitions, the second information indicates the direction of the edge of the triangular partition of the block, and the third information indicates the position of the edge of the triangular partition. According to another embodiment, the partitioning of the block is not limited to triangular partitions, and as Fig. 9 It is shown that the block is more generally divided into 2 partitions along the edge. Then, the information used to determine the position-dependent weights is information indicating that the block of the picture is divided using edge partitions. According to a non-limiting embodiment, the fourth information indicates whether the edge of the so-called "triangle partition" is vertical or horizontal (rather than diagonal). According to another embodiment, the information used in determining the position-dependent weights is information related to the color components. If the block is a luminance block or a chrominance block, the number of samples in the block can be different, so the weights are also determined according to the color components. In addition to this, the weights are also determined according to the size of the block. According to another embodiment, the position-dependent weights in dual prediction are not limited to triangles or edge partitions, so the information is more generally any information used when determining the position-dependent weights.
[0053] As previously described, in a particular embodiment, multiple weights are used to average two unidirectional predictions to obtain a bidirectional prediction. According to non-limiting examples, the weights used are {-1 / 4, 5 / 4}, {3 / 8, 5 / 8} or {1 / 2, 1 / 2}, where only one pair of weights is used for the entire block. The principles of the present invention are advantageously compatible with selecting block-based weights in a weight set, where the position-dependent weights of the samples are derived from the selected block-based weights. In other words, the weight of the sample is determined based on the selected block-based weights of the position and predicted value of the sample. Therefore, at 1530, optionally, in a weight set, the selected block-based weights are determined.
[0054] At 1540, position-dependent weights of the samples in the block are determined. According to a specific embodiment, the position-dependent weights of the samples in the block are further derived from at least one of the obtained information, the selected block-based weights, the components of the block, the size of the block. The samples of the third prediction value are obtained by applying the first weight to the samples of the first prediction value and by applying the second weight to the samples of the second prediction value. Thus, the first and second weights are determined according to the positions of the samples in the block. The samples of the third prediction value, the samples of the first prediction value and the samples of the second prediction value share the same position in the block, and these samples are co-located in the block.
[0055] According to an embodiment, position-dependent weighted bidirectional inter-frame prediction is used for triangle prediction. Since each triangle prediction unit is limited to single prediction, the triangle prediction is implemented as a dual prediction, where the first weight and the second weight depend on the sample position. In the case of a triangle partition, the first weight and the second weight depend on the distance between the sample and the edge of the triangle partition of the block. However, the present principle is not limited to triangle partitions and can be easily extended to other partitions of the block, including horizontal / vertical edges and including multiple patterns. Different variants and improvements are described below. The position of the edge in the block used to calculate the weight is obtained from at least one information indicating that the block is divided into 2 partitions. In addition, in one variant, the at least one information is sent with a signal to allow a decoding method corresponding to the encoding method to use the same information for dual prediction. For example, in the encoding method, the at least one information sent with a signal is entropy encoded. For example, in the decoding method, the at least one information is obtained from the entropy decoding of the information sent with the signal.
[0056] However, position-dependent weights in bi-prediction are not limited to triangle or edge partitions. For example, the inventive concept is also compatible with avec combined intra-inter prediction (where weights depend on sample positions without other partitions).
[0057] Once the sample dependent weights are obtained, at 1550, the bi-prediction process is processed. The third prediction value (also referred to as the bi-prediction value) is obtained as a weighted average of the first prediction value and the second prediction value. Advantageously, the weighted average is processed at an increased bit depth compared to the bit depth of the prediction values. Then, at 1560, the weighted average at the larger bit depth is shifted and clipped to obtain the third prediction value at the same bit depth as the first and second prediction values.
[0058] At 1570, the bi-prediction ends, and the third prediction value of the image block for encoding or decoding is output.
[0059] Example 1
[0060] Thus, at least one embodiment of an encoding or decoding method involves weighting samples on the edges of triangle partitions with increased precision. Figure 7 An example of a modified motion compensation process for triangular prediction according to an embodiment is shown. Since each triangular prediction unit is limited to uni-prediction, bi-prediction with sample position dependent weighting factors is processed to obtain triangular prediction. This modified motion compensation process is used Figure 3 and Figure 4This is achieved by using the position-dependent weights shown in the figure, in which the weight used to average the two single predictions P1 and P2 can be different for each sample. The weight depends on the distance between the current sample S0, S1, S2 or S3 and the edge between the two triangles PUS P1 and P2. For example, for sample S0 on the edge of the partition, the first weight W1 is equal to 4 / 8 and the second weight W2 is equal to 4 / 8. For example, for sample S1 far away from the edge of the partition, the first weight W1 is equal to 1 / 8 and the second weight W2 is equal to 7 / 8. On the contrary, for sample S2 at the same distance from the edge of the partition, the first weight W1 is equal to 7 / 8 and the second weight W2 is equal to 1 / 8. Moreover, when the distance between sample S3 and the edge of the partition is above a limit value, the first weight W1 is equal to 8 / 8 and the second weight W2 is equal to 0 / 8. As Figure 7 As shown, advantageously, the shift to the input bit depth and the cropping are postponed until after the samples are weighted, thereby facilitating the extended precision. In this embodiment, the first information indicates that the blocks of the picture are segmented using triangular partitioning, for example according to Figure 3 For example, a special syntax (such as triangle_flag) is used to indicate the triangular partitioning of the block. When the size of the luminance component is NxN (for example, Figure 3 In a block with N=8 in FIG. 1 , the weight W1 at the position (x, y) in the block is obtained, for example, by the following (x and y are in the range [0, N-1]):
[0061] W1=(Clip(0,8,(xy)+4) and W2=8-W1
[0062] The resulting weights are in the range [0-8], thus obtaining increased precision of the weighted sum, and a shift and crop operation is then performed to reduce the bit depth to the bit depth of the third prediction value. Figure 3 As shown, the weight W1 at position (x, y) is different for the chrominance components.
[0063] Example 2
[0064] At least one embodiment of the encoding or decoding method further involves weighting samples on the edges of triangular partitions suitable for multiple partition patterns. Advantageously, information indicating the arrangement of the multiple partition patterns is used to determine the edges in the blocks of the different partition patterns. Thus, the position, e.g. the distance, of the samples in the blocks relative to the edges is determined. Figure 8An example of multiple diagonal patterns according to an embodiment is shown. It is expected that such multiple diagonal patterns (where 2 (TL2BR or TR2BL) or more (TL2BR_1_4, TL2BR_3_4, TR2BL_1_4, TR2BL_3_4) patterns are defined) will improve coding efficiency. For example, Figure 8 As shown, the diagonal line may be shifted (shifted by 1 / 4 or 3 / 4) or rotated (upper left to lower right TL2BR or upper right to lower left TR2BL).
[0065] At least one embodiment relates to dual prediction with multiple partitions (e.g., triangular partitions). According to the variation characteristics, the encoding of the multiple patterns and the index of the motion vector prediction value is separate. In fact, if the index from Figure 8 If the 6 patterns of are implemented as bi-predicted triangle partitions, then 6*20=180 combinations will have to be tested at the encoder. Various encoder acceleration implementations are described below in variations of Embodiment 5.
[0066] Therefore, a dedicated syntax is described that separates the signaling of the pattern using the syntax elements diagonal_dir[x0][y0], diagonal_pos[x0][y0] from the signaling of the motion vector index in the motion vector candidate list most_probable_idx. Therefore, the second information indicating the direction of the edge of the triangular partition of the block is the diagonal_dir[x0][y0] syntax element, and the third information indicating the position of the edge of the triangular partition is the diagonal_pos[x0][y0] syntax element. Such syntax elements are entropy coded, respectively decoded, and binarization is proposed in Tables 4 and 5.
[0067]
[0068]
[0069] Table 3: Modified syntax for multiple patterns
[0070] diagonal_dir[x0][y0] specifies the direction of the diagonal separating the two prediction units of the block, where x0, y0 specify the position (x0, y0) of the top left luma sample of the considered prediction block relative to the top left luma sample of the picture. Figure 2 and Figure 8 Examples of various diagonal directions are shown in .
[0071]
[0072] Table 4: Binarization of the diagonal_dir syntax element
[0073] diagonal_pos[x0][y0] specifies the position of the diagonal line separating the two prediction units of the block, where x0, y0 specify the position (x0, y0) of the top left luma sample of the considered prediction block relative to the top left luma sample of the picture. Figure 8 Examples of various diagonal positions are shown.
[0074]
[0075] Table 5: Binarization of the diagonal_pos syntax element
[0076] Example 3
[0077] In another variation, other edges may be used as horizontal, vertical, or edges from the corners to the middle of the block, such as Fig. 9 and 10 For example, Fig. 9 Additional patterns are shown where the edge is either horizontal (HOR, HOR_1_4, HOR_3_4) or vertical (VER, VER_1_4, VER_3_4) and located in the middle (HOR, VER) or quarter (HOR_1_4, HOR_3_4, VER_1_4, VER_3_4) of the block. Fig.10 Additional patterns are shown where the edge starts at a corner of a block and ends in the middle of the block. Of course, partitioning along edges compatible with the principles of the present invention is not limited to the patterns described, and those skilled in the art will readily apply the modified motion compensation process using position-dependent weighting factors to other partitioning patterns. According to the present embodiment, the syntax is modified to add a new pattern as shown in Table 6.
[0078]
[0079] Table 6: Proposed syntax for diagonal plus horizontal and vertical partitioning
[0080] In another variation, a syntax element is encoded that indicates a further weight to be applied to the averaging over the edges.
[0081] Example 4
[0082] At least one embodiment is also suitable for storing motion vectors on the edges of partitions. In classic inter mode, when bi-prediction is used, 2 motion vectors (1 in each list) are stored in a 4×4 sub-block. In triangle mode merging, in a variation where each PU is restricted to uni-prediction, such as Fig.11The 2 motion vectors used on the edge shown in are advantageously stored in 2 corresponding lists. Therefore, the method can be implemented without additional costs. In combination with equation 2, motion vectors can be stored with given weights w0 and w1 of motion vectors from list 0 and list 1, respectively, which allows better propagation of motion vectors and therefore better prediction for neighboring blocks.
[0083] Variation of Example 5
[0084] Embodiment 5 relates to encoder acceleration for motion compensation. At the encoder, when more patterns are used, the maximum number of test combinations increases a lot, because for a given pattern, 20 combinations of motion vector prediction values are used. For any combination, averaging is processed to evaluate the candidate. At least one embodiment relates to reducing the number of test combinations. According to one feature, only the best prediction value is subjected to RDOQ (rate distortion optimized quantization) processing by using a fast estimate of SATD (sum of absolute transform differences).
[0085] In a first variant, combinations using zero motion vector predictors added at the end of the list are not tested. For example, in the case where predictors 4, 5 of the list are appended zero motion vectors, only 3*2=6 combinations are tested for a given pattern instead of 20. In the case of 6 patterns, 6*6=36 combinations are tested instead of 6*20=240.
[0086] In a second variant, combinations using motion vectors selected in the classic merge are tested, while other combinations are not tested. First, the best merge candidate for the classic merge is determined. Then one or two motion vectors are restored depending on whether the best candidate is unidirectional or bidirectional. If these motion vectors are in the list of motion vector predictors for the triangle PU, then the tests on possible combinations are reduced to tests on combinations containing these motion vector predictors.
[0087] In a third variant, the motion vector prediction values are sorted using SAD or SATD. Since all combinations are made using a maximum of 5 motion vector prediction values, SAD or SATD is used to sort them according to the likelihood of all 5 unidirectional motion vector prediction values. The N (N < 5) best motion vectors are kept, or prediction values greater than a threshold are removed. Thus, the number of possible combinations is reduced.
[0088] Additional Examples and Information
[0089] The present application describes a number of aspects, including tools, features, embodiments, models, methods, etc. Many of these aspects are described as having specificity, and at least in order to illustrate individual characteristics, are usually described in a manner that may sound limited. However, this is for the purpose of describing clearly, and does not limit the application or scope of those aspects. In fact, all different aspects can be combined and interchanged to provide other aspects. In addition, these aspects can also be combined and interchanged with the aspects described in earlier documents.
[0090] The aspects described and contemplated in this application can be implemented in many different forms. Fig.12 , 13 14 provide some embodiments, but other embodiments are contemplated and are Fig.12 , 13 The discussion of 14 does not limit the breadth of implementation. At least one of the aspects is generally related to video encoding and decoding, and at least one other aspect is generally related to transmitting the generated or encoded bitstream. These and other aspects can be implemented as methods, devices, computer-readable storage media having stored thereon instructions for encoding or decoding video data according to any of the described methods, and / or computer-readable storage media having stored thereon bitstreams generated according to any of the described methods.
[0091] In this application, the terms "reconstruction" and "decoding" are used interchangeably, the terms "pixel" and "sample" are used interchangeably, and the terms "image", "picture" and "frame" are used interchangeably. Usually, but not necessarily, the term "reconstruction" is used on the encoder side, while "decoding" is used on the decoder side.
[0092] Various methods are described herein, and each method includes one or more steps or actions for implementing the described method. Unless a specific order of steps or actions is required for the correct operation of the method, the order and / or use of specific steps and / or actions may be modified or combined.
[0093] Various methods and other aspects described in this application can be used to modify modules, e.g. Fig.12 The entropy coding 145, motion compensation 170 and motion estimation 175 of the video encoder 100 are shown as well as Fig.13 The entropy decoding 230 and motion compensation 275 modules of the video decoder 200 are shown. In addition, the present invention is not limited to VVC or HEVC, and can be applied to, for example, other standards and proposals (whether pre-existing or developed in the future) and extensions of any such standards and proposals (including VVC and HEVC). Unless otherwise specified or technically excluded, the aspects described in this application can be used alone or in combination.
[0094] Various numerical values are used in this application, such as the number of partitions or the value of relative weights. The specific values are for example purposes, and the described aspects are not limited to these specific values.
[0095] Fig.12 An encoder 100 is shown. Variations of the encoder 100 are contemplated, but for the sake of clarity, the encoder 100 is described below without describing all contemplated variations.
[0096] Before being encoded, the video sequence may undergo a pre-encoding process (101), for example, applying a color transform to the input color picture (e.g., conversion from RGB 4:4:4 to YCbCr 4:2:0), or performing a remapping of the input picture components in order to obtain a signal distribution that is more resilient to compression (e.g., using histogram equalization of one of the color components). Metadata may be associated with the pre-processing and appended to the bitstream.
[0097] In encoder 100, a picture is encoded by encoder elements as described below. The picture to be encoded is partitioned (102) and processed in units such as CUs. Each unit is encoded using, for example, intra or inter mode. When the unit is encoded in intra mode, it performs intra prediction (160). In inter mode, motion estimation (175) and compensation (170) are performed. The encoder decides (105) which of intra mode or inter mode to use to encode the unit, and indicates the intra / inter decision by, for example, a prediction mode flag. For example, a prediction residual is calculated by subtracting (110) the prediction block from the original image block.
[0098] The prediction residual is then transformed (125) and quantized (130). The quantized transform coefficients, as well as motion vectors and other syntax elements, are entropy encoded (145) to output a bitstream. The encoder may skip the transform and apply quantization directly to the untransformed residual signal. The encoder may bypass both transform and quantization, i.e., directly encode the residual without applying the transform or quantization process.
[0099] The encoder decodes the coded block to provide a reference for further prediction. The quantized transform coefficients are dequantized (140) and inverse transformed (150) to decode the prediction residual. The decoded prediction residual and the prediction block are combined (155) to reconstruct the image block. An in-loop filter (165) is applied to the reconstructed picture to perform, for example, deblocking / SAO (sample adaptive offset) filtering to reduce coding artifacts. The filtered image is stored in a reference picture buffer (180).
[0100] Fig.132 shows a block diagram of a video decoder 200. In the decoder 200, a bitstream is decoded by decoder elements as described below. The video decoder 200 generally performs the same operations as described below. Fig.13 The encoding process described in 1 is a decoding process that is the inverse of the encoding process described in 1. The encoder 100 also typically performs video decoding as part of encoding the video data.
[0101] In particular, the input to the decoder comprises a video bitstream, which may be generated by the video encoder 100. The bitstream is first entropy decoded (230) to obtain transform coefficients, motion vectors and other encoding information. Picture partition information indicates how the picture is partitioned. The decoder may therefore partition (235) the picture according to the decoded picture partition information. The transform coefficients are dequantized (240) and inverse transformed (250) to decode the prediction residual. The decoded prediction residual is combined (255) with a prediction block to reconstruct the image block. The prediction block may be obtained (270) from intra-frame prediction (260) or motion compensated prediction (i.e., inter-frame prediction) (275). An in-loop filter (265) is applied to the reconstructed image. The filtered image is stored in a reference picture buffer (280).
[0102] The decoded picture may further undergo post-decoding processing (285), such as an inverse color transform (e.g., conversion from YCbCr 4:2:0 to RGB 4:4:4) or performing an inverse remapping of the remapping process performed in the pre-encoding process (101). The post-decoding processing may use metadata derived in the pre-encoding process and signaled in the bitstream.
[0103] Fig.14 A block diagram of an example of a system in which various aspects and embodiments are implemented is shown. System 1000 can be implemented as a device including various components described below, and is configured to perform one or more aspects described herein. Examples of such devices include, but are not limited to, various electronic devices, such as personal computers, laptop computers, smart phones, tablet computers, digital multimedia set-top boxes, digital television receivers, personal video recording systems, connected household appliances and servers. The elements of system 1000 can be implemented in a single integrated circuit (IC), multiple ICs and / or discrete components individually or in combination. For example, in at least one embodiment, the processing and encoder / decoder elements of system 1000 are distributed on multiple ICs and / or discrete components. In various embodiments, the system 1000 is communicatively coupled to one or more other systems or other electronic devices via, for example, a communication bus or by dedicated input and / or output ports. In various embodiments, the system 1000 is configured to implement one or more aspects described herein.
[0104] The system 1000 includes at least one processor 1010, which is configured to execute instructions loaded therein, for implementing various aspects described herein, for example. The processor 1010 may include embedded memory, input and output interfaces, and various other circuits known in the art. The system 1000 includes at least one memory 1020 (e.g., a volatile memory device and / or a non-volatile memory device). The system 1000 includes a storage device 1040, which may include a non-volatile memory and / or a volatile memory, including but not limited to an electrically erasable programmable read-only memory (EEPROM), a read-only memory (ROM), a programmable read-only memory (PROM), a random access memory (RAM), a dynamic random access memory (DRAM), a static random access memory (SRAM), a flash memory, a disk drive, and / or an optical disk drive. As a non-limiting example, the storage device 1040 may include an internal storage device, an attached storage device (including a removable storage device and a non-removable storage device) and / or a network accessible storage device.
[0105] The system 1000 includes an encoder / decoder module 1030, which is configured to, for example, process data to provide encoded video or decoded video, and the encoder / decoder module 1030 may include its own processor and memory. The encoder / decoder module 1030 represents a module (one or more) that may be included in a device to perform encoding and / or decoding functions. As is known, a device may include one or both of the encoding module and the decoding module. In addition, the encoder / decoder module 1030 may be implemented as a separate element of the system 1000 or may be incorporated into the processor 1010 as a combination of hardware and software as known to those skilled in the art.
[0106] Program code to be loaded onto the processor 1010 or the encoder / decoder 1030 to perform various aspects described in this document may be stored in the storage device 1040 and subsequently loaded onto the memory 1020 for execution by the processor 1010. According to various embodiments, one or more of the processor 1010, the memory 1020, the storage device 1040, and the encoder / decoder module 1030 may store one or more of the various items during the execution of the processes described herein. These stored items may include, but are not limited to, input video, decoded video or portions of the decoded video, bitstreams, matrices, variables, and intermediate or final results from the processing of equations, formulas, operations, and operational logic.
[0107] In some embodiments, memory within the processor 1010 and / or the encoder / decoder module 1030 is used to store instructions and provide working memory for processing required during encoding or decoding. However, in other embodiments, memory external to the processing device (e.g., the processing device may be the processor 1010 or the encoder / decoder module 1030) is used for one or more of these functions. The external memory may be memory 1020 and / or a storage device 1040, such as a dynamic volatile memory and / or a non-volatile flash memory. In several embodiments, the external non-volatile flash memory is used to store, for example, an operating system for a television. In at least one embodiment, a fast external dynamic volatile memory such as RAM is used as working memory for video encoding and decoding operations, such as working memory for MPEG-2 (MPEG refers to Moving Picture Experts Group, MPEG-2 is also known as ISO / IEC 13818, and 13818-1 is also known as H.222, and 13818-2 is also known as H.262), HEVC (HEVC refers to High Efficiency Video Coding, also known as H.265 and MPEG-H Part 2), or VVC (Versatile Video Coding, a new standard developed by Joint Video Team experts JVET).
[0108] As shown in block 1130, input to the elements of system 1000 may be provided through various input devices. Such input devices include, but are not limited to: (i) an RF portion that receives a radio frequency (RF) signal transmitted, for example, over the air by a broadcaster, (ii) a component (COMP) input terminal (or a set of component input terminals), (iii) a universal serial bus (USB) input terminal, and / or (iv) a high-definition multimedia interface (HDMI) input terminal. Fig.10 Other examples not shown include composite video.
[0109] In various embodiments, the input device of block 1130 has associated corresponding input processing elements known in the art. For example, the RF section may be associated with elements suitable for: (i) selecting a desired frequency (also referred to as selecting a signal, or band limiting a signal to a frequency band), (ii) down-converting the selected signal, (iii) again band limiting the frequency band to a narrower frequency band to select a signal frequency band that may be referred to as a channel in some embodiments, (iv) demodulating the down-converted and band-limited signal, (v) performing error correction, and (vi) demultiplexing to select a desired data packet stream. The RF section of various embodiments includes one or more elements to perform these functions, such as a frequency selector, a signal selector, a band limiter, a channel selector, a filter, a down-converter, a demodulator, an error corrector, and a demultiplexer. The RF section may include a tuner that performs various of these functions, including, for example, down-converting a received signal to a lower frequency (e.g., an intermediate frequency or a near-baseband frequency) or baseband. In a set-top box embodiment, the RF part and its relevant input processing element receive the RF signal that sends by wired (for example, cable) medium, and carry out the frequency selection to the desired frequency band by filtering, down-conversion and filtering again.Various embodiments rearrange the order of above-mentioned (and other) elements, remove some in these elements, and / or add other elements that perform similar or different functions.Adding element can include and insert element between existing element, for example insert amplifier and analog-to-digital converter.In various embodiments, the RF part comprises antenna.
[0110] In addition, the USB and / or HDMI terminals may include corresponding interface processors for connecting the system 1000 to other electronic devices via USB and / or HDMI connections. It should be understood that various aspects of input processing (e.g., Solomon error correction) may be implemented as needed, for example, in a separate input processing IC or processor 1010. Similarly, various aspects of USB or HDMI interface processing may be implemented as needed in a separate interface IC or in processor 1010. The demodulated, error-corrected, and demultiplexed streams are provided to various processing elements, including, for example, processor 1010 and encoder / decoder 1030, which operate in conjunction with memory and storage elements to process the data streams as needed for presentation on output devices.
[0111] The various components of system 1000 may be disposed within an integrated housing in which the various components may be interconnected and transmit data using suitable connection arrangements (e.g., internal buses (including inter-IC (I2C) buses), wiring, and printed circuit boards known in the art).
[0112] The system 1000 includes a communication interface 1050 that enables communication with other devices via a communication channel 1060. The communication interface 1050 may include, but is not limited to, a transceiver configured to send and receive data through the communication channel 1060. The communication interface 1050 may include, but is not limited to, a modem or a network card, and the communication channel 1060 may be implemented, for example, within a wired and / or wireless medium.
[0113] In various embodiments, data is streamed or otherwise provided to the system 1000 using a wireless network (e.g., a Wi-Fi network, such as IEEE 802.11 (IEEE refers to the Institute of Electrical and Electronics Engineers)). The Wi-Fi signals of these embodiments are received through a communication channel 1060 and a communication interface 1050 suitable for Wi-Fi communication. The communication channel 1060 of these embodiments is typically connected to an access point or router that provides access to an external network including the Internet to allow streaming applications and other cloud communications. Other embodiments use a set-top box that transmits data through an HDMI connection of an input box 1130 to provide streaming data to the system 1000. Still other embodiments use an RF connection of an input box 1130 to provide streaming data to the system 1000. As described above, various embodiments provide data in a non-streaming manner. In addition, various embodiments use a wireless network other than Wi-Fi, such as a cellular network or a Bluetooth network.
[0114] The system 1000 can provide output signals to various output devices (including a display 1100, a speaker 1110, and other peripheral devices 1120). The display 1100 of various embodiments includes one or more of the following: for example, a touch screen display, an organic light emitting diode (OLED) display, a curved display, and / or a foldable display. The display 1100 can be used for a television, a tablet computer, a laptop computer, a cellular phone (mobile phone), or other devices. The display 1100 can also be integrated with other components (for example, as in a smart phone), or it can be separate (for example, an external monitor for a laptop computer). In various examples of various embodiments, the other peripheral devices 1120 include one or more of the following: a stand-alone digital video disk (or digital versatile disk) (DVR, for both), a disk player, a stereo system, and / or a lighting system. Various embodiments use one or more peripheral devices 1120 that provide functions based on the output of the system 1000. For example, a disk player performs the function of playing the output of the system 1000.
[0115] In various embodiments, control signals are transmitted between the system 1000 and the display 1100, speaker 1110, or other peripheral device 1120 using signaling such as AV.Link, Consumer Electronics Control (CEC), or other communication protocols that enable device-to-device control with or without user intervention. The output devices may be communicatively coupled to the system 1000 via dedicated connections through respective interfaces 1070, 1080, and 1090. Alternatively, the output devices may be connected to the system 1000 via a communication interface 1050 using a communication channel 1060. The display 1100 and speaker 1110 may be integrated into a single unit in an electronic device (e.g., a television) along with other components of the system 1000. In various embodiments, the display interface 1070 includes a display driver, such as a timing controller (T Con) chip.
[0116] For example, if the RF portion of the input 1130 is part of a separate set-top box, the display 1100 and speaker 1110 may alternatively be separate from one or more of the other components. In various embodiments where the display 1100 and speaker 1110 are external components, the output signals may be provided via dedicated output connections, including, for example, an HDMI port, a USB port, or a COMP output.
[0117] These embodiments may be implemented by the processor 1010 or by computer software implemented by hardware or by a combination of hardware and software. As a non-limiting example, the embodiments may be implemented by one or more integrated circuits. The memory 1020 may be of any type suitable for the technical environment and may be implemented using any appropriate data storage technology, such as, as a non-limiting example, optical memory devices, magnetic memory devices, semiconductor-based memory devices, fixed memory, and removable memory. The processor 1010 may be of any type suitable for the technical environment and may include, as a non-limiting example, one or more of the following: a microprocessor, a general-purpose computer, a special-purpose computer, and a processor based on a multi-core architecture.
[0118] Various implementations involve decoding. As used in the present application, "decoding" may include, for example, all or part of the processing performed on the received coded sequence to produce a final output suitable for display. In various embodiments, such processes include one or more of the processes typically performed by a decoder, such as entropy decoding, inverse quantization, inverse transform, and differential decoding. In various embodiments, such processes also or alternatively include processes performed by the decoder of the various embodiments described in the present application, such as decoding a dual prediction flag, decoding a partition for dual prediction and an index in a list of prediction values, determining weights according to the position of pixels in a block (especially along the edges of the partitions of the PU), and performing motion compensation between frames using dual prediction and the determined weights.
[0119] As a further example, in one embodiment, "decoding" refers only to entropy decoding, in another embodiment, "decoding" refers only to differential decoding, and in another embodiment, "decoding" refers to a combination of entropy decoding and differential decoding. Whether the phrase "decoding process" is intended to specifically refer to a subset of operations or to generally refer to a broader decoding process will be clear based on the context of the specific description and is believed to be well understood by those skilled in the art.
[0120] Various implementations involve encoding. In a manner similar to the above discussion of "decoding", "encoding" as used in the present application may include, for example, all or part of a process performed on an input video sequence to produce an encoded bitstream. In various embodiments, such processes include one or more processes typically performed by an encoder, such as partitioning, differential coding, transforming, quantization, and entropy coding. In various embodiments, such processes also or alternatively include processes performed by encoders of various implementations described in the present application, such as determining prediction values in a dual prediction scheme using motion compensation and motion prediction (wherein the weights of the dual predictions are based on the positions of pixels in the block (especially along the edges of the partitions of the PU), performing motion compensation in inter frames using dual predictions, encoding dual prediction flags, encoding partitions for dual predictions, and encoding indexes in a list of prediction values.
[0121] As a further example, in one embodiment, "encoding" refers only to entropy encoding, in another embodiment, "encoding" refers only to differential encoding, and in another embodiment, "encoding" refers to a combination of differential encoding and entropy encoding. Whether the phrase "encoding process" is intended to refer specifically to a subset of operations or generally to a broader encoding process will become clear based on the context of the specific description and is believed to be well understood by those skilled in the art.
[0122] Note that the syntax elements (e.g., diagonal_dir, diagonal_pos, diagonal_flag, partition_dir, partition_pos) as used herein are descriptive terms. Therefore, they do not exclude the use of other syntax element names.
[0123] When a figure is presented as a flow chart, it should be understood that it also provides a block diagram of the corresponding apparatus. Similarly, when a figure is presented as a block diagram, it should be understood that it also provides a flow chart of the corresponding method / process.
[0124] Various embodiments relate to rate-distortion optimization, for example, when testing a combination of dual-prediction multi-partition PUs at an encoder. In particular, during the encoding process, a balance or trade-off between rate and distortion is generally considered, and constraints on computational complexity are generally given. The rate-distortion optimization is generally formulated as minimizing a rate-distortion function, which is a weighted sum of rate and distortion. There are different methods to solve the rate-distortion optimization problem. For example, these methods can be based on extensive testing of all coding options, including all considered modes or coding parameter values, and a complete evaluation of their coding costs and the associated distortion of the reconstructed signal after encoding and decoding. Faster methods can also be used to save coding complexity, in particular, to calculate approximate distortion based on prediction or prediction residual signals rather than reconstructed signals. A mixture of these two methods can also be used, for example, by using approximate distortion only for some possible coding options and full distortion for other coding options. Other methods evaluate only a subset of possible coding options. More generally, many methods employ any of a variety of techniques to perform the optimization, but the optimization is not necessarily a complete evaluation of both coding costs and associated distortions.
[0125] The implementations and aspects described herein can be implemented in, for example, methods or processes, devices, software programs, data streams, or signals. Even if only discussed in the context of a single form of implementation (e.g., discussed only as a method), the implementation of the features discussed can also be implemented in other forms (e.g., devices or programs). For example, the device can be implemented with appropriate hardware, software, and firmware. The method can be implemented in, for example, a processor, which generally refers to a processing device, including, for example, a computer, a microprocessor, an integrated circuit, or a programmable logic device. The processor also includes a communication device, such as a computer, a cellular phone, a portable / personal digital assistant ("PDA"), and other devices that facilitate information communication between end users.
[0126] References to "one embodiment" or "an embodiment" or "an implementation" or "an implementation" and other variations mean that a particular feature, structure, characteristic, etc. described in conjunction with the embodiment is included in at least one embodiment. Thus, the appearances of the phrases "in one embodiment" or "in an embodiment" or "in an implementation" or "in an implementation" and any other variations in various places in this application do not necessarily all refer to the same embodiment.
[0127] Additionally, the present application may refer to “determining” various information. Determining the information may include, for example, one or more of: estimating the information, calculating the information, predicting the information, or retrieving the information from a memory.
[0128] In addition, the present application may involve "accessing" various information. Accessing the information may include, for example, one or more of: receiving the information, retrieving the information (e.g., retrieving the information from a memory), storing the information, moving the information, copying the information, calculating the information, determining the information, predicting the information, or estimating the information.
[0129] Additionally, the present application may refer to "receiving" various information. Like "accessing," receiving is intended to be a broad term. Receiving the information may include, for example, one or more of: accessing the information or retrieving the information (e.g., from a memory). Furthermore, during operations such as storing information, processing information, sending information, moving information, copying information, erasing information, calculating information, determining information, predicting information, or estimating information, "receiving" is generally involved in one way or another.
[0130] It should be understood that, for example, in the case of "A / B," "A and / or B," and "at least one of A and B," the use of any of the following " / ," "and / or," and "at least one of" is intended to encompass selection of only the first listed option (A), or only the second listed option (B), or both options (A and B). As a further example, in the case of "A, B, and / or C" and "at least one of A, B, and C," such wording is intended to include selection of only the first listed option (A), or only the second listed option (B), or only the third listed option (C), or only the first and second listed options (A and B), or only the first and third listed options (A and C), or only the second and third listed options (B and C), or all three options (A and B and C). This can be extended to multiple items listed, as will be apparent to one of ordinary skill in this and related arts.
[0131] In addition, as used herein, the word "signal" especially refers to a corresponding decoder indicating something. For example, in some embodiments, the encoder signals a specific one of the multiple parameters for improved dual prediction, such as the partition and associated weights for signaling the block. In this way, in one embodiment, the same parameters are used on the encoder side and the decoder side. Therefore, for example, the encoder can send (explicitly signal) a specific parameter to the decoder so that the decoder can use the same specific parameter. On the contrary, if the decoder already has the specific parameter and other parameters, signaling can be used without sending (implicitly signaling) to simply allow the decoder to know and select the specific parameter. By avoiding the transmission of any actual function, bit saving is achieved in various embodiments. It should be understood that signaling can be implemented in various ways. For example, in various embodiments, one or more syntax elements, flags, etc. are used to send information to the corresponding decoder with a signal. Although the foregoing relates to the verb form of the word "signal", the word "signal" can also be used as a noun in this article.
[0132] As will be apparent to one of ordinary skill in the art, implementations may generate various signals formatted to carry information that may be stored or transmitted, for example. The information may include, for example, instructions for executing a method, or data generated by one of the described implementations. For example, a signal may be formatted to carry a bitstream of the described embodiments. Such a signal may be formatted as, for example, an electromagnetic wave (e.g., using a radio frequency portion of a spectrum) or a baseband signal. The formatting may include, for example, encoding a data stream and modulating a carrier wave using the encoded data stream. The information carried by the signal may be, for example, analog or digital information. As is known, the signal may be transmitted over a variety of different wired or wireless links. The signal may be stored on a processor readable medium.
[0133] We have described a number of embodiments. Features of these embodiments may be provided individually or in any combination. In addition, across various claim categories and types, embodiments may include one or more of the following features, devices, or aspects, individually or in any combination:
[0134] • Modifying the bi-prediction process applied in the decoder and / or encoder.
[0135] • Applying bi-prediction methods with increased precision in the decoder and / or encoder.
[0136] • Enable several weights in the same PU for bi-prediction methods in the decoder and / or encoder.
[0137] In the decoder and / or encoder, based on the position of the pixel relative to the edge of the partition of the PU,
[0138] The weight in the PU of the bi-prediction method is determined.
[0139] In the decoder and / or encoder, weights in a PU of a bi-prediction method are determined according to the position of a pixel relative to the edges of a plurality of partitions of the PU.
[0140] • Inserting in the signaling syntax elements that enable the decoder to identify the PU partitions for use with the bi-prediction method, and optionally inserting the weights for each pixel.
[0141] - Based on these syntax elements, the partitions and the weights are selected for application of the bi-prediction method at the decoder.
[0142] • Use uni-predictive motion models to combine them into weighted bi-prediction at the encoder and / or decoder according to any of the embodiments discussed.
[0143] • A bitstream or signal comprising one or more of the described syntax elements, or variations thereof.
[0144] • Inserting syntax elements in the signaling that enable the decoder to perform motion compensation in a manner corresponding to that used by the encoder.
[0145] • Creating and / or sending and / or receiving and / or decoding a bitstream or signal comprising one or more of the described syntax elements or variations thereof.
[0146] • A TV, set-top box, cell phone, tablet or other electronic device that performs inter-frame bi-prediction according to any of the described embodiments.
[0147] • A TV, set-top box, cell phone, tablet, or other electronic device that performs inter-frame bi-prediction according to any of the described embodiments and displays (e.g., using a monitor, screen, or other type of display) the resulting image.
[0148] • A TV, set-top box, cellular phone, tablet or other electronic device that tunes (eg, using a tuner) a channel to receive a signal including the encoded image and performs inter-frame bi-prediction according to any of the described embodiments.
[0149] • A TV, set-top box, cellular phone, tablet or other electronic device that receives over the air (eg, using an antenna) a signal comprising an encoded image and performs bi-prediction in the inter parameters according to any of the described embodiments.
Claims
1. A method comprising: Obtaining first information indicating partitioning of blocks of a picture using geometric partitioning; as well as The block of the picture is decoded using a prediction value generated by a geometric partitioning mode.
2. A device comprising: One or more processors, wherein the one or more processors are configured to: Obtaining first information indicating partitioning of blocks of a picture using geometric partitioning; as well as The block of the picture is decoded using a prediction value generated by a geometric partitioning mode.
3. A method comprising: Obtaining first information indicating partitioning of blocks of a picture using geometric partitioning; as well as The block of the picture is encoded using a prediction value generated by a geometric partitioning mode.
4. A device comprising: One or more processors, wherein the one or more processors are configured to: Obtaining first information indicating partitioning of blocks of a picture using geometric partitioning; as well as The block of the picture is encoded using a prediction value generated by a geometric partitioning mode.
