Intra prediction method and apparatus
By adopting the inter-component linear model prediction method in video decoding and using the linear model coefficients of luminance and chrominance blocks for intra-frame prediction, the problem of low efficiency of intra-frame prediction is solved, and the efficiency and image quality of video decoding are improved.
Patent Information
- Application Number
- CN202210926561.9
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2018-10-06
- Filing Date
- 2019-09-30
- Publication Date
- 2025-10-17
- Estimated Expiration
- 2039-09-30
AI Technical Summary
Existing video decoding technology has low intra-frame prediction efficiency under limited bandwidth and storage resources, resulting in decoding errors and image quality degradation.
The inter-component linear model prediction (CCLM) method is adopted to determine the linear model coefficients between the luminance block and the chrominance block, and use the available chrominance reference pixels and luminance reference pixels for intra-frame prediction, which solves the problem that the luminance reference pixels have no corresponding chrominance reference pixels.
The decoding efficiency of video signals is improved, decoding errors are reduced, and image quality is improved.
Smart Images

Figure CN115334303B_ABST
Abstract
Description
[0001] Related Applications
[0002] This application is a divisional application of the original application with the application number 201980065676.X and the original filing date of September 30, 2019, the entire contents of the original application are incorporated herein by reference.
[0003] The original application claims the benefit of U.S. Provisional Patent Application No. 62 / 742,266, filed October 5, 2018, the benefit of U.S. Provisional Patent Application No. 62 / 742,355, filed October 6, 2018, the benefit of U.S. Provisional Patent Application No. 62 / 742,275, filed October 6, 2018, the benefit of U.S. Provisional Patent Application No. 62 / 742,356, filed October 6, 2018. The entire contents of the original application are incorporated herein by reference. TECHNICAL FIELD
[0004] Embodiments of the present disclosure generally relate to the field of video coding, and more particularly to the field of intra prediction using cross-component linear model prediction (CCLM). BACKGROUND
[0005] A large amount of video data needs to be described even for a short video, which can cause a difficulty when the data is to be transmitted in a communication network or other means with limited bandwidth capacity. Therefore, video data is typically compressed before being transmitted in modern telecommunication networks. The size of a video can also be an issue when the video is stored on a storage device, as memory resources can be limited. Video compression devices typically use software and / or hardware at the source to code the video data before transmission or storage, thereby reducing the amount of data needed to represent digital video images. The compressed data is then received at the destination by a video decompression device that decodes the video data. With limited network resources and ever increasing demands of higher video quality, there is a need for improved compression and decompression techniques that improve compression ratios with little to no sacrifice in image quality. High efficiency video coding is the latest video compression technology published by the ISO / IEC Moving Picture Experts Group and ITU-T Video Coding Experts Group, known as ISO / IEC 23008-2 MPEG-H Part 2 or ITU-T H.265, which approximately doubles the data compression ratio at the same level of video quality, or significantly improves the video quality at the same bit rate. SUMMARY
[0006] Examples of the present application provide an intra prediction apparatus and method for encoding and decoding an image, which can improve the efficiency of cross-component linear model prediction (CCLM) and thus improve the coding efficiency of a video signal. The present application is described in detail in the examples and claims in this document.
[0007] The above and other objects are achieved by the subject matter claimed in the independent claims. Further implementation forms are evident from the dependent claims, the description and the figures.
[0008] Particular embodiments are outlined in the independent claims, other embodiments are outlined in the dependent claims.
[0009] According to a first aspect, the present application relates to a method for performing intra prediction using linear model. The method comprises: determining a luma block corresponding to a current chroma block; obtaining luma reference samples of the luma block according to L available chroma reference samples of the current chroma block, wherein the obtained luma reference samples of the luma block are down-sampled luma reference samples; calculating linear model coefficients according to the luma reference samples and chroma reference samples corresponding to the luma reference samples; obtaining a prediction value of the current chroma block according to the linear model coefficients and values of down-sampled luma block of the luma block. The chroma reference samples of the current chroma block include neighboring reconstructed samples of the current chroma block. The L available chroma reference samples are determined from the neighboring reconstructed samples. Similarly, the neighboring samples of the luma block are also neighboring reconstructed samples of the luma block (i.e. neighboring reconstructed luma samples). In one example, the luma reference samples of the luma block are obtained by down-sampling the neighboring reconstructed samples selected according to the available chroma reference samples.
[0010] In the existing method, the availability of the reference pixel points is determined using the luma reference pixel points to determine the linear model coefficients. However, in some scenarios, the available luma reference pixel points do not have corresponding chroma reference pixel points, resulting in coding errors. By checking the availability of the chroma reference pixel points to determine the availability of the reference pixel points, the techniques provided herein solve this problem. In some examples, a chroma reference pixel point is available if the chroma reference pixel point is within a current picture, slice, or tile and the chroma reference pixel point has been reconstructed. In some examples, a chroma reference pixel point is available if the chroma reference pixel point is within a current picture, slice, or tile, the chroma reference pixel point has been reconstructed, and the chroma reference pixel point is not omitted according to an encoding decision, and so on. The available reference pixel points of the current chroma block can be available reconstructed neighboring pixel points of the chroma block. The linear model coefficients are determined using luma reference pixel points corresponding to the available chroma reference pixel points.
[0011] According to the first aspect, in a possible implementation of the method, the determining of the L available chroma reference pixel points comprises: determining that L upper neighboring chroma pixel points of the current chroma block are available, where 1≤L≤W2, W2 represents an upper reference pixel point range, L and W2 are positive integers, and the L upper neighboring chroma pixel points are used as the available chroma reference pixel points.
[0012] According to the first aspect or any preceding implementation of the first aspect, in a possible implementation of the method, W2 is equal to 2×W or W+H, W represents a width of the current chroma block, and H represents a height of the current chroma block.
[0013] According to the first aspect or any preceding implementation of the first aspect, in a possible implementation of the method, the determining of the L available chroma reference pixel points comprises: determining that L left neighboring chroma pixel points of the current chroma block are available, where 1≤L≤H2, H2 represents a left reference pixel point range, L and H2 are positive integers, and the L left neighboring chroma pixel points are used as the available chroma reference pixel points.
[0014] According to the first aspect or any preceding implementation of the first aspect, in a possible implementation of the method, H2 is equal to 2×H or W+H, W represents a width of the current chroma block, and H represents a height of the current chroma block.
[0015] In a possible implementation of the method according to the first aspect or any of the preceding implementations of the first aspect, the determining of the L available chroma reference pixels comprises: determining L1 top neighboring chroma pixels and L2 left neighboring chroma pixels of the current chroma block are available, wherein 1≤L1≤W2, 1≤L2≤H2, W2 represents a top reference pixel range, H2 represents a left reference pixel range, L1, L2, W2 and H2 are positive integers and L1+L2=L, the L1 top neighboring chroma pixels and the L2 left neighboring chroma pixels are used as the available chroma reference pixels.
[0016] In a possible implementation of the method according to the first aspect or any of the preceding implementations of the first aspect, the luminance reference pixels are obtained by downsampling only the neighboring pixels selected according to the L available chroma reference pixels above the luminance block or by downsampling only the neighboring pixels selected according to the L available chroma reference pixels left to the luminance block. For example, if L is equal to 4, the luminance reference pixels are obtained by downsampling 24 neighboring pixels selected according to 4 available chroma reference pixels above the luminance block or by downsampling 24 neighboring pixels selected according to 4 available chroma reference pixels left to the luminance block, wherein a 6-tap filter is used in the downsampling process.
[0017] In a possible implementation of the method according to the first aspect or any of the preceding implementations of the first aspect, the downsampled luminance block of the luminance block is obtained by downsampling a reconstructed luminance block of the luminance block corresponding to the current chroma block.
[0018] In a possible implementation of the method according to the first aspect or any of the preceding implementations of the first aspect, when the luminance reference pixels are obtained only according to the neighboring pixels above the luminance block and when a top row of the current chroma block overlaps with a top row of a current coding tree unit (CTU), only one row of neighboring reconstructed luminance pixels of the reconstructed luminance block of the luminance block is used to obtain the luminance reference pixels.
[0019] In a possible implementation of the method according to the first aspect or any of the preceding implementations of the first aspect, the calculating the linear model coefficients according to the luma reference sample point and the chroma reference sample point corresponding to the luma reference sample point comprises: determining a maximum luma value and a minimum luma value according to the luma reference sample point; obtaining a first chroma value at least partially according to positions of luma reference sample points related to the maximum luma value; obtaining a second chroma value at least partially according to positions of luma reference sample points related to the minimum luma value; and calculating the linear model coefficients according to the first chroma value, the second chroma value, the maximum luma value and the minimum luma value.
[0020] In a possible implementation of the method according to the first aspect or any of the preceding implementations of the first aspect, the obtaining the first chroma value at least partially according to the positions of the luma reference sample points related to the maximum luma value comprises: obtaining the first chroma value at least partially according to one or more positions of one or more luma reference sample points related to the maximum luma value; and the obtaining the second chroma value at least partially according to the positions of the luma reference sample points related to the minimum luma value comprises: obtaining the second chroma value at least partially according to one or more positions of one or more luma reference sample points related to the minimum luma value.
[0021] In a possible implementation of the method according to the first aspect or any of the preceding implementations of the first aspect, the linear model coefficients a and b are calculated according to the following equations:
[0022]
[0023] b = y A - a x A
[0024] wherein x B denotes the maximum luma value, y B denotes the first chroma value, x A denotes the minimum luma value, and y A denotes the second chroma value.
[0025] In a possible implementation of the method according to the first aspect or any of the preceding implementations of the first aspect, the prediction value of the current chroma block is obtained according to the following equation:
[0026] pred C (i, j) = a rec L ′ (i, j) + b,
[0027] wherein predC (i, j) represents the predicted value of the chroma pixel in the current chroma block, rec′ L (i, j) represents the pixel value of the corresponding luminance pixel in the downsampled luminance block of the reconstructed luminance block.
[0028] According to the first aspect or any of the above-mentioned implementations of the first aspect, in one possible implementation of the method, when the luminance reference pixel is obtained only based on the adjacent pixel points on the left side of the luminance block and the current chrominance block is located at the left boundary of the current coding tree unit (CTU), only a column of adjacent reconstructed luminance pixels of the reconstructed luminance block is used to obtain the luminance reference pixel.
[0029] According to the first aspect or any of the above implementations of the first aspect, in a possible implementation of the method, the linear model includes a multi-directional linear model (MDLM).
[0030] According to a second aspect, the present invention relates to a method for performing intra-frame prediction using a linear model. The method comprises: determining a luma block corresponding to a current chroma block; obtaining luma reference pixels of the luma block based on L available chroma reference pixels determined for the current chroma block, wherein the obtained luma reference pixels of the luma block are downsampled luma reference pixels, and the downsampled luma reference pixels are obtained by downsampling adjacent pixels of the luma block corresponding to the L available chroma reference pixels (i.e., adjacent reconstructed luma pixels); calculating linear model coefficients based on the luma reference pixels and the chroma reference pixels corresponding to the luma reference pixels; and obtaining a prediction value of the current chroma block based on the linear model coefficients and the value of the downsampled luma block of the luma block. The chroma reference pixels of the current chroma block include adjacent reconstructed pixels of the current chroma block. The L available chroma reference pixels are determined from the adjacent reconstructed pixels. Similarly, the adjacent pixels of the luma block are also adjacent reconstructed pixels of the luma block (i.e., adjacent reconstructed luma pixels). The luminance reference pixel point of the luminance block is obtained by downsampling the adjacent reconstructed pixel points corresponding to the available chrominance reference pixel points.
[0031] For the "adjacent reconstructed pixel points corresponding to the available chroma reference pixel points", the corresponding relationship between the adjacent reconstructed luma pixel points and the available chroma reference pixel points is not limited to "one-to-one correspondence"; it can also be understood that the corresponding relationship between the adjacent reconstructed luma pixel points and the available chroma reference pixel points can be "M-to-N corresponding relationship". For example, if a 6-tap filter is used for downsampling, M=24 and N=4.
[0032] According to a third aspect, the present application relates to a device for encoding video data. The device comprises a video data memory and a video encoder. The video encoder is configured to determine a luma block corresponding to a current chroma block; obtain luma reference pixel points of the luma block according to (or by) determining L available chroma reference pixel points of the current chroma block, wherein the obtained luma reference pixel points of the luma block are downsampled luma reference pixel points, which are obtained by downsampling adjacent pixel points (i.e. adjacent reconstructed luma pixel points) of the luma block corresponding to the L available chroma reference pixel points; calculate linear model coefficients of a linear model according to the luma reference pixel points and chroma reference pixel points corresponding to the luma reference pixel points; and obtain a prediction value of the current chroma block according to the linear model coefficients and values of a downsampled luma block of the luma block. For example, if L is equal to 4, the luma reference pixel points of the luma block are 4 downsampled luma reference pixel points, which are obtained by downsampling 24 adjacent pixel points of the luma block corresponding to 4 available chroma reference pixel points, wherein a 6-tap filter is used in the downsampling process.
[0033] According to a fourth aspect, the present application relates to a device for decoding video data. The device comprises a video data memory and a video decoder. The video decoder is configured to determine a luma block corresponding to a current chroma block; obtain luma reference pixel points of the luma block according to determining L available chroma reference pixel points of the current chroma block, wherein the obtained luma reference pixel points of the luma block are downsampled luma reference pixel points; calculate linear model coefficients according to the luma reference pixel points and chroma reference pixel points corresponding to the luma reference pixel points; and obtain a prediction value of the current chroma block according to the linear model coefficients and values of a downsampled luma block of the luma block.
[0034] In the existing method, the availability of the pixel points is determined using the luma reference pixel points to determine the linear model coefficients. However, in some scenarios, the available luma reference pixel points do not have corresponding chroma reference pixel points, resulting in coding errors. By checking the availability of the chroma reference pixel points to determine the availability of the reference pixel points, the techniques provided herein solve this problem. In some examples, a chroma reference pixel point is available if the chroma reference pixel point is within the current picture, slice or tile, and the chroma reference pixel point has been reconstructed. In some examples, a chroma reference pixel point is available if the chroma reference pixel point is within the current picture, slice or tile, the chroma reference pixel point has been reconstructed, and the chroma reference pixel point is not omitted according to an encoding decision, and so on. The available chroma reference pixel points of the current chroma block can be available reconstructed neighboring pixel points of the chroma block (i.e., available reconstructed neighboring chroma pixel points). The luma reference pixel points corresponding to the available chroma reference pixel points are used to determine the linear model coefficients.
[0035] According to the third or fourth aspect, in a possible implementation of the device, the determining of the L available chroma reference pixel points comprises: determining L top neighboring chroma pixel points of the current chroma block are available, where 1≤L≤W2, W2 represents a top reference pixel point range, L and W2 are positive integers, and the L top neighboring chroma pixel points are used as the available chroma reference pixel points.
[0036] According to the third or fourth aspect or any preceding implementation of the third or fourth aspect, in a possible implementation of the device, W2 is equal to 2×W or W+H, W represents a width of the current chroma block, and H represents a height of the current chroma block.
[0037] According to the third or fourth aspect or any preceding implementation of the third or fourth aspect, in a possible implementation of the device, the determining of the L available chroma reference pixel points comprises: determining L left neighboring chroma pixel points of the current chroma block are available, where 1≤L≤H2, H2 represents a left reference pixel point range, L and H2 are positive integers, and the L left neighboring chroma pixel points are used as the available chroma reference pixel points.
[0038] According to the third or fourth aspect or any preceding implementation of the third or fourth aspect, in a possible implementation of the device, H2 is equal to 2×H or W+H, W represents a width of the current chroma block, and H represents a height of the current chroma block.
[0039] In a possible implementation of the device according to the third or fourth aspect or any preceding implementation of the third or fourth aspect, the determining the L available chroma reference pixels comprises determining L1 top neighboring chroma pixels and L2 left neighboring chroma pixels of the current chroma block are available, wherein 1≤L1≤W2, 1≤L2≤H2, W2 represents a top reference pixel range, H2 represents a left reference pixel range, L1, L2, W2 and H2 are positive integers and L1+L2=L, the L1 top neighboring chroma pixels and the L2 left neighboring chroma pixels are used as the available chroma reference pixels.
[0040] In an implementation of the device according to the third or fourth aspect or any preceding implementation of the third or fourth aspect, the luminance reference pixels are obtained by downsampling only the neighboring pixels selected according to the L available chroma reference pixels above the luminance block or by downsampling only the neighboring pixels selected according to the L available chroma reference pixels left of the luminance block.
[0041] In a possible implementation of the device according to the third or fourth aspect or any preceding implementation of the third or fourth aspect, the downsampled luminance block of the luminance block is obtained by downsampling the reconstructed luminance block of the luminance block corresponding to the current chroma block.
[0042] In a possible implementation of the device according to the third or fourth aspect or any preceding implementation of the third or fourth aspect, when the luminance reference pixels are obtained only according to the neighboring pixels above the luminance block and when a top row of the current chroma block overlaps a top row of a current coding tree unit (CTU), only one row of neighboring reconstructed luminance pixels of the reconstructed luminance block of the luminance block is used to obtain the luminance reference pixels.
[0043] In a possible implementation of the device according to the third or fourth aspect or any preceding implementation of the third or fourth aspect, the linear model coefficients a and b are calculated according to the following equations:
[0044]
[0045] b = y A - a x A
[0046] wherein x B represents the maximum luminance value, y B represents the first chroma value, x A represents the minimum luminance value, yA representing the second chroma value.
[0047] According to the third or fourth aspect or any of the above-mentioned implementations of the third or fourth aspect, in a possible implementation of the device, the prediction value of the current chroma block is obtained according to the following equation:
[0048] pred C (i,j)=α·rec L ′ (i,j)+β,
[0049] wherein pred C (i,j) represents the prediction value of a chroma pixel point in the current chroma block, rec′ L (i,j) represents the pixel point value of a corresponding luma pixel point in the down-sampled luma block of the reconstructed luma block of the luma block.
[0050] According to the third or fourth aspect or any of the above-mentioned implementations of the third or fourth aspect, in a possible implementation of the device, when the luma reference pixel point is obtained only according to the neighboring pixel points on the left side of the luma block and the current chroma block is located on the left side boundary of a current coding tree unit (CTU), only one column of neighboring reconstructed luma pixel points of the reconstructed luma block is used to obtain the luma reference pixel point.
[0051] According to the third or fourth aspect or any of the above-mentioned implementations of the third or fourth aspect, in a possible implementation of the device, the linear model comprises a multi-directional linear model (MDLM).
[0052] According to a fifth aspect, the present application relates to a method for coding an intra chroma prediction mode into a bitstream of a video signal. The method comprises: performing an intra prediction on a chroma block in the video signal according to an intra chroma prediction mode, wherein the intra chroma prediction mode is selected from a first group of modes, a second group of modes or a third group of modes, the second group of modes comprising at least one of a CCLM_L mode or a CCLM_T mode; generating the bitstream of the video signal by carrying a syntax element indicating the intra chroma prediction mode, wherein a number of bits of the syntax element when the intra chroma prediction mode is selected from the first group of modes is smaller than a number of bits of the syntax element when the intra chroma prediction mode is selected from the second group of modes, and a number of bits of the syntax element when the intra chroma prediction mode is selected from the second group of modes is smaller than a number of bits of the syntax element when the intra chroma prediction mode is selected from the third group of modes.
[0053] The provided method for encoding the intra chroma prediction mode can make CCLM_L and CCLM_T use binary strings to represent and carry in the code stream of the video signal.
[0054] According to the fifth aspect, in a possible implementation of the method, the first group of modes includes at least one of a derived mode (DM) or a cross component linear model (CCLM) prediction mode, and the third group of modes includes at least one of a vertical mode, a horizontal mode, a DC mode or a planar mode.
[0055] According to the fifth aspect or any of the preceding implementation forms of the fifth aspect, in a possible implementation of the method, the syntax element of the DM mode is 0; the syntax element of the CCLM mode is 10; the syntax element of the CCLM_L mode is 1110; the syntax element of the CCLM_T mode is 1111; the syntax element of the planar mode is 11000; the syntax element of the vertical mode is 11001; the syntax element of the horizontal mode is 11010; and the syntax element of the DC mode is 11011.
[0056] According to the fifth aspect or any of the preceding implementation forms of the fifth aspect, in a possible implementation of the method, the syntax element of the DM mode is 00; the syntax element of the CCLM mode is 10; the syntax element of the CCLM_L mode is 110; the syntax element of the CCLM_T mode is 111; the syntax element of the planar mode is 0100; the syntax element of the vertical mode is 0101; the syntax element of the horizontal mode is 0110; and the syntax element of the DC mode is 0111.
[0057] According to a sixth aspect, the present application relates to a method for decoding an intra chroma prediction mode in a bitstream of a video signal. The method comprises: parsing a plurality of syntax elements from the bitstream of the video signal; determining the intra chroma prediction mode according to one of the plurality of syntax elements, wherein the intra chroma prediction mode is determined from a first group of modes, a second group of modes or a third group of modes, the second group of modes comprising at least one of a CCLM_L mode or a CCLM_T mode, a number of bits of the syntax element when the intra chroma prediction mode is selected from the first group of modes is less than a number of bits of the syntax element when the intra chroma prediction mode is selected from the second group of modes, and a number of bits of the syntax element when the intra chroma prediction mode is selected from the second group of modes is less than a number of bits of the syntax element when the intra chroma prediction mode is selected from the third group of modes; and performing intra prediction for a current chroma block in the video signal according to the intra chroma prediction mode.
[0058] According to a seventh aspect, the present application relates to an apparatus for encoding video data. The apparatus comprises a video data memory and a video encoder. The video encoder is configured to: perform intra prediction for a chroma block in the video signal according to an intra chroma prediction mode, wherein the intra chroma prediction mode is selected from a first group of modes, a second group of modes or a third group of modes, the second group of modes comprising at least one of a CCLM_L mode or a CCLM_T mode; and generate a bitstream of the video signal by carrying a syntax element indicating the intra chroma prediction mode, wherein a number of bits of the syntax element when the intra chroma prediction mode is selected from the first group of modes is less than a number of bits of the syntax element when the intra chroma prediction mode is selected from the second group of modes, and a number of bits of the syntax element when the intra chroma prediction mode is selected from the second group of modes is less than a number of bits of the syntax element when the intra chroma prediction mode is selected from the third group of modes.
[0059] According to an eighth aspect, the present invention relates to a device for decoding video data. The device includes a video data storage and a video decoder. The video decoder is used to: parse multiple syntax elements from a code stream of a video signal; determine an intra-frame chroma prediction mode based on one syntax element of the multiple syntax elements, wherein the intra-frame chroma prediction mode is determined from a first group of modes, a second group of modes, or a third group of modes, the second group of modes includes at least one of a CCLM_L mode or a CCLM_T mode, the number of bits of the syntax elements when the intra-frame chroma prediction mode is selected from the first group of modes is less than the number of bits of the syntax elements when the intra-frame chroma prediction mode is selected from the second group of modes, and the number of bits of the syntax elements when the intra-frame chroma prediction mode is selected from the second group of modes is less than the number of bits of the syntax elements when the intra-frame chroma prediction mode is selected from the third group of modes; and perform intra-frame prediction on the current chroma block in the video signal according to the intra-frame chroma prediction mode.
[0060] The provided device for encoding video data and the provided device for decoding video data can enable CCLM_L and CCLM_T to be represented using binary strings, carried in the code stream of the video signal on the encoding device side, and decoded on the decoding device side. According to the seventh and eighth aspects, in one possible implementation of the device, the first group of modes includes at least one of a derived mode (DM) or a cross-component linear model (CCLM) prediction mode, and the third group of modes includes at least one of a vertical mode, a horizontal mode, a DC mode, or a planar mode.
[0061] According to the seventh and eighth aspects or any one of the above-mentioned implementation methods of the seventh and eighth aspects, in a possible implementation method of the device, the syntax element of the DM mode is 0; the syntax element of the CCLM mode is 10; the syntax element of the CCLM_L mode is 1110; the syntax element of the CCLM_T mode is 1111; the syntax element of the planar mode is 11000; the syntax element of the vertical mode is 11001; the syntax element of the horizontal mode is 11010; and the syntax element of the DC mode is 11011.
[0062] In a possible implementation form of the method according to the seventh and eighth aspects or any preceding implementation form of the seventh and eighth aspects, the syntax element of the DM mode is 00; the syntax element of the CCLM mode is 10; the syntax element of the CCLM_L mode is 110; the syntax element of the CCLM_T mode is 111; the syntax element of the planar mode is 0100; the syntax element of the vertical mode is 0101; the syntax element of the horizontal mode is 0110; and the syntax element of the DC mode is 0111.
[0063] According to a ninth aspect, the present application relates to a method for performing intra prediction using cross component linear model (CCLM). The method comprises: determining a luma block corresponding to a current chroma block; obtaining luma reference samples of the luma block by downsampling neighboring samples of the luma block, wherein the luma reference samples only include luma reference samples obtained from neighboring samples above the luma block or only include luma reference samples obtained from neighboring samples left to the luma block; determining a maximum luma value and a minimum luma value according to the luma reference samples; obtaining a first chroma value at least partially according to one or more positions of one or more luma reference samples related to the maximum luma value; obtaining a second chroma value at least partially according to one or more positions of one or more luma reference samples related to the minimum luma value; calculating linear model coefficients according to the first chroma value, the second chroma value, the maximum luma value and the minimum luma value; and generating a prediction value of the current chroma block according to the linear model coefficients and values of the downsampled luma block of the luma block.
[0064] In a possible implementation form of the method according to the ninth aspect, the number of the luma reference samples is greater than or equal to the width of the current chroma block or greater than or equal to the height of the current chroma block.
[0065] In a possible implementation form of the method according to the ninth aspect or any preceding implementation form of the ninth aspect, in determining the maximum luma value and the minimum luma value, the luma reference samples used are available luma reference samples of the luma block.
[0066] In a possible implementation form of the method according to the ninth aspect or any preceding implementation form of the ninth aspect, the available luma reference samples of the luma block are determined according to available chroma reference samples of the current chroma block.
[0067] In a possible implementation form of the method according to the ninth aspect or any preceding implementation form of the ninth aspect, when the luma reference sample is obtained only from a neighboring sample above the luma block, at most 2xW luma reference samples are used to derive the linear model coefficients, wherein W represents a width of the current chroma block.
[0068] In a possible implementation form of the method according to the ninth aspect or any preceding implementation form of the ninth aspect, when the luma reference sample is obtained only from a neighboring sample left of the luma block, at most 2xH luma reference samples are used to derive the linear model coefficients, wherein H represents a height of the current chroma block.
[0069] In a possible implementation form of the method according to the ninth aspect or any preceding implementation form of the ninth aspect, at most N available luma reference samples are used to derive the linear model coefficients, wherein N is a sum of W and H, W represents a width of the current chroma block, and H represents a height of the current chroma block.
[0070] In a possible implementation form of the method according to the ninth aspect or any preceding implementation form of the ninth aspect, the linear model coefficients a and b are calculated according to the following equations:
[0071]
[0072] b = y A - a x A
[0073] wherein x B represents the maximum luma value, y B represents the first chroma value, x A represents the minimum luma value, and y A represents the second chroma value.
[0074] In a possible implementation form of the method according to the ninth aspect or any preceding implementation form of the ninth aspect, a prediction value of the current chroma block is obtained according to the following equation:
[0075] pred C (i, j) = a rec L ′ (i, j) + b,
[0076] wherein pred C (i, j) represents the prediction value of a chroma sample in the current chroma block, rec L(i,j) denotes a pixel value of a corresponding luma pixel in the down-sampled reconstructed luma block of the reconstructed luma block of the luma block.
[0077] According to the ninth aspect or any one of the preceding embodiments of the ninth aspect, in a possible implementation of the method, the down-sampled luma block of the luma block is obtained by down-sampling the reconstructed luma block of the luma block corresponding to the current chroma block.
[0078] According to the ninth aspect or any one of the preceding embodiments of the ninth aspect, in a possible implementation of the method, when the luma reference pixel is obtained only from neighboring pixels above the luma block and when a top row of the current chroma block overlaps with a top row of a current coding tree unit (CTU) or the current chroma block is located above a top boundary of a current coding tree unit (CTU), the luma reference pixel is obtained only using one row of neighboring reconstructed luma pixels of the reconstructed luma block of the luma block.
[0079] According to the ninth aspect or any one of the preceding embodiments of the ninth aspect, in a possible implementation of the method, when the luma reference pixel is obtained only from neighboring pixels left of the luma block and the current chroma block is located at a left boundary of a current coding tree unit (CTU), the luma reference pixel is obtained only using one column of neighboring reconstructed luma pixels of the reconstructed luma block.
[0080] According to the ninth aspect or any one of the preceding embodiments of the ninth aspect, in a possible implementation of the method, the CCLM comprises a multi-directional linear model (MDLM).
[0081] According to a tenth aspect, the application relates to an encoder. The encoder is configured to perform the method according to the ninth aspect or any one of the preceding embodiments of the ninth aspect.
[0082] According to an eleventh aspect, the application relates to a decoder. The decoder is configured to perform the method according to the ninth aspect or any one of the preceding embodiments of the ninth aspect.
[0083] According to an eleventh aspect, the application relates to an intra prediction method using a cross component linear prediction mode (CCLM). The method comprises:
[0084] obtaining reference pixels of a current luma block, wherein the reference pixels only belong to an upper template of the current luma block;
[0085] obtaining a maximum luma value and a minimum luma value according to the reference pixels;
[0086] obtaining a first chroma value according to a pixel position of the maximum luma value;
[0087] obtaining a second chroma value according to a pixel position of the minimum luma value;
[0088] calculating linear model coefficients according to the first chroma value, the second chroma value, the maximum luma value and the minimum luma value;
[0089] obtaining a prediction value of a current chroma block according to the linear model coefficients, wherein the current chroma block corresponds to the current luma block.
[0090] According to the eleventh aspect, in a possible implementation manner of the method, the number of the reference pixels is greater than or equal to a width of the current chroma block.
[0091] According to the eleventh aspect or any of the foregoing implementation manners of the eleventh aspect, in a possible implementation manner of the method, the reference pixels are available.
[0092] According to the eleventh aspect or any of the foregoing implementation manners of the eleventh aspect, in a possible implementation manner of the method, the method further includes:
[0093] checking availability of the reference pixels within a range, wherein a length of the range is 2×W or a length of the range is a sum of W and H, W represents a width of the current chroma block, and H represents a height of the current chroma block.
[0094] According to the eleventh aspect or any of the foregoing implementation manners of the eleventh aspect, in a possible implementation manner of the method, the linear model coefficients are derived using at most 2×W available reference pixels, wherein W represents a width of the current chroma block.
[0095] According to the eleventh aspect or any of the foregoing implementation manners of the eleventh aspect, in a possible implementation manner of the method, the linear model coefficients are derived using at most N available reference pixels, wherein N is a sum of W and H, W represents a width of the current chroma block, and H represents a height of the current chroma block.
[0096] According to the eleventh aspect or any of the foregoing implementation manners of the eleventh aspect, in a possible implementation manner of the method, the linear model coefficients α and β are calculated according to the following equations:
[0097]
[0098] β = y A -αx A
[0099] wherein x B denotes the maximum luma value, y B denotes the first chroma value, x A denotes the minimum luma value, y A denotes the second chroma value.
[0100] In a possible implementation form of the method according to the eleventh aspect or any preceding implementation form of the eleventh aspect, the prediction value of the current chroma block is obtained according to the following equation:
[0101] pred C (i,j) = a rec L '(i,j) + β
[0102] wherein pred C (i,j) denotes a chroma pixel point, rec L '(i,j) denotes a corresponding reconstructed luma pixel point.
[0103] In a possible implementation form of the method according to the eleventh aspect or any preceding implementation form of the eleventh aspect, the number of reference pixel points is greater than or equal to the size of the current chroma block.
[0104] In a possible implementation form of the method according to the eleventh aspect or any preceding implementation form of the eleventh aspect, the reference pixel points are down-sampled luma pixel points.
[0105] In a possible implementation form of the method according to the eleventh aspect or any preceding implementation form of the eleventh aspect, when the current chroma block is located at an upper boundary, only one row of neighboring reconstructed luma pixel points is used to obtain the reference pixel points.
[0106] In a possible implementation form of the method according to the eleventh aspect or any preceding implementation form of the eleventh aspect, the CCLM is a multi-directional linear model (MDLM), and the MDLM is obtained using the linear model coefficients.
[0107] In a possible implementation form of the method according to the eleventh aspect or any preceding implementation form of the eleventh aspect, the method is referred to as CCIP T.
[0108] In a twelfth aspect, the present application relates to an intra prediction method using a cross component linear prediction mode (CCLM). The method comprises:
[0109] obtaining reference pixels of a current luma block, wherein the reference pixels only belong to a left template of the current luma block;
[0110] obtaining a maximum luma value and a minimum luma value according to the reference pixels;
[0111] obtaining a first chroma value according to a pixel position of the maximum luma value;
[0112] obtaining a second chroma value according to a pixel position of the minimum luma value;
[0113] calculating a linear model coefficient according to the first chroma value, the second chroma value, the maximum luma value and the minimum luma value;
[0114] obtaining a prediction value of a current chroma block according to the linear model coefficient, wherein the current chroma block corresponds to the current luma block.
[0115] According to the twelfth aspect, in a possible implementation manner of the method, the number of the reference pixels is greater than or equal to the height of the current chroma block.
[0116] According to the twelfth aspect or any of the foregoing implementation manners of the twelfth aspect, in a possible implementation manner of the method, the reference pixels are available.
[0117] According to the twelfth aspect or any of the foregoing implementation manners of the twelfth aspect, in a possible implementation manner of the method, the method further comprises:
[0118] checking availability of the reference pixels in a range, wherein the length of the range is 2xH or the length of the range is the sum of W and H, W represents the width of the current chroma block, and H represents the height of the current chroma block.
[0119] According to the twelfth aspect or any of the foregoing implementation manners of the twelfth aspect, in a possible implementation manner of the method, the linear model coefficient is derived using at most 2xH available reference pixels, wherein H represents the height of the current chroma block.
[0120] In a possible implementation of the method according to the twelfth aspect or any of the preceding implementations of the twelfth aspect, the linear model coefficients are derived using at most N available reference pixel points, where N is a sum of W and H, W represents a width of the current chroma block, and H represents a height of the current chroma block.
[0121] In a possible implementation of the method according to the twelfth aspect or any of the preceding implementations of the twelfth aspect, the linear model coefficients a and b are calculated according to the following equations:
[0122]
[0123] b = y A - a x A
[0124] where x B represents the maximum luma value, y B represents the first chroma value, x A represents the minimum luma value, and y A represents the second chroma value.
[0125] In a possible implementation of the method according to the twelfth aspect or any of the preceding implementations of the twelfth aspect, the prediction value of the current chroma block is obtained according to the following equation:
[0126] pred C (i, j) = a rec L '(i, j) + b
[0127] where pred C (i, j) represents a chroma pixel point, and rec L (i, j) represents a corresponding reconstructed luma pixel point.
[0128] In a possible implementation of the method according to the eleventh aspect or any of the preceding implementations of the eleventh aspect, the number of reference pixel points is greater than or equal to a size of the current chroma block.
[0129] In a possible implementation of the method according to the eleventh aspect or any of the preceding implementations of the eleventh aspect, the reference pixel points are down-sampled luma pixel points.
[0130] In a possible implementation of the method according to the twelfth aspect or any of the preceding implementations of the twelfth aspect, when a current block of the current chroma block is located at a left side boundary, only one column of adjacent reconstructed luma pixel points is used to obtain the reference pixel points.
[0131] In a possible implementation of the method according to the twelfth aspect or any of the preceding implementations of the twelfth aspect, the CCLM is a multi-directional linear model (MDLM), and the MDLM is obtained using the linear model coefficients.
[0132] In a possible implementation of the method according to the twelfth aspect or any of the preceding implementations of the twelfth aspect, the method is referred to as CCIP_L.
[0133] A thirteenth aspect of the present application relates to an intra prediction method using a cross component linear prediction mode (CCLM). The method comprises:
[0134] obtaining reference pixels of a current luma block, wherein the reference pixels only belong to an above template of the current luma block or only belong to a left template of the current luma block;
[0135] obtaining chroma pixels in a current chroma block, wherein the current chroma block corresponds to the current luma block;
[0136] calculating linear model coefficients according to the reference pixels and the chroma pixels;
[0137] obtaining a prediction value of the current chroma block according to the linear model coefficients.
[0138] In a possible implementation of the method according to the thirteenth aspect, at most N reference pixels are used to derive the linear model coefficients, wherein N is a sum of W and H, W represents a width of the current chroma block, and H represents a height of the current chroma block.
[0139] In a possible implementation of the method according to the thirteenth aspect or any of the preceding implementations of the thirteenth aspect, when the reference pixels only belong to the above template of the current luma block, a number of the reference pixels is greater than or equal to the width of the current chroma block.
[0140] In a possible implementation of the method according to the thirteenth aspect or any of the preceding implementations of the thirteenth aspect, when the reference pixels only belong to the above template of the current luma block, at most 2xW reference pixels are used to derive the linear model coefficients, wherein W represents the width of the current chroma block.
[0141] In a possible implementation form of the method according to the thirteenth aspect or any preceding implementation form of the thirteenth aspect, when the reference sample points only belong to the left template of the current luma block, the number of the reference sample points is greater than or equal to the height of the current luma block.
[0142] In a possible implementation form of the method according to the thirteenth aspect or any preceding implementation form of the thirteenth aspect, when the reference sample points only belong to the left template of the current luma block, at most 2xH reference sample points are used to derive the linear model coefficients, wherein W represents the height of the current chroma block.
[0143] In a possible implementation form of the method according to the thirteenth aspect or any preceding implementation form of the thirteenth aspect, the number of the reference sample points is greater than or equal to the size of the current chroma block.
[0144] In a possible implementation form of the method according to the thirteenth aspect or any preceding implementation form of the thirteenth aspect, the reference sample points are down-sampled luma sample points.
[0145] In a possible implementation form of the method according to the thirteenth aspect or any preceding implementation form of the thirteenth aspect, when the reference sample points only belong to the top template of the current luma block and the current block of the current chroma block is located at a top boundary, only one row of neighboring reconstructed luma sample points is used to obtain the reference sample points.
[0146] In a possible implementation form of the method according to the thirteenth aspect or any preceding implementation form of the thirteenth aspect, wherein when the reference sample points only belong to the current luma block and the current block of the current chroma block is located at a left boundary, only one column of neighboring reconstructed luma sample points is used to obtain the reference sample points.
[0147] In a possible implementation form of the method according to the thirteenth aspect or any preceding implementation form of the thirteenth aspect, the CCLM is a multi-directional linear model (MDLM), and the linear model coefficients are used to obtain the MDLM.
[0148] In a possible implementation form of the method according to the thirteenth aspect or any preceding implementation form of the thirteenth aspect, the reference sample points are available.
[0149] According to a fourteenth aspect, the application relates to a decoder. The decoder comprises processing circuitry configured to perform the method according to the eleventh aspect or any preceding implementation form of the eleventh aspect.
[0150] According to a fifteenth aspect, the present application relates to a decoder. The decoder comprises processing circuitry for performing the method according to the twelfth aspect or any above-mentioned implementation form of the twelfth aspect.
[0151] According to a sixteenth aspect, the present application relates to a decoder. The decoder comprises processing circuitry for performing the method according to the thirteenth aspect or any above-mentioned implementation form of the thirteenth aspect.
[0152] According to a seventeenth aspect, the present application relates to an intra prediction method using cross component linear prediction mode (CCLM). The method comprises:
[0153] obtaining reference pixels of a current luma block, wherein the reference pixels only belong to an above template of the current luma block;
[0154] obtaining a maximum luma value and a minimum luma value according to the reference pixels;
[0155] obtaining a first chroma value and a second chroma value according to the maximum luma value and the minimum luma value;
[0156] calculating a linear model coefficient according to the first chroma value, the second chroma value, the maximum luma value and the minimum luma value;
[0157] obtaining a prediction value of the current block according to the linear model coefficient.
[0158] According to the seventeenth aspect, in a possible implementation form of the method, the number of the reference pixels is greater than or equal to the width of the current chroma block.
[0159] According to the seventeenth aspect or any above-mentioned implementation form of the seventeenth aspect, in a possible implementation form of the method, the reference pixels are available.
[0160] According to the seventeenth aspect or any above-mentioned implementation form of the seventeenth aspect, in a possible implementation form of the method, at most 2xW reference pixels are used to derive the model coefficient.
[0161] According to the seventeenth aspect or any above-mentioned implementation form of the seventeenth aspect, in a possible implementation form of the method, the method is called CCIP_T.
[0162] In an eighteenth aspect, the present application relates to an intra prediction method using cross component linear prediction mode (CCLM). The method comprises:
[0163] obtaining reference pixels of a current luma block, wherein the reference pixels only belong to a left template of the current luma block;
[0164] obtaining a maximum luma value and a minimum luma value according to the reference pixels;
[0165] obtaining a first chroma value and a second chroma value according to the maximum luma value and the minimum luma value;
[0166] calculating linear model coefficients according to the first chroma value, the second chroma value, the maximum luma value and the minimum luma value;
[0167] obtaining a prediction value of the current block according to the linear model coefficients.
[0168] According to the eighteenth aspect, in a possible implementation manner of the method, the number of the reference pixels is greater than or equal to the height of the current chroma block.
[0169] According to the eighteenth aspect or any one of the foregoing implementation manners of the eighteenth aspect, in a possible implementation manner of the method, the reference pixels are available.
[0170] According to the eighteenth aspect or any one of the foregoing implementation manners of the eighteenth aspect, in a possible implementation manner of the method, at most 2xH reference pixels are used to derive the model coefficients.
[0171] According to the eighteenth aspect or any one of the foregoing implementation manners of the eighteenth aspect, in a possible implementation manner of the method, the method is referred to as CCIP_L.
[0172] According to a nineteenth aspect, the present application relates to a decoder for performing the method according to the seventeenth aspect or any one of the foregoing implementation manners of the seventeenth aspect.
[0173] According to a twentieth aspect, the present application relates to a decoder for performing the method according to the eighteenth aspect or any one of the foregoing implementation manners of the eighteenth aspect.
[0174] According to a twenty-first aspect, the present application relates to a method for intra prediction using linear model. The method comprises: obtaining reference pixel points of a current luma block; obtaining a maximum luma value and a minimum luma value according to the reference pixel points; obtaining a first chroma value and a second chroma value according to a position of a luma pixel point with the maximum luma value and a position of a luma pixel point with the minimum luma value; calculating linear model coefficients according to the first chroma value, the second chroma value, the maximum luma value and the minimum luma value; and obtaining a prediction value of a current block according to the linear model coefficients, wherein the step of obtaining the reference pixel points of the current luma block comprises: determining L available chroma template pixel points of a current chroma block, wherein the reference pixel points of the current luma block are L luma template pixel points corresponding to the L available chroma template pixel points, or determining L available neighboring chroma pixel points of the current chroma block, wherein the reference pixel points of the current luma block are L neighboring luma pixel points corresponding to the L available neighboring chroma pixel points, L is a positive integer and L≥1.
[0175] According to the twenty-first aspect, in a possible implementation manner of the method, the step of determining the L available chroma template pixel points of the current chroma block comprises:
[0176] checking availability of an upper neighboring chroma pixel point of the current chroma block;
[0177] if L upper neighboring chroma pixel points are available, the reference pixel points of the current luma block are L neighboring luma pixel points corresponding to the L upper neighboring chroma pixel points, wherein L is a positive integer and L≥1, L≤W2, and W2 represents an upper template pixel point range.
[0178] According to the twenty-first aspect or any of the foregoing implementation manners of the twenty-first aspect, in a possible implementation manner of the method, the step of determining the L available chroma template pixel points of the current chroma block comprises:
[0179] checking availability of a left neighboring chroma pixel point of the current chroma block;
[0180] if L left neighboring chroma pixel points are available, the reference pixel points of the current luma block are L neighboring luma pixel points corresponding to the L left neighboring chroma pixel points, wherein L is a positive integer and L≥1, L≤H2, and H2 represents a left template pixel point range.
[0181] According to the twenty-first aspect or any of the foregoing implementation manners of the twenty-first aspect, in a possible implementation manner of the method, the step of determining the L available chroma template pixel points of the current chroma block comprises:
[0182] checking availability of an above neighboring chroma sample of the current chroma block and availability of a left neighboring chroma sample of the current chroma block;
[0183] If L1 above neighboring chroma samples are available and L2 left neighboring chroma samples are available, the reference samples of the current luma block include or are L1 neighboring luma samples corresponding to the L1 above neighboring chroma samples and L2 neighboring luma samples corresponding to the L2 neighboring luma samples, where L2≥1, L2≤H2, H2 represents a left template sample range, L and H2 are positive integers; L1≥1, L1≤W2, W2 represents an above template sample range, L1 and W2 are positive integers, L=L1+L2.
[0184] In a possible implementation of the method according to the twenty-first aspect or any preceding implementation of the twenty-first aspect, if there are L neighboring chroma samples available in the template range, the model coefficients are obtained using L template luma samples and L template chroma samples.
[0185] In a possible implementation of the method according to the twenty-first aspect or any preceding implementation of the twenty-first aspect, the reference samples are available.
[0186] In a possible implementation of the method according to the twenty-first aspect or any preceding implementation of the twenty-first aspect, the linear model coefficients a and b are calculated according to the following equations:
[0187]
[0188] b = y A - a x A
[0189] where x B represents the maximum luma value, y B represents the first chroma value, x A represents the minimum luma value, y A represents the second chroma value.
[0190] In a possible implementation of the method according to the twenty-first aspect or any preceding implementation of the twenty-first aspect, the prediction value of the current chroma block is obtained according to the following equation:
[0191] pred C (i, j) = a rec L '(i, j) + b
[0192] where pred C(i,j) denotes a chroma pixel point, rec L (i,j) denotes a corresponding reconstructed luma pixel point.
[0193] According to the twenty-first aspect or any one of the preceding implementations of the twenty-first aspect, in a possible implementation of the method, the number of the reference pixel points is greater than or equal to the size of the current luma block.
[0194] According to the twenty-first aspect or any one of the preceding implementations of the twenty-first aspect, in a possible implementation of the method, the reference pixel points are down-sampled luma pixel points.
[0195] According to the twenty-first aspect or any one of the preceding implementations of the twenty-first aspect, in a possible implementation of the method, when the current block of the current chroma block is located at an upper boundary, only one row of adjacent reconstructed luma pixel points is used to obtain the reference pixel points.
[0196] According to the twenty-first aspect or any one of the preceding implementations of the twenty-first aspect, in a possible implementation of the method, the linear model is a multi-directional linear model (MDLM), and the MDLM is obtained using the linear model coefficients.
[0197] According to the twenty-first aspect or any one of the preceding implementations of the twenty-first aspect, in a possible implementation of the method, the method is referred to as CCIP_T, or the method is referred to as CCIP_L
[0198] According to the twenty-first aspect or any one of the preceding implementations of the twenty-first aspect, in a possible implementation of the method, the reference pixel points only belong to an upper template of the current luma block or only belong to a left template of the current luma block, or the reference pixel points belong to both the upper template of the current luma block and the left template of the current luma block.
[0199] According to a twenty-second aspect, the present application relates to a decoder. The decoder comprises processing circuitry configured to perform the method according to the twenty-first aspect or any one of the preceding implementations of the twenty-first aspect.
[0200] According to a twenty-third aspect, the present application relates to an encoder. The encoder comprises processing circuitry configured to perform the method according to the twenty-first aspect or any one of the preceding implementations of the twenty-first aspect.
[0201] According to a twenty-fourth aspect, the present application relates to a binarization method for a chroma mode. The method comprises:
[0202] performing intra prediction using a linear model, such as a multi-directional linear model (MDLM);
[0203] generating a bitstream including a plurality of syntax elements, wherein the plurality of syntax elements indicate or include the CCLM mode, the CCIP_L mode, or the CCIP_T mode.
[0204] According to the twenty-fourth aspect, in a possible implementation of the method,
[0205] the first indicator (77) indicates the CCLM mode with index intra_chroma_pred_mode being 4;
[0206] the second indicator (78) indicates the CCIP_L mode with index intra_chroma_pred_mode being 5;
[0207] the third indicator (79) indicates the CCIP_T mode with index intra_chroma_pred_mode being 6.
[0208] According to the twenty-fourth aspect or any preceding implementation of the twenty-fourth aspect, in a possible implementation of the method, when sps_cclm_enabled_flag is 1, IntraPredModeC[xCb][yCb] depends on intra_chroma_pred_mode[xCb][yCb] and IntraPredModeY[xCb][yCb].
[0209] According to a twenty-fifth aspect, the present application relates to a decoding method implemented by a decoding device. The decoding method comprises:
[0210] parsing a plurality of syntax elements from the bitstream, wherein the plurality of syntax elements indicate or include the CCLM mode, the CCIP_L mode, or the CCIP_T mode;
[0211] performing intra prediction using the indicated linear model.
[0212] According to the twenty-fifth aspect, in a possible implementation of the method,
[0213] the first indicator (77) indicates the CCLM mode with index intra_chroma_pred_mode being 4;
[0214] The second indicator (78) indicates the CCIP_L mode, with index intra_chroma_pred_mode being 5.
[0215] The third indicator (79) indicates the CCIP_T mode, with index intra_chroma_pred_mode being 6.
[0216] According to the twenty-fifth aspect or any preceding implementation manner of the twenty-fifth aspect, in a possible implementation manner of the method, when sps_cclm_enabled_flag is 1, IntraPredModeC[xCb][yCb] depends on intra_chroma_pred_mode[xCb][yCb] and IntraPredModeY[xCb][yCb].
[0217] According to a twenty-sixth aspect, the present application relates to a decoder. The decoder comprises processing circuitry configured to perform the method according to the twenty-fourth and twenty-fifth aspects or any preceding implementation manner of the twenty-fourth and twenty-fifth aspects.
[0218] According to a twenty-seventh aspect, the present application relates to an encoder. The encoder comprises processing circuitry configured to perform the method according to the twenty-fourth and twenty-fifth aspects or any preceding implementation manner of the twenty-fourth and twenty-fifth aspects.
[0219] According to a twenty-eighth aspect, the present application relates to a computer readable medium storing instructions. When the instructions are executed on a processor, the processor is caused to perform the method according to the twenty-fourth and twenty-fifth aspects or any preceding implementation manner of the twenty-fourth and twenty-fifth aspects.
[0220] According to the twenty-eighth aspect, the present application relates to a decoder. The decoder comprises:
[0221] one or more processors;
[0222] a non-transitory computer readable storage medium coupled to the one or more processors and storing programming for execution by the one or more processors, wherein the programming, when executed by the processors, configures the decoder to perform the method according to the twenty-fourth and twenty-fifth aspects or any preceding implementation manner of the twenty-fourth and twenty-fifth aspects.
[0223] According to the twenty-eighth aspect, the present application relates to an encoder. The encoder comprises:
[0224] one or more processors;
[0225] A non-transitory computer-readable storage medium coupled to the one or more processors and storing programming for execution by the one or more processors, wherein the programming, when executed by the processors, configures the encoder to perform the method according to the twenty-fourth and twenty-fifth aspects or any above-mentioned implementation of the twenty-fourth and twenty-fifth aspects.
[0226] According to a twenty-ninth aspect, the present application relates to an intra prediction method using cross component linear mode (CCLM). The method comprises:
[0227] obtaining reference pixels of a current luma block;
[0228] obtaining a maximum luma value and a minimum luma value according to the reference pixels;
[0229] obtaining a first chroma value and a second chroma value according to the maximum luma value and the minimum luma value;
[0230] calculating linear model coefficients according to the first chroma value, the second chroma value, the maximum luma value and the minimum luma value;
[0231] obtaining a prediction value of the current block according to the linear model coefficients,
[0232] wherein the availability of the template pixels is determined by checking neighboring chroma pixels.
[0233] According to a thirtieth aspect, the present application relates to a decoder to perform the method of the twenty-eighth aspect.
[0234] According to a thirty-first aspect, the present application relates to a decoder to perform the method of the twenty-ninth aspect.
[0235] According to a thirty-second aspect, the present application relates to a decoder to perform the method of the twenty-eighth aspect or the twenty-ninth aspect.
[0236] According to a thirty-third aspect, there is provided an apparatus. The apparatus comprises modules / units / components / circuits to perform at least part of the steps of the above-mentioned method according to any above-mentioned aspect or any above-mentioned implementation of any above-mentioned aspect.
[0237] The apparatus according to the thirty-third aspect can be extended to corresponding implementations of the method according to any above-mentioned aspect. Thus, one implementation of the apparatus includes the features of the corresponding implementation of the method according to any above-mentioned aspect.
[0238] The apparatus according to any above-mentioned aspect has the same advantages as the corresponding implementation of the method according to any above-mentioned aspect.
[0239] For clarity, any of the above examples can be combined with any other or others of the above examples to create a new example within the scope of the application.
[0240] These and other features will be more readily understood from the following detailed description, taken in conjunction with the accompanying drawings and claims. BRIEF DESCRIPTION OF DRAWINGS
[0241] For a more complete understanding of the present application, reference is now made to the following brief description, taken in connection with the accompanying drawings and detailed description, wherein like reference numerals represent like parts.
[0242] FIG. 1A Block diagram of an exemplary coding system in which examples of the application can be implemented.
[0243] FIG. 1B Block diagram of another exemplary coding system in which examples of the application can be implemented.
[0244] FIG. 2 Block diagram of an exemplary video encoder in which examples of the application can be implemented.
[0245] FIG. 3 Block diagram of one example of a video decoder in which examples of the application can be implemented.
[0246] FIG. 4 Diagram of a video coding device.
[0247] FIG. 5 Simplified block diagram of an apparatus 500 provided for one exemplary embodiment, which can be used as either or both of a source device 12 and a destination device 14 in FIG. 1A
[0248] Conceptual diagram of the nominal vertical and horizontal relative positions of luma samples and chroma samples. FIG. 6A
[0249] Conceptual diagram of one example of luma positions and chroma positions used to downsample samples in a luma block to generate a prediction block. FIG. 6B
[0250] Conceptual diagram of another example of luma positions and chroma positions used to downsample samples in a luma block to generate a prediction block. FIG. 6C
[0251] Intra prediction modes in H.265 / HEVC are shown. FIG. 6D
[0252] FIG. 7 Reference pixels for the current block are shown.
[0253] FIG. 8 Locations of the left and top reference pixels for the current luma block and the current chroma block involved in the CCLM mode are shown.
[0254] FIG. 9 A straight line between the minimum luma value and the maximum luma value is shown.
[0255] FIG. 10 A template (including reference pixels) for a chroma block and a down-sampled luma block is shown.
[0256] FIG. 11 An example of a template including unavailable reference pixels is shown.
[0257] FIG. 12 Reference pixels used in the CCLM_T mode are shown.
[0258] FIG. 13 Reference pixels used in the CCLM_L mode are shown.
[0259] FIG. 14 A diagram for an example of using an above template or a left template to determine model coefficients, where the above template is larger than the width of a down-sampled luma block of a current luma block, the left template is larger than the height of the down-sampled luma block of the current luma block, the above template includes reference pixels above the down-sampled luma block, and the left template includes reference pixels to the left of the down-sampled luma block.
[0260] FIG. 15 A diagram for an example of using an above template or a left template to determine model coefficients, where the size of the above template is the same as the width of a down-sampled luma block of a current luma block, and the size of the left template is the same as the height of the down-sampled luma block of the current luma block.
[0261] FIG. 16 A diagram for an example of using available reference pixels to determine model coefficients for intra prediction.
[0262] FIG. 17 A diagram for an example of using multiple rows or columns of neighboring luma pixels to down-sample a luma pixel.
[0263] FIG. 18 A diagram for another example of using multiple rows or columns of neighboring luma pixels to down-sample a luma pixel.
[0264] FIG. 19An illustration of one example of downsampling using a single row of neighboring luma samples of a luma block located above the boundary of the CTU.
[0265] FIG. 20 A flowchart of a method of performing intra prediction using a linear model, according to some aspects of the present invention.
[0266] FIG. 21 A flowchart of a method of performing intra prediction using a linear model, according to other aspects of the present invention.
[0267] FIG. 22 A block diagram of an exemplary structure of an apparatus for performing intra prediction using a linear model.
[0268] FIG. 23 A flowchart of a method of encoding a chroma intra coding mode into a bitstream of a video signal, according to some aspects of the present invention.
[0269] FIG. 24 A flowchart of a method of decoding a chroma intra coding mode from a bitstream of a video signal, according to some aspects of the present invention.
[0270] FIG. 25 A block diagram of an exemplary structure of an apparatus for generating a video bitstream.
[0271] FIG. 26 A block diagram of an exemplary structure of an apparatus for decoding a video bitstream.
[0272] FIG. 27 A block diagram of an exemplary structure of a content provisioning system for providing a content distribution service.
[0273] FIG. 28 A block diagram of an exemplary structure of a terminal device. DETAILED DESCRIPTION
[0274] It should be understood that, although the following teachings provide illustrative implementations for one or more examples, the disclosed systems and / or methods can be implemented using any number of techniques, whether currently known or in existence. The present disclosure should not be limited to the illustrative implementations, drawings, and techniques described below, including the example designs and implementations described and illustrated, but can be modified in any manner within the scope of the appended claims and their equivalents.
[0275] FIG. 1A A block diagram of an exemplary coding system 10 that can employ bi-prediction techniques. As FIG. 1AAs shown, coding system 10 includes a source device 12 that provides encoded video data, which is later decoded by a destination device 14. In particular, source device 12 can provide the video data to destination device 14 via a computer-readable medium 16. Source device 12 and destination device 14 can comprise any of a wide variety of devices, including desktop computers, notebook (i.e., laptop) computers, tablet computers, set-top boxes, telephone handsets, such as “smart” phones, televisions, cameras, display devices, digital media players, video gaming consoles, video streaming devices, or the like. In some cases, source device 12 and destination device 14 can be configured for wireless communication.
[0276] Destination device 14 can receive the encoded video data to be decoded via computer-readable medium 16. Computer-readable medium 16 can comprise any type of medium or device capable of storing encoded video data from source device 12 and communicating that encoded video data to destination device 14. In one example, computer-readable medium 16 can comprise a communication medium to enable source device 12 to transmit encoded video data directly to destination device 14 in real-time to enable the video data to be decoded and displayed timely. The encoded video data can be modulated according to a communication standard, such as a wireless communication protocol, and transmitted to destination device 14. The communication medium can comprise any wireless or wired communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium can comprise parts of a packet-based network, such as a local area network, wide area network, or the Internet, as well as parts of a global network, such as the Internet. The communication medium can include routers, switches, base stations, or any other equipment that can be used to communicate encoded video data from source device 12 to destination device 14.
[0277] In some examples, encoded data can be output from output interface 22 to a storage device. Similarly, encoded data can be accessed from the storage device by input interface. The storage device can include any of a variety of distributed or locally accessed data storage media such as a hard drive, Blu-ray discs, Digital video disc (DVD), Compact Disc Read-Only Memory (CD-ROM), flash memory, volatile or non-volatile memory, or any other suitable digital storage media for storing encoded video data. In a further example, storage device can correspond to a file server or another intermediate storage device that can store the encoded video generated by source device 12. Destination device 14 can access stored video data from the storage device via streaming or download. The file server can be any type of server capable of storing encoded video data and transmitting that encoded video data to the destination device 14. Exemplary file servers include a web server (e.g., for a website), a file transfer protocol (FTP) server, a network attached storage (NAS) device, or a local disk drive. Destination device 14 can access the encoded video data through any standard data connection, including an Internet connection. This can include a wireless channel (e.g., a Wi-Fi connection), a wired connection (e.g., DSL, cable modem, etc.), or a combination of both that is suitable for accessing encoded video data stored on a file server. The transmission of encoded video data from the storage device can be a streaming transmission, a download transmission, or a combination thereof.
[0278] The techniques in this disclosure are not necessarily limited to wireless applications or settings. The techniques can be applied to video coding to support any of a variety of multimedia applications, such as over-the-air television broadcasts, cable television transmissions, satellite television transmissions, Internet streaming video transmissions, such as dynamic adaptive streaming over HTTP (DASH), digital video that is encoded onto a data storage medium, such as DVD, Blu-ray disc, flash drive, etc., or other applications. In some examples, coding system 10 can be configured for single- or double- directional video transmission to support applications such as video streaming, video playback, video broadcasting, and / or video telephony.
[0279] In FIG. 1AIn the example of FIG. 1, source device 12 includes a video source 18, video encoder 20 and an output interface 22. Destination device 14 includes an input interface 28, a video decoder 30, and a display device 32. In accordance with this disclosure, video encoder 20 in source device 12 and / or video decoder 30 in destination device 14 can use bi-prediction techniques. In other examples, a source device and a destination device can include other components or arrangements. For example, source device 12 can receive video data from an external video source, such as an external camera. Similarly, destination device 14 can interface with an external display device, rather than include an integrated display device.
[0280] FIG. 1A Coding system 10 is merely one example. Bi-prediction techniques can be performed by any digital video encoding and / or decoding device. Although generally the techniques in this disclosure are performed by a video encoding device, these techniques can also be performed by a video encoder / decoder, typically referred to as a "CODEC." Moreover, the techniques in this disclosure can also be performed by a video preprocessor. A video encoder and / or decoder can be a graphics processing unit (GPU) or similar device.
[0281] Source device 12 and destination device 14 are merely examples of such coding devices in which source device 12 generates coded video data for transmission to destination device 14. In some examples, source device 12 and destination device 14 can operate substantially symmetrically relative to each other, such that source device 12 and destination device 14 both include video encoding and decoding components. Hence, coding system 10 can support one-way or two-way video transmission between source device 12 and destination device 14, e.g., for video streaming, video playback, video broadcasting, or video telephony.
[0282] Video source 18 in source device 12 can include a video capture device, such as a video camera, a video archive containing previously captured video, and / or a video feed interface to receive video from a video content provider. Alternatively, video source 18 can generate computer graphics-based data as the source video, or a combination of live video, archived video, and computer-generated video.
[0283] In some cases, when video source 18 is a video camera, source device 12 and destination device 14 can form a camera phone or video phone. However, as described above, the techniques described in this disclosure can be applicable to video coding in general, and can be applied to wireless and / or wired applications. In each case, the captured, pre-captured, or computer-generated video can be encoded by video encoder 20. The encoded video information can then be output by output interface 22 onto a computer- readable medium 16.
[0284] Computer-readable medium 16 can include transient media, such as a wireless broadcast or wired network transmission, or storage media (that is, non-transitory storage media), such as a hard disk, flash drive, compact disk, digital video disk, Blu-ray disk, or other computer-readable media. In some examples, network server (not shown) can receive encoded video data from source device 12 and can provide the encoded video data to destination device 14, e.g., via network transmission or other distribution. Similarly, a computing device (not shown) in a production facility (e.g., a facility that produces optical discs) can receive encoded video data from source device 12 and produce optical discs that include the encoded video data. Therefore, computer-readable medium 16 can be understood to include one or more of a variety of computer- readable media, depending on the example.
[0285] Input interface 28 of destination device 14 receives information from computer- readable medium 16. The information received by computer-readable medium 16 can include syntax information defined by video encoder 20, which is also used by video decoder 30, that includes syntax elements that describe characteristics and / or processing of blocks and other coded units, such as groups of pictures (GOPs). Display device 32 displays the decoded video data to a user, and can comprise any of a variety of display devices such as a cathode ray tube (CRT), a liquid crystal display (LCD), a plasma display, an organic light emitting diode (OLED) display, or another type of display device.
[0286] Video encoder 20 and video decoder 30 can operate according to a video coding standard, such as the High Efficiency Video Coding (HEVC) standard presently under development, and can conform to the HEVC Test Model (HM). Alternatively, video encoder 20 and video decoder 30 can operate according to other proprietary or industry standards, such as the International Telecommunications Union Telecommunication Standardization Sector (ITU-T) H.264 standard (also known as Moving Picture Expert Group (MPEG)-4, Part 10, Advanced Video Coding (AVC)), H.265 / HEVC, and extensions of such standards. The techniques of this disclosure, however, are not limited to any particular coding standard. Other examples of video coding standards include MPEG-2 and ITU-T H.263. Although not shown, in some aspects, video encoder 20 and video decoder 30 can be integrated with an audio encoder and audio decoder, respectively, and can include appropriate MUX-DEMUX units, or other hardware and software, to handle encoding of both audio and video in a common data stream or separate data streams. If applicable, MUX-DEMUX units can conform to the ITU H.223 multiplexer protocol, or other protocols, such as the user datagram protocol (UDP). FIG. 1A Although not shown, in some aspects, video encoder 20 and video decoder 30 can be integrated with an audio encoder and audio decoder, respectively, and can include appropriate MUX-DEMUX units, or other hardware and software, to handle encoding of both audio and video in a common data stream or separate data streams. If applicable, MUX-DEMUX units can conform to the ITU H.223 multiplexer protocol, or other protocols, such as the user datagram protocol (UDP).
[0287] Video encoder 20 and video decoder 30 each can be implemented as any of a variety of suitable encoder circuitry, such as one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic circuitry, software, hardware, firmware or any combinations thereof. When the techniques are implemented partially in software, a device can store instructions for the software in any suitable non-transitory computer-readable medium and execute the instructions using one or more processors to perform the techniques of this disclosure. Video encoder 20 and video decoder 30 can be included in one or more encoders or decoders, either of which can be integrated as part of a combined video encoder / decoder (CODEC) in a respective device. A device including video encoder 20 and / or video decoder 30 can comprise an integrated circuit, a microprocessor, and / or a wireless communication device such as a cellular telephone.
[0288] FIG. 1B A schematic diagram of an example video coding system 40 is provided for an example embodiment. Video coding system 40 includes FIG. 2 encoder 200 in FIG. 3 decoder 300 in System 40 can implement techniques in this disclosure, such as fusion estimation in inter prediction. In the illustrated implementation, video coding system 40 can include one or more imaging devices 41, video encoder 200, video decoder 300 (and / or a video coder implemented by logic circuitry 47 in one or more processing units 46), antenna 42, one or more processors 43, one or more memories 44, and / or a display device 45.
[0289] As shown, one or more imaging devices 41, antenna 42, one or more processing units 46, logic circuitry 47, video encoder 200, video decoder 300, one or more processors 43, one or more memories 44, and / or display device 45 are capable of communication with each other. As discussed, while video coding system 40 is shown to include both video encoder 200 and video decoder 30, in various practical scenarios, video coding system 40 can include only video encoder 200 or only video decoder 300.
[0290] As shown, in some examples, the video coding system 40 can include an antenna 42. For example, the antenna 42 can be used to transmit or receive an encoded bitstream of video data. Further, in some examples, the video coding system 40 can include a display device 45. The display device 45 can be used to present video data. As shown, in some examples, the logic circuit 47 can be implemented by one or more processing units 46. The one or more processing units 46 can include application-specific integrated circuit (ASIC) logic, one or more graphics processors, or one or more general purpose processors, etc. The video coding system 40 can also include one or more optional processors 43, which can similarly include application-specific integrated circuit (ASIC) logic, one or more graphics processors, or one or more general purpose processors, etc. In some examples, the logic circuit 47 can be implemented by hardware or video coding specific hardware, etc., and the one or more processors 43 can be implemented by general purpose software or operating systems, etc. Additionally, the one or more memories 44 can be any type of memory, such as volatile memory (e.g., Static Random Access Memory (SRAM), Dynamic Random Access Memory (DRAM), etc.) or non-volatile memory (e.g., flash memory, etc.), etc. In non-limiting examples, the one or more memories 44 can be implemented by cache memory. In some examples, the logic circuit 47 can access the one or more memories 44 (for implementing image buffers, etc.). In other examples, the logic circuit 47 and / or the one or more processing units 46 can include memory (e.g., cache, etc.) for implementing image buffers, etc.
[0291] In some examples, the video encoder 200 implemented by the logic circuit can include an image buffer (implemented by the one or more processing units 46 or the one or more memories 44, for example) and a graphics processing unit (implemented by the one or more processing units 46, for example). The graphics processing unit can be communicatively coupled with the image buffer. The graphics processing unit can include the video encoder 200 implemented by the logic circuit 47 to embody the various modules discussed with respect to FIG. 2 and / or any other encoder system or subsystem described herein. The logic circuit can be used to perform the various operations discussed herein.
[0292] The video decoder 300 can be implemented by the logic circuit 47 in a similar manner to embody the various modules discussed with respect to FIG. 3the various modules discussed in connection with the decoder 300 in FIG. 1 and / or any other decoder system or subsystem described herein. In some examples, the video decoder 300 implemented by logic circuitry can include an image buffer (implemented by one or more processing units 46 or one or more memories 44, for example) and a graphics processing unit (implemented by one or more processing units 46, for example). The graphics processing unit can be communicatively coupled with the image buffer. The graphics processing unit can include the video decoder 300 implemented by logic circuitry 47 to embody the various modules discussed in connection with the decoder 300 in FIG. 1 and / or any other decoder system or subsystem described herein. FIG. 3 the various modules discussed in connection with the decoder 300 in FIG. 1 and / or any other decoder system or subsystem described herein.
[0293] In some examples, the antenna 42 in the video coding system 40 can be used to receive an encoded bitstream in video data. As discussed, the encoded bitstream can include data, indicators, index values, mode selection data, etc. discussed herein related to video frame encoding, such as data related to coding partitions (e.g., transform coefficients or quantized transform coefficients, optional indicators and / or data defining coding partitions as discussed). The video coding system 40 can also include the video decoder 300 coupled with the antenna 42 and used to decode the encoded bitstream. The display device 45 is used to present video frames.
[0294] FIG. 2 A block diagram of an example video encoder 200 that can implement the techniques in this disclosure. The video encoder 200 can perform intra-coding and inter-coding of video blocks within a video slice. Intra-coding relies on spatial prediction to reduce or remove spatial redundancy in the video within a certain video frame or picture. Inter-coding relies on temporal prediction to reduce or remove temporal redundancy in the video within adjacent frames or pictures of a video sequence. An intra-mode (I-mode) can be any of a number of spatial-based coding modes. An inter-mode, such as a uni-predictive (P-mode) or bi-predictive (B-mode) can be any of a number of temporal-based coding modes.
[0295] FIG. 2 A schematic / conceptual block diagram of an example video encoder 200 for implementing the techniques in this disclosure. In FIG. 2In the example of FIG, the video encoder 200 includes a residual calculation unit 204, a transform processing unit 206, a quantization unit 208, an inverse quantization unit 210, an inverse transform processing unit 212, a reconstruction unit 214, a buffer 216, a loop filter unit 220, a decoded picture buffer (DPB) 230, a prediction processing unit 260, and an entropy coding unit 270. The prediction processing unit 260 may include an inter estimation unit 242, an inter prediction unit 244, an intra estimation unit 252, an intra prediction unit 254, and a mode selection unit 262. The inter prediction unit 244 may further include a motion compensation unit (not shown). FIG. 2 The illustrated video encoder 200 may also be referred to as a hybrid video encoder or a video encoder based on a hybrid video codec.
[0296] For example, the residual calculation unit 204, the transform processing unit 206, the quantization unit 208, the prediction processing unit 260, and the entropy coding unit 270 form a forward signal path of the encoder 200, while the inverse quantization unit 210, the inverse transform processing unit 212, the reconstruction unit 214, the buffer 216, the loop filter 220, the decoded picture buffer (DPB) 230, and the prediction processing unit 260 form a backward signal path of the encoder, wherein the backward signal path of the encoder is connected to the decoder (see FIG. 3 The signal path of the decoder 300) corresponds to that of the decoder 300).
[0297] Encoder 200 is configured to receive, via input 202 or the like, an image 201 or an image block 203 within image 201. Image 201 may be an image within a sequence of images forming a video or video sequence. Image block 203 may also be referred to as a current image block or an image block to be decoded, and image 201 may be referred to as a current image or an image to be decoded (particularly when distinguishing a current image from other images, such as previously encoded and / or decoded images, within the same video sequence (i.e., a video sequence also including the current image) in video decoding).
[0298] segmentation
[0299] In an embodiment, the encoder 200 may include a segmentation unit ( FIG. 2 2 (not shown), for segmenting the image 201 into a plurality of blocks (e.g., block 203), typically into a plurality of non-overlapping blocks. The segmentation unit may be configured to use the same block size and a corresponding grid defining the block size for all images in the video sequence, or to vary the block size between images or subsets or groups of images, and to segment each image into corresponding blocks.
[0300] In HEVC and other video coding specifications, in order to generate a coded representation of an image, a set of coding tree units (CTUs) may be generated. Each of these CTUs may include a coding tree block consisting of luma pixels (samples), two corresponding coding tree blocks consisting of chroma pixels, and a syntax structure used to decode the pixels in these coding tree blocks. In a black and white image or an image including three different color planes, a CTU may include a coding tree block and a syntax structure used to decode the pixels in the coding tree block. A coding tree block may be a block consisting of N×N pixels. A CTU is also called a "tree block" or a "largest coding unit (LCU)." A CTU in HEVC may be broadly similar to a macroblock in other standards such as H.264 / AVC. However, a CTU is not necessarily limited to a specific size and may include one or more coding units (CUs). A slice may include an integer number of CTUs arranged consecutively in raster scan order.
[0301] In HEVC, a quadtree structure (represented as a coding tree) is used to partition a CTU into CUs to accommodate different local characteristics. A decision is made at the CU level as to whether to use inter-frame (temporal) prediction or intra-frame (spatial) prediction to decode an image region. A CU may include a coding block consisting of luma pixels and two corresponding coding blocks consisting of chroma pixels in an image, as well as syntax structures used to decode the pixels in these coding blocks. The image includes a luma pixel array, a Cb pixel array, and a Cr pixel array. In a black and white image or an image including three different color planes, a CU may include a coding block and syntax structures used to decode the pixels in the coding block. A coding block is a block of N×N pixels. In some examples, the size of a CU is the same as the size of a CTU. Each CU is decoded using a coding mode, which may be, for example, an intra-frame decoding mode or an inter-frame decoding mode. Other coding modes are also possible. Encoder 200 receives video data. Encoder 200 may encode each CTU into a slice of an image of the video data. As part of encoding a CTU, the prediction processing unit 260 or other processing units (including but not limited to) in the encoder 200 FIG. 2 The unit in the encoder 200 shown may perform partitioning to divide the CTBs in the CTU into progressively smaller blocks 203. These small blocks may be the coded blocks in the CU.
[0302] Syntax data in the bitstream can also define the size of the CTU. A slice includes a plurality of consecutive CTUs arranged in coding order. A video frame or image can be partitioned into one or more slices. As described above, each treeblock can be partitioned into coding units (CUs) according to a quadtree. In general, a quadtree data structure includes one node per CU, where a root node corresponds to a treeblock (e.g., a CTU). If a CU is partitioned into 4 sub-CUs, the node corresponding to the CU includes 4 sub-nodes, each corresponding to a sub-CU. The nodes in a quadtree structure include leaf nodes and non-leaf nodes. Leaf nodes have no children in the tree structure (i.e., leaf nodes are not further partitioned). Non-leaf nodes include root nodes in the tree structure. Each non-root node in the nodes corresponds to a sub-CU in a CU that corresponds to a parent node in the tree structure in which the non-root node resides. Each non-leaf node has one or more children in the tree structure.
[0303] Each node in the quadtree data structure can provide syntax data for the corresponding CU. For example, a node in the quadtree can include a split flag that indicates whether the CU corresponding to the node is partitioned into sub-CUs. Syntax elements for a CU can be redundantly defined and can be determined based on whether the CU is partitioned into sub-CUs. If a CU is not further partitioned, the CU is referred to as a leaf-CU. If a CU block is further partitioned, the CU can be generally referred to as a non-leaf-CU. Each level of partitioning is a quadtree partitioning into 4 sub-CUs. A black CU is an example of a leaf node (i.e., a block that is not further partitioned).
[0304] A CU functions similarly to a macroblock in the H.264 standard, except that a CU has no size distinction. For example, a treeblock can be partitioned into 4 sub-nodes (also referred to as sub-CUs), each of which can also be a parent node and partitioned into another 4 sub-nodes. Ultimately, the unpartitioned sub-nodes (referred to as leaf nodes of the quadtree) include the coding nodes (also referred to as leaf CUs). Syntax data related to the coded bitstream can define a maximum number of times a treeblock is partitioned, referred to as the maximum CU depth, and can also define a minimum size of the coding nodes. Accordingly, the bitstream can also define a smallest coding unit (SCU). The term "block" is used to refer to any of a CU, PU, or TU in the HEVC context or similar data structures in other standard contexts (e.g., macroblocks and sub-blocks thereof in H.264 / AVC).
[0305] In HEVC, each CU can be further partitioned into one, two, or four PUs according to the PU partition type. The same prediction process is performed within a PU and the relevant information is sent to the decoder in units of PUs. After the prediction process is performed according to the PU partition type, the CU can be partitioned into transform units (TUs) according to other quad-tree structures similar to the coding tree for the CU. One of the main features of the HEVC structure is the existence of multiple partitioning concepts such as CU, PU, and TU. PUs can be partitioned to be non-square. Syntax data associated with a CU can also describe, for example, partitioning of the CU into one or more PUs. TUs can be square or non-square (e.g., rectangular). Syntax data associated with a CU can describe, for example, partitioning of the CU into one or more TUs according to a quad-tree. The partitioning mode can differ for CUs that are encoded in skip or direct mode, in intra-prediction mode, or in inter-prediction mode.
[0306] However, Versatile Video Coding (VVC) does not distinguish between the concepts of PU and TU and supports more CU partition shapes. The size of a CU corresponds to the size of a coding node and can be square or non-square (e.g., rectangular). The size of a CU can range from 4x4 pixels (or 8x8 pixels) up to a treeblock size of 128x128 pixels or larger (e.g., 256x256 pixels).
[0307] After the encoder 200 generates the prediction blocks (e.g., luma, Cb, and Cr prediction blocks) for a CU, the encoder 200 can generate a residual block for the CU. For example, the encoder 100 can generate a luma residual block for the CU. Each pixel in the luma residual block for the CU indicates a difference between a luma pixel in the predicted luma block for the CU and a corresponding pixel in the original luma coding block for the CU. Additionally, the encoder 200 can generate a Cb residual block for the CU. Each pixel in the Cb residual block for the CU can indicate a difference between a Cb pixel in the predicted Cb block for the CU and a corresponding pixel in the original Cb coding block for the CU. The encoder 100 can also generate a Cr residual block for the CU. Each pixel in the Cr residual block for the CU can indicate a difference between a Cr pixel in the predicted Cr block for the CU and a corresponding pixel in the original Cr coding block for the CU.
[0308] In some examples, the encoder 100 does not transform the transform block. In such examples, the encoder 200 can perform the same processing on the residual pixel values as on the transform coefficients. Thus, in examples where the encoder 100 does not transform, the following discussion regarding transform coefficients and coefficient blocks can apply to transform blocks composed of residual pixels.
[0309] After generating a coefficient block (e.g., a luma coefficient block, a Cb coefficient block, or a Cr coefficient block), the encoder 200 can quantize the coefficient block to reduce the amount of data used to represent the coefficient block as much as possible, possibly for further compression. Quantization generally refers to a process that compresses a series of values into a single value. After the encoder 200 quantizes the coefficient block, the encoder 200 can entropy encode syntax elements that indicate the quantized transform coefficients. For example, the encoder 200 can perform context adaptive binary arithmetic coding (CABAC) or other entropy coding techniques on the syntax elements that indicate the quantized transform coefficients.
[0310] The encoder 200 can output a bitstream 271 that includes a sequence of bits that forms a coded representation of video data and associated data. Thus, the bitstream includes an encoded representation of the video data.
[0311] In J. An et al., “Block partitioning structure for next generation video coding,” ITU-T SG 16, COM 16-C966, September 2015 (hereinafter “VCEG Contribution COM 16-C966”), it was proposed to use a quad-tree-binary-tree (QTBT) partitioning technique for future video coding standards beyond HEVC. Simulation results showed that the proposed QTBT structure is more efficient than the quad-tree structure used in HEVC. In HEVC, inter prediction for small blocks is restricted to reduce the memory access for motion compensation, so that bi-prediction for 4x8 and 8x4 blocks and inter prediction for 4x4 blocks are not supported. The QTBT of JEM does not have these restrictions.
[0312] A CU in QTBT can be square or rectangular. For example, a coding tree unit (CTU) is first partitioned by a quad-tree structure. A quad-tree leaf node can be further partitioned by a binary tree structure. There are two types of splitting for binary tree splitting: symmetric horizontal splitting and symmetric vertical splitting. Each case is splitting a node horizontally or vertically from the middle. A binary tree leaf node is called a coding unit (CU), which is subject to prediction and transform processing without any further partitioning. That is, CU, PU and TU have the same block size in QTBT coding block structure. A CU sometimes contains coding blocks (CBs) of different color components, e.g., for P and B slices in 4:2:0 chroma format, a CU contains one luma CB and two chroma CBs; a CU sometimes contains CBs of a single component, e.g., for I slices, a CU contains only one luma CB or only two chroma CBs.
[0313] The following parameters are defined for the QTBT partitioning scheme:
[0314] - CTU size: root node size in quad-tree, same concept as in HEVC
[0315] - MinQTSize: minimum allowed quad-tree leaf node size
[0316] - MaxBTSize: maximum allowed binary tree root node size
[0317] - MaxBTDepth: maximum allowed binary tree depth
[0318] - MinBTSize: minimum allowed binary tree leaf node size
[0319] In one example of the QTBT partitioning structure, the CTU size is set to 128x128 luma samples and two corresponding blocks of 64x64 chroma samples, MinQTSize is set to 16x16, MaxBTSize is set to 64x64, MinBTSize (both width and height) is set to 4x4, and MaxBTDepth is set to 4. The CTU is first partitioned by quadtree, resulting in quadtree leaf nodes. The size of the quadtree leaf nodes ranges from 16x16 (i.e., MinQTSize) to 128x128 (i.e., the CTU size). When the size of a quadtree node is equal to MinQTSize, no further quadtree partitioning is considered. If a quadtree leaf node is 128x128, it is not further divided by binary tree because the size exceeds MaxBTSize (i.e., 64x64). Otherwise, the quadtree leaf node can be further partitioned by binary tree. Thus, the quadtree leaf node is also the root node of the binary tree with a binary tree depth of 0. When the binary tree depth reaches MaxBTDepth (i.e., 4), no further partitioning is considered. When the width of a binary tree node is equal to MinBTSize (i.e., 4), no further horizontal partitioning is considered. Similarly, when the height of a binary tree node is equal to MinBTSize, no further vertical partitioning is considered. The leaf nodes of the binary tree are further processed by prediction and transform processing without any further partitioning. In JEM, the maximum CTU size is 256x256 luma samples. The leaf nodes of the binary tree (CUs) can be further processed (e.g., perform prediction process and transform process) without any further partitioning.
[0320] In addition, the QTBT scheme supports that luma and chroma can have different QTBT structures. Currently, for P and B slices, the luma CTU and the chroma CTB in one CTU can use the same QTBT structure. However, for I slices, the luma CTB is partitioned into CUs by a QTBT structure, while the chroma CTB can be partitioned into chroma CUs by another QTBT structure. That is, the CUs in an I slice include coding blocks composed of luma components or coding blocks composed of two chroma components, while the CUs in a P or B slice include coding blocks composed of three color components.
[0321] The encoder 200 performs a rate-distortion optimization (RDO) process on the QTBT structure to determine block partitioning.
[0322] In addition, a block partitioning structure called multi-type-tree (MTT) is proposed in U.S. Patent Application Publication No. 20170208336 to replace the QT, BT, and / or QTBT-based CU structure. The MTT partitioning structure is still a recursive tree structure. In the MTT, multiple different partitioning structures (e.g., two or more partitioning structures) are used. For example, according to the MTT technique, at each depth of the tree structure, each respective non-leaf node in the tree structure can use three or more different partitioning structures. The depth of a node in the tree structure can refer to the path length (e.g., the number of splits) from the node to the root of the tree structure. A partitioning structure generally can refer to how many different blocks a block can be partitioned into. A partitioning structure can be a quad-tree partitioning structure that can partition a block into 4 blocks; a binary-tree partitioning structure that can partition a block into two blocks; or a ternary-tree partitioning structure that can partition a block into three blocks. In addition, a ternary-tree partitioning structure can not split the block from the middle. A partitioning structure can have multiple different partitioning types. A partitioning type can additionally define how a block is split, including symmetric or asymmetric split, uniform or non-uniform split, and / or horizontal or vertical split.
[0323] In the MTT, at each depth of the tree structure, the encoder 200 can further split a sub-tree using a particular partitioning type in one of the three or more partitioning structures. For example, the encoder 100 can be configured to determine the particular partitioning type according to QT, BT, triple-tree (TT), and other partitioning structures. In one example, the QT partitioning structure can include a square quad-tree or a rectangular quad-tree partitioning type. The encoder 200 can use square quad-tree partitioning to split a square block, i.e., split the square block into 4 equal-sized square blocks horizontally and vertically from the middle. Similarly, the encoder 200 can use rectangular quad-tree partitioning to split a rectangular block (e.g., non-square), i.e., split the rectangular block into 4 equal-sized rectangular blocks horizontally and vertically from the middle.
[0324] The BT partition structure can include at least one of a horizontal symmetric binary tree, a vertical symmetric binary tree, a horizontal asymmetric binary tree, or a vertical asymmetric binary tree partition type. For the horizontal symmetric binary tree partition type, the encoder 200 can be configured to horizontally split a block into two symmetric blocks of equal size from the middle. For the vertical symmetric binary tree partition type, the encoder 200 can be configured to vertically split a block into two symmetric blocks of equal size from the middle. For the horizontal asymmetric binary tree partition type, the encoder 100 can be configured to horizontally split a block into two blocks of different sizes. For example, one block can be ¼ of the parent block size and the other block can be ¾ of the parent block size. This type is similar to the PART_2NxnU or PART_2NxnD partition type. For the vertical asymmetric binary tree partition type, the encoder 100 can be configured to vertically split a block into two blocks of different sizes. For example, one block can be ¼ of the parent block size and the other block can be ¾ of the parent block size. This type is similar to the PART_nLx2N or PART_nRx2N partition type. In other examples, the asymmetric binary tree partition type can split a parent block into different sized portions. For example, one sub-block can be 3 / 8 of the parent block and the other sub-block can be 5 / 8 of the parent block. Of course, such a partition type can be a vertical partition type or a horizontal partition type.
[0325] The TT partition structure differs from the QT result or the BT structure in that the TT partition structure does not split a block from the middle. The middle region of the block remains in the same sub-block. Unlike the QT which results in 4 blocks or the binary tree which results in two blocks, the splitting according to the TT partition structure results in three blocks. Exemplary partition types according to the TT partition structure include (horizontal and vertical) symmetric partition types and (horizontal and vertical) asymmetric partition types. Further, the symmetric partition types according to the TT partition structure can be non-equal / non-uniform partition types or equal / uniform partition types. The asymmetric partition types according to the TT partition structure are non-equal / non-uniform partition types. In one example, the TT partition structure can include at least one of a horizontal equal / uniform symmetric ternary tree, a vertical equal / uniform symmetric ternary tree, a horizontal non-equal / non-uniform symmetric ternary tree, a vertical non-equal / non-uniform symmetric ternary tree, a horizontal non-equal / non-uniform asymmetric ternary tree, or a vertical non-equal / non-uniform asymmetric ternary tree partition type.
[0326] In general, the non-equal / uniform symmetric triple tree split type is a split type that is symmetric about the middle line of the block, but at least one of the three resulting blocks has a different size than the other two. One preferred example is that the side blocks are ¼ of the block size and the middle block is ½ of the block size. The equal / uniform symmetric triple tree split type is a split type that is symmetric about the middle line of the block, and the resulting blocks have the same size. This split can be used if the block height or width according to the vertical or horizontal partitioning is a multiple of 3. The non-equal / non-uniform asymmetric triple tree split type is a split type that is asymmetric about the middle line of the block, and at least one of the resulting blocks has a different size than the other two.
[0327] In an example of splitting a block (e.g., at a sub-tree node) into the asymmetric triple tree split type, the encoder 200 and / or the decoder 300 can limit two of the three splits to have the same size. This limitation can correspond to a limitation that the encoder 200 must adhere to when encoding the video data. In addition, in some examples, the encoder 200 and the decoder 300 can apply a limitation that the sum of the areas of two splits equals the area of the remaining split when splitting according to the asymmetric triple tree split type.
[0328] In some examples, the encoder 200 can be configured to select the split types for the QT, BT, and TT split structures from all of the split types described above, respectively. In other examples, the encoder 200 can be configured to determine the split types from only a subset of the split types described above. For example, the quad tree structure for certain block sizes or certain depths can use a subset of the split types described above (or other split types). The subset of supported split types can be indicated in the bitstream for use by the decoder 200, or can be predefined such that the encoder 200 and the decoder 300 can determine the subset without any indication.
[0329] In other examples, the number of supported split types can be fixed for all depths in all CTUs. That is, the encoder 200 and the decoder 300 can be preconfigured to use the same number of split types for any depth of a CTU. In other examples, the number of supported split types can vary, and can be determined according to the depth, the slice type, or other previously coded information. In one example, at depth 0 or depth 1 of the tree structure, only the QT split structure is used. At depths greater than 1, each of the QT, BT, and TT split structures can be used.
[0330] In some examples, the encoder 200 and / or the decoder 300 can impose preconfigured constraints on the supported partition types to avoid repeated partitioning of a certain region of a video picture or a region of a CTU. In one example, when a block is partitioned using an asymmetric partition type, the encoder 200 and / or the decoder 300 can be configured to not further partition the largest sub-block partitioned from the current block. For example, when a square block is partitioned according to an asymmetric partition type (similar to the PART_2Nx nU partition type), the largest sub-block (similar to the largest sub-block in the PART_2Nx nU partition type) among all the sub-blocks is a marked leaf node and cannot be further partitioned. However, the smaller sub-blocks (similar to the smaller sub-blocks in the PART_2Nx nU partition type) can be further partitioned.
[0331] In another example where constraints can be imposed on the supported partition types to avoid repeated partitioning of a certain region, when a block is partitioned using an asymmetric partition type, the largest sub-block partitioned from the current block cannot be further partitioned in the same direction. For example, when a square block is partitioned using an asymmetric partition type (similar to the PART_2Nx nU partition type), the encoder 200 and / or the decoder 300 can be configured to not partition the largest sub-block (similar to the largest sub-block in the PART_2Nx nU partition type) among all the sub-blocks in the horizontal direction.
[0332] In another example where constraints can be imposed on the supported partition types to avoid difficulty of further partitioning, when the width / height of a block is not a power of 2 (e.g., when the width / height is not 2, 4, 8, 16, etc.), the encoder 200 and / or the decoder 300 can be configured to not partition the block horizontally or vertically.
[0333] The above examples describe how the encoder 200 can be configured to perform MTT partitioning. The decoder 300 can then perform the same MTT partitioning as the encoder 200. In some examples, the same set of pre-defined rules can be employed at the decoder 300 side to determine how the encoder 200 partitioned the pictures of the video data. However, in many cases, the encoder 200 can determine a particular partition structure and partition types to use for a particular picture of the video data being coded based on rate-distortion criteria. Thus, in order for the decoder 300 to determine the partitioning of a particular picture, the encoder 200 can indicate syntax elements in the encoded bitstream that indicate how the picture was partitioned and the CTUs of the picture. The decoder 200 can parse such syntax elements and partition the picture and the CTUs accordingly.
[0334] In one example, the prediction processing unit 260 in the video encoder 200 can be configured to perform any combination of the above-described partitioning techniques, in particular motion estimation, details of which are described later.
[0335] As with the image 201, the block 203 is or can be considered to be a two-dimensional array or matrix of pixels having intensity values (pixel values), but the size of the block 203 is smaller than that of the image 201. In other words, the block 203 can comprise one array of pixels (e.g. an array of luminance values in case of a black and white image 201) or three arrays of pixels (e.g. one array of luminance values and two arrays of chrominance values in case of a color image 201) or any other number and / or type of arrays depending on the color format employed. The number of pixels in the block 203 in the horizontal and vertical direction (or axis) defines the size of the block 203.
[0336] FIG. 2 The illustrated encoder 200 is configured to encode the image 201 block-wise, e.g. to perform encoding and prediction for each block 203.
[0337] Residual calculation
[0338] The residual calculation unit 204 is configured to calculate a residual block 205 from the image block 203 and a prediction block 265 (further details of the prediction block 265 are provided below), e.g. to subtract the pixel values of the prediction block 265 from the pixel values of the image block 203 on a pixel-by-pixel basis (pixel-wise) to obtain the residual block 205 in the pixel domain.
[0339] Transform
[0340] The transform processing unit 206 can be configured to perform a transform, e.g. a discrete cosine transform (DCT) or a discrete sine transform (DST), on the pixel values of the residual block 205 to obtain transform coefficients 207 in the transform domain. The transform coefficients 207 can also be referred to as transform residual coefficients and can represent the residual block 205 in the transform domain.
[0341] The transform processing unit 206 can be configured to apply an integer approximation of a DCT / DST, such as the transforms specified for HEVC / H.265. In comparison to an orthogonal DCT transform, such an integer approximation is typically scaled by a certain factor. In order to maintain the norm of a residual block that has been processed by forward and inverse transform processing, an additional scaling factor is used as part of the transform process. The scaling factor is typically chosen according to certain constraints, such as the scaling factor being a power of two for a shift operation, the bit depth of the transform coefficients, a trade-off between accuracy and implementation cost, etc. Specific scaling factors are specified for the inverse transform (and for the corresponding inverse transform at the decoder 300 side by the inverse transform processing unit 212, etc.) at the encoder 200 side by the transform processing unit 206, etc. Accordingly, corresponding scaling factors can be specified for the forward transform at the encoder 200 side by the transform processing unit 206, etc.
[0342] Quantization
[0343] The quantization unit 208 is configured to quantize the transform coefficients 207 by scalar quantization or vector quantization, etc., resulting in quantized transform coefficients 209. The quantized transform coefficients 209 can also be referred to as quantized residual coefficients 209. The quantization process can reduce the bit depth associated with some or all of the transform coefficients 207. For example, an n-bit transform coefficient can be rounded down to an m-bit transform coefficient during quantization, where n is greater than m. The degree of quantization can be modified by adjusting a quantization parameter (QP). For example, for scalar quantization, different degrees of scaling can be applied to achieve finer or coarser quantization. A smaller quantization step size corresponds to finer quantization, while a larger quantization step size corresponds to coarser quantization. A suitable quantization step size can be indicated by a quantization parameter (QP). For example, the quantization parameter can be an index into a predefined set of quantization step sizes. For example, a smaller quantization parameter can correspond to fine quantization (smaller quantization step size), a larger quantization parameter can correspond to coarse quantization (larger quantization step size), and vice versa. Quantization can include division by the quantization step size, while the corresponding dequantization performed by the inverse quantization 210, etc., can include multiplication by the quantization step size. Embodiments according to some standards, such as HEVC, can use a quantization parameter to determine the quantization step size. In general, the quantization step size can be computed according to a fixed-point approximation of an equation that includes a division, depending on the quantization parameter. An additional scaling factor can be introduced for quantization and dequantization to recover the norm of a residual block that can have been modified due to scaling used in the fixed-point approximation of the equation for the quantization step size and the quantization parameter. In one exemplary implementation, the scaling of the inverse transform and dequantization can be combined. Alternatively, a custom quantization table can be used and signaled from the encoder to the decoder in a bitstream, etc. Quantization is a lossy operation, where the greater the quantization step size, the greater the loss.
[0344] The inverse quantization unit 210 is configured to perform inverse quantization of the quantized coefficients 208 to obtain dequantized coefficients 211, e.g., according to or using the same quantization step size as the quantization unit 208, and perform an inverse quantization scheme opposite to the quantization scheme performed by the quantization unit 208. The dequantized coefficients 211 can also be referred to as dequantized residual coefficients 211, which correspond to the transform coefficients 207, but are typically not identical to the transform coefficients 207 due to the loss caused by the quantization.
[0345] The inverse transform processing unit 212 is configured to perform an inverse transform of the transform performed by the transform processing unit 206, e.g., an inverse discrete cosine transform (DCT) or an inverse discrete sine transform (DST), to obtain inverse transform blocks 213 in the pixel domain. The inverse transform blocks 213 can also be referred to as inverse transform dequantized blocks 213 or inverse transform residual blocks 213.
[0346] The reconstruction unit 214, e.g., a summer 214, is configured to add the inverse transform blocks 213, i.e., the reconstructed residual blocks 213, to the prediction blocks 265, e.g., by adding the pixel point values of the reconstructed residual blocks 213 to the pixel point values of the prediction blocks 265, to obtain reconstructed blocks 215 in the pixel domain.
[0347] Optionally, the buffer unit 216, e.g., a column buffer 216, is configured to buffer or store the reconstructed blocks 215 and the corresponding pixel point values for intra prediction and the like. In other embodiments, the encoder can use the unfiltered reconstructed blocks and / or the corresponding pixel point values stored in the buffer unit 216 for any type of estimation and / or prediction, e.g., intra prediction.
[0348] In embodiments, the encoder 200 can be configured such that, e.g., the buffer period unit 216 is not only used to store the reconstructed blocks 215 for the intra prediction 254, but also for the loop filter unit 220 (not shown in FIG. 2 ), and / or such that, e.g., the buffer unit 216 and the decoded picture buffer 230 form one buffer. In other embodiments, the encoder 200 can be configured to use the filtered blocks 221 and / or blocks or pixel points from the decoded picture buffer 230 (neither of which is shown in FIG. 2 ) as input or basis for the intra prediction 254.
[0349] Loop filter unit 220 (or simply "loop filter" 220) is configured to filter reconstructed block 215 to obtain filtered block 221, e.g., to smooth pixel transitions or to improve video quality. Loop filter unit 220 is configured to represent one or more loop filters, such as a deblocking filter, a sample-adaptive offset (SAO) filter, or other filters, such as a bilateral filter, an adaptive loop filter (ALF), a sharpening or smoothing filter, or a collaborative filter. Although loop filter unit 220 is shown as an in-loop filter in FIG. 2, in other configurations, loop filter unit 220 can be implemented as a post-loop filter. Filtered block 221 can also be referred to as a filtered reconstructed block 221. After loop filter unit 220 filters a reconstructed coding block, decoded picture buffer 230 can store the reconstructed coding block. FIG. 2
[0350] In an embodiment, encoder 200 (correspondingly, loop filter unit 220) can be configured to output loop filter parameters (e.g., sample-adaptive offset information), e.g., directly or after entropy encoding by entropy encoding unit 270 or any other entropy coding unit, such that, e.g., decoder 300 can receive and use the same loop filter parameters for decoding.
[0351] The decoded picture buffer (DPB) 230 can be a reference picture memory that stores reference picture data for use in encoding video data by the video encoder 20. The DPB 230 can be made up of any of a variety of memory devices, such as dynamic random access memory (DRAM) (including synchronous DRAM (SDRAM)), magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of memory devices. The DPB 230 and the buffer 216 can be provided by the same memory device or separate memory devices. In an example, the decoded picture buffer (DPB) 230 is used to store the filtered block 221. The decoded picture buffer 230 can also be used to store other previously filtered blocks (e.g., previously filtered reconstructed blocks 221) in the same current picture or different pictures (e.g., previously reconstructed pictures) and can provide complete previously reconstructed (i.e., decoded) pictures (and corresponding reference blocks and pixels) and / or partial reconstructed current pictures (and corresponding reference blocks and pixels) for inter-prediction, etc. In an example, the decoded picture buffer (DPB) 230 is used to store the reconstructed block 215 if the reconstructed block 215 is reconstructed without in-loop filtering.
[0352] The prediction processing unit 260, also referred to as block prediction processing unit 260, is configured to receive or obtain the block 203 (current block 203 in the current picture 201) and reconstructed picture data, such as reference pixels from the same (current) picture from the buffer 216 and / or reference picture data 231 from one or more previously decoded pictures of the decoded picture buffer 230, and to process such data for prediction, i.e., to provide a prediction block 265 that can be an inter-predicted block 245 or an intra-predicted block 255.
[0353] The mode selection unit 262 can be configured to select a prediction mode (e.g., intra or inter prediction mode) and / or a corresponding prediction block 245 or 255 that is used as the prediction block 265 to calculate the residual block 205 and to reconstruct the reconstructed block 215.
[0354] In an embodiment, the mode selection unit 262 can be configured to select a prediction mode (e.g., from among the prediction modes supported by the prediction processing unit 260) that provides the best match or, in other words, the smallest residual (i.e., better compression in transmission or storage), or that provides the smallest signaling overhead (i.e., better compression in transmission or storage), or that balances both. The mode selection unit 262 can be configured to determine the prediction mode based on rate-distortion optimization (RDO), i.e., to select the prediction mode that provides the smallest rate-distortion optimization, or to select the prediction mode for which the related rate-distortion at least meets a prediction mode selection criterion.
[0355] The prediction processing (e.g., performed by the prediction processing unit 260) and the mode selection (e.g., performed by the mode selection unit 262) performed by the example encoder 200 will be described in detail below.
[0356] As described above, the encoder 200 is configured to determine or select the best or optimal prediction mode from a (predetermined) set of prediction modes. The set of prediction modes can include intra prediction modes and / or inter prediction modes, etc.
[0357] The set of intra prediction modes can include 35 different intra prediction modes, e.g., non-directional modes like the DC (or mean) mode and the planar mode or directional modes as defined in H.265, or can include 67 different intra prediction modes, e.g., non-directional modes like the DC (or mean) mode and the planar mode or directional modes as defined in H.266 under development.
[0358] The set of (possible) inter prediction modes depends on the available reference pictures (i.e., at least some of the aforementioned decoded pictures stored in the DPB 230, etc.) and other inter prediction parameters, e.g., on whether the entire reference picture or only a part of the reference picture (e.g., a search window region around the region of the current block) is used to search for the best matching reference block, and / or on whether pixel interpolation (e.g., one- or half-pixel interpolation and / or quarter-pixel interpolation) is used, etc.
[0359] In addition to the aforementioned prediction modes, the skip mode and / or the direct mode can also be used.
[0360] The prediction processing unit 260 can also be used to partition the block 203 into smaller block parts or sub-blocks, such as iteratively using quad-tree (QT) partitioning, binary-tree (BT) partitioning or triple-tree (TT) partitioning or any combination thereof; and to perform prediction on each of the block parts or sub-blocks, etc., wherein the mode selection includes selecting a tree structure for partitioning the block 203 and selecting a prediction mode to be used for each of the block parts or sub-blocks.
[0361] The inter-frame prediction unit 244 may include a motion estimation (ME) unit and a motion compensation (MC) unit (both in FIG. 2 , not shown). The motion estimation unit is configured to receive or obtain an image block 203 (a current image block 203 in a current image 201) and a decoded image 331, or at least one or more previously reconstructed blocks (e.g., reconstructed blocks of one or more other / different previously decoded images 331) for motion estimation. For example, a video sequence may include a current image and a previously decoded image 331, or in other words, the current image and the previously decoded image 331 may be part of or form a sequence of images in a video sequence. For example, the encoder 200 may be configured to select a reference block from a plurality of reference blocks in the same or different images in a plurality of other images, and provide the reference image (or reference image index, etc.) and / or the offset (spatial offset) between the position (x, y coordinates) of the reference block and the position of the current block as an inter-frame prediction parameter to the motion estimation unit ( FIG. 2 ). This offset is also called a motion vector (MV). Fusion is an important motion estimation tool used in HEVC and continues to be used by VVC. In order to perform fusion estimation, the first thing to do is to build a fusion candidate list, where each candidate includes all motion data, including information whether one or two reference image lists are used, as well as the reference index and motion vector of each list. The fusion candidate list is built based on the following candidates: a. Up to 4 spatial fusion candidates obtained from five spatially neighboring blocks; b. One temporal fusion candidate obtained from two temporally collocated blocks; c. Other fusion candidates, including combined bidirectional prediction candidates and zero motion vector candidates.
[0362] Intra prediction unit 254 is also configured to determine an intra prediction block 255 based on the intra prediction parameters (e.g., the selected intra prediction mode). In any case, after an intra prediction mode is selected for a block, intra prediction unit 254 is also configured to provide the intra prediction parameters to entropy encoding unit 270, i.e., provide information indicative of the selected intra prediction mode for the block. In one example, intra prediction unit 254 can be configured to perform any combination of the intra prediction techniques described below.
[0363] Entropy encoding unit 270 is configured to apply (or not apply) an entropy encoding algorithm or scheme (e.g., variable length coding (VLC), context adaptive VLC (CAVLC), arithmetic coding, syntax-based context-adaptive binary arithmetic coding (SBAC), probability interval partitioning entropy (PIPE) coding, or other entropy encoding methodologies or techniques) to individual or all of the quantized residual coefficients 209, inter prediction parameters, intra prediction parameters, and / or loop filter parameters to result in encoded image data 271 that can be output by output 272 in the form of an encoded video bitstream 21, etc. The encoded video bitstream 21 can be transmitted to video decoder 30 or archived for later transmission or retrieval by video decoder 30. Entropy encoding unit 270 can also be configured to entropy encode other syntax elements for the current video slice being encoded.
[0364] Other structural variations of video encoder 200 can be used to encode a video stream. For example, a non-transform-based encoder 200 can directly quantize the residual signal without transform processing unit 206 for certain blocks or frames. In another implementation, encoder 200 can include quantization unit 208 and inverse quantization unit 210 combined into a single unit.
[0365] FIG. 3 An exemplary video decoder 300 for implementing the techniques of this application is shown. Video decoder 300 is configured to receive encoded image data (e.g., an encoded video bitstream) 271, e.g., encoded by encoder 200, to result in decoded images 331. During the decoding process, video decoder 300 receives video data from video encoder 200, e.g., an encoded video bitstream and associated syntax elements representing blocks of an image in an encoded video slice.
[0366] In FIG. 3In the example of FIG. 3, the decoder 300 includes an entropy decoding unit 304, a dequantization unit 310, an inverse transform processing unit 312, a reconstruction unit 314 (e.g., summer 314), a buffer 316, an in-loop filter 320, a decoded picture buffer 330, and a prediction processing unit 360. The prediction processing unit 360 can include an inter prediction unit 344, an intra prediction unit 354, and a mode selection unit 362. In some examples, the video decoder 300 can perform a decoding pass that generally is reciprocal to the encoding pass described with respect to the video encoder 200 in FIG. 2. FIG. 2
[0367] The entropy decoding unit 304 is configured to perform entropy decoding on the encoded picture data 271 to obtain quantized coefficients 309 and / or (decoded) coding parameters (not shown in FIG. 3), such as any or all of inter prediction parameters, intra prediction parameters, in-loop filter parameters, and / or other syntax elements. The entropy decoding unit 304 is also configured to forward the inter prediction parameters, the intra prediction parameters, and / or other syntax elements to the prediction processing unit 360. The video decoder 300 can receive the syntax elements at a video slice level and / or a video block level. FIG. 3
[0368] The dequantization unit 310 can be functionally identical to the dequantization unit 110, the inverse transform processing unit 312 can be functionally identical to the inverse transform processing unit 112, the reconstruction unit 314 can be functionally identical to the reconstruction unit 114, the buffer 316 can be functionally identical to the buffer 116, the in-loop filter 320 can be functionally identical to the in-loop filter 120, and the decoded picture buffer 330 can be functionally identical to the decoded picture buffer 130.
[0369] The prediction processing unit 360 can include an inter prediction unit 344 and an intra prediction unit 354, where the inter prediction unit 344 can be functionally similar to the inter prediction unit 144 and the intra prediction unit 354 can be functionally similar to the intra prediction unit 154. The prediction processing unit 360 is generally configured to perform block prediction and / or obtain prediction blocks 365 from the encoded data 21, as well as receive or obtain prediction-related parameters and / or information about a selected prediction mode from the entropy decoding unit 304 or the like (explicitly or implicitly).
[0370] When the video slice is coded as an intra coded (I) slice, intra-prediction unit 354 in prediction processing unit 360 can be used to generate the prediction block 365 for a video block of the current video slice based on the indicated intra-prediction mode and data from previously decoded blocks in the current frame or picture. When the video slice is coded as an inter-coded (i.e., B or P) slice, inter-prediction unit 344 (e.g., a motion compensation unit) in prediction processing unit 360 can be used to generate the prediction block 365 for a video block of the current video slice based on the motion vectors and other syntax elements received from entropy decoding unit 304. For inter prediction, the prediction block can be generated based on one of the reference pictures in one of the reference picture lists. Video decoder 300 can construct the reference frame lists 0 and 1 using default construction techniques based on reference pictures stored in DPB 330.
[0371] Prediction processing unit 360 can be configured to determine the prediction information of the video blocks of the current video slice by parsing the motion vectors and other syntax elements, and use the prediction information to generate the prediction block for the current video block being decoded. For example, prediction processing unit 360 uses some of the syntax elements received to determine the prediction mode used to code the video blocks of the video slice (e.g., intra-prediction or inter-prediction), the inter-prediction slice type (e.g., B slice, P slice, or GPB slice), the construction information for one or more reference picture lists for the slice, the motion vectors for each inter-coded video block of the slice, the inter-prediction status for each inter-coded video block of the slice, and other information to decode the video blocks in the current video slice.
[0372] Inverse quantization unit 310 can be configured to inverse quantize, i.e., de-quantize, the quantized transform coefficients provided in the bitstream and decoded by entropy decoding unit 304. The inverse quantization process can include use of a quantization parameter calculated by video encoder 100 for each video block in the video slice to determine a degree of quantization that should be performed, and likewise a degree of inverse quantization that should be performed.
[0373] Inverse transform processing unit 312 can be configured to inverse transform (e.g., inverse DCT, inverse integer transform or a conceptually similar inverse transform process) the transform coefficients to produce residual blocks in the pixel domain.
[0374] Reconstruction unit 314 (e.g., a summer 314) can be configured to add the inverse transformed block 313 (i.e., the reconstructed residual block 313) to the prediction block 365 to form a reconstructed block 315 in the pixel domain by adding pixel point values in the reconstructed residual block 313 to pixel point values in the prediction block 365.
[0375] In-loop filter unit 320 (in or after the coding loop) is configured to filter reconstructed blocks 315 to produce filtered blocks 321 to smooth pixel transitions or improve video quality, etc. In one example, in-loop filter unit 320 can be configured to perform any combination of the filtering techniques described below. In-loop filter unit 320 is configured to represent one or more in-loop filters, such as a deblocking filter, a sample-adaptive offset (SAO) filter, or other filters such as a bilateral filter, an adaptive loop filter (ALF), a sharpening or smoothing filter, or a collaborative filter. Although in-loop filter unit 320 is shown as an in-loop filter in FIG. 3, in other configurations, in-loop filter unit 320 can be implemented as a post-loop filter. FIG. 3
[0376] Decoded video blocks 321 in a given frame or picture are then stored in decoded picture buffer 330, which stores reference pictures for subsequent motion compensation.
[0377] Decoder 300 is configured to output decoded pictures 311, e.g., through output 312, for presentation to or viewing by a user.
[0378] Other variations of video decoder 300 can be used to decode a compressed bitstream. For example, decoder 300 can produce an output video stream without in-loop filter unit 320. For example, a non-transform-based decoder 300 can directly dequantize a residual signal without inverse transform processing unit 312 for certain blocks or frames. In another implementation, video decoder 300 can include dequantization unit 310 and inverse transform processing unit 312 combined into a single unit.
[0379] FIG. 4 A diagram of network device 400 (e.g., a coding device) is provided for one embodiment of the present application. Network device 400 is suitable for implementing the disclosed embodiments described herein. In one embodiment, network device 400 can be a decoder (e.g., video decoder 300 in FIG. 1A ) or an encoder (e.g., video encoder 200 in FIG. 1A ). In one embodiment, network device 400 can be one or more components of video decoder 300 as described above or video encoder 200 as described above in FIG. 1A . In one embodiment, network device 400 can be one or more components of video decoder 300 as described above or video encoder 200 as described above in FIG. 1A .
[0380] The network device 400 includes ingress ports 410 and receive units (Rx) 420 for receiving data, a processor, logic unit, or central processing unit (CPU) 430 for processing the data, transmit units (Tx) 440 and egress ports 450 for transmitting the data, and a memory 460 for storing the data. The network device 400 can also include optical-to-electrical (OE) components and electrical-to-optical (EO) components coupled to the ingress ports 410, receive units 420, transmit units 440, and egress ports 450 for egress or ingress of optical or electrical signals.
[0381] The processor 430 is implemented by hardware and software. The processor 430 can be implemented as one or more CPU chips, cores (e.g., a multi-core processor), FPGAs, ASICs, and DSPs. The processor 430 is in communication with the ingress ports 410, receive units 420, transmit units 440, egress ports 450, and memory 460. The processor 430 includes a coding module 470. The coding module 470 implements the disclosed embodiments described above. For example, the coding module 470 performs, processes, prepares, or provides various coding operations. Thus, inclusion of the coding module 470 provides substantial improvement to the functionality of the network device 400 and affects the network device 400’s transition to different states. Alternatively, the coding module 470 is implemented in instructions stored in the memory 460 and executed by the processor 430.
[0382] The memory 460 includes one or more disks, tape drives, or solid-state drives and can be used as an over-flow data storage device, to store programs when such programs are selected for execution, or to store instructions and data read from an executed program. The memory 460 can be volatile and / or non-volatile, and can be read-only memory (ROM), random-access memory (RAM), ternary content-addressable memory (TCAM), or static random-access memory (SRAM).
[0383] FIG. 5 A simplified block diagram of an apparatus 500 is provided for an exemplary embodiment. The apparatus 500 can be used as the network device 400 FIG. 1AThe source device 12 and the destination device 14 in FIG. 1 can each be one of the apparatuses 500. The apparatus 500 can implement the techniques of this disclosure. The apparatus 500 can be a computing system including a plurality of computing devices, or a single computing device such as a mobile phone, a tablet, a laptop computer, a notebook computer, a desktop computer, etc.
[0384] The processor 502 in the apparatus 500 can be a central processing unit. Alternatively, the processor 502 can be any other type of device, either existing or yet to be developed, that is capable of manipulating or processing information. While one processor, such as the processor 502 shown, can be used to implement the disclosed implementations, using a plurality of processors can increase speed and efficiency.
[0385] In one implementation, the memory 504 in the apparatus 500 can be a read only memory (ROM) device or a random access memory (RAM) device. Any other suitable type of storage device can be used as the memory 504. The memory 504 can include code and data 506 that is accessed by the processor 502 via the bus 512. The memory 504 can also include an operating system 508 and application programs 510 including at least one program that causes the processor 502 to perform the methods described herein. For example, the application programs 510 can include applications 1 through N, which also include a video coding application that performs the methods described herein. The apparatus 500 can also include additional memory in the form of a storage 514, which can be a memory card or the like used with a mobile computing device. As video communication sessions can include a large amount of information, they can be stored in whole or in part in the storage 514 and loaded into the memory 504 as needed for processing.
[0386] The apparatus 500 can also include one or more output devices, such as a display 518. In one example, the display 518 can be a touch-sensitive display that combines a display with a touch-sensitive element that can be used to sense touch inputs. The display 518 can be coupled with the processor 502 via the bus 512. Other output devices can be provided in addition to or instead of the display 518 to enable a user to program or otherwise use the apparatus 500. When the output device is or includes a display, the display can be a liquid crystal display (LCD), a cathode-ray tube (CRT) display, a plasma display, or a light emitting diode (LED) display (e.g., an organic LED (OLED) display).
[0387] The device 500 can also include or be in communication with an image sensing device 520. The image sensing device 520 can be a camera, or any other image sensing device 520 now existing or hereafter developed that is capable of sensing an image, such as an image of a user operating the device 500, etc. The image sensing device 520 can be positioned toward a user operating the device 500. In one example, the image sensing device 520 can be positioned and oriented such that the field of view includes an area proximate to the display 518 from which the display 518 is viewable.
[0388] The device 500 can also include or be in communication with a sound sensing device 522. The sound sensing device 522 can be a microphone, or any other sound sensing device now existing or hereafter developed that is capable of sensing sound in the vicinity of the device 500, etc. The sound sensing device 522 can be positioned toward a user operating the device 500. The sound sensing device 522 can be used to receive sounds, such as speech or other utterances, made by a user while operating the device 500.
[0389] Although FIG. 5 Although the processor 502 and the memory 504 in the device 500 are described as being integrated in a single device, other configurations can be used. The operations of the processor 502 can be distributed across multiple machines (each machine including one or more processors) that can be coupled directly or through a local or remote network. The memory 504 can be distributed across multiple machines such as network-based memory or memory in multiple machines performing the operations of the device 500. Although the bus 512 of the device 500 is shown in this figure as a single bus, the bus 512 can be composed of multiple buses. Also, the secondary storage 514 can be directly coupled to the other components in the device 500, or can be accessed via a network and can comprise a single integrated unit (such as one storage card) or multiple units (such as multiple storage cards). Thus, the device 500 can have a wide range of suitable configurations.
[0390] In 4:2:0 sampling, both the height and width of the two chroma arrays are half that of the luma array. FIG. 6A The nominal vertical and horizontal relative positions of luma and chroma sample points in an image are shown.
[0391] FIG. 8 For the conceptual diagram of exemplary positions, scaling parameters used to scale a down-sampled reconstructed luma block are derived from these positions. For example, FIG. 8 An example of 4:2:0 sampling is shown, with scaling parameters a and b.
[0392] In general, when LM prediction mode is used, video encoder 20 and video decoder 30 can invoke the following steps. Video encoder 20 and video decoder 30 can downsample neighboring luma samples. Video encoder 20 and video decoder 30 can derive linear parameters (i.e., a and b), also referred to as scaling parameters. Video encoder 20 and video decoder 30 can downsample the current luma block and derive a predictor (e.g., a prediction block) based on the linear parameters and the downsampled luma block. There can be many ways to downsample.
[0393] FIG. 6B For another example conceptual diagram of luma positions and chroma positions, the luma positions and chroma positions are used to downsample samples in a luma block to generate a prediction block. As shown in FIG. 6B , a 6-tap filter is used to predict the chroma sample represented by the solid triangle based on the six luma samples represented by the six solid (i.e., black solid) circles.
[0394] FIG. 6C For another example conceptual diagram of luma positions and chroma positions, the luma positions and chroma positions are used to downsample samples in a luma block to generate a prediction block. As shown in FIG. 6C , a 6-tap filter is used to predict the chroma sample represented by the solid triangle based on the six luma samples represented by the six solid (i.e., black solid) circles.
[0395] In one or more examples, the functions described can be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions can be stored or transmitted over as one or more instructions or code on a computer-readable medium and executed by a hardware-based processing unit. Computer-readable media can include computer-readable storage media, which corresponds to a tangible medium such as data storage media, or communication media including any medium that facilitates
[0396] Video compression techniques, such as motion compensation, intra prediction, and in-loop filters, have been shown to be effective, and are employed in various video coding standards, such as H.264 / AVC and H.265 / HEVC. Intra prediction can be used when no reference picture is available or the current block or picture is not coded using inter prediction. The reference samples used for intra prediction are usually derived from previously coded (or reconstructed) neighboring blocks in the same picture. For example, both H.264 / AVC and H.265 / HEVC use the boundary samples of neighboring blocks as the reference samples for intra prediction. To accommodate different texture or structure characteristics, there are multiple different intra prediction modes. Different prediction signal derivation methods are used in each mode. For example, H.265 / HEVC supports 35 intra prediction modes in total, as shown in Table 1. FIG. 6D
[0397] Intra prediction algorithm description in H.265 / HEVC
[0398] Intra prediction uses the decoded boundary samples in neighboring blocks as the reference samples. The encoder selects the best luma intra prediction mode for each block (i.e., the mode that provides the most accurate prediction for the current block) from 35 options: 33 directional prediction modes, the DC mode, and the planar mode. FIG. 6D The mapping between the intra prediction directions and the intra prediction mode numbers is shown. Note that the latest video coding technology, such as versatile video coding (VVC), has developed 65 or even more intra prediction modes, so as to be able to capture any edge direction presented in natural videos. Among these prediction modes, the mode 10 in FIG. 6D is also called the “horizontal mode”, and the mode 26 in FIG. 6D is also called the “vertical mode”.
[0399] FIG. 7 The reference samples for a block are shown. As shown in FIG. 7 , the block “CUR” is the current block to be predicted, and the dark samples around the current block boundary are the reference samples used for predicting the current block. These reference samples are the pixels in the reconstructed blocks (also called neighboring blocks) that are adjacent to the current block. The block “CUR” can be a luma block or a chroma block, depending on the type of the block to be predicted. The prediction signal can be derived by mapping the reference samples according to the specific method indicated by the intra prediction mode.
[0400] Reference sample replacement
[0401] For several reasons, some or all reference samples can not be available for intra prediction. For example, samples outside the picture, slice, or tile are not available for prediction. In addition, when performing constrained intra prediction, to avoid error propagation caused by previously pictures that can be received and reconstructed with errors, reference samples belonging to PUs that are inter predicted are omitted. As described herein, a reference sample of a current coding block is available if it is within the current picture, slice, or tile, if it can be reconstructed before the current coding block is decoded, and / or if it is not omitted due to a coding decision made by the encoder. In HEVC, all prediction modes can be used after replacing unavailable reference samples. In the extreme case where all reference samples are unavailable, a nominal average sample value (e.g., 128 in 8-bit data) at a given bit depth is used to replace all reference samples. If at least one reference sample is marked as available for intra prediction, the available reference samples are used to replace the unavailable reference samples. The reference samples are scanned in a clockwise direction and the unavailable sample values are replaced with the latest available sample value, thereby replacing the unavailable reference samples. If the first sample scanned in the clockwise direction is unavailable, the first sample is replaced with the first available reference sample encountered when scanning the samples in the clockwise direction. Here, "replacing" can also be referred to as padding, and the replaced samples can also be referred to as padded samples.
[0402] Constrained Intra Prediction
[0403] Constrained Intra Prediction is a tool to avoid spatial noise propagation due to spatial intra prediction using reference samples that are not consistent between the encoder and the decoder. Packet loss occurs when a slice that is inter coded is transmitted. In this case, reference samples that are not consistent between the encoder and the decoder can occur. In the case of using lossy decoder-side memory compression, reference samples that are not consistent between the encoder and the decoder can also occur. When constrained intra prediction is enabled, the samples that are inter predicted are marked as unavailable for intra prediction, and the unavailable samples can be padded using the padding method disclosed above, thereby performing full intra prediction estimation at the encoding side or performing intra prediction at the decoding side.
[0404] Cross-Component Linear Model (CCLM) Prediction
[0405] Cross-component linear model (CCLM) prediction, also referred to as cross-component intra prediction (CCIP), is a class of intra prediction modes used to reduce cross-component redundancy in intra prediction. FIG. 8 (including FIG. 8 A and FIG. 8B) is a schematic diagram of an exemplary mechanism for performing CCLM intra prediction. FIG. 8 An example of 4:2:0 sampling is shown. FIG. 8 An example of the locations of the sample points in the current block and their left and above neighboring sample points involved in CCLM mode is shown. The white squares are the sample points in the current block, and the shaded circles are the reconstructed sample points in the neighboring blocks. FIG. 8 A shows an example of neighboring reconstructed samples of a chroma block. FIG. 8 B shows an example of neighboring reconstructed samples of a collocated luma block. If the video format is YUV 4:2:0, there is one 16x16 luma block and two 8x8 chroma blocks.
[0406] The intra estimation unit 254 in the encoder 200 and / or the intra prediction unit 354 in the decoder 300 can perform CCLM intra prediction. CCLM intra prediction is used to predict the chroma sample points 803 in the chroma block 801. The chroma sample points 803 occur at integer locations shown in squares. CCLM intra prediction is performed in part from neighboring reference sample points shown in black circles. The chroma sample points 803 are not predicted entirely from neighboring chroma reference sample points 805. The chroma sample points 803 are also predicted from luma reference sample points 813 and neighboring luma reference sample points 815. Specifically, one CU includes one luma block 811 and two chroma blocks 801. A model is generated that relates the chroma sample points 803 in the same CU to the luma reference sample points 813. The neighboring luma reference sample points 815 are compared to the neighboring chroma reference sample points 805 to determine the linear coefficients of the model.
[0407] In reconstructing the luma reference sample points 813, the luma reference sample points 813 are denoted as reconstructed luma sample points (Rec 'L). In reconstructing the neighboring chroma reference sample points 805, the neighboring chroma reference sample points 805 are denoted as reconstructed neighboring chroma sample points (Rec 'C).
[0408] As shown, the sample points included in the luma block 811 are four times as many as the sample points in the chroma block 801. In FIG. 9In the illustrated example, the chroma block 801 includes NxN pixels, while the luma block 811 includes 2Nx2N pixels. Thus, the resolution of the luma block 811 is four times that of the chroma block 801. To predict the luma reference pixel 813 and the neighboring luma reference pixels 815, the luma reference pixel 813 and the neighboring luma reference pixels 815 are down-sampled so as to be accurately compared with the neighboring chroma reference pixels 805 and the chroma pixels 803. The down-sampling process is to reduce the resolution of a set of pixels. For example, when using YUV 4:2:0 format, the luma pixels can be down-sampled by a factor of four (e.g., width divided by 2, height divided by 2). YUV is a color encoding system that uses a color space including a luma component Y and two chroma components U and V.
[0409] In CCLM prediction, the chroma pixels are predicted from the down-sampled corresponding reconstructed luma pixels (current luma block) using the following linear model:
[0410] pred C (i,j) = a - rec L '(i,j) + β (1)
[0411] where pred C (i,j) denotes the predicted chroma pixels, rec L '(i,j) denotes the down-sampled corresponding reconstructed luma pixels. Minimizing the regression error between the neighboring reconstructed luma and chroma pixels around the current luma and chroma blocks, the parameters a and β can be derived as follows:
[0412]
[0413] where L(n) denotes the down-sampled top and left neighboring reconstructed luma pixels, C(n) denotes the top and left neighboring reconstructed chroma pixels, and N has a value equal to the number of pixels used to derive the two coefficients. For square coding blocks, the above two equations are used directly. This regression error minimization calculation is also part of the decoding process, not just an encoder search operation, so syntax is not used to indicate the values of a and β.
[0414] In addition to using the regression error minimization method (also known as the least square (LS) method) described above, the maximum and minimum luma sample values can also be used to derive the linear model coefficients a and b. The latter method is also known as the MaxMin method. In the MaxMin method, after downsampling the above and left neighboring reconstructed luma samples, a one-to-one relationship between the neighboring reconstructed luma samples and the above and left neighboring reconstructed chroma samples is obtained. Thus, the linear model coefficients a and b can be derived using the pairs of luma and chroma samples based on the one-to-one relationship. First, the minimum and maximum values among the downsampled above and left neighboring reconstructed luma samples are identified, and then the corresponding samples from the above and left neighboring reconstructed chroma templates are identified, thus obtaining the pairs of luma and chroma samples. The pairs of luma and chroma samples are shown as (A, B) in FIG. 9 The linear model parameters a and b are obtained according to the following equations:
[0415]
[0416] where (x A , y A ) is the coordinate of A in FIG. 9 , and (x B , y B ) is the coordinate of B in FIG. 10 .
[0417] The CCLM luma-to-chroma prediction mode is added as an additional chroma intra prediction mode. At the encoder side, an additional rate-distortion (RD) cost check is added for the chroma component in order to select the chroma intra prediction mode.
[0418] For simplicity, the term "template" is used herein to represent the neighboring reconstructed chroma samples and the downsampled neighboring reconstructed luma samples. These neighboring reconstructed chroma samples and the downsampled neighboring reconstructed luma samples are also referred to as the reference samples in the template. FIG. 10 The template of a chroma block and the downsampled corresponding luma block is shown. In FIG. 11In the illustrated example, the luma block' 1020 is a down-sampled luma block of the current luma block and has the same spatial resolution as the chroma block 1040. That is, the luma block' 1020 is a down-sampled collocated luma block of the chroma block 1040. The above template 1002 includes neighboring reconstructed chroma pixels above the current chroma block 1040 and down-sampled corresponding neighboring reconstructed luma pixels above the luma block' 1020. The down-sampled neighboring reconstructed luma pixels above the luma block' 1020 are obtained from neighboring pixels above the luma block. As described herein, the neighboring pixels above the luma block can include the neighboring pixels directly above the luma block, the neighboring pixels that are not adjacent to the luma block, or both. The left template 1004 includes left neighboring reconstructed chroma pixels and down-sampled corresponding left neighboring reconstructed luma pixels. The neighboring reconstructed chroma pixels above are also referred to as an “above chroma template,” such as the above chroma template 1006. The down-sampled corresponding neighboring reconstructed luma pixels above are referred to as an “above luma template,” such as the above luma template 1008. The left neighboring reconstructed chroma pixels are also referred to as a “left chroma template,” such as the left chroma template 1010. The down-sampled corresponding left neighboring reconstructed luma pixels are referred to as a “left luma template,” such as the left luma template 1012. The elements included in a template are referred to as reference pixels in that template.
[0419] In existing CCLM applications, if there is one reference pixel in the above template or the left template that is marked as unavailable, the entire template is not used. FIG. 11 An example of a template including an unavailable reference pixel is shown. In FIG. 12 In the illustrated example, for the chroma block 1140, if there is an unavailable reference pixel in the above template, such as the reference pixel A2 in 1102, the above template is not used to derive the linear model coefficients. Similarly, if there is one unavailable reference pixel in the left template, such as the reference pixel B2 in 1104, the left template is not used to derive the linear model coefficients. This can degrade the coding performance of intra prediction.
[0420] Multi-directional linear model
[0421] The reference pixels in the above template and the left template can be used in two other CCLM modes (i.e., CCLM_T mode and CCLM_L mode) in addition to being used to calculate the linear model coefficients. CCLM_T and CCLM_L can also be collectively referred to as multi-directional linear model (MDLM). FIG. 13 Reference pixels used in CCLM_T mode are shown, FIG. 12 Reference pixels used in CCLM_L mode are shown. As described herein, the reference pixels used in CCLM_T mode and CCLM_L mode can include the reference pixels directly above the current block, the reference pixels that are not adjacent to the current block, or both.FIG. 13 As shown, only the reference samples in the top template (e.g., reference samples 1202 and 1204) are used to calculate the linear model coefficients in the CCLM_T mode. As shown, only the reference samples in the left template (e.g., reference samples 1212 and 1214) are used to calculate the linear model coefficients in the CCLM_L mode. The number of reference samples used in these modes is W+H, where W is the width of the chroma block and H is the height of the chroma block. FIG. 14 As shown, only the reference samples in the top template (e.g., reference samples 1202 and 1204) are used to calculate the linear model coefficients in the CCLM_T mode. As shown, only the reference samples in the left template (e.g., reference samples 1212 and 1214) are used to calculate the linear model coefficients in the CCLM_L mode. The number of reference samples used in these modes is W+H, where W is the width of the chroma block and H is the height of the chroma block.
[0422] The CCLM mode and the MDLM mode (i.e., the CCLM_T mode and the CCLM_L mode) can be used simultaneously or alternatively. For example, only the CCLM mode is used in the codec, only the MDLM mode is used in the codec, or both the CCLM mode and the MDLM mode are used in the codec. In the latter case, three modes (i.e., CCLM, CCLM_T, CCLM_L) are added as three additional chroma intra prediction modes. At the encoder side, three additional RD cost checks are added for the chroma component to select the chroma intra prediction mode. In the existing MDLM method, the LS method is used to derive the model parameters or the model coefficients. If the available reference samples are not enough, a padding operation is used to copy the pixel value of the farthest pixel or extract the pixel value from the available reference samples.
[0423] However, using the LS method to obtain the linear model coefficients of the MDLM mode results in a very complex calculation. In addition, in the existing MDLM mode, the positions of some template pixels can be far away from the current block, especially for non-square blocks. For example, the rightmost reference sample in the top template and the lower reference sample in the left template are far away from the current block. Therefore, the correlation between these reference samples and the current block is small, resulting in a low prediction efficiency of the chroma block. The techniques provided herein can reduce the complexity of the MDLM and improve the correlation between the template pixels and the current block.
[0424] In one example, when the MaxMin method is used to determine the model coefficients, in addition to using the reference samples in both the top template and the left template, only the reference samples in the left template or the top template can be used. For example, in the MaxMin method, only the reference samples in the top luma template are checked to determine the maximum luma value and the minimum luma value. Alternatively, only the reference samples in the left luma template are checked to determine the maximum luma value and the minimum luma value. After the positions of the pixels for determining the maximum luma value and the minimum luma value are determined, the corresponding chroma pixel values can be obtained according to the positions of the minimum luma value and the maximum luma value.
[0425] FIG. 14An illustration of one example of reference pixels used to determine the maximum and minimum luma values. In FIG. 15 In the example shown, the number of reference pixels in the above luma template (denoted as W1) is greater than the width of the current chroma block (denoted as W), and the number of reference pixels in the left luma template (denoted as H1) is greater than the height of the current chroma block (denoted as H). FIG. 15 An illustration of another example of reference pixels used to determine the maximum and minimum luma values. In FIG. 16 In the example shown, the number of above luma reference pixels is equal to the width W of the current chroma block, and the number of left luma reference pixels is equal to the height H of the current chroma block.
[0426] In summary, in addition to the LS method, the MaxMin method can also be used in the MDLM mode. In other words, the MaxMin method can be used to derive the model coefficients for the CCLM_T mode and the CCLM_L mode. Since the MaxMin method has a lower computational complexity than the LS method, the provided method reduces the computational complexity and thus improves the MDLM. In addition, the existing MaxMin method uses both the above template and the left template for the CCLM mode. The provided method uses either the above template or the left template to derive the model coefficients, which further reduces the computational complexity of the mode.
[0427] According to other examples of the techniques provided herein, the selection of reference pixels in the templates is performed to increase the correlation between the reference pixels and the current block. The most W2 reference pixels in the above template are used. The most H2 reference pixels in the left template are used. In this way, since the reference pixels that are farther away from the W2 reference pixels in the above template or the H2 reference pixels in the left template have less correlation with the current block, these reference pixels are not used.
[0428] In addition, when the MaxMin method is used to derive the model coefficients, only the available reference pixels are used, and the unavailable reference pixels are not replaced by padding. For example, only the available pixels in the above luma template are examined to determine the maximum and minimum luma values in the CCLM_T mode. Since the W2 reference pixels in the above template are used, the number of available pixels (denoted as W3) is less than or equal to W2. Similarly, the available pixels in the left luma template are examined to determine the maximum and minimum values in the CCLM_L mode, and the number of available pixels (denoted as H3) can be less than or equal to H2. The relationship between W2 and W3 and H2 and H3 is shown in FIG. 17 where W3≤W2, H3≤H2. In one example, W2=2xW, H2=2xH.
[0429] Alternatively, W2 and H2 can both be equal to W+H. In other words, up to (W+H) reference pixels in the above luma template can be used to derive the model coefficients for the CCLM_T mode, and up to (W+H) reference pixels in the left luma template can be used to derive the model coefficients for the CCLM_L mode. Out of these reference pixels, only the available luma template pixels within the range (i.e. W+H in both CCLM_T and CCLM_L) are examined to determine the maximum and minimum luma values. In this example, the available pixels in the above luma template (less than or equal to W+H) are examined to determine the maximum and minimum values in the CCLM_T mode. The available pixels in the left luma template (less than or equal to W+H) are examined to determine the maximum and minimum values in the CCLM_L mode.
[0430] The existing MDLM method uses exactly (W+H) reference pixels to derive the model coefficients for the CCLM_T mode and the CCLM_L mode, in contrast, the provided method uses up to (2xW) or (W+H) reference pixels to derive the model coefficients for the CCLM_T mode and up to (2xH) or (W+H) reference pixels to derive the model coefficients for the CCLM_L mode. In addition, only the available luma reference pixels within the examined pixel range (2xW or W+H in CCLM_T and 2xH or W+H in CCLM_L) are used to determine the maximum and minimum values. In the above provided method, sampling the reference pixels with a step size greater than 1 (e.g. 2, 4 or other values) can speed up the determination of the maximum and minimum luma values in the luma template.
[0431] Down-sampling method
[0432] As mentioned above, since the spatial resolution of the luma component in the image is greater than the spatial resolution of the chroma components, in the MDLM mode, the luma component needs to be down-sampled to the resolution of the chroma part. For example, in YUV 4:2:0 format, the luma component needs to be down-sampled by 4 (width divided by 2, height divided by 2) to match the resolution of the chroma components. In the MDLM mode, the prediction can be performed on a chroma block using a down-sampled luma block corresponding to the chroma block (having the same spatial resolution as the chroma block). The size of the down-sampled luma block is equal to the size of the chroma block (since the luma block is down-sampled to the size of the chroma block).
[0433] The reference samples in the luma template also need to be down-sampled to derive the linear model coefficients of the MDLM mode. In the CCLM T mode, the reference samples in the above template are generated by down-sampling the above neighboring reconstructed luma samples, which correspond to the reference samples in the above chroma template (i.e., the above neighboring reconstructed chroma samples). Down-sampling the above neighboring reconstructed luma samples usually involves multiple rows of above neighboring reconstructed luma samples. FIG. 17 An illustration of one example of down-sampling a luma sample using multiple rows or columns of neighboring luma samples. As shown, for a luma block, two above neighboring rows A1 and A2 can be used in the down-sampling process to obtain the down-sampled neighboring row A. A[i] denotes the i-th sample in A, A1[i] denotes the i-th sample in A1, and A2[i] denotes the i-th sample in A2. A 6-tap down-sampling filter can be used, as follows: FIG. 18
[0434] A[i] = (A2[2i] x 2 + A2[2i-1] + A2[2i+1] + A1[2i] x 2 + A1[2i-1] + A1[2i+1] + 4) » 3.
[0435] The number of neighboring samples can also be larger than the size of the current block. For example, as shown, the number of above neighboring samples of the down-sampled luma block can be M, where M is larger than the width W of the down-sampled luma block. FIG. 19
[0436] In the existing down-sampling methods described above, multiple rows of above neighboring reconstructed luma samples are used to generate the down-sampled above neighboring reconstructed luma samples. Compared to the regular intra mode prediction, the size of the column buffer is increased, which increases the memory overhead.
[0437] If the current block is located at the top boundary of the current coding tree unit (CTU) (i.e., the top row of the current chroma block overlaps with the top row of the current CTU), only one row of above neighboring reconstructed luma samples is used in the CCLM T mode. In this case, the techniques provided herein reduce the memory overhead of the down-sampling. FIG. 19 An illustration of one example of down-sampling a luma sample using one row of neighboring luma samples of the luma block, which is located at the top boundary of the CTU. As shown, only A1 (which includes one row of neighboring reconstructed luma samples) is used to generate the down-sampled above neighboring reconstructed luma samples in A. FIG. 16
[0438] It should be understood that while the above description focuses on the top neighboring reconstructed luma samples in the CCLM T mode, similar methods can be applied to the left neighboring reconstructed luma samples in the CCLM L mode. For example, if the current block is located at the left boundary of the CTU (i.e., the left column of the current chroma block overlaps with the left column of the CTU), then instead of using multiple columns of left neighboring reconstructed luma samples when downsampling, a single column of left neighboring reconstructed luma samples is used to generate the reference samples in the left template of the downsampled luma block.
[0439] Reference sample availability determination
[0440] In the above example, the availability of the reference samples is determined using the luma template to determine the maximum luma value and the minimum luma value. However, in some scenarios, the available luma reference samples do not have corresponding chroma reference samples. For example, the luma block and the chroma block can be coded separately. In this way, the corresponding chroma block can still not be available when the reconstructed luma block is available. Thus, the available luma reference samples do not have corresponding available chroma reference samples, resulting in coding errors.
[0441] The techniques provided herein address this issue by checking the availability of the reference samples in the chroma template to determine the availability of the reference samples in one template. In some examples, a chroma reference sample is available if the chroma reference sample is within the current picture, slice, or tile, and the reference sample has been reconstructed. In some examples, a chroma reference sample is available if the chroma reference sample is within the current picture, slice, or tile, the reference sample has been reconstructed, and the reference sample is not omitted according to an encoding decision, among other examples. The available reference samples for the current chroma block can be the available neighboring reconstructed samples of the chroma block. The maximum luma value and the minimum luma value are determined using the luma reference samples corresponding to the available chroma reference samples. For example, if L reference samples in the chroma template are available, then the maximum luma value and the minimum luma value are determined using the reference samples in the luma template corresponding to the L available chroma reference samples. The one or more luma reference samples corresponding to a chroma reference sample in the chroma template can be determined by identifying the luma reference samples in the luma template that are in the same position as the chroma reference sample (i.e., collocated luma reference samples (position (x, y)). For example, the one or more luma reference samples corresponding to a chroma reference sample can include the neighboring luma reference sample (position (x-1, y)), the luma reference sample (position (x, y)), and the neighboring luma reference sample (position (x+1, y)). The model coefficients described above are then determined using the luma reference samples having the maximum luma value and the minimum luma value and the chroma reference samples corresponding to the luma reference samples (associated with the maximum luma value and the minimum luma value).
[0442] In one example, L available chroma reference pixels are used to determine the model coefficients, e.g., L = 4. In another example, a portion of the L available chroma reference pixels are used to determine the model coefficients. For example, a fixed number of available chroma reference pixels are selected from the L available chroma reference pixels. The luminance reference pixels corresponding to the selected chroma reference pixels are identified and used together with the selected chroma reference pixels to determine the model coefficients. For example, if the selected chroma reference pixels are 4 available chroma reference pixels, 24 neighboring reconstructed luminance pixels corresponding to the 4 available chroma reference pixels are identified. The luminance reference pixels used to determine the model coefficients are obtained by downsampling the 24 neighboring reconstructed luminance pixels, wherein a 6-tap filter is used in the downsampling process.
[0443] In FIG. 16 In the example shown, the range of the top template pixels in the CCLM_T mode is W2. The availability of the reference pixels in the top chroma template of the current chroma block is then determined. If W3 chroma reference pixels are available (W3 < W2), the corresponding W3 or fewer luminance reference pixels are obtained. The model coefficients for the CCLM_T mode are derived using the obtained luminance reference pixels and the chroma reference pixels.
[0444] Similarly, again value of intra_chroma_pred_mode In the example shown, the range of the left template pixels in the CCLM_L mode is H2. The availability of the reference pixels in the left chroma template of the current chroma block is checked. If H3 chroma reference pixels are available (H3 < H2), the corresponding H3 or fewer luminance reference pixels are obtained. The model coefficients for the CCLM_L mode are derived using the obtained luminance reference pixels and the chroma reference pixels. Similarly, the availability of the reference pixels in the CCLM mode can be determined, i.e., the availability of the reference pixels in the top and left chroma templates is determined, and the corresponding luminance reference pixels are found, so that the model coefficients are determined as described above.
[0445] Table 1 describes the details of the provided method in the format of the INTRA_CCLM, INTRA_CCLM_L or INTRA_CCLM_T intra prediction mode specification. Table 2 shows an alternative implementation of the method provided herein.
[0446] Table 1
[0447]
[0448]
[0449]
[0450]
[0451] Table 2
[0452]
[0453]
[0454] Binarization of MDLM modes
[0455] In order to encode MDLM modes into the bitstream of a video signal, binarization of MDLM modes is needed so that the selected MDLM mode can be encoded into the bitstream and the decoder can determine and decode the selected mode. The existing binarization methods do not include the two chroma modes of MDLM, i.e., CCLM_L and CCLM_T. A new chroma mode coding method is provided here.
[0456] Table 3 and Table 4 provide the details of the binarization of the two chroma modes. In Table 3, 77 indicates the CCLM mode, the index intra_chroma_pred_mode is 4; 78 indicates the CCLM_L mode, the index intra_chroma_pred_mode is 5; 79 indicates the CCLM_T mode, the index intra_chroma_pred_mode is 6. If the index intra_chroma_pred_mode is 7, the selected mode is the DM mode. The remaining index values 0, 1, 2, and 3 represent the planar mode, the vertical mode, the horizontal mode, and the DC mode, respectively.
[0457] Table 3: Details of IntraPredModeC[xCb][yCb] (depends on intra_chroma_pred_mode[xCb][yCb] and IntraPredModeY[xCb][yCb]) when sps_cclm_enabled_flag is 1
[0458] Table 4: One example of binarization of intra_chroma_pred_mode when sps_cclm_enabled_flag is 1
[0459] binary string value of intra_chroma_pred_mode 7 0 4 10 5 1110 6 1111 0 11000 1 11001 2 11010 3 11011
[0460] Table 4 shows an example of the bit string or syntax element used for each chroma intra prediction mode. As shown in Table 4, the syntax element for DM mode (index 7) is 0, the syntax element for CCLM mode (index 4) is 10, the syntax element for CCLM_L mode (index 5) is 1110, the syntax element for CCLM_T mode (index 6) is 1111, the syntax element for planar mode (index 0) is 11000, the syntax element for vertical mode (index 1) is 11001, the syntax element for horizontal mode (index 2) is 11010, and the syntax element for DC mode (index 3) is 11011. Table 5 shows another example of the bit string or syntax element used for each chroma intra prediction mode. Depending on the decoding mode selected by the encoder, the corresponding syntax element is carried in the bitstream of the encoded video.
[0461] Table 5: Another example of binarization of intra_chroma_pred_mode when sps_cclm_enabled_flag is 1
[0462] binary string FIG. 1A 7 00 4 10 5 110 6 111 0 0100 1 0101 2 0110 3 0111
[0463] When a video encoder (such as FIG. 1A When the video encoder 20 in the video signal performs intra prediction on the chroma block in the video signal according to the intra chroma prediction mode, the video encoder selects the intra chroma prediction mode and carries the syntax element indicating the selected intra chroma prediction mode in the code stream to generate the code stream of the video signal. The video encoder can select the intra chroma prediction mode from multiple groups of modes. For example, these modes may include a first group of modes, which includes a derived mode (DM) or a cross component linear model (CCLM) prediction mode, or both. These modes may also include a second group of modes, which includes at least one of a CCLM_L mode or a CCLM_T mode. These modes may also include a third group of modes, which may include at least one of a vertical mode, a horizontal mode, a DC mode, or a planar mode.
[0464] In some examples, the number of bits of syntax elements for the intra chroma prediction mode selected from the first group of modes is less than the number of bits of syntax elements for the intra chroma prediction mode selected from the second group of modes. Furthermore, the number of bits of syntax elements for the intra chroma prediction mode when the intra chroma prediction mode is selected from the second group of modes is less than the number of bits of syntax elements for the intra chroma prediction mode when the intra chroma prediction mode is selected from the third group of modes. In some examples, syntax elements for various intra chroma prediction modes are selected according to the examples shown in Table 4 or Table 5.
[0465] When a decoder (e.g., video decoder 30 in FIG. 3) receives an encoded bitstream in a video signal to decode the video, the decoder parses syntax elements from the bitstream of the video signal and determines an intra chroma prediction mode used for a chroma block according to a selected one of the parsed syntax elements. According to the determined intra chroma prediction mode, the decoder performs intra prediction for a current chroma block in the video signal. FIG. 20
[0466] FIG. 21 A flowchart of a method of performing intra prediction using a linear model is provided for some aspects of the disclosure. In step 2002, a luma block (e.g., luma block 811) corresponding to a current chroma block (e.g., chroma block 801) is determined.
[0467] In step 2004, luma reference samples of the luma block are obtained according to L available chroma reference samples of the current chroma block. The obtained luma reference samples of the luma block are down-sampled luma reference samples. In some examples, the luma reference samples of the luma block are down-sampled luma reference samples obtained by down-sampling neighboring luma samples selected according to the L available chroma reference samples (e.g., according to a portion or all of the L available chroma reference samples). In other words, the luma reference samples of the luma block are down-sampled luma reference samples obtained by down-sampling neighboring luma samples corresponding to the available chroma reference samples. In some examples, the obtained luma reference samples correspond to the L available chroma reference samples. In other examples, the obtained luma reference samples correspond to a portion of the L available chroma reference samples. It can be appreciated that the correspondence between the obtained luma reference samples (i.e., down-sampled luma reference samples) and the L available chroma reference samples can not be limited to a one-to-one correspondence; it can also be appreciated that the correspondence between the obtained luma reference samples (i.e., down-sampled luma reference samples) and the L available chroma reference samples can be an M-to-N correspondence. For example, M = 4 and N = 4; or M = 4 and N > 4.
[0468] In some examples, the chroma reference samples of the current chroma block include neighboring reconstructed samples of the current chroma block. The L available chroma reference samples are determined from the neighboring reconstructed samples. Similarly, the neighboring samples of the luma block are also neighboring reconstructed samples of the luma block. The luma reference samples of the luma block are obtained by down-sampling neighboring reconstructed samples selected according to the L available chroma reference samples. For example, L = 4.
[0469] In some examples, a chroma reference sample is available if the chroma reference sample is within the current picture, slice or tile, and has been reconstructed. In some examples, a chroma reference sample is available if the chroma reference sample is within the current picture, slice or tile, has been reconstructed, and is not omitted according to an encoding decision, etc. The available reference samples for the current chroma block can be the available reconstructed neighboring samples of the chroma block. Luma reference samples corresponding to the available chroma reference samples are obtained.
[0470] In some examples, determining the L available chroma reference samples includes determining that L above neighboring chroma samples of the current chroma block are available, where 1≤L≤W2, L and W2 are positive integers. W2 represents an above reference sample range. The L above neighboring chroma samples are used as the available chroma reference samples. In some examples, W2 is equal to 2xW or W+H. Here, W represents a width of the current chroma block, and H represents a height of the current chroma block.
[0471] In other examples, determining the L available chroma reference samples includes determining that L left neighboring chroma samples of the current chroma block are available. Here, 1≤L≤H2, L and H2 are positive integers. H2 represents a left reference sample range. The L left neighboring chroma samples are used as the available chroma reference samples. In some examples, H2 is equal to 2xH or W+H. W represents a width of the current chroma block, and H represents a height of the current chroma block.
[0472] In other examples, determining the L available chroma reference samples includes determining that L1 above neighboring chroma samples and L2 left neighboring chroma samples of the current chroma block are available. Here, 1≤L1≤W2, 1≤L2≤H2. W2 represents an above reference sample range, and H2 represents a left reference sample range. L1, L2, W2 and H2 are positive integers, and L1+L2=L. In these examples, the L1 above neighboring chroma samples and the L2 left neighboring chroma samples are used as the available chroma reference samples.
[0473] In one example, the Luma reference samples are obtained by downsampling only the above neighboring samples of the luma block that are selected according to the L available chroma reference samples. In another example, the Luma reference samples are obtained by downsampling only the left neighboring samples of the luma block that are selected according to the L available chroma reference samples.
[0474] In the above examples, the down-sampled luma block of the luma block corresponding to the current chroma block is obtained by down-sampling the reconstructed luma block of the luma block. In some cases, for example, when the luma reference sample is obtained only from neighboring samples above the luma block and when the top row of the current chroma block overlaps with the top row of the current coding tree unit (CTU), only one row of neighboring reconstructed luma samples of the reconstructed luma block of the luma block is used to obtain the luma reference sample.
[0475] In step 2006, linear model coefficients used for inter-component prediction are calculated based on the luma reference sample obtained in step 2004 and a chroma reference sample corresponding to the luma reference sample. In some examples, the chroma reference sample corresponding to the luma reference sample is a collocated chroma reference sample of the luma reference sample.
[0476] In step 2008, predicted values of the current chroma block are generated based on the calculated linear model coefficients and values of a down-sampled luma block obtained by down-sampling the luma block (e.g., luma block 811).
[0477] FIG. 22 A flowchart of a method of inter-component linear model (CCLM) prediction according to some aspects of the disclosure is provided. In step 2102, a luma block (e.g., luma block 811) corresponding to a current chroma block (e.g., chroma block 801) is determined.
[0478] In step 2104, a luma reference sample of the luma block is obtained by down- sampling neighboring samples of the luma block. In some examples, the luma reference sample includes only luma reference samples obtained from neighboring samples above the luma block. In other examples, the luma reference sample includes only luma reference samples obtained from neighboring samples to the left of the luma block.
[0479] In step 2106, a maximum luma value and a minimum luma value are determined based on the luma reference sample.
[0480] In step 2108, a first chroma value is obtained based at least in part on one or more locations of one or more luma reference samples associated with the maximum luma value. A second chroma value is also obtained based at least in part on one or more locations of one or more luma reference samples associated with the minimum luma value.
[0481] In step 2110, linear model coefficients are calculated according to the first chroma value, the second chroma value, the maximum luma value and the minimum luma value.
[0482] In step 2112, a predicted value of the current chroma block is generated according to the linear model coefficients and the values of the down-sampled luma block of the luma block.
[0483] FIG. 2 A block diagram of an exemplary structure of an apparatus 2200 for performing intra prediction using a linear model. The apparatus 2200 can include a determining unit 2202 and an intra prediction processing unit 2204. In one example, the apparatus 2200 can correspond to the intra prediction unit 254 in FIG. 2. FIG. 3 In another example, the apparatus 2200 can correspond to the intra prediction unit 354 in FIG. 3. FIG. 23
[0484] The determining unit 2202 is configured to determine a luma block (e.g., the block 811) corresponding to a current chroma block (e.g., the chroma block 801). The determining unit 2202 is further configured to obtain luma reference samples of the luma block according to L available chroma reference samples in the current chroma block. The obtained luma reference samples of the luma block are down-sampled luma reference samples.
[0485] In some examples, the chroma reference samples of the current chroma block include neighboring reconstructed samples of the current chroma block. The L available chroma reference samples are determined from the neighboring reconstructed samples. Similarly, the neighboring samples of the luma block are also neighboring reconstructed samples of the luma block. The luma reference samples of the luma block are obtained by down-sampling the neighboring reconstructed samples of the luma block. In some examples, the luma reference samples of the luma block are down-sampled luma reference samples obtained by down-sampling the neighboring reconstructed samples of the luma block selected according to the L available chroma reference samples. In some examples, the luma reference samples of the luma block are down-sampled luma reference samples obtained by down-sampling the neighboring reconstructed samples corresponding to the L available chroma reference samples.
[0486] In some examples, a chroma reference sample is available if the chroma reference sample is within a current picture, slice or tile, the chroma reference sample has been reconstructed, and the chroma reference sample is not omitted according to an encoding decision, etc. The available reference samples of the current chroma block can be available reconstructed neighboring samples of the chroma block. The luma reference samples corresponding to the available chroma reference samples are obtained.
[0487] In some examples, determining the L available chroma reference samples includes determining that L above neighboring chroma samples of the current chroma block are available, where 1≤L≤W2, L and W2 are positive integers. W2 represents an above reference sample range. The L above neighboring chroma samples are used as the available chroma reference samples. In some examples, W2 is equal to 2×W or W+H. Here, W represents a width of the current chroma block, and H represents a height of the current chroma block.
[0488] In other examples, determining the L available chroma reference samples includes determining that L left neighboring chroma samples of the current chroma block are available. Here, 1≤L≤H2, L and H2 are positive integers. H2 represents a left reference sample range. The L left neighboring chroma samples are used as the available chroma reference samples. In some examples, H2 is equal to 2×H or W+H. W represents a width of the current chroma block, and H represents a height of the current chroma block.
[0489] In other examples, determining the L available chroma reference samples includes determining that L1 above neighboring chroma samples and L2 left neighboring chroma samples of the current chroma block are available. Here, 1≤L1≤W2, 1≤L2≤H2. W2 represents an above reference sample range, and H2 represents a left reference sample range. L1, L2, W2, and H2 are positive integers, and L1+L2=L. In these examples, the L1 above neighboring chroma samples and the L2 left neighboring chroma samples are used as the available chroma reference samples.
[0490] In one example, the luma reference samples are obtained by downsampling only neighboring samples selected according to the L available chroma reference samples above the luma block. In another example, the luma reference samples are obtained by downsampling only neighboring samples selected according to the L available chroma reference samples left of the luma block.
[0491] In the above examples, the downsampled luma block of the luma block is obtained by downsampling the reconstructed luma block of the luma block corresponding to the current chroma block. In some cases, for example, when the luma reference samples are obtained only from neighboring samples above the luma block and when a top row of the current chroma block overlaps a top row of a current coding tree unit (CTU), only one row of neighboring reconstructed luma samples of the reconstructed luma block of the luma block is used to obtain the luma reference samples.
[0492] The intra prediction processing unit 2204 is configured to calculate linear model coefficients (e.g., a and b) according to the luma reference sample and the chroma reference sample corresponding to the luma reference sample. The intra prediction processing unit 2204 is further configured to obtain a prediction value of the current chroma block according to the linear model coefficients and the value of the down-sampled luma block of the luma block.
[0493] FIG. 24 A flowchart of a method for coding an intra chroma coding mode into a bitstream of a video signal is provided for some aspects of the disclosure.
[0494] In step 2302, intra prediction is performed on a chroma block in the video signal according to an intra chroma prediction mode. The intra chroma prediction mode can be selected from a plurality of modes. In some examples, the plurality of modes includes three groups: a first group of modes including at least one of a derived mode (DM) or a cross component linear model (CCLM) prediction mode; a second group of modes including at least one of a CCLM L mode or a CCLM T mode, or a third group of modes including at least one of a vertical mode, a horizontal mode, a DC mode, or a planar mode.
[0495] In step 2304, a bitstream of the video signal is generated by carrying a syntax element indicating the intra chroma prediction mode in the bitstream. In some examples, a number of bits of the syntax element when the intra chroma prediction mode is selected from the first group of modes is less than a number of bits of the syntax element when the intra chroma prediction mode is selected from the second group of modes. A number of bits of the syntax element when the intra chroma prediction mode is selected from the second group of modes is less than a number of bits of the syntax element when the intra chroma prediction mode is selected from the third group of modes.
[0496] In one example, the syntax element of the DM mode is 0. The syntax element of the CCLM mode is 10. The syntax element of the CCLM L mode is 1110. The syntax element of the CCLM T mode is 1111. The syntax element of the planar mode is 11000. The syntax element of the vertical mode is 11001. The syntax element of the horizontal mode is 11010. The syntax element of the DC mode is 11011.
[0497] In another example, the syntax element for the DM mode is 00. The syntax element for the CCLM mode is 10. The syntax element for the CCLM L mode is 110. The syntax element for the CCLM T mode is 111. The syntax element for the planar mode is 0100. The syntax element for the vertical mode is 0101. The syntax element for the horizontal mode is 0110. The syntax element for the DC mode is 0111.
[0498] FIG. 25 A flowchart of a method for decoding intra chroma coding modes in a bitstream of a video signal is provided for some aspects of the disclosure.
[0499] In step 2402, a plurality of syntax elements are parsed from a bitstream of a video signal. In step 2404, an intra chroma prediction mode is determined according to one of the plurality of syntax elements indicating the intra chroma prediction mode. In some examples, the intra chroma prediction mode is determined from a plurality of modes. For example, the plurality of modes includes three groups: a first group of modes including at least one of a derived mode (DM) or a cross component linear model (CCLM) prediction mode; a second group of modes including at least one of a CCLM L mode or a CCLM T mode, or a third group of modes including at least one of a vertical mode, a horizontal mode, a DC mode, or a planar mode. In these groups of intra chroma prediction modes, a number of bits of a syntax element when the intra chroma prediction mode is selected from the first group of modes is less than a number of bits of a syntax element when the intra chroma prediction mode is selected from the second group of modes. A number of bits of a syntax element when the intra chroma prediction mode is selected from the second group of modes is less than a number of bits of a syntax element when the intra chroma prediction mode is selected from the third group of modes.
[0500] In step 2406, intra prediction is performed on a current chroma block in the video signal according to the intra chroma prediction mode.
[0501] FIG. 2 A block diagram of an exemplary structure of an apparatus 2500 for generating a video bitstream. The apparatus 2500 can include an intra prediction processing unit 2502 and a binarization unit 2504. In one example, the intra prediction processing unit 2502 can correspond to the intra prediction unit 254 in FIG. 2B. In one example, the binarization unit 2504 can correspond to the entropy encoding unit 270 in FIG. 2B. FIG. 2 FIG. 26
[0502] Intra prediction processing unit 2502 is configured to perform intra prediction for a chroma block in the video signal according to an intra chroma prediction mode. The intra chroma prediction mode is selected from a first group of modes, a second group of modes, or a third group of modes. The first group of modes includes at least one of a derived mode (DM) or a cross component linear model (CCLM) prediction mode. The second group of modes includes at least one of a CCLM L mode and a CCLM T mode. The third group of modes includes at least one of a vertical mode, a horizontal mode, a DC mode, and a planar mode.
[0503] Binarization unit 2504 is configured to generate a bitstream of the video signal by carrying syntax elements indicative of the intra chroma prediction mode. A number of bits of the syntax elements when the intra chroma prediction mode is selected from the first group of modes is less than a number of bits of the syntax elements when the intra chroma prediction mode is selected from the second group of modes, which is less than a number of bits of the syntax elements when the intra chroma prediction mode is selected from the third group of modes.
[0504] In one example, the syntax element for the DM mode is 0. The syntax element for the CCLM mode is 10. The syntax element for the CCLM L mode is 1110. The syntax element for the CCLM T mode is 1111. The syntax element for the planar mode is 11000. The syntax element for the vertical mode is 11001. The syntax element for the horizontal mode is 11010. The syntax element for the DC mode is 11011.
[0505] In another example, the syntax element for the DM mode is 00. The syntax element for the CCLM mode is 10. The syntax element for the CCLM L mode is 110. The syntax element for the CCLM T mode is 111. The syntax element for the planar mode is 0100. The syntax element for the vertical mode is 0101. The syntax element for the horizontal mode is 0110. The syntax element for the DC mode is 0111.
[0506] FIG. 3 FIG. 26 is a block diagram illustrating an exemplary structure of an apparatus 2600 for decoding a video bitstream. The apparatus can include a parsing unit 2602, a determination unit 2604, and an intra prediction processing unit 2606. In one example, the parsing unit 2602 can correspond to the entropy encoding unit 304 in FIG. 3. In one example, the determination unit 2604 and the intra prediction processing unit 2606 can correspond to the intra prediction unit 354 in FIG. 3. FIG. 3 FIG. 27
[0507] The parsing unit 2602 is configured to parse a plurality of syntax elements from a bitstream of a video signal. The determining unit 2604 is configured to determine an intra chroma prediction mode from one of the plurality of syntax elements. The intra chroma prediction mode is determined from a first group of modes, a second group of modes, or a third group of modes. The first group of modes includes at least one of a derived mode (DM) or a cross component linear model (CCLM) prediction mode. The second group of modes includes at least one of a CCLM L mode and a CCLM T mode. The third group of modes includes at least one of a vertical mode, a horizontal mode, a DC mode, and a planar mode.
[0508] A number of bits of the syntax element when the intra chroma prediction mode is selected from the first group of modes is less than a number of bits of the syntax element when the intra chroma prediction mode is selected from the second group of modes, and a number of bits of the syntax element when the intra chroma prediction mode is selected from the second group of modes is less than a number of bits of the syntax element when the intra chroma prediction mode is selected from the third group of modes.
[0509] In one example, a syntax element of the DM mode is 0. A syntax element of the CCLM mode is 10. A syntax element of the CCLM L mode is 1110. A syntax element of the CCLM T mode is 1111. A syntax element of the planar mode is 11000. A syntax element of the vertical mode is 11001. A syntax element of the horizontal mode is 11010. A syntax element of the DC mode is 11011.
[0510] In another example, a syntax element of the DM mode is 00. A syntax element of the CCLM mode is 10. A syntax element of the CCLM L mode is 110. A syntax element of the CCLM T mode is 111. A syntax element of the planar mode is 0100. A syntax element of the vertical mode is 0101. A syntax element of the horizontal mode is 0110. A syntax element of the DC mode is 0111.
[0511] The intra prediction processing unit 2606 is configured to perform intra prediction for a current chroma block in the video signal according to the intra chroma prediction mode.
[0512] In order to better understand the present application, the following references are incorporated herein by reference: JCTVC-H0544: Description of MDLM, JVET-G1001: Description of CCLM or LM Section 2.2.4, JVET-K0204: Description of Derivation of Model Coefficients from Maximum and Minimum Values.
[0513] The application of the encoding method and the decoding method shown in the above embodiments and a system using the applications are explained below.
[0514] FIG. 28 A block diagram of a content distribution system 3100 for implementing a content providing service is shown. The content providing system 3100 includes a capturing device 3102, a terminal device 3106, and (optionally) a display 3126. The capturing device 3102 communicates with the terminal device 3106 through a communication link 3104. The communication link can include the communication channel 13 described above. The communication link 3104 includes, but is not limited to, Wi-Fi, Ethernet, wired, wireless (3G / 4G / 5G), USB, or any type of combination thereof, etc.
[0515] The capturing device 3102 generates data and can encode the data using the encoding method shown in the above embodiments. Alternatively, the capturing device 3102 can distribute the data to a streaming server (not shown in the figure), which encodes the data and transmits the encoded data to the terminal device 3106. The capturing device 3102 includes, but is not limited to, a camera, a smartphone or a Pad, a computer or a laptop, a video conferencing system, a PDA, a vehicle-mounted device, or any combination thereof, etc. For example, the capturing device 3102 can include the source device 12 described above. When the data includes a video, the video encoder 20 included in the capturing device 3102 can actually perform a video encoding process. When the data includes audio (i.e., sound), the audio encoder included in the capturing device 3102 can actually perform an audio encoding process. In some practical scenarios, the capturing device 3102 distributes the encoded video data and the encoded audio data by multiplexing them together. In other practical scenarios, for example, in a video conferencing system, the encoded audio data and the encoded video data are not multiplexed. The capturing device 3102 distributes the encoded audio data and the encoded video data to the terminal device 3106 separately.
[0516] The terminal device 310 in the content delivery system 3100 receives and reproduces the encoded data. The terminal device 3106 can be a device capable of receiving and restoring data, such as a smartphone or Pad 3108, a computer or laptop 3110, a network video recorder (NVR) / digital video recorder (DVR) 3112, a television 3114, a set top box (STB) 3116, a video conference system 3118, a video surveillance system 3120, a personal digital assistant (PDA) 3122, a vehicle-mounted device 3124, or any combination thereof, or a similar device capable of decoding the above-mentioned encoded data. For example, the terminal device 3106 can include the destination device 14 described above. When the encoded data includes video, the video decoder 30 included in the terminal device performs video decoding preferentially. When the encoded data includes audio, the audio decoder included in the terminal device performs audio decoding processing preferentially.
[0517] For terminal devices with displays, such as the smartphone or Pad 3108, the computer or laptop 3110, the network video recorder (NVR) / digital video recorder (DVR) 3112, the television 3114, the personal digital assistant (PDA) 3122, or the vehicle-mounted device 3124, the terminal device can input the decoded data to its display. For terminal devices without displays, such as the STB 3116, the video conference system 3118, or the video surveillance system 3120, an external display 3126 is connected to the terminal device to receive and display the decoded data.
[0518] When each device in the system performs encoding or decoding, the image encoding device or the image decoding device shown in the above-described embodiments can be used.
[0519] FIG. 28FIG. 6 is a schematic diagram of an example structure of a terminal device 3106. After the terminal device 3106 receives a stream from the capture device 3102, the protocol processing unit 3202 analyzes the transport protocol of the stream. The protocol includes, but is not limited to, Real Time Streaming Protocol (RTSP), Hyper Text Transfer Protocol (HTTP), HTTP Live streaming protocol (HLS), MPEG-DASH), Real-time Transport protocol (RTP), Real Time Messaging Protocol (RTMP), or any combination thereof, etc.
[0520] After the protocol processing unit 3202 processes the stream, a stream file is generated. The stream file is output to the demultiplexing unit 3204. The demultiplexing unit 3204 can separate the multiplexed data into encoded audio data and encoded video data. As mentioned above, in some practical scenarios, for example, in a video conferencing system, the encoded audio data and encoded video data are not multiplexed. In this case, the encoded data is sent to the video decoder 3206 and the audio decoder 3208 without passing through the demultiplexing unit 3204.
[0521] Through the demultiplexing process, a video elementary stream (ES), an audio ES, and (optionally) a subtitle are generated. The video decoder 3206 includes the video decoder 30 as explained in the above embodiments, decodes the video ES through the decoding method as shown in the above embodiments to generate video frames, and inputs the data to the synchronization unit 3212. The audio decoder 3208 decodes the audio ES to generate audio frames, and inputs the data to the synchronization unit 3212. Alternatively, the video frames can be stored in a buffer (not shown) and then input to the synchronization unit 3212. Similarly, the audio frames can be stored in a buffer (not shown) and then input to the synchronization unit 3212. FIG. 28
[0522] The synchronization unit 3212 synchronizes the video frames and the audio frames, and provides the video / audio to the video / audio display 3214. For example, the synchronization unit 3212 synchronizes the presentation of the video and audio information. The information can be encoded into syntax using timestamps related to the presentation of the coded audio and visual data and timestamps related to the distribution of the data stream.
[0523] If subtitles are included in the bitstream, the subtitle decoder 3210 decodes the subtitles and synchronizes the subtitles with the video frames and audio frames, and provides video / audio / subtitles to a video / audio / subtitle display 3216.
[0524] The present application is not limited to the above-described system, and the image encoding apparatus or the image decoding apparatus in the above-described embodiment can be used in other systems such as a car system.
[0525] By way of example, and not limitation, such computer-readable storage media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage, or other magnetic storage devices, flash memory, or any other storage medium that can be used to store desired program code means in the form of instructions or data structures and that can be accessed by a computer. Also, any
[0526] Instructions can be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, as used herein the term "processor" can refer to any of the foregoing structure or any other structure suitable for implementation of the techniques described herein. In addition, in some aspects, the various functions described herein can be provided within dedicated hardware and / or software modules configured for encoding and decoding, or incorporated in a combined codec, etc. Also, the techniques could be fully implemented in one or more circuits or logic elements.
[0527] The techniques of this disclosure can be implemented in a variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC) or a set of ICs (e.g., a chip set). Various components, modules, or units are described herein as being part of a device, apparatus, or system. Unless specifically stated to the contrary, such components, modules, or units can be implemented together in a single package, or separately as individual hardware components, software components, or combination thereof. For example, a single processor can be used to implement the various components, modules, or units described herein, or separate processors can be used to implement the various components, modules, or units described herein.
[0528] While several embodiments have been provided in the present disclosure, it is to be understood that the disclosed systems and methods might be embodied in many other specific forms without departing from the spirit or scope of the present disclosure. The present examples are to be considered in all respects as illustrative and not restrictive, and the scope of the disclosure is, therefore, indicated by the appended claims, rather than by the foregoing description. For example, the various elements or components can be combined or integrated in another system or certain features can be omitted, or not implemented.
[0529] In addition, techniques, systems, subsystems, and methods described and illustrated in the various embodiments as discrete or separate can be combined or integrated with other systems, modules, techniques, or methods without departing from the scope of the present disclosure. Other items shown or discussed as separate from the various embodiments can be implemented as part of the various embodiments. The various embodiments can be implemented as part of other systems, methods, or technologies without departing from the scope of the present disclosure.
Claims
1. A video data encoding method, characterized in that: The method is performed by an encoding device, and includes: Performing intra-frame prediction on a current chroma block of video data according to an intra-frame chroma prediction mode, wherein the intra-frame chroma prediction mode includes a CCLM_L mode, wherein performing intra-frame prediction on the current chroma block includes: Determine the luma block corresponding to the current chroma block; Determine L available chroma reference pixels of the current chroma block by checking the availability of adjacent chroma pixels to the left of the current chroma block; Obtaining luma reference pixels of the luma block by determining L available chroma reference pixels of the current chroma block, wherein the obtained luma reference pixels are downsampled luma reference pixels, and L is a positive integer; Calculating a linear model coefficient according to the luminance reference pixel and the chrominance reference pixel corresponding to the luminance reference pixel; Obtaining a predicted value of the current chrominance block according to the linear model coefficient and a value of a downsampled luminance block of the luminance block; A syntax element indicating an intra chroma prediction mode is encoded into a bitstream of video data to generate the bitstream of the video data.
2. The method according to claim 1, characterized in that Determining L available chromaticity reference pixels includes: The availability of the L left-adjacent chroma pixel points of the current chroma block is determined by checking the availability of the left-adjacent chroma pixel points within the left reference pixel point range, where 1≤L≤H2, H2 represents the left reference pixel point range, and H2 is a positive integer, and the L left-adjacent chroma pixel points are used as the L available chroma reference pixel points.
3. The method according to claim 2, characterized in that H2 is equal to 2×H or W+H, where W represents the width of the current chroma block and H represents the height of the current chroma block.
4. The method according to claim 1, wherein The brightness reference pixel point is obtained by the following method: Downsampling is performed only on the adjacent pixel points on the left side of the luminance block that are selected based on the L available chrominance reference pixel points.
5. The method according to claim 1, wherein The reconstructed luminance block of the luminance block corresponding to the current chrominance block is down-sampled to obtain the down-sampled luminance block of the luminance block.
6. The method according to claim 1, characterized in that The calculating of the linear model coefficient according to the luminance reference pixel and the chrominance reference pixel corresponding to the luminance reference pixel includes: Determining a maximum brightness value and a minimum brightness value according to the brightness reference pixel point; Obtaining a first chrominance value based at least in part on a position of a luminance reference pixel associated with the maximum luminance value; Obtaining a second chrominance value based at least in part on a position of a luminance reference pixel associated with the minimum luminance value; The linear model coefficients are calculated according to the first chromaticity value, the second chromaticity value, the maximum luminance value, and the minimum luminance value.
7. The method according to claim 6, characterized in that Obtaining the first chromaticity value based at least in part on the position of the luma reference pixel associated with the maximum luma value comprises: obtaining the first chromaticity value based at least in part on one or more positions of one or more luma reference pixels associated with the maximum luma value; Obtaining the second chromaticity value at least partially based on the position of the luminance reference pixel associated with the minimum luminance value includes: obtaining the second chromaticity value at least partially based on one or more positions of one or more luminance reference pixels associated with the minimum luminance value.
8. A video data decoding method, characterized in that: The method is performed by a decoding device, and includes: Parsing a syntax element from a bitstream, wherein the syntax element is used to indicate an intra chroma prediction mode; Determining the intra chroma prediction mode according to the syntax element, wherein the intra chroma prediction mode includes a CCLM_L mode; Performing intra-frame prediction on a current chroma block of video data according to an intra-frame chroma prediction mode, wherein performing intra-frame prediction on the current chroma block includes: Determine the luma block corresponding to the current chroma block; Determine L available chroma reference pixels of the current chroma block by checking the availability of adjacent chroma pixels to the left of the current chroma block; Obtaining luma reference pixels of the luma block by determining L available chroma reference pixels of the current chroma block, wherein the obtained luma reference pixels are downsampled luma reference pixels, and L is a positive integer; Calculating a linear model coefficient according to the luminance reference pixel and the chrominance reference pixel corresponding to the luminance reference pixel; A prediction value of the current chrominance block is obtained according to the linear model coefficient and a value of the downsampled luminance block of the luminance block.
9. The method according to claim 8, characterized in that Determining L available chromaticity reference pixels includes: The availability of the L left-adjacent chroma pixel points of the current chroma block is determined by checking the availability of the left-adjacent chroma pixel points within the left reference pixel point range, where 1≤L≤H2, H2 represents the left reference pixel point range, and H2 is a positive integer, and the L left-adjacent chroma pixel points are used as the L available chroma reference pixel points.
10. The method according to claim 9, characterized in that H2 is equal to 2×H or W+H, where W represents the width of the current chroma block and H represents the height of the current chroma block.
11. The method according to claim 8, characterized in that The brightness reference pixel point is obtained by the following method: Downsampling is performed only on the adjacent pixel points on the left side of the luminance block that are selected based on the L available chrominance reference pixel points.
12. The method according to claim 8, characterized in that The reconstructed luminance block of the luminance block corresponding to the current chrominance block is down-sampled to obtain the down-sampled luminance block of the luminance block.
13. The method according to claim 8, characterized in that The calculating of the linear model coefficient according to the luminance reference pixel and the chrominance reference pixel corresponding to the luminance reference pixel includes: Determining a maximum brightness value and a minimum brightness value according to the brightness reference pixel point; Obtaining a first chrominance value based at least in part on a position of a luminance reference pixel associated with the maximum luminance value; Obtaining a second chrominance value based at least in part on a position of a luminance reference pixel associated with the minimum luminance value; The linear model coefficients are calculated according to the first chromaticity value, the second chromaticity value, the maximum luminance value, and the minimum luminance value.
14. The method according to claim 13, characterized in that Obtaining the first chromaticity value based at least in part on the position of the luma reference pixel associated with the maximum luma value comprises: obtaining the first chromaticity value based at least in part on one or more positions of one or more luma reference pixels associated with the maximum luma value; Obtaining the second chromaticity value at least partially based on the position of the luminance reference pixel associated with the minimum luminance value includes: obtaining the second chromaticity value at least partially based on one or more positions of one or more luminance reference pixels associated with the minimum luminance value.
15. An encoding device, characterized in that The encoding device comprises: at least one processor; one or more memories coupled to the at least one processor and storing program instructions executed by the processor, wherein the program instructions, when executed by the at least one processor, cause the encoding device to: Performing intra-frame prediction on a current chroma block of video data according to an intra-frame chroma prediction mode, wherein the intra-frame chroma prediction mode includes a CCLM_L mode, wherein performing intra-frame prediction on the current chroma block includes: Determine the luma block corresponding to the current chroma block; Determine L available chroma reference pixels of the current chroma block by checking the availability of adjacent chroma pixels to the left of the current chroma block; Obtaining luma reference pixels of the luma block by determining L available chroma reference pixels of the current chroma block, wherein the obtained luma reference pixels are downsampled luma reference pixels, and L is a positive integer; Calculating a linear model coefficient according to the luminance reference pixel and the chrominance reference pixel corresponding to the luminance reference pixel; Obtaining a predicted value of the current chrominance block according to the linear model coefficient and a value of a downsampled luminance block of the luminance block; A syntax element indicating an intra chroma prediction mode is encoded into a bitstream of video data to generate the bitstream of the video data.
16. The encoding device according to claim 15, characterized in that The luminance reference pixel is obtained by downsampling adjacent pixel points in the luminance block selected according to the L available chrominance reference pixel points.
17. A decoding device, characterized in that: The decoding device comprises: at least one processor; one or more memories coupled to the at least one processor and storing program instructions executed by the processor, wherein the program instructions, when executed by the at least one processor, cause the decoding device to: Parsing a syntax element from a bitstream, wherein the syntax element is used to indicate an intra chroma prediction mode; Determining the intra chroma prediction mode according to the syntax element, wherein the intra chroma prediction mode includes a CCLM_L mode; Performing intra-frame prediction on a current chroma block of video data according to an intra-frame chroma prediction mode, wherein performing intra-frame prediction on the current chroma block includes: Determine the luma block corresponding to the current chroma block; Determine L available chroma reference pixels of the current chroma block by checking the availability of adjacent chroma pixels to the left of the current chroma block; Obtaining luma reference pixels of the luma block by determining L available chroma reference pixels of the current chroma block, wherein the obtained luma reference pixels are downsampled luma reference pixels, and L is a positive integer; Calculating a linear model coefficient according to the luminance reference pixel and the chrominance reference pixel corresponding to the luminance reference pixel; A prediction value of the current chrominance block is obtained according to the linear model coefficient and a value of the downsampled luminance block of the luminance block.
18. The decoding device according to claim 17, characterized in that The luminance reference pixel is obtained by downsampling adjacent pixel points in the luminance block selected according to the L available chrominance reference pixel points.
19. A non-transitory computer-readable medium comprising program instructions, characterized in that: When the program instructions are executed by a computer device or one or more processors, the program instructions cause the computer device or one or more processors to perform the following operations: Parsing a syntax element from a bitstream, wherein the syntax element is used to indicate an intra chroma prediction mode; Determining the intra chroma prediction mode according to the syntax element, wherein the intra chroma prediction mode includes a CCLM_L mode; Performing intra-frame prediction on a current chroma block of video data according to an intra-frame chroma prediction mode, wherein performing intra-frame prediction on the current chroma block includes: Determine the luma block corresponding to the current chroma block; Determine L available chroma reference pixels of the current chroma block by checking the availability of adjacent chroma pixels to the left of the current chroma block; Obtaining luma reference pixels of the luma block by determining L available chroma reference pixels of the current chroma block, wherein the obtained luma reference pixels are downsampled luma reference pixels, and L is a positive integer; Calculating a linear model coefficient according to the luminance reference pixel and the chrominance reference pixel corresponding to the luminance reference pixel; A prediction value of the current chrominance block is obtained according to the linear model coefficient and a value of the downsampled luminance block of the luminance block.
20. A non-transitory computer-readable medium comprising program instructions, characterized in that: When the program instructions are executed by a computer device or a processor, the program instructions cause the computer device or the processor to perform the following operations: Performing intra-frame prediction on a current chroma block of video data according to an intra-frame chroma prediction mode, wherein the intra-frame chroma prediction mode includes a CCLM_L mode, wherein performing intra-frame prediction on the current chroma block includes: Determine the luma block corresponding to the current chroma block; Determine L available chroma reference pixels of the current chroma block by checking the availability of adjacent chroma pixels to the left of the current chroma block; Obtaining luma reference pixels of the luma block by determining L available chroma reference pixels of the current chroma block, wherein the obtained luma reference pixels are downsampled luma reference pixels, and L is a positive integer; Calculating a linear model coefficient according to the luminance reference pixel and the chrominance reference pixel corresponding to the luminance reference pixel; Obtaining a predicted value of the current chrominance block according to the linear model coefficient and a value of a downsampled luminance block of the luminance block; A syntax element indicating an intra chroma prediction mode is encoded into a bitstream of video data to generate the bitstream of the video data.
21. A non-transitory computer-readable medium, characterized in that The non-transitory computer-readable medium stores an encoded video stream, wherein the stream is generated by performing the following operations: Performing intra-frame prediction on a current chroma block of video data according to an intra-frame chroma prediction mode, wherein the intra-frame chroma prediction mode includes a CCLM_L mode, wherein performing intra-frame prediction on the current chroma block includes: Determine the luma block corresponding to the current chroma block; Determine L available chroma reference pixels of the current chroma block by checking the availability of adjacent chroma pixels to the left of the current chroma block; Obtaining luma reference pixels of the luma block by determining L available chroma reference pixels of the current chroma block, wherein the obtained luma reference pixels are downsampled luma reference pixels, and L is a positive integer; Calculating a linear model coefficient according to the luminance reference pixel and the chrominance reference pixel corresponding to the luminance reference pixel; Obtaining a predicted value of the current chrominance block according to the linear model coefficient and a value of a downsampled luminance block of the luminance block; A syntax element indicating an intra chroma prediction mode is encoded into a bitstream of video data to generate the bitstream of the video data.
Citation Information
Patent Citations
Multi-type-tree framework for video coding
US20170208336A1
Linear model prediction mode with sample accessing for video coding
US20180176594A1