Intra-frame video encoding and decoding using multiple reference filters
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2020-05-05
- Publication Date
- 2026-08-14
AI Technical Summary
[0004]尽管视频压缩取得了进步,但是在互联网和其他数字通信网络中,数字视频仍占用的最大带宽
Smart Images

Figure CN115955561B_ABST
Abstract
Description
[0001] Cross-references to related applications
[0002] This application is a divisional application of the invention patent application filed on May 5, 2020, with application number 202080031962.7 and invention title "Intra-frame video coding and decoding using multiple reference filters". Technical Field
[0003] This patent document relates to video processing technologies, equipment, and systems. Background Technology
[0004] Despite advancements in video compression, digital video still consumes the largest amount of bandwidth in the internet and other digital communication networks. As the number of connected user devices capable of receiving and displaying video increases, the bandwidth demand for digital video is expected to continue to grow. Summary of the Invention
[0005] This paper describes devices, systems, and methods related to digital video encoding and decoding using interpolation filters during intra-frame encoding and decoding.
[0006] In one example aspect, a video processing method is disclosed. The method includes providing a video processing approach comprising: determining, based on rules, whether to use a 4-tap interpolation filter for a conversion between a current video block of a current video unit and the bitstream of the video, wherein the current video block is encoded and decoded using an intra-frame mode in the bitstream; and performing the conversion based on the determination.
[0007] In another example, a different video processing method is disclosed. This method includes: a conversion between a current video block and a bitstream of the current video unit; generating an intra-frame prediction block using an interpolation filter by applying an interpolation filter to reference samples, wherein the reference samples are determined according to rules; and performing the conversion using the prediction block.
[0008] In another aspect, a video encoder device is disclosed, including a processor configured to implement the above-described method.
[0009] In another aspect, a video decoder apparatus is disclosed, including a processor configured to implement the above-described method.
[0010] In another aspect, a computer-readable medium is disclosed. The computer-readable medium stores code for performing one of the methods described above.
[0011] The above and other aspects and features of the disclosed technology are described in more detail in the accompanying drawings, description and claims. Attached Figure Description
[0012] Figure 1 Examples of 33 intra-frame prediction directions are shown.
[0013] Figure 2 Examples of the new and old intra-frame prediction modes are shown.
[0014] Figure 3 An example of the intra-mode index for 67 intra-prediction modes is shown.
[0015] Figure 4A Examples of sub-partitions with 4x8 and 8x4 CUs are shown.
[0016] Figure 4B Examples of CU sub-partitions other than 4x8, 8x4, and 4x4 are shown.
[0017] Figure 5 An example of intra-frame mode is shown.
[0018] Figure 6 and 7 This is a block diagram of an example video processing device.
[0019] Figures 8A to 8C This is a flowchart of an example method for video processing based on some implementations of the disclosed technology. Detailed Implementation
[0020] Section headings are used in this document for ease of understanding and do not limit the embodiments disclosed in a section to that section only. Furthermore, although certain embodiments are described with reference to multi-functional video codecs or other specific video codecs, the disclosed techniques are applicable to other video codec techniques. Additionally, while some embodiments describe video encoding and decoding steps in detail, it should be understood that the corresponding decoding steps for unencoding will be performed by the decoder. Furthermore, the term video processing includes video encoding / decoding or compression, video decoding or decompression, and video transcoding, wherein video pixels are represented from one compression format to another or at different compression bitrates.
[0021] 1. Overview
[0022] This document relates to video codec technology. Specifically, it relates to the intra-frame encoding and decoding process in video codec. It can be applied to existing video codec standards (such as HEVC) or pending standards (Multi-Functional Video Codec). It may also be applicable to future video codec standards or video codecs.
[0023] 2. Preliminary Discussion
[0024] Video codec standards have primarily evolved from well-known ITU-T and ISO / IEC standards. ITU-T developed H.261 and H.263, while ISO / IEC developed MPEG-1 and MPEG-4 Vision. These two organizations jointly developed the H.262 / MPEG-2 Video and H.264 / MPEG-4 Advanced Video Codec (AVC) and H.265 / HEVC standards. Since H.262, video codec standards have been based on a hybrid video codec architecture that utilizes time prediction plus transform coding. To explore future video codec technologies beyond HEVC, VCEG and MPEG jointly established the Joint Video Exploration Team (JVET) in 2015. Since then, JVET has adopted many new methods and incorporated them into reference software called the Joint Exploration Model (JEM). JVET meetings are held concurrently quarterly, and the goal of the new codec standard is a 50% reduction in bitrate compared to HEVC. The new video codec standard was officially named Multifunctional Video Codec (VVC) at the JVET meeting in April 2018, and the first version of the VVC Test Model (VTM) was released at that time. With ongoing efforts to standardize VVC, new codec technologies have been adopted into the VVC standard at each JVET meeting. The VVC working draft and the VTM test model are updated after each meeting. The VVC project now aims for Technical Completion (FDIS) at the July 2020 meeting.
[0025] 2.1 Intra-frame prediction in HEVC / H.265
[0026] Intra-prediction involves generating samples for a given TB (Transform Block) using samples previously reconstructed in the considered color channels. The intra-prediction modes for the luma and chroma channels are signaled separately via the "DM_CROMIC" mode, with the chroma channel intra-prediction mode optionally depending on the luma channel intra-prediction mode. Although the intra-prediction modes are signaled at the PB (Prediction Block) level, the intra-prediction process is applied at the TB level according to the residual quadtree hierarchy of the CU, thus allowing the encoding / decoding of one TB within the CU to influence the encoding / decoding of the next TB, and therefore reducing the distance to the samples used as reference values.
[0027] HEVC includes 35 intra-prediction modes—DC mode, Planar mode, and 33 directional or "angle" intra-prediction modes. Figure 1 The image shows 33 intra-frame prediction modes for different angles.
[0028] Figure 1 Examples of 33 intra-frame prediction directions are shown.
[0029] For a PB associated with a chroma color channel, the intra-prediction mode is specified as planar, DC, horizontal, vertical, "DM_CROMIC" mode, or sometimes diagonal mode "34".
[0030] Note: For chroma formats 4:2:2 and 4:2:0, the chroma PB may overlap with two or four luminance PBs (respectively); in this case, the luminance direction of DM_CROMIC is taken from the upper left of these luminance PBs.
[0031] The DM_CROMIC mode indicates that the intra-prediction mode of the luminance color channel PB is applied to the chroma color channel PB. Because this is relatively common, the most likely mode for the codec scheme to select is intra_CHROMA_pred_mode.
[0032] 2.2 67 Intra-Prediction Modes in VCC
[0033] To capture arbitrary edge directions presented in natural video, the number of directional intra-frame modes in VTM 4 has been expanded from 33 used in HEVC to 65. New directional modes not present in HEVC are included. Figure 2 The dashed arrows indicate that the plane and DC modes remain unchanged.
[0034] These denser directional intra-prediction modes are applicable to all block sizes and for both luma and chroma intra-prediction.
[0035] The intra-prediction modes and their associated intra-prediction mode indices are: plane (0) or DC (1), vertical (50), HOR (18), top left mode (34), top right mode (66).
[0036] Figure 2 Examples of the new and old intra-frame prediction modes are shown.
[0037] Figure 3 An example of the intra-mode index for 67 intra-prediction modes is shown.
[0038] 2.3 Wide-angle intra prediction for non-square blocks (WAIP)
[0039] Traditional angular intra-prediction directions are defined as clockwise from 45 degrees to -135 degrees. In VTM4, for non-square blocks, several traditional angular intra-prediction modes are adaptively replaced with wide-angle intra-prediction modes. The replaced modes use the original mode index for signaling; after resolution, the original mode index is remapped to the wide-angle mode index. The total number of intra-prediction modes remains unchanged at 67, and the intra-mode encoding / decoding method remains the same.
[0040] 2.4 Intra-partitions (ISP)
[0041] The intra-frame sub-partitioning tool divides the lumen intra-prediction block vertically or horizontally into 2 or 4 sub-partitions based on the block size. For example, the minimum block size for the ISP is 4x8 (or 8x4). If the block size is larger than 4x8 (or 8x4), the corresponding block is divided into 4 sub-partitions. Figures 4A-4B Examples of two possibilities are shown. All sub-partitions satisfy the condition of having at least 16 samples.
[0042] Figure 4A Examples of 4x8 and 8x4CU sub-partitions are shown.
[0043] Figure 4B Examples of sub-partitions for CUs other than 4x8, 8x4, and 4x4 CUs are shown.
[0044] For each sub-segment, reconstructed samples are obtained by adding the residual signal to the prediction signal. Here, the residual signal is generated through processes such as entropy decoding, inverse quantization, and inverse transform. Therefore, the reconstructed sample values of each sub-segment can be used to generate the prediction for the next sub-segment, and each sub-segment is processed repeatedly. Furthermore, the first sub-segment to be processed contains the top-left sample of the CU, and then continues downwards (horizontal segmentation) or to the right (vertical segmentation). As a result, the reference samples used to generate the sub-segment prediction signal are only located to the left and above the line. All sub-segments share the same intra-frame mode.
[0045] 2.5 Mode-Dependent Intra Smoothing (MDIS) and 4-Tap Reference Sample Interpolation Filter
[0046] A four-tap intra-interpolation filter is used to improve the accuracy of directional intra-prediction. In HEVC, a two-tap bilinear interpolation filter has been used to generate intra-prediction blocks in directional prediction mode (i.e., excluding the plane and DC predictor). In VTM4, a simplified 6-bit 4-tap Gaussian interpolation filter and a 6-bit 4-tap DCT-IF chroma filter are used only in directional intra-prediction mode. The non-directional intra-prediction process remains unchanged. The selection of the 4-tap filter is performed based on the MDIS conditions of the directional intra-prediction mode that provides non-fractional shift, i.e., all directional modes except the following: 2, HOR_IDX, DIA_IDX, VER_IDX, 66…
[0047] Based on the intra-frame prediction mode, perform the following reference sample processing:
[0048] 1. Directional intra-frame prediction modes are classified into one of the following groups:
[0049] A. Vertical or horizontal mode (HOR-IDX, VER-IDX)
[0050] B. Diagonal modes representing angles that are multiples of 45 degrees (2, DIA_IDX, VDIA_IDX…).
[0051] C. Remaining orientation patterns;
[0052] 2. If the directional intra-prediction mode is classified as belonging to group A, then no filter is applied to the reference sample to generate the prediction sample;
[0053] 3. Otherwise, if the pattern falls into group B, a [1, 2, 1] reference sample filter (depending on the MDIS condition) can be applied to the reference samples to further copy these filtered values into the intra-predictor according to the chosen direction, but no interpolation filter is applied.
[0054] 4. Otherwise, if the mode is classified as belonging to group C, the intra-frame reference sample interpolation filter is applied only to the reference samples to generate predicted samples that fall between the reference samples at fractional or integer positions, depending on the selected direction (no reference sample filtering is performed).
[0055] 2.5.1 Intra-frame reference sample interpolation filter in the VVC specification / working draft
[0056] The following text is excerpted from the VVC working draft JVET-M1001-v7.
[0057] 8.4.4.2.7 Specification for INTRA_ANGULAR2..INTRA_ANGULAR66 intra-frame prediction modes.
[0058] The input to this process is:
[0059] –Intra-frame prediction mode predModeIntra
[0060] – Specifies the refIdx variable as the intra-frame prediction reference line index.
[0061] – The variable nTbW specifies the width of the transform block.
[0062] – The variable nTbH specifies the height of the transform block.
[0063] – The variable refW specifies the width of the reference sample point.
[0064] – The variable refH specifies the height of the reference sample point.
[0065] – The variable nCbW specifies the width of the codec block.
[0066] – The variable nCbH specifies the codec block height.
[0067] – Specifies the color component cIdx of the current block.
[0068] – Adjacent sample points p[x][y], where x = -1-refIdx, y = -1-refIdx..refH-1 and x = -refIdx..refW-1, y = -1-refIdx.
[0069] The output of this process is the modified intra-prediction mode predModeIntra and the prediction samples predSamples[x][y], where x = 0..nTbW-1 and y = 0..nTbH-1.
[0070] The variable nTbS is set to equal to (Log2(nTbW)+Log2(nTbH))>>1.
[0071] The derivation of variables nW and nH is as follows:
[0072] – If IntraSubPartitionsSplitType equals ISP_NO_SPLIT or cIdx is not equal to 0, then apply the following:
[0073] nW=nTbW (8-125)
[0074] nH=nTbH (8-126)
[0075] – Otherwise (IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT, and cIdx is equal to 0), then apply the following:
[0076] nW=nCbW (8-127)
[0077] nH=nCbH (8-128)
[0078] The variable whRatio is set to equal Abs(Log2(nW / nH)).
[0079] The variable wideAngle is set to 0.
[0080] For non-square blocks (nW ≠ nH), the intra-prediction mode predModeIntra is modified as follows:
[0081] – If all of the following conditions are true, then wideAngle is set to equal to 1, and predModeIntra is set to equal to (predModeIntra+65).
[0082] –nW is greater than nH
[0083] –predModeIntra is greater than or equal to 2
[0084] –predModeIntra is less than (whRatio>1)? (8+2*whRatio): 8
[0085] Otherwise, if all of the following conditions are true, then wideAngle is set to equal to 1 and predModeIntra is set to equal to (predModeIntra-67).
[0086] –nH is greater than nW
[0087] –predModeIntra is less than or equal to 66
[0088] –predModeIntra greater than (whRatio>1)? (60-2*whRatio): 60
[0089] The derivation of the variable filterFlag is as follows:
[0090] – If one or more of the following conditions are true, then filterFlag is set to 0.
[0091] –predModeIntra equals INTRA_ANGULAR2, INTRA_ANGULAR34, or INTRA_ANGULAR66
[0092] –refIdx is not equal to 0
[0093] –IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT, and cIdx is equal to 0, and predModeIntra is greater than or equal to INTRA_ANGULAR34, and nW is greater than 8.
[0094] –IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT, and cIdx is equal to 0, and predModeIntra is less than INTRA_ANGULAR34, and nH is greater than 8.
[0095] Otherwise, apply the following:
[0096] – Set the variable minDistVerHor to equal Min(Abs(predModeIntra-50),Abs(predModeIntra-18)).
[0097] The variable intraHorVerDistThres[nTbS] is specified in Table 1.
[0098] The derivation of the variable filterFlag is as follows:
[0099] – If minDistVerHor is greater than or equal to intraHorVerDistThres[nTbS] or wideAngle is equal to 1, then filterFlag is set to equal to 1.
[0100] Otherwise, filterFlag is set to 0.
[0101] Table 1 – Specifications of intraHorVerDistThres[nTbS] for various transform block sizes nTbS
[0102] nTbS=2 nTbS=3 nTbS = 4 nTbS = 5 nTbS = 6 nTbS = 7 intraHorVerDistThres[nTbS] 16 14 2 0 0 0
[0103] As part of this application Figure 5 (VVC) – Intra-frame prediction direction (high information content)
[0104] As part of this application Figure 5 Ninety-three prediction directions are shown, with the dashed direction associated with the wide-angle mode that applies only to non-square blocks.
[0105] Table 2 specifies the mapping between predModeIntra and the angle parameter intraPredAngle.
[0106] Table 2 – Specifications of intraPredAngle
[0107] predModeIntra -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 2 3 4 intraPredAngle 512 341 256 171 128 102 86 73 64 57 51 45 39 35 32 29 26 predModeIntra 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 intraPredAngle 23 20 18 16 14 12 10 8 6 4 3 2 1 0 -1 -2 -3 predModeIntra 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 intraPredAngle -4 -6 -8 -10 -12 -14 -16 -18 -20 -23 -26 -29 -32 -29 -26 -23 -20 predModeIntra 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 intraPredAngle -18 -16 -14 -12 -10 -8 -6 -4 -3 -2 -1 0 1 2 3 4 6 predModeIntra 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 intraPredAngle 8 10 12 14 16 18 20 23 26 29 32 35 39 45 51 57 64 predModeIntra 73 74 75 76 77 78 79 80 intraPredAngle 73 86 102 128 171 256 341 512
[0108] The inverse angle parameter invAngle is derived from intraPredAngle, as shown below:
[0109]
[0110] The interpolation filter coefficients fC[phase][j] and fG[phase][j] with phase = 0.31 and j = 0.3 are specified in Table 3.
[0111] Table 3 – Specifications of interpolation filter coefficients fC and fG
[0112]
[0113]
[0114] The values of the predicted samples predSamples[x][y] for x = 0..nTbW-1 and y = 0..nTbH-1 are derived as follows:
[0115] – If predModeIntra is greater than or equal to 34, then the following ordered steps are applied:
[0116] 1. The reference sample array ref[x] is specified as follows:
[0117] – Apply the following:
[0118] ref[x]=p[-1-refIdx+x][-1-refIdx],
[0119] Where x = 0..nTbW + refIdx (8-130)
[0120] – If intraPredAngle is less than 0, the master reference sample array is expanded as follows:
[0121] – When (nTbH*intraPredAngle)>>5 is less than -1
[0122] ref[x] =
[0123] p[-1-refIdx][-1-refIdx+((x*invAngle+128)>>8)],
[0124] Where x = -1..(nTbH*intraPredAngle) >> 5 (8-131)
[0125] ref[((nTbH*intraPredAngle)>>5)-1]=
[0126] ref[(nTbH*intraPredAngle)>>5] (8-132)
[0127] ref[nTbW+1+refIdx]=ref[nTbW+refIdx] (8-133)
[0128] -otherwise,
[0129] ref[x] = p[-1-refIdx+x][-1-refIdx], where x =
[0130] nTbW+1+refIdx..refW+refIdx (8-134)
[0131] ref[-1] = ref[0] (8-135)
[0132] –Additional sample points ref[refW+refIdx+x],
[0133] The derivation of x = 1..(Max(1,nTbW / nTbH)*refIdx+1) is as follows:
[0134] ref[refW+refIdx+x]=p[-1+refW][-1-refIdx](8-136)
[0135] 2. The values of predSamples[x][y] for the predicted samples where x = 0..nTbW–1 and y = 0..nTbH–1 are derived as follows:
[0136] – The derivation of the index variable iIdx and the multiplication factor iFact is as follows:
[0137] iIdx=((y+1+refIdx)*intraPredAngle)>>5+refIdx(8-137)
[0138] iFact=((y+1+refIdx)*intraPredAngle)&31(8-138)
[0139] – If cIdx equals 0, then apply the following:
[0140] –The interpolation filter coefficients fT[j] for j = 0..3 are derived as follows:
[0141] fT[j]=filterFlag? fG[iFact][j]:fC[iFact][j](8-139)
[0142] The derivation of the predicted sample values predSamples[x][y] is as follows:
[0143]
[0144] Otherwise (cIdx is not equal to 0), based on the value of iFact, the following applies:
[0145] –If iFact is not equal to 0, the value of the predicted sample points predSamples[x][y] is derived as follows:
[0146] predSamples[x][y]=
[0147] ((32-iFact)*ref[x+iIdx+1]+iFact*ref[x+iIdx+2]+1
[0148] 6)>>5 (8-141)
[0149] Otherwise, the value of the predicted sample points, predSamples[x][y], is derived as follows:
[0150] predSamples[x][y]=ref[x+iIdx+1] (8-142)
[0151] Otherwise (predModeIntra is less than 34), the following ordered steps are applied:
[0152] 1. The reference sample array ref[x] is specified as follows:
[0153] – Apply the following:
[0154] ref[x] = p[-1-refIdx][-1-refIdx+x], where
[0155] x=0..nTbH+refIdx (8-143) – If intraPredAngle is less than 0, the master reference sample array is expanded as follows:
[0156] –When (nTbW*intraPredAngle)>>5 is less than -1,
[0157] ref[x] =
[0158] p[-1-refIdx+((x*invAngle+128)>>8)][-1-refIdx],
[0159] Where x = -1..(nTbW*intraPredAngle)>>5 (8-144)
[0160] ref[((nTbW*intraPredAngle)>>5)-1]=
[0161] ref[(nTbW*intraPredAngle)>>5] (8-145)
[0162] ref[nTbG+1+refIdx]=ref[nTbH+refIdx] (8-146)
[0163] -otherwise,
[0164] ref[x] = p[-1-refIdx][-1-refIdx+x], where
[0165] x=nTbH+1+refIdx..refH+refIdx (8-147)
[0166] ref[-1] = ref[0] (8-148)
[0167] –Additional sample points ref[refH+refIdx+x],
[0168] The derivation of x = 1..(Max(1,nTbW / nTbH)*refIdx+1) is as follows:
[0169] ref[refH+refIdx+x]=p[-1+refH][-1-refIdx](8-149)
[0170] 2. The values of predSamples[x][y] for the predicted samples where x = 0..nTbW-1 and y = 0..nTbH–1 are derived as follows:
[0171] – The derivation of the index variable iIdx and the multiplication factor iFact is as follows:
[0172] iIdx=((x+1+refIdx)*intraPredAngle)>>5 (8-150)
[0173] iFact=((x+1+refIdx)*intraPredAngle)&31 (8-151)
[0174] – If cIdx equals 0, then apply the following:
[0175] –The interpolation filter coefficients fT[j] for j = 0..3 are derived as follows:
[0176] fT[j]=filterFlag? fG[iFact][j]:fC[iFact][j](8-152)
[0177] The values of the predicted samples predSamples[x][y] are derived as follows:
[0178]
[0179] Otherwise (cIdx is not equal to 0), based on the value of iFact, the following applies:
[0180] –If iFact is not equal to 0, the value of the predicted sample points predSamples[x][y] is derived as follows:
[0181] predSamples[x][y]=
[0182] ((32-iFact)*ref[y+iIdx+1]+iFact*ref[y+iIdx+2]+16)>>5 (8-154)
[0183] Otherwise, the value of the predicted sample points predSamples[x][y] is derived as follows:
[0184] predSamples[x][y]=ref[y+iIdx+1] (8-155)
[0185] 2.5.2 JVET-N0435 is adopted.
[0186] At past JVET-N conferences, JVET-N0435 was used to reconcile the use of WAIP with MDIS and reference sample interpolation filters. If the wide-angle mode represents a non-fractional offset, there are eight wide-angle modes that satisfy this condition: [-14, -12, -10, -6, 72, 76, 78, 80]. When predicting blocks through these modes, it is proposed to directly copy specific samples from the reference buffer without applying any interpolation. Instead, a reference filter is conditionally applied to these modes to smooth the predictor. This modification reduces the number of samples that need to be smoothed. Furthermore, it aligns the design of traditional prediction modes with the non-fractional modes in wide-angle modes.
[0187] 2.5.3 Draft amendments to JVET-N 0435
[0188] The following text is excerpted from the revised VVC working draft provided by JVET-N0435. Modifications are highlighted in bold italics.
[0189] 8.4.4.2.1. Conventional Intra-Frame Sample Prediction
[0190] The input to this process is:
[0191] – Specifies the position of the top-left sample of the current transform block relative to the top-left sample of the current image (xTbCmp, yTbCmp).
[0192] – The variable predModeIntra specifies the intra-prediction mode.
[0193] – The variable nTbW specifies the width of the transform block.
[0194] – The variable nTbH specifies the height of the transform block.
[0195] – The variable nCbW specifies the width of the codec block.
[0196] – The variable nCbH specifies the codec block height.
[0197] – Specifies the variable cIdx for the color components of the current block.
[0198] The output of this process is the predicted sample points predSamples[x][y], where x = 0..nTbW–1 and y = 0..nTbH–1.
[0199] The variables refW and refH are derived as follows:
[0200] – If IntraSubPartitionsSplitType equals ISP_NO_SPLIT or cIdx is not equal to 0, then apply the following:
[0201] refW=nTbW*2 (8-103)
[0202] refH=nTbH*2 (8-104)
[0203] – Otherwise (IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT and cIdx is equal to 0), then apply the following:
[0204] refW=nCbW*2 (8-105)
[0205] refH=nCbH*2 (8-106)
[0206] The derivation of the variable refIdx, which specifies the intra-frame prediction reference line index, is as follows:
[0207]
[0208]
[0209] For the generation of reference sample points p[x][y], x = -1 - refIdx, y = -1 - refIdx..refH-1 and x = -refIdx..refW-1, y = -1 - refIdx, the following ordered steps are applied:
[0210] 1. Invoke the reference sample availability marking procedure specified in Clause 8.4.4.2.2, with the sample position (xTbCmp, yTbCmp), intra-prediction reference line index refIdx, reference sample width refW, reference sample height refH, and color component index cIdx as inputs, and the reference sample RefFILT[x][y] (where x = -1-refIdx, y = -1-refIdx..refH-1 and x = -refIdx..refW-1, y = -1-refIdx) as output.
[0211] 2. When at least one sample refUnfilt[x][y] of x = -1-refIdx, y = -1-refIdx..refH-1 and x = -refIdx..refW-1, y = -1-refIdx is marked as "not available for intra-prediction", the reference sample replacement procedure specified in Clause 8.4.4.2.3 is invoked, wherein the reference sample is indexed by the intra-prediction reference line, refIdx, the reference sample width refW, the reference sample height refH, and the reference sample refUnfilt[x][y]. [x][y] (where x = -1–refIdx, y = -1–refIdx..refH–1 and x = -refIdx..refW–1, y = -1–refIdx) and color component index cIdx are taken as input, and the modified reference sample refenfilt[x][y] (where x = -1–refIdx, y = -1–refIdx, y = -1–refIdx, y = -1–refIdx, y = -1–refIdx, y = -1–refIdx, y = -1–refIdx, y = -1–refIdx, y = -1–refIdx, y = -1–refIdx, y = -1–refIdx, y = -1–refIdx, y = -1–refIdx, y = -1–refIdx, y = -1–refIdx) is taken as output.
[0212] 3. Invoke the reference sample filtering procedure specified in Clause 8.4.4.2.4, where the intra-prediction reference line index refIdx, transform block width nTbW and height nTbH, reference sample width refW, and reference sample height refH are used. The unfiltered sample refUnfilt[x][y] (where x = -1–refIdx, y = -1–refIdx..refH–1 and x = -refIdx..refW–1, y = -1–refIdx) and the color component index cIdx are taken as input, and the reference sample p[x][y] (where x = -1–refIdx, y = -1–refIdx, y = -1–refIdx..refH–1 and x = -refIdx..refW–1, y = -1–refIdx) is taken as output.
[0213] The intra-frame sample prediction process based on predModeIntra is applied as follows:
[0214] – If predModeIntra equals INTRA_PLANAR, the corresponding intra-prediction mode processing specified in Clause 8.4.4.2.5 is invoked, with the transform block width nTbW, transform block height nTbH, and reference sample array p as inputs, and the output being the prediction sample array predSamples.
[0215] Otherwise, if predModeIntra equals INTRA_DC, the corresponding intra-prediction mode processing specified in Clause 8.4.4.2.6 is invoked, with the transform block width nTbW, transform block height nTbH, and reference sample array p as inputs, and the output being the prediction sample array predSamples.
[0216] Otherwise, if predModeIntra is equal to INTRA_LT_CCLM, INTRA_L_CCLM, or INTRA_T_CCLM, the corresponding intra-prediction mode processing specified in Clause 8.4.4.2.8 is invoked, wherein the intra-prediction mode predModeIntra, the sample position (xTbC, yTbC) set to equal (xTbCmp, yTbCmp), the transform block width nTbW and height nTbH, and the reference sample array p are taken as input, and the output is the prediction sample array predSamples.
[0217] – Otherwise, the corresponding intra-frame prediction mode specified in Clause 8.4.4.2.7 is invoked for processing, where,
[0218] The parameters are: intra-prediction mode predModeIntra, intra-prediction reference line index refIdx, transform block width nTbW, transform block height nTbH, reference sample width refW, reference sample height refH, codec block width nCbW, and codec block height nCbH. The color component index cIdx and the reference sample array p are used as inputs, and the predicted sample array predSamples is used as the output.
[0219] When all of the following conditions are true, the position-dependent predictive sample filtering procedure specified in Clause 8.4.4.2.9 is invoked, wherein the intra-prediction mode predModeIntra, transform block width nTbW, transform block height nTbH, predictive samples predSamples[x][y] (where x = 0..nTbW–1, y = 0..nTbH–1), reference sample width refW, reference sample height refH, reference sample p[x][y] (where x = -1, y = -1..refH–1 and x = 0..refW–1, y = -1), and color component index cIdx are taken as input, and the output is the modified predictive sample array predSamples:
[0220] –IntraSubPartitionsSplitType equals ISP_NO_SPLIT or cIdx is not equal to 0
[0221] –refIdx equals 0 or cIdx is not equal to 0
[0222] –One of the following conditions is true:
[0223] –predModeIntra equals INTRA_PLANAR
[0224] –predModeIntra equals INTRA_DC
[0225] –predModeIntra equals INTRA_ANGULAR18
[0226] –predModeIntra equals INTRA_ANGULAR50
[0227] –predModeIntra is less than or equal to INTRA_ANGULAR10
[0228] –predModeIntra is greater than or equal to INTRA_ANGULAR58
[0229] 8.4.4.2.4. Reference Sample Filtering Process
[0230] The input to this process is:
[0231] – Specifies the refIdx variable as the intra-frame prediction reference line index.
[0232] – The variable nTbW specifies the width of the transform block.
[0233] – The variable nTbH specifies the height of the transform block.
[0234] – The variable refW specifies the width of the reference sample point.
[0235] – The variable refH specifies the height of the reference sample point.
[0236]
[0237] – (Unfiltered) neighboring samples refUnfilt[x][y], where x = -1 - refIdx, y =
[0238] -1-refIdx..refH-1 and x=-refIdx..refW-1, y=-1-refIdx,
[0239] – Specifies the variable cIdx for the color components of the current block.
[0240] The output of this process is a reference sample p[x][y], where x = -1-refIdx, y = -1-refIdx..refH-1 and x = -refIdx..refW-1, y = -1-refIdx.
[0241] The derivation of the variable filterFlag is as follows:
[0242] – If all of the following conditions are true, then filterFlag is set to 1:
[0243] –refIdx equals 0
[0244] –nTbW*nTbH is greater than 32
[0245] -cIdx equals 0
[0246] –IntraSubPartitionsSplitType equals ISP_NO_SPLIT
[0247]
[0248] Otherwise, filterFlag is set to 0.
[0249] For the derivation of the reference sample point p[x][y], the following applies:
[0250] – If filterFlag equals 1, then the filtered sample value p[x][y] (where x = -1, y = ...)
[0251] The derivation of -1..refH–1 and x=0..refW-1,y=-1 is as follows:
[0252] p[-1][-1]=(refUnfilt[-1][0]+2*refUnfilt[-1][-1]+refUnfilt[0][-1]+2)>>2 (8-111)
[0253] p[-1][y]=(refUnfilt[-1][y+1]+2*refUnfilt[-1][y]+refUnfilt[-1][y-1]+2)>>2, for y=0..refH-2 (8-112) p[-1][refH-1]=refUnfilt[-1][refH-1] (8-113) p[x][-1]=(refUnfilt[x-1][-1]+2*refUnfilt[x][-1]+refUnfilt[x+1][-1]+2)>>2, for x=0..refW-2 (8-114) p[refW-1][-1]=refUnfilt[refW-1][-1] (8-115)
[0254] Otherwise, the reference sample value p[x][y] is set to be equal to the unfiltered sample value refFilt[x][y], where x = -1 - refIdx, y = -1 - refIdx..refH–1 and x = -refIdx..refW
[0255] -1, y = -1 - refIdx.
[0256] 8.4.4.2.7.INTRA_ANGULAR2..INTRA_ANGULAR66 Intra-prediction mode specification
[0257] The input to this process is:
[0258] –Intra-frame prediction mode predModeIntra
[0259] – Specifies the refIdx variable as the intra-frame prediction reference line index.
[0260] – The variable nTbW specifies the width of the transform block.
[0261] – The variable nTbH specifies the height of the transform block.
[0262] – The variable refW specifies the width of the reference sample point.
[0263] – The variable refH specifies the height of the reference sample point.
[0264] – The variable nCbW specifies the width of the codec block.
[0265] – The variable nCbH specifies the codec block height.
[0266]
[0267] – Specifies the color component cIdx of the current block.
[0268] – Adjacent sample points p[x][y], where x = -1-refIdx, y = -1-refIdx..refH-1 and x = -refIdx..refW-1, y = -1-refIdx.
[0269]
[0270] The variable nTbS is set to equal to (Log2(nTbW)+Log2(nTbH))>>1.
[0271] The derivation of variables nW and nH is as follows:
[0272] –If one or more of the following conditions are true, then
[0273] –predModeIntra equals INTRA_ANGULAR2, INTRA_ANGULAR34, or
[0274] INTRA_ANGULAR66
[0275] –refIdx is not equal to 0
[0276]
[0277] Otherwise, apply the following:
[0278] – Set the variable minDistVerHor to equal Min(Abs(predModeIntra-50),Abs(predModeIntra-18)).
[0279] The variable intraHorVerDistThres[nTbS] is specified in Table 1.
[0280] The derivation of the variable filterFlag is as follows:
[0281] –If minDistVerHor is greater than or equal to intraHorVerDistThres[nTbS] Then set filterFlag to equal 1.
[0282] Otherwise, filterFlag is set to 0.
[0283] Table 1 – Specifications of intraHorVerDistThres[nTbS] for various transform block sizes nTbS
[0284] nTbS=2 nTbS=3 nTbS=4 nTbS = 5 nTbS = 6 nTbS = 7 intraHorVerDistThres[nTbS] 16 14 2 0 0 0
[0285] 1. Examples of problems solved by the embodiments
[0286] Several problems exist in the current design of intra-frame prediction, as described below.
[0287] • 4-tap interpolation filters are used for various block sizes. For small block sizes such as 4x4, using a 4-tap interpolation filter may introduce too much computational complexity.
[0288] A 6-bit 4-tap DCT-IF chroma filter FC is used for ISP codec blocks with specific block sizes and recognized predictive modes. More specifically, in section 8.4.4.2.7 of JVET-M1001-v7, filterFlag is set to 0 if one or more of the following conditions are true (meaning that the interpolation filter coefficients fC in Table 3 will be used).
[0289] –IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT, and cIdx is equal to 0, and predModeIntra is greater than or equal to INTRA_ANGULAR34, and nW is greater than 8.
[0290] –IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT, and cIdx is equal to 0, and predModeIntra is less than INTRA_ANGULAR34, and nH is greater than 8.
[0291] • The reference sample points used for interpolation are incorrectly calculated by the reference line index. For example, the derivation of the index variable iIdx and the multiplication factor iFact is as follows: iIdx=((y+1+refIdx)*intraPredAngle)>>5+refIdx
[0292] 4. List of Examples of Implementation Methods and Technologies
[0293] The detailed inventions described below should be considered as examples for explaining general concepts. These inventions should not be interpreted narrowly. Furthermore, these inventions can be combined in any way.
[0294] In the following description, "Fc" refers to a 4-tap DCT-IF chroma filter, "F G "" indicates a 4-tap Gaussian filter, and both are specified in Table 3 of the VVC working draft JVET-M1001-v7. "Bilinear / linear filter" indicates a 2-tap filter specified in equations (8-141) and (8-154) of the VVC working draft JVET-M1001-v7. The variances of other types of DCT-IF / Gaussian / bilinear / linear filters also apply.
[0295] In the following description, a "block" may refer to CU / PU / TU as defined in VVC. A block may contain different color components, such as Y / U / V components or R / G / B components, or correspond to only one color component. This method may be applied to the color components of a block, or all color components of a block. The width and height of a block are represented by W and H, respectively.
[0296] Supports processing a video unit (e.g., a brick / tile / group of tiles / slice) Multiple interpolation filters for encoding and decoding
[0297] 1. Multiple interpolation filters can be predefined for the intra-frame prediction process.
[0298] a) Alternatively, the indication of one or more interpolation filter sets can be signaled at the sequence / picture / strip / other video unit level.
[0299] i. In one example, they can be signaled in SPS / VPS / PPS / image header / strip header / APS / group header / piece header, etc.
[0300] b) The interpolation filter to be used can be changed from one video unit to another.
[0301] i. In one example, a video unit can be a sequence / picture / view / strip / piece group / piece / block / CTU line / CTU / CU / PU / TU / VPDU.
[0302] ii. In one example, the selected instruction
[0303] c) The selection of multiple interpolation filters can depend on the block size.
[0304] d) The choice of multiple interpolation filters can depend on the color components.
[0305] e) The choice of multiple interpolation filters can depend on the encoding / decoding method.
[0306] i. In one example, the encoding / decoding method may include normal intra-frame prediction, ISP, affine intra-frame prediction, MRL, etc.
[0307] 2. Suggest whether to use a 4-tap interpolation filter (e.g., a 4-tap cubic filter, or a DCT-).
[0308] (IF chromaticity filter, or Gaussian filter, etc.) can depend on the block size.
[0309] a) In one example, whether to use a 4-tap interpolation filter can depend on the width or height of the TU.
[0310] i. In one example, a 4-tap interpolation filter can be used when W or H is greater than the threshold T1 (e.g., T1 = 8).
[0311] ii. Optionally, a 4-tap interpolation filter may be used when W or H is equal to or less than the threshold T2 (e.g., T2 = 32).
[0312] iii. Alternatively, the 4-tap interpolation filter can also be disabled for other blocks.
[0313] b) In one example, whether to use a 4-tap interpolation filter may depend on the size of the TU.
[0314] i. In one example, when W*H is greater than the threshold T1, a 4-tap interpolation filter can be used, where T1 is the threshold.
[0315] 1. In one example, T1 = 32, which means that the 4x4 / 8x4 / 4x8 / 2x8 / 8x2 / 16x2 / 2x16 / 1x16 / 16x1 / 32x1 / 1x32 block can be used without a 4-tap interpolation filter.
[0316] ii. Alternatively, a 4-tap interpolation filter can be used when W*H is equal to or less than the threshold T2 (e.g., T2 = 64).
[0317] iii. Alternatively, the 4-tap interpolation filter can also be disabled for other blocks.
[0318] c) In one example, when W is greater than T1 and H is greater than T2 (e.g., T1 = 8, T2 = 8), a 4-tap interpolation filter can be used.
[0319] i. In one example, 4x4 / 4x8 / 8x8 blocks may not require the application of a 4-tap interpolation filter.
[0320] ii. Alternatively, a 4-tap interpolation filter can be used when W is not greater than T1 and H is not greater than the threshold T2 (e.g., T1 = 64, T2 = 64).
[0321] iii. Alternatively, the 4-tap interpolation filter can also be disabled for other blocks.
[0322] d) When 4-tap interpolation filters are not allowed, 2-tap filters can be used (e.g.,
[0323] 2-tap bilinear filter).
[0324] i. In one example, a bilinear / linear filter can be used for a small-sized TU.
[0325] 1. In one example, for a TU size (e.g., width * height) of N pixels or less (e.g., N = 32), a bilinear filter can be used to generate intra-prediction blocks in directional prediction mode. In one example, a 4x4 / 8x4 / 4x8 / 2x8 / 8x2 / 16x2 / 2x16 / 1x16 / 16x1 / 32x1 / 1x32 TU can use a bilinear filter.
[0326] e) In one example, the threshold mentioned above can be the same for all color components.
[0327] i. Alternatively, the threshold can depend on the color component.
[0328] 3. Suggest whether to use a 4-tap filter F. G (Also known as, Gaussian filter) depends on the prediction information and / or block size.
[0329] a) In one example, F G Whether a block is used for intra-frame encoding (or ISP encoding) can depend on the block size.
[0330] i. In one example, F G It can be used for intra-frame codec (or ISP codec) blocks with a block width or height greater than a threshold T (such as T=8).
[0331] ii. In one example, F G It can be used for intra-frame codec (or ISP codec) blocks with a block size (e.g., width * height) greater than a threshold T (e.g., T = 32).
[0332] iii. In one example, F G It can be used for intra-frame codec (or ISP codec) blocks whose block width multiplied by height (e.g., W*H) is greater than a predefined size T1*T2, where W>T1, H>T2, such as T1=8, T2=8.
[0333] iv. In one example, for a luminance block encoded by an ISP, if the intra-prediction mode index of a sub-partition meets certain conditions (such as being greater than or equal to INTRA_ANGULAR34) and the sub-partition width is greater than 8, then F is enabled. G filter.
[0334] 1. Alternatively, for luminance blocks encoded and decoded by ISP, if the intra-prediction mode index of a sub-partition meets certain conditions (such as being less than INTRA_ANGULAR34) and the sub-partition height is greater than 8, then F is enabled. G filter.
[0335] 2. Alternatively, for other cases of luminance blocks encoded and decoded by ISP, F can be disabled. G filter.
[0336] v. In one example, for a luminance block encoded by an ISP, F can be enabled if the intra-prediction mode index of a sub-partition meets certain conditions (such as being greater than or equal to INTRA_ANGULAR34) and the block width (i.e., CU) is greater than 8. G filter.
[0337] 1. Alternatively, for luminance blocks encoded and decoded by ISP, F can be enabled if the intra-prediction mode index of a sub-partition meets certain conditions (such as being less than INTRA_ANGULAR34) and the block width (i.e., CU) height is greater than 8. G filter.
[0338] 2. Alternatively, for other cases of luminance blocks encoded and decoded by ISP, F can be disabled. G filter.
[0339] b) In one example, F G Whether a block is used for intra-frame encoding (or ISP encoding) can depend on the block width / height and prediction mode.
[0340] i. In one example, F G It can be used for intra-frame codec (or ISP codec) blocks with a prediction mode greater than or equal to the vertical prediction mode (such as intra-frame mode 34 in VVC) and a block width greater than a threshold T (such as T=8).
[0341] ii. In one example, F G It can be used for intra-codec (or ISP codec) blocks with a prediction mode smaller than the vertical prediction mode (such as intra-frame mode 34 of VVC) and a block height greater than N pixels (such as N=8).
[0342] c) When F G When prohibited, F can be used. C (Also known as, DCI-IF chromaticity filter), or cubic filter, or bilinear filter.
[0343] i. In one example, F can be used for an intra-coded (or ISP-coded) block with dimensions W*H <= T (such as T = 32), e.g., T = 32 C or a cubic filter or a bilinear filter.
[0344] ii. In one example, F can be used for an intra-coded (or ISP-coded) block where the prediction mode is greater than or equal to the vertical prediction mode (such as intra mode 34 in VVC) and the block width W < T (such as T = 8). C or a cubic filter or a bilinear filter.
[0345] iii. In one example, F can be used for an intra-coded (or ISP-coded) block where the prediction mode is less than the vertical prediction mode (such as intra mode 34 in VVC) and the block height H < T (such as T = 8). C or a cubic filter or a bilinear filter.
[0346] 4. For an ISP-coded block (e.g., CU), how to select an interpolation filter or other filters applied to reference samples can depend on the size of the CU.
[0347] a) Alternatively, how to select an interpolation filter or other filters applied to reference samples can depend on the size of the sub-partition.
[0348] 5. The reference samples used for interpolation can depend on the reference cue index.
[0349] a) In one example, the index variable iIdx and the multiplication factor iFact can be derived by iIdx = ((y + 1 + refIdx) * intraPredAngle) >> 5, where refIdx represents the reference cue index where the reference sample is located, and intraPredAngle is derived from the intra prediction mode and Look-up Table 2 as defined in the VVC working draft JVET-M1001-v7.
[0350] 6. The proposed method can be applied to all or some color components.
[0351] a) In one example, the proposed method can be applied to only the luminance component.
[0352] b) In one example, the proposed method can be applied to the luminance, Cb, and Cr components.
[0353] c) In one example, the proposed method can be applied to the luminance, Cb, and Cr components in the YCbCr 4:4:4 format.
[0354] d) In one example, the proposed method can be applied to the R, G, and B components for the RGB format.
[0355] 5. Examples
[0356] The following examples are based on the VVC working draft JVET-M1001-v7.
[0357] 5.1 Example #1
[0358] The following examples are used in the description of this invention. Item 2 The method in the middle.
[0359] Newly added text is highlighted in bold italics, and deleted text is preceded and followed by double brackets.
[0360] 8.4.4.2.7.INTRA_ANGULAR2..INTRA_ANGULAR66 Intra-prediction mode specification
[0361] The values of the predicted samples, predSamples[x][y], for x = 0..nTbW-1 and y = 0..nTbH-1, are derived as follows:
[0362] – If predModeIntra is greater than or equal to 34, then the following ordered steps are applied:
[0363] 1. The reference sample array ref[x] is specified as follows:
[0364] – Apply the following:
[0365] ref[x]=p[-1-refIdx+x][-1-refIdx],
[0366] Where x = 0..nTbW + refIdx (8-130)
[0367] – If intraPredAngle is less than 0, the master reference sample array is expanded as follows:
[0368] – When (nTbH*intraPredAngle)>>5 is less than -1
[0369] ref[x] =
[0370] p[-1-refIdx][-1-refIdx+((x*invAngle+128)>>8)], where x=-1..(nTbH*intraPredAngle)>>5 (8-131)
[0371] ref[((nTbH*intraPredAngle)>>5)-1]=
[0372] ref[(nTbH*intraPredAngle)>>5] (8-132)
[0373] ref[nTbW+1+refIdx]=ref[nTbW+refIdx] (8-133)
[0374] -otherwise,
[0375] ref[x] = p[-1-refIdx+x][-1-refIdx], where x =
[0376] nTbW+1+refIdx..refW+refIdx (8-134)
[0377] ref[-1] = ref[0] (8-135)
[0378] –Additional sample points ref[refW+refIdx+x],
[0379] The derivation of x = 1..(Max(1,nTbW / nTbH)*refIdx+1) is as follows:
[0380] ref[refW+refIdx+x]=p[-1+refW][-1-refIdx](8-136)
[0381] 2. The values of the predicted sample points predSamples[x][y] for x = 0..nTbW–1 and y = 0..nTbH–1 are derived as follows:
[0382] – The derivation of the index variable iIdx and the multiplication factor iFact is as follows:
[0383] iIdx=((y+1+refIdx)*intraPredAngle)>>5+refIdx (8-137)
[0384] iFact=((y+1+refIdx)*intraPredAngle)&31 (8-138)
[0385] – If cIdx equals 0 and nTbW*nTbH is greater than M, then apply the following:
[0386] –The interpolation filter coefficients fT[j] for j = 0..3 are derived as follows:
[0387] fT[j]=filterFlag? fG[iFact][j]:fC[iFact][j](8-139)
[0388] The derivation of the predicted sample values predSamples[x][y] is as follows:
[0389]
[0390] Otherwise, if [[(cIdx is not equal to 0)]], then based on the value of iFact, the following applies:
[0391] –If iFact is not equal to 0, the value of the predicted sample points predSamples[x][y] is derived as follows:
[0392] predSamples[x][y]=
[0393] ((32-iFact)*ref[x+iIdx+1]+iFact*ref[x+iIdx+2]+16)
[0394] >>5 (8-141)
[0395] Otherwise, the value of the predicted sample points, predSamples[x][y], is derived as follows:
[0396] predSamples[x][y]=ref[x+iIdx+1] (8-142)
[0397] Otherwise (predModeIntra is less than 34), the following ordered steps are applied:
[0398] 3. The reference sample array ref[x] is specified as follows:
[0399] – Apply the following:
[0400] ref[x] = p[-1-refIdx][-1-refIdx+x], where
[0401] x=0..nTbH+refIdx (8-143)
[0402] – If intraPredAngle is less than 0, the master reference sample array is expanded as follows:
[0403] –When (nTbW*intraPredAngle)>>5 is less than -1,
[0404] ref[x] = p[-1-refIdx+((x*invAngle+128)>>8)][-1-refIdx], where x = -1..(nTbW*intraPredAngle)>>5 (8-144)
[0405] ref[((nTbW*intraPredAngle)>>5)-1]=
[0406] ref[(nTbW*intraPredAngle)>>5] (8-145)
[0407] ref[nTbG+1+refIdx]=ref[nTbH+refIdx] (8-146)
[0408] -otherwise,
[0409] ref[x] = p[-1-refIdx][-1-refIdx+x], where
[0410] x=nTbH+1+refIdx..refH+refIdx (8-147)
[0411] ref[-1] = ref[0] (8-148)
[0412] –Additional sample points ref[refH+refIdx+x],
[0413] The derivation of x = 1..(Max(1,nTbW / nTbH)*refIdx+1) is as follows:
[0414] ref[refH+refIdx+x]=p[-1+refH][-1-refIdx](8-149)
[0415] 4. The values of the predicted samples, predSamples[x][y], for x = 0..nTbW-1 and y = 0..nTbH-1, are derived as follows:
[0416] – The derivation of the index variable iIdx and the multiplication factor iFact is as follows:
[0417] iIdx=((x+1+refIdx)*intraPredAngle)>>5 (8-150)
[0418] iFact=((x+1+refIdx)*intraPredAngle)&31 (8-151)
[0419] – If cIdx equals 0 and nTbW*nTbH is greater than M, then apply the following:
[0420] –The derivation of the interpolation filter coefficients fT[j] for j = 0..3 is as follows:
[0421] fT[j]=filterFlag? fG[iFact][j]:fC[iFact][j] (8-152)
[0422] The derivation of the predicted sample values predSamples[x][y] is as follows:
[0423]
[0424] Otherwise (cIdx is not equal to 0), based on the value of iFact, the following applies:
[0425] –If iFact is not equal to 0, the value of the predicted sample points predSamples[x][y] is derived as follows:
[0426] predSamples[x][y]=
[0427] ((32-iFact)*ref[y+iIdx+1]+iFact*ref[y+iIdx+2]+16)
[0428] >>5 (8-154)
[0429] Otherwise, the value of the predicted sample points, predSamples[x][y], is derived as follows:
[0430] predSamples[x][y]=ref[y+iIdx+1] (8-155)
[0431] In one example, M is set to 32 or 16.
[0432] 5.2 Example #2
[0433] The following examples are used in the description of this invention. Item 3 The method in the middle.
[0434] Newly added text is highlighted in bold italics, and deleted text is preceded and followed by double brackets.
[0435] 8.4.4.2.7.INTRA_ANGULAR2..INTRA_ANGULAR66 Intra-prediction mode specification
[0436] ...
[0437] The derivation of the variable filterFlag is as follows:
[0438] – If one or more of the following conditions are true, then filterFlag is set to 0.
[0439] –predModeIntra equals INTRA_ANGULAR2, INTRA_ANGULAR34, or INTRA_ANGULAR66
[0440] –refIdx is not equal to 0
[0441]
[0442] – If cIdx equals 0, and predModeIntra is greater than or equal to INTRA_ANGULAR34, and [[nW]] If it is greater than 8, then Set it to equal to 1.
[0443] Otherwise, if cIdx equals 0, and predModeIntra is less than INTRA_ANGULAR34, and [[nH]] If it is greater than 8, then Set it to equal to 1.
[0444]
[0445] Otherwise, apply the following:
[0446] – Set the variable minDistVerHor to equal Min(Abs(predModeIntra-50),Abs(predModeIntra-18)).
[0447] The variable intraHorVerDistThres[nTbS] is specified in Table 1.
[0448] The derivation of the variable filterFlag is as follows:
[0449] – If minDistVerHor is greater than or equal to intraHorVerDistThres[nTbS][[and RefFilterFlag is equal to 1]] Then set filterFlag to equal 1.
[0450] Otherwise, filterFlag is set to 0.
[0451] Alternatively, the following can be applied:
[0452] 8.4.4.2.7.INTRA_ANGULAR2..INTRA_ANGULAR66 Intra-prediction mode specification
[0453] ...
[0454] The derivation of the variable filterFlag is as follows:
[0455] – If one or more of the following conditions are true, then filterFlag is set to 0.
[0456]
[0457] –predModeIntra equals [[INTRA_ANGULAR2,INTRA_ANGULAR34or INTRA_ANGULAR66]]
[0458] –refIdx is not equal to 0
[0459]
[0460] –IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT[[and cIdx is equal to 0]], and predModeIntra is greater than or equal to INTRA_ANGULAR34, and [[nW]] Greater than 8
[0461] –IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT[[and cIdx is equal to 0]], and predModeIntra is less than INTRA_ANGULAR34, and [[nH]] Greater than 8.
[0462]
[0463] Otherwise, apply the following:
[0464] – Set the variable minDistVerHor to equal Min(Abs(predModeIntra-50),Abs(predModeIntra-18)).
[0465] The variable intraHorVerDistThres[nTbS] is specified in Table 1.
[0466] The derivation of the variable filterFlag is as follows:
[0467] – If minDistVerHor is greater than or equal to intraHorVerDistThres[nTbS][[and RefFilterFlag is equal to 1]] Then set filterFlag to equal 1.
[0468] Otherwise, filterFlag is set to 0.
[0469] 5.3 Example #3
[0470] The following examples are used in the description of this invention. Item 3 The method in the middle.
[0471] Newly added text is highlighted in bold italics, and deleted text is preceded and followed by double brackets.
[0472] 8.4.4.2.7.INTRA_ANGULAR2..INTRA_ANGULAR66 Intra-prediction mode specification
[0473] ...
[0474] The derivation of the variable filterFlag is as follows:
[0475] – If one or more of the following conditions are true, then filterFlag is set to 0.
[0476]
[0477] –predModeIntra equals [[INTRA_ANGULAR2,INTRA_ANGULAR34or INTRA_ANGULAR66]]
[0478] –refIdx is not equal to 0
[0479]
[0480] –IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT[[and cIdx is equal to 0]], and predModeIntra is greater than or equal to INTRA_ANGULAR34, and [[nW]] Greater than 8
[0481] –IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT[[and cIdx is equal to 0]], and predModeIntra is less than INTRA_ANGULAR34, and [[nH]] Greater than 8.
[0482]
[0483] Otherwise, apply the following:
[0484] – Set the variable minDistVerHor to equal Min(Abs(predModeIntra-50),Abs(predModeIntra-18)).
[0485] The variable intraHorVerDistThres[nTbS] is specified in Table 1.
[0486] The derivation of the variable filterFlag is as follows:
[0487] – If minDistVerHor is greater than or equal to intraHorVerDistThres[nTbS][[and RefFilterFlag is equal to 1]] Then set filterFlag to equal 1.
[0488] Otherwise, filterFlag is set to 0.
[0489] 5.4 Example #4
[0490] The following examples are used in the description of this invention. Item 4 The method in the middle.
[0491] The newly added part The text to be deleted is highlighted with double parentheses before and after it.
[0492] 8.4.4.2.7.INTRA_ANGULAR2..INTRA_ANGULAR66 Intra-prediction mode specification
[0493] ...
[0494] The values of the predicted samples, predSamples[x][y], for x = 0..nTbW–1 and y = 0..nTbH–1, are derived as follows:
[0495] – If predModeIntra is greater than or equal to 34, then the following ordered steps are applied:
[0496] 1. The reference sample array ref[x] is specified as follows:
[0497] – Apply the following:
[0498] ref[x]=p[-1-refIdx+x][-1-refIdx],
[0499] Where x = 0..nTbW + refIdx (8-130)
[0500] – If intraPredAngle is less than 0, the master reference sample array is expanded as follows:
[0501] – When (nTbH*intraPredAngle)>>5 is less than -1
[0502] ref[x] =
[0503] p[-1-refIdx][-1-refIdx+((x*invAngle+128)>>8)],
[0504] Where x = -1..(nTbH*intraPredAngle) >> 5 (8-131)
[0505] ref[((nTbH*intraPredAngle)>>5)-1]=
[0506] ref[(nTbH*intraPredAngle)>>5] (8-132)
[0507] ref[nTbW+1+refIdx]=ref[nTbW+refIdx] (8-133)
[0508] -otherwise,
[0509] ref[x] = p[-1-refIdx+x][-1-refIdx], where x =
[0510] nTbW+1+refIdx..refW+refIdx (8-134)
[0511] ref[-1] = ref[0] (8-135)
[0512] – Additional sample point reference ref[refW+refIdx+x],
[0513] The derivation of x = 1..(Max(1,nTbW / nTbH)*refIdx+1) is as follows:
[0514] ref[refW+refIdx+x]=p[-1+refW][-1-refIdx](8-136)
[0515] 2. The values of the predicted sample points predSamples[x][y] for x = 0..nTbW–1 and y = 0..nTbH–1 are derived as follows:
[0516] – The derivation of the index variable iIdx and the multiplication factor iFact is as follows:
[0517] iIdx=((y+1+refIdx)*intraPredAngle)>>5+refIdx (8-137)
[0518] iFact=((y+1+refIdx)*intraPredAngle)&31 (8-138)
[0519] – If cIdx equals 0, then apply the following:
[0520] –The interpolation filter coefficients fT[j] for j = 0..3 are derived as follows:
[0521] fT[j]=filterFlag? fG[iFact][j]:fC[iFact][j](8-139)
[0522] The derivation of the predicted sample values predSamples[x][y] is as follows:
[0523]
[0524] Otherwise (cIdx is not equal to 0), based on the value of iFact, the following applies:
[0525] –If iFact is not equal to 0, the value of the predicted sample points predSamples[x][y] is derived as follows:
[0526] predSamples[x][y]=
[0527] ((32-iFact)*ref[x+iIdx+1]+iFact*ref[x+iIdx+2]+16)
[0528] >>5 (8-141)
[0529] Otherwise, the value of the predicted sample points, predSamples[x][y], is derived as follows:
[0530] predSamples[x][y]=ref[x+iIdx+1] (8-142)
[0531] Figure 6This is a block diagram of a video processing apparatus 600. Apparatus 600 can be used to implement one or more methods described herein. Apparatus 600 can be embodied in smartphones, tablets, computers, Internet of Things (IoT) receivers, etc. Apparatus 600 may include one or more processors 602, one or more memories 604, and video processing hardware 606. The one or more processors 602 can be configured to implement one or more methods described in this document. The one or more memories 604 can be used to store data and code for implementing the methods and techniques described herein. The video processing hardware 606 can be used to implement some of the techniques described in this document in hardware circuitry.
[0532] Figure 7 This is another example of a block diagram of a video processing system in which the disclosed technologies can be implemented. Figure 7 This is a block diagram illustrating an example video processing system 700, in which various techniques disclosed herein can be implemented. Various implementations may include some or all of the components of system 700. System 700 may include an input 702 for receiving video content. The video content may be received in a raw or uncompressed format, such as 8 or 10-bit multi-component pixel values, or in a compressed or encoded format. Input 702 may represent a network interface, a peripheral bus interface, or a storage interface. Examples of network interfaces include wired interfaces such as Ethernet, Passive Optical Network (PON), and wireless interfaces such as Wi-Fi or cellular interfaces.
[0533] System 700 may include an encoding / decoding component 704, which may implement the various decoding or encoding methods described in this document. The encoding / decoding component 704 may reduce the average bit rate of the video from input 702 to the output of the encoding / decoding component 704 to generate a video bitstream. Therefore, encoding / decoding techniques are sometimes referred to as video compression or video transcoding techniques. The output of the encoding / decoding component 704 may be stored or transmitted via connected communication (as shown in component 706). Component 708 may use the stored or transmitted bitstream (or encoded) representation of the video received at input 702 to generate pixel values or displayable video sent to display interface 710. The process of generating a user-viewable video from a bitstream representation is sometimes referred to as video decompression. Furthermore, although some video processing operations are referred to as “encoding / decoding” operations or tools, it should be understood that encoding / decoding tools or operations are used at the encoder and will be performed by the decoder with corresponding decoding tools or operations that are the reverse of the encoding / decoding result.
[0534] Examples of peripheral bus interfaces or display interfaces may include Universal Serial Bus (USB), High Definition Multimedia Interface (HDMI), or DisplayPort. Examples of storage interfaces include SATA (Serial Advanced Technology Accessory), PCI, IDE, etc. The technologies described in this document can be embodied in a variety of electronic devices, such as mobile phones, laptops, smartphones, or other devices capable of performing digital data processing and / or video display.
[0535] Some embodiments of the disclosed technology involve making a decision or determination to enable a video processing tool or mode. In one example, when a video processing tool or mode is enabled, the encoder will use or implement that tool or mode in the processing of video blocks, but not necessarily modify the resulting bitstream based on the use of that tool or mode. That is, when a video processing tool or mode is enabled based on a decision or determination, the conversion from video blocks to a bitstream representation of video will use that video processing tool or mode. In another example, when a video processing tool or mode is enabled, the decoder will process the bitstream knowing that it has been modified based on the video processing tool or mode. That is, the conversion from a bitstream representation of video to video blocks will be performed using the video processing tool or mode enabled based on a decision or determination.
[0536] Some embodiments of the disclosed technology include making a decision or determination to disable a video processing tool or mode. In one example, when a video processing tool or mode is disabled, the encoder will not use the tool or mode in the conversion from video block to bitstream representation of video. In another example, when a video processing tool or mode is disabled, the decoder will process the bitstream knowing that it has not been modified using a video processing tool or mode that is disabled based on the decision or determination.
[0537] In this document, the term "video processing" can refer to video encoding, video decoding, video compression, or video decompression. For example, a video compression algorithm can be applied during the conversion from the pixel representation of the video to the corresponding bitstream representation, and vice versa. The bitstream representation of the current video block can, for example, correspond to bits that are commonly located or distributed at different positions in the bitstream, as defined by the syntax. For example, macroblocks can be encoded based on the error residuals from the transform and encoding / decoding, and can also be encoded using bits in the header and other fields of the bitstream.
[0538] Figure 8AThis is a flowchart of an example method 810 for video processing. Method 810 includes, in step 812, determining, based on rules, whether to use a 4-tap interpolation filter for the conversion between the current video block of the current video unit and the bitstream of the video, wherein the current video block is encoded and decoded using intra-frame modes from the bitstream. Method 810 further includes, in step 814, performing the conversion based on this determination.
[0539] Figure 8B This is a flowchart of an example method 820 for video processing. Method 820 includes, in step 822, generating an intra-prediction block for a current video block of a video unit using interpolation filters from one or more sets of interpolation filters for that video unit. Method 820 also includes, in step 824, performing a transformation between the current video block and the bitstream of the video using the prediction block.
[0540] Figure 8C This is a flowchart of an example method 830 for video processing. Method 830 includes, in step 832, generating an intra-frame prediction block for the transformation between the current video block of the current video unit and the bitstream of the video by applying an interpolation filter to reference samples, wherein the reference samples are determined according to rules. Method 830 further includes, in step 834, performing the transformation using the prediction block.
[0541] In some embodiments, video encoding / decoding methods, such as methods 810 to 830, may use methods as described in the reference. Figure 6 Or, as described in section 7, the apparatus implemented on the hardware platform. It should be understood that by allowing the use of the techniques disclosed in this document, the disclosed methods and techniques will be beneficial for video encoder and / or decoder embodiments incorporated into video processing devices such as smartphones, laptops, desktop computers, and similar devices.
[0542] Various techniques and embodiments can be described using the following clause-based format. The first set of clauses describes certain features and aspects of the techniques disclosed in the preceding section.
[0543] 1. A video processing method comprising: for a conversion between a current video block and a bitstream representation of the current video block, determining one or more interpolation filters to be used during the conversion, wherein the one or more interpolation filters are from a plurality of interpolation filters used for the video; and performing the conversion using the one or more interpolation filters.
[0544] 2. The method according to Clause 1, wherein the bitstream representation is configured to carry an indication of multiple interpolation filters.
[0545] 3. The method according to Clause 2, wherein the bitstream indicates that an indication is carried at the sequence parameter set level or video parameter set level or picture parameter set level or picture header or strip header or strip header or adaptive parameter set level or slice group header or slice header.
[0546] 4. The method according to Clause 1, wherein the plurality of interpolation filters are predefined, and the bitstream representation excludes explicit indications of the plurality of interpolation filters.
[0547] 5. The method according to any one of clauses 1 to 4, wherein different sets of multiple interpolation filters are used during the conversion of different video units.
[0548] 6. The method according to Clause 5, wherein the video unit corresponds to a video sequence or video picture or video view or video slice group or video slice or video block or video codec tree unit row or video codec unit or video prediction unit or video transform unit or VPDU.
[0549] 7. The method according to any one of Clauses 1 to 6, wherein the plurality of interpolation filters are based on the size of the current video block or the color component identifier of the current video block or the encoding / decoding method for the conversion of the current video block.
[0550] Other examples of items 1-7 are disclosed in Section 4, Item 1.
[0551] 8. A video processing method, comprising: determining, based on rules, whether to use a 4-tap interpolation filter in a conversion between a current video block and a bitstream representation of the current video block based on intra-frame prediction; and performing the conversion based on the determination of whether to use the 4-tap interpolation filter.
[0552] 9. The method described in Clause 8, wherein the 4-tap interpolation filter is a 4-tap cubic filter.
[0553] 10. The method according to Clause 8, wherein the 4-tap interpolation filter is a discrete cosine transform interpolation filter.
[0554] 11. The method described in Clause 8, wherein the 4-tap interpolation filter is a Gaussian filter.
[0555] 12. The method according to any one of clauses 8 to 11, wherein the rule specifies whether to use 4-tap interpolation based on the size of the current video block.
[0556] 13. The method described in Clause 12, wherein the size is the width of the current video block in pixels.
[0557] 14. The method described in Clause 12, wherein the size is the height of the current video block in pixels.
[0558] 15. The method according to any one of clauses 8 to 11, wherein the rule specifies whether to use 4-tap interpolation based on the size of the transform unit of the current video block.
[0559] 16. The method according to any one of clauses 12 to 15, wherein the rule specifies the use of a 4-tap interpolation filter when the size is higher than a first threshold T1 or lower than a second threshold T2.
[0560] 17. The method according to any one of clauses 8 to 16, wherein the rule specifies the use of a 2-tap filter when the 4-tap interpolation filter is not used for the transformation.
[0561] 18. The method according to any one of Clauses 16-17, wherein the first threshold or the second threshold has a value that depends on the color component to which the current video block belongs.
[0562] 19. The method according to Clause 11, wherein the rule specifies whether to use a 4-tap interpolation filter based on the size of the current video block and / or the prediction mode.
[0563] 20. The method described in Clause 19, wherein the rule further uses color component information of the current video block to specify whether a 4-tap interpolation filter is used.
[0564] Other examples of Articles 8-20 are disclosed in Section 4, Items 2-3.
[0565] 21. A video processing method comprising: determining an interpolation filter to be used during the conversion between a current video block and a bitstream representation of the current video block; applying the interpolation filter to reference samples determined using rules; and performing the conversion using the result of the application.
[0566] 22. The method described in Clause 21, wherein the rule specifies a function that determines the reference sample point as the reference line index refIdx.
[0567] 23. The method according to Clause 22, wherein the rule specifies that the reference sample is determined based on the intra-prediction angle used for the current video block.
[0568] 24. The method according to any one of clauses 1 to 23, wherein the method is applied to the current video block because the current video block is a luminance video block.
[0569] 25. The method according to any one of clauses 1 to 23, wherein the method is applied to the current video block because the current video block is a color video block.
[0570] 26. The method according to Clause 25, wherein the method is applied to the current video block since the current video block is a Cb video block.
[0571] 27. The method described in Clause 25, wherein the method is applied to the current video block because the current video block is an R (red) video block.
[0572] Other examples of Articles 21-27 are disclosed in Section 4, Items 4-5.
[0573] 28. A video processing apparatus comprising a processor configured to implement one or more of clauses 1 to 27.
[0574] 29. A computer-readable medium having code stored thereon, which, when executed by a processor, causes the processor to perform the methods of any one or more of clauses 1 to 27.
[0575] The second set of clauses describes certain features and aspects of the technology disclosed in the first part, such as example implementations 1-6.
[0576] 1. A video processing method, comprising: determining, based on rules, whether to use a 4-tap interpolation filter for conversion between a current video block of a current video unit of the video and a bitstream of the video, wherein the current video block is encoded and decoded using an intra-frame mode in the bitstream; and performing the conversion based on the determination.
[0577] 2. The method according to Clause 1, wherein the 4-tap interpolation filter corresponds to a cubic filter, a discrete cosine transform interpolation filter, or a Gaussian filter.
[0578] 3. The method according to Clause 1 or 2, wherein the rule specifies whether to use a 4-tap interpolation filter based on at least one of the width (W) or height (H) of the transform block (TB) of the current video block.
[0579] 4. The method according to Clause 3, wherein the rule specifies the use of a 4-tap interpolation filter when the width (W) or height (H) is greater than a first threshold (T1) or equal to or less than a second threshold (T2).
[0580] 5. The method according to Clause 1 or 2, wherein the rule specifies whether to use a 4-tap interpolation filter based on the size of the transform block (TB) of the video block, the TB having a width (W) and a height (H).
[0581] 6. The method according to Clause 5, wherein the rule specifies the use of a 4-tap interpolation filter when the size of TB is greater than a first threshold T1 or equal to or less than a second threshold T2, the size corresponding to the product of W and H.
[0582] 7. The method according to Clause 3, wherein the rule specifies the use of a 4-tap interpolation filter when the width of the transform block (TB) of the video block is greater than a first threshold T1 and the height of the transform block (TB) is greater than a second threshold T2.
[0583] 8. The method according to Clause 3, wherein the rule specifies the use of a 4-tap interpolation filter when the width of the transform block (TB) of the video block is not greater than a first threshold T1 and the height of the transform block (TB) is not greater than a second threshold T2.
[0584] 9. The method according to any one of Clauses 3 to 8, wherein the rule specifies that the 4-tap interpolation filter is disabled for another block of the current video unit.
[0585] 10. The method according to Clause 1, wherein the rule specifies the use of a 2-tap filter when the 4-tap interpolation filter is not used for the transformation.
[0586] 11. The method according to Clause 10, wherein the 2-tap filter corresponds to a bilinear or linear filter.
[0587] 12. The method according to any one of Clauses 4, 6, 7 and 8, wherein the first threshold or the second threshold has the same value for the color components of the current video unit.
[0588] 13. The method according to any one of clauses 4, 6, 7 and 8, wherein the first threshold or the second threshold has a value that depends on the color component of the current video unit.
[0589] 14. The method according to Clause 1, wherein the rule specifies whether to use a 4-tap interpolation filter corresponding to a Gaussian filter based on prediction information and / or the size of the current video block.
[0590] 15. The method according to Clause 14, wherein, depending on the size of the current video block or the transform block of the current video block, the rule specifies whether to apply a Gaussian filter to the current video block encoded using intra-frame codec or intra-fragmentation (ISP) codec.
[0591] 16. The method according to Clause 15, wherein the rule specifies that a Gaussian filter is used if the width (W) or height (H) of the current video block or the transform block of the current video block is greater than a threshold (T).
[0592] 17. The method according to Clause 15, wherein the rule specifies that a Gaussian filter is used if the product of the width (W) and height (H) of the current video block or the transform block of the current video block is greater than a threshold (T).
[0593] 18. The method according to Clause 17, wherein the threshold (T) is determined as the product of a first threshold (T1) and a second threshold (T2).
[0594] 19. The method according to Clause 15, wherein the rule specifies that a Gaussian filter is used for the current video block encoded using ISP encoding / decoding if the intra-prediction mode index of the sub-partition is greater than or equal to a predefined angular prediction mode and the width of the sub-partition is greater than a certain value T.
[0595] 20. The method described in Clause 15, wherein the rule specifies that a Gaussian filter is used for the current video block encoded using ISP encoding / decoding when the intra-prediction mode index of the sub-partition is less than a predefined angular prediction mode and the height of the sub-partition is greater than a certain value T.
[0596] 21. The method described according to Clause 19 or 20, wherein T equals 8.
[0597] 22. The method according to Clause 15, wherein the rule specifies that a Gaussian filter is not used for at least some luma blocks encoded using intra-fractional sub-partition (ISP) encoding and decoding.
[0598] 23. The method according to Clause 14, wherein the rule specifies whether to apply a Gaussian filter to the current video block that is encoded using intra-frame codec or intra-sub-frame (ISP) codec, depending on one or more prediction modes applied to the current video block, the width (W) and / or height (H) of the current video block, the transform block of the current video block, or the sub-partition of the current video block.
[0599] 24. The method according to Clause 15, wherein the rule specifies the use of a Gaussian filter when the current video block with the prediction mode is greater than or equal to the vertical prediction mode and the width (W) is greater than the threshold (T).
[0600] 25. The method according to Clause 15, wherein the rule specifies the use of a Gaussian filter when the current video block with the prediction mode is smaller than the vertical prediction mode and the height (H) is greater than N samples, where N is a positive integer.
[0601] 26. The method according to Clause 14, wherein the rule specifies that, in the absence of a Gaussian filter used according to the rule, a discrete cosine transform interpolation filter, a cubic filter, or a bilinear filter be used on the current video block encoded using intra-frame coding or intra-fractional (ISP) coding.
[0602] 27. The method described in Clause 26, wherein the rule specifies the use of a discrete cosine transform interpolation filter, a cubic filter, or a bilinear filter if the product of the width (W) and height (H) of the current video block is greater than a threshold (T).
[0603] 28. The method according to Clause 26, wherein the rule specifies the use of a discrete cosine transform interpolation filter, a cubic filter, or a bilinear filter when the current video block with a prediction mode is greater than or equal to the vertical prediction mode and the width (W) of the current video block is less than a threshold (T).
[0604] 29. The method according to Clause 26, wherein the rule specifies the use of a discrete cosine transform interpolation filter, a cubic filter, or a bilinear filter when the current video block with the prediction mode is smaller than the vertical prediction mode and the height (H) of the current video block is less than a threshold (T).
[0605] 30. The method according to any one of clauses 1 to 29, wherein the method is applied to all or only some of the color components of the current video unit.
[0606] 31. The method according to Clause 30, wherein the method is applied to the luminance component of the current video unit.
[0607] 32. The method according to Clause 30, wherein the method is applied to the luminance, Cb, and Cr components of the current video unit.
[0608] 33. The method according to Clause 30, wherein the method is applied to the luminance, Cb, and Cr components of the current video unit in YCbCr 4:4:4 format.
[0609] 34. The method according to Clause 30, wherein the method is applied to the red, green, and blue components of the current video unit in RGB format.
[0610] 35. A video processing method comprising: generating an intra-prediction block for a current video block of a video unit using an interpolation filter from one or more sets of interpolation filters for a video unit of the video; and performing a conversion between the current video block and a bitstream of the video using the prediction block.
[0611] 36. The interpolation filter is predefined according to the method described in Clause 35.
[0612] 37. The method according to Clause 35, wherein the bitstream includes indications of interpolation filters at the video unit level.
[0613] 38. The method according to Clause 37, wherein the bitstream includes indications of interpolation filters at the Sequence Parameter Set (SPS) level, Video Parameter Set (VPS) level, Picture Parameter Set (PPS) level, Picture header, Strip header, Adaptive Parameter Set (APS) level, Piece group header, Sub-picture, or Piece header.
[0614] 39. The method according to any one of clauses 35 to 38, wherein the interpolation filter is included in a first set, the first set being different from a second set of interpolation filters determined for another video unit of the video.
[0615] 40. The method according to Clause 35, wherein the video unit corresponds to a sequence, picture, subpicture, layer, stripe, slice group, slice, block, codec tree unit row, codec tree unit, codec unit, codec block, prediction unit, prediction block, transform unit, transform block or video processing data unit (VPDU).
[0616] 41. The method according to any one of clauses 35 to 40, wherein an interpolation filter is selected for the video unit based on at least one of the size of the current video block, the color component of the current video unit, or an encoding / decoding method for the conversion of the current video block.
[0617] 42. The method according to any one of clauses 35 to 41, wherein the method is applied to all or only some of the color components of the current video unit.
[0618] 43. The method according to Clause 42, wherein the method is applied to the luminance component of the current video unit.
[0619] 44. The method according to Clause 42, wherein the method is applied to the luminance, Cb, and Cr components of the current video unit.
[0620] 45. The method according to Clause 42, wherein the method is applied to the luminance, Cb, and Cr components of the current video unit in YCbCr 4:4:4 format.
[0621] 46. The method according to Clause 42, wherein the method is applied to the red, green, and blue components of the current video unit in RGB format.
[0622] 47. A video processing method comprising: generating an intra-frame prediction block for a conversion between a current video block of a current video unit and a bitstream of a video by applying an interpolation filter to reference samples, wherein the reference samples are determined according to rules; and performing the conversion using the prediction block.
[0623] 48. The method described in Clause 47, wherein the rule specifies a function for determining the reference sample point as the reference line index.
[0624] 49. The method according to Clause 47, wherein the rule specifies that the reference sample is determined based on the intra-prediction angle used for the current video block.
[0625] 50. The method according to any one of clauses 47 to 49, wherein the index variable (iIdx) of the reference sample is derived by the equation iIdx = ((y+1+refIdx)*intraPredAngle)>>5, where refIdx represents the reference line index indicating the position of the reference sample, and intraPredAngle is derived from the intra-prediction mode of the current video block.
[0626] 51. The method according to any one of clauses 47 to 50, wherein the method is applied to all or only some of the color components of the current video unit.
[0627] 52. The method according to Clause 51, wherein the method is applied to the luminance component of the current video unit.
[0628] 53. The method according to Clause 51, wherein the method is applied to the luminance, Cb, and Cr components of the current video unit.
[0629] 54. The method according to Clause 51, wherein the method is applied to the luminance, Cb, and Cr components of the current video unit in YCbCr 4:4:4 format.
[0630] 55. The method according to Clause 51, wherein the method is applied to the red, green, and blue components of the current video unit in RGB format.
[0631] Some embodiments of the disclosed technology involve making a decision or determination to enable a video processing tool or mode. In one example, when a video processing tool or mode is enabled, the encoder will use or implement that tool or mode in the processing of video blocks, but not necessarily modify the resulting bitstream based on the use of that tool or mode. That is, when a video processing tool or mode is enabled based on a decision or determination, the conversion from video blocks to a bitstream representation of video will use that video processing tool or mode. In another example, when a video processing tool or mode is enabled, the decoder will process the bitstream knowing that it has been modified based on the video processing tool or mode. That is, the conversion from a bitstream representation of video to video blocks will be performed using the video processing tool or mode enabled based on a decision or determination.
[0632] Some embodiments of the disclosed technology include making a decision or determination to disable a video processing tool or mode. In one example, when a video processing tool or mode is disabled, the encoder will not use the tool or mode in the conversion from video block to bitstream representation of video. In another example, when a video processing tool or mode is disabled, the decoder will process the bitstream knowing that it has not been modified using a video processing tool or mode that is disabled based on the decision or determination.
[0633] In this document, the term "video processing" can refer to video encoding, video decoding, video compression, or video decompression. For example, a video compression algorithm can be applied during the conversion from the pixel representation of the video to the corresponding bitstream representation, and vice versa. The bitstream representation of the current video block can, for example, correspond to bits that are commonly located or distributed at different positions in the bitstream, as defined by the syntax. For example, macroblocks can be encoded based on the error residuals from the transform and encoding / decoding, and can also be encoded using bits in the header and other fields of the bitstream.
[0634] As will be understood from the foregoing, specific embodiments of the currently disclosed technology have been described herein for illustrative purposes, but various modifications may be made without departing from the scope of the invention. Therefore, the currently disclosed technology is not limited except for the appended claims.
[0635] The implementation of the subject matter and functional operations described in this patent document can be implemented in various systems, digital electronic circuits, or computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or combinations thereof. Implementations of the subject matter described in this specification can be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a tangible and non-transitory computer-readable medium for execution by or control of the operation of a data processing apparatus. The computer-readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, a combination of materials embodying machine-readable propagation signals, or combinations thereof. The terms "data processing unit" or "data processing apparatus" include all means, devices, and machines for processing data, including, for example, a programmable processor, a computer, or multiple processors or computers. In addition to hardware, the apparatus may include code that creates an execution environment for the computer program in question, for example, code constituting processor firmware, a protocol stack, a database management system, an operating system, or combinations thereof.
[0636] A computer program (also called a program, software, software application, script, or code) can be written in any programming language, including compiled or interpreted languages, and can be deployed in any form, including as a standalone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. A program can be stored as part of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinating files (e.g., a file storing one or more modules, subroutines, or portions of code). A computer program can be deployed to execute on a single computer, or on multiple computers located at a single site or distributed across multiple sites and interconnected via a communication network.
[0637] The processes and logic flows described in this specification can be executed by one or more programmable processors that execute one or more computer programs to perform functions by manipulating input data and generating output. The processes and logic flows can also be executed by special-purpose logic circuitry, such as field-programmable gate arrays or application-specific integrated circuits (ASICs), and the apparatus can also be implemented as such special-purpose logic circuitry.
[0638] For example, processors suitable for executing computer programs include general-purpose and special-purpose microprocessors, as well as any one or more processors in any kind of digital computer. Typically, the processor receives instructions and data from read-only memory or random access memory, or both. The fundamental elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Typically, a computer will also include, or be operatively coupled to, one or more mass storage devices (e.g., magnetic disks, magneto-optical disks, or optical disks) for storing data, to receive data from or transfer data to, or both. However, a computer does not require such devices. Computer-readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media, and memory devices, including semiconductor memory devices such as EPROM, EEPROM, and flash memory devices. The processor and memory may be supplemented by or incorporated into special-purpose logic circuitry.
[0639] The specification and accompanying drawings are to be considered exemplary only, where exemplary means example. As used herein, the word "or" is intended to include "and / or" unless the context clearly indicates otherwise.
[0640] Although this patent document contains numerous details, these should not be construed as limiting any invention or the scope of the claims, but rather as descriptions of specific features of specific embodiments of a particular invention. Some features described in the context of individual embodiments in this patent document may also be implemented in combination in a single embodiment. Conversely, various features described in the context of a single embodiment may also be implemented individually in multiple embodiments or in any suitable sub-combination. Furthermore, although features may be described above as functioning in some combinations, and even initially claimed in this way, in some cases, one or more features from the claimed combination may be removed from that combination, and the claimed combination may be for sub-combinations or variations thereof.
[0641] Similarly, although the operations are depicted in a specific order in the accompanying drawings, this should not be construed as requiring these operations to be performed in the specific order or sequence shown, or requiring all the operations shown to obtain the desired result. Furthermore, the separation of various system components in the embodiments described in this patent document should not be construed as requiring such separation in all embodiments.
[0642] Only a few implementations and examples are described, and other implementations, enhancements and variations may be made based on what is described and shown in this patent document.
Claims
1. A method for processing video data, comprising: For the conversion between the first video block of the video and the bitstream of the video, it is determined that a first encoding / decoding tool is applied to the first video block, wherein in the first encoding / decoding tool, based on the size of the first video block, the first video block is divided into 2 or 4 horizontal or vertical sub-regions. Based on the first reference interpolation filtering process, predictive samples are generated for at least one of the multiple sub-regions. as well as The transformation is performed based on the predicted sample points. In the first reference interpolation filtering process, a first 4-tap interpolation filter is applied, and multiple sub-regions use the same intra-frame mode as the first video block. Specifically, for the second video block where the first encoding / decoding tool is not applied, a second reference interpolation filtering process is used. In this process, one of the first 4-tap interpolation filter and the second 4-tap interpolation filter is selected based on the size of the second video block, and the second 4-tap interpolation filter is different from the first 4-tap interpolation filter. The second 4-tap interpolation filter corresponds to a Gaussian filter. The first and second 4-tap interpolation filters are applied only to the luminance component.
2. The method according to claim 1, wherein, The first 4-tap interpolation filter corresponds to a cubic filter or a discrete cosine transform interpolation filter.
3. The method according to claim 1, wherein, The first 4-tap interpolation filter is determined independently of the size of at least one of the plurality of sub-regions.
4. The method according to claim 1, wherein, The selection is further based on the intra-frame mode of the second video block and the position of the reference sample of the second video block.
5. The method according to claim 4, wherein, When the index of the intra-frame mode of the second video block is one of the first index sets, the first 4-tap interpolation filter is selected, and the first index set is {0, -14, -12, -10, -6, 2, 34, 66, 72, 76, 78, 80}.
6. The method according to claim 5, wherein, In response to the fact that the index of the intra-frame mode of the second video block is not one of {18, 50} and not one of the first index set, the reference sample is adjacent to the second video block, and the number of samples contained in the second video block is greater than or equal to 1024, the second 4-tap interpolation filter is selected.
7. The method according to claim 1, wherein, The first 4-tap interpolation filter f C The coefficient of [p][0] is defined as:
8. The method according to claim 1, wherein, The second 4-tap interpolation filter f G The coefficient of [p][0] is defined as:
9. The method according to claim 1, wherein, The conversion includes encoding the first video block into the bitstream.
10. The method according to claim 1, wherein, The conversion includes decoding the first video block from the bitstream.
11. An apparatus for processing video data, comprising a processor and a non-transitory memory having instructions thereon, wherein the instructions, when executed by the processor, cause the processor to: For the conversion between the first video block of the video and the bitstream of the video, it is determined that a first encoding / decoding tool is applied to the first video block, wherein in the first encoding / decoding tool, based on the size of the first video block, the first video block is divided into 2 or 4 horizontal or vertical sub-regions. Based on the first reference interpolation filtering process, prediction samples are generated for at least one sub-region among multiple sub-regions; and The transformation is performed based on the predicted sample points. in, During the first reference interpolation filtering process, a first 4-tap interpolation filter is applied, and multiple sub-regions therein use the same intra-frame mode as the first video block. Specifically, for the second video block where the first encoding / decoding tool is not applied, a second reference interpolation filtering process is used. In this process, one of the first 4-tap interpolation filter and the second 4-tap interpolation filter is selected based on the size of the second video block, and the second 4-tap interpolation filter is different from the first 4-tap interpolation filter. The second 4-tap interpolation filter corresponds to a Gaussian filter. The first and second 4-tap interpolation filters are applied only to the luminance component.
12. The apparatus according to claim 11, wherein, The first 4-tap interpolation filter corresponds to a cubic filter or a discrete cosine transform interpolation filter.
13. The apparatus according to claim 11, wherein, The first 4-tap interpolation filter is determined independently of the size of at least one of the plurality of sub-regions.
14. The apparatus according to claim 11, wherein, The selection is further based on the intra-frame mode of the second video block and the position of the reference sample of the second video block.
15. A non-transitory computer-readable storage medium for storing instructions, said instructions causing a processor to: For the conversion between the first video block of the video and the bitstream of the video, it is determined that a first encoding / decoding tool is applied to the first video block, wherein in the first encoding / decoding tool, based on the size of the first video block, the first video block is divided into 2 or 4 horizontal or vertical sub-regions. Based on the first reference interpolation filtering process, prediction samples are generated for at least one sub-region among multiple sub-regions; and The transformation is performed based on the predicted sample points. in, During the first reference interpolation filtering process, a first 4-tap interpolation filter is applied, and multiple sub-regions therein use the same intra-frame mode as the first video block. Specifically, for the second video block where the first encoding / decoding tool is not applied, a second reference interpolation filtering process is used. In this process, one of the first 4-tap interpolation filter and the second 4-tap interpolation filter is selected based on the size of the second video block, and the second 4-tap interpolation filter is different from the first 4-tap interpolation filter. The second 4-tap interpolation filter corresponds to a Gaussian filter. The first and second 4-tap interpolation filters are applied only to the luminance component.
16. A non-transitory computer-readable recording medium having a computer program and a bit stream stored thereon, wherein, When the computer program is executed by a processor, it implements the method of any one of claims 1-8 to generate the bit stream.
17. A method for storing a bitstream of video, comprising: The bit stream is generated by performing the method according to any one of claims 1-8; as well as The bit stream is stored in a non-transitory computer-readable recording medium.