Method and apparatus for video coding or decoding
By adapting the interpolation filter in CCLM to match the YUV format of the video sequence, the method reduces decoder complexity and improves coding efficiency, specifically for 4:4:4 and 4:2:2 YUV formats, addressing inefficiencies in current video coding technologies.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- TENCENT AMERICA LLC
- Filing Date
- 2024-07-17
- Publication Date
- 2026-05-15
AI Technical Summary
Current video coding technologies, such as VTM3.0, face inefficiencies in cross-component linear model (CCLM) prediction modes, particularly in handling different YUV formats, leading to increased decoder complexity without clear coding efficiency gains, and lack support for common formats like 4:4:4 and 4:2:2 YUV.
Adapt the interpolation filter in CCLM to match the YUV format of the video sequence, using fewer taps for 4:4:4 and 4:2:2 formats and different taps for 4:2:0, reducing decoder complexity and improving coding efficiency.
The adapted CCLM interpolation filter reduces decoder complexity and enhances coding efficiency by optimizing filter taps based on YUV format, addressing inefficiencies in existing technologies.
Smart Images

Figure 0007860175000010 
Figure 0007860175000011 
Figure 0007860175000012
Abstract
Description
[Technical Field]
[0001] Cross-reference of related applications This application claims priority under Section 119 of the United States Patent Act to U.S. Provisional Patent Application No. 62 / 781,316 filed with the U.S. Patent and Trademark Office on 18 December 2018, U.S. Provisional Patent Application No. 62 / 785,678 filed on 27 December 2018, U.S. Provisional Patent Application No. 62 / 788,729 filed on 4 January 2019, U.S. Provisional Patent Application No. 62 / 789,992 filed on 8 January 2019, and U.S. Patent Application No. 16 / 523,258 filed on 26 July 2019, the disclosures of which are incorporated herein by reference in their entirety.
[0002] Methods and apparatus consistent with the embodiments relate to video processing, more specifically, to encoding or decoding video sequences focused on simplifying cross-component linear model prediction modes. [Background technology]
[0003] Recently, the Video Coding Experts Group (VCEG) of the ITU Telecommunication Standardization Sector (ITU-T), a sector of the International Telecommunication Union (ITU), and the ISO / IEC MPEG (JTC 1 / SC 29 / WG 11), a standardization subcommittee of the Joint Technical Committee of the International Organization for Standardization (ISO) and the International Electrotechnical Commission (IEC), published the H.265 / High Efficiency Video Coding (HEVC) standard (version 1) in 2013. This standard was updated to version 2 in 2014, to version 3 in 2015, and to version 4 in 2016.
[0004] In October 2017, they issued a Joint Call for Proposals on Video Compression with Capability Beyond HEVC (CfP). By February 15, 2018, 22 CfP responses had been submitted for Standard Dynamic Range (SDR), 12 for High Dynamic Range (HDR), and 12 for the 360 video category. In April 2018, all received CfP responses were evaluated at the 122nd MPEG / 10th JVET meeting. As a result of this meeting, JVET officially launched the standardization process for next-generation video coding beyond HEVC. The new standard was named Versatile Video Coding (VVC), and JVET was renamed the Joint Video Expert Team.
[0005] Next, we will describe the intra-prediction modes of the luma component in HEVC. The intra-prediction modes used in HEVC are shown in Figure 1. In HEVC, there can be a total of 35 intra-prediction modes, of which mode 10 is the horizontal mode, mode 26 is the vertical mode, and modes 2, 18, and 34 are the diagonal modes. The intra-prediction modes can be indicated by three most probable modes (MPMs) and 32 remaining modes.
[0006] Next, we will discuss the intra-prediction modes of the lumens component in VVC. In current developments of VVC, as shown in Figure 2, there can be a total of 95 intra-prediction modes, with mode 18 being a horizontal mode, mode 50 being a vertical mode, and modes 2, 34, and 66 being diagonal modes. Modes 1-14 and modes 67-80 are sometimes called wide-angle intra-prediction (WAIP) modes. As shown in Figure 2, 35 intra-prediction modes can be used in HEVC.
[0007] Next, we will describe the intra-prediction modes of the lumen component of VVC. In the current development of VVC, as shown in Figure 2, there can be a total of 95 intra-prediction modes, with mode 18 being a horizontal mode, mode 50 being a vertical mode, and modes 2, 34, and 66 being diagonal modes. Modes 1-14 and modes 67-80 are sometimes called wide-angle intra-prediction (WAIP) modes.
[0008] Next, we will discuss the Intra-mode modes for the chroma components of VVC. In VTM, for the chroma components of intra-PU, the encoder can select the optimal chroma prediction mode from eight modes, including direct replication of the intra-prediction mode (DM) from the Planar, DC, horizontal, vertical, and lumen components, left and upper cross-component linear modes (LT_CCLM), left cross-component linear mode (L_CCLM), and upper cross-component linear mode (T_CCLM). LT_CCLM, L_CCLM, and T_CCLM can be classified into the cross-component linear mode (CCLM) group. The difference between these three modes is that they can derive parameters α and β using different regions of adjacent samples. In the case of LT_CCLM, parameters α and β can be derived using both left and upper adjacent samples. In the case of L_CCLM, parameters α and β can generally be derived using only left adjacent samples. In the case of T_CCLM, parameters α and β can generally be derived using only upper adjacent samples.
[0009] To reduce cross-component redundancy, a cross-component linear model (CCLM) prediction mode may be used, in which a linear model may be used to predict chroma samples based on reconfigured luma samples of the same CU, as follows: Nod c (i,j) = α·rec L '(i,j)+β In the formula, pred c (i,j) represents the predicted chroma sample within CU, and rec L(i, j) represents the downsampled and reconstructed luma samples of the same CU. The parameters α and β can be derived by a linear equation, also known as the max-min method. Since this calculation process may be executed not only as an encoder search operation but also as part of the decoding process, it is not always necessary to use syntax to transmit the α value and β value.
[0010] There are various YUV formats, as shown in FIGS. 3(A) to 3(D). In the 4:2:0 format, for LM prediction, a 6-tap interpolation filter can be applied to obtain the downsampled luma samples corresponding to the chroma samples, as shown in FIGS. 3(A) to 3(D). In an official method, the downsampled luma sample Rec’L[x, y] can be calculated from the reconstructed luma samples as follows: Rec’ L [x, y]=(2 × Rec L [2x, 2y]+2 × Rec L [2x, 2y + 1]+ Rec L [2x - 1, 2y]+Rec L [2x + 1, 2y]+ Rec L [2x - 1, 2y + 1]+Rec L [2x + 1, 2y + 1]+4) >> 3
[0011] The downsampled luma samples can be used to find the maximum and minimum sample points. Two points (luma and chroma pair) (A, B) can be the minimum and maximum values within a set of adjacent luma samples, as shown in FIG. 4. The linear model parameters α and β can be obtained according to the following formula:
[0012]
Equation
[0013] Here, division can be avoided and replaced by multiplication and shifting. One look-up table (LUT) can be used to store pre-computed values. The absolute difference value between the maximum and minimum luma samples can be used to specify the LUT entry index, and the size of the LUT can be 512.
[0014] Also, the absolute difference between the maximum and minimum luma sample values in the specified adjacent sample region, represented by diff_Y, may be non-uniformly quantized, and it has been proposed that the quantized value of the absolute difference can be used to specify the entry index of the CCLM look-up table (LUT) so that the size of the LUT is reduced. The range of diff_Y is divided into multiple intervals, and different quantization step sizes can be used for different intervals. In one example, the range of diff_Y can be divided into two intervals. When diff_Y is below a threshold named Thres_1, one step size named Step_A is used. Otherwise, another step size named Step_B can be used. Therefore, the parameters of CCLM can be obtained as follows:
[0015]
Number
[0016] Here, Thres_1, Step_A, and Step_B can be any positive integers such as 1, 2, 3, 4, etc. Also, Step_A and Step_B are not equal.
[0017] To derive the chroma predictor, in the current VTM implementation, multiplication is replaced by integer operations as follows, where maxY, minY, maxC, and minC represent the maximum luma sample value, minimum luma sample value, maximum chroma sample value, and minimum chroma sample value, respectively. numSampL and numSampT represent the number of available left and upper adjacent samples, respectively. The following text is from Section 8.2.4.2.8 of the VVC draft 3.
[0018] The variables a, b, and k are derived as follows: If numSampL is equal to 0 and numSampT is equal to 0, the following applies: k = 0 a = 0 b = 1 << (BitDepthC - 1) Otherwise, the following applies: shift = (BitDepthC > 8)? BitDepthC - 9 : 0 add = shift? 1 << (shift - 1) : 0 diff = (maxY - minY + add) >> shift k = 16 If diff is greater than 0, the following applies: div = ((maxC - minC) * (Floor(2 32 / diff) - Floor(2 16 / diff) * 2 16 ) + 2 15 ) >> 16 a = ((maxC - minC) * (Floor(2 16 / diff) + div + add) >> shift Otherwise, the following applies: a = 0 b = minC - ((a * minY) >> k)
[0019] The equation when diff is greater than 0 can also be simplified as follows: a = ((maxC - minC) * (Floor(2 16 / diff) + add) >> shift
[0020] After deriving the parameters a and b, the chroma predictor is calculated as follows: pred c (i, j) = (a · rec L ’(i, j)) >> S + b
[0021] Since the range of the variable "diff" is 1 to 512, Floor(2 16The value of / diff can be pre-calculated and stored in a lookup table (LUT) of equal size to 512. Furthermore, the value of diff is used to specify the entry index of the lookup table.
[0022] Since this calculation process is performed not only as an encoder lookup operation but also as part of the decoding process, no syntax is used to communicate the alpha and beta values.
[0023] In T_CCLM mode, only the upper adjacent samples (including 2*W samples) are used to calculate the linear model coefficients. In L_CCLM mode, only the left adjacent samples (including 2*H samples) are used to calculate the linear model coefficients. This is shown in Figures 6A to 7B.
[0024] The CCLM prediction mode also includes predictions between two chroma components, i.e., the Cr component can be predicted from the Cb component. Instead of using the reconstructed sample signal, the CCLM Cb-to-Cr prediction can be applied to the residual region. This can be implemented by adding the weighted reconstructed Cb residual to the original Cr intra-prediction to form the final Cr prediction:
[0025]
number
[0026] The CCLM lumana-to-chroma prediction mode can be added as an additional chroma intra-prediction mode. On the encoder side, another RD cost check of the chroma component may be added to select the chroma intra-prediction mode. If an intra-prediction mode other than the CCLM lumana-to-chroma prediction mode is used for the chroma component of CU, the CCLM Cb-to-Cr prediction can be used for the Cr component prediction.
[0027] Multi-model CCLM (MMLM) is another extension of CCLM. As the name suggests, MMLM can have multiple models, such as two models. In MMLM, adjacent lumen samples and adjacent chromen samples of the current block can be classified into two groups, each group which can be used as a training set to derive a linear model (i.e., specific α and β are derived for a specific group). Furthermore, samples of the current lumen block can be classified based on the same rules as the classification of adjacent lumen samples.
[0028] Figure 8 shows an example of classifying adjacent samples into two groups. Here, the threshold can be calculated as the mean of adjacent reconstructed lumens. Adjacent samples with Rec'L[x,y] <= threshold can be classified into group 1, while adjacent samples with Rec'L[x,y] > threshold can be classified into group 2.
[0029]
number
[0030] Local irradiation correction (LIC) is based on a linear model of irradiation variation using scale coefficients a and offset b. This is adaptively enabled or disabled for each intermode encoded coding unit (CU).
[0031] When applying LIC to a CU, the least squares error method is used to derive parameters a and b using the adjacent samples of the current CU and their corresponding reference samples. More specifically, as shown in Figure 14, subsampled (2:1 subsampled) adjacent samples of the current CU 1410 (shown in part (a) of Figure 14) and corresponding samples of the reference picture or block 1420 (shown in part (b) of Figure 14) (identified by the motion information of the current CU or sub-CU) are used. The IC parameters are derived and applied individually for each prediction direction.
[0032] If the CU is encoded in merge mode, the LIC flag is either copied from the adjacent block in a similar manner to the copying of motion information in merge mode, or, otherwise, the LIC flag is notified to the CU to indicate whether LIC is applied.
[0033] Despite the advancements mentioned above, problems remain with state-of-the-art technology. Currently, VTM3.0 allows a 6-tap interpolation filter to be applied to all lumen samples in a given adjacent region in the 4:2:0 YUV format, but ultimately only the two lumen samples with the maximum and minimum values are used to derive the CCLM parameters, which increases the complexity of the decoder without offering any clear advantage in coding efficiency. Furthermore, VTM3.0 only supports the 4:2:0 YUV format for CCLM lumen sample interpolation filters, while the 4:4:4 and 4:2:2 YUV formats are still common and should be supported.
[0034] Currently in VTM3.0, the size of the CCLM lookup table (LUT) is 512, meaning the lookup table has 512 elements, each represented as a 16-bit integer. This increases the decoder memory cost too much, even without any clear advantage in coding efficiency. Furthermore, although the concepts of CCLM and LIC are similar, they use different methods to derive the linear model parameters a and b, which is undesirable.
[0035] Currently, in VTM3.0, for large blocks such as 32x32 chroma blocks, the maximum and minimum values are calculated using 64 samples from a specified adjacent region, which increases the complexity of the decoder without offering any clear advantage in encoding efficiency.
[0036] Currently, in VTM3.0, for large blocks such as 64x64 blocks, the linear model parameters a and b are calculated using 64 samples from a specified adjacent region, which increases the complexity of the decoder without providing any clear advantage in coding efficiency. [Overview of the project] [Means for solving the problem]
[0037] A method for encoding or decoding a video sequence may include the steps of applying a cross-component linear model (CCLM) to the video sequence and applying an interpolation filter in the cross-component linear model (CCLM), the interpolation filter of which may depend on the YUV format of the video sequence.
[0038] According to one aspect of the present disclosure, in the above method, when applying an interpolation filter in a cross-component linear model (CCLM), the method further includes the step of using a tap of the interpolation filter that depends on the YUV format of the video sequence.
[0039] According to this aspect of the disclosure, the method further includes the step of using a tap of an interpolation filter used in a cross-component linear model (CCLM), which is the same format as the YUV format of the video sequence.
[0040] According to one aspect of the present disclosure, in the above method, when applying an interpolation filter in a cross-component linear model (CCLM), the method may further include the step of setting the format of the interpolation filter to be the same as the format of the video sequence if the video sequence includes a 4:4:4: or 4:2:2 YUV format, and the step of setting the format of the interpolation filter to be different from the format of the video sequence if the video sequence includes a 4:2:0 YUV format.
[0041] According to one aspect of the present disclosure, in the above method, when applying an interpolation filter in a cross-component linear model (CCLM), the method may further include the step of using different interpolation filter taps for various YUV formats of the video sequence.
[0042] According to one aspect of the present disclosure, in the above method, when applying an interpolation filter in a cross-component linear model (CCLM), the method may further include the step of setting the interpolation filter differently for the reconstructed samples of the upper and left adjacent lumens.
[0043] According to this aspect of the disclosure, the method may further include the step of setting an interpolation filter, which is applied such that the upper and left adjacent lumens reconstruction samples depend on the YUV format of the video sequence.
[0044] According to one aspect of the present disclosure, the method may further include the step of setting the number of rows of the upper adjacent lumens and the number of columns of the left adjacent lumens used in a cross-component linear model (CCLM) to depend on the YUV format of the video sequence.
[0045] According to present embodiments of the present disclosure, the method may further include the step of using one row of the upper adjacent region and / or one column of the left adjacent region in a cross-component linear model (CCLM) for a video sequence having one of the 4:4:4 or 4:2:2 YUV formats.
[0046] According to present embodiments of the present disclosure, the method may further include the step of using one row of the upper adjacent region and / or at least two columns of the left adjacent region in a cross-component linear model (CCLM) for a video sequence having a 4:2:2 YUV format.
[0047] According to one aspect of the present disclosure, a device for encoding or decoding a video sequence may include at least one memory configured to store program code, and at least one processor configured to read the program code and operate as instructed by the program code, wherein the program code may include a first encoding or decoding code configured to cause the at least one processor to apply a cross-component linear model (CCLM) to the video sequence and to apply an interpolation filter in the cross-component linear model (CCLM), the interpolation filter of which may depend on the YUV format of the video sequence.
[0048] According to one aspect of the present disclosure, the first encoding or decoding code may further include a code configured to cause at least one processor to use taps of interpolation filters applied in a cross-component linear model (CCLM) that depends on the YUV format of the video sequence.
[0049] According to present embodiments of the present disclosure, the first encoding or decoding code may further include a code configured to cause at least one processor to use taps of interpolation filters applied in a cross-component linear model (CCLM) which is in the same format as the YUV format of a video sequence.
[0050] According to one aspect of the present disclosure, the first encoding or decoding code may further include a code configured to cause at least one processor to set the format of the interpolation filter applied in a cross-component linear model (CCLM) to be the same as the format of the video sequence if the video sequence includes a 4:4:4: or 4:2:2 YUV format, and to set the format of the interpolation filter to be different from the format of the video sequence if the video sequence includes a 4:2:0 YUV format.
[0051] According to one aspect of the present disclosure, the first encoding or decoding code may further include a code configured to cause at least one processor to use different taps of interpolation filters applied in a cross-component linear model (CCLM) for various YUV formats of a video sequence.
[0052] According to one aspect of the present disclosure, the first encoding or decoding code may further include a code configured to cause at least one processor to set different interpolation filters applied in a cross-component linear model (CCLM) for the reconfigured samples of the upper and left adjacent lumens.
[0053] According to present embodiments of the present disclosure, the first encoding or decoding code may further include code configured to cause at least one processor to set interpolation filters applied to reconfigured samples of the upper and left adjacent lumens to depend on the YUV format of the video sequence.
[0054] According to one aspect of the present disclosure, the first encoding or decoding code may further include code configured to cause at least one processor to set the number of rows of upper adjacent lumens and the number of columns of left adjacent lumens used in a cross-component linear model (CCLM) in a manner dependent on the YUV format of the video sequence.
[0055] According to present embodiments of the present disclosure, the first encoding or decoding code may further include a code configured to cause at least one processor to use one row of the upper adjacent region and / or at least one column of the left adjacent region in a cross-component linear model (CCLM) for a video sequence having one of the 4:4:4 or 4:2:2 YUV formats.
[0056] According to one aspect of the present disclosure, a non-temporary computer-readable medium for storing program code may be provided, the program code comprising one or more instructions, which, when executed by one or more processors of the device, may cause one or more processors to apply a cross-component linear model (CCLM) to a video sequence and to apply an interpolation filter in the cross-component linear model (CCLM), the interpolation filter depending on the YUV format of the video sequence.
[0057] Although the methods, devices, and non-temporary computer-readable media described above have been described individually, these descriptions are not intended to imply any limitations on the scope or functionality of their use. In fact, these methods, devices, and non-temporary computer-readable media may be combined in other embodiments of this disclosure.
[0058] Further features, properties, and various advantages of the disclosed subject matter will become clearer from the detailed description and accompanying drawings below. [Brief explanation of the drawing]
[0059] [Figure 1] This is a diagram of a predictive model according to one embodiment. [Figure 2] This is a diagram of a predictive model according to one embodiment. [Figure 3] This is a diagram of the YUV format according to one embodiment. [Figure 4] This is a diagram showing different luma values according to one embodiment. [Figure 5] This is a sample diagram used in cross-component linear modeling according to one embodiment. [Figure 6] This is a sample diagram used in cross-component linear modeling according to one embodiment. [Figure 7] This is a sample diagram used in cross-component linear modeling according to one embodiment. [Figure 8]This is an example of classification using multi-model CCLM according to one embodiment. [Figure 9] This is a simplified block diagram of a communication system according to one embodiment. [Figure 10] This is a diagram of a streaming environment according to one embodiment. [Figure 11] This is a block diagram of a video decoder according to one embodiment. [Figure 12] This is a block diagram of a video encoder according to one embodiment. [Figure 13] This is a flowchart of an exemplary process for encoding or decoding a video sequence according to one embodiment. [Figure 14] This is a diagram of adjacent samples used to derive the irradiation compensation (IC) parameters. [Figure 15] This figure shows the current coding unit (CU) and a subset of adjacent reconstructed samples of the current CU, used to calculate the maximum and minimum sample values according to the embodiment. [Figure 16] This figure shows the current coding unit (CU) and a subset of adjacent reconstructed samples of the current CU, used to calculate the maximum and minimum sample values according to the embodiment. [Figure 17] This figure shows the current coding unit (CU) and a subset of adjacent reconstructed samples of the current CU, used to calculate the maximum and minimum sample values according to the embodiment. [Figure 18] This figure shows the current coding unit (CU) and a subset of adjacent reconstructed samples of the current CU, used to calculate the maximum and minimum sample values according to the embodiment. [Figure 19] This figure shows the current coding unit (CU) and a subset of adjacent reconstructed samples of the current CU, used to calculate the maximum and minimum sample values according to the embodiment. [Figure 20]This figure shows the current coding unit (CU) and a subset of adjacent reconstructed samples of the current CU, used to calculate the maximum and minimum sample values according to the embodiment. [Figure 21] This figure shows the current coding unit (CU) and a subset of adjacent reconstructed samples of the current CU, used to calculate the maximum and minimum sample values according to the embodiment. [Figure 22] This figure shows the current coding unit (CU) and a subset of adjacent reconstructed samples of the current CU, used to calculate the maximum and minimum sample values according to the embodiment. [Figure 23] This figure shows the current coding unit (CU) and a subset of adjacent reconstructed samples of the current CU, used to calculate the maximum and minimum sample values according to the embodiment. [Figure 24] This figure shows the current coding unit (CU) and a subset of adjacent reconstructed samples of the current CU, used to calculate the maximum and minimum sample values according to the embodiment. [Figure 25] This figure shows a chroma block and selected adjacent samples of the chroma block, used to calculate the maximum and minimum sample values according to the embodiment. [Figure 26] This figure shows a chroma block and selected adjacent samples of the chroma block, used to calculate the maximum and minimum sample values according to the embodiment. [Figure 27] This is a diagram showing the position of the filter for the lumens sample according to the embodiment. [Figure 28] This is a diagram showing the position of the filter for the lumens sample according to the embodiment. [Figure 29] This figure shows the current CU and its adjacent sample pairs, used to calculate parameters in the linear model prediction mode according to the embodiment. [Figure 30]This figure shows the current CU and its adjacent sample pairs, used to calculate parameters in the linear model prediction mode according to the embodiment. [Figure 31] This figure shows a block and selected neighboring samples of the block used to calculate linear model parameters according to the embodiment. [Figure 32] This figure shows a block and selected neighboring samples of the block used to calculate linear model parameters according to the embodiment. [Figure 33] This figure shows a block and selected neighboring samples of the block used to calculate linear model parameters according to the embodiment. [Figure 34] This figure shows a block and selected neighboring samples of the block used to calculate linear model parameters according to the embodiment. [Figure 35] This figure shows a block and selected neighboring samples of the block used to calculate linear model parameters according to the embodiment. [Figure 36] This figure shows a block and selected neighboring samples of the block used to calculate linear model parameters according to the embodiment. [Figure 37] This is a diagram of a computer system according to one embodiment. [Modes for carrying out the invention]
[0060] Figure 9 shows a simplified block diagram of a communication system (400) according to one embodiment of the present disclosure. The communication system (400) may include at least two terminals (410-420) interconnected via a network (450). In the case of one-way data transmission, a first terminal (410) may encode video data at its local location for transmission to another terminal (420) via the network (450). A second terminal (420) may receive the encoded video data from the other terminal via the network (450), decode the encoded data, and display the restored video data. One-way data transmission may be common in applications such as media serving.
[0061] Figure 9 shows a second pair of terminals (430, 440) provided to support the bidirectional transmission of encoded video that may occur, for example, during a video conference. In the case of bidirectional data transmission, each terminal (430, 440) may encode video data captured at its local location for transmission to other terminals over the network (450). Each terminal (430, 440) may also receive encoded video data transmitted by other terminals, decode the encoded data, and display the recovered video data on a local display device.
[0062] In Figure 9, terminals (410–440) may be represented as servers, personal computers, and smartphones, but the principles of this disclosure are not limited thereto. Embodiments of this disclosure find applications using laptop computers, tablet computers, media players, and / or dedicated video conferencing equipment. Network (450) represents any number of networks that transmit encoded video data between terminals (410–440), including, for example, wired and / or wireless communication networks. Communication networks (450) may exchange data over circuit-switched and / or packet-switched channels. Typical networks include telecommunications networks, local area networks, wide area networks, and / or the Internet. For the purposes of this discussion, the architecture and topology of network (450) may not be important to the operation of this disclosure unless described below herein.
[0063] Figure 10 shows an example of the application of the disclosed subject matter, illustrating the arrangement of a video encoder and decoder in a streaming environment. The disclosed subject matter can be equally applied to other video-enabled applications, including, for example, video conferencing, digital television, and the storage of compressed video on digital media such as CDs, DVDs, and memory sticks.
[0064] The streaming system may include a capture subsystem (513), which may include, for example, a digital camera, that creates a video source (501), for example, an uncompressed video sample stream (502). The sample stream (502), shown in thick lines to highlight a larger amount of data compared to the encoded video bitstream, can be processed by an encoder (503) coupled to the camera (501). The encoder (503) may include hardware, software, or a combination thereof, enabling or implementing aspects of the disclosed subject as will be described in more detail below. The encoded video bitstream (504), drawn as a thin line to highlight a smaller amount of data compared to the sample stream, can be stored in a streaming server (505) for future use. One or more streaming clients (506, 508) may access the streaming server (505) to obtain copies (507, 509) of the encoded video bitstream (504). A client (506) may include a video decoder (510) that decodes an incoming copy of an encoded video bitstream (507) and creates an outgoing video sample stream (511) that can be rendered on a display (512) or other rendering device (not shown). Some streaming systems may encode the video bitstream (504, 507, 509) according to a specific video encoding / compression standard. Examples of these standards include H.265 HEVC. A video encoding standard under development is informally known as Versatile Video Coding (VVC). The disclosed subject matter may be used in the context of VVC.
[0065] Figure 11 may be a functional block diagram of a video decoder (510) according to an embodiment of the present invention.
[0066] The receiver (610) may receive one or more codec video sequences to be decoded by the decoder (610), which in the same or different embodiments may be one encoded video sequence at a time, and the decoding of each encoded video sequence is independent of other encoded video sequences. The encoded video sequences may be received from a channel (612), which may be a hardware / software link to a storage device that stores the encoded video data. The receiver (610) may receive the encoded video data together with other data that may be transferred to their respective usage entities (not shown), e.g., encoded audio data and / or auxiliary data streams. The receiver (610) may isolate the encoded video sequences from other data. To counteract network jitter, a buffer memory (615) may be coupled between the receiver (610) and the entropy decoder / parser (620) (hereinafter, the "parser"). When the receiver (610) is receiving data from a storage / transfer device with sufficient bandwidth and controllability, or from an isosynchronous network, the buffer (615) is not necessary or may be small. For use in best-effort packet networks such as the Internet, the buffer (615) may be necessary and can be relatively large and advantageously adaptable in size.
[0067] The video decoder (510) may include a parser (620) for reconstructing symbols (621) from an entropy-encoded video sequence. These symbol categories may include information used to manage the operation of the decoder (510), as shown in Figure 11, and information for controlling rendering devices, such as a display (512), which are not integral parts of the decoder but can be coupled to it. The control information for rendering devices may be in the form of Supplementary Enhancement Information (SEI messages) or Video Usability Information (VUI) parameter set fragments (not shown). The parser (620) may parse / entropy-decode the received encoded video sequence. The encoding of the encoded video sequence may follow video coding techniques or standards, and may follow principles well known to those skilled in the art, including variable-length coding, Huffman coding, and arithmetic coding with or without context. The parser (620) may extract from the encoded video sequence, based on at least one parameter corresponding to a group, a set of at least one subgroup parameter for subgroups of pixels in the video decoder. Subgroups can include picture groups (GOPs), pictures, tiles, slices, macroblocks, coding units (CUs), blocks, transformation units (TUs), and prediction units (PUs). The entropy decoder / parser can also extract information from the encoded video sequence, such as transformation coefficients, quantization parameter (QP) values, and motion vectors.
[0068] The parser (620) may perform an entropy decoding / parsing operation on the video sequence received from the buffer (615) to create a symbol (621). The parser (620) may receive the encoded data and selectively decode a particular symbol (621). Furthermore, the parser (620) may determine whether a particular symbol (621) should be provided to the motion compensation prediction unit (653), the scaler / inverse transform unit (651), the intra prediction unit (652), or the loop filter unit (658).
[0069] The reconstruction of symbol (621) may involve multiple different units, depending on the type of the encoded video picture or part thereof (inter-picture and intra-picture, inter-block and intra-block, etc.) and other factors. How each unit is involved can be controlled by subgroup control information parsed from the video sequence encoded by parser (620). The flow of such subgroup control information between parser (620) and the following multiple units is not depicted for clarity.
[0070] Beyond the functional blocks already described, the decoder (510) can be conceptually subdivided into several functional units, as described below. In actual implementations operating under commercial constraints, many of these units interact closely with each other and can be integrated, at least partially. However, for the sake of illustrating the disclosed subject matter, the following conceptual subdivision into functional units is appropriate.
[0071] The first unit is the scaler / inverse unit (651). The scaler / inverse unit (651) receives control information from the parser (620) as symbols (621), including the quantized transformation coefficients, as well as the transformation to be used, block size, quantization factor, and quantization scaling matrix. The scaler / inverse unit can output a block containing sample values that can be input to the aggregater (655).
[0072] In some cases, the output samples of the scaler / inverse transform (651) may relate to intra-encoded blocks, i.e., blocks that do not use predictive information from previously reconstructed pictures but can use predictive information from previously reconstructed portions of the current picture. Such predictive information can be provided by the intra-picture predictive unit (652). In some cases, the intra-picture predictive unit (652) generates blocks of the same size and shape as the block being reconstructed, using already reconstructed surrounding information fetched from the current (partially reconstructed) picture (656). The aggregater (655) may, sample by sample, add the predictive information generated by the intra-predictive unit (652) to the output sample information provided by the scaler / inverse transform unit (651).
[0073] In other cases, the output samples of the scaler / inverse unit (651) may relate to an intercoded and potentially motion-compensated block. In such cases, the motion-compensated prediction unit (653) can access the reference picture memory (657) to fetch samples to be used for prediction. After motion-compensating the fetched samples according to the symbols (621) associated with the block, these samples can be added to the output of the scaler / inverse unit by the aggregater (655) to generate output sample information (in this case, called residual samples or residual signals). The address in the reference picture memory form from which the motion-compensated unit fetches the prediction samples can be controlled by a motion vector, which may be available to the motion-compensated unit in the form of a symbol (621) that can have, for example, X, Y, and reference picture components. Motion compensation may also include interpolation of sample values fetched from the reference picture memory when the exact motion vectors of the subsamples are used, a motion vector prediction mechanism, and so on.
[0074] The output samples from the aggregater (655) may be subjected to various loop filtering techniques in the loop filter unit (658). The video compression technique may include in-loop filtering techniques controlled by parameters contained in the encoded video bitstream, which become available to the loop filter unit (658) as symbols (621) from the parser (620), but may also respond to metadata obtained during decoding of previous (in decoding order) portions of the encoded picture or encoded video sequence, and may also respond to previously reconstructed and loop-filtered sample values.
[0075] The output of the loop filter unit (658) may be output to the rendering device (512), or it may be a sample stream that can be stored in reference picture memory (656) for use in future picture-to-picture predictions.
[0076] A particular encoded picture, once fully reconstructed, can be used as a reference picture for future predictions. Once an encoded picture is fully reconstructed and identified as a reference picture (for example, by the parser (620)), the current reference picture (656) can become part of the reference picture buffer (657) and can be reallocated to a new current picture memory before the reconstruction of the next encoded picture begins.
[0077] The video decoder (510) may perform decoding operations according to a predetermined video compression technique, which may be documented in a standard such as H.265 HEVC. The encoded video sequence may conform to the syntax specified by the video compression technique or standard being used, in the sense that it conforms to the syntax of the video compression technique or standard, as specified in the video compression technique documentation or standard, particularly the profile documentation within it. Also required for compliance is that the complexity of the encoded video sequence is within the range defined by the level of the video compression technique or standard. In some cases, the level may limit the maximum picture size, maximum frame rate, maximum reconstruction sample rate (e.g., measured in megasamples per second), maximum reference picture size, etc. The limitations set by the level may in some cases be further limited by the hypothetical reference decoder (HRD) specification and the HRD buffer management metadata conveyed in the encoded video sequence.
[0078] In one embodiment, the receiver (610) may receive additional (redundant) data along with the encoded video. The additional data may be included as part of the encoded video sequence. The additional data may be used by the video decoder (510) to properly decode the data and / or to more accurately reconstruct the original video data. The additional data may take the form of, for example, a temporal, spatial, or signal-to-noise ratio (SNR) enhancement layer, redundant slices, redundant pictures, or forward error correction code.
[0079] Figure 12 may be a functional block diagram of a video encoder (503) according to one embodiment of the present disclosure.
[0080] The encoder (503) may receive video samples from a video source (501) (not part of the encoder) that can capture video images to be encoded by the encoder (503).
[0081] The video source (501) may provide a source video sequence encoded by the encoder (503) in the form of a digital video sample stream, which can be of any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, ...), any color space (e.g., BT.601 Y CrCB, RGB, ...), and any suitable sampling structure (e.g., Y CrCb 4:2:0, Y CrCb 4:4:4). In a media serving system, the video source (501) may be a storage device that stores previously prepared video. In a video conferencing system, the video source (503) may be a camera that captures local image information as a video sequence. The video data may be provided as a series of separate pictures that give motion when viewed sequentially. The pictures themselves can be organized as a spatial array of pixels, and each pixel may contain one or more samples, depending on the sampling structure, color space, etc., in use. Those skilled in the art will readily understand the relationship between pixels and samples. The following description focuses on samples.
[0082] According to one embodiment, the encoder (503) can encode and compress pictures of a source video sequence into an encoded video sequence (743) in real time or under any other time constraints required by the application. Forcing an appropriate encoding rate is one function of the controller (750). The controller (750) controls and is functionally coupled to other functional units, as described below. For clarity, the coupling is not depicted. Parameters set by the controller may include rate control-related parameters (such as picture skip, quantizer, lambda value of rate distortion optimization technique), picture size, picture group (GOP) layout, maximum motion vector search range, etc. Those skilled in the art may be able to readily identify other functions of the controller (750) as they may relate to a video encoder (503) optimized for a particular system design.
[0083] Some video encoders operate in what is readily recognizable to those skilled in the art as an "encoding loop." In an overly simplified explanation, the encoding loop can consist of an encoding portion of the encoder (730) (hereinafter referred to as the "source coder") (responsible for creating symbols based on the input picture and reference picture to be encoded) and a (local) decoder (733) embedded in the encoder (503) that reconstructs the symbols to create sample data, which the (remote) decoder also creates (since compression between the symbols and the encoded video bitstream is lossless in the video compression techniques considered in the disclosed subject). The reconstructed sample stream is input to the reference picture memory (734). Decoding the symbol stream yields a bit-exact result regardless of the decoder's location (local or remote), so the contents of the reference picture buffer are also bit-exact between the local and remote encoders. In other words, the prediction portion of the encoder "sees" the exact same sample values as the reference picture samples that the decoder "sees" when using predictions during decoding. This basic principle of the synchronization of reference pictures (and the drift that occurs when synchronization cannot be maintained, for example, due to channel errors) is well known to those skilled in the art.
[0084] The operation of the “local” decoder (733) may be the same as that of the “remote” decoder (510), which is described in detail above in relation to Figure 10. However, even with a brief reference to Figure 10, symbols may be available, and the encoding / decoding of symbols to the encoded video sequence by the entropy coder (745) and parser (620) may be lossless, and the entropy decoding portion of the decoder (510), including the channel (612), receiver (610), buffer (615), and parser (620), may not be fully implemented in the local decoder (733).
[0085] One observation that can be made at this point is that decoder techniques other than analysis / entropy decoding present in the decoder must also be present in the corresponding encoder in substantially the same functional form. The description of encoder techniques can be omitted as it is the inverse of the comprehensively described decoder techniques. More detailed explanations are necessary only in specific areas, and are provided below.
[0086] As part of its operation, the source coder (730) may perform motion-compensated predictive coding, which predictively codes the input frame by referencing one or more previously coded frames from a video sequence designated as “reference frames”. In this way, the coding engine (732) codes the difference between the pixel blocks of the input frame and the pixel blocks of the reference frame that may be selected as predictive references to the input frame.
[0087] The local video decoder (733) can decode the encoded video data of a frame that may be designated as a reference frame based on symbols created by the source coder (730). The operation of the encoding engine (732) can, advantageously, be a lossy process. If the encoded video data can be decoded by a video decoder (not shown in Figure 11), the reconstructed video sequence may typically be a replica of the source video sequence with some errors. The local video decoder (733) can replicate the decoding process that may be performed by the video decoder on the reference frame and have the reconstructed reference frame stored in the reference picture cache (734). In this way, the encoder (503) can locally store a copy of the reconstructed reference frame that has common content as the reconstructed reference frame acquired by the far-end video decoder (without transmission errors).
[0088] The predictor (735) may perform a predictive search of the encoding engine (732). That is, for a new frame to be encoded, the predictor (735) may search the reference picture memory (734) for specific metadata, such as reference picture motion vectors, block shapes, etc., which may serve as sample data (as candidate reference pixel blocks) or as appropriate predictive references for the new picture. The predictor (735) may operate with one sample block per pixel block to find appropriate predictive references. In some cases, the input picture may have predictive references drawn from multiple reference pictures stored in the reference picture memory (734), as determined by the search results obtained by the predictor (735).
[0089] The controller (750) may manage the encoding operation of the video coder (730), including, for example, setting parameters and subgroup parameters used to encode video data.
[0090] The outputs of all the aforementioned functional units may undergo entropy coding in an entropy coder (745). The entropy coder converts the symbols generated by the various functional units into coded video sequences by lossless compression of the symbols according to techniques known to those skilled in the art, such as Huffman coding, variable-length coding, and arithmetic coding.
[0091] The transmitter (740) may buffer the encoded video sequence created by the entropy coder (745) and prepare it for transmission over the communication channel (760), which may be a hardware / software link to a storage device that stores the encoded video data. The transmitter (740) may merge the encoded video data from the video coder (730) with other data being transmitted, such as encoded audio data and / or auxiliary data streams (sources not shown).
[0092] The controller (750) may manage the operation of the encoder (503). During encoding, the controller (750) may assign a specific encoded picture type to each encoded picture, which may affect the encoding technique that can be applied to each picture. For example, a picture may often be assigned as one of the following frame types:
[0093] An intra-picture (I-picture) may be something that can be encoded and decoded without using other frames in the sequence as a source for prediction. Some video codecs can use various types of intra-pictures, such as the Independent Decoder Refresh Picture. Those skilled in the art are familiar with these variations of I-pictures and their respective uses and characteristics.
[0094] A predictive picture (P-picture) may be one that can be encoded and decoded using intra-prediction or inter-prediction, which uses up to one motion vector and reference index to predict the sample value of each block.
[0095] A bidirectional predictive picture (B-picture) may be one that can be encoded and decoded using intra-prediction or inter-prediction, which uses up to two motion vectors and reference indices to predict the sample values of each block. Similarly, multiple predictive pictures can use three or more reference pictures and associated metadata for the reconstruction of a single block.
[0096] A source picture can generally be subdivided spatially into multiple sample blocks (e.g., blocks of 4x4, 8x8, 4x8, or 16x16 samples each), and each block can be encoded. Blocks can be encoded predictively by referencing other (already encoded) blocks, as determined by the encoding assignment applied to each picture in the block. For example, blocks in picture I can be encoded unpredictably or predictively by referencing already encoded blocks of the same picture (spatial prediction or intra-prediction). Pixel blocks in picture P can be encoded unpredictably via spatial prediction or via temporal prediction referencing one previously encoded reference picture. Blocks in picture B can be encoded unpredictably via spatial prediction or via temporal prediction referencing one or two previously encoded reference pictures.
[0097] The video coder (503) may perform encoding operations according to a given video encoding technique or standard, such as H.265 HEVC. In this operation, the video coder (503) may perform various compression operations, including predictive encoding operations that utilize temporal and spatial redundancy in the input video sequence. Thus, the encoded video data may conform to the syntax specified by the video encoding technique or standard being used.
[0098] In one embodiment, the transmitter (740) may transmit additional data along with the encoded video. The video coder (730) may include such data as part of the encoded video sequence. The additional data may include temporal / spatial / SNR enhancement layers, other forms of redundant data such as redundant pictures and slices, supplemental enhancement information (SEI) messages, visual usability information (VUI) parameter set fragments, and the like.
[0099] This disclosure covers various methods for cross-component linear model prediction modes.
[0100] As described above, in this application, CCLM may refer to any variation of a cross-component linear model such as LT_CCLM, T_CCLM, L_CCLM, MMLM, LT_MMLM, L_MMLM, and T_MMLM. Furthermore, in this application, a smoothing filter may be defined as a linear filter with an odd number of taps, and its filter coefficients may be symmetric. For example, both the 3-tap filter [1, 2, 1] and the 5-tap filter [1, 3, 8, 3, 1] are smoothing filters. An interpolation filter may be defined as a linear filter that uses integer-positioned samples to generate fractional-positioned samples.
[0101] It has been proposed that the interpolation filter used in CCLM may be applied to a subset of adjacent lumen reconstruction samples within a specified region.
[0102] In one embodiment, the designated adjacent sample region may be the left adjacent sample region used for L_CCLM and L_MMLM, or the upper adjacent sample region used for T_CCLM and T_MMLM, or the upper and left adjacent sample regions used for LT_CCLM and LT_MMLM.
[0103] In another embodiment, the maximum and minimum values can be found by directly using lumar samples reconstructed in a specified region. After obtaining the maximum and minimum lumar sample values, an interpolation (or smoothing) filter can be applied (for example, simply) to these two samples.
[0104] In another embodiment, after obtaining the maximum and minimum lumen sample values, the positions of the minimum and maximum lumen samples at the same location within the chroma-adjacent sample region may be recorded as (x_min, y_min) and (x_max, y_max), respectively, and a downsample filter may be applied to the lumen samples at the same location as the chroma samples having positions (x_min, y_min) and (x_max, y_max).
[0105] In another aspect, for the 4:2:0 YUV format, the downsampling filter may be applied as follows: (x,y) in the following equation can be replaced with (x_min,y_min) or (x_max,y_max):
[0106]
number
[0107] This shows the downsampled lumens sample values.
[0108]
number
[0109] This represents a ruma sample constructed at a specified adjacent position (k·x, k·y), where k can be a positive integer such as 1, 2, 3, or 4.
[0110]
number
[0111] In another embodiment, for the 4:2:0 YUV format, the same position within the lumens sample region for a chroma sample having position (x,y) can be any of the following six positions: (k*x,k*y), (k*x-1,k*y), (k*x+1,k*y), (k*x-1,k*y+1), (k*x,k*y+1), and (k*x+1,k*y+1), where k is a positive integer such as 1, 2, 3, or 4.
[0112] In another embodiment, for 4:4:4 and 4:2:2 YUV formats, the above interpolation filters may be used here.
[0113] In another embodiment, the maximum and minimum values can be found by directly using a lumen sample reconstructed in a specified region.
[0114] In another embodiment, in LT_CCLM mode, adjacent lumens samples in the first upper reference row (shown in Figures 6(A) to 6(B)) and the second left reference column (shown in Figures 7A to 7B) may be used directly to find the maximum and minimum values.
[0115] In another embodiment, in LT_CCLM mode, half of the adjacent lumens samples in the first and second upper reference rows (shown in Figures 6(A) to 6(B)) and the samples in the second left reference column (shown in Figures 7(A) to 7(B)) may be used directly to find the maximum and minimum values.
[0116] In another embodiment, in T_CCLM mode, adjacent rumor samples of the first upper reference row may be used directly to find the maximum and minimum values.
[0117] In another embodiment, in T_CCLM mode, half of the adjacent rumor samples of the first and second upper reference rows may be used directly to find the maximum and minimum values.
[0118] In another embodiment, in L_CCLM mode, adjacent lumens samples in the second left-hand reference column may be used directly to find the maximum and minimum values.
[0119] In another embodiment, if an interpolation filter is used on a portion of adjacent luma samples (for example, only on a portion of such samples), a different downsampling filter than those currently used in CCLM, namely a 6-tap [1,2,1;1,2,1] / 8 filter, may be applied. For example, a 10-tap filter might be [1,4,6,4,1;1,4,6,4,1] / 16.
[0120] In another embodiment, the downsampling filter may be an 8-tap filter, where the number of filter taps in the first (closest to the current block) reference row (shown in Figures 6A-6B) may differ from that of other (farther away from the current block) reference columns (shown in Figures 7A-7B). For example, the 8-tap filter may be [1,2,1;1,2,6,2,1] / 16, where the number of filter taps in the first reference row (or column) may be 5, while the number of taps in the second reference row (or column) may be 3.
[0121] In another embodiment, it has been proposed that the maximum and minimum values can be found using a chromatic sample reconstructed in a specified region.
[0122] In one embodiment, after obtaining the maximum and minimum chroma sample values, an interpolation (or smoothing) filter may be applied to a lumen sample at the same position as these two chroma samples (e.g., only that lumen sample). For example, in the 4:2:0 YUV format, the above interpolation (or smoothing) filter may be used. As another example, in the 4:2:0 YUV format, the position at the same position as one chroma sample having the above position (x,y) may be used here. In yet another example, in the 4:4:4 and 4:2:2 YUV formats, the interpolation filters described below may be used here.
[0123] In one embodiment, it has been proposed that the interpolation filter (or smoothing filter) used in CCLM may depend on the YUV format, such as 4:4:4, 4:2:2, or 4:2:0 YUV format.
[0124] Figure 13 is a flowchart of an exemplary process (800) for encoding or decoding a video sequence. In some implementations, one or more process blocks in Figure 13 may be performed by a decoder (510). In some implementations, one or more process blocks in Figure 13 may be performed by a separate device or group of devices separate from or including the decoder (510), such as an encoder (503).
[0125] As shown in Figure 13, process (800) may include encoding or decoding the video sequence (810).
[0126] As further shown in Figure 13, process (800) may further include applying a cross-component linear model (CCLM) to the video sequence (820).
[0127] As further shown in Figure 13, process (800) may further include applying an interpolation filter in a cross-component linear model (CCLM), the interpolation filter depending on the YUV format of the video sequence (830).
[0128] Figure 13 shows an exemplary block of process (800), but in some implementations, process (800) may include additional blocks, fewer blocks, different blocks, or blocks in different arrangements than those shown in Figure 13. Furthermore, or instead, two or more blocks of process (800) may be executed in parallel.
[0129] In another embodiment, the tapping of the interpolation (or smoothing) filter used in CCLM may depend on the YUV format.
[0130] In another embodiment, the taps of the interpolation (or smoothing) filter used in CCLM may be the same for the same YUV format. For example, the taps of the interpolation filter used in CCLM may be the same for the 4:2:0 YUV format.
[0131] In another aspect, the interpolation or smoothing filters for the 4:4:4 and 4:2:2 YUV formats are the same but different from those for the 4:2:0 YUV format. For example, a 3-tap (1,2,1) filter may be used for the 4:4:4 and 4:2:2 YUV formats, while a 6-tap (1,2,1;1,2,1) filter may be used for the 4:2:0 YUV format. As another example, downsampling (or smoothing) filters may not be used for the 4:4:4 and 4:2:2 YUV formats, while a 6-tap (1,2,1,1,2,1) or 3-tap (1,2,1) filter may be used for the 4:2:0 YUV format.
[0132] In another embodiment, the taps of the interpolation (or smoothing) filters used in CCLM may differ for various YUV formats. For example, a 5-tap (1,1,4,1,1) filter may be used for the 4:4:4 YUV format, a (1,2,1) filter for the 4:2:2 YUV format, and a 6-tap (1,2,1,1,2,1) filter for the 4:2:0 YUV format.
[0133] In another embodiment, the interpolation (or smoothing) filter may differ for the adjacent lumens above and to the left of the reconstructed sample.
[0134] In another embodiment, the interpolation (or smoothing) filters for the upper and left adjacent lumens reconstruction samples may depend on the YUV format.
[0135] In another aspect, in the 4:2:2 YUV format, the interpolation (or smoothing) filter may differ for the upper and left adjacent samples. For example, in the 4:2:2 YUV format, the (1,2,1) filter may be applied to the upper adjacent lumen sample, while the interpolation (or smoothing) filter may not be applied to the left adjacent lumen sample.
[0136] In another embodiment, the number of rows in the upper adjacent lumens sample and the number of columns in the left adjacent lumens sample used in CCLM may depend on the YUV format. For example, in the 4:4:4 YUV or 4:2:2 YUV format, only one row in the upper adjacent region and / or one column in the left adjacent region may be used. As another example, one row in the upper adjacent region and / or three (or two) columns in the left adjacent region may be used in the 4:2:2 YUV format.
[0137] In another embodiment, it is also proposed that the quantized value of the absolute difference, represented by diff_Y, can be non-uniformly quantized to specify the entry index of the CCLM LUT such that the absolute difference between the maximum and minimum lumar sample values within a given adjacent sample region is reduced in size. The range of diff_Y can be divided into two intervals, and if diff_Y is less than or equal to a threshold named Thres_1, one step size named Step_A can be used. Otherwise, another step size named Step_B can be used. Thus, the parameter a of the CCLM can be obtained as follows:
[0138]
number
[0139] In this embodiment, Thres_1 may be set to equal 64, Step_A may be set to equal 1, and Step_B may be set to equal 8.
[0140] Next, in addition to section 8.2.4.2.8 of VVC Draft 3, we will describe the revised CCLM parameter derivation process.
[0141] In another embodiment, in the preceding equation, the variables a, b, and k can be derived as follows: -If numSampL is equal to 0 and numSampT is equal to 0, the following applies: k=0 a=0 b=1<<(BitDepth C -1) -Otherwise, the following applies: Shift = (BitDepth C >8)?BitDepth C -9:0 add=shift?1<<(shift-1):0 diff=(maxY-minY+add)>>shift k=16 -If diff is greater than 0, the following applies: diff=(diff>64)?(56+(diff>>3)):diff a=((maxC-minC)*g_aiLMDivTableHigh[diff-1]+add)>>shift -Otherwise, the following applies: a=0 b = minC - ((a*minY)>>k)
[0142] Here, the prediction sample predSamples[x][y] with x=0..nTbW-1, y=0..nTbH-1 can be derived as follows: predSamples[x][y]=Clip1C(((pDsY[x][y]*a)>>k)+b)
[0143] Furthermore, a simplified CCLM lookup table is shown below: int g_aiLMDivTableHigh[]={ 65536,32768,21845,16384,13107,10922,9362,8192,7281,6553,5957,5461,5041,4681,4369,4096, 3855,3640,3449,3276,3120,2978,2849,2730,2621,2520,2427,2340,2259,2184,2114,2048, 1985,1927,1872,1820,1771,1724,1680,1638,1598,1560,1524,1489,1456,1424,1394,1365, 1337,1310,1285,1260,1236,1213,1191,1170,1149,1129,1110,1092,1074,1057,1040,1024, 910,819,744,682,630,585,546,512,481,455,431,409,390,372,356,341, 327,315,303,292,282,273,264,256,248,240,234,227,221,215,210,204, 199,195,190,186,182,178,174,170,167,163,160,157,154,151,148,146, 143,141,138,136,134,132,130,128,};
[0144] In the embodiment, the quantized absolute difference is also used to specify the entry index of the CCLM LUT such that the absolute difference between the maximum and minimum lumar sample values within a specified adjacent sample region, represented by diff_Y, is non-uniformly quantized, thereby reducing the size of the lookup table (LUT).
[0145] For example, the specified adjacent sample region could be the left adjacent sample region used for L_CCLM and L_MMLM, or the upper adjacent sample region used for T_CCLM and T_MMLM, or the upper and left adjacent sample regions used for TL_CCLM and TL_MMLM.
[0146] In another example, the range of diff_Y is divided into multiple intervals, and different quantization step sizes are used in different intervals. In the first embodiment, the range of diff_Y is divided into two intervals, and if diff_Y is less than or equal to a threshold named Thres_1, one step size named Step_A is used. Otherwise, another step size named Step_B may be used. Thus, the parameter a of the CCLM can be obtained as follows:
[0147]
number
[0148] Thres_1, Step_A, and Step_B can each be any positive integer such as 1, 2, 3, or 4. Step_A and Step_B are not equal. In the example, Thres_1 is set to equal 32, 48, or 64. In another example, Thres_1 is set to equal 64, Step_A is set to equal 1, and Step_B is set to equal 8. In yet another example, Thres_1 is set to equal 64, Step_A is set to equal 2 (or 1), and Step_B is set to equal 8 (or 4). In yet another example, the value of Step_A is less than the value of Step_B.
[0149] In the second embodiment, the range of diff_Y is divided into three intervals by two thresholds, namely Thres_1 and Thres_2. If diff_Y is less than or equal to Thres_1, one step size, namely Step_A, is used; otherwise, if diff_Y is less than or equal to Thres_2, another step size, namely Step_B, is used; otherwise, a third step size, namely Step_C, is used. Thres_1, Thres_2, Step_A, Step_B, and Step_C can each be any positive integer such as 1, 2, 3, 4, etc. Thres_1 is less than Thres_2. Step_A, Step_B, and Step_C are not equal. In the example, Thres_1 and Thres_2 are set to be equal to 64 and 256, respectively. In another example, Step_A, Step_B, and Step_C are set to be equal to 2 (or 1), 8 (or 4), and 32 (or 16), respectively.
[0150] In the third embodiment, the thresholds used to specify the intervals (such as Thres_1 and Thres_2) are powers of 2, for example, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024.
[0151] In further embodiments, the LIC reuses the maximum / minimum method of the CCLM to derive parameters a and b.
[0152] For example, LIC reuses CCLM's lookup table to avoid division operations.
[0153] In another example, LIC derives parameters a and b using the same adjacent reconstructed sample regions used for the luma component of TL_CCLM.
[0154] In another example, LIC reuses the same downsampling method in CCLM to filter out adjacent reconstructed samples.
[0155] In a further embodiment, only a subset of adjacent reconstructed samples within a specified region is used to calculate the maximum and minimum sample values of the maximum-minimum method in CCLM prediction mode.
[0156] For example, regardless of the block size of the current block, only four samples from adjacent reconstructed sample regions are used to calculate the maximum and minimum sample values. In this example, the positions of the four selected samples are fixed and shown in Figure 15. Specifically, with respect to the current CU 1510, only the sample values of the adjacent reconstructed samples at positions A, B, C, and D are used to calculate the maximum and minimum sample values.
[0157] In another example, in TL_CCLM mode, only the adjacent samples to the left (or above) are used to calculate the minimum sample value, and only the adjacent samples above (or to the left) are used to calculate the maximum sample value.
[0158] In another example, instead of finding the maximum and minimum sample values using the maximum-minimum method in CCLM prediction mode, the mean values of the upper lumar and chroma reference samples, i.e., top_mean_luma, top_mean_chroma, and the mean values of the left lumar and chroma reference samples, i.e., left_mean_luma, left_mean_chroma, can be used to derive the CCLM parameters.
[0159] In the following embodiments, with reference to Figure 16, if the upper left and lower left samples of the current CU 1610 are used, these blocks may be replaced with their directly adjacent samples located outside the range of the upper and left-side samples of the current CU 1610. For example, in Figure 16, samples A and B may be used.
[0160] In another example, in Figure 17, samples A, B, and C may be used in the current CU 1710.
[0161] In the following embodiments, a chroma sample (in the U or V component) is referred to as a sample pair together with a luma sample at the same location. Alternatively, in the case of LIC, an adjacent sample in the current block and an adjacent sample at the same location in the reference block are referred to as a sample pair, so that the samples in a sample pair originate from the same color component (luma, U, or V).
[0162] In the following embodiments, for CCLM or any variation / extension of CCLM mode, the block size may be that of the chroma block. For LIC mode or any variation of LIC, the block size may be that of the current block of the current color component (luma, U, or V).
[0163] In this embodiment, up to N adjacent reconstructed sample pairs within a specified region are used to calculate the maximum and minimum sample values of the maximum-minimum method in CCLM prediction mode, where N is a positive integer such as 4, 8, or 16.
[0164] For example, in the case of an N×2 or 2×N chroma block, only one adjacent sample pair from the left and one adjacent sample pair from the top are used to calculate the maximum and minimum sample values. The positions of the adjacent sample pairs used are fixed. In one example, the positions of the chroma samples in the sample pairs are shown in Figures 18 and 19 for the current CU1810 and 1910, respectively. In another example, the positions of the chroma samples in the sample pairs are shown in Figure 20 for the current CU2010.
[0165] In another example, the position of the chroma sample in a sample pair is shown in Figure 21 for the current CU 2110, and sample B can be at any position on the long side of the current CU 2110. As shown in Figure 21, sample B is in the center of the long side of the current CU 2110. The x-coordinate of sample B can be (width>>1)-1, (width>>1), or (width>>1)+1.
[0166] In another example, the position of the chroma sample in a sample pair is shown in Figure 22 for the current CU 2210, and sample B can be at any position on the long side of the current CU 2210. As shown in Figure 22, sample B is in the center of the long side of the current CU 2210. The x-coordinate of sample B can be (width>>1)-1, (width>>1), or (width>>1)+1.
[0167] In another example, for a 2×N or N×2 chroma block, N can be any positive integer such as 2, 4, 8, 16, 32, or 64. If N is equal to 2, only one adjacent sample pair from the left and one adjacent sample pair from the top are used to calculate the maximum and minimum sample values. Otherwise, if N is greater than 2, only one adjacent sample pair from the short side of the current CU and two or more adjacent sample pairs from the long side are used to calculate the maximum and minimum sample values. The positions of the adjacent sample pairs used are fixed. In one example, the positions of the chroma samples in a sample pair are shown in Figure 23 for the current CU 2310, where sample B is in the middle of the long side of the current CU 2310 and sample C is at the end of the long side.
[0168] In another example, for a chroma block, if both the width and height of the current block are greater than 2, then two or more sample pairs from the left side and two or more sample pairs from the top side of the current block are used to calculate the maximum and minimum sample values. The positions of the adjacent sample pairs used are fixed. In one example, referring to Figure 24, for each side of the current CU 2410, one sample is located in the center of the side (e.g., samples B and C), and another sample is located at the edge of the side (e.g., samples A and D).
[0169] In another example, in CCLM mode, only a subset of neighboring samples within a specified set of neighboring samples is used to calculate the maximum and minimum sample values. The number of samples selected varies depending on the block size. In one example, the number of selected neighboring samples is the same on the left and top sides. For chroma blocks, the samples used are selected according to the specified scan order. Referring to Figure 25, for the left side of chroma block 2510, the scan order is from top to bottom, and for the top side, the scan order is from left to right. Selected neighboring samples are highlighted with dark circles. Referring to Figure 26, for chroma block 2610, the samples used are selected according to the reverse scan order. That is, for the left side of chroma block 2610, the scan order is from bottom to top, and for the top side, the scan order is from right to left. The number of selected neighboring samples is the same on the left and top sides, and the selected neighboring samples are highlighted with dark circles.
[0170] In further embodiments, in CCLM mode, different downsampling (or interpolation) filter types are used for the left adjacent lumens sample and the upper adjacent lumens sample.
[0171] For example, some filter types are the same for the left and upper adjacent samples, but the positions of the filters used for the left and upper adjacent samples are different. Referring to Figure 27, the filter positions for the lumens sample on the left are shown, where W and X represent the filter coefficients and the blocks represent the lumens sample positions. Referring to Figure 28, the filter positions for the upper lumens sample are shown, where W and X represent the filter coefficients and the blocks represent the lumens sample positions.
[0172] In a further embodiment, up to N adjacent reconstructed sample pairs within a given region are used to compute parameters a and b in linear model prediction mode, where N is a positive integer such as 4, 8, or 16. The value of N may depend on the block size of the current block.
[0173] For example, LIC and CCLM (or any variation of CCLM such as L_CCLM, T_CCLM, LT_CCLM, etc.) share the same adjacent sample locations to compute the linear model parameters a and b.
[0174] In another example, the sample pairs used to calculate the LIC parameters a and b may be placed at different positions for different color components. While the sample pairs for different color components may be determined independently, the algorithm may be the same, for example, using the minimum and maximum sample values to derive the model parameters.
[0175] In another example, a first pair of samples is initially placed to calculate the LIC parameters a and b for a certain color component (e.g., luma), and then a pair of samples (e.g., U or V) used to calculate the LIC parameters a and b for another component is determined to be a sample placed in the same position as the first pair of samples.
[0176] In another example, LIC and CCLM (or any variation of CCLM such as L_CCLM, T_CCLM, LT_CCLM, etc.) share the same methods, such as the least-squares method or the maximum-minimum method, to compute the linear model parameters a and b. Both LIC and CCLM can compute the linear model parameters a and b using the maximum-minimum method. In the case of LIC, the maximum and minimum values of the linear model can be computed using the sum of the absolute values of the two samples in each sample pair.
[0177] In another example, there are three types of LIC modes: LT_LIC, L_LIC, and T_LIC. In LT_LIC mode, linear model parameters a and b are derived using both left-hand and upper-hand neighbor samples. In L_LIC mode, linear model parameters a and b are derived using only left-hand neighbor samples. In T_LIC mode, linear model parameters a and b are derived using only upper-hand neighbor samples. If the current mode is an LIC mode, another flag may be indicated to show whether LT_LIC mode is selected. Otherwise, one additional flag may be indicated to show whether L_LIC mode or T_LIC mode is being indicated.
[0178] In another example, for N×2 or 2×N blocks, only two adjacent sample pairs are used to compute parameters a and b (or to compute the maximum and minimum sample values) in linear model prediction mode. The positions of the adjacent sample pairs used are predefined and fixed.
[0179] In this example embodiment, for a linear model prediction mode that uses both sides to calculate parameters a and b, if both left-side and upper-side neighbor samples are available, only one pair of neighbor samples from the left and one pair of neighbor samples from the upper are used to calculate parameters a and b in the linear model prediction mode.
[0180] In this example embodiment, for the linear model prediction mode that uses both sides to calculate parameters a and b, if the left or upper adjacent sample is unavailable, the parameters a and b are calculated in the linear model prediction mode using two pairs of adjacent samples from the available side. Two examples of the current predefined positions of CU 2910 and 3010 are shown in Figures 29 and 30.
[0181] In this example embodiment, for a linear model prediction mode that uses both sides to calculate parameters a and b, if the left or upper adjacent sample is unavailable, parameters a and b are set to default values, such as a being set to 1 and b being set to 512.
[0182] In this example embodiment, the positions of the sample pairs are shown in Figures 18 and 19.
[0183] In this example embodiment, the positions of the sample pairs are shown in Figure 20.
[0184] In this example embodiment, the positions of the sample pair are shown in Figure 21, and sample B can be at any position on the long side of the current CU 2110. For example, sample B may be in the center of the long side. In another example, the x-coordinate of sample B may be (width>>1)-1, (width>>1), or (width>>1)+1.
[0185] In this example embodiment, the positions of the sample pair are shown in Figure 22, and sample B can be at any position on the long side of the current CU 2210. For example, sample B may be in the center of the long side. In another example, the x-coordinate of sample B may be (width>>1)-1, (width>>1), or (width>>1)+1.
[0186] In another example, for a 2×N or N×2 block, N can be any positive integer such as 2, 4, 8, 16, 32, or 64. If N is equal to 2, only one adjacent sample pair from the left and one adjacent sample pair from the top are used to calculate the linear model parameters a and b. Otherwise, if N is greater than 2, only one adjacent sample pair from the short side and two or more adjacent sample pairs from the long side are used to calculate the linear model parameters a and b. The positions of the adjacent sample pairs used are predefined and fixed. Referring to Figure 23, the positions of the sample pairs are shown, and sample B can be at any position on the long side of the current CU 2310. Sample B is in the middle of the long side, and sample C is at the end of the long side.
[0187] In another example, a pair of samples greater than or equal to K1 from the left and a pair of samples greater than or equal to K2 from the top are used to calculate the linear model parameters a and b. The positions of the adjacent sample pairs used are predefined and fixed. Furthermore, the number of selected samples, such as K, depends on the block size. K1 and K2 are positive integers such as 1, 2, 4, and 8, respectively. K1 and K2 can be equal.
[0188] In this example embodiment, the sample pairs selected on each side are evenly distributed.
[0189] In this example embodiment, the values of K1 and K2 should be less than or equal to the width and / or height of the current block.
[0190] In this embodiment, adjacent samples are selected according to a specified scan order. The selection process ends when the number of selected samples reaches a specified number. The number of selected samples on the left and top may be the same. On the left, the scan order is from top to bottom, and on the top, the scan order is from left to right. Referring to Figures 25 and 31, selected adjacent samples are highlighted with dark circles. In Figure 25, adjacent samples are not downsampled, and in Figure 31, adjacent samples are downsampled. Alternatively, adjacent samples may be selected according to the reverse scan order; that is, on the left, the scan order is from bottom to top, and on the top, the scan order is from right to left. Referring to Figures 26, 32, and 33, the positions of the selected samples are shown. In Figure 26, adjacent samples are not downsampled, and in Figures 32 and 33, adjacent samples are downsampled.
[0191] In this example embodiment, when both the width and height of the current block are greater than Th, the linear model parameters a and b are calculated using K or more sample pairs from the left and two or more sample pairs from above. The positions of the adjacent sample pairs used are predefined and fixed. Th is a positive integer such as 2, 4, or 8. K is a positive integer such as 2, 4, or 8.
[0192] In this example embodiment, if the adjacent samples on the left or upper side are unavailable, parameters a and b are derived using K samples from the available side.
[0193] In another example, for linear models that use only left- or upper-side adjacent samples, such as T_CCLM or L_CCLM, if the size of the side being used is equal to 2 (e.g., upper for T_CCLM or left for L_CCLM), then only M samples are used. M is a positive integer, such as 2 or 4, and its position is predefined. Otherwise, up to N samples are used. N is a positive integer, such as 4 or 8. M may not be equal to N.
[0194] In this example embodiment, referring to Figure 34, if the size of the side to be used is greater than 2, a predetermined position is shown, and the upper side is used.
[0195] In this embodiment, with reference to Figures 35 and 36, a predetermined position is shown when the size of the side being used is equal to 2, with the upper side being used in Figure 35 and the left side being used in Figure 36.
[0196] Furthermore, the proposed methods can be implemented by processing circuits (e.g., one or more processors or one or more integrated circuits). In one example, one or more processors execute one or more of the proposed methods by running a program stored in a non-temporary computer-readable medium.
[0197] The above techniques may be implemented as computer software using computer-readable instructions and physically stored on one or more computer-readable media. For example, Figure 37 shows a computer system (3700) suitable for carrying out a particular embodiment of the disclosed subject matter.
[0198] Computer software can be encoded using any suitable machine language or computer language that may be subject to assembly, compilation, linking, or similar mechanisms to create code containing instructions that can be executed directly or via translation, microcode execution, etc., by a computer central processing unit (CPU), graphics processing unit (GPU), etc.
[0199] Instructions can be executed on various types of computers or their components, including, for example, personal computers, tablet computers, servers, smartphones, gaming devices, and Internet of Things devices.
[0200] The components shown in Figure 37 for the computer system (3700) are essentially illustrative and are not intended to imply any limitations on the scope or functionality of computer software implementing embodiments of the present disclosure. Furthermore, the configuration of the components should not be construed as having any dependencies or requirements related to any one or combination of components shown in the exemplary embodiment of the computer system (3700).
[0201] The computer system (3700) may include certain human interface input devices. Such human interface input devices may respond to input from one or more human users, for example, through haptic input (keystrokes, swipes, data glove movements, etc.), audio input (voices, applause, etc.), visual input (gestures, etc.), and olfactory input (not shown). The human interface devices may also be used to capture certain media that are not necessarily directly related to conscious human input, such as sound (speech, music, ambient sounds, etc.), images (scanned images acquired from still image cameras, photographic images, etc.), and video (2D video, 3D video including stereoscopic video, etc.).
[0202] Input human interface devices may include one or more of the following: keyboard (3701), mouse (3702), trackpad (3703), touchscreen (3710), data glove (3704), joystick (3705), microphone (3706), scanner (3707), and camera (3708).
[0203] The computer system (3700) may also include certain human interface output devices. Such human interface output devices may stimulate the senses of one or more human users, for example, through tactile output, sound, light, and smell / taste. Such human interface output devices may include haptic output devices (e.g., haptic feedback via touchscreens (3710), data gloves (3704), or joysticks (3705), although some haptic feedback devices may not function as input devices), audio output devices (e.g., speakers 3709, headphones (not shown)), visual output devices (screens 3710 including cathode ray tube (CRT) screens, liquid crystal display (LCD) screens, plasma screens, and organic light-emitting diode (OLED) screens, some of which may be capable of two-dimensional or three-dimensional or more-dimensional output through means such as stereographic output, virtual reality glass (not shown), holographic displays, and smoke tanks (not shown)), and printers (not shown).
[0204] The computer system (3700) may also include human-accessible storage devices and media associated therewith, such as optical media including CD / DVD ROM / RW (3720) with CD / DVD or similar media (3721), thumb drives (3722), removable hard drives or solid-state drives (3723), legacy magnetic media such as tapes and floppy disks (not shown), and specialized ROM / ASIC / PLD-based devices such as security dongles (not shown).
[0205] Those skilled in the art should also understand that the term “computer-readable medium” as used in relation to the subject matter currently disclosed does not include a transmission medium, carrier wave, or other transient signal.
[0206] The computer system (3700) may also include interfaces to one or more communication networks. The networks may be, for example, wireless, wired, or optical. The networks may further be local, wide-area, metropolitan, vehicle and industrial, real-time, latency-tolerant, etc. Examples of networks include local area networks such as Ethernet and wireless LANs; cellular networks including global systems for mobile communications (GSM), third generation (3G), fourth generation (4G), fifth generation (5G), and Long-Term Evolution (LTE); wired or wireless wide-area digital television networks including cable television, satellite television, and terrestrial television; and vehicle and industrial networks including CANBus. Certain networks typically require an external network interface adapter (3754) attached to a specific general-purpose data port or peripheral bus (3749) (e.g., a Universal Serial Bus (USB) port on a computer system (3700) for communicating with an external network (3755), while others are generally integrated into the core of the computer system (3700) by connecting to a system bus as described below (e.g., an Ethernet interface to a PC computer system or a cellular network interface to a smartphone computer system). Using any of these networks, the computer system (3700) can communicate with other entities. Such communication can be one-way, receive only (e.g., television broadcasting), one-way transmit only (e.g., CANbus to a specific CANbus device), or two-way, for example, communication with other computer systems using a local or wide-area digital network. As described above, specific protocols and protocol stacks can be used with each of these networks and network interfaces.
[0207] The aforementioned human interface devices, human-accessible storage devices, and network interfaces can be connected to the core (3740) of the computer system (3700).
[0208] A core (3740) may include one or more central processing units (CPUs) (3741), graphics processing units (GPUs) (3742), specialized programmable processing units in the form of field-programmable gate areas (FPGAs) (3743), hardware accelerators (3744) for specific tasks, etc. These devices may be connected via a system bus (3748) along with read-only memory (ROM) (3745), random access memory (RAM) (3746), internal mass storage devices such as built-in hard drives that are not accessible to the user, solid-state drives (SSDs), etc. (3747). In some computer systems, the system bus (3748) may be accessible in the form of one or more physical plugs to enable expansion with additional CPUs, GPUs, etc. Peripheral devices may be connected directly to the core's system bus (3748) or via a peripheral bus 3749. Peripheral bus architectures include Peripheral Component Interconnect (PCI), USB, etc.
[0209] The CPU (3741), GPU (3742), FPGA (3743), and accelerator (3744) can execute specific instructions that, when combined, can constitute the aforementioned computer code. This computer code can be stored in ROM (3745) or RAM (3746). Transitional data can also be stored in RAM (3746), while permanent data can be stored, for example, in internal mass storage (3747). High-speed storage and retrieval of any memory device can be enabled through the use of cache memory, which may be closely associated with one or more CPUs (3741), GPUs (3742), mass storage (3747), ROMs (3745), RAM (3746), etc.
[0210] Computer-readable media may contain computer code for performing various computer operations. The media and computer code may be specifically designed and constructed for the purposes of this disclosure, or they may be of a type well known and available to those skilled in the computer software technology.
[0211] As an example, but not limited to, a computer system having an architecture (3700), specifically a core (3740), can provide functionality as a result of a processor (including a CPU, GPU, FPGA, accelerator, etc.) that runs software embedded in one or more tangible computer-readable media. Such computer-readable media may be user-accessible mass storage devices as described above, as well as media associated with specific storage devices of the core (3740) of a non-transient nature, such as core internal mass storage (3747) or ROM (3745). Software implementing various embodiments of the present disclosure may be stored in such devices and run by the core (3740). The computer-readable media may include one or more memory devices or chips, depending on the specific needs. The software may cause the core (3740), in particular the processor (including a CPU, GPU, FPGA, etc.) therein, to run specific processes or specific parts of specific processes described herein, including defining data structures stored in RAM (3746) and modifying such data structures according to processes defined by the software. In addition, or as an alternative, a computer system may provide functionality as a result of being logically wired to or embodied in circuits (e.g., accelerator 3744) that can operate in place of or in conjunction with software to perform a particular process or a particular part of a particular process described herein. References to software may include logic, and vice versa, as necessary. References to computer-readable media may, as necessary, include circuits that house software for execution (such as integrated circuits (ICs)), circuits that embody logic for execution, or both. This disclosure encompasses any suitable combination of hardware and software.
[0212] While this disclosure describes several exemplary embodiments, there are variations, rearrangements, and various alternative equivalents that fall within the scope of this disclosure. Those skilled in the art will therefore understand that numerous systems and methods not expressly shown or described herein can be devised to embody the principles of the disclosure and thus fall within its spirit and scope. [Explanation of Symbols]
[0213] 400 Communication Systems 410 First terminal 420 Second terminal 430 terminals 440 devices 450 Networks 501 Video Sources 502 Uncompressed Video Sample Stream 503 Encoder 504 encoded video bitstream 505 Streaming Server 506 Streaming Client 507 Duplicate of an encoded video bitstream 508 Streaming Clients 509 Duplicate of an encoded video bitstream 510 Video Decoder 511 Outgoing video sample stream 512 displays 513 Capture Subsystem 610 Receiver 612 channels 615 buffer memory 620 Parser 621 Symbols 651 Scaler / Inverse Unit 652 Intra Prediction Units 653 Motion Compensation Prediction Unit 655 Aggregation device 656 Current (partially reconstructed) picture 657 Reference Picture Memory 658 Loop Filter Unit 730 Encoder 732 Encoding Engine 733 (Local) Decoder 734 Reference Picture Memory 735 Predictor 740 Transmitter 743 Video Sequence 745 Entropy Encoder 750 Controller 760 Communication Channel 800 Process 810 Video Sequence 820 Video Sequence 830 Video Sequence 1410 Coding Unit (CU) 1420 Block 1510 Coding Unit (CU) 1610 Coding Unit (CU) 1710 Coding Unit (CU) 1810 Coding Unit (CU) 1910 Coding Unit (CU) 2010 Coding Unit (CU) 2110 Coding Unit (CU) 2210 Coding Unit (CU) 2310 Coding Unit (CU) 2410 Coding Unit (CU) D 2510 Chroma Block 2610 Chroma Block 2910 Coding Unit (CU) 3010 Coding Unit (CU) 3700 Computer System 3701 Keyboard 3702 Mouse 3703 Track Pad 3704 Data Glove 3705 Joystick N3706 Microphone 3707 Scanner 3708 Camera 3709 Speaker 3710 Screen 3720 CD / DVD ROM / RW 3721 Similar media 3722 Thumb drive 3723 Solid state drive 3740 Core 3741 Central Processing Unit (CPU) 3742 Graphics Processing Unit (GPU) 3743 Field Programmable Gate Array (FPGA) 3744 Accelerator 3745 Read Only Memory (ROM) 3746 Random Access Memory (RAM) 3747 Internal mass storage device 3748 System bus 3749 Peripheral bus 3754 External network interface adapter S755 External network
Claims
1. A method for decoding a video sequence, wherein the method is Steps include applying a cross-component linear model (CCLM) to a video sequence, The steps include applying an interpolation filter in the cross-component linear model (CCLM), The steps include obtaining the absolute difference between the maximum lumens sample value and the minimum lumens sample value in the adjacent sample region specified in the video sequence, The steps include performing non-uniform quantization on the absolute difference obtained, A step of dividing the non-uniformly quantized absolute difference into a first interval and a second interval, wherein the division is based on whether the non-uniformly quantized absolute difference exceeds a first threshold or is less than or equal to the first threshold. A step of deriving the entry index of a CCLM lookup table, In the case of the first interval, the first step size is used to derive the first entry index of the CCLM lookup table, In the case of the second interval, the steps include: deriving the second entry index of the CCLM lookup table using the first step size and a second step size different from the first step size; The steps include obtaining CCLM parameters from the CCLM lookup table based on the first entry index and the second entry index, A step of predicting samples of different chroma blocks within the chroma blocks associated with the video sequence based on the acquired CCLM parameters. Includes, The interpolation filter depends on the YUV format of the video sequence.
2. When deriving the entry index for the aforementioned CCLM lookup table, further, The method according to claim 1, comprising the step of obtaining a floor value using the non-uniformly quantized absolute difference, and using the obtained floor value in deriving the entry index of the CCLM lookup table.
3. The method according to claim 1, wherein, when applying the interpolation filter in the cross-component linear model (CCLM), the method further includes the step of using a tap of the interpolation filter that depends on the YUV format of the video sequence.
4. The method according to claim 3, further comprising the step of using taps of the interpolation filters used in the cross-component linear model (CCLM), which are the same for the same YUV format of the video sequence.
5. The method according to any one of claims 1 to 4, wherein, when applying the interpolation filter in the cross-component linear model (CCLM), the method further includes the steps of: setting the applied interpolation filter to be the same for the 4:4:4 and 4:2:2 YUV formats if the video sequence includes a 4:4:4 or 4:2:2 YUV format; and setting the applied interpolation filter to be different from the interpolation filter applied for the 4:4:4 and 4:2:2 YUV formats if the video sequence includes a 4:2:0 YUV format.
6. The method according to any one of claims 1 to 5, wherein, when applying the interpolation filter in the cross-component linear model (CCLM), the method further includes the step of using different taps of the interpolation filter for various YUV formats of the video sequence.
7. The method according to any one of claims 1 to 6, wherein the method further includes the step of setting the interpolation filter differently for upper and left adjacent lumen reconstruction samples when applying the interpolation filter to the cross-component linear model (CCLM).
8. The method according to claim 7, further comprising the step of setting the interpolation filter, wherein the interpolation filter for the upper and left adjacent lumens reconstruction samples depends on the YUV format of the video sequence.
9. The method according to any one of claims 1 to 8, further comprising the step of using at least one of an upper adjacent region and at least one column of the left adjacent region in the cross-component linear model (CCLM) for a video sequence having a 4:4:4 or 4:2:2 YUV format.
10. The method according to claim 9, further comprising the step of using at least one of an upper adjacent region and a left adjacent region in the cross-component linear model (CCLM) for a video sequence having one of 4:4:4 or 4:2:2 YUV formats.
11. The method according to claim 9, further comprising the step of using at least one of one of the upper adjacent region and at least two columns of the left adjacent region in the cross-component linear model (CCLM) for a video sequence having a 4:2:2 YUV format.
12. A plurality of adjacent sangas of the first ruma block related to the video sequence Steps include obtaining the absolute difference between the maximum and minimum values of the pull, The steps include performing non-uniform quantization of the absolute difference obtained, In the lookup table, the absolute difference is used to perform the non-uniform quantization on the floor Steps to obtain a value, Based on the acquired floor value, the chroma block associated with the video sequence The process further includes the step of predicting samples of different chroma blocks within, The first of the ruma blocks, multiple adjacent sans related to the video sequence The step of obtaining the absolute difference between the maximum and minimum values of the pull further includes the step of obtaining the maximum and minimum values using N adjacent sample pairs of the rumor block and the chroma block, where N is one positive integer among 4, 8, and 16. The method according to any one of claims 1 to 11, wherein each of the N adjacent sample pairs includes a first adjacent sample located in a first position adjacent to a first in the rumor block and the chromat block, and a second adjacent sample located in a second position adjacent to a second in the rumor block and the chromat block, corresponding to the first position adjacent to the first in the rumor block and the chromat block.
13. The method according to claim 12, further comprising the step of selecting the first adjacent sample by scanning the plurality of adjacent samples from bottom to top and / or from right to left.
14. A step of obtaining the scale factor and offset of a linear model of the local illumination correction (LIC) of the current block using N adjacent sample pairs of the current block and a reference block, wherein N is a positive integer among 4, 8, and 16. Each of the N pairs of adjacent samples includes a first adjacent sample located at a first position adjacent to the current block, and a second adjacent sample located at a second position adjacent to the reference block and corresponding to the first position adjacent to the current block, the steps of The steps include: using the acquired scale factor and the acquired offset to perform the LIC of the current block; The method according to any one of claims 1 to 13, further comprising:
15. The method according to claim 14, wherein N depends on the block size of the current block.
16. A device configured to perform the method described in any one of claims 1 to 15.
17. A program for causing one or more processors to perform the method described in any one of claims 1 to 15.