[go: up one dir, main page]

WO2020232355A1 - Intra block copy for screen content coding - Google Patents

Intra block copy for screen content coding Download PDF

Info

Publication number
WO2020232355A1
WO2020232355A1 PCT/US2020/033134 US2020033134W WO2020232355A1 WO 2020232355 A1 WO2020232355 A1 WO 2020232355A1 US 2020033134 W US2020033134 W US 2020033134W WO 2020232355 A1 WO2020232355 A1 WO 2020232355A1
Authority
WO
WIPO (PCT)
Prior art keywords
block
mode
prediction
current video
video
Prior art date
Application number
PCT/US2020/033134
Other languages
French (fr)
Inventor
Weijia Zhu
Jizheng Xu
Li Zhang
Kai Zhang
Original Assignee
Bytedance Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Bytedance Inc. filed Critical Bytedance Inc.
Priority to CN202080036494.2A priority Critical patent/CN113826390B/en
Publication of WO2020232355A1 publication Critical patent/WO2020232355A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Definitions

  • This document is related to video and image coding technologies.
  • Digital video accounts for the largest bandwidth use on the internet and other digital communication networks. As the number of connected user devices capable of receiving and displaying video increases, it is expected that the bandwidth demand for digital video usage will continue to grow.
  • Devices, systems and methods related to digital video coding, and specifically, to intra block copy (IBC) for screen content coding for video coding are described.
  • the described methods may be applied to both the existing video coding standards (e.g., High Efficiency Video Coding (HEVC)) and future video coding standards (e.g., Versatile Video Coding (VVC)) or codecs.
  • HEVC High Efficiency Video Coding
  • VVC Versatile Video Coding
  • a method of video processing includes performing a conversion between a current video block of a current picture of a chroma component of a video and a bitstream representation of the video, wherein the bitstream representation conforms to a format rule, and wherein the format rule specifies that an indication of a use of an intra block copy (IBC) mode for the current video block is selectively included in the bitstream representation based on whether one of more luma blocks corresponding to the current video block are coded in the bitstream representation using the IBC mode, wherein the IBC mode comprises use of a prediction of the current video block based on samples from the current picture.
  • IBC intra block copy
  • a method of video processing includes determining, for a current video block of a video, that a use of an intra block copy (IBC) mode for the current video block is disabled or a block vector corresponding to the current video block is invalid, generating, based on the determining, a prediction for the current video block using a default intra mode, and performing, based on the prediction, a conversion between the current video block and a bitstream representation of the video.
  • IBC intra block copy
  • a method of video processing includes selectively enabling, for a conversion between a current video block of a video and a bitstream representation of the video, an intra block copy (IBC) mode for the current video block, and performing, subsequent to the selectively enabling, the conversion, wherein the current video block comprises one or more sub-blocks, and wherein at least one of the sub blocks are associated with invalid block vectors.
  • IBC intra block copy
  • a method of video processing includes performing a conversion between a current video block of a current picture of a video and a bitstream representation of the video, wherein the current video block is represented in the bitstream representation using an intra block copy mode based on prediction from a prediction block, and wherein the prediction block comprises pixels having a default value.
  • a method of video processing includes deriving, for a chroma video block that is coded using an intra block copy (IBC) mode, a motion vector or a block vector of the chroma video block based on a motion vector or a block vector of a neighboring chroma block, and performing, based on the deriving, a conversion between the chroma video block and a bitstream representation of the video.
  • IBC intra block copy
  • a method of video processing includes making a determination that a current video block is from a video unit of a video having a content type, and performing, based on the determination, a conversion between the current video block and the bitstream representation of the video, wherein the content type is indicated in the bitstream representation at the video unit level, and wherein a coding tool is selectively available for the conversion depending on the content type based on a rule.
  • a method of video processing includes storing, for a current video block that is coded using a triangular partition mode (TPM), uni -prediction information for at least one sub-block of the current video block, and performing, using the uni -prediction information, a conversion between the current video block of a video and a bitstream representation of the video.
  • TPM triangular partition mode
  • a method of video processing includes making a decision, based on a coding tree structure of a current video block, regarding a selective enablement of coding mode to the current video block, and performing, based on the decision, a conversion between the current video block and the bitstream representation of the current video block.
  • a method of video processing includes determining, based on a size of a current video block of a video that is coded using an intra block copy (IBC) mode, a predefined transform, and performing, based on the determining, a conversion between the current video block and a bitstream representation of the video, wherein the conversion comprises applying, during encoding, the predefined transform between an IBC prediction of the current video block and a residual coding in the bitstream
  • IBC intra block copy
  • a method of video processing includes conditionally enabling, for a current video block of a video, a triangular prediction mode (TPM) for the current video block with uni -prediction, and performing, subsequent to the conditionally enabling, a conversion between the current video block and a bitstream
  • TPM triangular prediction mode
  • the TPM comprises splitting the current video block into multiple sub-blocks, at least one having a non-square shape.
  • the above-described method may be implemented by a video encoder apparatus that comprises a processor.
  • these methods may be embodied in the form of processor-executable instructions and stored on a computer-readable program medium. [0017] These, and other, aspects are further described in the present document.
  • FIG. 1 shows an example of intra block copy.
  • FIG. 2 shows an example of five spatial neighboring candidates.
  • FIG. 3 shows an example of a block coded in palette mode.
  • FIG. 4 shows an example of use of a palette predictor to signal palette entries.
  • FIG. 5 shows an example of horizontal and vertical traverse scans.
  • FIG. 6 shows an example of coding of palette indices.
  • FIG. 7 shows an example of multi-type tree splitting modes.
  • FIG. 8 shows an example of samples used to derive parameters in a cross-component linear model (CCLM) prediction mode.
  • CCLM cross-component linear model
  • FIG. 9 shows an example of 67 intra prediction modes.
  • FIG. 10 shows an example of the left and above neighbors of a current block.
  • FIG. 11 shows an example of four reference lines neighboring a prediction block.
  • FIG. 12A shows an example of divisions of 4x8 and 8x4 blocks for an intra sub partition method.
  • FIG. 12B shows an example of divisions all blocks except 4x8, 8x4 and 4x4 for an intra sub partition method.
  • FIGS. 13A-3D show examples of samples used by a position dependent intra prediction combination (PDPC) method applied to diagonal and adjacent angular intra modes.
  • PDPC position dependent intra prediction combination
  • FIG. 14 shows an example of a triangle partition based inter prediction.
  • FIG. 15 shows an example of spatial and temporal neighboring blocks used to construct a uni -prediction candidate list.
  • FIG. 16 shows an example of the weights used in a blending process.
  • FIG. 17 shows an example of a selected luma block covering a luma region.
  • FIG. 18 shows examples of left and above neighboring blocks.
  • FIGS. 19A and 19B show examples of diagonal and anti-diagonal partitions in the triangular partitioning mode (TPM), respectively.
  • FIG. 20 show an example of sub-blocks which contains samples located on the diagonal or anti-diagonal lines.
  • FIG. 21 A show an example of sub-blocks which contains samples located on the diagonal or anti-diagonal lines of a block with its width larger than height.
  • FIG. 21B show an example of sub-blocks which contains samples located on the diagonal or anti-diagonal lines of a block with its width smaller than height.
  • FIG. 21C show an example of sub-blocks which contains samples located on the diagonal or anti-diagonal lines of a block with its width equal to height.
  • FIGS. 22A-22J are flowcharts for examples of video processing methods.
  • FIG. 23 is a block diagram of an example of a hardware platform for implementing a visual media decoding or a visual media encoding technique described in the present document.
  • FIG. 24 is a block diagram of an example video processing system in which disclosed techniques may be implemented.
  • the present document provides various techniques that can be used by a decoder of image or video bitstreams to improve the quality of decompressed or decoded digital video or images.
  • video is used herein to include both a sequence of pictures (traditionally called video) and individual images.
  • a video encoder may also implement these techniques during the process of encoding in order to reconstruct decoded frames used for further encoding.
  • Section headings are used in the present document for ease of understanding and do not limit the embodiments and techniques to the corresponding sections. As such, embodiments from one section can be combined with embodiments from other sections.
  • This document is related to video coding technologies. Specifically, it is related to IBC for screen content coding. It may be applied to the existing video coding standard like HEVC, or the standard (Versatile Video Coding) to be finalized. It may be also applicable to future video coding standards or video codec.
  • Video coding standards have evolved primarily through the development of the well-known ITU-T and ISO/IEC standards.
  • the ITU-T produced H.261 and H.263, ISO/IEC produced MPEG-1 and MPEG-4 Visual, and the two organizations jointly produced the
  • Joint Video Exploration Team JVET was founded by VCEG and MPEGjointly in 2015. Since then, many new methods have been adopted by JVET and put into the reference software named Joint Exploration Model (JEM).
  • JEM Joint Exploration Model
  • JEM Joint Exploration Model
  • JEM Joint Exploration Model
  • VTM The latest reference software of VVC, named VTM, could be found at:
  • IBC Intra block copy
  • HEVC-SCC HEVC Screen Content Coding extensions
  • VTM-4.0 the current VVC test model
  • IBC extends the concept of motion compensation from inter-frame coding to intra-frame coding.
  • the current block is predicted by a reference block in the same picture when IBC is applied.
  • the samples in the reference block must have been already reconstructed before the current block is coded or decoded.
  • IBC is not so efficient for most camera-captured sequences, it shows significant coding gains for screen content. The reason is that there are lots of repeating patterns, such as icons and text characters in a screen content picture.
  • an inter-coded coding unit can apply IBC if it chooses the current picture as its reference picture.
  • the MV is renamed as block vector (BV) in this case, and a BV always has an integer-pixel precision.
  • BV block vector
  • the current picture is marked as a“long-term” reference picture in the Decoded Picture Buffer (DPB).
  • DPB Decoded Picture Buffer
  • the prediction can be generated by copying the reference block.
  • the residual can be got by subtracting the reference pixels from the original signals.
  • transform and quantization can be applied as in other coding modes.
  • the whole reference block should be with the current coding tree unit (CTU) and does not overlap with the current block. Thus, there is no need to pad the reference or prediction block.
  • the IBC flag is coded as a prediction mode of the current CU. Thus, there are totally three prediction modes, MODE INTRA,
  • IBC merge mode an index pointing to an entry in the IBC merge candidates list is parsed from the bitstream.
  • the construction of the IBC merge list can be summarized according to the following sequence of steps:
  • Step 1 Derivation of spatial candidates
  • Step 2 Insertion of HMVP candidates
  • Step 3 Insertion of pairwise average candidates
  • IBC candidates from HMVP table may be inserted. Redundancy check are performed when inserting the HMVP candidates.
  • pairwise average candidates are inserted into the IBC merge list.
  • the merge candidate is called invalid merge candidate.
  • invalid merge candidates may be inserted into the IBC merge list.
  • JVET-N0843 is adopted to the VVC.
  • the BV predictors for merge mode and AMVP mode in IBC will share a common predictor list, which consist of the following elements:
  • JVET-N0843 In addition to the above-mentioned BV predictor candidate list, JVET-N0843 also proposed to simplify the pruning operations between HMVP candidates and the existing merge candidates (Al, Bl). In the simplification there will be up to 2 pruning operations since it only compares the first HMVP candidate with spatial merge candidate(s).
  • IBC AMVP mode an AMVP index point to an entry in the IBC AMVP list is parsed from the bitstream.
  • the construction of the IBC AMVP list can be summarized according to the following sequence of steps:
  • Step 1 Derivation of spatial candidates
  • Step 2 Insertion of HMVP candidates
  • Step 3 Insertion of zero candidates
  • IBC candidates from HMVP table may be inserted.
  • the motion compensation in the chroma IBC mode is performed at sub block level.
  • the chroma block will be partitioned into several sub blocks. Each sub block determines whether the corresponding luma block has a block vector and the validity if it is present.
  • There is encoder constrain in the current VTM where the chroma IBC mode will be tested if all sub blocks in the current chroma CU have valid luma block vectors. For example, on a YUV 420 video, the chroma block is NxM and then the collocated luma region is 2Nx2M.
  • the sub block size of a chroma block is 2x2. There are several steps to perform the chroma mv derivation then the block copy process.
  • the chroma block will be first partitioned into (N » 1)*(M » 1) sub blocks.
  • Each sub block with a top left sample coordinated at (x, y) fetches the corresponding luma block covering the same top-left sample which is coordinated at (2x, 2y).
  • the encoder checks the block vector(bv) of the fetched luma block. If one of the following conditions is satisfied, the bv is considered as invalid.
  • a bv of the corresponding luma block is not existing.
  • the chroma motion vector of a sub block is set to the motion vector of the corresponding luma sub block.
  • the IBC mode is allowed at the encoder when all sub blocks find a valid bv.
  • a luma location ( xCb, yCb ) specifying the top-left sample of the current coding block relative to the top-left luma sample of the current picture
  • variable cbWidth specifying the width of the current coding block in luma samples
  • variable cbHeight specifying the height of the current coding block in luma samples
  • variable treeType specifying whether a single or a dual tree is used and if a dual tree is used, it specifies whether the current tree corresponds to the luma or chroma components.
  • Output of this process is a modified reconstructed picture before in-loop filtering.
  • the derivation process for quantization parameters as specified in clause 8.7.1 is invoked with the luma location ( xCb, yCb ), the width of the current coding block in luma samples cbWidth and the height of the current coding block in luma samples cbHeight, and the variable treeType as inputs.
  • the decoding process for coding units coded in ibc prediction mode consists of the following ordered steps:
  • the motion vector components of the current coding unit are derived as follows:
  • treeType is equal to SINGLE TREE or DUAL TREE LUMA, the following applies:
  • treeType is equal to DUAL TREE CHROMA
  • numSbX ( cbWidth » 2 ) (8-886)
  • numSbY ( cbHeight » 2 ) (8-887)
  • the luma motion vector mvL[ xSbldx ][ ySbldx ] is derived as follows:
  • BB Neighbouring blocks availability checking process tbd] is invoked with the current chroma location ( xCurr, yCurr ) set equal to ( xCb / SubWidthC, yCb / SubHeightC ) and the neighbouring chroma location ( xCb / SubWidthC + ( mvC[ xSbldx ][ ySbldx ][ 0 ] » 5 ), yCb / SubHeightC +
  • the output shall be equal to TRUE.
  • BB Neighbouring blocks availability checking process tbd] is invoked with the current chroma location ( xCurr, yCurr ) set equal to ( xCb / SubWidthC, yCb / SubHeightC ) and the neighbouring chroma location ( xCb / SubWidthC + ( mvC[ xSbldx ][ ySbldx ][ 0 ] » 5 ) + cbWidth / SubWidthC - 1, yCb / SubHeightC + ( mvC[ xSbldx ][ ySbldx ][ 1 ] » 5 ) + cbHeight / SubHeightC - 1 ) as inputs, the output shall be equal to TRUE.
  • the prediction samples of the current coding unit are derived as follows:
  • ibc prediction samples that are an (cbWidth / 2)x(cbHeight / 2) array predSamplesa, of prediction chroma samples for the chroma components Cb as outputs.
  • predSamples that are an (cbWidth / 2)x(cbHeight / 2) array predSamplesc r of prediction chroma samples for the chroma components Cr as outputs.
  • NumSbX [ xCb ][ yCb ] and NumSbY[ xCb ][ yCb ] are set equal to numSbX and numSbY, respectively.
  • the residual samples of the current coding unit are derived as follows: - When treeType is equal to SINGLE TREE or treeType is equal to DUAL TREE LUMA, the decoding process for the residual signal of coding blocks coded in inter prediction mode as specified in clause 8.5.8 is invoked with the location ( xTbO, yTbO ) set equal to the luma location ( xCb, yCb ), the width nTbW set equal to the luma coding block width cbWidth, the height nTbH set equal to the luma coding block height cbHeight and the variable cldxset equal to 0 as inputs, and the array resSamples L as output.
  • the decoding process for the residual signal of coding blocks coded in inter prediction mode as specified in clause 8.5.8 is invoked with the location ( xTbO, yTbO ) set equal to the chroma location ( xCb / 2, yCb 1 2 ), the width nTbW set equal to the chroma coding block width cbWidth / 2, the height nTbH set equal to the chroma coding block height cbHeight / 2 and the variable cldxset equal to 1 as inputs, and the array resSamplesc b as output.
  • the decoding process for the residual signal of coding blocks coded in inter prediction mode as specified in clause 8.5.8 is invoked with the location ( xTbO, yTbO ) set equal to the chroma location ( xCb / 2, yCb 1 2 ), the width nTbW set equal to the chroma coding block width cbWidth / 2, the height nTbH set equal to the chroma coding block height cbHeight / 2 and the variable cldxset equal to 2 as inputs, and the array resSamplesc r as output.
  • the reconstructed samples of the current coding unit are derived as follows:
  • the picture reconstruction process for a colour component as specified in clause 8.7.5 is invoked with the block location ( xB, yB ) set equal to ( xCb, yCb ), the block width bWidth set equal to cbWidth, the block height bHeight set equal to cbHeight, the variable cldx set equal to 0, the (cbWidth)x(cbHeight) array predSamples set equal to predSamples L and the (cbWidth)x(cbHeight) array resSamples set equal to resSamples L as inputs, and the output is a modified reconstructed picture before in-loop filtering.
  • the picture reconstruction process for a colour component as specified in clause 8.7.5 is invoked with the block location ( xB, yB ) set equal to ( xCb / 2, yCb 12 ), the block width bWidth set equal to cbWidth / 2, the block height bHeight set equal to cbHeight / 2, the variable cldx set equal to 1, the (cbWidth / 2)x(cbHeight / 2) array predSamples set equal to predSamplesc b and the (cbWidth / 2)x(cbHeight / 2) array resSamples set equal to resSamplesc b as inputs, and the output is a modified reconstructed picture before in-loop filtering.
  • the picture reconstruction process for a colour component as specified in clause 8.7.5 is invoked with the block location ( xB, yB ) set equal to ( xCb / 2, yCb 12 ), the block width bWidth set equal to cbWidth / 2, the block height bHeight set equal to cbHeight / 2, the variable cldx set equal to 2, the (cbWidth / 2)x(cbHeight / 2) array predSamples set equal to predSamplesc r and the (cbWidth / 2)x(cbHeight / 2) array resSamples set equal to resSamplesc r as inputs, and the output is a modified reconstructed picture before in-loop filtering.
  • AMVR Adaptive motion vector resolution
  • MVDs motion vector differences
  • AMVR CU-level adaptive motion vector resolution
  • the MVDs of the current CU can be adaptively selected as follows:
  • -Normal AMVP mode quarter-luma-sample, integer-luma-sample or four-luma-sample.
  • -Affine AMVP mode quarter-luma-sample, integer-luma-sample or 1/16 luma-sample.
  • the CU-level MVD resolution indication is conditionally signalled if the current CU has at least one non-zero MVD component. If all MVD components (that is, both horizontal and vertical MVDs for reference list L0 and reference list LI) are zero, quarter-luma-sample MVD resolution is inferred.
  • a first flag is signalled to indicate whether quarter-luma-sample MVD precision is used for the CU. If the first flag is 0, no further signaling is needed and quarter-luma-sample MVD precision is used for the current CU. Otherwise, a second flag is signalled to indicate whether integer-luma-sample or four-luma- sample MVD precision is used for normal AMVP CU. The same second flag is used to indicate whether integer-luma-sample or 1/16 luma-sample MVD precision is used for affine AMVP CU.
  • the motion vector predictors for the CU will be rounded to the same precision as that of the MVD before being added together with the MVD.
  • the motion vector predictors are rounded toward zero (that is, a negative motion vector predictor is rounded toward positive infinity and a positive motion vector predictor is rounded toward negative infinity).
  • the encoder determines the motion vector resolution for the current CU using RD check.
  • VTM4 the RD check of MVD precisions other than quarter-luma-sample is only invoked conditionally.
  • the RD cost of quarter-luma-sample MVD precision and integer-luma sample MV precision is computed first. Then, the RD cost of integer-luma-sample MVD precision is compared to that of quarter-luma-sample MVD precision to decide whether it is necessary to further check the RD cost of four-luma-sample MVD precision.
  • affine AMVP mode if affine inter mode is not selected after checking rate-distortion costs of affine merge/skip mode, merge/skip mode, quarter-luma sample MVD precision normal AMVP mode and quarter-luma sample MVD precision affine AMVP mode, then 1/16 luma-sample MV precision and 1-pel MV precision affine inter modes are not checked. Furthermore affine parameters obtained in quarter-luma-sample MV precision affine inter mode is used as starting search point in 1/16 luma-sample and quarter-luma-sample MV precision affine inter modes.
  • palette mode The basic idea behind a palette mode is that the samples in the CU are represented by a small set of representative color values. This set is referred to as the palette. It is also possible to indicate a sample that is outside the palette by signaling an escape symbol followed by (possibly quantized) component values. This is illustrated in FIG. 3.
  • a palette predictor is maintained.
  • the maximum size of the palette as well as the palette predictor is signaled in the SPS.
  • HEVC-SCC a palette predictor for coding of the palette entries.
  • pal ette predi ctor initi al i zer present fl ag is introduced in the PPS.
  • this flag is 1, entries for initializing the palette predictor are signaled in the bitstream.
  • the palette predictor is initialized at the beginning of each CTU row, each slice and each tile.
  • the palette predictor is reset to 0 or initialized using the palette predictor intializer entries signaled in the PPS.
  • a palette predictor initializer of size 0 was enabled to allow explicit disabling of the palette predictor initialization at the PPS level.
  • a reuse flag is signaled to indicate whether it is part of the current palette. This is illustrated in FIG. 4.
  • the reuse flags are sent using run-length coding of zeros. After this, the number of new palette entries are signaled using exponential Golomb code of order 0. Finally, the component values for the new palette entries are signaled.
  • palette indices are coded using horizontal and vertical traverse scans as shown in FIG. 5.
  • the scan order is explicitly signaled in the bitstream using the palette transpose flag. For the rest of the subsection it is assumed that the scan is horizontal.
  • the palette indices are coded using two main palette sample modes: 'INDEX' and 'COPY ABOVE'.
  • the escape symbol is also signaled as an 'INDEX' mode and assigned an index equal to the maximum palette size.
  • the mode is signaled using a flag except for the top row or when the previous mode was 'COPY ABOVE'.
  • This syntax order is accomplished as follows. First the number of index values for the CU is signaled. This is followed by signaling of the actual index values for the entire CU using truncated binary coding. Both the number of indices as well as the the index values are coded in bypass mode. This groups the index-related bypass bins together. Then the palette sample mode (if necessary) and run are signaled in an interleaved manner. Finally, the component escape values corresponding to the escape samples for the entire CU are grouped together and coded in bypass mode. [00118] An additional syntax element, last run type flag, is signaled after signaling the index values. This syntax element, in conjunction with the number of indices, eliminates the need to signal the run value corresponding to the last run in the block.
  • each palette entry consists of 3 components.
  • the chroma samples are associated with luma sample indices that are divisible by 2. After reconstructing the palette indices for the CU, if a sample has only a single component associated with it, only the first component of the palette entry is used. The only difference in signaling is for the escape component values. For each escape sample, the number of escape component values signaled may be different depending on the number of components associated with that sample.
  • JVET-M0464 and JVET-N0280 several modifications are proposed on the coefficients coding in transform skip (TS) mode in order to adapt the residual coding to the statistics and signal characteristics of the transform skip levels.
  • Subblock CBFs The absence of the last significant scanning position signaling requires the subblock CBF signaling with coded sub block flag for TS to be modified as follows:
  • the coded sub block flag for the subblock covering the DC frequency position presents a special case.
  • the coded sub block flag for this subblock is never signaled and always inferred to be equal to 1.
  • the DC subblock may contain only zero/non significant levels although the coded sub block flag for this subblock is inferred to be equal to 1.
  • the coded sub block flag for each subblock is signaled. This also includes the coded sub block flag for the DC subblock except when all other coded sub block flag syntax elements are already equal to 0.
  • the context modeling for coded sub block flag is changed.
  • the context model index is calculated as the sum of the coded sub block flag to the left and the coded_sub_block_flag aboves the current subblock instead of and a logical disjunction of both.
  • sig coeff flag context modelling The local template in sig coeff flag context modeling is modified to only include the neighbor to the left (NBo) and the neighbor above (NBi) the current scanning position.
  • the context model offset is just the number of significant neighboring positions sig_coeff_flag[NBo] + sig_coeff_flag[NBi].
  • abs level gtl flag and par level flag context modelling a single context model is employed for abs level gtl flag and par level flag.
  • abs remainder coding Although the empirical distribution of the transform skip residual absolute levels typically still fits a Laplacian or a Geometrical distribution, there exist larger instationarities than for transform coefficient absolute levels. Particularly, the variance within a window of consecutive realization is higher for the residual absolute levels. This motivates the following modifications of the abs remainder syntax binarization and context modelling: [00131] o Using a higher cutoff value in the binarization, i.e., the transition point from the coding with sig coeff flag, abs level gtl flag, par level flag, and abs_level_gt3_flag to the Rice codes for abs remainder, and dedicated context models for each bin position yields higher compression efficiency.
  • the template for the rice parameter derivation is modified, i.e., only the neighbor to the left and the neighbor above the current scanning position are considered similar to the local template for sig coeff flag context modeling.
  • coeff sign flag context modelling Due to the instationarities inside the sequence of signs and the fact that the prediction residual is often biased, the signs can be coded using context models, even when the global empirical distribution is almost uniformly distributed. A single dedicated context model is used for the coding of the signs and the sign is parsed after sig coeff flag to keep all context coded bins together.
  • JVET-M0413 a quantized residual block differential pulse-code modulation (QR- BDPCM) is proposed to code screen contents efficiently.
  • QR- BDPCM quantized residual block differential pulse-code modulation
  • the prediction directions used in QR-BDPCM can be vertical and horizontal prediction modes.
  • the intra prediction is done on the entire block by sample copying in prediction direction (horizontal or vertical prediction) similar to intra prediction.
  • the residual is quantized and the delta between the quantized residual and its predictor (horizontal or vertical) quantized value is coded. This can be described by the following: For a block of size M (rows) c N (cols), let Ti j , 0 £ i £ M— 1, 0 ⁇ j ⁇ N— 1 be the prediction residual after performing intra prediction horizontally (copying left neighbor pixel value across the the predicted block line by line) or vertically (copying top neighbor line to each line in the predicted block) using unfiltered samples from above or left block boundary samples.
  • bdpcm_flag[ x0 ][ yO ] 1 specifies that a bdpcm dir flag is present in the coding unit including the luma coding block at the location ( xO, yO )
  • a CTU is split into CUs by using a quaternary-tree structure denoted as coding tree to adapt to various local characteristics.
  • the decision whether to code a picture area using inter-picture (temporal) or intra-picture (spatial) prediction is made at the leaf CU level.
  • Each leaf CU can be further split into one, two or four PUs according to the PU splitting type. Inside one PU, the same prediction process is applied and the relevant information is transmitted to the decoder on a PU basis.
  • a leaf CU After obtaining the residual block by applying the prediction process based on the PU splitting type, a leaf CU can be partitioned into transform units (TUs) according to another quaternary-tree structure similar to the coding tree for the CU.
  • transform units TUs
  • One of key feature of the HEVC structure is that it has the multiple partition conceptions including CU, PU, and TU.
  • a quadtree with nested multi-type tree using binary and ternary splits segmentation structure replaces the concepts of multiple partition unit types, i.e. it removes the separation of the CU, PU and TU concepts except as needed for CUs that have a size too large for the maximum transform length, and supports more flexibility for CU partition shapes.
  • a CU can have either a square or rectangular shape.
  • a coding tree unit (CTU) is first partitioned by a quaternary tree (a.k.a. quadtree) structure. Then the quaternary tree leaf nodes can be further partitioned by a multi-type tree structure. As shown in FIG.
  • the multi-type tree leaf nodes are called coding units (CUs), and unless the CU is too large for the maximum transform length, this segmentation is used for prediction and transform processing without any further partitioning.
  • CUs coding units
  • luma and chroma components have separate partition structures on I tiles.
  • JVET-K0353 and JVET-K0354 propose to signal a flag to determine whether to use the separate partition structures at CTU/CU level.
  • CCLM Cross-component linear model
  • pred c (i, j) represents the predicted chroma samples in a CU and rec L (i, j) represents the downsampled reconstructed luma samples of the same CU.
  • Linear model parameter a and b are derived from the relation between luma values and chroma values from two samples, which are luma sample with minimum sample value and with maximum sample inside the set of downsampled neighboring luma samples, and their corresponding chroma samples.
  • the linear model parameters a and b are obtained according to the following equations.
  • FIG. 8 shows an example of the location of the left and above samples and the sample of the current block involved in the CCLM mode.
  • VTM4 the number of directional intra modes in VTM4 is extended from 33, as used in HEVC, to 65.
  • the new directional modes not in HEVC are depicted as red dotted arrows in FIG. 9, and the planar and DC modes remain the same.
  • These denser directional intra prediction modes apply for all block sizes and for both luma and chroma intra predictions.
  • a unified 6-MPM list is proposed for intra blocks irrespective of whether MRL and ISP coding tools are applied or not.
  • the MPM list is constructed based on intra modes of the left and above neighboring block as in VTM4.0, as shown in FIG. 10.
  • MPM list Plant, Left , Left -1 , Left +1 , DC, Left -2 ⁇
  • MPM list Plant, DC, V, H, V-4, V+4 ⁇
  • the first MPM candidate i.e., the Planar mode is signaled separately from the remaining MPM candidates.
  • intra_luma mpm _flag[ xO ][ yO ] intra luma not planar _flag[ xO ][ yO ]
  • intra_luma_mpm_idx[ xO ][ yO ] and intra_luma_mpm_remainder[ xO ][ yO ] specify the intra prediction mode for luma samples.
  • the array indices xO, yO specify the location ( xO , yO ) of the top-left luma sample of the considered coding block relative to the top-left luma sample of the picture.
  • intra_luma_mpm_flag[ xO ][ yO ] is equal to 1, the intra prediction mode is inferred from a neighbouring intra-predicted coding unit according to clause 8.4.2.
  • intra_luma_mpm_flag[ xO ][ yO ] is not present (e.g., ISP enabled, or MRL enabled (with reference index > 0)), it is inferred to be equal to 1.
  • intra_luma_not_planar_flag[ xO ] [ yO ] is not present (e.g., MRL is enabled), it is inferred to be equal to 1.
  • variable cbWidth specifying the width of the current coding block in luma samples
  • variable cbHeight specifying the height of the current coding block in luma samples
  • the luma intra prediction mode IntraPrcdModcYI xCb ][ yCb ] is derived.
  • Table 8-1 specifies the value for the intra prediction mode IntraPrcdModcYI xCb
  • IntraPrcdModcYI xCb ][ yCb ] is derived as follows:
  • the neighbouring locations ( xNbA, yNbA ) and ( xNbB, yNbB ) are set equal to ( xCb - 1, yCb + cbHeight - 1 ) and ( xCb + cbWidth - 1, yCb - 1 ), respectively.
  • the candidate intra prediction mode candlntraPredModeX is derived as follows:
  • candlntraPredModeX is set equal to
  • variable availableX is equal to FALSE.
  • yCb - X is equal to B and yCb - 1 is less than ( ( yCb » CtbLog2SizeY ) « CtbLog2SizeY ).
  • candlntraPredModeX is set equal to IntraPrcdModcYI xNbX ][ yNbX ].
  • candlntraPredModeB is not equal to candlntraPredModeA and candlntraPredModeA or candlntraPredModeB is greater than INTRA DC, the following applies:
  • minAB Min( candlntraPredModeA, candlntraPredModeB ) (8-24)
  • maxAB Max( candlntraPredModeA, candlntraPredModeB ) (8-25)
  • IntraPredModeY[ xCb ][ yCb ] is derived by applying the following procedure:
  • IntraPredModeY[ xCb ][ yCb ] is set equal to candModcList
  • IntraPredModeY[ xCb ][ yCb ] is derived by applying the following ordered steps:
  • IntraPrcdModcYI xCb ][ yCb ] is derived by the following ordered steps:
  • is set equal to intra_luma_mpm_remainder[ xCb ] [ yCb ] .
  • IntraPrcdModcYI xCb ][ yCb ] is incremented by one iii.
  • IntraPrcdModcYI xCb ][ yCb ] is greater than or equal to candModeListf i ]
  • is incremented by one.
  • IntraPrcdModcYI xCb ][ yCb ] is set equal to INTRA PLANAR.
  • y yCb..yCb + cbHeight - 1 is set to be equal to IntraPrcdModcYI xCb ][ yCb ].
  • Multiple reference line (MRL) intra prediction uses more reference lines for intra prediction.
  • FIG. 11 an example of 4 reference lines is depicted, where the samples of segments A and F are not fetched from reconstructed neighboring samples but padded with the closest samples from Segment B and E, respectively.
  • HEVC intra-picture prediction uses the nearest reference line (i.e., reference line 0).
  • reference line 0 In MRL, 2 additional lines (reference line 1 and reference line 3) are used.
  • the index of selected reference line (mrl idx) is signalled and used to generate intra predictor. For reference line idx, which is greater than 0, only include additional reference line modes in MPM list and only signal mpm index without remaining mode.
  • the reference line index is signalled before intra prediction modes, and Planar and DC modes are excluded from intra prediction modes in case a nonzero reference line index is signalled.
  • MRL is disabled for the first line of blocks inside a CTU to prevent using extended reference samples outside the current CTU line. Also, PDPC is disabled when additional line is used.
  • the Intra Sub-Partitions (ISP) tool divides luma intra-predicted blocks vertically or horizontally into 2 or 4 sub-partitions depending on the block size. For example, minimum block size for ISP is 4x8 (or 8x4). If block size is greater than 4x8 (or 8x4) then the corresponding block is divided by 4 sub -partitions.
  • FIGS. 12A and 12B show examples of the two possibilities. All sub-partitions fulfill the condition of having at least 16 samples.
  • each sub-partition reconstructed samples are obtained by adding the residual signal to the prediction signal.
  • a residual signal is generated by the processes such as entropy decoding, inverse quantization and inverse transform. Therefore, the reconstructed sample values of each sub-partition are available to generate the prediction of the next sub -partition, and each sub-partition is processed repeatedly.
  • the first sub-partition to be processed is the one containing the top-left sample of the CU and then continuing downwards (horizontal split) or rightwards (vertical split).
  • reference samples used to generate the sub-partitions prediction signals are only located at the left and above sides of the lines. All sub-partitions share the same intra mode.
  • MRL Multiple Reference Line
  • Entropy coding coefficient group size the sizes of the entropy coding sub-blocks have been modified so that they have 16 samples in all possible cases, as shown in Table 1. Note that the new sizes only affect blocks produced by ISP in which one of the dimensions is less than 4 samples. In all other cases coefficient groups keep the 4 x 4 dimensions.
  • the CBF of the n-th sub-partition is inferred to be 1.
  • the MPM flag will be inferred to be one in a block coded by ISP mode, and the MPM list is modified to exclude the DC mode and to prioritize horizontal intra modes for the ISP horizontal split and vertical intra modes for the vertical one.
  • [00194] - MTS flag if a CU uses the ISP coding mode, the MTS CU flag will be set to 0 and it will not be sent to the decoder. Therefore, the encoder will not perform RD tests for the different available transforms for each resulting sub-partition.
  • the transform choice for the ISP mode will instead be fixed and selected according the intra mode, the processing order and the block size utilized. Hence, no signalling is required. For example, let t H and t v be the horizontal and the vertical transforms selected respectively for the w x h sub -partition, where w is the width and h is the height. Then the transform is selected according to the following rules:
  • VTM4 simplified 6-bit 4-tap Gaussian interpolation filter is used for only directional intra modes.
  • Non-directional intra prediction process is unmodified.
  • the selection of the 4-tap filters is performed according to the MDIS condition for directional intra prediction modes that provide non-fractional displacements, i.e. to all the directional modes excluding the following: 2,
  • the directional intra-prediction mode is classified into one of the following groups:
  • PDPC position dependent intra prediction combination
  • PDPC is an intra prediction method which invokes a combination of the un-filtered boundary reference samples and HEVC style intra prediction with filtered boundary reference samples.
  • PDPC is applied to the following intra modes without signaling: planar, DC, horizontal, vertical, bottom-left angular mode and its eight adjacent angular modes, and top-right angular mode and its eight adjacent angular modes.
  • R x,.i , R. ⁇ ,y represent the reference samples located at the top and left of current sample (x, y), respectively, and R. i,-i represents the reference sample located at the top-left comer of the current block.
  • FIGS. 13A-13D illustrate the definition of reference samples (R x,. i, R. ⁇ ,y and R- ⁇ - ⁇ ) for PDPC applied over various prediction modes.
  • the prediction sample pred (x’, y’) is located at (x’, y’) within the prediction block.
  • the reference samples R X . i andA-i , ⁇ could be located in fractional sample position. In this case, the sample value of the nearest integer sample location is used.
  • deblocking filtering process is mostly the same to those in HEVC.
  • a bilinear filter strong deblocking filter
  • a sample belonging to a large block is defined as when the width is larger than or equal to 32 for a vertical edge, and when height is larger than or equal to 32 for a horizontal edge.
  • tcPD t and tcPD j term is a position dependent clipping and g j , ft, Middle s t ,
  • condition 1 is the“large block condition”. This condition detects whether the samples at P-side and Q-side belong to large blocks.
  • the condition 2 and condition 3 are determined by:
  • VTM4 a triangle partition mode is supported for inter prediction.
  • the triangle partition mode is only applied to CUs that are 8x8 or larger and are coded in skip or merge mode but not in MMVD or CUP mode.
  • a CU-level flag is signalled to indicate whether the triangle partition mode is applied or not.
  • a CU is split evenly into two triangle-shaped partitions, using either the diagonal split or the anti-diagonal split (FIG. 14).
  • Each triangle partition in the CU is inter-predicted using its own motion; only uni -prediction is allowed for each partition, that is, each partition has one motion vector and one reference index.
  • the uni-prediction motion constraint is applied to ensure that same as the conventional bi-prediction, only two motion compensated prediction are needed for each CU.
  • the uni -prediction motion for each partition is derived from a uni -prediction candidate list constructed using the process in 3.4.10.1.
  • the CU-level flag indicates that the current CU is coded using the triangle partition mode. If triangle partition mode is used, then a flag indicating the direction of the triangle partition (diagonal or anti-diagonal), and two merge indices (one for each partition) are further signalled. After predicting each of the triangle partitions, the sample values along the diagonal or anti-diagonal edge are adjusted using a blending processing with adaptive weights. This is the prediction signal for the whole CU, and transform and quantization process will be applied to the whole CU as in other prediction modes. Finally, the motion field of a CU predicted using the triangle partition mode is stored in 4x4 units as in 2.16.3.
  • the uni -prediction candidate list consists of five uni -prediction motion vector candidates. It is derived from seven neighboring blocks including five spatial neighboring blocks (labelled 1 to 5 in FIG. 15) and two temporal co-located blocks (labelled 6 to 7 in FIG. 15).
  • the motion vectors of the seven neighboring blocks are collected and put into the uni -prediction candidate list according to the following order: first, the motion vectors of the uni-predicted neighboring blocks; then, for the bi-predicted neighboring blocks, the L0 motion vectors (that is, the L0 motion vector part of the bi-prediction MV), the LI motion vectors (that is, the LI motion vector part of the bi-prediction MV), and averaged motion vectors of the L0 and LI motion vectors of the bi-prediction MVs. If the number of candidates is less than five, zero motion vector is added to the end of the list.
  • the motion vectors of a CU coded in triangle partition mode are stored in 4x4 units. Depending on the position of each 4x4 unit, either uni -prediction or bi-prediction motion vectors are stored. Denote Mvl and Mv2 as uni -prediction motion vectors for partition 1 and partition 2, respectively. If a 4x4 unit is located in the non-weighted area shown in the example of FIG. 16, either Mvl or Mv2 is stored for that 4x4 unit. Otherwise, if the 4x4 unit is located in the weighted area, a bi-prediction motion vector is stored. The bi-prediction motion vector is derived from Mvl and Mv2 according to the following process:
  • Mv2 (or Mvl) is converted to a LI motion vector using that reference picture in LI. Then the two motion vectors are combined to form the bi-prediction motion vector;
  • Some coding tools e.g. IBC, intra prediction, Deblocking
  • IBC intra prediction
  • Deblocking Some coding tools (e.g. IBC, intra prediction, Deblocking) are designed without considering the feature of screen contents which may result in several problems as follows: [00244] (1) The chroma IBC is performed at sub block level and the chroma IBC flag is always signaled. The signaling of the chroma IBC flag may have redundancy when not all sub blocks have valid block vectors.
  • Intra prediction may be less efficient for screen contents coding due to the filtering process.
  • (3) PDPC may be less efficient for screen content.
  • RDPCM may be less efficient due to the dual tree structure
  • the IBC mode may prefer transform skip mode because both of them are designed for screen content coding.
  • Blending in the current TPM design may be inefficient for screen content.
  • TPM Triangular prediction mode
  • Whether to signal the indication of IBC mode for a chroma block may be based on whether IBC is enabled for one or multiple selected luma blocks.
  • whether to signal the indication of IBC mode for a chroma block may be based on whether IBC is enabled for one or multiple selected luma blocks.
  • signaling of the indication of IBC mode for a chroma block may be skipped when one or multiple of the selected luma blocks are not coded with IBC mode, e.g., when none of them are coded with IBC mode.
  • the indication of IBC mode for a chroma block may be signaled when at least one of the selected luma blocks is coded with IBC mode. i. Alternatively, the indication of IBC mode for a chroma block may be signaled when all of the selected luma blocks are coded with IBC mode. d. In one example, the size of the selected luma block may be the smallest
  • CU/PU/TU size or the unit for motion/mode storage (such as 4x4).
  • a selected luma block may be the CU/PU/TU covering the center, top left, top right, bottom left or bottom right position of the
  • FIG. 17 An example of a corresponding luma region is shown in the FIG. 17.
  • top -left coordinate of current chroma block is (xO, yO)
  • width and height of the current chroma block is wO and hO, respectively.
  • the coordinate of top-left sample in the corresponding luma region, width and height of the corresponding luma region may be scaled according to the color format.
  • collocated luma region is (2*x0, 2*y0), its width and height are 2*w0 and 2*h0, respectively.
  • collocated luma region is (xO, yO), its width and height are wO and hO, respectively.
  • coordinate of the center position may be:
  • coordinate of the top-right position may be:
  • coordinate of the bottom-left position may be:
  • coordinate of the bottom- right position may be:
  • Whether to signal the indication of IBC mode for a chroma block may be based on whether IBC is enabled for one or multiple selected luma blocks and chroma neighboring (adjacent or/and non-adjacent) blocks.
  • chroma components e.g., dual tree is enabled
  • the above method may be enabled.
  • signaling of the indication of IBC mode for a chroma block may be skipped when one or multiple of the selected luma blocks and chroma neighboring blocks are not coded with IBC mode, e.g., when none of them are coded with IBC mode. i. Alternatively, furthermore, when it is not signaled, usage of IBC mode of the chroma block may be inferred to be false.
  • the indication of IBC mode for a chroma block may be
  • the indication of IBC mode for a chroma block may be signaled when all of the selected luma blocks and chroma neighboring blocks are coded with IBC mode.
  • two chroma neighboring blocks may be utilized, such as the left and above in FIG. 10.
  • a default intra mode may be used to generate the prediction when IBC mode is inferred to be false or bv is invalid.
  • the intra mode indicated by a certain MPM intra mode may be used when IBC mode is inferred to be false or bv is invalid
  • the 1 st mode in MPM is used.
  • the 1 st available mode in MPM is used.
  • a predefined intra prediction mode may be used when IBC mode is inferred to be false or bv is invalid.
  • PLANNAR mode may be used.
  • DC mode may be used.
  • RDPCM mode may be used.
  • DM mode may be used for chroma block.
  • LM mode may be used for chroma block.
  • an intra mode to be used may be signaled in the
  • DP S/SPS/VPS/PPS/AP S/picture header/slice header/tile group header/ Largest coding unit (LCU)/Coding unit (CU)/LCU row/group of LCUs
  • the above method may be applied to chroma blocks, and the block vector of a chroma sub-block may be derived from the corresponding luma block or derived from the bitstream.
  • a bv of the corresponding luma block may be treated as invalid.
  • the bv may be treated as invalid.
  • a prediction block identified by a bv may be treated as invalid.
  • a prediction block identified by a bv may be treated as invalid.
  • a prediction block of an IBC-coded block may be filled with a default value. And whether to use default value or use a reference block pointed by a block vector for an IBC-coded chroma sub-block may depend on the availability of the sub-block.
  • a sub-block may be regarded as“unavailable” when it does not have a valid block vector or motion vector.
  • a sub-block may be
  • a sub-block may be unavailable if its corresponding luma block is coded with IBC mode but its motion vector or block vector is not valid for the current chroma sub block.
  • the chroma IBC may use a default value to fill up unavailable sub blocks only during the block copy process. The available sub blocks follow the original block copy process.
  • the chroma IBC may use a default value to fill up all sub
  • an unavailable sub block may denote it does not have a valid block vector or motion vector. 1) Alternatively, furthermore, in one example, a sub block may be unavailable if its corresponding luma block is not coded with IBC mode.
  • a sub block may be unavailable if its corresponding luma block is coded with IBC mode but its motion vector or block vector is not valid for the current sub block.
  • a default value may be an integer sample value (e.g. 128 or 512) and it may be based on
  • the default value may be signaled in a video unit, such as DPS/VPS/SPS/PPS/APS/slice header/tile group header/CTU/CU.
  • the motion/block vector of a block/sub-block/sample in a chroma IBC coded block may be derived based on the motion/block vectors of neighboring chroma blocks. a.
  • the above method may be applied.
  • the motion/block vector of a block/sub-block/sample in a chroma IBC coded block may be derived based on the left neighboring blocks. i.
  • the block vector may be copied from the block vector of the left neighboring block(s)
  • the motion/block vector of a block/sub-block/sample in a chroma IBC coded block may be derived based on the above neighboring blocks.
  • the block vector may be copied from the block vector of the above neighboring block(s) d.
  • multiple neighbouring chroma blocks may be checked orderly to find a block vector which is valid for the current chroma block.
  • the left neighboring blocks and above neighboring block may be the blocks marked as L and A, as shown in FIG. 18.
  • a neighboring block may be a basic block (such as 4x4 block) covering the position:
  • i. (x - 1, y + i), where i is an integer number and ranges from 0 to 2*H ii. (x + i, y - 1), where i is an integer number and ranges from 0 to 2*W Indication of the video content (e.g, screen or camera-captured) may be
  • Whether to apply and/or how to apply intra prediction process may be based on video contents.
  • the intra prediction may use the nearest integer sample of a sub-sample in the reference samples row or column as the prediction to replace the interpolation process based on video contents (e.g screen contents or natural contents).
  • the PDPC may be disabled based on video contents (e.g screen contents or natural contents).
  • the intra reference smoothing may be disabled based on video contents (e.g screen contents or natural contents).
  • matrix-based intra prediction may be disabled for screen content.
  • Whether to apply and/or how to apply inter predictions process may be based on video contents.
  • the AMVR may be disabled based on video contents (e.g screen contents or natural contents).
  • the fractional motion vectors may be not allowed based on video contents (e.g screen contents or natural contents).
  • BDOF may be disabled for screen content
  • DMVR may be disabled for screen content
  • affine motion compensation may be disabled for screen content
  • the blending process (e.g., the weighted predictions derived from motion information of two partitions for the weighted area as defined in section 2.16.2) in the TPM may be disabled for screen contents.
  • samples in the weighted area are treated in the same way as one of the two partitions, i.e., with uni -prediction according to the motion information of one the two partitions.
  • a and B be the motion compensated blocks obtained from the motion information of partition 0 and partition 1, respectively.
  • the partition 0 and partition 1 are shown in FIGS. 19A and 19B under diagonal and anti-diagonal split directions, respectively.
  • the weights of A and B may be 1 and 0, respectively.
  • this method may be applied.
  • the weights of A and B may be 0 and 1, respectively.
  • this method may be applied.
  • each sample may select its weights for A and B instead of being restricted to be within a partition.
  • the A and B weights for that position may be ⁇ 1, 0 ⁇ or ⁇ 0, 1 ⁇ .
  • weighted area and/or non-weighted area may be fixed, such as using sub-bullet a.
  • splitting direction such as according to sub-bullet b.
  • the decoded information may be the decoded merge indices.
  • weights for B may be set to M.
  • the decoded information may be the reference picture/motion information.
  • MVO is smaller than MV1 may be defined as abs(MV0.x) + abs(MV0.y) ⁇ abs(MVl.x) + abs(MVl.y) where the x and y are the horizontal and vertical components of a MV and abs is an operation to get the absolute value of an input.
  • MVO is smaller than MV1 may be defined as max(abs(MV0.x), abs(MV0.y)) ⁇ max(abs(MVl.x), abs(MVl.y)) where the x and y are the horizontal and vertical components of a MV, max is an operation to get a larger one from two inputs and abs is an operation to get the absolute value of an input.
  • the decoded information may be where the merge candidates are derived from (e.g., from which spatial neighboring block or from temporal or HMVP).
  • equal weights may be applied to samples in the weighted area.
  • the weighted area may only include the samples located at the diagonal/anti-diagonal lines of a block. a. Alternatively, the weighted area may be the whole block.
  • the above methods may be performed at sub block level.
  • the above methods may be applied on the sub blocks with certain positions.
  • the above methods may be applied on the samples in the sub blocks containing the samples located on the diagonal or anti-diagonal lines (as the weighted area, marked as grey regions in Fig.23 A-C)
  • the number of weighting lines in the blending process in the TPM may be reduced for screen contents.
  • the number of weighting lines for luma and chroma blocks may be N and M diagonal or anti -diagonal lines, at least one of the two conditions is true: N is smaller than 7, M is smaller than 3.
  • the M may remain 3 and the N may be 3 as well.
  • the current blending process on chroma blocks may be applied on luma blocks as well.
  • M and N may be based on i.
  • Video contents e.g. screen contents or natural contents
  • ii. A message signaled in the
  • DP S/SPS/VPS/PPS/AP S/picture header/slice header/tile group header/ Largest coding unit (LCUyCoding unit (CU)/LCU row/group of LCUs/TU/PU
  • Whether to apply and/or how to apply deblocking may be based on video contents.
  • the long tap filters may be disabled based on video contents (e.g screen contents or natural contents).
  • the deblocking filters may be disabled based on video contents (e.g screen contents or natural contents).
  • MvInfoO and Mvlnfol are corresponding to the motion information of partition 0 and partition 1, respectively, in FIGS. 19A and 19B.
  • the uni-prediction information may be
  • the uni-prediction information may be derived from MvInfoO and/or Mvlnfol.
  • the motion information to be stored may be determined by the following rules:
  • the rule includes the reference picture indices/MV values/POC values of reference pictures.
  • MvInfoO may be stored.
  • MvInfoO may be stored.
  • MVO is no larger than MV1
  • the above methods may be only applied to sub-blocks at certain positions, such as sub-blocks which contains samples located on the diagonal or anti-diagonal lines (The grey regions in FIG. 20).
  • the above methods may be only applied to sub-blocks at the weighted area, such as those depicted in FIGS. 21A-21C.
  • the above methods may be applied when bullet 7 is applied. e. In one example, the above methods may be applied under conditions, such as when the video content is screen content or when a flag that indicates these methods are enabled.
  • Triangular Prediction Mode is conditionally enabled for a video unit with uni prediction (e.g., P pictures/slices/tiles/bricks/independent sub-region/CU/PU).
  • an indication of allowing TPM for a video unit may be conditionally signaled when each sample within one TPM-coded block is predicted from only one set of motion information and for each unit for motion storage, only one set of motion information.
  • an indication of allowing TPM for a video unit may be conditionally signaled.
  • the conditions may include: 1) when the flag which disables TPM blending or screen content is true and 2) current video unit is uni -prediction.
  • TPM may be applied in different ways, e.g., the motion storage and/or motion compensation (e.g., how to apply blending) may be adaptively changed.
  • the way how to enable/apply TPM may be dependent on prediction unit (e.g., uni- or bi-prediction).
  • Whether to enable RDPCM may depend on the coding tree structure type.
  • the coding tree structure type e.g., dual tree
  • signaling of indication of RDPCM mode and/or other syntax related to RDPCM mode may be skipped and the RDPCM information may be inferred.
  • the indication of the RDPCM mode may be inferred as false when dual coding tree structure type is applied. Whether to enable QR-BDPCM may depend on the coding tree structure type.
  • the coding tree structure type e.g., dual tree
  • QR-BDPCM mode may be skipped and the QR-BDPCM information may be inferred.
  • the indication of the QR-BDPCM mode may be inferred as false when dual coding tree structure type is applied.
  • Whether to enable CCLM may depend on the coding tree structure type.
  • the coding tree structure type e.g., dual tree
  • signaling of indication of CCLM mode and/or other syntax related to CCLM mode may be skipped and the CCLM information may be inferred.
  • the indication of the CCLM mode may be inferred as false when dual coding tree structure type is applied.
  • transform skip (TS) mode may be always applied a.
  • the indication of TS mode may be inferred to be true when the prediction mode is IBC of a certain size
  • the indication of TS mode may be inferred to be false when the prediction mode is IBC.
  • TS mode may always be applied.
  • iii In one example, for IBC block with size larger than 32x32, TS mode may always be applied.
  • usage of DCT transform may be inferred to be false when the prediction mode is IBC of a certain size.
  • usage of DCT transform may be inferred to be true when the prediction mode is IBC.
  • transform skip (TS) mode could be applied.
  • the transform skip could be applied on when the prediction mode is IBC of a certain size. (e.g. a 64x64 block coded with IBC mode)
  • a predefined transform including identity transform, i.e. transform skip
  • a predefined transform may be always applied.
  • a predefined transform may be always applied as the horizontal transform. i.
  • TS may be always applied as the horizontal transform.
  • DCT2 may be always applied as the horizontal transform.
  • T1 is equal to 16.
  • T2 is equal to 4.
  • TS may be always applied as the vertical transform.
  • TS may be always applied as the vertical transform.
  • DCT2 may be always applied as the vertical
  • T3 is equal tol6.
  • T4 is equal to 4.
  • the threshold may be signal in the DPS/SPS/VPS/PPS/APS/picture
  • LCU Largest coding unit
  • CU Coding unit
  • Whether to the above mechanism may be controlled by a flag signaled in the DPS/SPS/VPS/PPS/APS/picture header/slice header/tile group header/ Largest coding unit (LCU)/Coding unit (CU)/LCU row/group of LCUs.
  • LCU Largest coding unit
  • CU Coding unit
  • ether to and/or how to apply above methods may be based on:
  • Video contents e.g. screen contents or natural contents
  • LCU Largest coding unit
  • CU Coding unit
  • Color component e.g. may be only applied on chroma components or luma component
  • pred mode chroma ibc flag 1 specifies that the current chorma coding unit is codec in IBC prediction mode when dual tree is enabled
  • pred mode chroma ibc flag 0 specifies that the current coding unit is not coded in IBC prediction mode.
  • pred mode ibc flag When pred mode ibc flag is not present, it is inferred as follows:
  • pred mode chroma ibc flag is infered to be equal to the value of
  • sps_ ⁇ tp m _blending_off ⁇ flag 1 specifies that bledning process is replaced by directly copying.
  • sps tpm blending off flag is not present, it is inferred to be equal to 0.
  • slice_ ⁇ tpm_blending_off ⁇ _flag 1 specifies that bledning process is replaced by directly copying.
  • slice scc flag is not present, it is inferred to be equal to 0.
  • variable refH specifying the reference samples height
  • x -1 - refldx
  • y -1 - refldx.. refH - 1
  • x -refldx.. refW - 1
  • y -1 - refldx
  • variable cldx specifying the colour component of the current block.
  • x -1 - refldx
  • y -1 - refldx.. refH - 1
  • x -refldx.. refW - 1
  • y -1 - refldx.
  • variable filterFlag is derived as follows: - If all of the following conditions are true, filterFlag is set equal to 1
  • nTbW * nTbH is greater than 32
  • nTbH is greater than or equal to nTbW
  • - predModelntra is equal to INTRA ANGULAR66 and nTbW is greater than or equal to nTbH
  • filterFlag is set equal to 0.
  • variable refH specifying the reference samples height
  • variable cldx specifying the colour component of the current block.
  • Outputs of this process are the modified predicted samples predSamples[ x ][ y ] with
  • cliplCmp is set equal to Clip 1 > . - Otherwise, cliplCmp is set equal to Cliplc.
  • nScale is set to ( ( Log2( nTbW ) + Log2( nTbH ) - 2 ) » 2 ) .
  • mainRef[ x ] p[ x ][ -1 ] (8-226)
  • predModelntra is equal to INTRA PLANAR or INTRA DC, the following applies:
  • predModelntra is equal to INTRA ANGULARl 8 or INTRA_ANGULAR50, the following applies:
  • predModelntra is equal to INTRA_ANGULAR2 or INTRA_ANGULAR66, the following applies:
  • predSamplesf x ][ y ] cliplCmp( ( refL[ x ][ y ] * wL[ x ] + refT[ x ][ y ] * wT[ y ] - p[ -l ][ -l ] * wTL[ x ][ y ] + (8-254) ( 64 - wL[ x ] - wT[ y ] + wTL[ x ][ y ] ) * predSamplesf x ][ y ] + 32 )
  • variable refH specifying the reference samples height
  • nTbS is set equal to ( Log2 ( nTbW ) + Log2 ( nTbH ) ) » 1.
  • the reference sample array ref[ x ] is specified as follows:
  • index variable ildx ( ( y + 1 + refldx ) * intraPredAngle ) » 5 + refldx (8-137)
  • iFact ( ( y + 1 + refldx ) * intraPredAngle ) & 31 (8-138)
  • tile_group_scc_flag 1
  • predSamples ⁇ x ][ y ] is set to ref[ x + ildx + 1 ]
  • the reference sample array ref[ x ] is specified as follows:
  • index variable ildx and the multiplication factor iFact are derived as follows:
  • ildx ( ( x + 1 + refldx ) * intraPredAngle ) » 5 (8-150)
  • iFact ( ( x + 1 + refldx ) * intraPredAngle ) & 31 (8-151)
  • fT[ j ] filterFlag ? fG[ iFact ][ j ] : fC[ iFact ][ j ] (8-152)
  • predSamples ⁇ x ][ y ] is set to ref[ x + ildx + 1 ]
  • nCbW specifying the width of the current coding block
  • nCbH specifying the height of the current coding block
  • variable edgeType specifying whether a vertical (EDGE VER) or a horizontal (EDGE HOR) edge is fdtered.
  • edgeType is equal to EDGE VER, the following applies:
  • variable numEdges is set equal to Max( 1, nCbW / 8 ).
  • the horizontal position x inside the current coding block is set equal to xEdge *8.
  • edgeFlagsf x ][ y ] is derived as follows:
  • maxFilterLengthQs [ x ][ y ] is derived as follows: - If the width in luma samples of the transform block at luma location
  • maxFilterLengthQs[ x ][ y ] is set equal to 3.
  • maxFilterLengthPsf x ][ y ] is set equal to 3.
  • edgeType is equal to EDGE HOR
  • variable muuEdges is set equal to Max( 1, nCbH / 8 ).
  • the vertical position y inside the current coding block is set equal to yEdge *8.
  • edgeFlagsf x ][ y ] is derived as follows:
  • maxFilterLengthQsf x ][ y ] is set equal to 3.
  • maxFilterLengthPsf x ][ y ] is set equal to 3.
  • nCbW and nCbH specifying the width and the height of the current coding block, two (nCbW)x(nCbH) arrays predSamplesLA and predSamplesLB,
  • Output of this process is the (nCbW)x(nCbH) array pbSamples of prediction sample values.
  • nCbR The variable nCbR is derived as follows:
  • nCbR ( nCbW > nCbH ) ? ( nCbW / nCbH ) : ( nCbH / nCbW ) (8-820)
  • variable bitDepth is derived as follows:
  • bitDepth is set equal to BitDeptli Y .
  • bitDepth is set equal to BitDepthc.
  • variable shiftl is set equal to Max( 5, 17 - bitDepth).
  • variable offsetl is set equal to 1 « ( shiftl - 1 ).
  • variable wldx is derived as follows:
  • triangleDir is equal to 0 and x ⁇ y or triangleDir is equal to 1 and x + y ⁇ nCbW)
  • pbSamples[ x ][ y ] predSamplesLB[ x ][ y ]
  • tile_group_scc_flag 0
  • a luma location ( xCb, yCb ) specifying the top-left sample of the current coding block relative to the top-left luma sample of the current picture
  • variable cbWidth specifying the width of the current coding block in luma samples
  • variable cbHeight specifying the height of the current coding block in luma samples
  • the luma motion vectors in 1/16 fractional -sample accuracy mvA and mvB
  • the prediction list flags predListFlagA and predListFlagB.
  • predSamplesLA L and predSamplesLB L be (cbWidth)x(cbHeight) arrays of predicted luma sample values and, predSamplesLAc b , predSamplesLBc b , predSamplesLAcr and predSamplesLBcr be
  • predSamples L predSamplesa, and predSamplescr are derived by the following ordered steps:
  • the reference picture consisting of an ordered two-dimensional array refPicLN L of luma samples and two ordered two-dimensional arrays refPicLNo, and refPicLNcr of chroma samples is derived by invoking the process specified in clause 8.5.6.2 with X set equal to predListFlagN and refldxX set equal to refldxN as input.
  • the array predSamplesLN L is derived by invoking the fractional sample interpolation process specified in clause 8.5.6.3 with the luma location ( xCb, yCb ), the luma coding block width sbWidth set equal to cbWidth, the luma coding block height sbHeight set equal to cbHeight, the motion vector offset mvOffset set equal to ( 0, 0 ), the motion vector mvLX set equal to mvN and the reference array refPicLX L set equal to refPicLN L , the variable bdofFlag set euqal to FALSE, and the variable cldx is set equal to 0 as inputs.
  • the array predSamplesLNc b is derived by invoking the fractional sample interpolation process specified in clause 8.5.6.3 with the luma location ( xCb, yCb ), the coding block width sbWidth set equal to cbWidth / 2, the coding block height sbHeight set equal to cbHeight / 2, the motion vector offset mvOffset set equal to ( 0, 0 ), the motion vector mvLX set equal to mvCN, and the reference array refPicLXa, set equal to refPicLNo, the variable bdofFlag set euqal to FALSE, and the variable cldx is set equal to 1 as inputs.
  • the array predSamplesLNc r is derived by invoking the fractional sample interpolation process specified in clause 8.5.6.3 with the luma location ( xCb, yCb ), the coding block width sbWidth set equal to cbWidth / 2, the coding block height sbHeight set equal to cbHeight / 2, the motion vector offset mvOffset set equal to ( 0, 0 ), the motion vector mvLX set equal to mvCN, and the reference array refPicLXcr set equal to refPicLNcr, the variable bdofFlag set euqal to FALSE, and the variable cldx is set equal to 2 as inputs.
  • the motion vector storing process for merge triangle mode specified in clause 8.5.7.3 is invoked with the luma coding block location ( xCb, yCb ), the luma coding block width cbWidth, the luma coding block height cbHeight, the partition direction triangleDir, the luma motion vectors mvA and mvB, the reference indices refldxA and refldxB, and the prediction list flags predListFlagA and predListFlagB as inputs.
  • nCbW and nCbH specifying the width and the height of the current coding block, two (nCbW)x(nCbH) arrays predSamplesLA and predSamplesLB,
  • variable refldxl specifying the reference index of the prediction block B ⁇ ⁇
  • Output of this process is the (nCbW)x(nCbH) array pbSamples of prediction sample values.
  • nCbR The variable nCbR is derived as follows:
  • nCbR ( nCbW > nCbH ) ? ( nCbW / nCbH ) : ( nCbH / nCbW ) (8-820)
  • bitDepth is derived as follows: - If cldx is equal to 0, bitDepth is set equal to BitDeptli Y .
  • bitDepth is set equal to BitDepthc.
  • variable shiftl is set equal to Max( 5, 17 - bitDepth).
  • variable offsetl is set equal to 1 « ( shiftl - 1 ).
  • variable wldx is derived as follows:
  • variable wValue specifying the weight of the prediction sample is derived using wldx and cldx as follows:
  • triangleDir is equal to 1
  • nCbW and nCbH specifying the width and the height of the current coding block, two (nCbW)x(nCbH) arrays predSamplesLA and predSamplesLB,
  • Output of this process is the (nCbW)x(nCbH) array pbSamples of prediction sample values.
  • nCbR The variable nCbR is derived as follows:
  • nCbR ( nCbW > nCbH ) ? ( nCbW / nCbH ) : ( nCbH / nCbW ) (8-820)
  • variable bitDepth is derived as follows:
  • bitDepth is set equal to BitDeptli Y .
  • bitDepth is set equal to BitDepthc.
  • variable shiftl is set equal to Max( 5, 17 - bitDepth).
  • variable offsetl is set equal to 1 « ( shiftl - 1 ).
  • variable wldx is derived as follows:
  • variable wValue specifying the weight of the prediction sample is derived using wldx and cldx as follows:
  • triangleDir is equal to 1
  • a luma location ( xCb, yCb ) specifying the top-left sample of the current coding block relative to the top-left luma sample of the current picture
  • variable cbWidth specifying the width of the current coding block in luma samples
  • variable cbHeight specifying the height of the current coding block in luma samples
  • the luma motion vectors in 1/16 fractional -sample accuracy mvA and mvB
  • the prediction list flags predListFlagA and predListFlagB.
  • predSamplesLA L and predSamplesLB L be (cbWidth)x(cbHeight) arrays of predicted luma sample values and, predSamplesLAc b , predSamplesLBc b , predSamplesLAcr and predSamplesLBcr be
  • predSamples L predSampleso, and predSampleso are derived by the following ordered steps:
  • the reference picture consisting of an ordered two-dimensional array refPicLN L of luma samples and two ordered two-dimensional arrays refPicLNo, and refPicLNo of chroma samples is derived by invoking the process specified in clause 8.5.6.2 with X set equal to predListFlagN and refldxX set equal to refldxN as input.
  • the array predSamplesLN L is derived by invoking the fractional sample interpolation process specified in clause 8.5.6.3 with the luma location ( xCb, yCb ), the luma coding block width sbWidth set equal to cbWidth, the luma coding block height sbHeight set equal to cbHeight, the motion vector offset mvOffset set equal to ( 0, 0 ), the motion vector mvLX set equal to mvN and the reference array refPicLX L set equal to refPicLN L , the variable bdofFlag set euqal to FALSE, and the variable cldx is set equal to 0 as inputs.
  • the array predSamplesLNc b is derived by invoking the fractional sample interpolation process specified in clause 8.5.6.3 with the luma location ( xCb, yCb ), the coding block width sbWidth set equal to cbWidth / 2, the coding block height sbHeight set equal to cbHeight / 2, the motion vector offset mvOffset set equal to ( 0, 0 ), the motion vector mvLX set equal to mvCN, and the reference array refPicLXo, set equal to refPicLNo, the variable bdofFlag set euqal to FALSE, and the variable cldx is set equal to 1 as inputs.
  • the array predSamplesLNc r is derived by invoking the fractional sample interpolation process specified in clause 8.5.6.3 with the luma location ( xCb, yCb ), the coding block width sbWidth set equal to cbWidth / 2, the coding block height sbHeight set equal to cbHeight / 2, the motion vector offset mvOffset set equal to ( 0, 0 ), the motion vector mvLX set equal to mvCN, and the reference array refPicLXcr set equal to refPicLNcr, the variable bdofFlag set euqal to FALSE, and the variable cldx is set equal to 2 as inputs.
  • the motion vector storing process for merge triangle mode specified in clause 8.5.7.3 is invoked with the luma coding block location ( xCb, yCb ), the luma coding block width cbWidth, the luma coding block height cbHeight, the partition direction triangleDir, the luma motion vectors mvA and mvB, the reference indices refldxA and refldxB, and the prediction list flags predListFlagA and predListFlagB as inputs.
  • nCbW and nCbH specifying the width and the height of the current coding block, two (nCbW)x(nCbH) arrays predSamplesLA and predSamplesLB,
  • variable MVb specifying the motion vector of the prediction block B ⁇ ⁇
  • Output of this process is the (nCbW)x(nCbH) array pbSamples of prediction sample values.
  • nCbR ( nCbW > nCbH ) ? ( nCbW / nCbH ) : ( nCbH / nCbW ) (8-820)
  • variable bitDepth is derived as follows:
  • bitDepth is set equal to BitDeptli Y .
  • bitDepth is set equal to BitDepthc.
  • variable shiftl is set equal to Max( 5, 17 - bitDepth).
  • variable offsetl is set equal to 1 « ( shiftl - 1 ).
  • variable wldx is derived as follows:
  • variable wValue specifying the weight of the prediction sample is derived using wldx and cldx as follows:
  • triangleDir is equal to 1
  • nCbW and nCbH specifying the width and the height of the current coding block, two (nCbW)x(nCbH) arrays predSamplesLA and predSamplesLB,
  • variable MVb specifying the motion vector of the prediction block B ⁇ ⁇
  • Output of this process is the (nCbW)x(nCbH) array pbSamples of prediction sample values.
  • nCbR The variable nCbR is derived as follows:
  • nCbR ( nCbW > nCbH ) ? ( nCbW / nCbH ) : ( nCbH / nCbW ) (8-820)
  • variable bitDepth is derived as follows:
  • bitDepth is set equal to BitDepthY.
  • bitDepth is set equal to BitDepthC.
  • variable shiftl is set equal to Max( 5, 17 - bitDepth).
  • variable offsetl is set equal to 1 « ( shiftl - 1 ).
  • xldx ( cbWidth > cbHeight ) ? ( xSbldx / nCbR) : xSbldx (8-813)
  • yldx ( cbWidth > cbHeight ) ? ySbldx : ( ySbldx / nCbR) (8-814)
  • variable sType is derived as follows:
  • variable wldx is derived as follows:
  • variable wValue specifying the weight of the prediction sample is derived using wldx and cldx as follows:
  • the prediction sample values are derived as follows
  • nCbW and nCbH specifying the width and the height of the current coding block

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

Devices, systems and methods for intra block copy (IBC) for screen content coding for video coding are described. An exemplary method for video processing includes performing a conversion between a current video block of a current picture of a chroma component of a video and a bitstream representation of the video, wherein the bitstream representation conforms to a format rule, and wherein the format rule specifies that an indication of a use of an IBC mode for the current video block is selectively included in the bitstream representation based on whether one of more luma blocks corresponding to the current video block are coded in the bitstream representation using the IBC mode, wherein the IBC mode comprises use of a prediction of the current video block based on samples from the current picture.

Description

INTRA BLOCK COPY FOR SCREEN CONTENT CODING
CROSS-REFERENCE TO RELATED APPLICATIONS
[001] Under the applicable patent law and/or rules pursuant to the Paris Convention, this application is made to timely claim the priority to and benefits of International Patent
Application Nos. PCT/CN2019/087235 filed on May 16, 2019, PCT/CN2019/087993 filed on May 22, 2019, PCT/CN2019/090265 filed on June 6, 2019, PCT/CN2019/092153 filed on June 20, 2019, PCT/CN2019/092833 filed on June 25, 2019, and PCT/CN2019/095158 filed on July 8, 2019. For all purposes under the U.S. law, the entire disclosures of the aforementioned applications are incorporated by reference as part of the disclosure of this application.
TECHNICAL FIELD
[002] This document is related to video and image coding technologies.
BACKGROUND
[003] Digital video accounts for the largest bandwidth use on the internet and other digital communication networks. As the number of connected user devices capable of receiving and displaying video increases, it is expected that the bandwidth demand for digital video usage will continue to grow.
SUMMARY
[004] Devices, systems and methods related to digital video coding, and specifically, to intra block copy (IBC) for screen content coding for video coding are described. The described methods may be applied to both the existing video coding standards (e.g., High Efficiency Video Coding (HEVC)) and future video coding standards (e.g., Versatile Video Coding (VVC)) or codecs.
[005] In one exemplary aspect, a method of video processing is disclosed. The method includes performing a conversion between a current video block of a current picture of a chroma component of a video and a bitstream representation of the video, wherein the bitstream representation conforms to a format rule, and wherein the format rule specifies that an indication of a use of an intra block copy (IBC) mode for the current video block is selectively included in the bitstream representation based on whether one of more luma blocks corresponding to the current video block are coded in the bitstream representation using the IBC mode, wherein the IBC mode comprises use of a prediction of the current video block based on samples from the current picture.
[006] In another exemplary aspect, a method of video processing is disclosed. The method includes determining, for a current video block of a video, that a use of an intra block copy (IBC) mode for the current video block is disabled or a block vector corresponding to the current video block is invalid, generating, based on the determining, a prediction for the current video block using a default intra mode, and performing, based on the prediction, a conversion between the current video block and a bitstream representation of the video.
[007] In yet another exemplary aspect, a method of video processing is disclosed. The method includes selectively enabling, for a conversion between a current video block of a video and a bitstream representation of the video, an intra block copy (IBC) mode for the current video block, and performing, subsequent to the selectively enabling, the conversion, wherein the current video block comprises one or more sub-blocks, and wherein at least one of the sub blocks are associated with invalid block vectors.
[008] In yet another exemplary aspect, a method of video processing is disclosed. The method includes performing a conversion between a current video block of a current picture of a video and a bitstream representation of the video, wherein the current video block is represented in the bitstream representation using an intra block copy mode based on prediction from a prediction block, and wherein the prediction block comprises pixels having a default value.
[009] In yet another exemplary aspect, a method of video processing is disclosed. The method includes deriving, for a chroma video block that is coded using an intra block copy (IBC) mode, a motion vector or a block vector of the chroma video block based on a motion vector or a block vector of a neighboring chroma block, and performing, based on the deriving, a conversion between the chroma video block and a bitstream representation of the video.
[0010] In yet another exemplary aspect, a method of video processing is disclosed. The method includes making a determination that a current video block is from a video unit of a video having a content type, and performing, based on the determination, a conversion between the current video block and the bitstream representation of the video, wherein the content type is indicated in the bitstream representation at the video unit level, and wherein a coding tool is selectively available for the conversion depending on the content type based on a rule.
[0011] In yet another exemplary aspect, a method of video processing is disclosed. The method includes storing, for a current video block that is coded using a triangular partition mode (TPM), uni -prediction information for at least one sub-block of the current video block, and performing, using the uni -prediction information, a conversion between the current video block of a video and a bitstream representation of the video.
[0012] In yet another exemplary aspect, a method of video processing is disclosed. The method includes making a decision, based on a coding tree structure of a current video block, regarding a selective enablement of coding mode to the current video block, and performing, based on the decision, a conversion between the current video block and the bitstream representation of the current video block.
[0013] In yet another exemplary aspect, a method of video processing is disclosed. The method includes determining, based on a size of a current video block of a video that is coded using an intra block copy (IBC) mode, a predefined transform, and performing, based on the determining, a conversion between the current video block and a bitstream representation of the video, wherein the conversion comprises applying, during encoding, the predefined transform between an IBC prediction of the current video block and a residual coding in the bitstream
representation, or applying, during decoding, an inverse of the predefined transform between a residual of the current video block coded in the bitstream representation and a reconstructed IBC.
[0014] In yet another exemplary aspect, a method of video processing is disclosed. The method includes conditionally enabling, for a current video block of a video, a triangular prediction mode (TPM) for the current video block with uni -prediction, and performing, subsequent to the conditionally enabling, a conversion between the current video block and a bitstream
representation of the video, wherein the TPM comprises splitting the current video block into multiple sub-blocks, at least one having a non-square shape.
[0015] In yet another example aspect, the above-described method may be implemented by a video encoder apparatus that comprises a processor.
[0016] In yet another example aspect, these methods may be embodied in the form of processor-executable instructions and stored on a computer-readable program medium. [0017] These, and other, aspects are further described in the present document.
BRIEF DESCRIPTION OF THE DRAWINGS
[0018] FIG. 1 shows an example of intra block copy.
[0019] FIG. 2 shows an example of five spatial neighboring candidates.
[0020] FIG. 3 shows an example of a block coded in palette mode.
[0021] FIG. 4 shows an example of use of a palette predictor to signal palette entries.
[0022] FIG. 5 shows an example of horizontal and vertical traverse scans.
[0023] FIG. 6 shows an example of coding of palette indices.
[0024] FIG. 7 shows an example of multi-type tree splitting modes.
[0025] FIG. 8 shows an example of samples used to derive parameters in a cross-component linear model (CCLM) prediction mode.
[0026] FIG. 9 shows an example of 67 intra prediction modes.
[0027] FIG. 10 shows an example of the left and above neighbors of a current block.
[0028] FIG. 11 shows an example of four reference lines neighboring a prediction block.
[0029] FIG. 12A shows an example of divisions of 4x8 and 8x4 blocks for an intra sub partition method.
[0030] FIG. 12B shows an example of divisions all blocks except 4x8, 8x4 and 4x4 for an intra sub partition method.
[0031] FIGS. 13A-3D show examples of samples used by a position dependent intra prediction combination (PDPC) method applied to diagonal and adjacent angular intra modes.
[0032] FIG. 14 shows an example of a triangle partition based inter prediction.
[0033] FIG. 15 shows an example of spatial and temporal neighboring blocks used to construct a uni -prediction candidate list.
[0034] FIG. 16 shows an example of the weights used in a blending process.
[0035] FIG. 17 shows an example of a selected luma block covering a luma region.
[0036] FIG. 18 shows examples of left and above neighboring blocks.
[0037] FIGS. 19A and 19B show examples of diagonal and anti-diagonal partitions in the triangular partitioning mode (TPM), respectively. [0038] FIG. 20 show an example of sub-blocks which contains samples located on the diagonal or anti-diagonal lines.
[0039] FIG. 21 A show an example of sub-blocks which contains samples located on the diagonal or anti-diagonal lines of a block with its width larger than height.
[0040] FIG. 21B show an example of sub-blocks which contains samples located on the diagonal or anti-diagonal lines of a block with its width smaller than height.
[0041] FIG. 21C show an example of sub-blocks which contains samples located on the diagonal or anti-diagonal lines of a block with its width equal to height.
[0042] FIGS. 22A-22J are flowcharts for examples of video processing methods.
[0043] FIG. 23 is a block diagram of an example of a hardware platform for implementing a visual media decoding or a visual media encoding technique described in the present document.
[0044] FIG. 24 is a block diagram of an example video processing system in which disclosed techniques may be implemented.
DETAILED DESCRIPTION
[0045] The present document provides various techniques that can be used by a decoder of image or video bitstreams to improve the quality of decompressed or decoded digital video or images. For brevity, the term“video” is used herein to include both a sequence of pictures (traditionally called video) and individual images. Furthermore, a video encoder may also implement these techniques during the process of encoding in order to reconstruct decoded frames used for further encoding.
[0046] Section headings are used in the present document for ease of understanding and do not limit the embodiments and techniques to the corresponding sections. As such, embodiments from one section can be combined with embodiments from other sections.
[0047] 1. Summary
[0048] This document is related to video coding technologies. Specifically, it is related to IBC for screen content coding. It may be applied to the existing video coding standard like HEVC, or the standard (Versatile Video Coding) to be finalized. It may be also applicable to future video coding standards or video codec.
[0049] 2. Initial Discussion [0050] Video coding standards have evolved primarily through the development of the well- known ITU-T and ISO/IEC standards. The ITU-T produced H.261 and H.263, ISO/IEC produced MPEG-1 and MPEG-4 Visual, and the two organizations jointly produced the
H.262/MPEG-2 Video and H.264/MPEG-4 Advanced Video Coding (AVC) and H.265/HEVC standards [1,2]. Since H.262, the video coding standards are based on the hybrid video coding structure wherein temporal prediction plus transform coding are utilized. To explore the future video coding technologies beyond HEVC, Joint Video Exploration Team (JVET) was founded by VCEG and MPEGjointly in 2015. Since then, many new methods have been adopted by JVET and put into the reference software named Joint Exploration Model (JEM). In April 2018, the Joint Video Expert Team (JVET) between VCEG (Q6/16) and ISO/IEC JTC1 SC29/WG11 (MPEG) was created to work on the VVC standard targeting at 50% bitrate reduction compared to HEVC.
[0051] The latest version of VVC draft, i.e., Versatile Video Coding (Draft 4) could be found at:
[0052] http://phenix.it-sudparis.eu/jvet/doc_end_user/current_document.php?id=5755
[0053] The latest reference software of VVC, named VTM, could be found at:
[0054] https://vcgit.hhi. firaunhofer.de/jvet/VVCSoftware_VTM/tags/VTM-4.0
[0055] 2.1 Intra block copy
[0056] Intra block copy (IBC), a.k.a. current picture referencing, has been adopted in HEVC Screen Content Coding extensions (HEVC-SCC) and the current VVC test model (VTM-4.0). IBC extends the concept of motion compensation from inter-frame coding to intra-frame coding. As demonstrated in FIG. 1, the current block is predicted by a reference block in the same picture when IBC is applied. The samples in the reference block must have been already reconstructed before the current block is coded or decoded. Although IBC is not so efficient for most camera-captured sequences, it shows significant coding gains for screen content. The reason is that there are lots of repeating patterns, such as icons and text characters in a screen content picture. IBC can remove the redundancy between these repeating patterns effectively. In HEVC-SCC, an inter-coded coding unit (CU) can apply IBC if it chooses the current picture as its reference picture. The MV is renamed as block vector (BV) in this case, and a BV always has an integer-pixel precision. To be compatible with main profile HEVC, the current picture is marked as a“long-term” reference picture in the Decoded Picture Buffer (DPB). It should be noted that similarly, in multiple view/3D video coding standards, the inter-view reference picture is also marked as a“long-term” reference picture.
[0057] Following a BV to find its reference block, the prediction can be generated by copying the reference block. The residual can be got by subtracting the reference pixels from the original signals. Then transform and quantization can be applied as in other coding modes.
[0058] However, when a reference block is outside of the picture, or overlaps with the current block, or outside of the reconstructed area, or outside of the valid area restricted by some constrains, part or all pixel values are not defined. Basically, there are two solutions to handle such a problem. One is to disallow such a situation, e.g. in bitstream conformance. The other is to apply padding for those undefined pixel values. The following sub-sessions describe the solutions in detail.
[0059] 2.2 IBC in HEVC Screen Content Coding extensions
[0060] In the screen content coding extensions of HEVC, when a block uses current picture as reference, it should guarantee that the whole reference block is within the available reconstructed area, as indicated in the following spec text:
The variables offsetX and offsetY are derived as follows:
offsetX = ( ChromaArrayType = = 0 ) ? 0 : ( mvCLX[ 0 ] & 0x7 ? 2 : 0 ) (8-106) offsetY = ( ChromaArrayType = = 0 ) ? 0 : ( mvCLX[ 1 ] & 0x7 ? 2 : 0 ) (8-107) It is a requirement of bitstream conformance that when the reference picture is the current picture, the luma motion vector mvLX shall obey the following constraints:
When the derivation process for z-scan order block availability as specified in clause 6.4.1 is invoked with ( xCurr, yCurr ) set equal to ( xCb, yCb ) and the neighbouring luma location ( xNbY, yNbY ) set equal to ( xPb + (mvLX[ 0 ] » 2) - offsetX, yPb + ( mvLX[ 1 ] » 2 ) - offsetY ) as inputs, the output shall be equal to TRUE.
When the derivation process for z-scan order block availability as specified in clause 6.4.1 is invoked with ( xCurr, yCurr ) set equal to ( xCb, yCb ) and the neighbouring luma location ( xNbY, yNbY ) set equal to ( xPb + (mvLX[ 0 ] » 2) + nPbW - 1 + offsetX, yPb + (mvLX[ 1 ] » 2) + nPbH - 1 + offsetY) as inputs, the output shall be equal to TRUE.
One or both the following conditions shall be true:
- The value of ( mvLX[ 0 ] » 2 ) + nPbW + xB 1 + offsetX is less than or equal to 0.
- The value of ( mvLX[ 1 ] » 2 ) + nPbH + yB 1 + offsetY is less than or equal to 0.
The following condition shall be true: ( xPb + ( mvLX[ 0 ] » 2 ) + nPbSw - 1 + offsetX) / CtbSizeY - xCurr / CtbSizeY <= yCurr/CtbSizeY - ( yPb + ( mvLX[ 1 ] » 2 ) + nPbSh - 1 + offsetY ) / CtbSizeY (8-108) [0061] Thus, the case that the reference block overlaps with the current block or the reference block is outside of the picture will not happen. There is no need to pad the reference or prediction block.
[0062] 2.3 IBC in VVC Test Model
[0063] In the current VVC test model, i.e. VTM-4.0 design, the whole reference block should be with the current coding tree unit (CTU) and does not overlap with the current block. Thus, there is no need to pad the reference or prediction block. The IBC flag is coded as a prediction mode of the current CU. Thus, there are totally three prediction modes, MODE INTRA,
MODE INTER and MODE IBC for each CU.
[0064] 2.3.1 IBC Merge mode
[0065] In IBC merge mode, an index pointing to an entry in the IBC merge candidates list is parsed from the bitstream. The construction of the IBC merge list can be summarized according to the following sequence of steps:
[0066] Step 1 : Derivation of spatial candidates
[0067] Step 2: Insertion of HMVP candidates
[0068] Step 3 : Insertion of pairwise average candidates
[0069] In the derivation of spatial merge candidates, a maximum of four merge candidates are selected among candidates located in the positions Al, Bl, B0, A0 and B2. The order of derivation is Al, Bl, B0, A0 and B2. Position B2 is considered only when any PU of position Al, Bl, B0, A0 is not available (e.g. because it belongs to another slice or tile) or is not coded with IBC mode. After candidate at position Al is added, the insertion of the remaining candidates is subject to a redundancy check which ensures that candidates with same motion information are excluded from the list so that coding efficiency is improved.
[0070] After insertion of the spatial candidates, if the IBC merge list size is still smaller than the maximum IBC merge list size, IBC candidates from HMVP table may be inserted. Redundancy check are performed when inserting the HMVP candidates.
[0071] Finally, pairwise average candidates are inserted into the IBC merge list. [0072] When a reference block identified by a merge candidate is outside of the picture, or overlaps with the current block, or outside of the reconstructed area, or outside of the valid area restricted by some constrains, the merge candidate is called invalid merge candidate.
[0073] It is noted that invalid merge candidates may be inserted into the IBC merge list.
[0074] JVET-N0843 is adopted to the VVC. In the JVET-N0843. the BV predictors for merge mode and AMVP mode in IBC will share a common predictor list, which consist of the following elements:
[0075] o 2 spatial neighboring positions (Al, B1 as in FIG. 2)
[0076] o 5 HMVP entries
[0077] o Zero vectors by default
[0078] For merge mode, up to first 6 entries of this list will be used; for AMVP mode, the first 2 entries of this list will be used. And the list conforms with the shared merge list region requirement (shared the same list within the SMR).
[0079] In addition to the above-mentioned BV predictor candidate list, JVET-N0843 also proposed to simplify the pruning operations between HMVP candidates and the existing merge candidates (Al, Bl). In the simplification there will be up to 2 pruning operations since it only compares the first HMVP candidate with spatial merge candidate(s).
[0080] In the latest VVC and VTM5, it is proposed to explicitly use syntax constraint for disabling 128x128 IBC mode on top of the current bitstream constraint in the previous VTM and VVC versions, which makes presence of IBC flag dependent on CU size < 128x128.
[0081] 2.3.2 IBC AMVP mode
[0082] In IBC AMVP mode, an AMVP index point to an entry in the IBC AMVP list is parsed from the bitstream. The construction of the IBC AMVP list can be summarized according to the following sequence of steps:
[0083] Step 1 : Derivation of spatial candidates
[0084] o Check A0, Al until an available candidate is found.
[0085] o Check B0, Bl, B2 until an available candidate is found.
[0086] Step 2: Insertion of HMVP candidates
[0087] Step 3 : Insertion of zero candidates [0088] After insertion of the spatial candidates, if the IBC AMVP list size is still smaller than the maximum IBC AMVP list size, IBC candidates from HMVP table may be inserted.
[0089] Finally, zero candidates are inserted into the IBC AMVP list.
[0090] 2.3.3 Chroma IBC mode
[0091] In the current VVC, the motion compensation in the chroma IBC mode is performed at sub block level. The chroma block will be partitioned into several sub blocks. Each sub block determines whether the corresponding luma block has a block vector and the validity if it is present. There is encoder constrain in the current VTM, where the chroma IBC mode will be tested if all sub blocks in the current chroma CU have valid luma block vectors. For example, on a YUV 420 video, the chroma block is NxM and then the collocated luma region is 2Nx2M. The sub block size of a chroma block is 2x2. There are several steps to perform the chroma mv derivation then the block copy process.
[0092] 1) The chroma block will be first partitioned into (N » 1)*(M » 1) sub blocks.
[0093] 2) Each sub block with a top left sample coordinated at (x, y) fetches the corresponding luma block covering the same top-left sample which is coordinated at (2x, 2y).
[0094] 3) The encoder checks the block vector(bv) of the fetched luma block. If one of the following conditions is satisfied, the bv is considered as invalid.
[0095] a. A bv of the corresponding luma block is not existing.
[0096] b. The prediction block identified by a bv is not reconstructed yet.
[0097] c. The prediction block identified by a bv is partially or fully overlapped with the current block.
[0098] 4) The chroma motion vector of a sub block is set to the motion vector of the corresponding luma sub block.
[0099] The IBC mode is allowed at the encoder when all sub blocks find a valid bv.
[00100] The decoding process of an IBC block is listed below. The part related to chroma mv derivation in a IBC mode is enclosed in bolded double braces, i.e., {{ · }}.
8.6.1 General decoding process for coding units coded in IBC prediction
Inputs to this process are:
a luma location ( xCb, yCb ) specifying the top-left sample of the current coding block relative to the top-left luma sample of the current picture,
a variable cbWidth specifying the width of the current coding block in luma samples, a variable cbHeight specifying the height of the current coding block in luma samples, a variable treeType specifying whether a single or a dual tree is used and if a dual tree is used, it specifies whether the current tree corresponds to the luma or chroma components.
Output of this process is a modified reconstructed picture before in-loop filtering.
The derivation process for quantization parameters as specified in clause 8.7.1 is invoked with the luma location ( xCb, yCb ), the width of the current coding block in luma samples cbWidth and the height of the current coding block in luma samples cbHeight, and the variable treeType as inputs.
The decoding process for coding units coded in ibc prediction mode consists of the following ordered steps:
1. The motion vector components of the current coding unit are derived as follows:
1. If treeType is equal to SINGLE TREE or DUAL TREE LUMA, the following applies:
- The derivation process for motion vector components as specified in clause 8.6.2.1 is invoked with the luma coding block location ( xCb, yCb ), the luma coding block width cbWidth and the luma coding block height cbHeight as inputs, and the luma motion vector mvL[ 0 ][ 0 ] as output.
- When treeType is equal to SINGLE TREE, the derivation process for chroma motion vectors in clause 8.6.2.9 is invoked with luma motion vector mvL[ 0 ][ 0 ] as input, and chroma motion vector mvC[ 0 ][ 0 ] as output.
- The number of luma coding subblocks in horizontal direction numSbX and in vertical direction numSbY are both set equal to 1.
1. Otherwise, if treeType is equal to DUAL TREE CHROMA, the following applies:
- The number of luma coding subblocks in horizontal direction numSbX and in vertical direction numSbY are derived as follows:
numSbX = ( cbWidth » 2 ) (8-886) numSbY = ( cbHeight » 2 ) (8-887)
- { {The chroma motion vectors mvC[ xSbldx ][ ySbldx ] are derived as follows for xSbldx = 0..numSbX - 1, ySbldx = 0..numSbY - 1:
- The luma motion vector mvL[ xSbldx ][ ySbldx ] is derived as follows:
- The location ( xCuY, yCuY ) of the collocated luma coding unit is dervied as follows:
xCuY = xCb + xSbldx* 4 (8-888)
yCuY = yCb + ySbIdx*4 (8-889)
- If CuPredModef xCuY ][ yCuY ] is equal to MODE INTRA, the following applies. mvL[ xSbldx ][ ySbldx ][ 0 ] = 0 (8-890)
mvL[ xSbldx ][ ySbldx ][ 1 ] = 0 (8-891)
predFlagLO[ xSbldx ][ ySbldx ] = 0 (8-892)
predFlagL 1 [ xSbldx ] [ ySbldx ] = 0 (8-893)
- Otherwise ( CuPrcdModc| xCuY || yCuY | is equal to MODE IBC ), the following applies:
mvL[ xSbldx ] [ ySbldx ] [ 0 ]=MvL0[ xCuY ] [ yCuY ] [ 0 ] (8-894) mvL[ xSbldx ][ ySbldx ][ 1 ]=MvL0[ xCuY ][ yCuY ][ 1 ] (8-895) predFlagL0[ xSbldx ][ ySbldx ] = 1 (8-896)
predFlagL 1[ xSbldx ][ ySbldx ] = 0 (8-897)}}
- The derivation process for chroma motion vectors in clause 8.6.2.9 is invoked with mvL[ xSbldx ][ ySbldx ] as inputs, and mvC[ xSbldx ][ ySbldx ] as output.
- It is a requirement of bitstream conformance that the chroma motion vector mvC[ xSbldx ][ ySbldx ] shall obey the following constraints:
- When the derivation process for block availability as specified in clause 6.4.X [Ed.
(BB): Neighbouring blocks availability checking process tbd] is invoked with the current chroma location ( xCurr, yCurr ) set equal to ( xCb / SubWidthC, yCb / SubHeightC ) and the neighbouring chroma location ( xCb / SubWidthC + ( mvC[ xSbldx ][ ySbldx ][ 0 ] » 5 ), yCb / SubHeightC +
( mvC[ xSbldx ][ ySbldx ][ 1 ] » 5 ) ) as inputs, the output shall be equal to TRUE.
- When the derivation process for block availability as specified in clause 6.4.X [Ed.
(BB): Neighbouring blocks availability checking process tbd] is invoked with the current chroma location ( xCurr, yCurr ) set equal to ( xCb / SubWidthC, yCb / SubHeightC ) and the neighbouring chroma location ( xCb / SubWidthC + ( mvC[ xSbldx ][ ySbldx ][ 0 ] » 5 ) + cbWidth / SubWidthC - 1, yCb / SubHeightC + ( mvC[ xSbldx ][ ySbldx ][ 1 ] » 5 ) + cbHeight / SubHeightC - 1 ) as inputs, the output shall be equal to TRUE.
- One or both of the following conditions shall be true:
-( mvC[ xSbldx ][ ySbldx ][ 0 ] » 5 ) + xSbldx * 2 + 2 is less than or equal to 0.
-( mvC[ xSbldx ][ ySbldx ][ 1 ] » 5 ) + ySbldx * 2 + 2 is less than or equal to 0. The prediction samples of the current coding unit are derived as follows:
- If treeType is equal to SINGLE TREE or DUAL TREE LUMA, the prediction samples of the current coding unit are derived as follows:
• The decoding process for ibc blocks as specified in clause 8.6.3.1 is invoked with the luma coding block location ( xCb, yCb ), the luma coding block width cbWidth and the luma coding block height cbHeight, the number of luma coding subblocks in horizontal direction numSbX and in vertical direction numSbY, the luma motion vectors mvL[ xSbldx ][ ySbldx ] with xSbldx = 0..numSbX - 1, and ySbldx = 0..numSbY - 1, the variable cldx set equal to 0 as inputs, and the ibc prediction samples (predSamples) that are an (cbWidth)x(cbHeight) array predSamplesL of prediction luma samples as outputs.
- Otherwise if treeType is equal to SINGLE TREE or DUAL TREE CHROMA, the prediction samples of the current coding unit are derived as follows:
• The decoding process ibc blocks as specified in clause 8.6.3.1 is invoked with the luma coding block location ( xCb, yCb ), the luma coding block width cbWidth and the luma coding block height cbHeight, the number of luma coding subblocks in horizontal direction numSbX and in vertical direction numSbY, the chroma motion vectors mvC[ xSbldx ][ ySbldx ] with xSbldx = 0.. numSbX - 1, and ySbldx = 0.. numSbY - 1 and the variable cldx set equal to 1 as inputs, and the ibc prediction samples (predSamples) that are an (cbWidth / 2)x(cbHeight / 2) array predSamplesa, of prediction chroma samples for the chroma components Cb as outputs.
• The decoding process for ibc blocks as specified in clause 8.6.3.1 is invoked with the luma coding block location ( xCb, yCb ), the luma coding block width cbWidth and the luma coding block height cbHeight, the number of luma coding subblocks in horizontal direction numSbX and in vertical direction numSbY, the chroma motion vectors mvC[ xSbldx ][ ySbldx ] with xSbldx = 0.. numSbX - 1, and ySbldx = 0.. numSbY - 1 and the variable cldx set equal to 2 as inputs, and the ibc prediction samples (predSamples) that are an (cbWidth / 2)x(cbHeight / 2) array predSamplescr of prediction chroma samples for the chroma components Cr as outputs.
The variables NumSbX [ xCb ][ yCb ] and NumSbY[ xCb ][ yCb ] are set equal to numSbX and numSbY, respectively.
The residual samples of the current coding unit are derived as follows: - When treeType is equal to SINGLE TREE or treeType is equal to DUAL TREE LUMA, the decoding process for the residual signal of coding blocks coded in inter prediction mode as specified in clause 8.5.8 is invoked with the location ( xTbO, yTbO ) set equal to the luma location ( xCb, yCb ), the width nTbW set equal to the luma coding block width cbWidth, the height nTbH set equal to the luma coding block height cbHeight and the variable cldxset equal to 0 as inputs, and the array resSamplesL as output.
- When treeType is equal to SINGLE TREE or treeType is equal to DUAL TREE CHROMA, the decoding process for the residual signal of coding blocks coded in inter prediction mode as specified in clause 8.5.8 is invoked with the location ( xTbO, yTbO ) set equal to the chroma location ( xCb / 2, yCb 1 2 ), the width nTbW set equal to the chroma coding block width cbWidth / 2, the height nTbH set equal to the chroma coding block height cbHeight / 2 and the variable cldxset equal to 1 as inputs, and the array resSamplescb as output.
- When treeType is equal to SINGLE TREE or treeType is equal to DUAL TREE CHROMA, the decoding process for the residual signal of coding blocks coded in inter prediction mode as specified in clause 8.5.8 is invoked with the location ( xTbO, yTbO ) set equal to the chroma location ( xCb / 2, yCb 1 2 ), the width nTbW set equal to the chroma coding block width cbWidth / 2, the height nTbH set equal to the chroma coding block height cbHeight / 2 and the variable cldxset equal to 2 as inputs, and the array resSamplescr as output.
The reconstructed samples of the current coding unit are derived as follows:
- When treeType is equal to SINGLE TREE or treeType is equal to DUAL TREE LUMA, the picture reconstruction process for a colour component as specified in clause 8.7.5 is invoked with the block location ( xB, yB ) set equal to ( xCb, yCb ), the block width bWidth set equal to cbWidth, the block height bHeight set equal to cbHeight, the variable cldx set equal to 0, the (cbWidth)x(cbHeight) array predSamples set equal to predSamplesL and the (cbWidth)x(cbHeight) array resSamples set equal to resSamplesL as inputs, and the output is a modified reconstructed picture before in-loop filtering.
- When treeType is equal to SINGLE TREE or treeType is equal to DUAL TREE CHROMA, the picture reconstruction process for a colour component as specified in clause 8.7.5 is invoked with the block location ( xB, yB ) set equal to ( xCb / 2, yCb 12 ), the block width bWidth set equal to cbWidth / 2, the block height bHeight set equal to cbHeight / 2, the variable cldx set equal to 1, the (cbWidth / 2)x(cbHeight / 2) array predSamples set equal to predSamplescb and the (cbWidth / 2)x(cbHeight / 2) array resSamples set equal to resSamplescb as inputs, and the output is a modified reconstructed picture before in-loop filtering. - When treeType is equal to SINGLE TREE or treeType is equal to DUAL TREE CHROMA, the picture reconstruction process for a colour component as specified in clause 8.7.5 is invoked with the block location ( xB, yB ) set equal to ( xCb / 2, yCb 12 ), the block width bWidth set equal to cbWidth / 2, the block height bHeight set equal to cbHeight / 2, the variable cldx set equal to 2, the (cbWidth / 2)x(cbHeight / 2) array predSamples set equal to predSamplescr and the (cbWidth / 2)x(cbHeight / 2) array resSamples set equal to resSamplescr as inputs, and the output is a modified reconstructed picture before in-loop filtering.
[00101] 2.4 Adaptive motion vector resolution (AMVR)
[00102] In HEVC, motion vector differences (MVDs) (between the motion vector and predicted motion vector of a CU) are signalled in units of quarter-luma-sample when use integer mv flag is equal to 0 in the slice header. In VVC, a CU-level adaptive motion vector resolution (AMVR) scheme is introduced. AMVR allows MVD of the CU to be coded in different precision.
Dependent on the mode (normal AMVP mode or affine AVMP mode) for the current CU, the MVDs of the current CU can be adaptively selected as follows:
[00103] -Normal AMVP mode: quarter-luma-sample, integer-luma-sample or four-luma-sample.
[00104] -Affine AMVP mode: quarter-luma-sample, integer-luma-sample or 1/16 luma-sample.
[00105] The CU-level MVD resolution indication is conditionally signalled if the current CU has at least one non-zero MVD component. If all MVD components (that is, both horizontal and vertical MVDs for reference list L0 and reference list LI) are zero, quarter-luma-sample MVD resolution is inferred.
[00106] For a CU that has at least one non-zero MVD component, a first flag is signalled to indicate whether quarter-luma-sample MVD precision is used for the CU. If the first flag is 0, no further signaling is needed and quarter-luma-sample MVD precision is used for the current CU. Otherwise, a second flag is signalled to indicate whether integer-luma-sample or four-luma- sample MVD precision is used for normal AMVP CU. The same second flag is used to indicate whether integer-luma-sample or 1/16 luma-sample MVD precision is used for affine AMVP CU. In order to ensure the reconstructed MV has the intended precision (quarter-luma-sample, integer-luma-sample or four-luma-sample), the motion vector predictors for the CU will be rounded to the same precision as that of the MVD before being added together with the MVD. The motion vector predictors are rounded toward zero (that is, a negative motion vector predictor is rounded toward positive infinity and a positive motion vector predictor is rounded toward negative infinity).
[00107] The encoder determines the motion vector resolution for the current CU using RD check. To avoid always performing CU-level RD check three times for each MVD resolution, in VTM4, the RD check of MVD precisions other than quarter-luma-sample is only invoked conditionally. For normal AVMP mode, the RD cost of quarter-luma-sample MVD precision and integer-luma sample MV precision is computed first. Then, the RD cost of integer-luma-sample MVD precision is compared to that of quarter-luma-sample MVD precision to decide whether it is necessary to further check the RD cost of four-luma-sample MVD precision. When the RD cost for quarter-luma-sample MVD precision is much smaller than that of the integer-luma- sample MVD precision, the RD check of four-luma-sample MVD precision is skipped. For affine AMVP mode, if affine inter mode is not selected after checking rate-distortion costs of affine merge/skip mode, merge/skip mode, quarter-luma sample MVD precision normal AMVP mode and quarter-luma sample MVD precision affine AMVP mode, then 1/16 luma-sample MV precision and 1-pel MV precision affine inter modes are not checked. Furthermore affine parameters obtained in quarter-luma-sample MV precision affine inter mode is used as starting search point in 1/16 luma-sample and quarter-luma-sample MV precision affine inter modes.
[00108] 2.5 Palette Mode in HE VC Screen Content Coding extensions (HEVC-SCC)
[00109] The basic idea behind a palette mode is that the samples in the CU are represented by a small set of representative color values. This set is referred to as the palette. It is also possible to indicate a sample that is outside the palette by signaling an escape symbol followed by (possibly quantized) component values. This is illustrated in FIG. 3.
[00110] In the palette mode in HEVC-SCC, a predictive way is used to code the palette and index map.
[00111] 2.5.1 Coding of the palette entries
[00112] For coding of the palette entries, a palette predictor is maintained. The maximum size of the palette as well as the palette predictor is signaled in the SPS. In HEVC-SCC, a
pal ette predi ctor initi al i zer present fl ag is introduced in the PPS. When this flag is 1, entries for initializing the palette predictor are signaled in the bitstream. The palette predictor is initialized at the beginning of each CTU row, each slice and each tile. Depending on the value of the pal ette predi ctor i ni ti al i zer present fl ag, the palette predictor is reset to 0 or initialized using the palette predictor intializer entries signaled in the PPS. In HEVC-SCC, a palette predictor initializer of size 0 was enabled to allow explicit disabling of the palette predictor initialization at the PPS level.
[00113] For each entry in the palette predictor, a reuse flag is signaled to indicate whether it is part of the current palette. This is illustrated in FIG. 4. The reuse flags are sent using run-length coding of zeros. After this, the number of new palette entries are signaled using exponential Golomb code of order 0. Finally, the component values for the new palette entries are signaled.
[00114] 2.5.2 Coding of palette indices
[00115] The palette indices are coded using horizontal and vertical traverse scans as shown in FIG. 5. The scan order is explicitly signaled in the bitstream using the palette transpose flag. For the rest of the subsection it is assumed that the scan is horizontal.
[00116] The palette indices are coded using two main palette sample modes: 'INDEX' and 'COPY ABOVE'. As explained previously, the escape symbol is also signaled as an 'INDEX' mode and assigned an index equal to the maximum palette size. The mode is signaled using a flag except for the top row or when the previous mode was 'COPY ABOVE'. In the
'COPY ABOVE' mode, the palette index of the sample in the row above is copied. In the 'INDEX' mode, the palette index is explicitly signaled. For both 'INDEX' and 'COPY ABOVE' modes, a run value is signaled which specifies the number of subsequent samples that are also coded using the same mode. When escape symbol is part of the run in 'INDEX' or
'COPY ABOVE' mode, the escape component values are signaled for each escape symbol. The coding of palette indices is illustrated in FIG. 6.
[00117] This syntax order is accomplished as follows. First the number of index values for the CU is signaled. This is followed by signaling of the actual index values for the entire CU using truncated binary coding. Both the number of indices as well as the the index values are coded in bypass mode. This groups the index-related bypass bins together. Then the palette sample mode (if necessary) and run are signaled in an interleaved manner. Finally, the component escape values corresponding to the escape samples for the entire CU are grouped together and coded in bypass mode. [00118] An additional syntax element, last run type flag, is signaled after signaling the index values. This syntax element, in conjunction with the number of indices, eliminates the need to signal the run value corresponding to the last run in the block.
[00119] In HEVC-SCC, the palette mode is also enabled for 4:2:2, 4:2:0, and monochrome chroma formats. The signaling of the palette entries and palette indices is almost identical for all the chroma formats. In case of non-monochrome formats, each palette entry consists of 3 components. For the monochrome format, each palette entry consists of a single component. For subsampled chroma directions, the chroma samples are associated with luma sample indices that are divisible by 2. After reconstructing the palette indices for the CU, if a sample has only a single component associated with it, only the first component of the palette entry is used. The only difference in signaling is for the escape component values. For each escape sample, the number of escape component values signaled may be different depending on the number of components associated with that sample.
[00120] 2.6 Coefficients Coding in Transform Skip mode
[00121] In JVET-M0464 and JVET-N0280, several modifications are proposed on the coefficients coding in transform skip (TS) mode in order to adapt the residual coding to the statistics and signal characteristics of the transform skip levels.
[00122] The proposed modifications are listed as follows.
[00123] No last significant scanning position: Since the residual signal reflects the spatial residual after the prediction and no energy compaction by transform is performed for TS, the higher probability for trailing zeros or insignificant levels at the bottom right comer of the transform block is not given anymore. Thus, last significant scanning position signaling is omitted in this case.
[00124] Subblock CBFs: The absence of the last significant scanning position signaling requires the subblock CBF signaling with coded sub block flag for TS to be modified as follows:
[00125] o Due to quantization, the aforementioned sequence of insignificance may still occur locally inside a transform block. Thus, the last significant scanning position is removed as described before and coded sub block flag is coded for all sub-blocks.
[00126] o The coded sub block flag for the subblock covering the DC frequency position (top-left subblock) presents a special case. In VVC Draft 3, the coded sub block flag for this subblock is never signaled and always inferred to be equal to 1. When the last significant scanning position is located in another subblock, it means that there is at least one significant level outside the DC subblock. Consequently, the DC subblock may contain only zero/non significant levels although the coded sub block flag for this subblock is inferred to be equal to 1. With the absence of the last scanning position information in TS, the coded sub block flag for each subblock is signaled. This also includes the coded sub block flag for the DC subblock except when all other coded sub block flag syntax elements are already equal to 0. In this case, the DC coded sub block flag is inferred to be equal to 1 (inferDcSbCbf=l). Since there has to be at least one significant level in this DC subblock, the sig coeff flag syntax element for the first position at (0,0) is not signaled and derived to be equal to 1 (inferSbDcSigCoeffFlag=l) instead if all other sig coeff flag syntax elements in this DC subblock are equal to 0.
[00127] o The context modeling for coded sub block flag is changed. The context model index is calculated as the sum of the coded sub block flag to the left and the coded_sub_block_flag aboves the current subblock instead of and a logical disjunction of both.
[00128] sig coeff flag context modelling: The local template in sig coeff flag context modeling is modified to only include the neighbor to the left (NBo) and the neighbor above (NBi) the current scanning position. The context model offset is just the number of significant neighboring positions sig_coeff_flag[NBo] + sig_coeff_flag[NBi]. Hence, the selection of different context sets depending on the diagonal d within the current transform block is removed. This results in three context models and a single context model set for coding the sig coeff flag flag.
[00129] abs level gtl flag and par level flag context modelling: a single context model is employed for abs level gtl flag and par level flag.
[00130] abs remainder coding: Although the empirical distribution of the transform skip residual absolute levels typically still fits a Laplacian or a Geometrical distribution, there exist larger instationarities than for transform coefficient absolute levels. Particularly, the variance within a window of consecutive realization is higher for the residual absolute levels. This motivates the following modifications of the abs remainder syntax binarization and context modelling: [00131] o Using a higher cutoff value in the binarization, i.e., the transition point from the coding with sig coeff flag, abs level gtl flag, par level flag, and abs_level_gt3_flag to the Rice codes for abs remainder, and dedicated context models for each bin position yields higher compression efficiency. Increasing the cutoff will result in more "greater than X" flags, e.g. introducing abs_level_gt5_flag, abs_level_gt7 flag, and so on until a cutoff is reached. The cutoff itself is fixed to 5 (numGtFlags=5).
[00132] o The template for the rice parameter derivation is modified, i.e., only the neighbor to the left and the neighbor above the current scanning position are considered similar to the local template for sig coeff flag context modeling.
[00133] coeff sign flag context modelling: Due to the instationarities inside the sequence of signs and the fact that the prediction residual is often biased, the signs can be coded using context models, even when the global empirical distribution is almost uniformly distributed. A single dedicated context model is used for the coding of the signs and the sign is parsed after sig coeff flag to keep all context coded bins together.
[00134] 2.7 Quantized residual Block Differential Pulse-code Modulation (QR-BDPCM)
[00135] In JVET-M0413, a quantized residual block differential pulse-code modulation (QR- BDPCM) is proposed to code screen contents efficiently.
[00136] The prediction directions used in QR-BDPCM can be vertical and horizontal prediction modes. The intra prediction is done on the entire block by sample copying in prediction direction (horizontal or vertical prediction) similar to intra prediction. The residual is quantized and the delta between the quantized residual and its predictor (horizontal or vertical) quantized value is coded. This can be described by the following: For a block of size M (rows) c N (cols), let Tij, 0 £ i £ M— 1, 0 < j < N— 1 be the prediction residual after performing intra prediction horizontally (copying left neighbor pixel value across the the predicted block line by line) or vertically (copying top neighbor line to each line in the predicted block) using unfiltered samples from above or left block boundary samples. Let Q(ri ;·), 0 £ i £ M— 1, 0 £ j £ N— 1 denote the quantized version of the residual ri ;·, where residual is difference between original block and the predicted block values. Then the block DPCM is applied to the quantized residual samples, resulting in modified M x N array R with elements L When vertical BDPCM is signalled:
Figure imgf000023_0001
[00138] For horizontal prediction, similar rules apply, and the residual quantized samples are obtained by
Figure imgf000023_0002
[00140] The residual quantized samples fi ;· are sent to the decoder.
[00141] On the decoder side, the above calculations are reversed to produce Qi i j), 0 < i <
M— 1, 0 < j < N— 1. For vertical prediction case,
Figure imgf000023_0003
[00145] The inverse quantized residuals,
Figure imgf000023_0004
are added to the intra block prediction values to produce the reconstructed sample values.
[00146] The main benefit of this scheme is that the inverse DPCM can be done on the fly during coefficient parsing simply adding the predictor as the coefficients are parsed or it can be performed after parsing.
[00147] The draft text changes of QR-BDPCM are shown as follows.
7.3.6.5 Coding unit syntax
Figure imgf000023_0005
Figure imgf000024_0001
[00148] bdpcm_flag[ x0 ][ yO ] equal to 1 specifies that a bdpcm dir flag is present in the coding unit including the luma coding block at the location ( xO, yO )
[00149] bdpcm_dir_flag[ xO ][ yO ] equal to 0 specifies that the prediction direction to be used in a bdpcm block is horizontal, otherwise it is vertical. [00150] 2.8 Partition Structure
[00151] In HEVC, a CTU is split into CUs by using a quaternary-tree structure denoted as coding tree to adapt to various local characteristics. The decision whether to code a picture area using inter-picture (temporal) or intra-picture (spatial) prediction is made at the leaf CU level. Each leaf CU can be further split into one, two or four PUs according to the PU splitting type. Inside one PU, the same prediction process is applied and the relevant information is transmitted to the decoder on a PU basis. After obtaining the residual block by applying the prediction process based on the PU splitting type, a leaf CU can be partitioned into transform units (TUs) according to another quaternary-tree structure similar to the coding tree for the CU. One of key feature of the HEVC structure is that it has the multiple partition conceptions including CU, PU, and TU.
[00152] In VVC, a quadtree with nested multi-type tree using binary and ternary splits segmentation structure replaces the concepts of multiple partition unit types, i.e. it removes the separation of the CU, PU and TU concepts except as needed for CUs that have a size too large for the maximum transform length, and supports more flexibility for CU partition shapes. In the coding tree structure, a CU can have either a square or rectangular shape. A coding tree unit (CTU) is first partitioned by a quaternary tree (a.k.a. quadtree) structure. Then the quaternary tree leaf nodes can be further partitioned by a multi-type tree structure. As shown in FIG. 7, there are four splitting types in multi-type tree structure, vertical binary splitting (SPLIT BT VER), horizontal binary splitting (SPLIT BT HOR), vertical ternary splitting (SPLIT TT VER), and horizontal ternary splitting (SPLIT TT HOR). The multi-type tree leaf nodes are called coding units (CUs), and unless the CU is too large for the maximum transform length, this segmentation is used for prediction and transform processing without any further partitioning. This means that, in most cases, the CU, PU and TU have the same block size in the quadtree with nested multi type tree coding block structure. The exception occurs when maximum supported transform length is smaller than the width or height of the color component of the CU. In addition, luma and chroma components have separate partition structures on I tiles. Moreover, JVET-K0353 and JVET-K0354 propose to signal a flag to determine whether to use the separate partition structures at CTU/CU level.
[00153] 2.9 Cross-component linear model (CCLM) prediction [00154] To reduce the cross-component redundancy, a cross-component linear model (CCLM) prediction mode is used in the VTM4, for which the chroma samples are predicted based on the reconstructed luma samples of the same CU by using a linear model as follows:
[00155] predc(i, j) = a · recL'(i,j) + b
[00156] where predc(i, j) represents the predicted chroma samples in a CU and recL(i, j) represents the downsampled reconstructed luma samples of the same CU. Linear model parameter a and b are derived from the relation between luma values and chroma values from two samples, which are luma sample with minimum sample value and with maximum sample inside the set of downsampled neighboring luma samples, and their corresponding chroma samples. The linear model parameters a and b are obtained according to the following equations.
[00157]
Figure imgf000026_0001
[00158] b = ¾ - a - Xb
[00159] Where Ya and Xa represent luma value and chroma value of the luma sample with maximum luam sample value. And Xb and Yb represent luma value and chroma value of the luma sample with minimum luma sample, respectively. FIG. 8 shows an example of the location of the left and above samples and the sample of the current block involved in the CCLM mode.
[00160] 2.10 Intra mode coding with 67 intra prediction modes in JVET-N0185
[00161] To capture the arbitrary edge directions presented in natural video, the number of directional intra modes in VTM4 is extended from 33, as used in HEVC, to 65. The new directional modes not in HEVC are depicted as red dotted arrows in FIG. 9, and the planar and DC modes remain the same. These denser directional intra prediction modes apply for all block sizes and for both luma and chroma intra predictions.
[00162] A unified 6-MPM list is proposed for intra blocks irrespective of whether MRL and ISP coding tools are applied or not. The MPM list is constructed based on intra modes of the left and above neighboring block as in VTM4.0, as shown in FIG. 10.
[00163] Suppose the mode of the left is denoted as Left and the mode of the above block is denoted as Above , the unified MPM list is constructed as with the following steps in order:
[00164] When the intra prediction mode of a neighboring block is invalid, its intra mode is set to Planar by default. [00165] If Left and Above are the same and both angular:
[00166] MPM list
Figure imgf000027_0001
(Planar, Left , Left -1 , Left +1 , DC, Left -2}
[00167] If Left and Above are different and both angular:
[00168] Set a mode Max as the larger mode in Left and Above
[00169] if the difference of mode Left and Above is in the range of 2 to 62, inclusive
[00170] MPM list -> (Planar, Left , Above , DC, Max -7, Max +1 }
[00171] Otherwise
[00172] MPM list -> (Planar, Left , Above , DC, Max -2, Max +2}
[00173] If Left and Above are different and one of modes Left and Above is angular mode, and the other is non-angular:
[00174] Set a mode Max as the larger mode in Left and Above
[00175] MPM list -> (Planar, Max , DC, Max -1, Max +1, Max -2}
[00176] If both modes Left and Above are non-angular modes:
[00177] MPM list
Figure imgf000027_0002
(Planar, DC, V, H, V-4, V+4}
[00178] Note that when the mode index (e.g., Max+2) exceed the range [0, 66], it may be replaced by another valid mode index.
[00179] The first MPM candidate, i.e., the Planar mode is signaled separately from the remaining MPM candidates.
[00180] The more detailed syntax, semantics and decoding process are described as follows:
7.3.6.5 Coding unit syntax
Figure imgf000027_0003
Figure imgf000028_0001
Figure imgf000029_0001
The syntax elements intra luma mpm _flag[ xO ][ yO ], intra luma not planar _flag[ xO ][ yO ], intra_luma_mpm_idx[ xO ][ yO ] and intra_luma_mpm_remainder[ xO ][ yO ] specify the intra prediction mode for luma samples. The array indices xO, yO specify the location ( xO , yO ) of the top-left luma sample of the considered coding block relative to the top-left luma sample of the picture. When intra_luma_mpm_flag[ xO ][ yO ] is equal to 1, the intra prediction mode is inferred from a neighbouring intra-predicted coding unit according to clause 8.4.2.
When intra_luma_mpm_flag[ xO ][ yO ] is not present (e.g., ISP enabled, or MRL enabled (with reference index > 0)), it is inferred to be equal to 1.
When intra_luma_not_planar_flag[ xO ] [ yO ] is not present (e.g., MRL is enabled), it is inferred to be equal to 1.
8.4.2 Derivation process for luma intra prediction mode
Input to this process are:
- a luma location ( xCb , yCb ) specifying the top-left sample of the current luma coding block relative to the top -left luma sample of the current picture,
- a variable cbWidth specifying the width of the current coding block in luma samples, - a variable cbHeight specifying the height of the current coding block in luma samples.
In this process, the luma intra prediction mode IntraPrcdModcYI xCb ][ yCb ] is derived.
Table 8-1 specifies the value for the intra prediction mode IntraPrcdModcYI xCb || yCb | and the associated names.
Figure imgf000030_0001
NOTE - : The intra prediction modes INTRA LT CCLM, INTRA L CCLM and INTRA T CCLM are only applicable to chroma components.
IntraPrcdModcYI xCb ][ yCb ] is derived as follows:
- If intra_luma_not_planar_flag[ xCb ][ yCb ] is equal to 1, the following ordered steps:
1. The neighbouring locations ( xNbA, yNbA ) and ( xNbB, yNbB ) are set equal to ( xCb - 1, yCb + cbHeight - 1 ) and ( xCb + cbWidth - 1, yCb - 1 ), respectively.
2. For X being replaced by either A or B, the variables candlntraPredModeX are derived as follows:
- The availability derivation process for a block as specified in clause 6.4.X [Ed. (BB): Neighbouring blocks availability checking process tbd] is invoked with the location ( xCurr, yCurr ) set equal to ( xCb, yCb ) and the neighbouring location ( xNbY, yNbY ) set equal to ( xNbX, yNbX ) as inputs, and the output is assigned to availableX.
- The candidate intra prediction mode candlntraPredModeX is derived as follows:
- If one or more of the following conditions are true, candlntraPredModeX is set equal to
INTRA PLANAR.
- The variable availableX is equal to FALSE.
- CuPredMode[ xNbX ][ yNbX ] is not equal to MODE_INTRA and ciip flagl xNbX ][ yNbX ] is not equal to 1.
- pcm_flag[ xNbX ] [ yNbX ] is equal to 1.
- X is equal to B and yCb - 1 is less than ( ( yCb » CtbLog2SizeY ) « CtbLog2SizeY ).
- Otherwise, candlntraPredModeX is set equal to IntraPrcdModcYI xNbX ][ yNbX ].
3. The candModeList[ x ] with x = 0..4 is derived as follows: - If candlntraPredModeB is equal to candlntraPredModeA and candlntraPredModeA is greater than INTRA DC, candModeList[ x ] with x = 0..4 is derived as follows:
candModeList[ 0 ] = candlntraPredModeA (8-10) candModeListf 1 ] = 2 + ( ( candlntraPredModeA + 61 ) % 64 ) (8-12) candModcListl 2] = 2 + ( ( candlntraPredModeA - 1 ) % 64 ) (8-13) candModeList[ 3 ] = INTRA DC (8-11) candModcListl 4 ] = 2 + ( ( candlntraPredModeA + 60 ) % 64 ) (8-14)
- Otherwise if candlntraPredModeB is not equal to candlntraPredModeA and candlntraPredModeA or candlntraPredModeB is greater than INTRA DC, the following applies:
- The variables minAB and maxAB are derived as follows:
minAB = Min( candlntraPredModeA, candlntraPredModeB ) (8-24) maxAB = Max( candlntraPredModeA, candlntraPredModeB ) (8-25)
- If candlntraPredModeA and candlntraPredModeB are both greater than INTRA DC, candModcListl x ] with x = 0..4 is derived as follows:
candModcListl 0 ] = candlntraPredModeA (8-27) candModcListl 1 ] = candlntraPredModeB (8-29) candModeList[ 2 ] = INTRA DC
(8-29)
- If maxAB - minAB is in the range of 2 to 62, inclusive, the following applies: candModeListf 3 ] = 2 + ( ( maxAB + 61 ) % 64 ) (8-30) candModeListf 4 ] = 2 + ( ( maxAB - 1 ) % 64 ) (8-31)
- Otherwise, the following applies:
candModeListf 3 ] = 2 + ( ( maxAB + 60 ) % 64 ) (8-32) candModeListf 4 ] = 2 + ( ( maxAB ) % 64 ) (8-33)
- Otherwise (candlntraPredModeA or candlntraPredModeB is greater than INTRA DC), candModcListl x ] with x = 0..4 is derived as follows:
candModeListf 0 ] = maxAB (8-65) candModeList[ 1 ] = INTRA DC
(8-66)
candModeListf 2 ] = 2 + ( ( maxAB + 61 ) % 64 ) (8-66) candModeListf 3 ] = 2 + ( ( maxAB - 1 ) % 64 ) (8-67) candModeListf 4 ] = 2 + ( ( maxAB + 60 ) % 64 ) (8-68) - Otherwise, the following applies:
candModeList[ 0 ] = INTRA DC (8-71) candModeList[ 1 ] = INTRA ANGULAR50 (8-72) candModeList[ 2 ] = INTRA ANGULARl 8 (8-73) candModeList[ 3 ] = INTRA ANGULAR46 (8-74) candModeList[ 4 ] = INTRA ANGULAR54 (8-75)
4. IntraPredModeY[ xCb ][ yCb ] is derived by applying the following procedure:
- If intra_luma_mpm_flag[ xCb ][ yCb ] is equal to 1, the IntraPredModeY[ xCb ][ yCb ] is set equal to candModcList| intra_luma_mpm_idx[ xCb ] [ yCb ] ] .
- Otherwise, IntraPredModeY[ xCb ][ yCb ] is derived by applying the following ordered steps:
1. When candModeListf i ] is greater than candModeListf j ] for i = 0..3 and for each i, j = ( i + 1 )..4, both values are swapped as follows:
( candModeListf i ], candModeListf j ] ) = Swap( candModeListf i ], candModeListf j ] ) (8-94)
2. IntraPrcdModcYI xCb ][ yCb ] is derived by the following ordered steps:
i. IntraPrcdModcYI xCb || yCb | is set equal to intra_luma_mpm_remainder[ xCb ] [ yCb ] .
ii. The value of IntraPrcdModcYI xCb ][ yCb ] is incremented by one iii. For i equal to 0 to 4, inclusive, when IntraPrcdModcYI xCb ][ yCb ] is greater than or equal to candModeListf i ], the value of IntraPrcdModcYI xCb || yCb | is incremented by one.
- Otherwise (intra_luma_not_planar_flag[ xCb ][ yCb ] is equal to 0), IntraPrcdModcYI xCb ][ yCb ] is set equal to INTRA PLANAR.
The variable IntraPrcdModcYI x ][ y ] with x = xCb..xCb + cbWidth - 1 and
y = yCb..yCb + cbHeight - 1 is set to be equal to IntraPrcdModcYI xCb ][ yCb ].
[00181] 2.11 Multiple reference line (MRL) intra prediction
[00182] Multiple reference line (MRL) intra prediction uses more reference lines for intra prediction. In FIG. 11, an example of 4 reference lines is depicted, where the samples of segments A and F are not fetched from reconstructed neighboring samples but padded with the closest samples from Segment B and E, respectively. HEVC intra-picture prediction uses the nearest reference line (i.e., reference line 0). In MRL, 2 additional lines (reference line 1 and reference line 3) are used. [00183] The index of selected reference line (mrl idx) is signalled and used to generate intra predictor. For reference line idx, which is greater than 0, only include additional reference line modes in MPM list and only signal mpm index without remaining mode. The reference line index is signalled before intra prediction modes, and Planar and DC modes are excluded from intra prediction modes in case a nonzero reference line index is signalled.
[00184] MRL is disabled for the first line of blocks inside a CTU to prevent using extended reference samples outside the current CTU line. Also, PDPC is disabled when additional line is used.
[00185] 2.12 Intra Sub-Partitions (ISP)
[00186] The Intra Sub-Partitions (ISP) tool divides luma intra-predicted blocks vertically or horizontally into 2 or 4 sub-partitions depending on the block size. For example, minimum block size for ISP is 4x8 (or 8x4). If block size is greater than 4x8 (or 8x4) then the corresponding block is divided by 4 sub -partitions. FIGS. 12A and 12B show examples of the two possibilities. All sub-partitions fulfill the condition of having at least 16 samples.
Table 1: Entropy coding coefficient group size
Figure imgf000033_0001
[00187] For each sub-partition, reconstructed samples are obtained by adding the residual signal to the prediction signal. Here, a residual signal is generated by the processes such as entropy decoding, inverse quantization and inverse transform. Therefore, the reconstructed sample values of each sub-partition are available to generate the prediction of the next sub -partition, and each sub-partition is processed repeatedly. In addition, the first sub-partition to be processed is the one containing the top-left sample of the CU and then continuing downwards (horizontal split) or rightwards (vertical split). As a result, reference samples used to generate the sub-partitions prediction signals are only located at the left and above sides of the lines. All sub-partitions share the same intra mode. The followings are summary of interaction of ISP with other coding tools. [00188] - Multiple Reference Line (MRL): if a block has an MRL index other than 0, then the ISP coding mode will be inferred to be 0 and therefore ISP mode information will not be sent to the decoder.
[00189] - Entropy coding coefficient group size: the sizes of the entropy coding sub-blocks have been modified so that they have 16 samples in all possible cases, as shown in Table 1. Note that the new sizes only affect blocks produced by ISP in which one of the dimensions is less than 4 samples. In all other cases coefficient groups keep the 4 x 4 dimensions.
[00190] - CBF coding: it is assumed to have at least one of the sub-partitions has a non-zero
CBF. Hence, if n is the number of sub-partitions and the first n— 1 sub-partitions have produced a zero CBF, then the CBF of the n-th sub-partition is inferred to be 1.
[00191] - MPM usage: the MPM flag will be inferred to be one in a block coded by ISP mode, and the MPM list is modified to exclude the DC mode and to prioritize horizontal intra modes for the ISP horizontal split and vertical intra modes for the vertical one.
[00192] - Transform size restriction: all ISP transforms with a length larger than 16 points uses the DCT-II.
[00193] - PDPC: when a CU uses the ISP coding mode, the PDPC filters will not be applied to the resulting sub-partitions.
[00194] - MTS flag: if a CU uses the ISP coding mode, the MTS CU flag will be set to 0 and it will not be sent to the decoder. Therefore, the encoder will not perform RD tests for the different available transforms for each resulting sub-partition. The transform choice for the ISP mode will instead be fixed and selected according the intra mode, the processing order and the block size utilized. Hence, no signalling is required. For example, let tH and tv be the horizontal and the vertical transforms selected respectively for the w x h sub -partition, where w is the width and h is the height. Then the transform is selected according to the following rules:
[00195] o If w = 1 or h = 1, then there is no horizontal or vertical transform respectively.
[00196] o If w = 2 or w > 32, tH DCT-II
[00197]
Figure imgf000034_0001
32, tv DCT-II
[00198] o Otherwise, the transform is selected as in Table 2.
Table 2: Transform selection depends on intra mode
Figure imgf000034_0002
Figure imgf000035_0001
[00199] 2.13 Mode dependent intra smoothing (MDIS)
[00200] Four-tap intra interpolation filters are utilized to improve the directional intra prediction accuracy. In HEVC, a two-tap linear interpolation filter has been used to generate the intra prediction block in the directional prediction modes (i.e., excluding Planar and DC predictors).
In the VTM4, simplified 6-bit 4-tap Gaussian interpolation filter is used for only directional intra modes. Non-directional intra prediction process is unmodified. The selection of the 4-tap filters is performed according to the MDIS condition for directional intra prediction modes that provide non-fractional displacements, i.e. to all the directional modes excluding the following: 2,
HOR IDX, DIA IDX, VERJDX, 66.
[00201] Depending on the intra prediction mode, the following reference samples processing is performed:
[00202] 1. The directional intra-prediction mode is classified into one of the following groups:
[00203] A. vertical or horizontal modes (HOR IDX, VER IDX),
[00204] B. diagonal modes that represent angles which are multiple of 45 degree (2,
DIA IDX, VDIA IDX),
[00205] C. remaining directional modes;
[00206] 2. If the directional intra-prediction mode is classified as belonging to group A, then then no filters are applied to reference samples to generate predicted samples;
[00207] 3. Otherwise, if a mode falls into group B, then a [1, 2, 1] reference sample filter may be applied (depending on the MDIS condition) to reference samples to further copy these filtered values into an intra predictor according to the selected direction, but no interpolation filters are applied;
[00208] 4. Otherwise, if a mode is classified as belonging to group C, then only an intra reference sample interpolation filter is applied to reference samples to generate a predicted sample that falls into a fractional or integer position between reference samples according to a selected direction (no reference sample filtering is performed).
[00209] 2.14 Position dependent intra prediction combination (PDPC)
[00210] In the VTM4, the results of intra prediction of planar mode are further modified by a position dependent intra prediction combination (PDPC) method. PDPC is an intra prediction method which invokes a combination of the un-filtered boundary reference samples and HEVC style intra prediction with filtered boundary reference samples. PDPC is applied to the following intra modes without signaling: planar, DC, horizontal, vertical, bottom-left angular mode and its eight adjacent angular modes, and top-right angular mode and its eight adjacent angular modes.
[00211] The prediction sample predixy) is predicted using an intra prediction mode (DC, planar, angular) and a linear combination of reference samples according to the Equation as follows: pred(x,y)=(wLxR-i,y + w l'xRx,.\ - wTL xR.\,.\+(64 - H7. - wT+wTL)xpred(x,y ) + 32 )» 6
[00212] Herein, Rx,.i, R.\,y represent the reference samples located at the top and left of current sample (x, y), respectively, and R. i,-i represents the reference sample located at the top-left comer of the current block.
[00213] If PDPC is applied to DC, planar, horizontal, and vertical intra modes, additional boundary filters are not needed, as required in the case of HEVC DC mode boundary filter or horizontal/vertical mode edge filters.
[00214] FIGS. 13A-13D illustrate the definition of reference samples (Rx,. i, R.\,y and R-\ -\) for PDPC applied over various prediction modes. The prediction sample pred (x’, y’) is located at (x’, y’) within the prediction block. As an example, the coordinate x of the reference sample Rx,.\ is given by: x = x’ +y’ + 1, and the coordinate y of the reference sample R.\,y is similarly given by: y = x’ +y’ + 1 for the diagonal modes. For the other annular mode, the reference samples RX . i andA-i,^ could be located in fractional sample position. In this case, the sample value of the nearest integer sample location is used.
[00215] The PDPC weights are dependent on prediction modes and are shown in Table 3.
Table 3: Example of PDPC weights according to prediction modes
Figure imgf000036_0001
Figure imgf000037_0001
[00216] 2.15 Deblocking filter
[00217] In the VTM4, deblocking filtering process is mostly the same to those in HEVC.
However, the following modifications are added.
[00218] (a) The filter strength of the deblocking filter dependent of the averaged luma level of the reconstructed samples.
[00219] (b) Deblocking tC table extension
[00220] (c) Stronger deblocking filter for luma
[00221] (d) Stronger deblocking filter for chroma
[00222] 2.15.1 Stronger deblocking filter or for luma
[00223] A bilinear filter (stronger deblocking filter) is used when samples at either one side of a boundary belong to a large block. A sample belonging to a large block is defined as when the width is larger than or equal to 32 for a vertical edge, and when height is larger than or equal to 32 for a horizontal edge. Block boundary samples pi for i=0 to Sp-1 and qi for j=0 to Sq-1 are then replaced by linear interpolation as follows:
[00224] Pi' = ft * Middles t + (64— ft) * Ps + 32) » 6), clipped to pt ± tcPDi
[00225] qft = ( gj * Middles t + (64— p;) * Qs + 32) » 6), clipped to qj ± tcPDj
[00226] Herein, tcPDt and tcPDj term is a position dependent clipping and gj , ft, Middles t,
Ps and Qs are given below:
Table 4 Derivation of stronger deblocking parameters for luma
Figure imgf000037_0002
Figure imgf000038_0001
Above mentioned stronger luma filters are used on the block side larger than or equal to 32 when all of the Conditionl, Condition! are TRUE. The condition 1 is the“large block condition”. This condition detects whether the samples at P-side and Q-side belong to large blocks. The condition 2 and condition 3 are determined by:
Conditionl = (d < b) ? TRUE: FALSE
Condition! = StrongFilterCondition = (dpq is less than ( b » 2 ), sp3 + sq3 is less than ( 3*b » 5 ), and
Abs( po - qo ) is less than ( 5 * tc + 1 ) » 1) ? TRUE : FALSE [00227] 2.16 Triangle partition mode for inter prediction(TPM)
[00228] In VTM4, a triangle partition mode is supported for inter prediction. The triangle partition mode is only applied to CUs that are 8x8 or larger and are coded in skip or merge mode but not in MMVD or CUP mode. For a CU satisfying these conditions, a CU-level flag is signalled to indicate whether the triangle partition mode is applied or not.
[00229] When this mode is used, a CU is split evenly into two triangle-shaped partitions, using either the diagonal split or the anti-diagonal split (FIG. 14). Each triangle partition in the CU is inter-predicted using its own motion; only uni -prediction is allowed for each partition, that is, each partition has one motion vector and one reference index. The uni-prediction motion constraint is applied to ensure that same as the conventional bi-prediction, only two motion compensated prediction are needed for each CU. The uni -prediction motion for each partition is derived from a uni -prediction candidate list constructed using the process in 3.4.10.1.
[00230] If the CU-level flag indicates that the current CU is coded using the triangle partition mode. If triangle partition mode is used, then a flag indicating the direction of the triangle partition (diagonal or anti-diagonal), and two merge indices (one for each partition) are further signalled. After predicting each of the triangle partitions, the sample values along the diagonal or anti-diagonal edge are adjusted using a blending processing with adaptive weights. This is the prediction signal for the whole CU, and transform and quantization process will be applied to the whole CU as in other prediction modes. Finally, the motion field of a CU predicted using the triangle partition mode is stored in 4x4 units as in 2.16.3.
[00231] 2.16.1 Uni-prediction candidate list construction
[00232] The uni -prediction candidate list consists of five uni -prediction motion vector candidates. It is derived from seven neighboring blocks including five spatial neighboring blocks (labelled 1 to 5 in FIG. 15) and two temporal co-located blocks (labelled 6 to 7 in FIG. 15). The motion vectors of the seven neighboring blocks are collected and put into the uni -prediction candidate list according to the following order: first, the motion vectors of the uni-predicted neighboring blocks; then, for the bi-predicted neighboring blocks, the L0 motion vectors (that is, the L0 motion vector part of the bi-prediction MV), the LI motion vectors (that is, the LI motion vector part of the bi-prediction MV), and averaged motion vectors of the L0 and LI motion vectors of the bi-prediction MVs. If the number of candidates is less than five, zero motion vector is added to the end of the list.
[00233] 2.16.2 Blending along the triangle partition edge
[00234] After predicting each triangle partition using its own motion, blending is applied to the two prediction signals to derive samples around the diagonal or anti-diagonal edge. The following weights are used in the blending process:
[00235] o 7/8, 6/8, 5/8, 4/8, 3/8, 2/8, 1/8} for luma and (6/8, 4/8, 2/8} for chroma, as shown in FIG. 16.
[00236] 2.16.3 Motion field storage
[00237] The motion vectors of a CU coded in triangle partition mode are stored in 4x4 units. Depending on the position of each 4x4 unit, either uni -prediction or bi-prediction motion vectors are stored. Denote Mvl and Mv2 as uni -prediction motion vectors for partition 1 and partition 2, respectively. If a 4x4 unit is located in the non-weighted area shown in the example of FIG. 16, either Mvl or Mv2 is stored for that 4x4 unit. Otherwise, if the 4x4 unit is located in the weighted area, a bi-prediction motion vector is stored. The bi-prediction motion vector is derived from Mvl and Mv2 according to the following process:
[00238] 1) If Mvl and Mv2 are from different reference picture lists (one from L0 and the other from LI), then Mvl and Mv2 are simply combined to form the bi-prediction motion vector.
[00239] 2) Otherwise, if Mvl and Mv2 are from the same list, and without loss of generality, assume they are both from L0. In this case,
[00240] 2. a) If the reference picture of either Mv2 (or Mvl) appears in LI, then that
Mv2 (or Mvl) is converted to a LI motion vector using that reference picture in LI. Then the two motion vectors are combined to form the bi-prediction motion vector;
[00241] 2.b) Otherwise, instead of bi-prediction motion, only uni-prediction motion
Mvl is stored.
[00242] 3. Examples of Problems Solved by Embodiments
[00243] Some coding tools (e.g. IBC, intra prediction, Deblocking) are designed without considering the feature of screen contents which may result in several problems as follows: [00244] (1) The chroma IBC is performed at sub block level and the chroma IBC flag is always signaled. The signaling of the chroma IBC flag may have redundancy when not all sub blocks have valid block vectors.
[00245] (2) Intra prediction may be less efficient for screen contents coding due to the filtering process.
[00246] (3) PDPC may be less efficient for screen content.
[00247] (4) Long tap deblock filters may be less efficient for screen content.
[00248] (5) RDPCM may be less efficient due to the dual tree structure
[00249] (6) The IBC mode may prefer transform skip mode because both of them are designed for screen content coding.
[00250] (7) Blending in the current TPM design may be inefficient for screen content.
[00251] (8) Triangular prediction mode (TPM) is only allowed for B slices since for the weighted area, bi-prediction is applied with position-dependent weights for one of the two prediction blocks generated from motion information of each partition.
[00252] 4. Example methods for IBC for screen content coding
[00253] The detailed inventions below should be considered as examples to explain general concepts. These inventions should not be interpreted in a narrow way. Furthermore, these inventions can be combined in any manner.
1. Whether to signal the indication of IBC mode for a chroma block may be based on whether IBC is enabled for one or multiple selected luma blocks.
a. In one example, when different partition structure is allowed for luma and chroma components (e.g., dual tree is enabled), whether to signal the indication of IBC mode for a chroma block may be based on whether IBC is enabled for one or multiple selected luma blocks.
b. In one example, signaling of the indication of IBC mode for a chroma block may be skipped when one or multiple of the selected luma blocks are not coded with IBC mode, e.g., when none of them are coded with IBC mode.
i. Alternatively, furthermore, when it is not signaled, usage of IBC mode of the chroma block may be inferred to be false. c. In one example, the indication of IBC mode for a chroma block may be signaled when at least one of the selected luma blocks is coded with IBC mode. i. Alternatively, the indication of IBC mode for a chroma block may be signaled when all of the selected luma blocks are coded with IBC mode. d. In one example, the size of the selected luma block may be the smallest
CU/PU/TU size or the unit for motion/mode storage (such as 4x4).
e. In one example, a selected luma block may be the CU/PU/TU covering the center, top left, top right, bottom left or bottom right position of the
corresponding luma region. An example of a corresponding luma region is shown in the FIG. 17.
i. In one example, suppose the top -left coordinate of current chroma block is (xO, yO), width and height of the current chroma block is wO and hO, respectively. The coordinate of top-left sample in the corresponding luma region, width and height of the corresponding luma region may be scaled according to the color format.
1) for the 4:2:0 color format, the top-left coordinate of the
collocated luma region is (2*x0, 2*y0), its width and height are 2*w0 and 2*h0, respectively.
2) for the 4:4:4 color format, the top-left coordinate of the
collocated luma region is (xO, yO), its width and height are wO and hO, respectively.
ii. Suppose the top-left coordinate of the collocated luma region is (x, y) and its width and height are W and H, then coordinate of the center position may be:
1) (x+W/2, y+H/2)
2) (x+W/2- 1, y+H/2- 1)
3) (x+W/2, y+H/2- 1)
4) (x+W/2- 1, y+H/2) iii. Suppose the top-left coordinate of the collocated luma region is (x, y) and its width and height are W and H, then coordinate of the top-left position may be (x, y).
iv. Suppose the top-left coordinate of the collocated luma region is (x, y) and its width and height are W and H, then coordinate of the top-right position may be:
1) (x + W, y)
2) (x + W - 1, y)
v. Suppose the top-left coordinate of the collocated luma region is (x, y) and its width and height are W and H, then coordinate of the bottom-left position may be:
1) (x, y + H)
2) (x, y + H - 1)
Figure imgf000043_0001
Suppose the top-left coordinate of the collocated luma region is (x, y) and its width and height are W and H, then coordinate of the bottom- right position may be:
1) (x + W, y + H)
2) (x + W, y + H - 1)
3) (x + W - l, y + H)
4) (x + W - l, y + H - 1)
Whether to signal the indication of IBC mode for a chroma block may be based on whether IBC is enabled for one or multiple selected luma blocks and chroma neighboring (adjacent or/and non-adjacent) blocks.
a. In one example, when different partition structure is allowed for luma and
chroma components (e.g., dual tree is enabled), the above method may be enabled.
b. In one example, signaling of the indication of IBC mode for a chroma block may be skipped when one or multiple of the selected luma blocks and chroma neighboring blocks are not coded with IBC mode, e.g., when none of them are coded with IBC mode. i. Alternatively, furthermore, when it is not signaled, usage of IBC mode of the chroma block may be inferred to be false.
c. In one example, the indication of IBC mode for a chroma block may be
signaled when at least one of the selected luma blocks and chroma neighboring blocks is coded with IBC mode.
i. Alternatively, the indication of IBC mode for a chroma block may be signaled when all of the selected luma blocks and chroma neighboring blocks are coded with IBC mode.
d. In one example, two chroma neighboring blocks may be utilized, such as the left and above in FIG. 10.
A default intra mode may be used to generate the prediction when IBC mode is inferred to be false or bv is invalid.
a. In one example, the intra mode indicated by a certain MPM intra mode may be used when IBC mode is inferred to be false or bv is invalid
i. In one example, the 1st mode in MPM is used.
ii. In one example, the 1st available mode in MPM is used.
b. In one example, a predefined intra prediction mode may be used when IBC mode is inferred to be false or bv is invalid.
i. In one example, PLANNAR mode may be used.
ii. In one example, DC mode may be used.
iii. In one example, RDPCM mode may be used.
iv. In one example, DM mode may be used for chroma block. v. In one example, LM mode may be used for chroma block. c. In one example, an intra mode to be used may be signaled in the
DP S/SPS/VPS/PPS/AP S/picture header/slice header/tile group header/ Largest coding unit (LCU)/Coding unit (CU)/LCU row/group of LCUs
It is proposed to enable IBC mode for a block, even for some sub-blocks within the block are not associated with valid block vectors. a. In one example, the above method may be applied to chroma blocks, and the block vector of a chroma sub-block may be derived from the corresponding luma block or derived from the bitstream.
b. In one example, if a bv of the corresponding luma block is not existing, it may be treated as invalid.
c. In one example, if a prediction block identified by a bv is not reconstructed yet, the bv may be treated as invalid.
d. In one example, if a prediction block identified by a bv is partially or fully overlapped with the current block, the bv may be treated as invalid.
e. In one example, if a prediction block identified by a bv is partially or outside of the IBC search range/IBC reference region, the bv may be treated as invalid. A prediction block of an IBC-coded block may be filled with a default value. And whether to use default value or use a reference block pointed by a block vector for an IBC-coded chroma sub-block may depend on the availability of the sub-block.
a. In one example, a sub-block may be regarded as“unavailable” when it does not have a valid block vector or motion vector.
i. Alternatively, furthermore, in one example, a sub-block may be
unavailable if its corresponding luma block is not coded with IBC mode.
ii. Alternatively, furthermore, in one example, a sub-block may be unavailable if its corresponding luma block is coded with IBC mode but its motion vector or block vector is not valid for the current chroma sub block.
b. In one example, the chroma IBC may use a default value to fill up unavailable sub blocks only during the block copy process. The available sub blocks follow the original block copy process.
c. In one example, the chroma IBC may use a default value to fill up all sub
blocks if only any sub-block is unavailable.
i. In one example, an unavailable sub block may denote it does not have a valid block vector or motion vector. 1) Alternatively, furthermore, in one example, a sub block may be unavailable if its corresponding luma block is not coded with IBC mode.
2) Alternatively, furthermore, in one example, a sub block may be unavailable if its corresponding luma block is coded with IBC mode but its motion vector or block vector is not valid for the current sub block.
d. In one example, a default value may be an integer sample value (e.g. 128 or 512) and it may be based on
i. The sample bit-depth
ii. The reconstructed samples of previously coded/decoded pictures iii. The reconstructed samples of adjacent/non-adjacent neighbouring
blocks.
iv. Alternatively, the default value may be signaled in a video unit, such as DPS/VPS/SPS/PPS/APS/slice header/tile group header/CTU/CU. The motion/block vector of a block/sub-block/sample in a chroma IBC coded block may be derived based on the motion/block vectors of neighboring chroma blocks. a. Alternatively, furthermore, when the block vector cannot be derived from the selected luma blocks in the corresponding luma region, the above method may be applied.
b. In one example, the motion/block vector of a block/sub-block/sample in a chroma IBC coded block may be derived based on the left neighboring blocks. i. For example, the block vector may be copied from the block vector of the left neighboring block(s)
c. In one example, the motion/block vector of a block/sub-block/sample in a chroma IBC coded block may be derived based on the above neighboring blocks.
i. For example, the block vector may be copied from the block vector of the above neighboring block(s) d. In one example, multiple neighbouring chroma blocks may be checked orderly to find a block vector which is valid for the current chroma block.
e. In one example, the left neighboring blocks and above neighboring block may be the blocks marked as L and A, as shown in FIG. 18.
f. In one example, suppose the top -left coordinate of the current chroma block is (x, y) and its width and height are W and H, then a neighboring block may be a basic block (such as 4x4 block) covering the position:
i. (x - 1, y + i), where i is an integer number and ranges from 0 to 2*H ii. (x + i, y - 1), where i is an integer number and ranges from 0 to 2*W Indication of the video content (e.g, screen or camera-captured) may be
signaled/derived in a sequence/picture/slice/tile/brick/view/other video unit-level. In addition, the following methods may be further enabled:
a. Whether to apply and/or how to apply intra prediction process may be based on video contents.
i. In one example, the intra prediction may use the nearest integer sample of a sub-sample in the reference samples row or column as the prediction to replace the interpolation process based on video contents (e.g screen contents or natural contents).
ii. In one example, the PDPC may be disabled based on video contents (e.g screen contents or natural contents).
iii. In one example, the intra reference smoothing may be disabled based on video contents (e.g screen contents or natural contents). iv. In one example, matrix-based intra prediction may be disabled for screen content.
b. Whether to apply and/or how to apply inter predictions process may be based on video contents.
i. In one example, the AMVR may be disabled based on video contents (e.g screen contents or natural contents). ii. In one example, the fractional motion vectors may be not allowed based on video contents (e.g screen contents or natural contents).
iii. In one example, BDOF may be disabled for screen content
iv. In one example, DMVR may be disabled for screen content
v. In one example, affine motion compensation may be disabled for screen content
vi. In one example, the blending process (e.g., the weighted predictions derived from motion information of two partitions for the weighted area as defined in section 2.16.2) in the TPM may be disabled for screen contents.
1) In one example, samples in the weighted area are treated in the same way as one of the two partitions, i.e., with uni -prediction according to the motion information of one the two partitions. Let A and B be the motion compensated blocks obtained from the motion information of partition 0 and partition 1, respectively. In one example, the partition 0 and partition 1 are shown in FIGS. 19A and 19B under diagonal and anti-diagonal split directions, respectively.
a. In one example, in the blending process, for samples located at the weighted area, the weights of A and B may be 1 and 0, respectively.
i. In one example, for all splitting directions, this method may be applied.
b. Alternatively, in the blending process, for samples
located at the weighted area, the weights of A and B may be 0 and 1, respectively.
i. In one example, for the diagonal splitting
direction, this method may be applied.
ii. In one example, for the anti-diagonal splitting direction, this method may be applied. c. In one example, each sample may select its weights for A and B instead of being restricted to be within a partition. i. In one example, for a given position in a block coded with TPM, the A and B weights for that position may be { 1, 0} or {0, 1 }.
d. How to select the weights/partition that motion
information is associated with for generating the prediction block of samples located at weighted area and/or non-weighted area may be fixed, such as using sub-bullet a.
i. Alternatively, it may be changed from block to block according to decoded information.
1. In one example, the decoded
information may be the splitting direction, such as according to sub-bullet b.
2. In one example, the decoded information may be the decoded merge indices.
a. In one example, if the merge index of partition 0 is smaller than that for partition 1, weights for A may be set to M (e.g., M = 1).
b. In one example, if the merge index of partition 0 is greater than that for partition 1, weights for B may be set to M.
3. In one example, the decoded information may be the reference picture/motion information.
a. In one example, if the reference index of partition 0 is smaller or no larger than that for partition 1, weights for A may be set to M (e.g., M = 1).
b. In one example, if the motion vector (MV) of partition 0 is smaller or no larger than that for partition 1, weights for A may be set to M (e.g., M = 1).
i. In one example, MVO is no larger than MV1 may be defined as abs(MV0.x) + abs(MV0.y) <= abs(MVl.x) + abs(MVl.y) where the x and y are the horizontal and vertical components of a MV and abs is an operation to get the absolute value of an input. ii. In one example, MVO is no larger than MV1 may be defined as max(abs(MV0.x), abs(MV0.y)) <= max(abs(MVl.x), abs(MVl.y)) where the x and y are the horizontal and vertical components of a MV, max is an operation to get a larger one from two inputs and abs is an operation to get the absolute value of an input.
iii. In one example, MVO is smaller than MV1 may be defined as abs(MV0.x) + abs(MV0.y) < abs(MVl.x) + abs(MVl.y) where the x and y are the horizontal and vertical components of a MV and abs is an operation to get the absolute value of an input.
iv. In one example, MVO is smaller than MV1 may be defined as max(abs(MV0.x), abs(MV0.y)) < max(abs(MVl.x), abs(MVl.y)) where the x and y are the horizontal and vertical components of a MV, max is an operation to get a larger one from two inputs and abs is an operation to get the absolute value of an input.
In one example, the decoded information may be where the merge candidates are derived from (e.g., from which spatial neighboring block or from temporal or HMVP).
2) In one example, equal weights may be applied to samples in the weighted area.
3) For above methods, the weighted area may only include the samples located at the diagonal/anti-diagonal lines of a block. a. Alternatively, the weighted area may be the whole block.
4) In one example, the above methods (e.g., the blending process) may be performed at sub block level.
a. In one example, the above methods may be applied on the sub blocks with certain positions.
b. In one example, the above methods may be applied on the samples in the sub blocks containing the samples located on the diagonal or anti-diagonal lines (as the weighted area, marked as grey regions in Fig.23 A-C)
vii. In one example, the number of weighting lines in the blending process in the TPM may be reduced for screen contents.
1) In one example, the number of weighting lines for luma and chroma blocks may be N and M diagonal or anti -diagonal lines, at least one of the two conditions is true: N is smaller than 7, M is smaller than 3.
a. In one example, the M may remain 3 and the N may be 3 as well.
i. Alternatively, furthermore, the current blending process on chroma blocks may be applied on luma blocks as well.
b. In one example, M and N may be based on i. Video contents (e.g. screen contents or natural contents) ii. A message signaled in the
DP S/SPS/VPS/PPS/AP S/picture header/slice header/tile group header/ Largest coding unit (LCUyCoding unit (CU)/LCU row/group of LCUs/TU/PU
iii. Block dimension of current block and/or its neighboring blocks
iv. Block shape of current block and/or its
neighboring blocks
v. Indication of the color format (such as 4:2:0, 4:4:4)
vi. Coding tree structure
vii. Slice/tile group type and/or picture type viii. Color component (e.g. may be only applied on chroma components or luma component) ix. Temporal layer ID
x. Profiles/Levels/Tiers of a standard
c. Whether to apply and/or how to apply deblocking may be based on video contents.
i. In one example, the long tap filters may be disabled based on video contents (e.g screen contents or natural contents).
ii. In one example, the deblocking filters may be disabled based on video contents (e.g screen contents or natural contents).
It is proposed to store only uni -prediction information for all sub-blocks within the TPM coded blocks. Denote the motion information of two partitions by MvInfoO and Mvlnfol, e.g., MvInfoO and Mvlnfol are corresponding to the motion information of partition 0 and partition 1, respectively, in FIGS. 19A and 19B.
a. In one example, for a sub-block, the uni-prediction information may be
identical to one of MvInfoO and Mvlnfol. b. In one example, for a sub-block, the uni-prediction information may be derived from MvInfoO and/or Mvlnfol.
c. In one example, for a sub-block, the motion information to be stored may be determined by the following rules:
i. In one example, the rule includes the reference picture indices/MV values/POC values of reference pictures.
1) In one example, if the reference index of MvInfoO is smaller or no larger than that for Mvlnfol, MvInfoO may be stored.
ii. In one example, if the motion vector (MV) of MvInfoO is smaller or no larger than that for Mvlnfol, MvInfoO may be stored.
1) In one example, MVO is no larger than MV1 may be defined as abs(MV0.x) + abs(MV0.y) <= abs(MVl.x) + abs(MVl.y) where the x and y are the horizontal and vertical components of a MV and abs is an operation to get the absolute value of an input.
2) In one example, MVO is no larger than MV1 may be defined as max(abs(MV0.x), abs(MVO.y)) <= max(abs(MVl.x), abs(MVl.y)) where the x and y are the horizontal and vertical components of a MV, max is an operation to get a larger one from two inputs and abs is an operation to get the absolute value of an input.
3) In one example, MVO is smaller than MV1 may be defined as abs(MV0.x) + abs(MVO.y) < abs(MVl.x) + abs(MVl.y) where the x and y are the horizontal and vertical components of a MV and abs is an operation to get the absolute value of an input.
4) In one example, MVO is smaller than MV1 may be defined as max(abs(MV0.x), abs(MVO.y)) < max(abs(MVl.x), abs(MVl.y)) where the x and y are the horizontal and vertical components of a MV, max is an operation to get a larger one from two inputs and abs is an operation to get the absolute value of an input. iii. In one example, the above methods may be only applied to sub-blocks at certain positions, such as sub-blocks which contains samples located on the diagonal or anti-diagonal lines (The grey regions in FIG. 20).
iv. In one example, the above methods may be only applied to sub-blocks at the weighted area, such as those depicted in FIGS. 21A-21C.
d. In one example, the above methods may be applied when bullet 7 is applied. e. In one example, the above methods may be applied under conditions, such as when the video content is screen content or when a flag that indicates these methods are enabled.
Triangular Prediction Mode (TPM) is conditionally enabled for a video unit with uni prediction (e.g., P pictures/slices/tiles/bricks/independent sub-region/CU/PU).
a. In one example, an indication of allowing TPM for a video unit may be conditionally signaled when each sample within one TPM-coded block is predicted from only one set of motion information and for each unit for motion storage, only one set of motion information.
i. Alternatively, an indication of allowing TPM for a video unit may be conditionally signaled. The conditions may include: 1) when the flag which disables TPM blending or screen content is true and 2) current video unit is uni -prediction.
b. For one picture/slice/tile/brick or other video unit, TPM may be applied in different ways, e.g., the motion storage and/or motion compensation (e.g., how to apply blending) may be adaptively changed.
i. In one example, the way how to enable/apply TPM may be dependent on prediction unit (e.g., uni- or bi-prediction).
Whether to enable RDPCM may depend on the coding tree structure type.
a. In one example, for a given coding tree structure type (e.g., dual tree), the
signaling of indication of RDPCM mode and/or other syntax related to RDPCM mode, may be skipped and the RDPCM information may be inferred.
b. In one example, the indication of the RDPCM mode may be inferred as false when dual coding tree structure type is applied. Whether to enable QR-BDPCM may depend on the coding tree structure type.
a. In one example, for a given coding tree structure type (e.g., dual tree), the
signaling of indication of QR-BDPCM mode and/or other syntax related to QR- BDPCM mode, may be skipped and the QR-BDPCM information may be inferred.
b. In one example, the indication of the QR-BDPCM mode may be inferred as false when dual coding tree structure type is applied.
Whether to enable CCLM may depend on the coding tree structure type.
a. In one example, for a given coding tree structure type (e.g., dual tree), the
signaling of indication of CCLM mode and/or other syntax related to CCLM mode, may be skipped and the CCLM information may be inferred.
b. In one example, the indication of the CCLM mode may be inferred as false when dual coding tree structure type is applied.
For a certain size of IBC block, transform skip (TS) mode may be always applied a. In one example, the indication of TS mode may be inferred to be true when the prediction mode is IBC of a certain size
i. Alternatively, the indication of TS mode may be inferred to be false when the prediction mode is IBC.
ii. In one example, for 4x4 IBC block, TS mode may always be applied. iii. In one example, for IBC block with size larger than 32x32, TS mode may always be applied.
b. In one example, usage of DCT transform may be inferred to be false when the prediction mode is IBC of a certain size.
i. Alternatively, usage of DCT transform may be inferred to be true when the prediction mode is IBC.
For a certain size of IBC block, transform skip (TS) mode could be applied.
a. In one example, the transform skip could be applied on when the prediction mode is IBC of a certain size. (e.g. a 64x64 block coded with IBC mode) For a certain size of IBC block, a predefined transform (including identity transform, i.e. transform skip) may be always applied. a. In one example, when the width of the block is within a certain range, a predefined transform may be always applied as the horizontal transform. i. In one example, when the width is equal or less than a given threshold T1 and/or equal or larger than a given threshold T2, TS may be always applied as the horizontal transform.
1) Otherwise, DCT2 may be always applied as the horizontal transform.
2) In one example, T1 is equal to 16.
3) In one example, T2 is equal to 4.
b. In one example, when the height of the block is within a certain range, TS may be always applied as the vertical transform.
i. In one example, when the height is equal or less than a given threshold T3 and/or equal or larger than a given threshold T4, TS may be always applied as the vertical transform.
1) Otherwise, DCT2 may be always applied as the vertical
transform.
2) In one example, T3 is equal tol6.
3) In one example, T4 is equal to 4.
c. The threshold may be signal in the DPS/SPS/VPS/PPS/APS/picture
header/slice header/tile group header/ Largest coding unit (LCU)/Coding unit (CU)/LCU row/group of LCUs
d. Whether to the above mechanism may be controlled by a flag signaled in the DPS/SPS/VPS/PPS/APS/picture header/slice header/tile group header/ Largest coding unit (LCU)/Coding unit (CU)/LCU row/group of LCUs.
ether to and/or how to apply above methods may be based on:
a. Video contents (e.g. screen contents or natural contents)
b. A message signaled in the DPS/SPS/VPS/PPS/APS/picture header/slice
header/tile group header/ Largest coding unit (LCU)/Coding unit (CU)/LCU row/group of LCUs/TU/PU
c. Block dimension of current block and/or its neighboring blocks d. Block shape of current block and/or its neighboring blocks
e. Indication of the color format (such as 4:2:0, 4:4:4)
f. Coding tree structure
g. Slice/tile group type and/or picture type
h. Color component (e.g. may be only applied on chroma components or luma component)
i. Temporal layer ID
j. Profiles/ Levels/Tiers of a standard
[00254] 5. Exemplary embodiments of the disclosed technology
[00255] The embodiments described in Section 5.1 and 5.2 are based on JVET-N1001-v4. The changes are enclosed in bolded double braces, i.e., {{ · }}.
[00256] 5.1 Embodiment #1
[00257] This sub-section gives an example on chroma IBC mode signaling.
[00258] 5.1.1 Embodiment #1-1
7.3.7.5 Coding unit syntax
Figure imgf000058_0001
Figure imgf000059_0001
{{ pred mode chroma ibc flag equal to 1 specifies that the current chorma coding unit is codec in IBC prediction mode when dual tree is enabled pred mode chroma ibc flag equal to 0 specifies that the current coding unit is not coded in IBC prediction mode.
When pred mode ibc flag is not present, it is inferred as follows:
If cu_skip_flag[ xO ][ yO ] is equal to 1, and cbWidth is equal to 4, and cbHeight is equal to 4, pred mode chroma ibc flag is inferred to be equal 1.
Otherwise, pred mode chroma ibc flag is infered to be equal to the value of
sps ibc enabled flag when decoding an I slice, and 0 when decoding a P or B slice, respectively.
When pred mode ibc flag is equal to 1, the variable CuPredMode[ x ][ y ] is set to be equal to MODE IBC CHROMA for x = cq .cq + cbWidth - 1 and y = y0..y0 + cbHeight - 1. }}
[00259] 5.1.2 Embodiment #1-2
7.3.7.5 Coding unit syntax
Figure imgf000059_0002
Figure imgf000060_0001
[00260] 5.2 Embodiment #2
[00261] This sub-section gives an example on signaling and usage of video content. 7.3.2.3 Sequence parameter set RBSP syntax
Figure imgf000060_0002
7.3.5 Slice header syntax
7.3.5.1 General slice header syntax
Figure imgf000060_0003
7.3.2.3 Sequence parameter set RBSP syntax
Figure imgf000060_0004
Figure imgf000061_0001
7.3.5 Slice header syntax
7.3.5.1 General slice header syntax
Figure imgf000061_0002
sps_{{tpm_blending_off}} flag equal to 1 specifies that bledning process is replaced by directly copying. When sps tpm blending off flag is not present, it is inferred to be equal to 0.
slice_{{tpm_blending_off}}_flag equal to 1 specifies that bledning process is replaced by directly copying. When slice scc flag is not present, it is inferred to be equal to 0.
8.4.4.2.4 Reference sample filtering process
Inputs to this process are:
- a variable refldx specifying the intra prediction reference line index,
- a variable nTbW specifying the transform block width,
- a variable nTbH specifying the transform block height,
- a variable refW specifying the reference samples width,
- a variable refH specifying the reference samples height,
- the (unfiltered) neighbouring samples refUnfiltf x ][ y ], with
x = -1 - refldx, y = -1 - refldx.. refH - 1 and x = -refldx.. refW - 1, y = -1 - refldx,
- a variable cldx specifying the colour component of the current block.
Outputs of this process are the reference samples p[ x ][ y ], with
x = -1 - refldx, y = -1 - refldx.. refH - 1 and x = -refldx.. refW - 1, y = -1 - refldx.
The variable filterFlag is derived as follows: - If all of the following conditions are true, filterFlag is set equal to 1
- refldx is equal to 0
- { { tilc group scc flag is 0} }
- nTbW * nTbH is greater than 32
- cldx is equal to 0
- IntraSubPartitions SplitType is equal to ISP NO SPLIT
- one or more of the following conditions is true:
- predModelntra is equal to INTRA PLANAR
- predModelntra is equal to INTRA_ANGULAR34
- predModelntra is equal to INTRA ANGULAR2 and nTbH is greater than or equal to nTbW
- predModelntra is equal to INTRA ANGULAR66 and nTbW is greater than or equal to nTbH
- Otherwise, filterFlag is set equal to 0.
For the derivation of the reference samples p[ x ][ y ] the following applies:
- If filterFlag is equal to 1, the filtered sample values p[ x ][ y ] with x = -1, y = -L.refH - 1 and x = 0..refW - 1, y = -1 are derived as follows:
- Otherwise, the reference samples values p[ x ][ y ] are set equal to the unfiltered sample values refUnfilt[ x ][ y ] with x = -1- refldx, y = -1- refldx..refH - 1 and
x = -refldx.. refW - 1, y = -1- refldx.
8.4.4.2.9 Position-dependent intra prediction sample filtering process
Inputs to this process are:
- the intra prediction mode predModelntra,
- a variable nTbW specifying the transform block width,
- a variable nTbH specifying the transform block height,
- a variable refW specifying the reference samples width,
- a variable refH specifying the reference samples height,
- the predicted samples predSamples[ x ][ y ], with x = O.mTbW - 1, y = O.mTbH - 1,
- the neighbouring samples p[ x ][ y ], with x = -1, y = -L.refH - 1 and x = 0..refW - 1, y = -1,
- a variable cldx specifying the colour component of the current block.
Outputs of this process are the modified predicted samples predSamples[ x ][ y ] with
x = O.mTbW - 1, y = O. TbH - 1.
Depending on the value of cldx, the function cliplCmp is set as follows:
- If cldx is equal to 0, cliplCmp is set equal to Clip 1 > . - Otherwise, cliplCmp is set equal to Cliplc.
The variable nScale is set to ( ( Log2( nTbW ) + Log2( nTbH ) - 2 ) » 2 ) .
The reference sample arrays mainRef[ x ] and sideRef[ y ], with x = 0..refW - 1 and y = C refH - 1 are derived as follows:
mainRef[ x ] = p[ x ][ -1 ] (8-226)
sideReff y ] = p[ -1 ][ y ]
The variables refL[ x ][ y ], refT[ x ][ y ], wT[ y ], wL[ x ] and wTL[ x ][ y ] with
x = 0..nTbW - 1, y =0..nTbH - 1 are derived as follows:
{ {Iftile_group_scc flag is 1, the refL[ x ][ y ], refT[ x ][ y ], wT[ y ], wL[ x ] and wTL[ x ][ y ] are all set equal to 0.} }
- Otherwise, the following applies
- If predModelntra is equal to INTRA PLANAR or INTRA DC, the following applies:
- Otherwise, if predModelntra is equal to INTRA ANGULARl 8 or INTRA_ANGULAR50, the following applies:
- Otherwise, if predModelntra is equal to INTRA_ANGULAR2 or INTRA_ANGULAR66, the following applies:
- Otherwise, if predModelntra is less than or equal to INTRA_ANGULAR10, the following ordered steps apply:
- Otherwise, if predModelntra is greater than or equal to INTRA_ANGULAR58, the following ordered steps apply:
- Otherwise, refL[ x ][ y ], refT[ x ][ y ], wT[ y ], wL[ x ] and wTL[ x ][ y ] are all set equal to 0. The values of the modified predicted samples predSamplesf x ][ y ], with
x = O.mTbW - 1, y =0..nTbH - 1 are derived as follows:
predSamplesf x ][ y ] = cliplCmp( ( refL[ x ][ y ] * wL[ x ] + refT[ x ][ y ] * wT[ y ] - p[ -l ][ -l ] * wTL[ x ][ y ] + (8-254) ( 64 - wL[ x ] - wT[ y ] + wTL[ x ][ y ] ) * predSamplesf x ][ y ] + 32 )
» 6 ) 8.4.4.2J Specification of INTRA ANGULAR2..INTRA ANGULAR66 intra prediction modes
Inputs to this process are:
- the intra prediction mode predModelntra,
- a variable refldx specifying the intra prediction reference line index,
- a variable nTbW specifying the transform block width,
- a variable nTbH specifying the transform block height,
- a variable refW specifying the reference samples width,
- a variable refH specifying the reference samples height,
- a variable nCbW specifying the coding block width,
- a variable nCbH specifying the coding block height,
- a variable cldx specifying the colour component of the current block,
- the neighbouring samples p[ x ][ y ], with x = -1- refldx, y = -1- refldx..refH - 1 and
x = -refldx.. refW - 1, y = -1- refldx.
Outputs of this process are the modified intra prediction mode predModelntra and the predicted samples predSamples[ x ][ y ], with x = C nTbW - 1, y = C nTbH - 1.
The variable nTbS is set equal to ( Log2 ( nTbW ) + Log2 ( nTbH ) ) » 1.
- If predModelntra is greater than or equal to 34, the following ordered steps apply:
1. The reference sample array ref[ x ] is specified as follows:
2. The values of the prediction samples predSamples[ x ][ y ], with x = O.mTbW - 1, y = O.mTbH - 1 are derived as follows:
The index variable ildx and the multiplication factor iFact are derived as follows: ildx = ( ( y + 1 + refldx ) * intraPredAngle ) » 5 + refldx (8-137) iFact = ( ( y + 1 + refldx ) * intraPredAngle ) & 31 (8-138)
If cldx is equal to 0, the following applies:
{{Iftile_group_scc_flag is 1, predSamples[ x ][ y ] is set to ref[ x + ildx + 1 ]
Othewise, the following applies:}}
i. The interpolation filter coefficients fT[ j ] with j = 0..3 are derived as follows: fT[ j ] = filterFlag ? fG[ iFact ][j ] : fC[ iFact ][j ] (8-139) ii. The value of the prediction samples predSamples[ x ][ y ] is derived as follows: predSamples[ x ][ y ] = CliplY( ( ( fT[ i ] * ref[ x + ildx + i ] ) + 32 ) » 6 ) (8-140)
- Otherwise (cldx is not equal to 0), depending on the value of iFact, the following applies:
{{ If tile_group_scc_flag is 1, predSamples} x ][ y ] is set to ref[ x + ildx + 1 ]
- Otherwise, the following applies: }}
- If iFact is not equal to 0, the value of the prediction samples predSamples} x ][ y ] is derived as follows:
predSamples} x ][ y ] =
( ( 32 - iFact ) * ref[ x + ildx + 1 ] + iFact * ref[ x + ildx + 2 ] + 16 ) » 5(8-141)
- Otherwise, the value of the prediction samples predSamples} x ][ y ] is derived as
follows:
predSamples} x ][ y ] = ref[ x + ildx + 1 ] (8-142)
- Otherwise (predModelntra is less than 34), the following ordered steps apply:
1. The reference sample array ref[ x ] is specified as follows:
2. The values of the prediction samples predSamples} x ][ y ], with x = O.mTbW - 1, y = 0..nTbH - 1 are derived as follows:
- The index variable ildx and the multiplication factor iFact are derived as follows:
ildx = ( ( x + 1 + refldx ) * intraPredAngle ) » 5 (8-150) iFact = ( ( x + 1 + refldx ) * intraPredAngle ) & 31 (8-151)
- If cldx is equal to 0, the following applies:
{{Iftile_group_scc_flag is 1, predSamples} x ][ y ] is set to ref[ x + ildx + 1 ]
Othewise, the following applies:}}
The interpolation filter coefficients fT[ j ] with j = 0..3 are derived as follows:
fT[ j ] = filterFlag ? fG[ iFact ][ j ] : fC[ iFact ][ j ] (8-152)
- The value of the prediction samples predSamples} x ][ y ] is derived as follows:
predSamples} x ][ y ] = Clip 1Y( ( (
Figure imgf000065_0001
fT[ i ] * ref[ y + ildx + i ] ) + 32 ) » 6 ) (8-153)
- Otherwise (cldx is not equal to 0), depending on the value of iFact, the following applies:
- {{Iftile_group_scc_flag is 1, predSamples} x ][ y ] is set to ref[ x + ildx + 1 ]
- Othewise, the following applies:}}
- If iFact is not equal to 0, the value of the prediction samples predSamples} x ][ y ] is derived as follows: predSamples[ x ][ y ] =
( ( 32 - iFact ) * ref[ y + ildx + 1 ] + iFact * ref[ y + ildx + 2 ] + 16 ) » 5(8-154)
- Otherwise, the value of the prediction samples predSamplesf x ][ y ] is derived as follows:
predSamplesf x ][ y ] = ref[ y + ildx + 1 ]. (8-155)
8.8.3.3 Derivation process of transform block boundary
Inputs to this process are:
- a location ( xCb, yCb ) specifying the top-left sample of the current coding block relative to the top- left sample of the current picture,
- a variable nCbW specifying the width of the current coding block,
- a variable nCbH specifying the height of the current coding block,
- a variable cldx specifying the colour component of the current coding block,
- a variable filterEdgeFlag,
- a two-dimensional (nCbW)x(nCbH) array edgeFlags,
- two-dimensional (nCbW)x(nCbH) arrays maxFilterLengthQs and maxFilterLengthPs,
- a variable edgeType specifying whether a vertical (EDGE VER) or a horizontal (EDGE HOR) edge is fdtered.
Outputs of this process are:
- the modified two-dimensional (nCbW)x(nCbH) array edgeFlags,
- the modified two-dimensional (nCbW)x(nCbH) arrays maxFilterLengthQs, maxFilterLengthPs. Depending on edgeType, the arrays edgeFlags, maxFilterLengthPs and maxFilterLengthQs are derived as follows:
- If edgeType is equal to EDGE VER, the following applies:
- The variable numEdges is set equal to Max( 1, nCbW / 8 ).
- For xEdge = 0.. numEdges - 1 and y = O.jiCbH - 1, the following applies:
- The horizontal position x inside the current coding block is set equal to xEdge *8.
- The value of edgeFlagsf x ][ y ] is derived as follows:
- When cdgcFlags| x ][ y ] is equal to l,the following applies:
- If cldx is equal to 0, the following applies:
- The value of maxFilterLengthQs [ x ][ y ] is derived as follows: - If the width in luma samples of the transform block at luma location
( xCb + x, yCb + y ) is equal to or greater than 32 { {and ti 1 e g roup scc fl ag is 0}}, maxFilterLengthQs[ x ][ y ] is set equal to 7.
- Otherwise, maxFilterLengthQs[ x ][ y ] is set equal to 3.
- The value of maxFilterLengthPs[ x ][ y ] is derived as follows:
- If the width in luma samples of the transform block at luma location
( xCb + x - 1, yCb + y ) is equal to or greater than 32 { {and tilc group scc flag is 0}}, maxFilterLengthPsf x ][ y ] is set equal to 7.
- Otherwise, maxFilterLengthPsf x ][ y ] is set equal to 3.
- Otherwise (cldx is not equal to 0), the values of maxFilterLengthPsf x] [ y ] and m ax F i 1 te rLe ngth Q s | x ][ y ] are derived as follows:
- Otherwise (edgeType is equal to EDGE HOR), the following applies:
- The variable muuEdges is set equal to Max( 1, nCbH / 8 ).
- For yEdge = O.mumEdges - 1 and x = O.mCbW - 1, the following applies:
- The vertical position y inside the current coding block is set equal to yEdge *8.
- The value of edgeFlagsf x ][ y ] is derived as follows:
- When cdgcFlags| x ][ y ] is equal to l,the following applies:
- If cldx is equal to 0, the following applies:
- The value of maxFilterLengthQsf x ][ y ] is derived as follows:
- If the height in luma samples of the transform block at luma location ( xCb + x, yCb + y ) is equal to or greater than 32 {{and tilc group scc flag is 0}},
m ax F i 1 te rLength Qs I x ][ y ] is set equal to 7.
- Otherwise, maxFilterLengthQsf x ][ y ] is set equal to 3.
- The value of maxFilterLengthPsf x ][ y ] is derived as follows:
- If the height in luma samples of the transform block at luma location
( xCb + x, yCb + y - 1 ) is equal to or greater than 32 { {and tilc group scc flag is 0} }, maxFilterLengthPsf x ][ y ] is set equal to 7.
- Otherwise, maxFilterLengthPsf x ][ y ] is set equal to 3.
- Otherwise (cldx is not equal to 0), the values of maxFilterLengthPsf x] [ y ] and m ax F i 1 te rLe ngth Q s | x ][ y ] are derived as follows: 5.2.1 Embodiment of weighted sample prediction process for triangle merge mode #1 8.5.7.2 Weighted sample prediction process for triangle merge mode
Inputs to this process are:
two variables nCbW and nCbH specifying the width and the height of the current coding block, two (nCbW)x(nCbH) arrays predSamplesLA and predSamplesLB,
a variable triangleDir specifying the partition direction,
a variable cldx specifying colour component index.
Output of this process is the (nCbW)x(nCbH) array pbSamples of prediction sample values.
The variable nCbR is derived as follows:
nCbR = ( nCbW > nCbH ) ? ( nCbW / nCbH ) : ( nCbH / nCbW ) (8-820)
The variable bitDepth is derived as follows:
- If cldx is equal to 0, bitDepth is set equal to BitDeptliY.
- Otherwise, bitDepth is set equal to BitDepthc.
Variables shiftl and offsetl are derived as follows:
- The variable shiftl is set equal to Max( 5, 17 - bitDepth).
- The variable offsetl is set equal to 1 « ( shiftl - 1 ).
Depending on the values of triangleDir, wS and cldx, the prediction samples pbSamplesf x ][ y ] with x = 0..nCbW - 1 and y = 0..nCbH - 1 are derived as follows:
- The variable wldx is derived as follows:
- If cldx is equal to 0 and triangleDir is equal to 0, the following applies:
wldx = ( nCbW > nCbH ) ? ( Clip3( 0, 8, ( x / nCbR - y ) + 4 ) ) (8-821)
: ( Clip3( 0, 8, ( x - y / nCbR ) + 4 ) )
- Otherwise, if cldx is equal to 0 and triangleDir is equal to 1, the following applies:
wldx = ( nCbW > nCbH ) ? ( Clip3( 0, 8, ( nCbH - 1 - x / nCbR - y ) + 4 ) ) (8-822)
( Clip3( 0, 8, ( nCbW - 1 - x - y / nCbR ) + 4 ) )
- Otherwise, if cldx is greater than 0 and triangleDir is equal to 0, the following applies:
wldx = ( nCbW > nCbH ) ? ( Clip3( 0, 4, ( x / nCbR - y ) + 2 ) ) (8-823)
: ( Clip3( 0, 4, ( x - y / nCbR ) + 2 ) )
- Otherwise (if cldx is greater than 0 and triangleDir is equal to 1), the following applies:
wldx = ( nCbW > nCbH ) ? ( Clip3( 0, 4, ( nCbH - 1 - x / nCbR - y ) + 2 ) ) (8-824)
( Clip3( 0, 4, ( nCbW - 1 - x - y / nCbR ) + 2 ) ) - The variable wValue specifying the weight of the prediction sample is derived using wldx and cldx as follows:
wValue = ( cldx = = 0 ) ? Clip3( 0, 8, wldx ) : Clip3( 0, 8, wldx * 2 ) (8-825) specifying the weight of the prediction sample is derived using wldx and cldx as follows:
- The prediction sample values are derived as follows:
{{if tilc group scc flag is 1,
if triangleDir is equal to 0 and x >= y or triangleDir is equal to 1 and x + y >= nCbW pbSamples[ x ][ y ] = predSamplesLA[ x ][ y ]
Otherwise(triangleDir is equal to 0 and x < y or triangleDir is equal to 1 and x + y < nCbW) pbSamples[ x ][ y ] = predSamplesLB[ x ][ y ]
Otherwise(tile_group_scc_flag is 0) } }
pbSamples[ x ][ y ] = Clip3( 0, ( 1 « bitDepth ) - 1, ( predSamplesLA[ x ][ y ] * wValue +
predSamplesLB[ x ][ y ] * ( 8 - wValue ) + offsetl ) » shiftl ) (8-826)
Embodiment of weighted sample prediction process for triangle merge mode #2 8.5.7.1 General
This process is invoked when decoding a coding unit with MergeTriangleFlag[ xCb ][ yCb ] equal to 1. Inputs to this process are:
a luma location ( xCb, yCb ) specifying the top-left sample of the current coding block relative to the top-left luma sample of the current picture,
a variable cbWidth specifying the width of the current coding block in luma samples, a variable cbHeight specifying the height of the current coding block in luma samples, the luma motion vectors in 1/16 fractional -sample accuracy mvA and mvB,
the chroma motion vectors mvCA and mvCB,
- the reference indices refldxA and refldxB,
the prediction list flags predListFlagA and predListFlagB.
Outputs of this process are:
an (cbWidth)x(cbHeight) array predSamplesL of luma prediction samples,
an (cbWidth / 2)x(cbHeight / 2) array predSampleso, of chroma prediction samples for the component Cb,
an (cbWidth / 2)x(cbHeight / 2) array predSamplescr of chroma prediction samples for the component Cr. Let predSamplesLAL and predSamplesLBL be (cbWidth)x(cbHeight) arrays of predicted luma sample values and, predSamplesLAcb, predSamplesLBcb, predSamplesLAcr and predSamplesLBcr be
(cbWidth / 2)x(cbHeight / 2) arrays of predicted chroma sample values.
The predSamplesL, predSamplesa, and predSamplescr are derived by the following ordered steps:
1. For N being each of A and B, the following applies:
- The reference picture consisting of an ordered two-dimensional array refPicLNL of luma samples and two ordered two-dimensional arrays refPicLNo, and refPicLNcr of chroma samples is derived by invoking the process specified in clause 8.5.6.2 with X set equal to predListFlagN and refldxX set equal to refldxN as input.
- The array predSamplesLNL is derived by invoking the fractional sample interpolation process specified in clause 8.5.6.3 with the luma location ( xCb, yCb ), the luma coding block width sbWidth set equal to cbWidth, the luma coding block height sbHeight set equal to cbHeight, the motion vector offset mvOffset set equal to ( 0, 0 ), the motion vector mvLX set equal to mvN and the reference array refPicLXL set equal to refPicLNL, the variable bdofFlag set euqal to FALSE, and the variable cldx is set equal to 0 as inputs.
- The array predSamplesLNcb is derived by invoking the fractional sample interpolation process specified in clause 8.5.6.3 with the luma location ( xCb, yCb ), the coding block width sbWidth set equal to cbWidth / 2, the coding block height sbHeight set equal to cbHeight / 2, the motion vector offset mvOffset set equal to ( 0, 0 ), the motion vector mvLX set equal to mvCN, and the reference array refPicLXa, set equal to refPicLNo,, the variable bdofFlag set euqal to FALSE, and the variable cldx is set equal to 1 as inputs.
- The array predSamplesLNcr is derived by invoking the fractional sample interpolation process specified in clause 8.5.6.3 with the luma location ( xCb, yCb ), the coding block width sbWidth set equal to cbWidth / 2, the coding block height sbHeight set equal to cbHeight / 2, the motion vector offset mvOffset set equal to ( 0, 0 ), the motion vector mvLX set equal to mvCN, and the reference array refPicLXcr set equal to refPicLNcr, the variable bdofFlag set euqal to FALSE, and the variable cldx is set equal to 2 as inputs.
2. The partition direction of merge triangle mode variable triangleDir is set equal to
merge_triangle_split_dir[ xCb ] [ yCb ] .
3. The prediction samples inside the current luma coding block, predSamplesL[ XL ][ yL ] with
XL = 0..cbWidth - 1 and yL = 0..cbHeight - 1, are derived by invoking the weighted sample prediction process for triangle merge mode specified in clause 8.5.7.2 with the coding block width nCbW set equal to cbWidth, the coding block height nCbH set equal to cbHeight, the sample arrays predSamplesLAL and predSamplesLBL, {{the refldxO and refldxl set equal to refldxA and refldxB}} and the variables triangleDir, and cldx equal to 0 as inputs.
4. The prediction samples inside the current chroma component Cb coding block,
predSamplesCbl xC ][ yC ] with xC = 0..cbWidth / 2 - 1 and yC = 0..cbHeight / 2 - 1, are derived by invoking the weighted sample prediction process for triangle merge mode specified in clause 8.5.7.2 with the coding block width nCbW set equal to cbWidth / 2, the coding block height nCbH set equal to cbHeight / 2, the sample arrays predSamplesLACb and predSamplesLBCb, and {{the refldxO and refldxl set equal to refldxA and refldxB,}} and the variables triangleDir, and cldx equal to 1 as inputs.
5. The prediction samples inside the current chroma component Cr coding block,
predSamplesol xc ][ yc ] with xc = 0..cbWidth / 2 - 1 and yc = 0..cbHeight / 2 - 1, are derived by invoking the weighted sample prediction process for triangle merge mode specified in clause 8.5.7.2 with the coding block width nCbW set equal to cbWidth / 2, the coding block height nCbH set equal to cbHeight / 2, the sample arrays predSamplesLACr and predSamplesLBCr, {{the refldxO and refldxl set equal to refldxA and refldxB,}} and the variables triangleDir, and cldx equal to 2 as inputs.
6. The motion vector storing process for merge triangle mode specified in clause 8.5.7.3 is invoked with the luma coding block location ( xCb, yCb ), the luma coding block width cbWidth, the luma coding block height cbHeight, the partition direction triangleDir, the luma motion vectors mvA and mvB, the reference indices refldxA and refldxB, and the prediction list flags predListFlagA and predListFlagB as inputs.
8.5.7.2 Weighted sample prediction process for triangle merge mode
Inputs to this process are:
two variables nCbW and nCbH specifying the width and the height of the current coding block, two (nCbW)x(nCbH) arrays predSamplesLA and predSamplesLB,
a variable triangleDir specifying the partition direction,
a variable cldx specifying colour component index.
{ {a variable refldxO specifying the reference index of the prediction block A
a variable refldxl specifying the reference index of the prediction block B} }
Output of this process is the (nCbW)x(nCbH) array pbSamples of prediction sample values.
The variable nCbR is derived as follows:
nCbR = ( nCbW > nCbH ) ? ( nCbW / nCbH ) : ( nCbH / nCbW ) (8-820)
The variable bitDepth is derived as follows: - If cldx is equal to 0, bitDepth is set equal to BitDeptliY.
- Otherwise, bitDepth is set equal to BitDepthc.
Variables shiftl and offsetl are derived as follows:
- The variable shiftl is set equal to Max( 5, 17 - bitDepth).
- The variable offsetl is set equal to 1 « ( shiftl - 1 ).
Depending on the values of triangleDir, wS and cldx, the prediction samples pbSamples[ x ][ y ] with x = O.mCbW - 1 and y = O.mCbH - 1 are derived as follows:
- The variable wldx is derived as follows:
- If cldx is equal to 0 and triangleDir is equal to 0, the following applies:
wldx = ( nCbW > nCbH ) ? ( Clip3( 0, 8, ( x / nCbR - y ) + 4 ) ) (8-821)
: ( Clip3( 0, 8, ( x - y / nCbR ) + 4 ) )
- Otherwise, if cldx is equal to 0 and triangleDir is equal to 1, the following applies:
wldx = ( nCbW > nCbH ) ? ( Clip3( 0, 8, ( nCbH - 1 - x / nCbR - y ) + 4 ) ) (8-822)
( Clip3( 0, 8, ( nCbW - 1 - x - y / nCbR ) + 4 ) )
- Otherwise, if cldx is greater than 0 and triangleDir is equal to 0, the following applies:
wldx = ( nCbW > nCbH ) ? ( Clip3( 0, 4, ( x / nCbR - y ) + 2 ) ) (8-823)
: ( Clip3( 0, 4, ( x - y / nCbR ) + 2 ) )
- Otherwise (if cldx is greater than 0 and triangleDir is equal to 1), the following applies:
wldx = ( nCbW > nCbH ) ? ( Clip3( 0, 4, ( nCbH - 1 - x / nCbR - y ) + 2 ) ) (8-824)
( Clip3( 0, 4, ( nCbW - 1 - x - y / nCbR ) + 2 ) )
- The variable wValue specifying the weight of the prediction sample is derived using wldx and cldx as follows:
{ { if tilc group scc flag is equal to 1
if triangleDir is equal to 0
wValue = ( nCbW > nCbH ) ? (( x / nCbR - y) == 0 ? (refldxO <= refldxl ? 8 : 0) : 8*Clip3( 0, 1, ( x / nCbR - y ))) : (( x - y / nCbR ) == 0 ? (refldxO <= refldxl ? 8 : 0) : 8*Clip3( 0, 1,
( x - y / nCbR )))
Otherwise, if triangleDir is equal to 1,
wValue = ( nCbW > nCbH ) ? (( nCbH - 1 - x / nCbR - y) == 0 ? (refldxO <= refldxl ? 8 : 0) : 8*Clip3( 0, 1, ( nCbH - 1 - x / nCbR - y))) : (( nCbW - 1 - x - y / nCbR ) == 0 ? (refldxO <= refldxl ? 8 : 0) : 8*Clip3( 0, 1, ( nCbW - 1 - x - y / nCbR )))
Otherwise,} }
wValue = ( cldx = = 0 ) ? Clip3( 0, 8, wldx ) : Clip3( 0, 8, wldx * 2 ) (8-825) - The prediction sample values are derived as follows
pbSamples[ x ][ y ] = Clip3( 0, ( 1 « bitDepth ) - 1, ( predSamplesLA[ x ][ y ] * wValue +
predSamplesLB[ x ][ y ] * ( 8 - wValue ) + offsetl ) » shiftl ) (8-826)
5.2.3 Embodiment of weighted sample prediction process for triangle merge mode #3
8.5.7.2 Weighted sample prediction process for triangle merge mode
Inputs to this process are:
two variables nCbW and nCbH specifying the width and the height of the current coding block, two (nCbW)x(nCbH) arrays predSamplesLA and predSamplesLB,
a variable triangleDir specifying the partition direction,
a variable cldx specifying colour component index.
Output of this process is the (nCbW)x(nCbH) array pbSamples of prediction sample values.
The variable nCbR is derived as follows:
nCbR = ( nCbW > nCbH ) ? ( nCbW / nCbH ) : ( nCbH / nCbW ) (8-820)
The variable bitDepth is derived as follows:
- If cldx is equal to 0, bitDepth is set equal to BitDeptliY.
- Otherwise, bitDepth is set equal to BitDepthc.
Variables shiftl and offsetl are derived as follows:
- The variable shiftl is set equal to Max( 5, 17 - bitDepth).
- The variable offsetl is set equal to 1 « ( shiftl - 1 ).
Depending on the values of triangleDir, wS and cldx, the prediction samples pbSamplesf x ][ y ] with x = O.mCbW - 1 and y = O.mCbH - 1 are derived as follows:
- The variable wldx is derived as follows:
- If cldx is equal to 0 and triangleDir is equal to 0, the following applies:
wldx = ( nCbW > nCbH ) ? ( Clip3( 0, 8, ( x / nCbR - y ) + 4 ) ) (8-821)
: ( Clip3( 0, 8, ( x - y / nCbR ) + 4 ) )
- Otherwise, if cldx is equal to 0 and triangleDir is equal to 1, the following applies:
wldx = ( nCbW > nCbH ) ? ( Clip3( 0, 8, ( nCbH - 1 - x / nCbR - y ) + 4 ) ) (8-822)
( Clip3( 0, 8, ( nCbW - 1 - x - y / nCbR ) + 4 ) )
- Otherwise, if cldx is greater than 0 and triangleDir is equal to 0, the following applies:
wldx = ( nCbW > nCbH ) ? ( Clip3( 0, 4, ( x / nCbR - y ) + 2 ) ) (8-823)
: ( Cbp3( 0, 4, ( x - y / nCbR ) + 2 ) )
- Otherwise (if cldx is greater than 0 and triangleDir is equal to 1), the following applies: wldx = ( nCbW > nCbH ) ? ( Clip3( 0, 4, ( nCbH - 1 - x / nCbR - y ) + 2 ) ) (8-824)
( Clip3( 0, 4, ( nCbW - 1 - x - y / nCbR ) + 2 ) )
- The variable wValue specifying the weight of the prediction sample is derived using wldx and cldx as follows:
wValue = ( cldx = = 0 ) ? Clip3( 0, 8, wldx ) : Clip3( 0, 8, wldx * 2 ) (8-825)
{ { if tilc group scc flag is equal to 1
if triangleDir is equal to 0
wValue = ( nCbW > nCbH ) ? ( x / nCbR - y < 0 ? 0 : 8)): (x - y / nCbR < 0 ? 0 : 8)
Otherwise, if triangleDir is equal to 1,
wValue = ( nCbW > nCbH ) ? ( nCbH - 1 - x / nCbR - y < 0? 0 : 8) : ( nCbW - 1 - x - y / nCbR < 0 ? 0 : 8)
Otherwise,}}
wValue = ( cldx = = 0 ) ? Clip3( 0, 8, wldx ) : Clip3( 0, 8, wldx * 2 ) (8-825) specifying the weight of the prediction sample is derived using wldx and cldx as follows:
- The prediction sample values are derived as follows
pbSamples} x ][ y ] = Clip3( 0, ( 1 « bitDepth ) - 1, ( predSamplesLA} x ][ y ] * wValue +
predSamplesLB} x ][ y ] * ( 8 - wValue ) + offsetl ) » shiftl ) (8-826)
5.2.4 Embodiment of weighted sample prediction process for triangle merge mode #4
8.5.7.1 General
This process is invoked when decoding a coding unit with McrgcTrianglcFlagl xCb ][ yCb ] equal to 1. Inputs to this process are:
a luma location ( xCb, yCb ) specifying the top-left sample of the current coding block relative to the top-left luma sample of the current picture,
a variable cbWidth specifying the width of the current coding block in luma samples, a variable cbHeight specifying the height of the current coding block in luma samples, the luma motion vectors in 1/16 fractional -sample accuracy mvA and mvB,
the chroma motion vectors mvCA and mvCB,
- the reference indices refldxA and refldxB,
the prediction list flags predListFlagA and predListFlagB.
Outputs of this process are:
an (cbWidth)x(cbHeight) array predSamplesL of luma prediction samples, an (cbWidth / 2)x(cbHeight / 2) array predSampleso, of chroma prediction samples for the component Cb,
an (cbWidth / 2)x(cbHeight / 2) array predSamplescr of chroma prediction samples for the component Cr.
Let predSamplesLAL and predSamplesLBL be (cbWidth)x(cbHeight) arrays of predicted luma sample values and, predSamplesLAcb, predSamplesLBcb, predSamplesLAcr and predSamplesLBcr be
(cbWidth / 2)x(cbHeight / 2) arrays of predicted chroma sample values.
The predSamplesL, predSampleso, and predSampleso are derived by the following ordered steps:
7. For N being each of A and B, the following applies:
- The reference picture consisting of an ordered two-dimensional array refPicLNL of luma samples and two ordered two-dimensional arrays refPicLNo, and refPicLNo of chroma samples is derived by invoking the process specified in clause 8.5.6.2 with X set equal to predListFlagN and refldxX set equal to refldxN as input.
- The array predSamplesLNL is derived by invoking the fractional sample interpolation process specified in clause 8.5.6.3 with the luma location ( xCb, yCb ), the luma coding block width sbWidth set equal to cbWidth, the luma coding block height sbHeight set equal to cbHeight, the motion vector offset mvOffset set equal to ( 0, 0 ), the motion vector mvLX set equal to mvN and the reference array refPicLXL set equal to refPicLNL, the variable bdofFlag set euqal to FALSE, and the variable cldx is set equal to 0 as inputs.
- The array predSamplesLNcb is derived by invoking the fractional sample interpolation process specified in clause 8.5.6.3 with the luma location ( xCb, yCb ), the coding block width sbWidth set equal to cbWidth / 2, the coding block height sbHeight set equal to cbHeight / 2, the motion vector offset mvOffset set equal to ( 0, 0 ), the motion vector mvLX set equal to mvCN, and the reference array refPicLXo, set equal to refPicLNo,, the variable bdofFlag set euqal to FALSE, and the variable cldx is set equal to 1 as inputs.
- The array predSamplesLNcr is derived by invoking the fractional sample interpolation process specified in clause 8.5.6.3 with the luma location ( xCb, yCb ), the coding block width sbWidth set equal to cbWidth / 2, the coding block height sbHeight set equal to cbHeight / 2, the motion vector offset mvOffset set equal to ( 0, 0 ), the motion vector mvLX set equal to mvCN, and the reference array refPicLXcr set equal to refPicLNcr, the variable bdofFlag set euqal to FALSE, and the variable cldx is set equal to 2 as inputs.
8. The partition direction of merge triangle mode variable triangleDir is set equal to
merge_triangle_split_dir[ xCb ] [ yCb ] . 9. The prediction samples inside the current luma coding block, predSamplesL[ xi. || yi. | with
XL = 0..cbWidth - 1 and yL = 0..cbHeight - 1, are derived by invoking the weighted sample prediction process for triangle merge mode specified in clause 8.5.7.2 with the coding block width nCbW set equal to cbWidth, the coding block height nCbH set equal to cbHeight, the sample arrays predSamplesLAL and predSamplesLBL, {{the MVa and MVb set equal to mvA and mvB}} and the variables triangleDir, and cldx equal to 0 as inputs.
10. The prediction samples inside the current chroma component Cb coding block,
predSamplescbl xc ][ yc ] with xc = 0..cbWidth / 2 - 1 and yc = 0..cbHeight / 2 - 1, are derived by invoking the weighted sample prediction process for triangle merge mode specified in clause 8.5.7.2 with the coding block width nCbW set equal to cbWidth / 2, the coding block height nCbH set equal to cbHeight / 2, the sample arrays predSamplesLAo, and predSamplesLBcb, and { {the MVa and MVb set equal to mvCA and mvCB,}} and the variables triangleDir, and cldx equal to 1 as inputs.
11. The prediction samples inside the current chroma component Cr coding block,
predSamplesol xc ][ yc ] with xc = 0..cbWidth / 2 - 1 and yc = 0..cbHeight / 2 - 1, are derived by invoking the weighted sample prediction process for triangle merge mode specified in clause 8.5.7.2 with the coding block width nCbW set equal to cbWidth / 2, the coding block height nCbH set equal to cbHeight / 2, the sample arrays predSamplesLAcr and predSamplesLBcr, {{the MVa and MVb set equal to mvCA and mvCB,}} and the variables triangleDir, and cldx equal to 2 as inputs.
12. The motion vector storing process for merge triangle mode specified in clause 8.5.7.3 is invoked with the luma coding block location ( xCb, yCb ), the luma coding block width cbWidth, the luma coding block height cbHeight, the partition direction triangleDir, the luma motion vectors mvA and mvB, the reference indices refldxA and refldxB, and the prediction list flags predListFlagA and predListFlagB as inputs.
8.5.7.2 Weighted sample prediction process for triangle merge mode
Inputs to this process are:
two variables nCbW and nCbH specifying the width and the height of the current coding block, two (nCbW)x(nCbH) arrays predSamplesLA and predSamplesLB,
a variable triangleDir specifying the partition direction,
a variable cldx specifying colour component index.
{ {a variable MVa specifying the motion vector of the prediction block A
a variable MVb specifying the motion vector of the prediction block B} }
Output of this process is the (nCbW)x(nCbH) array pbSamples of prediction sample values.
The variable nCbR is derived as follows: nCbR = ( nCbW > nCbH ) ? ( nCbW / nCbH ) : ( nCbH / nCbW ) (8-820)
The variable bitDepth is derived as follows:
- If cldx is equal to 0, bitDepth is set equal to BitDeptliY.
- Otherwise, bitDepth is set equal to BitDepthc.
Variables shiftl and offsetl are derived as follows:
- The variable shiftl is set equal to Max( 5, 17 - bitDepth).
- The variable offsetl is set equal to 1 « ( shiftl - 1 ).
Depending on the values of triangleDir, wS and cldx, the prediction samples pbSamplesf x ][ y ] with x = O.mCbW - 1 and y = O.mCbH - 1 are derived as follows:
- The variable wldx is derived as follows:
- If cldx is equal to 0 and triangleDir is equal to 0, the following applies:
wldx = ( nCbW > nCbH ) ? ( Clip3( 0, 8, ( x / nCbR - y ) + 4 ) ) (8-821)
: ( Clip3( 0, 8, ( x - y / nCbR ) + 4 ) )
- Otherwise, if cldx is equal to 0 and triangleDir is equal to 1, the following applies:
wldx = ( nCbW > nCbH ) ? ( Clip3( 0, 8, ( nCbH - 1 - x / nCbR - y ) + 4 ) ) (8-822)
( Clip3( 0, 8, ( nCbW - 1 - x - y / nCbR ) + 4 ) )
- Otherwise, if cldx is greater than 0 and triangleDir is equal to 0, the following applies:
wldx = ( nCbW > nCbH ) ? ( Clip3( 0, 4, ( x / nCbR - y ) + 2 ) ) (8-823)
: ( Clip3( 0, 4, ( x - y / nCbR ) + 2 ) )
- Otherwise (if cldx is greater than 0 and triangleDir is equal to 1), the following applies:
wldx = ( nCbW > nCbH ) ? ( Clip3( 0, 4, ( nCbH - 1 - x / nCbR - y ) + 2 ) ) (8-824)
( Clip3( 0, 4, ( nCbW - 1 - x - y / nCbR ) + 2 ) )
- The variable wValue specifying the weight of the prediction sample is derived using wldx and cldx as follows:
{ { if tilc group scc flag is equal to 1
if triangleDir is equal to 0
w Value = ( nCbW > nCbH ) ? (( x / nCbR - y) == 0 ? (Max(MVa[0],MVa[l]) <=
(Max(MVb [0] ,MVb [ 1 ] ) ? 8 : 0) : 8*Clip3( 0, 1, ( x / nCbR - y ))) : (( x - y / nCbR ) == 0 ?
((Max(MV a[0] ,MV a[ 1 ] ) <= (Max(MVb[0],MVb[l]) ? 8 : 0) : 8*Clip3( 0, 1, ( x - y / nCbR )))
Otherwise, if triangleDir is equal to 1,
w Value = ( nCbW > nCbH ) ? (( nCbH - 1 - x / nCbR - y) == 0 ? ((Max(MVa[0],MVa[l]) <=
(Max(MVb [0] ,MVb [ 1 ] ) ? 8 : 0) : 8*Clip3( 0, 1, ( nCbH - 1 - x / nCbR - y))) : (( nCbW - 1 - x - y / nCbR ) == 0 ? ((Max(MVa[0],MVa[l]) <= (Max(MVb[0],MVb[l])? 8 : 0) : 8*Clip3( 0, 1, ( nCbW - 1 - x - y / nCbR )))
Otherwise,}}
wValue = ( cldx = = 0 ) ? Clip3( 0, 8, wldx ) : Clip3( 0, 8, wldx * 2 ) (8-825)
- The prediction sample values are derived as follows
pbSamples} x ][ y ] = Clip3( 0, ( 1 « bitDepth ) - 1, ( predSamplesLA} x ][ y ] * wValue +
predSamplesLB} x ][ y ] * ( 8 - wValue ) + offsetl ) » shiftl ) (8-826)
5.2.5 Embodiment of weighted sample prediction process for triangle merge mode #5
Inputs to this process are:
two variables nCbW and nCbH specifying the width and the height of the current coding block, two (nCbW)x(nCbH) arrays predSamplesLA and predSamplesLB,
a variable triangleDir specifying the partition direction,
a variable cldx specifying colour component index.
{ {a variable MVa specifying the motion vector of the prediction block A
a variable MVb specifying the motion vector of the prediction block B} }
Output of this process is the (nCbW)x(nCbH) array pbSamples of prediction sample values.
The variable nCbR is derived as follows:
nCbR = ( nCbW > nCbH ) ? ( nCbW / nCbH ) : ( nCbH / nCbW ) (8-820)
The variable bitDepth is derived as follows:
- If cldx is equal to 0, bitDepth is set equal to BitDepthY.
- Otherwise, bitDepth is set equal to BitDepthC.
Variables shiftl and offsetl are derived as follows:
- The variable shiftl is set equal to Max( 5, 17 - bitDepth).
- The variable offsetl is set equal to 1 « ( shiftl - 1 ).
Depending on the values of triangleDir, wS and cldx, the prediction samples pbSamples} x ][ y ] with x = O.mCbW - 1 and y = 0..nCbH - 1 are derived as follows:
{{ if slice_tpm_blending_off _flag is equal to 1
The variables numSbX and numSbY specifying the number of 4x4 blocks in the current coding block
in horizontal and vertical direction are set equal to numSbX = nCbW » 2 and numSbY = nCbH » 2.
For each 4x4 subblock at subblock index ( xSbldx, ySbldx ) with xSbldx = 0..numSbX - 1, and ySbldx = 0.. numSbY - 1, the following applies: The variables xldx and yldx are derived as follows:
xldx = ( cbWidth > cbHeight ) ? ( xSbldx / nCbR) : xSbldx (8-813)
yldx = ( cbWidth > cbHeight ) ? ySbldx : ( ySbldx / nCbR) (8-814)
The variable sType is derived as follows:
If triangleDir is equal to 0, the following applies:
sType = ( xldx = = yldx ) ? 2 : ( ( xldx > yldx ) ? 0 : 1 ) (8-815)
Otherwise (triangleDir is equal to 1), the following applies:
sType = ( xldx + yldx = = minSb ) ? 2 : ( ( xldx + yldx < minSb ) ? 0 : 1 ) (8-816)
If sType is equal to 2, the following applies:
w Value = (Max(Abs(MVa[0]),Abs(MVa[l])) <= Max(Abs(MVb[0]),Abs(MVb[l]))) ? 8 : 0 Otherwise, the following applies:
wValue = (sType == 0 ? 8 : 0)
Otherwise, the following applies: } }
- The variable wldx is derived as follows:
If cldx is equal to 0 and triangleDir is equal to 0, the following applies:
wldx = ( nCbW > nCbH ) ? ( Clip3( 0, 8, ( x / nCbR - y ) + 4 ) ) (8-821)
: ( Clip3( 0, 8, ( x - y / nCbR ) + 4 ) )
Otherwise, if cldx is equal to 0 and triangleDir is equal to 1, the following applies:
wldx = ( nCbW > nCbH ) ? ( Clip3( 0, 8, ( nCbH - 1 - x / nCbR - y ) + 4 ) ) (8-822)
( Clip3( 0, 8, ( nCbW - 1 - x - y / nCbR ) + 4 ) )
Otherwise, if cldx is greater than 0 and triangleDir is equal to 0, the following applies:
wldx = ( nCbW > nCbH ) ? ( Clip3( 0, 4, ( x / nCbR - y ) + 2 ) ) (8-823)
: ( Cbp3( 0, 4, ( x - y / nCbR ) + 2 ) )
Otherwise (if cldx is greater than 0 and triangleDir is equal to 1), the following applies:
wldx = ( nCbW > nCbH ) ? ( Clip3( 0, 4, ( nCbH - 1 - x / nCbR - y ) + 2 ) ) (8-824)
( Clip3( 0, 4, ( nCbW - 1 - x - y / nCbR ) + 2 ) )
The variable wValue specifying the weight of the prediction sample is derived using wldx and cldx as follows:
wValue = ( cldx = = 0 ) ? Clip3( 0, 8, wldx ) : Clip3( 0, 8, wldx * 2 ) (8-825)
The prediction sample values are derived as follows
pbSamples} x ][ y ] = Clip3( 0, ( 1 « bitDepth ) - 1,
( predSamplesLA[ x ][ y ] * wValue +
predSamplesLB[ x ][ y ] * ( 8 - wValue ) + offsetl ) » shiftl ) (8-826) 5.2.6 Embodiment of weighted sample prediction process for triangle merge mode #6
Inputs to this process are:
- two variables nCbW and nCbH specifying the width and the height of the current coding block,
- two (nCbW)x(nCbH) arrays predSamplesLA and predSamplesLB,
- a variable triangleDir specifying the partition direction,
- a variable cldx specifying colour component index.
- {{a variable MVa specifying the motion vector of the prediction block A
- a variable MVb specifying the motion vector of the prediction block B } }
- Output of this process is the (nCbW)x(nCbH) array pbSamples of prediction sample values. The variable nCbR is derived as follows:
nCbR = ( nCbW > nCbH ) ? ( nCbW / nCbH ) : ( nCbH / nCbW ) (8-820)
The variable bitDepth is derived as follows:
- If cldx is equal to 0, bitDepth is set equal to BitDepthY.
- Otherwise, bitDepth is set equal to BitDepthc.
Variables shiftl and offsetl are derived as follows:
- The variable shiftl is set equal to Max( 5, 17 - bitDepth).
- The variable offsetl is set equal to 1 « ( shiftl - 1 ).
Depending on the values of triangleDir, wS and cldx, the prediction samples pbSamples[ x ][ y ] with x = O.mCbW - 1 and y = 0..nCbH - 1 are derived as follows:
- The variable wldx is derived as follows:
- If cldx is equal to 0 and triangleDir is equal to 0, the following applies:
wldx = ( nCbW > nCbH ) ? ( Clip3( 0, 8, ( x / nCbR - y ) + 4 ) ) (8-821)
: ( Clip3( 0, 8, ( x - y / nCbR ) + 4 ) )
- Otherwise, if cldx is equal to 0 and triangleDir is equal to 1, the following applies:
wldx = ( nCbW > nCbH ) ? ( Clip3( 0, 8, ( nCbH - 1 - x / nCbR - y ) + 4 ) ) (8-822)
( Clip3( 0, 8, ( nCbW - 1 - x - y / nCbR ) + 4 ) )
- Otherwise, if cldx is greater than 0 and triangleDir is equal to 0, the following applies: wldx = ( nCbW > nCbH ) ? ( Clip3( 0, 4, ( x / nCbR - y ) + 2 ) ) (8-823)
: ( Clip3( 0, 4, ( x - y / nCbR ) + 2 ) )
- Otherwise (if cldx is greater than 0 and triangleDir is equal to 1), the following applies: wldx = ( nCbW > nCbH ) ? ( Clip3( 0, 4, ( nCbH - 1 - x / nCbR - y ) + 2 ) ) (8-824)
( Clip3( 0, 4, ( nCbW - 1 - x - y / nCbR ) + 2 ) )
- The variable wValue specifying the weight of the prediction sample is derived using wldx and cldx as follows:
{{ if slice tpm blending off flag is equal to 1
The variable wOffset is derived as wOffset = (Max(Abs(MVa[0]),Abs(MVa[l])) <= Max(Abs(MVb[0]),Abs(MVb[l]))) ? 0.5 : -0.5}}
wValue = ( cldx == 0 ) ? Clip3(0, 8, (wldx+w0ffset-4)*16) : Clip3(0, 8, (wldx + wOffset- 2)* 16)
{{Otherwise,}}
wValue = ( cldx = = 0 ) ? Clip3( 0, 8, wldx ) : Clip3( 0, 8, wldx * 2 ) (8-825)
- The prediction sample values are derived as follows
pbSamples[ x ][ y ] = Clip3( 0, ( 1 « bitDepth ) - 1, ( predSamplesLA[ x ][ y ] * wValue + predSamplesLB[ x ][ y ] * ( 8 - wValue ) + offsetl ) » shiftl ) (8-826)
5.2.7 Embodiment of motion vector storing process for triangle merge mode #7
This process is invoked when decoding a coding unit with MergeTriangleFlag[ xCb ][ yCb ] equal to 1.
Inputs to this process are:
- a luma location ( xCb, yCb ) specifying the top-left sample of the current coding block relative to the top-left luma sample of the current picture,
- a variable cbWidth specifying the width of the current coding block in luma samples,
- a variable cbHeight specifying the height of the current coding block in luma samples,
- a variable triangleDir specifying the partition direction,
- the luma motion vectors in 1/16 fractional-sample accuracy mvA and mvB,
- the reference indices refldxA and refldxB,
- the prediction list flags predListFlagA and predListFlagB.
The variables numSbX and numSbY specifying the number of 4x4 blocks in the current coding block in horizontal and vertical direction are set equal to numSbX = cbWidth » 2 and numSbY = cbHeight » 2.
The variable minSb is set equal to min( numSbX, numSbY ).
The variable cbRatio is derived as follows:
cbRatio = ( cbWidth > cbHeight ) ? ( cbWidth / cbHeight ) : ( cbHeight / cbWidth )(8-812) The variable refldxTempA is derived by invoking the reference picture mapping process for triangle merge mode specified in clause 8.5.7.4 with X set equal to predListFlagA and refldxN set equal to refldxA as inputs. The variable refldxTempB is derived by invoking the reference picture mapping process for triangle merge mode specified in clause 8.5.7.4 with the X set equal to predListFlagB and refldxN set equal to refldxB as inputs.
For each 4x4 subblock at subblock index ( xSbldx, ySbldx ) with xSbldx = O.mumSbX - 1, and ySbldx = O.mumSbY - 1, the following applies:
- The variables xldx and yldx are derived as follows:
xldx = ( cbWidth > cbHeight ) ? ( xSbldx / cbRatio ) : xSbldx (8-813) yldx = ( cb Width > cbHeight ) ? ySbldx : ( ySbldx / cbRatio ) (8-814)
- The variable sType is derived as follows:
- If triangleDir is equal to 0, the following applies:
sType = ( xldx = = yldx ) ? 2 : ( ( xldx > yldx ) ? 0 : 1 ) (8-815)
- Otherwise (triangleDir is equal to 1), the following applies:
sType = ( xldx + yldx = = minSb ) ? 2 : ( ( xldx + yldx < minSb ) ? 0 : 1 ) (8-816)
- Depending on the value of sType, the following assignments are made:
- If sType is equal to 0, the following applies:
predFlagLO = ( predListFlagA = = 0 ) ? 1 : 0
(8-817)
predFlagLl = ( predListFlagA = = 0 ) ? 0 : 1
(8-818)
refldxLO = ( predListFlagA = = 0 ) ? refldxA : -1 (8-819) refldxLl = ( predListFlagA = = 0 ) ? -1 : refldxA (8-820) mvL0[ 0 ] = ( predListFlagA = = 0 ) ? mvA[ 0 ] : 0 (8-821) mvL0[ 1 ] = ( predListFlagA = = 0 ) ? mvA[ 1 ] : 0 (8-822) mvLl[ 0 ] = ( predListFlagA = = 0 ) ? 0 : mvA[ 0 ] (8-823) mvLl[ 1 ] = ( predListFlagA = = 0 ) ? 0 : mvA[ 1 ] (8-824)
- Otherwise, if sType is equal to 1, the following applies:
predFlagLO = ( predListFlagB = = 0 ) ? 1 : 0
(8-825) predFlagLl = ( predListFlagB = = 0 ) ? 0 : 1
(8-826)
refldxLO = ( predListFlagB = = 0 ) ? refldxB : -1 (8-827) refldxLl = ( predListFlagB = = 0 ) ? -1 : refldxB (8-828) mvLO[ 0 ] = ( predListFlagB = = 0 ) ? mvB[ 0 ] : 0 (8-829) mvLO[ 1 ] = ( predListFlagB = = 0 ) ? mvB[ 1 ] : 0 (8-830) mvLl [ 0 ] = ( predListFlagB = = 0 ) ? 0 : mvB[ 0 ] (8-831) mvLl [ 1 ] = ( predListFlagB = = 0 ) ? 0 : mvB[ 1 ] (8-832)
Otherwise (sType is equal to 2), the following applies:
{ (tile group scc flag is equal to 1,
The varibale predFromA is derived as follows
predFromA = (Max(MVa[0],MVa[l]) <= Max(MVb[0],MVb[l]) ? 1 : 0 if predFromA is equal to 1
predFlagLO = ( predListFlagA = = 0 ) ? 1 : 0
(8-817)
predFlagLl = ( predListFlagA = = 0 ) ? 0 : 1
(8-818)
refldxLO = ( predListFlagA = = 0 ) ? refldxA : -1 (8-819) refldxLl = ( predListFlagA = = 0 ) ? -1 : refldxA (8-820) mvL0[ 0 ] = ( predListFlagA = = 0 ) ? mvA[ 0 ] : 0 (8-821) mvL0[ 1 ] = ( predListFlagA = = 0 ) ? mvA[ 1 ] : 0 (8-822) mvLl [ 0 ] = ( predListFlagA = = 0 ) ? 0 : mvA[ 0 ] (8-823) mvLl [ 1 ] = ( predListFlagA = = 0 ) ? 0 : mvA[ 1 ] (8-824)
Otherwise, predFromA is euqal to 0,
predFlagLO = ( predListFlagB = = 0 ) ? 1 : 0
(8-825)
predFlagLl = ( predListFlagB = = 0 ) ? 0 : 1
(8-826)
refldxLO = ( predListFlagB = = 0 ) ? refldxB : -1 (8-827) refldxLl = ( predListFlagB = = 0 ) ? -1 : refldxB (8-828) mvL0[ 0 ] ( predListFlagB = = 0 ) ? mvB[ 0 ] : 0 (8-829) mvL0[ 1 ] ( predListFlagB = = 0 ) ? mvB[ 1 ] : 0 (8-830) mvLl [ 0 ] ( predListFlagB = = 0 ) ? 0 : mvB[ 0 ] (8-831) mvLl [ 1 ] ( predListFlagB = = 0 ) ? 0 : mvB[ 1 ] (8-832)}}
If predListFlagA + predListFlagB is equal to 1,
predFlagLO = 1 (8-833) predFlagLl = 1 (8-834) refldxLO = ( predListFlagA = = 0 ) ? refldxA : refldxB (8-835) refldxLl = ( predListFlagA = = 0 ) ? refldxB : refldxA (8-836) mvL0[ 0 ] = ( predListFlagA = = 0 ) ? mvA[ 0 ] : mvB[ 0 ] (8-837) mvL0[ 1 ] = ( predListFlagA = = 0 ) ? mvA[ 1 ] : mvB[ 1 ] (8-838) mvLl [ 0 ] = ( predListFlagA = = 0 ) ? mvB[ 0 ] : mvA[ 0 ] (8-839) mvLl [ 1 ] = ( predListFlagA = = 0 ) ? mvB[ 1 ] : mvA[ 1 ] (8-840)
If predListFlagA + predListFlagB is equal to 0, the following applies:
predFlagLO = 1 (8-841) predFlagLl = ( refldxTempA = = -1 && refldxTempB = = -1 ) ? 0 : 1 (8-842)
refldxLO = ( refldxTempB != -1 ) ? refldxA : (8-843)
( ( refldxTempA != -1 ) ? refldxB : refldxA )
refldxLl = ( refldxTempB != -1 ) ? refldxTempB : (8-844)
( ( refldxTempA != -1 ) ? refldxTempA : -1 )
mvL0[ 0 ] = ( refldxTempB != -1 ) ? mvA[ 0 ] : (8-845)
( ( refldxTempA != -1 ) ? mvB[ 0 ] : mvA[ 0 ] )
mvL0[ 1 ] = ( refldxTempB != -1 ) ? mvA[ 1 ] : (8-846)
( ( refldxTempA != -1 ) ? mvB[ 1 ] : mvA[ 1 ] )
mvLl [ 0 ] = ( refldxTempB != -1 ) ? mvB[ 0 ] : (8-847)
( ( refldxTempA != -1 ) ? mvA[ 0 ] : 0 )
mvLl [ 1 ] = ( refldxTempB != -1 ) ? mvB[ 1 ] : (8-848)
( ( refldxTempA != -1 ) ? mvA[ 1 ] : 0 ) - If predListFlagA + predListFlagB is equal to 2, the following applies:
predFlagLO = ( refldxTempA = = -1 && refldxTempB = = -1 ) ? 0 : 1 (8-849)
predFlagLl = 1 (8-850) refldxLO = ( refldxTempB != -1 ) ? refldxTempB : (8-851)
( ( refldxTempA != -1 ) ? refldxTempA : -1 )
refldxLl = ( refldxTempB != -l ) ? refldxA : (8-852)
( ( refldxTempA != -1 ) ? refldxB : refldxA ) mvL0[ 0 ] = ( refldxTempB != -1 ) ? mvB[ 0 ] : (8-853)
( ( refldxTempA != -1 ) ? mvA[ 0 ] : 0 )
mvL0[ 1 ] = ( refldxTempB != -1 ) ? mvB[ 1 ] : (8-854)
( ( refldxTempA != -1 ) ? mvA[ 1 ] : 0 )
mvLl [ 0 ] = ( refldxTempB != -1 ) ? mvA[ 0 ] : (8-855)
( ( refldxTempA != -1 ) ? mvB[ 0 ] : mvA[ 0 ] )
mvLl [ 1 ] = ( refldxTempB != -1 ) ? mvA[ 1 ] : (8-856)
( ( refldxTempA != -1 ) ? mvB[ 1 ] : mvA[ 1 ] )
- The following assignments are made for x = 0..3 and y = 0..3 :
MvL0[ ( xSbldx « 2 ) + x ][ ( ySbldx « 2 ) + y] = mvLO (8-857)
MvLl [ ( xSbldx « 2 ) + x ][ ( ySbldx « 2 ) + y] = mvLl (8-858)
RefIdxL0[ ( xSbldx « 2 ) + x ][ ( ySbldx « 2 ) + y] = refldxLO (8-859)
RedldxLl [ ( xSbldx « 2 ) + x ][ ( ySbldx « 2 ) + y] = refldxLl (8-860)
PredFlagLO[ ( xSbldx « 2 ) + x ][ ( ySbldx « 2 ) + y] = predFlagLO (8-861) PredFlagLl [ ( xSbldx « 2 ) + x ][ ( ySbldx « 2 ) + y] = predFlagLl (8-862)
5.2.8 Embodiment of motion vector storing process for triangle merge mode #8
This process is invoked when decoding a coding unit with MergeTriangleFlag[ xCb ][ yCb ] equal to 1.
Inputs to this process are:
- a luma location ( xCb, yCb ) specifying the top-left sample of the current coding block relative to the top-left luma sample of the current picture,
- a variable cbWidth specifying the width of the current coding block in luma samples, - a variable cbHeight specifying the height of the current coding block in luma samples,
- a variable triangleDir specifying the partition direction,
- the luma motion vectors in 1/16 fractional-sample accuracy mvA and mvB,
- the reference indices refldxA and refldxB,
- the prediction list flags predListFlagA and predListFlagB.
The variables numSbX and numSbY specifying the number of 4x4 blocks in the current coding block in horizontal and vertical direction are set equal to numSbX = cbWidth » 2 and numSbY = cbHeight » 2.
The variable minSb is set equal to min( numSbX, numSbY ).
The variable cbRatio is derived as follows:
cbRatio = ( cbWidth > cbHeight ) ? ( cbWidth / cbHeight ) : ( cbHeight / cbWidth )(8-812) The variable refldxTempA is derived by invoking the reference picture mapping process for triangle merge mode specified in clause 8.5.7.4 with X set equal to predListFlagA and refldxN set equal to refldxA as inputs.
The variable refldxTempB is derived by invoking the reference picture mapping process for triangle merge mode specified in clause 8.5.7.4 with the X set equal to predListFlagB and refldxN set equal to refldxB as inputs.
For each 4x4 subblock at subblock index ( xSbldx, ySbldx ) with xSbldx = 0..numSbX - 1, and ySbldx = 0..numSbY - 1, the following applies:
-The variables xldx and yldx are derived as follows:
xldx = ( cbWidth > cbHeight ) ? ( xSbldx / cbRatio ) : xSbldx (8-813) yldx = ( cbWidth > cbHeight ) ? ySbldx : ( ySbldx / cbRatio ) (8-814)
-The variable sType is derived as follows:
- If triangleDir is equal to 0, the following applies:
sType = ( xldx = = yldx ) ? 2 : ( ( xldx > yldx ) ? 0 : 1 ) (8-815)
- Otherwise (triangleDir is equal to 1), the following applies:
sType = ( xldx + yldx = = minSb ) ? 2 : ( ( xldx + yldx < minSb ) ? 0 : 1 ) (8-816)
{{The varibale storeFromA is derived as follows
If slice tpm blending off flag is equal to 1, storeFromA = (Max(Abs(MVa[0]),Abs(MVa[l])) <=
Max( Ab s(M Vb [0] ), Ab s(M Vb [ 1 ] )) ? 1 : 0
otherwise
storeFromA = -1 } }
Depending on the value of sType, the following assignments are made:
If sType is equal to 0, or storeFromA is euqal to 1, the following applies:
predFlagLO = ( predListFlagA = = 0 ) ? 1 : 0
(8-817)
predFlagLl = ( predListFlagA = = 0 ) ? 0 : 1
(8-818)
refldxLO = ( predListFlagA = = 0 ) ? refldxA : -1 (8-819) refldxLl = ( predListFlagA = = 0 ) ? -1 : refldxA (8-820) mvL0[ 0 ] = ( predListFlagA = = 0 ) ? mvA[ 0 ] : 0 (8-821) mvL0[ 1 ] = ( predListFlagA = = 0 ) ? mvA[ 1 ] : 0 (8-822) mvLl[ 0 ] = ( predListFlagA = = 0 ) ? 0 : mvA[ 0 ] (8-823) mvLl[ 1 ] = ( predListFlagA = = 0 ) ? 0 : mvA[ 1 ] (8-824)
- Otherwise, if sType is equal to 1, or storeFromA is euqal to 0, the following applies: predFlagLO = ( predListFlagB = = 0 ) ? 1 : 0
(8-825)
predFlagLl = ( predListFlagB = = 0 ) ? 0 : 1
(8-826)
refldxLO = ( predListFlagB = = 0 ) ? refldxB : -1 (8-827) refldxLl = ( predListFlagB = = 0 ) ? -1 : refldxB (8-828) mvL0[ 0 ] = ( predListFlagB = = 0 ) ? mvB[ 0 ] : 0 (8-829) mvL0[ 1 ] = ( predListFlagB = = 0 ) ? mvB[ 1 ] : 0 (8-830) mvLl[ 0 ] = ( predListFlagB = = 0 ) ? 0 : mvB[ 0 ] (8-831) mvLl[ 1 ] = ( predListFlagB = = 0 ) ? 0 : mvB[ 1 ] (8-832)
- Otherwise (sType is equal to 2), the following applies:
- If predListFlagA + predListFlagB is equal to 1,
predFlagLO = 1 (8-833) predFlagLl = 1 (8-834) refldxLO = ( predListFlagA = = 0 ) ? refldxA : refldxB (8-835) refldxLl = ( predListFlagA = = 0 ) ? refldxB : refldxA (8-836) mvLO[ 0 ] = ( predListFlagA = = 0 ) ? mvA[ 0 ] : mvB[ 0 ] (8-837) mvLO[ 1 ] = ( predListFlagA = = 0 ) ? mvA[ 1 ] : mvB[ 1 ] (8-838) mvLl [ 0 ] = ( predListFlagA = = 0 ) ? mvB[ 0 ] : mvA[ 0 ] (8-839) mvLl [ 1 ] = ( predListFlagA = = 0 ) ? mvB[ 1 ] : mvA[ 1 ] (8-840)
- If predListFlagA + predListFlagB is equal to 0, the following applies:
predFlagLO = 1 (8-841) predFlagLl = ( refldxTempA = = -1 && refldxTempB = = -1 ) ? 0 : 1 (8-842)
refldxLO = ( refldxTempB != -1 ) ? refldxA : (8-843)
( ( refldxTempA != -1 ) ? refldxB : refldxA )
refldxLl = ( refldxTempB != -1 ) ? refldxTempB : (8-844)
( ( refldxTempA != -1 ) ? refldxTempA : -1 )
mvL0[ 0 ] = ( refldxTempB != -1 ) ? mvA[ 0 ] : (8-845)
( ( refldxTempA != -1 ) ? mvB[ 0 ] : mvA[ 0 ] )
mvL0[ 1 ] = ( refldxTempB != -1 ) ? mvA[ 1 ] : (8-846)
( ( refldxTempA != -1 ) ? mvB[ 1 ] : mvA[ 1 ] )
mvLl [ 0 ] = ( refldxTempB != -1 ) ? mvB[ 0 ] : (8-847)
( ( refldxTempA != -1 ) ? mvA[ 0 ] : 0 )
mvLl [ 1 ] = ( refldxTempB != -1 ) ? mvB[ 1 ] : (8-848)
( ( refldxTempA != -1 ) ? mvA[ 1 ] : 0 )
- If predListFlagA + predListFlagB is equal to 2, the following applies:
predFlagLO = ( refldxTempA = = -1 && refldxTempB = = -1 ) ? 0 : 1 (8-849)
predFlagLl = 1 (8-850) refldxLO = ( refldxTempB != -1 ) ? refldxTempB : (8-851)
( ( refldxTempA != -1 ) ? refldxTempA : -1 ) refldxLl = ( refldxTempB != -l ) ? refldxA : (8-852)
( ( refldxTempA != -1 ) ? refldxB : refldxA )
mvLO[ 0 ] = ( refldxTempB != -1 ) ? mvB[ 0 ] : (8-853)
( ( refldxTempA != -1 ) ? mvA[ 0 ] : 0 )
mvLO[ f ] = ( refldxTempB != -1 ) ? mvB[ f ] : (8-854)
( ( refldxTempA != -f ) ? mvA[ f ] : 0 )
mvLf [ 0 ] = ( refldxTempB != -f ) ? mvA[ 0 ] : (8-855)
( ( refldxTempA != -1 ) ? mvB[ 0 ] : mvA[ 0 ] ) mvLf [ f ] = ( refldxTempB != -1 ) ? mvA[ f ] : (8-856)
( ( refldxTempA != -f ) ? mvB[ f ] : mvA[ f ] )
-The following assignments are made for x = 0..3 and y = 0..3:
MvL0[ ( xSbldx « 2 ) + x ][ ( ySbldx « 2 ) + y] = mvLO (8-857)
MvLl[ ( xSbldx « 2 ) + x ][ ( ySbldx « 2 ) + y] = mvLl (8-858)
RefIdxL0[ ( xSbldx « 2 ) + x ][ ( ySbldx « 2 ) + y] = refldxLO (8-859)
RedldxLl [ ( xSbldx « 2 ) + x ][ ( ySbldx « 2 ) + y] = refldxLl (8-860)
PredFlagLO[ ( xSbldx « 2 ) + x ][ ( ySbldx « 2 ) + y] = predFlagLO (8-861) PredFlagLl [ ( xSbldx « 2 ) + x ][ ( ySbldx « 2 ) + y] = predFlagLl (8-862)
[00262] The examples described above may be incorporated in the context of the methods described below, e.g., method 2200, which may be implemented at a video decoder or a video encoder.
[00263] FIG. 22A shows a flowchart of an exemplary method for video processing. The method 2200 includes, at step 2202, performing a conversion between a current video block of a current picture of a chroma component of a video and a bitstream representation of the video. In some embodiments, the bitstream representation conforms to a format rule, and the format rule specifies that an indication of a use of an intra block copy (IBC) mode for the current video block is selectively included in the bitstream representation based on whether one of more luma blocks corresponding to the current video block are coded in the bitstream representation using the IBC mode, the IBC mode comprises use of a prediction of the current video block based on samples from the current picture. [00264] FIG. 22B shows a flowchart of an exemplary method for video processing. The method 2210 includes, at step 2212, determining, for a current video block of a video, that a use of an intra block copy (IBC) mode for the current video block is disabled or a block vector corresponding to the current video block is invalid.
[00265] The method 2210 includes, at step 2214, generating, based on the determining, a prediction for the current video block using a default intra mode.
[00266] The method 2210 includes, at step 2216, performing, based on the prediction, a conversion between the current video block and a bitstream representation of the video.
[00267] FIG. 22C shows a flowchart of an exemplary method for video processing. The method 2220 includes, at step 2222, selectively enabling, for a conversion between a current video block of a video and a bitstream representation of the video, an intra block copy (IBC) mode for the current video block.
[00268] The method 2220 includes, at step 2224, performing, subsequent to the selectively enabling, the conversion. In some embodiments, wherein the current video block comprises one or more sub-blocks, and wherein at least one of the sub-blocks are associated with invalid block vectors.
[00269] FIG. 22D shows a flowchart of an exemplary method for video processing. The method 2230 includes, at step 2232, performing a conversion between a current video block of a current picture of a video and a bitstream representation of the video, wherein the current video block is represented in the bitstream representation using an intra block copy mode based on prediction from a prediction block, and wherein the prediction block comprises pixels having a default value.
[00270] FIG. 22E shows a flowchart of an exemplary method for video processing. The method 2240 includes, at step 2242, deriving, for a chroma video block that is coded using an intra block copy (IBC) mode, a motion vector or a block vector of the chroma video block based on a motion vector or a block vector of a neighboring chroma block.
[00271] The method 2240 includes, at step 2244, performing, based on the deriving, a conversion between the chroma video block and a bitstream representation of the video. [00272] FIG. 22F shows a flowchart of an exemplary method for video processing. The method 2250 includes, at step 2252, making a determination that a current video block is from a video unit of a video having a content type.
[00273] The method 2250 includes, at step 2254, performing, based on the determination, a conversion between the current video block and the bitstream representation of the video. In some embodiments, the content type is indicated in the bitstream representation at the video unit level, and a coding tool is selectively available for the conversion depending on the content type based on a rule.
[00274] FIG. 22G shows a flowchart of an exemplary method for video processing. The method 2260 includes, at step 2262, storing, for a current video block that is coded using a triangular partition mode (TPM), uni -prediction information for at least one sub-block of the current video block.
[00275] The method 2260 includes, at step 2264, performing, using the uni-prediction
information, a conversion between the current video block of a video and a bitstream
representation of the video.
[00276] FIG. 22H shows a flowchart of an exemplary method for video processing. The method 2270 includes, at step 2272, making a decision, based on a coding tree structure of a current video block, regarding a selective enablement of coding mode to the current video block.
[00277] The method 2270 includes, at step 2274, performing, based on the decision, a conversion between the current video block and the bitstream representation of the current video block.
[00278] FIG. 221 shows a flowchart of an exemplary method for video processing. The method 2280 includes, at step 2282, determining, based on a size of a current video block of a video that is coded using an intra block copy (IBC) mode, a predefined transform.
[00279] The method 2280 includes, at step 2284, performing, based on the determining, a conversion between the current video block and a bitstream representation of the video. In some embodiments, the conversion comprises applying, during encoding, the predefined transform between an IBC prediction of the current video block and a residual coding in the bitstream representation, or applying, during decoding, an inverse of the predefined transform between a residual of the current video block coded in the bitstream representation and a reconstructed IBC. [00280] FIG. 22J shows a flowchart of an exemplary method for video processing. The method 2290 includes, at step 2292, conditionally enabling, for a current video block of a video, a triangular prediction mode (TPM) for the current video block with uni-prediction.
[00281] The method 2290 includes, at step 2294, performing, subsequent to the conditionally enabling, a conversion between the current video block and a bitstream representation of the video. In some embodiments, the TPM comprises splitting the current video block into multiple sub-blocks, at least one having a non-square shape.
[00282] In some embodiments, the following technical solutions can be implemented:
[00283] Al. A method for video processing, comprising performing a conversion between a current video block of a current picture of a chroma component of a video and a bitstream representation of the video, wherein the bitstream representation conforms to a format rule, and wherein the format rule specifies that an indication of a use of an intra block copy (IBC) mode for the current video block is selectively included in the bitstream representation based on whether one of more luma blocks corresponding to the current video block are coded in the bitstream representation using the IBC mode, wherein the IBC mode comprises use of a prediction of the current video block based on samples from the current picture.
[00284] A2. The method of solution Al, further comprising receiving an indication of a first allowed partition structure for the one or more luma blocks; and receiving, subsequent to the receiving the indication of the first allowed partition, an indication of a second allowed partition structure for the chroma component of the video.
[00285] A3. The method of solution Al, wherein the indication is excluded from the bitstream representation based on the IBC mode being disabled for at least one of the one or more luma blocks.
[00286] A4. The method of solution A3, wherein the IBC mode is disabled for each of the one or more luma blocks.
[00287] A5. The method of solution Al, wherein the indication is included in the bitstream representation when the IBC mode is enabled for the at least one of the one or more luma blocks.
[00288] A6. The method of solution Al, wherein a size of the one or more luma blocks is a minimum coding unit (CU) size, a minimum prediction unit (PU) size, a minimum transform unit (TU) size, or a size of a unit for motion storage or mode storage. [00289] A7. The method of solution Al, wherein the inclusion of the indication is further based on a position of the one or more luma blocks.
[00290] A8. The method of solution Al, wherein the inclusion of the indication is further based on an enablement of the IBC mode for a neighboring block of the current picture of the chroma component.
[00291] A9. The method of solution A8, wherein the neighboring block is adjacent to the current video block.
[00292] A10. The method of solution A8, wherein the neighboring block is non-adjacent to the current video block.
[00293] Al l. The method of solution A8, wherein a first partition structure is allowable for the one or more luma blocks and a second partition structure, different from the first partition structure, is allowable for the chroma component.
[00294] A12. A method for video processing, comprising determining, for a current video block of a video, that a use of an intra block copy (IBC) mode for the current video block is disabled or a block vector corresponding to the current video block is invalid; generating, based on the determining, a prediction for the current video block using a default intra mode; and performing, based on the prediction, a conversion between the current video block and a bitstream
representation of the video.
[00295] A13. The method of solution A12, wherein the default intra mode is indicated by a predetermined most probable mode (MPM) intra mode.
[00296] A14. The method of solution A13, wherein the predetermined MPM intra mode is a first mode in an MPM list.
[00297] A15. The method of solution A13, wherein the predetermined intra mode is a first available mode in an MPM list.
[00298] A16. The method of solution A12, wherein the default intra mode is a PLANAR mode, a DC mode or a residual differential pulse-code modulation (RDPCM) mode.
[00299] A17. The method of solution A12, wherein an indication of the default intra mode is signaled in a decoder parameter set (DPS), a video parameter set (VPS), a sequence parameter set (SPS), a picture parameter set (PPS), an adaptation parameter set (APS), a picture header, a slice header, a tile group header, a largest coding unit (LCU), a coding unit (CU), an LCU row or a group of LCUs.
[00300] A18. A method for video processing, comprising selectively enabling, for a conversion between a current video block of a video and a bitstream representation of the video, an intra block copy (IBC) mode for the current video block; and performing, subsequent to the selectively enabling, the conversion, wherein the current video block comprises one or more sub blocks, and wherein at least one of the sub-blocks are associated with invalid block vectors.
[00301] A19. The method of solution A18, wherein the IBC mode is enabled for the current video block of a current picture of a chroma component of the video, and wherein the method further comprises deriving a block vector corresponding to the chroma component from the corresponding luma block or from the bitstream representation.
[00302] A20. The method of solution A18, further comprising determining that a block vector corresponding to a luma block associated with the chroma component does not exist; and designating, based on the determining, the block vector as invalid.
[00303] A21. A method for video processing, comprising performing a conversion between a current video block of a current picture of a video and a bitstream representation of the video, wherein the current video block is represented in the bitstream representation using an intra block copy mode based on prediction from a prediction block, and wherein the prediction block comprises pixels having a default value.
[00304] A22. The method of solution A21, wherein the pixels having the default value are based on a sub-block of the current video block being unavailable.
[00305] A23. The method of solution A22, wherein a block vector corresponding to the sub block is invalid or a motion vector of the sub-block is valid.
[00306] A24. The method of solution A22, wherein a luma block of the sub-block is not coded using the IBC mode.
[00307] A25. The method of any of solutions A22 to A24, wherein the default value is based on a bit-depth of a sample of the current video block, one or more reconstructed samples of a previously coded or decoded pictures or one or more reconstructed samples of a neighboring block. [00308] A26. The method of any of solutions A22 to A24, wherein the default value is signaled in a decoder parameter set (DPS), a video parameter set (VPS), a sequence parameter set (SPS), a picture parameter set (PPS), an adaptation parameter set (APS), a slice header, a tile group header, a coding tree unit (CTU) or a coding unit (CU).
[00309] A27. The method of solution A21, wherein the prediction block is based on a reference block indicated by a block vector corresponding to an IBC-coded chroma sub-block.
[00310] A28. A method for video processing, comprising deriving, for a chroma video block that is coded using an intra block copy (IBC) mode, a motion vector or a block vector of the chroma video block based on a motion vector or a block vector of a neighboring chroma block; and performing, based on the deriving, a conversion between the chroma video block and a bitstream representation of the video.
[00311] A29. The method of solution A28, wherein the neighboring chroma block is a left neighboring block.
[00312] A30. The method of solution A28, wherein the neighboring chroma block is an above neighboring block.
[00313] A31. The method of solution A28, wherein a top-left coordinate of the chroma video block is (x, y), wherein a size of the chroma video block is WxH, wherein the neighboring chroma block is a basic block that covers a sample with coordinates (x-1, y+i), wherein i, W and H are integers, and wherein i ranges from 0 to 2><H.
[00314] A32. The method of solution A28, wherein a top-left coordinate of the chroma video block is (x, y), wherein a size of the chroma video block is WxH, wherein the neighboring chroma block is a basic block that covers a sample with coordinates (x+i, y-1), wherein i, W and H are integers, and wherein i ranges from 0 to 2><W.
[00315] A33. The method of solution A31 or A32, wherein the basic block is a 4x4 block.
[00316] A34. A method for video processing, comprising making a determination that a current video block is from a video unit of a video having a content type; and performing, based on the determination, a conversion between the current video block and the bitstream representation of the video, wherein the content type is indicated in the bitstream representation at the video unit level, and wherein a coding tool is selectively available for the conversion depending on the content type based on a rule. [00317] A35. The method of solution A34, wherein the coding tool comprises an intra prediction tool.
[00318] A36. The method of solution A35, wherein the intra prediction tool comprises a position dependent intra prediction combination (PDPC) tool that is disabled.
[00319] A37. The method of solution A35, wherein the intra prediction tool comprises an intra reference smoothing that is disabled.
[00320] A38. The method of solution A35, wherein the intra prediction process comprises a matrix-based intra prediction that is disabled.
[00321] A39. The method of solution A34, wherein the coding tool comprises an inter prediction tool.
[00322] A40. The method of solution A39, wherein the inter prediction tool comprises an adaptive motion vector resolution (AMVR) tool that is disabled.
[00323] A41. The method of solution A39, wherein the inter prediction tool comprises a bi directional optical flow (BDOF) tool that is disabled.
[00324] A42. The method of solution A39, wherein the inter prediction tool comprises a decoder-side motion vector refinement (DMVR) tool that is disabled.
[00325] A43. The method of solution A34, wherein the coding tool comprises an application of a long tap filter in a deblocking process to the current video block.
[00326] A44. The method of solution A34, wherein the coding tool comprises a blending process of a triangular partitioning mode (TPM) for inter prediction that is disabled.
[00327] A45. The method of solution A44, wherein the blending process is applied along an edge of a first triangular partition and a second triangular partition.
[00328] A46. The method of solution A44 or A45, wherein the TPM generates diagonal partitions.
[00329] A47. The method of solution A44 or A45, wherein the TPM generates anti-diagonal partitions.
[00330] A48. The method of solution A44 or A45, wherein a number of weighting lines in the blending process for a chroma component and a luma component of the video is N and M, respectively, wherein N and M are positive integers.
[00331] A49. The method of solution A48, wherein N =¾ 7 and M =¾ 3. [00332] A50. The method of solution A48, wherein N = 3 and M = 3.
[00333] A51. The method of solution A48, wherein M and N are based on at least one of a screen content in the current video block, a shape of the current video block, an indication of a color format of the current video block, a picture type of a picture comprising the current video block, an identification of a temporal layer of the current video block or a message signaled in a decoder parameter set (DPS), a video parameter set (VPS), a sequence parameter set (SPS), a picture parameter set (PPS), an adaptation parameter set (APS), a picture header, a slice header, a tile group header, a largest coding unit (LCU), a coding unit (CU), an LCU row, a group of LCUs, a transform unit (TU) or a prediction unit (PU).
[00334] A52. The method of solution A45, wherein a first motion compensated block is derived based on motion information of the first triangular partition and a second motion compensated block is derived based on motion information of the second triangular partition, and wherein one or more weights for the first and second motion compensated blocks in the blending process is based on a reference index or a motion vector of the first and second triangular partitions.
[00335] A53. The method of solution A45, wherein the edge is a diagonal or an anti-diagonal of the current video block.
[00336] A54. A method for video processing, comprising storing, for a current video block that is coded using a triangular partition mode (TPM), uni -prediction information for at least one sub block of the current video block; and performing, using the uni -prediction information, a conversion between the current video block of a video and a bitstream representation of the video.
[00337] A55. The method of solution A54, wherein the TPM partitions the current video block into a first partition and a second partition comprising a first motion information (MvInfoO) and a second motion information (Mvlnfol), respectively.
[00338] A56. The method of solution A55, wherein the uni -prediction information is identical to one or MvInfoO and Mvlnfol .
[00339] A57. The method of solution A55, wherein the uni -prediction information is derived based on MvInfoO and/or Mvlnfol.
[00340] A58. The method of any of solutions A54 to A57, wherein the at least one sub-block comprises all sub-blocks of the current video block. [00341] A59. The method of any of solutions A54 to A57, wherein the at least one sub-block comprises one or more sub-blocks along a diagonal region or an anti-diagonal region of the current video block.
[00342] A60. A method for video processing, comprising making a decision, based on a coding tree structure of a current video block, regarding a selective enablement of coding mode to the current video block; and performing, based on the decision, a conversion between the current video block and the bitstream representation of the current video block.
[00343] A61. The method of solution A60, wherein the bitstream representation comprises an indication of the coding mode that is inferred as false based on the coding tree structure being a dual coding tree structure.
[00344] A62. The method of solution A60, wherein the bitstream representation excludes a signaling of the coding mode based on the coding tree structure being a dual coding tree structure.
[00345] A63. The method of any of solutions A60 to A62, wherein the coding mode comprises a residual differential pulse-code modulation (RDPCM) mode.
[00346] A64. The method of any of solutions A60 to A62, wherein the coding mode comprises a cross-component linear model (CCLM) prediction mode.
[00347] A65. The method of any of solutions A60 to A62, wherein the coding mode comprises a quantized residual block differential pulse-code modulation (QR-BDPCM).
[00348] A66. A method for video processing, comprising determining, based on a size of a current video block of a video that is coded using an intra block copy (IBC) mode, a predefined transform; and performing, based on the determining, a conversion between the current video block and a bitstream representation of the video, wherein the conversion comprises applying, during encoding, the predefined transform between an IBC prediction of the current video block and a residual coding in the bitstream representation, or applying, during decoding, an inverse of the predefined transform between a residual of the current video block coded in the bitstream representation and a reconstructed IBC.
[00349] A67. The method of solution A66, wherein the predefined transform is a transform skip (TS) operation, and wherein the size is 4x4 or larger than 32x32. [00350] A68. The method of solution A66, wherein the predefined transform is a Discrete Cosine Transform (DCT).
[00351] A69. The method of solution A66, wherein the predefined transform is a transform skip (TS) operation, and wherein the size is 64x64.
[00352] A70. The method of solution A66, wherein the predefined transform is a horizontal transform, wherein the predefined transform is a transform skip (TS) operation based on a width of the block being less than or equal to a first threshold (Tl) and greater than a second threshold (T2), and a Discrete Cosine Transform (DCT)-II otherwise, and wherein Tl and T2 are integers.
[00353] A71. The method of solution A66, wherein the predefined transform is a vertical transform, wherein the predefined transform is a transform skip (TS) operation based on a height of the block being less than or equal to a first threshold (Tl) and greater than a second threshold (T2), and a Discrete Cosine Transform (DCT)-II otherwise, and wherein Tl and T2 are integers.
[00354] A72. The method of solution A70 or A71, wherein Tl = 16 and T2 = 4.
[00355] A73. A method for video processing, comprising conditionally enabling, for a current video block of a video, a triangular prediction mode (TPM) for the current video block with uni prediction; and performing, subsequent to the conditionally enabling, a conversion between the current video block and a bitstream representation of the video, wherein the TPM comprises splitting the current video block into multiple sub-blocks, at least one having a non-square shape.
[00356] A74. The method of solution A73, wherein the conditionally enabling is based on a flag signaled in the bitstream representation being true, and wherein the flag disables TPM blending and screen content.
[00357] A75. The method of solution A73, wherein the TPM is conditionally enabled for motion storage and/or motion compensation.
[00358] A76. The method of any of solution A1 to A75, wherein performing the conversion is further based on at least one of a screen content in the current video block, a shape of the current video block, an indication of a color format of the current video block, a picture type of a picture comprising the current video block, an identification of a temporal layer of the current video block or a message signaled in a decoder parameter set (DPS), a video parameter set (VPS), a sequence parameter set (SPS), a picture parameter set (PPS), an adaptation parameter set (APS), a picture header, a slice header, a tile group header, a largest coding unit (LCU), a coding unit (CU), an LCU row, a group of LCUs, a transform unit (TU) or a prediction unit (PU).
[00359] A77. The method of any of solutions A1 to A76, wherein the performing the conversion includes generating the current video block from the bitstream representation.
[00360] A78. The method of any of solutions A1 to A76, wherein the performing the conversion includes generating the bitstream representation from the current video block.
[00361] A79. An apparatus in a video system comprising a processor and a non-transitory memory with instructions thereon, wherein the instructions upon execution by the processor, cause the processor to implement the method in any one of solutions A1 to A78.
[00362] A80. A computer program product stored on a non-transitory computer readable media, the computer program product including program code for carrying out the method in any one of solutions A1 to A78.
[00363] In some embodiments, the following technical solutions can be implemented:
[00364] Bl. A method for processing video, comprising making a decision, for a current video block comprising a chroma component and a plurality of luma components, regarding a selective signaling of an indication of an intra block copy (IBC) mode for the chroma component in the bitstream representation, wherein the selective signaling is based on an enablement of the IBC mode for one or more selected luma components of the plurality of luma components; and performing, based on the decision, a conversion between the current video block and the bitstream representation of the current video block.
[00365] B2. The method of solution Bl, further comprising receiving at least one indication of a first allowed partition structure for the one or more selected luma components; and receiving, subsequent to the receiving the at least one indication, a second allowed partition structure for the chroma component.
[00366] B3. The method of solution Bl, wherein the indication is not signaled when the IBC mode is disabled for at least one of the one or more selected luma components.
[00367] B4. The method of solution B3, wherein the IBC mode is disabled for each of the one or more selected luma components. [00368] B5. The method of solution Bl, wherein the indication is signaled in the bitstream representation when the IBC mode is enabled for the at least one of the one or more selected luma components.
[00369] B6. The method of solution Bl, wherein a size of the one or more selected luma components is a minimum coding unit (CU), prediction unit (PU) or transform unit (TU) size.
[00370] B7. The method of solution Bl, wherein the selective signaling is further based on a position of the one or more selected luma components.
[00371] B8. The method of solution Bl, wherein the selective signaling is further based on an enablement of the IBC mode for a chroma component of a neighboring block of the current video block.
[00372] B9. The method of solution B8, wherein the neighboring block is adjacent to the current video block.
[00373] B10. The method of solution B8, wherein the neighboring block is non-adjacent to the current video block.
[00374] Bl 1. The method of solution B8, further comprising receiving at least one indication of a first allowed partition structure for the one or more selected luma components; and receiving, subsequent to the receiving the at least one indication, a second allowed partition structure for the chroma component.
[00375] B12. The method of solution Bl, wherein a block vector of the chroma component is based on a corresponding luma block of the plurality of luma blocks or the bitstream
representation.
[00376] B13. A method for video processing, comprising configuring, for a current video block that is coded using an intra block copy (IBC) mode, a prediction block based on an availability of a sub-block of the current video block; and performing, based on the configuring, a conversion between the current video block and a bitstream representation of the current video block.
[00377] B14. The method of solution B13, wherein the sub-block is unavailable, and wherein the prediction block is filled with a default value.
[00378] B15. The method of solution B14, wherein the sub-block does not include a valid block vector or a valid motion vector. [00379] B16. The method of solution B14, wherein a luma component of the sub-block is not coded using the IBC mode.
[00380] B17. The method of any of solutions B14 to B16, wherein the default value is based on a bit-depth of a sample of the current video block, one or more reconstructed samples of a previously coded or decoded pictures or one or more reconstructed samples of a neighboring block.
[00381] B18. The method of any of solutions B14 to B16, wherein the default value is signaled in a decoder parameter set (DPS), a video parameter set (VPS), a sequence parameter set (SPS), a picture parameter set (PPS), an adaptation parameter set (APS), a slice header, a tile group header, a coding tree unit (CTU) or a coding unit (CU).
[00382] B19. The method of solution B13, wherein the sub-block is available, and wherein the prediction block is based on a reference block indicated by a block vector for an IBC-coded chroma component of the sub-block.
[00383] B20. A method for video processing, comprising deriving, for a chroma component of a current video block that is coded using an intra block copy (IBC) mode, a motion or block vector of the chroma component of the current video block based on a motion or block vector of a chroma component of a neighboring video block; and performing, based on the deriving, a conversion between the current video block and a bitstream representation of the current video block.
[00384] B21. The method of solution B20, wherein the neighboring video block is a left neighboring block.
[00385] B22. The method of solution B20, wherein the neighboring video block is an above neighboring block.
[00386] B23. The method of solution B20, wherein a top-left coordinate of the current video block is (x, y), wherein a size of the current video block is WxH, wherein the neighboring video block is a basic block that covers a sample with coordinates (x-1, y+i), wherein i, W and H are integers, and wherein i ranges from 0 to 2><H.
[00387] B24. The method of solution B20, wherein a top-left coordinate of the current video block is (x, y), wherein a size of the current video block is WxH, wherein the neighboring video block is a basic block that covers a sample with coordinates (x+i, y-1), wherein i, W and H are integers, and wherein i ranges from 0 to 2><W.
[00388] B25. The method of solution B23 or 24, wherein the basic block is a 4x4 block.
[00389] B26. A method for video processing, comprising making a decision, for a current video block, regarding a selective enablement of a coding process in the current video block, wherein the decision is based on an indication of video content in the current video block, and wherein the indication is signaled in a bitstream representation of the current video block; and performing, based on the decision, a conversion between the current video block and the bitstream representation of the current video block.
[00390] B27. The method of solution B26, wherein the coding process comprises an intra prediction process.
[00391] B28. The method of solution B27, wherein the intra prediction process comprises a position dependent intra prediction combination (PDPC) process that is disabled.
[00392] B29. The method of solution B27, wherein the intra prediction process comprises an intra reference smoothing process that is disabled.
[00393] B30. The method of solution B27, wherein the intra prediction process comprises a matrix-based intra prediction that is disabled.
[00394] B31. The method of solution B26, wherein the coding process comprises an inter prediction process.
[00395] B32. The method of solution B31, wherein the inter prediction process comprises an adaptive motion vector resolution (AMVR) process that is disabled.
[00396] B33. The method of solution B31, wherein the inter prediction process comprises a bi directional optical flow (BDOF) process that is disabled.
[00397] B34. The method of solution B31, wherein the inter prediction process comprises a decoder-side motion vector refinement (DMVR) process that is disabled.
[00398] B35. The method of solution B26, wherein the coding process comprises an application of a long tap filter in a deblocking process to the current video block.
[00399] B36. A method for video processing, comprising making a decision, based on a coding tree structure of a current video block, regarding a selective enablement of coding mode to the current video block; and performing, based on the decision, a conversion between the current video block and the bitstream representation of the current video block.
[00400] B37. The method of solution B26, wherein the coding tree structure is a dual coding tree structure, and wherein the coding mode is disabled.
[00401] B38. The method of solution B36 or 37, wherein the coding mode comprises a residual differential pulse-code modulation (RDPCM) mode.
[00402] B39. The method of solution B36 or 37, wherein the coding mode comprises a cross component linear model (CCLM) prediction mode.
[00403] B40. A method for video processing, comprising making a decision, based on a prediction mode of a current video block being an intra block copy (IBC) mode, regarding a selective enablement of a coding mode during a conversion between the current video block and a bitstream representation of the current video block; and performing the conversion between the current video block and the bitstream representation of the current video block.
[00404] B41. The method of solution B40, wherein the coding mode is a transform skip mode that is enabled.
[00405] B42. The method of solution B41, wherein a size of the current video block is 4x4.
[00406] B43. The method of any of solution B1 to B42, wherein performing the conversion is further based on at least one of a screen content in the current video block, a shape of the current video block, an indication of a color format of the current video block, a picture type of a picture comprising the current video block, an identification of a temporal layer of the current video block or a message signaled in a decoder parameter set (DPS), a video parameter set (VPS), a sequence parameter set (SPS), a picture parameter set (PPS), an adaptation parameter set (APS), a picture header, a slice header, a tile group header, a largest coding unit (LCU), a coding unit (CU), an LCU row, a group of LCUs, a transform unit (TU) or a prediction unit (PU).
[00407] B44. A method for video processing, comprising determining, for a current video block, that an intra block copy (IBC) mode of the current video block is inferred to be false or a block vector of the current video block is invalid; generating, based on the determining and using a default intra mode, a prediction for the current video block; and performing, based on the generating, a conversion between the current video block and the bitstream representation of the current video block. [00408] B45. The method of solution B44, wherein the default intra mode is a first mode in a most probable mode (MPM) list.
[00409] B46. The method of solution B44, wherein the default intra mode is a first available mode in a most probable mode (MPM) list.
[00410] B47. The method of solution B44, wherein the default intra mode is a PLANAR mode, a DC mode or a residual differential pulse-code modulation (RDPCM) mode.
[00411] B48. The method of solution B44, wherein an indication of the default intra mode is signaled in a decoder parameter set (DPS), a video parameter set (VPS), a sequence parameter set (SPS), a picture parameter set (PPS), an adaptation parameter set (APS), a picture header, a slice header, a tile group header, a largest coding unit (LCU), a coding unit (CU), an LCU row or a group of LCUs.
[00412] B49. A method for video processing, comprising applying, during a conversion between a current video block and a bitstream representation of the current video block, a predefined transform to the current video block, wherein the applying is based on a size of a current video block that is coded using an intra block copy (IBC) mode.
[00413] B50. The method of solution B49, wherein a width (W) of the current video block is within a first range, and wherein the predefined transform is applied as a horizontal transform.
[00414] B51. The method of solution B50, wherein the predefined transform is a transform skip (TS), and wherein T1 =¾ W =¾ T2.
[00415] B52. The method of solution B49, wherein a height (H) of the current video block is within a first range, and wherein the predefined transform is applied as a vertical transform.
[00416] B53. The method of solution B52, wherein the predefined transform is a transform skip (TS), and wherein T1 =¾ H =¾ T2.
[00417] B54. The method of solution B51 or 53, wherein T1 = 4 and T2 = 16.
[00418] B55. The method of solution B51 or 53, wherein T1 or T2 are signaled in a decoder parameter set (DPS), a video parameter set (VPS), a sequence parameter set (SPS), a picture parameter set (PPS), an adaptation parameter set (APS), a picture header, a slice header, a tile group header, a largest coding unit (LCU), a coding unit (CU), an LCU row or a group of LCUs.
[00419] B56. The method of solution B26, wherein the coding process comprises a blending process of a triangular partitioning mode (TPM) for inter prediction that is disabled. [00420] B57. The method of solution B56, wherein the blending process is applied along an edge of a first triangular partition and a second triangular partition.
[00421] B58. The method of solution B56 or 57, wherein the TPM generates diagonal partitions.
[00422] B59. The method of solution B56 or 57, wherein the TPM generates anti-diagonal partitions.
[00423] B60. The method of solution B56 or 57, wherein a number of weighting lines in the blending process for a chroma component and a luma component of the current video block is N and M, respectively, wherein N and M are positive integers.
[00424] B61. The method of solution B60, wherein N =¾ 7 and M =¾ 3.
[00425] B62. The method of solution B61, wherein N = 3 and M = 3.
[00426] B63. The method of solution B60, wherein M and N are based on at least one of a screen content in the current video block, a shape of the current video block, an indication of a color format of the current video block, a picture type of a picture comprising the current video block, an identification of a temporal layer of the current video block or a message signaled in a decoder parameter set (DPS), a video parameter set (VPS), a sequence parameter set (SPS), a picture parameter set (PPS), an adaptation parameter set (APS), a picture header, a slice header, a tile group header, a largest coding unit (LCU), a coding unit (CU), an LCU row, a group of LCUs, a transform unit (TU) or a prediction unit (PU).
[00427] B65. A method of video processing, comprising determining, for a current video block that is partitioned using geometry partitioning into a first partition and a second partition, that a condition is satisfied by the first partition and the second partition, and performing a conversion between the current video block and a bitstream representation of the current video block by selecting a parameter used for the conversion based on the condition.
[00428] B66. The method of solution B65, wherein the condition is that a reference index of the first partition is smaller than that of the second partition, and wherein the parameter used for the conversion comprises a weight used for obtaining motion predictors.
[00429] B67. The method of solution B65, wherein the condition is that a motion vector of the first partition is smaller than that of the second partition.
[00430] B68. The method of any of solutions B1 to B67, wherein the conversion includes encoding the current video block into the bitstream representation. [00431] B69. The method of any of solutions B1 to B67, wherein the conversion includes decoding the bitstream representation to generate the current video block.
[00432] B70. An apparatus in a video system comprising a processor and a non-transitory memory with instructions thereon, wherein the instructions upon execution by the processor, cause the processor to implement the method in any one of solutions B1 to B69.
[00433] B71. A computer program product stored on a non-transitory computer readable media, the computer program product including program code for carrying out the method in any one of solutions B1 to B69.
[00434] FIG. 23 is a block diagram of a video processing apparatus 2300. The apparatus 2300 may be used to implement one or more of the methods described herein. The apparatus 2300 may be embodied in a smartphone, tablet, computer, Internet of Things (IoT) receiver, and so on. The apparatus 2300 may include one or more processors 2302, one or more memories 2304 and video processing hardware 2306. The processor(s) 2302 may be configured to implement one or more methods (including, but not limited to, method 2200) described in the present document. The memory (memories) 2304 may be used for storing data and code used for implementing the methods and techniques described herein. The video processing hardware 2306 may be used to implement, in hardware circuitry, some techniques described in the present document.
[00435] In some embodiments, the video coding methods may be implemented using an apparatus that is implemented on a hardware platform as described with respect to FIG. 23.
[00436] Some embodiments of the disclosed technology include making a decision or determination to enable a video processing tool or mode. In an example, when the video processing tool or mode is enabled, the encoder will use or implement the tool or mode in the processing of a block of video, but may not necessarily modify the resulting bitstream based on the usage of the tool or mode. That is, a conversion from the block of video to the bitstream representation of the video will use the video processing tool or mode when it is enabled based on the decision or determination. In another example, when the video processing tool or mode is enabled, the decoder will process the bitstream with the knowledge that the bitstream has been modified based on the video processing tool or mode. That is, a conversion from the bitstream representation of the video to the block of video will be performed using the video processing tool or mode that was enabled based on the decision or determination. [00437] Some embodiments of the disclosed technology include making a decision or determination to disable a video processing tool or mode. In an example, when the video processing tool or mode is disabled, the encoder will not use the tool or mode in the conversion of the block of video to the bitstream representation of the video. In another example, when the video processing tool or mode is disabled, the decoder will process the bitstream with the knowledge that the bitstream has not been modified using the video processing tool or mode that was enabled based on the decision or determination.
[00438] FIG. 24 is a block diagram showing an example video processing system 2400 in which various techniques disclosed herein may be implemented. Various implementations may include some or all of the components of the system 2400. The system 2400 may include input 2402 for receiving video content. The video content may be received in a raw or uncompressed format, e.g., 8 or 10 bit multi-component pixel values, or may be in a compressed or encoded format.
The input 2402 may represent a network interface, a peripheral bus interface, or a storage interface. Examples of network interface include wired interfaces such as Ethernet, passive optical network (PON), etc. and wireless interfaces such as Wi-Fi or cellular interfaces.
[00439] The system 2400 may include a coding component 2404 that may implement the various coding or encoding methods described in the present document. The coding component 2404 may reduce the average bitrate of video from the input 2402 to the output of the coding component 2404 to produce a coded representation of the video. The coding techniques are therefore sometimes called video compression or video transcoding techniques. The output of the coding component 2404 may be either stored, or transmitted via a communication connected, as represented by the component 2406. The stored or communicated bitstream (or coded) representation of the video received at the input 2402 may be used by the component 2408 for generating pixel values or displayable video that is sent to a display interface 2410. The process of generating user-viewable video from the bitstream representation is sometimes called video decompression. Furthermore, while certain video processing operations are referred to as “coding” operations or tools, it will be appreciated that the coding tools or operations are used at an encoder and corresponding decoding tools or operations that reverse the results of the coding will be performed by a decoder. [00440] Examples of a peripheral bus interface or a display interface may include universal serial bus (USB) or high definition multimedia interface (HDMI) or Displayport, and so on. Examples of storage interfaces include SATA (serial advanced technology attachment), PCI,
IDE interface, and the like. The techniques described in the present document may be embodied in various electronic devices such as mobile phones, laptops, smartphones or other devices that are capable of performing digital data processing and/or video display.
[00441] From the foregoing, it will be appreciated that specific embodiments of the presently disclosed technology have been described herein for purposes of illustration, but that various modifications may be made without deviating from the scope of the invention. Accordingly, the presently disclosed technology is not limited except as by the appended claims.
[00442] Implementations of the subject matter and the functional operations described in this patent document can be implemented in various systems, digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. 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 to control the operation of, data processing apparatus. The computer readable medium can be a machine- readable storage device, a machine-readable storage substrate, a memory device, a composition of matter effecting a machine-readable propagated signal, or a combination of one or more of them. The term“data processing unit” or“data processing apparatus” encompasses all apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, or multiple processors or computers. The apparatus can include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them.
[00443] A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone 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 in a portion 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 coordinated files (e.g., files that store one or more modules, sub programs, or portions of code).
A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a
communication network.
[00444] The processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).
[00445] Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read only memory or a random access memory or both. The essential elements of a computer are a processor for performing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks. However, a computer need not have such devices.
Computer readable media suitable for storing computer program instructions and data include all forms of nonvolatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
[00446] While this patent document contains many specifics, these should not be construed as limitations on the scope of any invention or of what may be claimed, but rather as descriptions of features that may be specific to particular embodiments of particular inventions. Certain features that are described in this patent document in the context of separate embodiments can also be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment can also be implemented in multiple embodiments separately or in any suitable subcombination. Moreover, although features may be described above as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claimed combination may be directed to a subcombination or variation of a subcombination.
[00447] Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. Moreover, the separation of various system components in the embodiments described in this patent document should not be understood as requiring such separation in all embodiments.
[00448] Only a few implementations and examples are described and other implementations, enhancements and variations can be made based on what is described and illustrated in this patent document.

Claims

WHAT IS CLAIMED IS:
1. A method for video processing, comprising:
performing a conversion between a current video block of a current picture of a chroma component of a video and a bitstream representation of the video,
wherein the bitstream representation conforms to a format rule, and
wherein the format rule specifies that an indication of a use of an intra block copy (IBC) mode for the current video block is selectively included in the bitstream representation based on whether one of more luma blocks corresponding to the current video block are coded in the bitstream representation using the IBC mode,
wherein the IBC mode comprises use of a prediction of the current video block based on samples from the current picture.
2. The method of claim 1, further comprising:
receiving an indication of a first allowed partition structure for the one or more luma blocks; and
receiving, subsequent to the receiving the indication of the first allowed partition, an indication of a second allowed partition structure for the chroma component of the video.
3. The method of claim 1, wherein the indication is excluded from the bitstream
representation based on the IBC mode being disabled for at least one of the one or more luma blocks.
4. The method of claim 3, wherein the IBC mode is disabled for each of the one or more luma blocks.
5. The method of claim 1, wherein the indication is included in the bitstream representation when the IBC mode is enabled for the at least one of the one or more luma blocks.
6. The method of claim 1, wherein a size of the one or more luma blocks is a minimum coding unit (CU) size, a minimum prediction unit (PU) size, a minimum transform unit (TU) size, or a size of a unit for motion storage or mode storage.
7. The method of claim 1, wherein the inclusion of the indication is further based on a position of the one or more luma blocks.
8. The method of claim 1, wherein the inclusion of the indication is further based on an enablement of the IBC mode for a neighboring block of the current picture of the chroma component.
9. The method of claim 8, wherein the neighboring block is adjacent to the current video block.
10. The method of claim 8, wherein the neighboring block is non-adjacent to the current video block.
11. The method of claim 8, wherein a first partition structure is allowable for the one or more luma blocks and a second partition structure, different from the first partition structure, is allowable for the chroma component.
12. A method for video processing, comprising:
determining, for a current video block of a video, that a use of an intra block copy (IBC) mode for the current video block is disabled or a block vector corresponding to the current video block is invalid;
generating, based on the determining, a prediction for the current video block using a default intra mode; and
performing, based on the prediction, a conversion between the current video block and a bitstream representation of the video.
13. The method of claim 12, wherein the default intra mode is indicated by a predetermined most probable mode (MPM) intra mode.
14. The method of claim 13, wherein the predetermined MPM intra mode is a first mode in an MPM list.
15. The method of claim 13, wherein the predetermined intra mode is a first available mode in an MPM list.
16. The method of claim 12, wherein the default intra mode is a PLANAR mode, a DC mode or a residual differential pulse-code modulation (RDPCM) mode.
17. The method of claim 12, wherein an indication of the default intra mode is signaled in a decoder parameter set (DPS), a video parameter set (VPS), a sequence parameter set (SPS), a picture parameter set (PPS), an adaptation parameter set (APS), a picture header, a slice header, a tile group header, a largest coding unit (LCU), a coding unit (CU), an LCU row or a group of LCUs.
18. A method for video processing, comprising:
selectively enabling, for a conversion between a current video block of a video and a bitstream representation of the video, an intra block copy (IBC) mode for the current video block; and
performing, subsequent to the selectively enabling, the conversion,
wherein the current video block comprises one or more sub-blocks, and
wherein at least one of the sub-blocks are associated with invalid block vectors.
19. The method of claim 18, wherein the IBC mode is enabled for the current video block of a current picture of a chroma component of the video, and wherein the method further comprises: deriving a block vector corresponding to the chroma component from the corresponding luma block or from the bitstream representation.
20. The method of claim 18, further comprising:
determining that a block vector corresponding to a luma block associated with the chroma component does not exist; and
designating, based on the determining, the block vector as invalid.
21. A method for video processing, comprising:
performing a conversion between a current video block of a current picture of a video and a bitstream representation of the video,
wherein the current video block is represented in the bitstream representation using an intra block copy mode based on prediction from a prediction block, and
wherein the prediction block comprises pixels having a default value.
22. The method of claim 21, wherein the pixels having the default value are based on a sub block of the current video block being unavailable.
23. The method of claim 22, wherein a block vector corresponding to the sub-block is invalid or a motion vector of the sub-block is valid.
24. The method of claim 22, wherein a luma block of the sub-block is not coded using the IBC mode.
25. The method of any of claims 22 to 24, wherein the default value is based on a bit-depth of a sample of the current video block, one or more reconstructed samples of a previously coded or decoded pictures or one or more reconstructed samples of a neighboring block.
26. The method of any of claims 22 to 24, wherein the default value is signaled in a decoder parameter set (DPS), a video parameter set (VPS), a sequence parameter set (SPS), a picture parameter set (PPS), an adaptation parameter set (APS), a slice header, a tile group header, a coding tree unit (CTU) or a coding unit (CU).
27. The method of claim 21, wherein the prediction block is based on a reference block indicated by a block vector corresponding to an IBC-coded chroma sub-block.
28. A method for video processing, comprising:
deriving, for a chroma video block that is coded using an intra block copy (IBC) mode, a motion vector or a block vector of the chroma video block based on a motion vector or a block vector of a neighboring chroma block; and
performing, based on the deriving, a conversion between the chroma video block and a bitstream representation of the video.
29. The method of claim 28, wherein the neighboring chroma block is a left neighboring block.
30. The method of claim 28, wherein the neighboring chroma block is an above neighboring block.
31. The method of claim 28, wherein a top-left coordinate of the chroma video block is
(x, y), wherein a size of the chroma video block is WXH, wherein the neighboring chroma block is a basic block that covers a sample with coordinates (x-1, y+i), wherein i, W and H are integers, and wherein i ranges from 0 to 2><H.
32. The method of claim 28, wherein a top -left coordinate of the chroma video block is (x, y), wherein a size of the chroma video block is WxH, wherein the neighboring chroma block is a basic block that covers a sample with coordinates (x+i, y-1), wherein i, W and H are integers, and wherein i ranges from 0 to 2 W.
33. The method of claim 31 or 32, wherein the basic block is a 4^4 block.
34. A method for video processing, comprising:
making a determination that a current video block is from a video unit of a video having a content type; and
performing, based on the determination, a conversion between the current video block and the bitstream representation of the video,
wherein the content type is indicated in the bitstream representation at the video unit level, and
wherein a coding tool is selectively available for the conversion depending on the content type based on a rule.
35. The method of claim 34, wherein the coding tool comprises an intra prediction tool.
36. The method of claim 35, wherein the intra prediction tool comprises a position dependent intra prediction combination (PDPC) tool that is disabled.
37. The method of claim 35, wherein the intra prediction tool comprises an intra reference smoothing that is disabled.
38. The method of claim 35, wherein the intra prediction process comprises a matrix-based intra prediction that is disabled.
39. The method of claim 34, wherein the coding tool comprises an inter prediction tool.
40. The method of claim 39, wherein the inter prediction tool comprises an adaptive motion vector resolution (AMVR) tool that is disabled.
41. The method of claim 39, wherein the inter prediction tool comprises a bi-directional optical flow (BDOF) tool that is disabled.
42. The method of claim 39, wherein the inter prediction tool comprises a decoder-side motion vector refinement (DMVR) tool that is disabled.
43. The method of claim 34, wherein the coding tool comprises an application of a long tap filter in a deblocking process to the current video block.
44. The method of claim 34, wherein the coding tool comprises a blending process of a triangular partitioning mode (TPM) for inter prediction that is disabled.
45. The method of claim 44, wherein the blending process is applied along an edge of a first triangular partition and a second triangular partition.
46. The method of claim 44 or 45, wherein the TPM generates diagonal partitions.
47. The method of claim 44 or 45, wherein the TPM generates anti-diagonal partitions.
48. The method of claim 44 or 45, wherein a number of weighting lines in the blending process for a chroma component and a luma component of the video is N and M, respectively, wherein N and M are positive integers.
49. The method of claim 48, wherein N =¾ 7 and M =¾ 3.
50. The method of claim 48, wherein N = 3 and M = 3.
51. The method of claim 48, wherein M and N are based on at least one of a screen content in the current video block, a shape of the current video block, an indication of a color format of the current video block, a picture type of a picture comprising the current video block, an identification of a temporal layer of the current video block or a message signaled in a decoder parameter set (DPS), a video parameter set (VPS), a sequence parameter set (SPS), a picture parameter set (PPS), an adaptation parameter set (APS), a picture header, a slice header, a tile group header, a largest coding unit (LCU), a coding unit (CU), an LCU row, a group of LCUs, a transform unit (TU) or a prediction unit (PU).
52. The method of claim 45, wherein a first motion compensated block is derived based on motion information of the first triangular partition and a second motion compensated block is derived based on motion information of the second triangular partition, and wherein one or more weights for the first and second motion compensated blocks in the blending process is based on a reference index or a motion vector of the first and second triangular partitions.
53. The method of claim 45, wherein the edge is a diagonal or an anti-diagonal of the current video block.
54. A method for video processing, comprising:
storing, for a current video block that is coded using a triangular partition mode (TPM), uni -prediction information for at least one sub-block of the current video block; and
performing, using the uni -prediction information, a conversion between the current video block of a video and a bitstream representation of the video.
55. The method of claim 54, wherein the TPM partitions the current video block into a first partition and a second partition comprising a first motion information (MvInfoO) and a second motion information (Mvlnfol), respectively.
56. The method of claim 55, wherein the uni -prediction information is identical to one or MvInfoO and Mvlnfol.
57. The method of claim 55, wherein the uni -prediction information is derived based on MvInfoO and/or Mvlnfol .
58. The method of any of claims 54 to 57, wherein the at least one sub-block comprises all sub-blocks of the current video block.
59. The method of any of claims 54 to 57, wherein the at least one sub-block comprises one or more sub-blocks along a diagonal region or an anti-diagonal region of the current video block.
60. A method for video processing, comprising:
making a decision, based on a coding tree structure of a current video block, regarding a selective enablement of coding mode to the current video block; and performing, based on the decision, a conversion between the current video block and the bitstream representation of the current video block.
61. The method of claim 60, wherein the bitstream representation comprises an indication of the coding mode that is inferred as false based on the coding tree structure being a dual coding tree structure.
62. The method of claim 60, wherein the bitstream representation excludes a signaling of the coding mode based on the coding tree structure being a dual coding tree structure.
63. The method of any of claims 60 to 62, wherein the coding mode comprises a residual differential pulse-code modulation (RDPCM) mode.
64. The method of any of claims 60 to 62, wherein the coding mode comprises a cross component linear model (CCLM) prediction mode.
65. The method of any of claims 60 to 62, wherein the coding mode comprises a quantized residual block differential pulse-code modulation (QR-BDPCM).
66. A method for video processing, comprising:
determining, based on a size of a current video block of a video that is coded using an intra block copy (IBC) mode, a predefined transform; and
performing, based on the determining, a conversion between the current video block and a bitstream representation of the video, wherein the conversion comprises:
applying, during encoding, the predefined transform between an IBC prediction of the current video block and a residual coding in the bitstream representation, or
applying, during decoding, an inverse of the predefined transform between a residual of the current video block coded in the bitstream representation and a reconstructed IBC.
67. The method of claim 66, wherein the predefined transform is a transform skip (TS) operation, and wherein the size is 4x4 or larger than 32x32.
68. The method of claim 66, wherein the predefined transform is a Discrete Cosine
Transform (DCT).
69. The method of claim 66, wherein the predefined transform is a transform skip (TS) operation, and wherein the size is 64x64.
70. The method of claim 66, wherein the predefined transform is a horizontal transform, wherein the predefined transform is a transform skip (TS) operation based on a width of the block being less than or equal to a first threshold (Tl) and greater than a second threshold (T2), and a Discrete Cosine Transform (DCT)-II otherwise, and wherein Tl and T2 are integers.
71. The method of claim 66, wherein the predefined transform is a vertical transform, wherein the predefined transform is a transform skip (TS) operation based on a height of the block being less than or equal to a first threshold (Tl) and greater than a second threshold (T2), and a Discrete Cosine Transform (DCT)-II otherwise, and wherein Tl and T2 are integers.
72. The method of claim 70 or 71, wherein Tl = 16 and T2 = 4.
73. A method for video processing, comprising:
conditionally enabling, for a current video block of a video, a triangular prediction mode (TPM) for the current video block with uni-prediction; and
performing, subsequent to the conditionally enabling, a conversion between the current video block and a bitstream representation of the video,
wherein the TPM comprises splitting the current video block into multiple sub-blocks, at least one having a non-square shape.
74. The method of claim 73, wherein the conditionally enabling is based on a flag signaled in the bitstream representation being true, and wherein the flag disables TPM blending and screen content.
75. The method of claim 73, wherein the TPM is conditionally enabled for motion storage and/or motion compensation.
76. The method of any of claim 1 to 75, wherein performing the conversion is further based on at least one of a screen content in the current video block, a shape of the current video block, an indication of a color format of the current video block, a picture type of a picture comprising the current video block, an identification of a temporal layer of the current video block or a message signaled in a decoder parameter set (DPS), a video parameter set (VPS), a sequence parameter set (SPS), a picture parameter set (PPS), an adaptation parameter set (APS), a picture header, a slice header, a tile group header, a largest coding unit (LCU), a coding unit (CU), an LCU row, a group of LCUs, a transform unit (TU) or a prediction unit (PU).
77. The method of any of claims 1 to 76, wherein the performing the conversion includes generating the current video block from the bitstream representation.
78. The method of any of claims 1 to 76, wherein the performing the conversion includes generating the bitstream representation from the current video block.
79. An apparatus in a video system comprising a processor and a non-transitory memory with instructions thereon, wherein the instructions upon execution by the processor, cause the processor to implement the method in any one of claims 1 to 78.
80. A computer program product stored on a non-transitory computer readable media, the computer program product including program code for carrying out the method in any one of claims 1 to 78.
PCT/US2020/033134 2019-05-16 2020-05-15 Intra block copy for screen content coding WO2020232355A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202080036494.2A CN113826390B (en) 2019-05-16 2020-05-15 Intra-frame block copy for screen content codec

Applications Claiming Priority (12)

Application Number Priority Date Filing Date Title
CNPCT/CN2019/087235 2019-05-16
CN2019087235 2019-05-16
CNPCT/CN2019/087993 2019-05-22
CN2019087993 2019-05-22
CN2019090265 2019-06-06
CNPCT/CN2019/090265 2019-06-06
CN2019092153 2019-06-20
CNPCT/CN2019/092153 2019-06-20
CN2019092833 2019-06-25
CNPCT/CN2019/092833 2019-06-25
CN2019095158 2019-07-08
CNPCT/CN2019/095158 2019-07-08

Publications (1)

Publication Number Publication Date
WO2020232355A1 true WO2020232355A1 (en) 2020-11-19

Family

ID=73289262

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2020/033134 WO2020232355A1 (en) 2019-05-16 2020-05-15 Intra block copy for screen content coding

Country Status (2)

Country Link
CN (1) CN113826390B (en)
WO (1) WO2020232355A1 (en)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220150485A1 (en) * 2019-03-11 2022-05-12 Interdigital Vc Holdings, Inc. Intra prediction mode partitioning
WO2022256353A1 (en) * 2021-05-31 2022-12-08 Beijing Dajia Internet Information Technology Co., Ltd. Methods and devices for geometric partition mode with motion vector refinement
WO2023034798A1 (en) 2021-08-31 2023-03-09 Tencent America LLC Intra prediction mode information propagation for geometric partition mode with ibc and intra prediction
WO2023040968A1 (en) * 2021-09-15 2023-03-23 Beijing Bytedance Network Technology Co., Ltd. Method, apparatus, and medium for video processing
WO2023246893A1 (en) * 2022-06-22 2023-12-28 Beijing Bytedance Network Technology Co., Ltd. Method, apparatus, and medium for video processing
WO2024012533A1 (en) * 2022-07-15 2024-01-18 Beijing Bytedance Network Technology Co., Ltd. Method, apparatus, and medium for video processing
WO2024046479A1 (en) * 2022-09-03 2024-03-07 Douyin Vision Co., Ltd. Method, apparatus, and medium for video processing
WO2024078630A1 (en) * 2022-10-14 2024-04-18 Douyin Vision Co., Ltd. Method, apparatus, and medium for video processing
WO2024081261A1 (en) * 2022-10-10 2024-04-18 Beijing Dajia Internet Information Technology Co., Ltd. Methods and devices with intra block copy
WO2024086520A1 (en) * 2022-10-17 2024-04-25 Tencent America LLC Boundary filtering on intrabc and intratmp coded blocks
WO2025007849A1 (en) * 2023-07-05 2025-01-09 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Systems and methods for improved direct block copy for chroma coding
JP7632807B2 (en) 2021-08-02 2025-02-19 テンセント・アメリカ・エルエルシー Method, apparatus and program for geometric partition mode with intra-block copy
WO2025067264A1 (en) * 2023-09-25 2025-04-03 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method and apparatus for chroma coding
WO2025145009A1 (en) * 2023-12-27 2025-07-03 Ofinno, Llc Adaptive reference sample filtering for intra prediction

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114125442B (en) * 2022-01-29 2022-05-03 腾讯科技(深圳)有限公司 Screen video coding mode determining method, coding method, device and computing equipment
US12192480B2 (en) * 2022-07-13 2025-01-07 Tencent America LLC Weight derivation of multiple reference line for intra prediction fusion

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140086303A1 (en) * 2012-09-24 2014-03-27 Qualcomm Incorporated Bitstream conformance test in video coding
US20150124877A1 (en) * 2012-04-25 2015-05-07 Samsung Electronics Co., Ltd. Multiview video encoding method using reference picture set for multiview video prediction and device therefor, and multiview video decoding method using reference picture set for multiview video prediction and device therefor
US20160100163A1 (en) * 2014-10-07 2016-04-07 Qualcomm Incorporated Deblock filtering for intra block copying
US20160241868A1 (en) * 2013-10-14 2016-08-18 Microsoft Technology Licensing, Llc Features of intra block copy prediction mode for video and image coding and decoding
US20170105014A1 (en) * 2015-10-08 2017-04-13 Qualcomm Incorporated Luma-driven chroma scaling for high dynamic range and wide color gamut contents

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BR112014025563B1 (en) * 2012-04-16 2023-12-05 Electronics And Telecommunications Research Institute METHOD FOR DECODING A VIDEO SIGNAL
RU2635064C2 (en) * 2013-10-14 2017-11-08 ЭйджЭфАй Инновэйшн Инк. Method of residual differential pulse code modulation for expanding high-efficient video coding (hevc) range
US10327001B2 (en) * 2014-06-19 2019-06-18 Qualcomm Incorporated Systems and methods for intra-block copy
EP4040791A1 (en) * 2015-06-08 2022-08-10 Vid Scale, Inc. Intra block copy mode for screen content coding
US20170099490A1 (en) * 2015-10-02 2017-04-06 Qualcomm Incorporated Constrained intra-prediction for block copy mode
CN111385570B (en) * 2018-12-28 2021-11-02 杭州海康威视数字技术股份有限公司 Encoding method, decoding method and device

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150124877A1 (en) * 2012-04-25 2015-05-07 Samsung Electronics Co., Ltd. Multiview video encoding method using reference picture set for multiview video prediction and device therefor, and multiview video decoding method using reference picture set for multiview video prediction and device therefor
US20140086303A1 (en) * 2012-09-24 2014-03-27 Qualcomm Incorporated Bitstream conformance test in video coding
US20160241868A1 (en) * 2013-10-14 2016-08-18 Microsoft Technology Licensing, Llc Features of intra block copy prediction mode for video and image coding and decoding
US20160100163A1 (en) * 2014-10-07 2016-04-07 Qualcomm Incorporated Deblock filtering for intra block copying
US20170105014A1 (en) * 2015-10-08 2017-04-13 Qualcomm Incorporated Luma-driven chroma scaling for high dynamic range and wide color gamut contents

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JILL BOYCE; YAN YE; JIANLE CHEN; ADARSH RAMASUBRAMONIAN: "Overview of SHVC: Scalable extensions of the high efficiency video coding standard", IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY, vol. 26, no. 1, 1 January 2016 (2016-01-01), pages 20 - 34, XP055761632 *

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12101472B2 (en) * 2019-03-11 2024-09-24 Interdigital Vc Holdings, Inc. Intra prediction mode partitioning
US20220150485A1 (en) * 2019-03-11 2022-05-12 Interdigital Vc Holdings, Inc. Intra prediction mode partitioning
WO2022256353A1 (en) * 2021-05-31 2022-12-08 Beijing Dajia Internet Information Technology Co., Ltd. Methods and devices for geometric partition mode with motion vector refinement
JP7632807B2 (en) 2021-08-02 2025-02-19 テンセント・アメリカ・エルエルシー Method, apparatus and program for geometric partition mode with intra-block copy
EP4209008A4 (en) * 2021-08-31 2024-03-20 Tencent America LLC INTRAPREDICTION MODE INFORMATION PROPAGATION FOR GEOMETRIC PARTITION MODE WITH IBC AND INTRAPREDICTION
US11876978B2 (en) 2021-08-31 2024-01-16 Tencent America LLC Intra prediction mode information propagation for geometric partition mode with IBC and intra prediction
CN116325745A (en) * 2021-08-31 2023-06-23 腾讯美国有限责任公司 Intra Prediction Mode Information Propagation Using IBC and Geometric Partition Mode for Intra Prediction
US12323602B2 (en) 2021-08-31 2025-06-03 Tencent America LLC Storage of intra mode information in geometric partition mode
WO2023034798A1 (en) 2021-08-31 2023-03-09 Tencent America LLC Intra prediction mode information propagation for geometric partition mode with ibc and intra prediction
JP7585487B2 (en) 2021-08-31 2024-11-18 テンセント・アメリカ・エルエルシー Intra-prediction mode information propagation for geometric partition modes using IBC and intra prediction
WO2023040968A1 (en) * 2021-09-15 2023-03-23 Beijing Bytedance Network Technology Co., Ltd. Method, apparatus, and medium for video processing
WO2023246893A1 (en) * 2022-06-22 2023-12-28 Beijing Bytedance Network Technology Co., Ltd. Method, apparatus, and medium for video processing
WO2024012533A1 (en) * 2022-07-15 2024-01-18 Beijing Bytedance Network Technology Co., Ltd. Method, apparatus, and medium for video processing
WO2024046479A1 (en) * 2022-09-03 2024-03-07 Douyin Vision Co., Ltd. Method, apparatus, and medium for video processing
WO2024081261A1 (en) * 2022-10-10 2024-04-18 Beijing Dajia Internet Information Technology Co., Ltd. Methods and devices with intra block copy
WO2024078630A1 (en) * 2022-10-14 2024-04-18 Douyin Vision Co., Ltd. Method, apparatus, and medium for video processing
WO2024086520A1 (en) * 2022-10-17 2024-04-25 Tencent America LLC Boundary filtering on intrabc and intratmp coded blocks
WO2025007849A1 (en) * 2023-07-05 2025-01-09 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Systems and methods for improved direct block copy for chroma coding
WO2025067264A1 (en) * 2023-09-25 2025-04-03 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method and apparatus for chroma coding
WO2025145009A1 (en) * 2023-12-27 2025-07-03 Ofinno, Llc Adaptive reference sample filtering for intra prediction

Also Published As

Publication number Publication date
CN113826390A (en) 2021-12-21
CN113826390B (en) 2024-03-08

Similar Documents

Publication Publication Date Title
CN113826390B (en) Intra-frame block copy for screen content codec
KR102612765B1 (en) Technique for modifying quantization parameters in transform skip mode
AU2020258477B2 (en) Context coding for transform skip mode
KR102684993B1 (en) Derivation of chroma intra mode in screen content coding
US11765367B2 (en) Palette mode with intra block copy prediction
CN114208174B (en) Palette mode coding in prediction
KR20210090175A (en) Pulse Code Modulation Technology in Video Processing
WO2021073631A1 (en) Interplay between subpictures and in-loop filtering
KR20240024335A (en) Coordination method for sub-block based inter prediction
EP3997868A1 (en) Buffer management in subpicture decoding
TW201743619A (en) Confusion of multiple filters in adaptive loop filtering in video coding
CA3130472A1 (en) Independent coding of palette mode usage indication
WO2020236723A1 (en) Transform bypass coded residual blocks in digital video
KR20220002918A (en) Signaling in Transform Skip Mode
KR20220002917A (en) Coding mode based on coding tree structure type
WO2020243246A1 (en) Using coding tree structure type to control coding mode

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20805578

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

32PN Ep: public notification in the ep bulletin as address of the adressee cannot be established

Free format text: NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 112(1) EPC (EPO FORM 1205A DATED 23-03-2022)

122 Ep: pct application non-entry in european phase

Ref document number: 20805578

Country of ref document: EP

Kind code of ref document: A1