Palette mode for local dual trees

By employing a palette mode with dynamically sized palettes based on local dual trees, the video processing method effectively addresses the challenges of digital video compression, enhancing efficiency and throughput while managing color format complexity.

JP7676506B2Active Publication Date: 2025-05-14DOUYIN VISION CO LTD +1
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
JP2023194713
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-05-21
Filing Date
2023-11-15
Publication Date
2025-05-14
Estimated Expiration
2041-02-05

AI Technical Summary

Technical Problem

Current video coding technologies face challenges in efficiently processing and compressing digital video due to increasing bandwidth demands and complexity in handling various color formats and transformations.

Method used

The proposed solution involves using a palette mode in video processing, where video blocks are represented using a palette of typical color values, and the size of the palette is determined based on the application of local dual trees. This approach includes specific rules for encoding and decoding, such as constrained quantization parameters for escape samples and adaptive color conversion modes.

Benefits of technology

This method enhances video compression efficiency by reducing the size of the palette dynamically based on local dual trees, improving processing throughput, and optimizing bitstream representation, thereby addressing the challenges of increasing bandwidth demands and color format complexity.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007676506000065
    Figure 0007676506000065
  • Figure 0007676506000066
    Figure 0007676506000066
  • Figure 0007676506000067
    Figure 0007676506000067
Patent Text Reader

Abstract

To provide a video processing method, system, and device relating to a pallet mode for a local dual tree.SOLUTION: An example of the video processing method includes performing a conversion between a video block of a video and a bitstream of the video using a palette mode in which samples of the video block are represented using a palette of representative color values. The size of the palette of the video block is determined based on whether a local dual tree is applied to the conversion.SELECTED DRAWING: Figure 9
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] This application is a divisional application of patent application No. 2022-547710, which entered the national phase on August 4, 2022, based on International Patent Application No. PCT / CN20 / 074316, filed on February 5, 2020, and International Patent Application No. PCT / CN20 / 091661, filed on May 21, 2020, which claims priority to and the benefit of International Patent Application No. PCT / CN20 / 075408, filed on December 28, 2020. All of the above patent applications are incorporated herein by reference in their entirety.

[0002] This patent document relates to image and video coding and decoding. [Background technology]

[0003] Digital video accounts for the largest bandwidth usage on the Internet and other digital communications networks, and the bandwidth demands for digital video use are expected to continue to increase as the number of connected user devices capable of receiving and displaying video increases. Summary of the Invention

[0004] This document discloses techniques that can be used by video encoders and decoders for image processing using a palette mode in which a palette of representative sample values ​​is used for the representation of the image.

[0005] In one example aspect, a video processing method is disclosed that includes converting between a video block of a video and a bitstream of the video using a palette mode in which samples of the video block are represented using a palette of representative color values, and a size of the palette for the video block is determined based on whether a local dual tree is applied to the video block.

[0006] In another example aspect, a video processing method is disclosed that includes converting between a video block of a video and a bitstream of the video using a palette mode in which samples of the video block are represented using a palette of representative color values, where a size of a palette predictor for the video block is based on whether a local dual tree is applied to the video block.

[0007] In another example aspect, a video processing method is disclosed that includes performing a conversion between a video block of a video and a bitstream of the video using a palette mode in which samples of the video block are represented using a palette of representative color values, the conversion following a rule that specifies that values ​​of escape samples are coded in the bitstream using a quantization parameter that is constrained by at least a maximum allowed value or a minimum allowed value.

[0008] In another example aspect, a video processing method is disclosed that includes converting between blocks of video and a bitstream of video according to format rules that specify whether parameters related to a chroma coding tool are present in an adaptive parameter set of the bitstream based on a control flag in the adaptive parameter set.

[0009] In another example aspect, a video processing method is disclosed that includes performing a conversion between blocks of a video and a bitstream of the video, the bitstream following a format rule that specifies that if the video is monochrome or color components of the video are processed separately, syntax elements associated with quantization parameters are omitted in a picture header of the bitstream.

[0010] In another example aspect, a video processing method is disclosed that includes performing a conversion between a video block of a video and a video bitstream according to rules that specify that a palette mode, in which samples of the video block are represented using a palette of representative color values, and an adaptive color transformation mode, in which color space transformation is performed in a residual domain, are mutually exclusively enabled for the conversion.

[0011] In another example aspect, a video processing method is disclosed that includes performing a conversion between a video block of a video and a bitstream of the video, where an adaptive color conversion mode is applied to the residual block, regardless of a color space of a residual block of the video block, where the color space conversion is performed in a residual domain.

[0012] In another example aspect, a video processing method is disclosed that includes performing a conversion between a video block of a video and a bitstream of the video, where the video block is coded using a transform skip residual coding tool in which transform skip coding residual coefficients of the video block are coded using a context coding process or a bypass coding process, where an operation is applied to a variable that specifies a number of remaining context coding bins allowed in the video block at the start or end of the bypass coding process.

[0013] In another example aspect, a video processing method is disclosed that includes performing a conversion between video blocks of a video and a video bitstream using a transform skip residual coding process, where the conversion includes applying operations to variables that indicate whether a syntax element belongs to a particular scan path.

[0014] In another example aspect, a video processing method is disclosed that includes performing a conversion between a video block of a video and a bitstream of the video, where a syntax element indicating a sign of a coefficient level is coded using a bypass coding process or a context coding process based on an index of a scan path in which the same syntax element of one or more coefficients in a region of the video block is coded in sequence.

[0015] In another example aspect, a video processing method is disclosed that includes converting between video blocks of a video and a bitstream of the video using a transform skip residual coding process, in which a syntax element indicating a sign of a coefficient level is coded using a bypass coding process or a context coding process based on whether the syntax element is signaled in the same scan path as another syntax element.

[0016] In another example aspect, a video processing method is disclosed that includes performing a conversion between a video block of a video and a coding representation of the video, where a palette mode is used for the coding representation of the video block, in which samples of the video block are represented using a palette of representative color values, and samples outside the palette are coded using escape symbols and values ​​that are quantized using a quantization parameter within a range between a minimum and a maximum allowed value determined by a rule.

[0017] In another example aspect, a video processing method is disclosed that includes performing a conversion between a video block of a video and a coding representation of the video, where a palette mode is used for the coding representation of the video block, in which samples of the video block are represented using a palette of representative color values, and a size of the palette depends on a rule as to whether a local dual tree is used for the conversion between the video block and the coding representation.

[0018] In another example aspect, a video processing method is disclosed that includes performing a conversion between a video block of a video and a coding representation of the video, where a palette mode in which samples of the video block are represented using a palette of representative color values ​​is used for the coding representation of the video block, and a size of a palette predictor depends on a rule for whether a local dual tree is used for the conversion between the video block and the coding representation.

[0019] In another example aspect, a video processing method is disclosed for converting between a video block in a video domain of a video and a coding representation of the video, the method including determining based on a coding condition whether syntax elements specifying deblocking offsets for chroma components of the video are included in the coding representation at a video domain level, and performing the conversion based on the determination, the deblocking offsets being used to selectively enable a deblocking operation on the video block.

[0020] In another example aspect, a video processing method is disclosed that includes determining, based on a coding condition, whether a syntax element specifying use of a chroma coding tool is included in the coding representation at a video domain level for converting between a video block in a video domain of a video and a coding representation of the video, and performing the conversion based on the determination, wherein a deblocking offset is used to selectively enable a deblocking operation on the video block.

[0021] In another example aspect, a video processing method is disclosed that includes performing a conversion between video blocks of a video region of a video and a coding representation of the video, the coding representation according to a format that specifies whether a first flag indicating a deblocking offset for a chroma component of the video is included in the coding representation based on whether a second flag indicating a quantization parameter offset for the chroma component is included in the coding representation.

[0022] In another example aspect, a video processing method is disclosed that includes performing a conversion between video blocks of a video domain of a video and a coding representation of the video, where the coding representation follows a format rule that specifies that a syntax element in the coding representation controls whether one or more parameters indicating applicability of one or more chroma coding tools are included in the coding representation at a video domain level or a video block level.

[0023] In yet another exemplary embodiment, a video encoder apparatus is disclosed, the video encoder comprising a processor configured to implement the method described above.

[0024] In yet another exemplary embodiment, a video decoder apparatus is disclosed, the video decoder comprising a processor configured to implement the method described above.

[0025] In yet another embodiment, a computer readable medium is disclosed having code stored thereon, the code being in the form of processor executable code that embodies one of the methods described herein.

[0026] These and other features are described throughout this document. [Brief description of the drawings]

[0027] [Figure 1]2 shows an example of a block coded in palette mode. [Diagram 2] 1 illustrates the use of a palette predictor to signal palette entries. [Diagram 3] 4 shows an example of horizontal and vertical transverse scans. [Figure 4] 13 shows an example of coding for a palette index. [Figure 5A] 5A-5B show examples of minimum chroma inter prediction units. [Figure 5B] 5A-5B show examples of minimum chroma inter prediction units. [Figure 6] FIG. 1 is an explanatory diagram of a decoding process using ACT. [Figure 7] FIG. 1 is a block diagram of an example of a video processing system. [Figure 8] FIG. 1 is a block diagram of a video processing device. [Figure 9] 1 is a flow chart of an example method for video processing. [Figure 10] FIG. 1 is a block diagram illustrating a video coding system in accordance with some embodiments of the present disclosure. [Figure 11] FIG. 2 is a block diagram illustrating an encoder according to some embodiments of the present disclosure. [Figure 12] FIG. 2 is a block diagram illustrating a decoder in accordance with some embodiments of the present disclosure. [Figure 13] 1 is a flowchart representation of one method of video processing in accordance with the present technology. [Figure 14] 1 is a flowchart representation of another method of video processing in accordance with the present technology. [Figure 15] 1 is a flowchart representation of another method of video processing in accordance with the present technology. [Figure 16] 1 is a flowchart representation of another method of video processing in accordance with the present technology. [Figure 17] 1 is a flowchart representation of another method of video processing in accordance with the present technology. [Figure 18]1 is a flowchart representation of another method of video processing in accordance with the present technology. [Figure 19] 1 is a flowchart representation of another method of video processing in accordance with the present technology. [Figure 20] 1 is a flowchart representation of another method of video processing in accordance with the present technology. [Figure 21] 1 is a flowchart representation of another method of video processing in accordance with the present technology. [Figure 22] 1 is a flowchart representation of another method of video processing in accordance with the present technology. [Figure 23] 11 is a flowchart representation of yet another method of video processing in accordance with the present technology. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0028] Section headings are used in this document for ease of understanding, but they do not limit the applicability of the techniques and embodiments disclosed in each section to that section alone. Also, H.266 terminology is used in some descriptions simply for ease of understanding, but this does not limit the scope of the disclosed techniques. Thus, the techniques described herein are applicable to other video codec protocols and designs.

[0029] 1. Overview This document relates to video coding techniques. Specifically, it relates to index and escape symbol coding in palette coding, chroma format signaling, and residual coding. It may apply to existing video coding standards such as HEVC, or to emerging standards (Versatile Video Coding). It may also be applicable to future video coding standards or video codecs.

[0030] 2. Video Coding Standards Video coding standards have evolved primarily through the development of well-known ITU-T and ISO / IEC standards. ITU-T produced H.261 and H.263, ISO / IEC produced MPEG-1 and MPEG-4 Visual, and these two organizations jointly produced the H.262 / MPEG-2 Video, H.264 / MPEG-4 AVC (Advanced Video Coding), and H.265 / HEVC standards. Since H.262, video coding standards have been based on hybrid video coding structures where transform coding is used in addition to temporal prediction. In order to explore future video coding technologies beyond HEVC, VCEG and MPEG jointly established the Joint Video Exploration Team (JVET) in 2015. Since then, many new methods have been adopted by JVET and put into a reference software named the Joint Exploration Model (JEM). In April 2018, the Joint Video Expert Team (JVET) was launched between VCEG (Q6 / 16) and ISO / IEC JTC1 SC29 / WG11 (MPEG) to work on the VVC standard, which aims to reduce the bit rate by 50% compared to HEVC.

[0031] 2.1 Palette Modes in HEVC Screen Content Coding Extension (HEVC-SCC) 2.1.1 Palette Mode Concept The basic idea behind the palette mode is that pixels in a CU are represented by a small set of representative color values. This set is called the palette. It is then possible to indicate samples outside the palette by signaling an escape symbol followed by the (possibly quantized) component value. This kind of pixel is called an escape pixel. The palette mode is illustrated in Figure 1. As shown in Figure 1, for each pixel with three color components (luma and two chroma components), an index into the palette is adjusted and a block can be reconstructed based on the values ​​adjusted into the palette.

[0032] 2.1.2 Coding Palette Entries For coding of palette entries, a palette predictor is maintained. The maximum size of the palette and the palette predictor are signaled in the SPS. In HEVC-SCC, palette_predictor_initializer_present_flag is introduced in the PPS. When this flag is 1, an entry to initialize the palette predictor is 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 palette_predictor_initializer_present_flag, the palette predictor is either reset to 0 or initialized using the palette predictor initializer entry signaled in the PPS. In HEVC-SCC, a palette predictor initializer of size 0 was enabled to allow explicit disabling of palette predictor initialization at the PPS level.

[0033] For each entry of the palette predictor, a reuse flag is signaled to indicate if it is currently part of the palette. This is shown in Figure 2. The reuse flag is sent using run-length coding of zeros. After this, the number of the new palette entry is signaled using an Exponential Golomb (EG) code of degree 0, i.e., EG-0. Finally, the component values ​​of the new palette entry are signaled.

[0034] 2.1.3 Palette Index Coding The palette index is coded using a horizontal and vertical transverse scan as shown in Figure 3. The scan order is explicitly signaled in the bitstream using palette_transpose_flag. In the remainder of this subsection, we assume that the scan is horizontal.

[0035] The palette index is coded using two palette sample modes: 'COPY_LEFT' and 'COPY_ABOVE'. In 'COPY_LEFT' mode, the palette index is assigned to the decoded index. In 'COPY_ABOVE' mode, the palette index of the sample in the row above is copied. In both 'COPY_LEFT' and 'COPY_ABOVE' modes, a run value is signaled that specifies the number of subsequent samples that are also coded in the same mode.

[0036] In palette mode, the value of the index for the Escape symbol is the number of palette entries, and the Escape component value is signaled for each Escape symbol when the Escape symbol is part of a run in 'COPY_LEFT' or 'COPY_ABOVE' modes. The coding of the palette index is illustrated in Figure 4.

[0037] The syntax order is performed as follows: first, the number of index values ​​for a CU is signaled. This is followed by the signaling of the actual index value of the entire CU using truncated binary coding. Both the number of indices and the index value are coded in bypass mode, which groups index-related bypass bins. Then, the palette sample mode (if required) and runs are signaled in an interleaved manner. Finally, the component escape values ​​corresponding to the escape symbol for the entire CU are grouped and coded in bypass mode. The binarization of the escape symbol is a third order EG coding, i.e. EG-3.

[0038] After signaling the index value, an additional syntax element, last_run_type_flag, is signaled, which makes it unnecessary to signal, together with the number of the index, the run value corresponding to the last run in the block.

[0039] In HEVC-SCC, palette mode is also enabled for 4:2:2, 4:2:0, and monochrome formats. The signaling of palette entries and palette indexes is almost the same for all chroma formats. For non-monochrome formats, each palette entry consists of three components. For monochrome formats, each palette entry consists of one component. In the subsampled chroma direction, chroma samples are associated with luma sample indices that are divisible by two. After reconstructing the palette index for a CU, if a sample has only one component associated with it, only the first component of the palette entry is used. The only difference in the signaling concerns the escape component values. For each escape symbol, the number of escape component values ​​signaled can vary depending on the number of components associated with that symbol.

[0040] FIG. 4 shows an example of coding of a palette index.

[0041] In addition, there is an index adjustment process in palette index coding. When signaling a palette index, the left adjacent index or the top adjacent index should be different from the current index. Therefore, by removing one possibility, the range of the current palette index can be reduced by one. After that, the index is signaled with truncated binary (TB) binarization.

[0042] The relevant text for this portion is provided below, where CurrPaletteIndex is the current palette index and adjustedRefPaletteIndex is the predicted index.

[0043] The variables PaletteIndexMap[xC][yC] define a palette index, which is an index into the array represented by CurrentPaletteEntries. The array indices xC, yC define the location (xC, yC) of the sample relative to the top-left luma sample of the picture. The value of PaletteIndexMap[xC][yC] is in the range from 0 to MaxPaletteIndex, inclusive.

[0044] The variable adjustedRefPaletteIndex is derived as follows: adjustedRefPaletteIndex=MaxPaletteIndex+1 if(PaletteScanPos>0) { xcPrev=x0+TraverseScanOrder[log2CbWidth][log2bHeight][PaletteScanPos-1][0] ycPrev=y0+TraverseScanOrder[log2CbWidth][log2bHeight][PaletteScanPos-1][1] if(CopyAboveIndicesFlag[xcPrev][ycPrev]==0){ adjustedRefPaletteIndex=PaletteIndexMap[xcPrev][ycPrev]{ (7-157) } else { if(!palette_transpose_flag) adjustedRefPaletteIndex=PaletteIndexMap[xC][yC-1] else adjustedRefPaletteIndex=PaletteIndexMap[xC-1][yC] } } When CopyAboveIndicesFlag[xC][yC] is equal to 0, the variable CurrPaletteIndex is derived as follows: if(CurrPaletteIndex>=adjustedRefPaletteIndex) CurrPaletteIndex++ Also, run-length elements in palette mode are context coded. The relevant context derivation process described in JVET-O2011-vE is shown as follows: Derivation process of ctxInc for syntax element palette_run_prefix The input to this process is the bin index binIdx, and the syntax elements copy_above_palette_indices_flag and palette_idx_idc; The output of this process is the variable ctxInc; The variable ctxInc is derived as follows: - If copy_above_palette_indices_fla is equal to 0 and binIdx is equal to 0, ctxInc is derived as follows: ctxInc=(palette_idx_idc<1)?0:((palette_idx_idc<3)?1:2) (9-69) - Otherwise, ctxInc is given by Table 1: [Table 1]

[0045] 2.2 Palette Modes in VVC 2.2.1 Palettes in Dual Trees In VVC, a dual-tree coding structure is used to code intra slices, and therefore the luma component and the two chroma components may have different palettes and palette indices, and the two chroma components share the same palette and palette indices.

[0046] 2.2.2 Palettes as Separate Modes In some embodiments, the prediction modes for a coding unit may be MODE_INTRA, MODE_INTER, MODE_IBC, and MODE_PLT, and the binarization of the prediction modes is changed accordingly.

[0047] When IBC is turned off, on an I tile, the first bin is used to indicate whether the current prediction mode is MODE_PLT or not. On a P / B tile, the first bin is used to indicate whether the current prediction mode is MODE_INTRA or not. If not, one additional bin is used to indicate whether the current prediction mode is MODE_PLT or MODE_INTER.

[0048] When IBC is turned on, on an I-tile, the first bin is used to indicate whether the current prediction mode is MODE_IBC. If not, the second bin is used to indicate whether the current prediction mode is MODE_PLT or MODE_INTRA. On a P / B-tile, the first bin is used to indicate whether the current prediction mode is MODE_INTRA. If it is an intra mode, the second bin is used to indicate whether the current prediction mode is MODE_PLT or MODE_INTRA. If not, the second bin is used to indicate whether the current prediction mode is MODE_IBC or MODE_INTER.

[0049] The text example is presented as follows: (outside 1) TIFF0007676506000002.tif166170

[0050] 2.2.3 Palette Mode Syntax (outside 2) TIFF0007676506000003.tif218170TIFF0007676506000004.tif231170TIFF0007676506000005.tif229170TIFF0007676506000006.tif123170

[0051] 2.2.4 Palette Mode Semantics In the following semantics, array indexes x0, y0 specify the position (x0, y0) of the top-left luma sample of the coding block under consideration relative to the top-left luma sample of the picture. Array indexes xC, yC specify the position (xC, yC) of the sample relative to the top-left luma sample of the picture. Array index startComp specifies the first color component of the current palette table. startComp equal to 0 points to the Y component. startComp equal to 1 points to the Cb component. startComp equal to 2 points to the Cr component. numComps specifies the number of color components currently in the palette table.

[0052] The predictor palette consists of palette entries from previous coding units that are used to predict entries in the current palette.

[0053] The variable PredictorPaletteSize[startComp] specifies the size of the predictor palette for the first color component, startComp, of the current palette table. PredictorPaletteSize is derived as specified in Section 8.4.5.3.

[0054] The variable PalettePredictorEntryReuseFlags[i] equal to 1 specifies that the i-th entry in the predictor palette is reused in the current palette. PalettePredictorEntryReuseFlags[i] equal to 0 specifies that the i-th entry in the predictor palette is not an entry in the current palette. All elements of the array PalettePredictorEntryReuseFlags[i] are initialized to 0.

[0055] palette_predictor_run is used to determine the number of zeros that precede a non-zero entry in the array PalettePredictorEntryReuseFlags.

[0056] It is a bitstream conformance requirement that the value of palette_predictor_run be in the range of 0 to (PredictorPaletteSize-predictorEntryIdx), inclusive, where predictorEntryIdx corresponds to the current position in the array PalettePredictorEntryReuseFlags. The variable NumPredictedPaletteEntries specifies the number of entries in the current palette that are reused from the predictor palette. The value of NumPredictedPalletteEntries is in the range of 0 to palette_max_size, inclusive.

[0057] num_signalled_palette_entries specifies the number of entries in the current palette that are explicitly signaled for the first color component, startComp, of the current palette table.

[0058] When num_signalled_palette_entries is not present, it is inferred to be equal to 0.

[0059] The variable CurrentPaletteSize[startComp] specifies the size of the current palette for the first color component, startComp, of the current palette table, and is derived as follows: CurrentPaletteSize[startComp]=NumPredictedPaletteEntries+ num_signalled_palette_entries (7-155)

[0060] The value of CurrentPaletteSize[startComp] is in the range 0 to palette_max_size, inclusive. new_palette_entries[cIdx][i] specifies the value for the i-th signaled palette entry for color component cIdx. The variable PredictorPaletteEntries[cIdx][i] defines the i-th element in the predictor palette for color component cIdx. The variable CurrentPaletteEntries[cIdx][i] specifies the i-th element in the current palette for color component cIdx and is derived as follows: numPredictedPaletteEntries=0 for(i=0;i <PredictorPaletteSize[startComp];i++) if(PalettePredictorEntryReuseFlags[i]){ for(cIdx=startComp;cIdx<(startComp+numComps);cIdx++) CurrentPaletteEntries[cIdx][numPredictedPaletteEntries]= PredictorPaletteEntries[cIdx][i] numPredictedPaletteEntries++ } for(cIdx=startComp;cIdx<(startComp+numComps);cIdx++) (7-156) for(i=0;i <num_signalled_palette_entries[startComp];i++) CurrentPaletteEntries[cIdx][numPredictedPaletteEntries+i]= new_palette_entries[cIdx][i] palette_escape_val_present_flag equal to 1 specifies that the current coding unit contains at least one escape-coded sample. palette_escape_val_present_flag equal to 0 specifies that there are no escape-coded samples in the current coding unit. When not present, the value of palette_escape_val_present_flag is inferred to be equal to 1. The variable MaxPaletteIndex specifies the maximum possible value for the palette index for the current coding unit. The value of MaxPaletteIndex is set equal to CurrentPaletteSize[startComp]-1+palette_escape_val_present_flag. num_palette_index_minus1+1 is the number of palette indices that are explicitly signaled or estimated for the current block. When num_palette_indexs_minus1 is not present, it is inferred to be equal to 0. palette_idx_idc is an indication of an index into the palette table CurrentPaletteEntries. The value of palette_idx_idc is in the range of 0 to MaxPaletteIndex, inclusive, for the first index in the block, and 0 to (MaxPaletteIndex-1), inclusive, for the remaining indices in the block. When palette_idx_idc is not present, it is inferred to be equal to 0. The variable PaletteIndexIdc[i] stores the i-th palette_idx_idc, which is either explicitly signaled or inferred. All elements of the array PaletteIndexIdc[i] are initialized to 0. copy_above_indices_for_final_run_flag equal to 1 specifies that the palette index of the last position in a coding unit is copied from the palette index in the row above if horizontal cross scan is used, or from the palette index in the column to the left if vertical cross scan is used. copy_above_indices_for_final_run_flag equal to 0 specifies that the palette index of the last position in a coding unit is copied from PaletteIndexIdc[num_palette_indices_minus1]. When copy_above_indices_for_final_run_flag is not present, it is inferred to be equal to 0. A palette_transpose_flag equal to 1 specifies that a vertical traverse scan is applied to scan indices for samples in the current coding unit. A palette_transpose_flag equal to 0 specifies that a horizontal traverse scan is applied to scan indices for samples in the current coding unit. When not present, the value of palette_transpose_flag is inferred to be equal to 0. The array TraverseScanOrder specifies the scan order array for palette coding. If palette_transpose_flag is equal to 0, TraverseScanOrder is assigned the horizontal scan order HorTravScanOrder, and if palette_transpose_flag is equal to 1, TraverseScanOrder is assigned the vertical scan order VerTravScanOrder. copy_above_palette_indices_flag equal to 1 specifies that the palette index is equal to the palette index in the same position in the row above if horizontal cross scanning is used, or in the left column if vertical cross scanning is used. copy_above_palette_indices_flag equal to 0 specifies that an indication of the palette index of the sample is coded or inferred in the bitstream. The variable CopyAboveIndicesFlag[xC][yC] equal to 1 specifies that the palette index is copied from the palette index in the row above (horizontal scan) or column to the left (vertical scan). CopyAboveIndicesFlag[xC][yC] equal to 0 specifies that the palette index is explicitly coded or inferred in the bitstream. The array indexes xC, yC specify the location of the sample (xC, yC) relative to the top-left luma sample of the picture. The value of PaletteIndexMap[xC][yC] is in the range of 0 to (MaxPaletteIndex-1), inclusive. The variables PaletteIndexMap[xC][yC] define a palette index, which is an index into the array represented by CurrentPaletteEntries. The array indices xC, yC define the location (xC, yC) of the sample relative to the top-left luma sample of the picture. The value of PaletteIndexMap[xC][yC] is in the range from 0 to MaxPaletteIndex, inclusive. The variable adjustedRefPaletteIndex is derived as follows: adjustedRefPaletteIndex=MaxPaletteIndex+1 if(PaletteScanPos>0) { xcPrev=x0+TraverseScanOrder[log2CbWidth][log2bHeight][PaletteScanPos-1][0] ycPrev=y0+TraverseScanOrder[log2CbWidth][log2bHeight][PaletteScanPos-1][1] if(CopyAboveIndicesFlag[xcPrev][ycPrev]==0){ adjustedRefPaletteIndex=PaletteIndexMap[xcPrev][ycPrev]{ (7-157) } else { if(!palette_transpose_flag) adjustedRefPaletteIndex=PaletteIndexMap[xC][yC-1] else adjustedRefPaletteIndex=PaletteIndexMap[xC-1][yC] } } When CopyAboveIndicesFlag[xC][yC] is equal to 0, the variable CurrPaletteIndex is derived as follows: if(CurrPaletteIndex>=adjustedRefPaletteIndex) CurrPaletteIndex++ (7-158) palette_run_prefix, when present, specifies the prefix portion in the binarization of PaletteRunMinus1. palette_run_suffix is ​​used to derive the variable PaletteRunMinus1. When not present, the value of palette_run_suffix is ​​inferred to be equal to 0. When RunToEnd is equal to 0, the variable PaletteRunMinus1 is derived as follows: If PaletteMaxRunMinus1 is equal to 0, then the variable PaletteRunMinus1 is set equal to 0. - Otherwise (PaletteMaxRunMinus1 is greater than 0), the following applies: - If palette_run_prefix is ​​less than 2, the following applies: PaletteRunMinus1=palette_run_prefix (7-159) - Otherwise (palette_run_prefix is ​​≥ 2), the following applies: PrefixOffset=1<<(palette_run_prefix-1) PaletteRunMinus1=PrefixOffset+palette_run_suffix (7-160) The variable PaletteRunMinus1 is used as follows: - If CopyAboveIndicesFlag[xC][yC] is equal to 0, PaletteRunMinus1 specifies the number of consecutive positions with the same palette index minus 1. - Otherwise, if palette_transpose_flag is equal to 0, PaletteRunMinus1 specifies the number of consecutive positions that have the same palette index as used in the corresponding position in the row above, minus one. - Otherwise, PaletteRunMinus1 defines the number of consecutive positions that have the same palette index as used in the corresponding position in the left column, minus one. When RunToEnd is equal to 0, the variable PaletteMaxRunMinus1 represents the maximum possible value for PaletteRunMinus1, and it is a bitstream conformance requirement that the value of PaletteMaxRunMinus1 be greater than or equal to 0. palette_escape_val specifies the quantized escape-coded sample value for the component. The variable PaletteEscapeVal[cIdx][xC][yC] specifies the escape value for samples for which PaletteIndexMap[xC][yC] is equal to MaxPaletteIndex and palette_escape_val_present_flag is equal to 1. The array index cIdx specifies the color component. The array indexes xC, yC specify the position (xC, yC) of the sample relative to the top-left luma sample of the picture. PaletteEscapeVal[cIdx][xC][yC] is a range from 0 to (1<<(BitDepth Y +1))-1, inclusive, for cIdx not equal to 0. C The bitstream conformance requirement is that the bitstream size must be within the range of +1))-1.

[0061] 2.2.5 Line-based CG Palette Mode A line-based CG palette mode is adopted in VVC. In this method, each CU in palette mode is divided into multiple segments of m samples (m=16 in this test) based on the transverse scan mode. The coding order of palette run coding within each segment is as follows: for each pixel, one context-coded bin run_copy_flag=0 is signaled to indicate whether the pixel is of the same mode as the previous pixel, i.e., whether the previous scanned pixel and the current pixel are both of run type COPY_ABOVE, or whether the previous scanned pixel and the current pixel are both of run type INDEX with the same index value. Otherwise, run_copy_flag=1 is signaled. If the pixel and the previous pixel are of different modes, one context-coded bin copy_above_palette_indices_flag is signaled to indicate the run type of the pixel, i.e., INDEX or COPY_ABOVE. As with palette mode in VTM6.0, if the sample is in the first row (horizontal cross scan) or first column (vertical cross scan), INDEX mode is used by default, so the decoder does not need to parse the run type. Also, if the previously parsed run type is COPY_ABOVE, the decoder does not need to parse the run type. After palette run coding of pixels in one segment, index values ​​(in INDEX mode) and quantized escape colors are bypass coded and grouped separately from the encoding / parsing of context coded bins to improve throughput within each line CG.Since the index values ​​are now coded / parsed after run coding instead of being processed before palette run coding as in VTM, there is no need for the encoder to signal the number of index values ​​num_palette_indices_minus1 and the final run type copy_above_indices_for_final_run_flag.

[0062] Text in line-based CG palette mode in some embodiments is shown as follows: Palette Coding Syntax (Outside 3) TIFF0007676506000007.tif217170TIFF0007676506000008.tif229170TIFF0007676506000009.tif229170TIFF0007676506000010.tif1041707.4.9.6 Palette Coding Semantics In the following semantics, array indexes x0, y0 specify the position (x0, y0) of the top-left luma sample of the coding block under consideration relative to the top-left luma sample of the picture. Array indexes xC, yC specify the position (xC, yC) of the sample relative to the top-left luma sample of the picture. Array index startComp specifies the first color component of the current palette table. startComp equal to 0 points to the Y component. startComp equal to 1 points to the Cb component. startComp equal to 2 points to the Cr component. numComps specifies the number of color components currently in the palette table. The predictor palette consists of palette entries from previous coding units that are used to predict entries in the current palette. The variable PredictorPaletteSize[startComp] specifies the size of the predictor palette for the first color component, startComp, of the current palette table. PredictorPaletteSize is derived as specified in Section 8.4.5.3. The variable PalettePredictorEntryReuseFlags[i] equal to 1 specifies that the i-th entry in the predictor palette is reused in the current palette. PalettePredictorEntryReuseFlags[i] equal to 0 specifies that the i-th entry in the predictor palette is not an entry in the current palette. All elements of the array PalettePredictorEntryReuseFlags[i] are initialized to 0. palette_predictor_run is used to determine the number of zeros that precede a non-zero entry in the array PalettePredictorEntryReuseFlags. It is a bitstream conformance requirement that the value of palette_predictor_run be in the range of 0 to (PredictorPaletteSize-predictorEntryIdx), inclusive, where predictorEntryIdx corresponds to the current position in the array PalettePredictorEntryReuseFlags. The variable NumPredictedPaletteEntries specifies the number of entries in the current palette that are reused from the predictor palette. The value of NumPredictedPalletteEntries is in the range of 0 to palette_max_size, inclusive. num_signalled_palette_entries specifies the number of entries in the current palette that are explicitly signaled for the first color component, startComp, of the current palette table. When num_signalled_palette_entries is not present, it is inferred to be equal to 0. The variable CurrentPaletteSize[startComp] specifies the size of the current palette for the first color component, startComp, of the current palette table, and is derived as follows: CurrentPaletteSize[startComp]=NumPredictedPaletteEntries+ num_signalled_palette_entries (7-155) The value of CurrentPaletteSize[startComp] is in the range 0 to palette_max_size, inclusive. new_palette_entries[cIdx][i] specifies the value for the i-th signaled palette entry for color component cIdx. The variable PredictorPaletteEntries[cIdx][i] defines the i-th element in the predictor palette for color component cIdx. The variable CurrentPaletteEntries[cIdx][i] specifies the i-th element in the current palette for color component cIdx and is derived as follows: numPredictedPaletteEntries=0 for(i=0;i <PredictorPaletteSize[startComp];i++) if(PalettePredictorEntryReuseFlags[i]){ for(cIdx=startComp;cIdx<(startComp+numComps);cIdx++) CurrentPaletteEntries[cIdx][numPredictedPaletteEntries]= PredictorPaletteEntries[cIdx][i] numPredictedPaletteEntries++ } for(cIdx=startComp;cIdx<(startComp+numComps);cIdx++) (7-156) for(i=0;i <num_signalled_palette_entries[startComp];i++) CurrentPaletteEntries[cIdx][numPredictedPaletteEntries+i]= new_palette_entries[cIdx][i] palette_escape_val_present_flag equal to 1 specifies that the current coding unit contains at least one escape-coded sample. palette_escape_val_present_flag equal to 0 specifies that there are no escape-coded samples in the current coding unit. When not present, the value of palette_escape_val_present_flag is inferred to be equal to 1. The variable MaxPaletteIndex specifies the maximum possible value for the palette index for the current coding unit. The value of MaxPaletteIndex is set equal to CurrentPaletteSize[startComp]-1+palette_escape_val_present_flag. palette_idx_idc is an indication of an index into the palette table CurrentPaletteEntries. The value of palette_idx_idc is in the range of 0 to MaxPaletteIndex, inclusive, for the first index in the block, and 0 to (MaxPaletteIndex-1), inclusive, for the remaining indices in the block. When palette_idx_idc is not present, it is inferred to be equal to 0. A palette_transpose_flag equal to 1 specifies that a vertical traverse scan is applied to scan indices for samples in the current coding unit. A palette_transpose_flag equal to 0 specifies that a horizontal traverse scan is applied to scan indices for samples in the current coding unit. When not present, the value of palette_transpose_flag is inferred to be equal to 0. The array TraverseScanOrder specifies the scan order array for palette coding. If palette_transpose_flag is equal to 0, TraverseScanOrder is assigned the horizontal scan order HorTravScanOrder, and if palette_transpose_flag is equal to 1, TraverseScanOrder is assigned the vertical scan order VerTravScanOrder. run_copy_flag equal to 1 specifies that the palette run type is the same run type as in the previously scanned position and the palette run index is the same as the index in the previous position if copy_above_palette_indices_flag is equal to 0. Otherwise, run_copy_flag is equal to 0. copy_above_palette_indices_flag equal to 1 specifies that the palette index is equal to the palette index in the same position in the row above if horizontal cross scanning is used, or in the left column if vertical cross scanning is used. copy_above_palette_indices_flag equal to 0 specifies that an indication of the palette index of the sample is coded or inferred in the bitstream. The variable CopyAboveIndicesFlag[xC][yC] equal to 1 specifies that the palette index is copied from the palette index in the row above (horizontal scan) or column to the left (vertical scan). CopyAboveIndicesFlag[xC][yC] equal to 0 specifies that the palette index is explicitly coded or inferred in the bitstream. The array indices xC, yC specify the location (xC, yC) of the sample relative to the top-left luma sample of the picture. The variables PaletteIndexMap[xC][yC] define a palette index, which is an index into the array represented by CurrentPaletteEntries. The array indices xC, yC define the location (xC, yC) of the sample relative to the top-left luma sample of the picture. The value of PaletteIndexMap[xC][yC] is in the range from 0 to MaxPaletteIndex, inclusive. The variable adjustedRefPaletteIndex is derived as follows: adjustedRefPaletteIndex=MaxPaletteIndex+1 if(PaletteScanPos>0) { xcPrev=x0+TraverseScanOrder[log2CbWidth][log2bHeight][PaletteScanPos-1][0] ycPrev=y0+TraverseScanOrder[log2CbWidth][log2bHeight][PaletteScanPos-1][1] if(CopyAboveIndicesFlag[xcPrev][ycPrev]==0){ adjustedRefPaletteIndex=PaletteIndexMap[xcPrev][ycPrev]{ (7-157) } else { if(!palette_transpose_flag) adjustedRefPaletteIndex=PaletteIndexMap[xC][yC-1] else adjustedRefPaletteIndex=PaletteIndexMap[xC-1][yC] } } When CopyAboveIndicesFlag[xC][yC] is equal to 0, the variable CurrPaletteIndex is derived as follows: if(CurrPaletteIndex>=adjustedRefPaletteIndex) CurrPaletteIndex++ (7-158) palette_escape_val specifies the quantized escape-coded sample value for the component. The variable PaletteEscapeVal[cIdx][xC][yC] specifies the escape value for samples for which PaletteIndexMap[xC][yC] is equal to MaxPaletteIndex and palette_escape_val_present_flag is equal to 1. The array index cIdx specifies the color component. The array indexes xC, yC specify the position (xC, yC) of the sample relative to the top-left luma sample of the picture. PaletteEscapeVal[cIdx][xC][yC] is a range from 0 to (1<<(BitDepth Y +1))-1, inclusive, for cIdx not equal to 0. C The bitstream conformance requirement is that the bitstream size must be within the range of +1))-1.

[0063] 2.3 Local Dual Tree in VVC In typical hardware video encoders and decoders, the processing throughput decreases when a picture has smaller intra blocks due to sample processing data dependency between adjacent intra blocks. Predictor generation for an intra block requires top and left boundary reconstructed samples from adjacent blocks. Therefore, intra prediction must be processed block by block in order.

[0064] In HEVC, the smallest intra CU is an 8x8 luma sample. The luma component of the smallest intra CU can be further split into four 4x4 luma intra prediction units (PUs), but the chroma component of the smallest intra CU cannot be further split. Thus, the worst case hardware processing throughput occurs when a 4x4 chroma intra block or a 4x4 luma intra block is processed.

[0065] In VTM5.0, in a single coding tree, the chroma partition always follows the luma, and the smallest intra CU is 4x4 luma samples, so the smallest chroma intra CB is 2x2. Therefore, in VTM5.0, the smallest chroma intra CB in a single coding tree is 2x2. The worst-case hardware processing throughput in VVC decoding is only 1 / 4 of that in HEVC decoding. Furthermore, the reconstruction process of chroma intra CB is much more complicated than that in HEVC after employing tools including cross-component linear model (CCLM), 4-tap interpolation filter, position-dependent intra prediction combination (PDPC), and combined inter-intra prediction (CIIP). It is a challenge to achieve high processing throughput in a hardware decoder. In this section, we propose a method to improve the worst-case hardware processing throughput.

[0066] The objective of this method is to forbid chroma intra CBs smaller than 16 chroma samples by constraining the division of the chroma intra CBs.

[0067] In the single coding tree, a SCIPU is defined as a coding tree node with at least one child luma block whose chroma block size is equal to or larger than TH chroma samples and smaller than 4TH luma samples, where TH is set to 16 in this contribution. Within each SCIPU, it is required that either all CBs are inter or all CBs are non-inter, i.e., either intra or IBC. For non-inter SCIPUs, it is further required that the chroma of the non-inter SCIPU is not further split and the luma of the SCIPU is allowed to be further split. Thus, the minimum chroma intra CB size is 16 chroma samples, excluding 2×2, 2×4, and 4×2 chroma CBs. Furthermore, no chroma scaling is applied for non-inter SCIPUs. In addition, a local dual tree coding structure is constructed when the luma block is further split and the chroma block is not split.

[0068] Two examples of SCIPUs are shown in Figures 5A-5B. In Figure 5A, a ternary tree (TT) split from an 8x4 chroma sample results in a chroma CB that is smaller than 16 chroma samples, so one chroma CB and three luma CBs (4x8, 8x8, 4x8 luma CB) of the 8x4 chroma sample form one SCIPU. In Figure 5B, a binary tree (BT) split from a 4x4 chroma sample results in a chroma CB that is smaller than 16 chroma samples, so one chroma CB and three luma CBs (8x4, 4x4, 4x4 luma CB) of the 4x4 chroma sample (left side of the 8x4 chroma sample) form one SCIPU, and another one chroma CB and two luma CBs (8x4, 8x4 luma CB) of the 4x4 sample (right side of the 8x4 chroma sample) form one SCIPU.

[0069] In the proposed method, if the current slice is an I slice or the current SCIPU has a 4x4 luma partition in it after another split (because inter 4x4 is not allowed in VVC), the type of the SCIPU is presumed to be non-inter; otherwise, the type of the SCIPU (inter or non-inter) is indicated by a single flag that is signaled before parsing the CUs in the SCIPU.

[0070] By applying the above method, the worst case hardware processing throughput occurs when 4x4, 2x8, or 8x2 chroma blocks are processed instead of 2x2 chroma blocks. The worst case hardware processing throughput is the same as that in HEVC and four times that in VTM5.0.

[0071] 2.4 Transform Skip (TS) Similar to HEVC, the residual of a block can be coded in transform skip mode. To avoid syntax coding redundancy, the transform skip flag is not signaled when the CU level MTS_CU_flag is not equal to zero. The block size restriction for transform skip is the same as that for MTS in JEM4, which indicates that transform skip is applicable for a CU if both the width and height of the block are less than or equal to 32. Note that the implicit MTS transform is currently set to DCT2 if LFNST or MIP is activated for a CU. Also, implicit MTS can still be enabled when MTS is enabled for an inter-coding block.

[0072] Furthermore, for transform skip blocks, the minimum allowed quantization parameter (QP) is defined as 6*(internalBitDepth-inputBitDepth)+4.

[0073] 2.5 Alternative Luma Half-Pel Interpolation Filter In some embodiments, an alternative half-pel interpolation filter is proposed.

[0074] The half-pel luma interpolation filter is switched depending on the motion vector precision. In addition to the existing quarter-pel, full-pel, and 4-pel AMVR modes, a new half-pel precision AMVR mode is introduced. Only for half-pel motion vector precision, the alternative half-pel luma interpolation filter can be selected.

[0075] For non-affine, non-merged, inter-coded CUs using half-pel motion vector precision (i.e., half-pel AMVR mode), switch between the HEVC / VVC half-pel luma interpolation filter and one or more alternative half-pel interpolators based on the value of the new syntax element hpelIfIdx. The syntax element hpelIfIdx is signaled only for half-pel AMVR mode. For skip / merge modes with spatial merge candidates, the value of the syntax element hpelIfIdx is inherited from the neighboring block.

[0076] 2.6 Adaptive Color Transform (ACT) Figure 6 shows a decoding flow chart in which ACT is applied. As shown in Figure 6, color space conversion is performed in the residual domain. Specifically, after the inverse conversion, one additional decoding module named inverse ACT is introduced to convert the residual from the YCgCo domain back to the original domain.

[0077] In VVC, if the maximum transform size is not smaller than the width or height of one coding unit (CU), one CU leaf node is also used as the unit of transform processing. Therefore, in the proposed implementation, for one CU, an ACT flag is signaled to select the color space for coding its residual. Furthermore, according to the HEVC ACT design, for inter and IBC CU, ACT is enabled only if there is at least one non-zero coefficient in the CU. For intra CU, ACT is enabled only if the chroma component selects the same intra prediction mode as the luma component, i.e., DM mode.

[0078] The core transforms used for color space conversion are kept the same as those used in HEVC. Specifically, the following forward and inverse YCgCo color transformation matrices are applied, written as follows:

number

[0079] Additionally, a QP adjustment of (-5,-5,-3) is applied to the transformed residual to compensate for the dynamic range change of the residual signal before and after color transformation.

[0080] On the other hand, the forward and inverse color transforms require access to the residuals of all three components. Correspondingly, in the proposed implementation, we disable ACT in two situations where not all the residuals of the three components are available: 1. Separate tree partition: When the separate tree is applied, the luma samples and chroma samples in one CTU are partitioned by different structures, which results in the CU in the luma tree only containing the luma component and the CU in the chroma tree only containing two chroma components; 2. Intra-subpartition prediction (ISP): ISP subpartitions are applied only to luma, and chroma signals are coded without splitting. In the current ISP design, except for the last ISP subpartition, the other subpartitions only contain the luma component.

[0081] 2.7 Binarization of escape values ​​using EG(k) When EG(k) is used to binarize the escape value, if the base Qp is large enough (or the symbol to be coded is small enough), the bit length of EG(k) cannot be shortened any further. For example, in EG(5), when the base Qp>=23, the bit length reaches 6, which is the minimum bit length in EG5. Similarly, when the base Qp>=35, the bit length reaches the minimum value in EG3. When the base Qp>=29, the bit length reaches the minimum value in EG4. In such a case, further increasing Qp will increase the distortion without reducing the bit rate, which is a waste of bits.

[0082] 2.8 Coefficient Coding in Transform Skip Mode In the current VVC draft, some modifications are proposed for coefficient coding in transform skip (TS) mode compared to non-TS coefficient coding in order to adapt the residual coding to the signal characteristics and statistics of the transform skip level.

[0083] In current VVC, three scan paths are used in the transform skip residual coding process to code coefficients. The first scan path is used to code syntax elements indicating whether a transform coefficient level is greater than 0 and other related syntax elements (e.g., sig_coeff_flag, coeff_sign_flag, and par_level_flag). The second / greater than X scan path is used to code syntax elements indicating whether a transform coefficient level is greater than X (e.g., X=1,2,3,4,5). The third / residue scan path is used to code remaining syntax elements (e.g., abs_remainder and coeff_sign_flag).

[0084] In the current VVC, as shown in Table 131, whether a syntax element indicating the sign of a transform coefficient level (e.g., coeff_sign_flag) is coded in bypass mode or in context coding mode depends on a syntax element indicating whether a transform is applied to the associated transform block (e.g., transform_skip_flag), the number of remaining allowed context coding bins (e.g., RemCcbs), and a syntax element indicating whether the residual_coding() syntax structure is used to parse residual samples of the transform skip block for the current slice (e.g., sh_ts_residual_coding_disabled_flag). 7.3.10.11 Residual coding syntax (outside 4) TIFF0007676506000012.tif217164TIFF0007676506000013.tif230165TIFF0007676506000 014.tif229165TIFF0007676506000015.tif224165TIFF0007676506000016.tif149164(outer 5) TIFF0007676506000017.tif218165TIFF0007676506000018.tif230165TIFF0007676506000019.tif180166

[0085] 2.8.1 Context Modeling of Sign Flag coeff_sign_flag and Context Index Offset Derivation [Table 2] [Table 3] [Table 4] 9.3.4.2.10 Derivation process of ctxInc for syntax element coeff_sign_flag for transform skip mode The inputs to this process are the color component index cIdx, the luma position (x0,y0) that defines the top-left sample of the current transform block relative to the top-left sample of the current picture, and the current coefficient scan position (xC,yC). The output of this process is the variable ctxInc. The variables LeftSign and aboveSign are derived as follows: leftSign=(xC==0)?0:CoeffSignLevel[xC-1][yC] (1594) aboveSign=(yC==0)?0:CoeffSignLevel[xC][yC-1] (1595) The variable ctxInc is derived as follows: - If leftSign is equal to 0 and aboveSign is equal to 0 or if leftSign is equal to -aboveSign, the following applies: ctxInc=(BdpcmFlag[x0][y0][cIdx]==0?0:3) (1596) - Else, if leftSign is greater than or equal to 0 and aboveSign is greater than or equal to 0, then the following applies: ctxInc=(BdpcmFlag[x0][y0][cIdx]?1:4) (1597) - Otherwise the following applies: ctxInc=(BdpcmFlag[x0][y0][cIdx]?2:5) (1598)

[0086] 3 Examples of technical problems solved by the technical solutions described herein (1) EG(k) as a binarization method for escape values ​​may waste bits when Qp is greater than a threshold. (2) The palette size may be too large for the local dual tree. (3) If no chroma tools are applied, there is no need to signal chroma parameters. (4) Although the coefficient coding in JVET-R2001-vA can achieve coding benefits for screen content coding, its coefficient coding and TS mode may still have some shortcomings: a. It is unclear whether to use bypass coding or context coding for the sign flag in the following cases: i. The number of remaining allowed context coding bins (represented by RemCcbs) is equal to 0; ii. The current block is coded in TS mode; iii. sh_ts_residual_coding_disabled_flag is false.

[0087] 4. Examples of embodiments and techniques The following list of items should be considered as examples to illustrate general concepts. These items should not be construed in a narrow sense. Also, these items can be combined in any way. The following examples can be applied to the palette scheme in VVC and all other palette-related schemes. 1. Qp for escape value reconstruction may have a maximum and / or minimum allowable value: In one example, the QP may be clipped to be below a maximum allowed value and / or above a minimum allowed value; b. In one example, the maximum allowed Qp for escape value reconstruction may depend on the binarization method; c. In one example, the maximum allowed Qp for escape value reconstruction can be (T+B), where B is based on the bit depth: i. In one example, T may be a constant: 1. In one example, T may be 23; 2. In one example, T may be a number less than 23; 3. In one example, T may be 35; 4. In one example, T may be a number less than 35; 5. In one example, T may be 29; 6. In one example, T can be a number less than 29; ii. In one example, T may be indicated in the video domain (e.g., sequence, picture, slice / tile / subpicture): 1. In one example, T may be indicated within VPS / SPS / PPS / PH / SH; iii. In one example, B may be set to QpBdOffset (e.g., 6*bit_depth_minus8); d. In one example, the maximum allowable Qp for escape value reconstruction may be (23+QpBdOffset): i. Alternatively or additionally, code the escape value using EG5; ii. Alternatively, the maximum allowable Qp for escape value reconstruction may be (K+QpBdOffset), where K is a number less than 23; e. In one example, the maximum allowed Qp for escape value reconstruction may be (35+QpBdOffset): i. Alternatively or additionally, code an escape value using EG3; ii. Alternatively, the maximum allowable Qp for escape value reconstruction may be (K+QpBdOffset), where K is a number less than 35; f. Alternatively, the maximum allowable Qp for escape value reconstruction may be (29+QpBdOffset): i. Alternatively or additionally, code the escape value using EG4; ii. Alternatively, the maximum allowable Qp for escape value reconstruction may be (K+QpBdOffset), where K is a number less than 29. Pallet size related 2. We propose that the palette size can be different when the local dual tree is applied and when it is not: a. In one example, we propose that in a local dual tree, the palette size can be reduced; b. In one example, when a local dual tree is applied, the palette size may be different for luma CUs and chroma CUs; c. In one example, a palette size for a chroma CU may be reduced compared to a palette size for a luma CU in a local dual tree or compared to the palette size when the local dual tree is not applied: i. In one example, the palette size for chroma may be reduced by half. 3. We propose that the palette predictor size can be different when local dual trees are applied and when they are not: a. In one example, we propose that in local dual trees, the palette predictor size can be reduced; b. In one example, when a local dual tree is applied, the palette predictor size may be different for luma CUs and chroma CUs; c. In one example, a palette predictor size for a chroma CU may be reduced compared to a palette predictor size for a luma CU in a local dual tree or compared to the palette predictor size when a local dual tree is not applied: i. In one example, the palette predictor size for chroma may be reduced by half. Chroma Deblocking Related 4. Signaling / parsing chroma deblocking offsets at slice level and / or at a higher level (i.e., where the region size is larger than slice) (e.g., in the PPS or picture header) may depend on the color format, and / or the separate plane coding enable flag, and / or the ChromaArrayType, and / or the flag indicating whether chroma deblocking offsets are present, and / or the flag indicating whether chroma deblocking offsets or any other chroma tool parameters are present: a. In one example, when ChromaArrayType is equal to 0, or the color format is 4:0:0, or separate plane coding is applied, or the flag indicating chroma deblocking offset is not present, the signaling / parsing of chroma deblocking offset at slice level and / or higher levels (i.e., region size is larger than slice) may always be skipped; b. In one example, when ChromaArrayType is equal to 0, or the color format is 4:0:0, or separate plane coding is applied, or the flag indicating chroma deblocking offset is not present, the signaling / parsing of pps_cb_beta_offset_div2, pps_cb_tc_offset_div2, pps_cr_beta_offset_div2, pps_cr_tc_offset_div2 may always be skipped; c. In one example, when ChromaArrayType is equal to 0, or the color format is 4:0:0, or separate plane coding is applied, or there is no flag indicating chroma deblocking offset, the signaling / parsing of ph_cb_beta_offset_div2, ph_cb_tc_offset_div2, ph_cr_beta_offset_div2, ph_cr_tc_offset_div2 may always be skipped; d. In one example, when ChromaArrayType is equal to 0, or the color format is 4:0:0, or separate plane coding is applied, or there is no flag indicating chroma deblocking offset, the signaling / parsing of slice_cb_beta_offset_div2, slice_cb_tc_offset_div2, slice_cr_beta_offset_div2, slice_cr_tc_offset_div2 may always be skipped; e. Alternatively, a conforming bitstream shall satisfy that when ChromaArrayType is equal to 0, or the color format is 4:0:0, or separate plane coding is applied, pps_cb_beta_offset_div2, pps_cb_tc_offset_div2, pps_cr_beta_offset_div2, pps_cr_tc_offset_div2 are equal to 0; f. In one example, when chroma_format_idc is equal to 0 and separate_colour_plane_flag is not equal to 1 or there is no flag indicating a chroma deblocking offset, the signaling / parsing of pps_cb_beta_offset_div2, pps_cb_tc_offset_div2, pps_cr_beta_offset_div2, pps_cr_tc_offset_div2 may always be skipped; g. In one example, when chroma_format_idc is equal to 0 and separate_colour_plane_flag is not equal to 1 or there is no flag indicating a chroma deblocking offset, the signaling / parsing of pps_cb_beta_offset_div2, ph_cb_tc_offset_div2, ph_cr_beta_offset_div2, ph_cr_tc_offset_div2 may always be skipped; h. In one example, when chroma_format_idc is equal to 0 and separate_colour_plane_flag is not equal to 1 or there is no flag indicating a chroma deblocking offset, the signaling / parsing of slice_cb_beta_offset_div2, slice_cb_tc_offset_div2, slice_cr_beta_offset_div2, slice_cr_tc_offset_div2 may always be skipped; i. Alternatively or additionally, when signaling of a syntax element is skipped, the value of that syntax element is presumed to be equal to 0. 5. Color format, and / or separate plane coding enable flag, and / or ChromaArrayType, and / or a flag indicating whether chroma deblocking offsets are present, and / or a flag indicating whether chroma deblocking offsets or any other chroma tool parameters are present (e.g., pps_chroma_tool_params_present_flag) may be indicated in the PPS and / or SPS and / or APS: a. In one example, when ChromaArrayType is equal to 0 or the color format is 4:0:0 and / or the above flags are false, the signaling / parsing of pps_cb_beta_offset_div2, pps_cb_tc_offset_div2, pps_cr_beta_offset_div2, pps_cr_tc_offset_div2 may always be skipped; b. In one example, when ChromaArrayType is equal to 0 or the color format is 4:0:0 and / or the above flags are false, the signaling / parsing of pps_cb_beta_offset_div2, pps_cb_tc_offset_div2, pps_cr_beta_offset_div2, pps_cr_tc_offset_div2 may always be skipped; c. In one example, chroma tool offset related syntax elements (e.g., pps_cb_qp_offset, pps_cr_qp_offset, pps_joint_cbcr_qp_offset_present_flag, pps_slice_chroma_qp_offsets_present_flag, pps_cu_chroma_qp_offset_list_enabled_flag) are signaled under the condition check that ChromaArrayType is not equal to 0 and / or the above flags are false; d. A conforming bitstream requires that the color format and / or separate plane coding enable flag and / or ChromaArrayType signaled in a PPS be the same as the corresponding information signaled in the associated SPS. 6. We propose that the flag that controls whether the chroma qp offset should be signaled / parsed could also control whether the chroma deblocking offset should be signaled / parsed: a. In one example, the flag pps_chroma_tool_params_present_flag may be used to control whether chroma qp offsets should be signaled / parsed and whether chroma deblocking offsets should be signaled / parsed. 7. A control flag may be added within the PPS to control whether chroma deblocking offsets should be signaled / parsed, e.g. pps_chroma_deblocking_params_present_flag: a. In one example, when the flag is equal to 0, the signaling / parsing of pps_cb_beta_offset_div2, pps_cb_tc_offset_div2, pps_cr_beta_offset_div2, pps_cr_tc_offset_div2 may always be skipped; b. In one example, when the flag is equal to 0, the signaling / parsing of ph_cb_beta_offset_div2, ph_cb_tc_offset_div2, ph_cr_beta_offset_div2, ph_cr_tc_offset_div2 may always be skipped; c. In one example, when the flag is equal to 0, the signaling / parsing of slice_cb_beta_offset_div2, slice_cb_tc_offset_div2, slice_cr_beta_offset_div2, slice_cr_tc_offset_div2 may always be skipped; d. Alternatively or additionally, a conforming bitstream requires that the above flags be equal to 0 when ChromaArrayType is equal to 0. Chroma Tools related parameters in APS 8. To control whether chroma tool related parameters should be signaled / parsed in the APS, a control flag can be added in the APS, e.g. aps_chroma_tool_params_present_flag: a. In one example, when aps_chroma_tool_params_present_flag is equal to 0, alf_chroma_filter_signal_flag, alf_cc_cb_filter_signal_flag, and alf_cc_cr_filter_signal_flag may always be skipped and inferred to be equal to 0; b. In one example, when aps_chroma_tool_params_present_flag is equal to 0, scaling_list_chroma_present_flag may always be skipped and inferred to be equal to 0. Other Chroma Tools related parameters in the picture header 9. In one example, the signaling / parsing of ph_log2_diff_min_qt_min_cb_intra_slice_luma may be skipped whenever ChromaArrayType is equal to 0, or the color format is 4:0:0, or separate plane coding is applied, or there are no flags indicating this syntax element (and possibly other syntax elements). 10. In one example, the signaling / parsing of ph_log2_diff_min_qt_min_cb_intra_slice_chroma may be skipped whenever ChromaArrayType is equal to 0, or the color format is 4:0:0, or separate plane coding is applied, or there are no flags indicating this syntax element (and possibly other syntax elements). 11. In one example, the signaling / parsing of ph_log2_diff_min_qt_min_cb_inter_slice may be skipped whenever ChromaArrayType is equal to 0, or the color format is 4:0:0, or separate plane coding is applied, or there are no flags indicating this syntax element (and possibly other syntax elements). Adaptive Color Conversion (ACT) 12. Palette modes and adaptive color transformations can be applied exclusively to blocks: In one example, when palette mode is used for a block, adaptive color transformation is not used for that block: i. In one example, when palette mode is applied to a block, the signaling of ACT usage may be skipped: 1. Alternatively or further, the use of ACT is presumed to be false; b. In one example, when adaptive color transformation is used for a block, palette mode is not used for that block: i. In one example, when ACT is applied to a block, the signaling of palette mode usage may be skipped: 1. Alternatively or additionally, use of palette mode is presumed to be false; c. Whether an indication of the ACT on / off flag should be signaled may depend on whether the prediction mode is not equal to MODE_PLT; d. Whether or not an indication of the ACT on / off flag should be signaled may depend on whether an indication of palette mode is not used (eg, !pred_mode_plt_flag). 13. An adaptive color transform may be applied to residual blocks of a coding unit regardless of their color space: e. In one example, an adaptive color transform may be applied to residual blocks of a coding unit in GBR color space; f. In one example, an adaptive color transform may be applied to residual blocks of a coding unit in YCbCr color space. Using Bypass or Context Coding for Coefficient Sign Flags 14. At the start of bypass coding (or / and at the end of bypass coding) for the remaining syntax elements (e.g., syntax elements abs_remainder and coeff_sign_flag) in the third / residual scan path of the transform skip residual coding process, an operation may be applied to a variable (e.g., RemCcbs) that specifies the number of remaining allowed context coding bins: g. In one example, the process may use a temporary variable (e.g., tempRemCcbs) to store RemCcbs and set RemCcbs equal to a particular value (e.g., 0). Upon completion of bypass coding, set RemCcbs equal to tempRemCcbs: i. In one example, the process may be to set RemCcbs equal to a particular value N, which is an integer and less than M: 1. In one example, M is equal to 3; h. Whether a syntax element indicating the sign of a coefficient level (e.g., coeff_sign_flag) is coded in bypass mode or in context coding mode may depend on the number of remaining allowed context coding bins (e.g., RemCcbs): i. In one example, when the number of remaining allowed context coding bins (e.g., RemCcbs) is equal to N (e.g., N=0), the sign of the coefficient level (e.g., coeff_sign_flag) is coded in bypass mode; ii. In one example, when RemCcbs is greater than or equal to M, the sign flag is coded in a context coding mode; i. In one example, the process may be to set RemCcbs equal to a value that depends on at least one variable or syntax element other than RemCcbs. 15. In the transform skip residual coding process, operations may be applied to variables that indicate whether a syntax element (e.g., coeff_sign_flag) belongs to a particular scan path (e.g., the first scan path or / and the third / residual coefficient scan path): j. In one example, the process may use a variable (e.g., remScanPass) to indicate whether the current scan pass is the third / residual scan pass: i. In one example, at the start of the first scan pass, remScanPass is set equal to A, and at the start of the third / residual scan pass, remScanPass is set equal to B. A is not equal to B; ii. Whether a syntax element indicating the sign of a coefficient level (e.g., coeff_sign_flag) is coded in bypass mode or in context coding mode may depend on remScanPass: 1. In one example, when remScanPass is equal to B, the sign of the coefficient levels is coded in bypass mode; 2. In one example, when remScanPass is equal to A, the sign of the coefficient level is coded in the context coding mode; k. Alternatively, the process may use a variable to indicate whether the current scan path is the first scan path; l. Alternatively, the process may use a variable to indicate whether the current scan path is the second / X super scan path or not. 16. Within a scan path, the same syntax elements of one or more coefficients within a region of a block are coded in order, and whether the syntax element (SE) indicating the sign of the coefficient level is coded in bypass mode or in context coding mode may depend on the index of the scan path: m. In one example, the SE may be coded in a context coding mode when it is signaled in the initial scan path; n. In one example, the SE may be coded in bypass mode when signaled in the third / residual scan path; o. In one example, the above method is applicable to a transform-skip (TS with or without BDPCM / QR-BDPCM) residual coding process, and / or a coefficient coding process for non-TS coding blocks. 17. Whether a syntax element (SE) indicating the sign of a coefficient level is coded in bypass mode or in context coding mode may depend on whether it is signaled in the same scan path as another syntax element (e.g., sig_coeff_flag, par_level_flag, abs_remainder) in the transform skip residual coding process: p. In one example, an SE may be coded in a context coding mode when it is signaled in the same scan path as sig_coeff_flag or / and par_level_flag; q. In one example, an SE may be coded in bypass mode when it is signaled in the same scan path as abs_remainder. General Features 18. Whether and / or how to apply the above methods may be based on: a. Video content (e.g., screen content, natural content) b. Messages signaled within DPS / SPS / VPS / PPS / APS / Picture Header / Slice Header / Tile Group Header / Largest Coding Unit (LCU) / Coding Unit (CU) / LCU Row / Single LCU / TU / PU Block / Video Coding Unit c. CU / PU / TU / Block / Video Coding Unit Location d. Block dimensions of the current block and / or its adjacent blocks e. Block shape of the current block and / or its adjacent blocks f. Quantization parameter of the current block g. Color format indication (e.g., 4:2:0, 4:4:4, RGB, or YUV, etc.) h. Coding tree structure (e.g., dual tree or single tree) i. Slice / tile group type and / or picture type j. Color components (e.g., may only apply to luma and / or chroma components) k. Time Layer ID l. Standard Profile / Level / Tier m. Whether the current block has one escape sample or not i. In one example, the above method may be applied only if the current block has at least one escape sample. n. Whether the current block is coded in lossless mode (e.g., cu_transquant_bypass_flag) ii. In one example, the above method may be applied only if the current block is not coded in a lossless mode. Whether lossless coding is enabled (e.g., transquant_bypass_enabled, cu_transquant_bypass_flag).

[0088] 5. Embodiments In the following embodiments, additions are marked as bold, underlined, italicized text, and deletions are marked in [[]].

[0089] 5.1 Embodiment #1 8.4.5.3 Decoding Process in Palette Mode (outside 6) TIFF0007676506000023.tif96166

[0090] 5.2 Embodiment #2 7.3.2.4 Picture parameter set RBSP syntax (outside 7) TIFF0007676506000024.tif1191657.3.2.7 Picture Header Structure Syntax (outside 8) TIFF0007676506000025.tif1261667.3.7.1 General slice header syntax (outer 9) TIFF0007676506000026.tif118165

[0091] 5.3 Example #3 7.4.2.4 Picture parameter set RBSP syntax (Outside 10) TIFF0007676506000027.tif218164TIFF0007676506000028.tif361647.3.2.5 Adaptive parameter set RBSP syntax (Outside 11) TIFF0007676506000029.tif1061657.3.2.7 Picture header structure syntax (Outside 12) TIFF0007676506000030.tif219163TIFF0007676506000031.tif230166TIFF0007676506000032.tif1991657.3.2.19 Adaptive Loop Filter Data Syntax (Outside 13) TIFF0007676506000033.tif551657.3.2.21 Scaling list data syntax (Outside 14) TIFF0007676506000034.tif371657.3.7.1 General slice header syntax (Outside 15) TIFF0007676506000035.tif1301647.4.3.4 Picture Parameter Set RBSP Semantics (Outside 16) TIFF0007676506000036.tif441667.4.3.5 Adaptive Parameter Set Semantics (Outside 17) TIFF0007676506000037.tif39166

[0092] 5.4 Example #4 7.4.2.4 Picture parameter set RBSP syntax (Outside 18) TIFF0007676506000038.tif1251667.3.2.7 Picture header structure syntax (Outside 19) TIFF0007676506000039.tif1561657.3.7.1 General slice header syntax (outside 20) TIFF0007676506000040.tif1181647.4.3.4 Picture Parameter Set RBSP Semantics (outside 21) TIFF0007676506000041.tif42165

[0093] 5.5 Embodiment #5 (outside 22) TIFF0007676506000042.tif203170

[0094] 5.5.1 Implementation #5.1 7.3.10.5 Coding unit syntax (outside 23) TIFF0007676506000043.tif216170TIFF0007676506000044.tif229170TIFF0007676506000045.tif23170Alternatively, the following may apply: (outside 24) TIFF0007676506000046.tif23170

[0095] 5.6 Example #6 Coding Unit Semantics (Outside 25) TIFF0007676506000047.tif39165

[0096] 5.7 Example #7 7.3.10.11 Residual coding syntax (outside 26) TIFF0007676506000048.tif217164TIFF0007676506000049.tif229165TIFF0007676506000050.tif1971649.3.4 Decryption process flow 9.3.4.2 Derivation process of ctxTable, ctxIdx, and bypassFlag 9.3.4.2.1 General [Table 5]

[0097] 5.8 Example #8 7.3.10.11 Residual coding syntax (outside 27) TIFF0007676506000052.tif217164TIFF0007676506000053.tif231164TIFF0007676506000054.tif192164However, A is not equal to B. For example, A=0 and B=1. Or, A=1, B=0. Or, A=-1, B=0. Or, A=0, B=-1. 9.3.4 Decryption Process Flow 9.3.4.2 Derivation process of ctxTable, ctxIdx, and bypassFlag 9.3.4.2.1 General [Table 6]

[0098] 5.9 Example #9 7.3.10.11 Residual coding syntax (outside 28) TIFF0007676506000056.tif217165TIFF0007676506000057.tif229165TIFF0007676506000058.tif1861657.4.11.11 Residual coding semantics (outside 29) TIFF0007676506000059.tif1051659.3.2 Initialization process 9.3.2.2 Initialization Process for Context Variables [Table 7] 9.3.3 Thresholding Process 9.3.3.1 General [Table 8] 9.3.4 Decryption Process Flow 9.3.4.2 Derivation process of ctxTable, ctxIdx, and bypassFlag 9.3.4.2.1 General [Table 9] (Outside 30) TIFF0007676506000063.tif95167

[0099] 5.10 Example #10 (Outside 31) TIFF0007676506000064.tif96167

[0100] 7 is a block diagram illustrating an example of a video processing system 1900 in which various techniques disclosed herein may be implemented. Various implementations may include some or all of the components of system 1900. System 1900 may include an input 1902 for receiving video content. The video content may be received in a raw or uncompressed format, such as 8-bit or 10-bit multi-component pixel values, or in a compressed or encoded format. Input 1902 may represent a network interface, a peripheral bus interface, or a storage interface. Examples of network interfaces include wired interfaces such as Ethernet, Passive Optical Network (PON), and wireless interfaces such as Wi-Fi or cellular interfaces.

[0101] The system 1900 may include a coding component 1904 that may implement various coding or encoding methods described herein. The coding component 1904 may reduce the average bit rate of the video from the input 1902 to the output of the coding component 1904 to generate a coded representation of the video. The coding techniques may therefore be referred to as video compression techniques or video transcoding techniques. The output of the coding component 1904 may be stored or transmitted via a communication connection as represented by component 1906. The stored or communicated bitstream (or coded) representation of the video received at the input 1902 may be used by component 1908 to generate pixel values ​​or a displayable image that is sent to the display interface 910. The process of generating a user-viewable image from the bitstream representation may be referred to as video decompression. Also, although certain video processing operations may be referred to as "coding" operations or tools, it is understood that the coding tools or operations are used at the encoder and the corresponding decoding tools or operations that reverse the results of the coding are performed at the decoder.

[0102] Examples of peripheral bus interfaces or display interfaces may include Universal Serial Bus (USB) or High Definition Multimedia Interface (HDMI) or Displayport, etc. Examples of storage interfaces include serial advanced technology attachment (SATA), PCI, IDE interfaces, etc. The techniques described in this document may be embodied in a variety of electronic devices, such as, for example, mobile phones, laptops, smartphones, or other devices capable of performing digital data processing and / or video display.

[0103] FIG. 8 is a block diagram of a video processing device 3600. The device 3600 may be used to implement one or more of the methods described herein. The device 3600 may be embodied in a smartphone, a tablet, a computer, an Internet of Things (IoT) receiver, etc. The device 3600 may include one or more processors 3602, one or more memories 3604, and video processing hardware 3606. The processor(s) 3602 may be configured to execute one or more of the methods described herein. The memory(s) 3604 may be used to store data and code used to execute the methods and techniques described herein. The video processing hardware 3606 may be used to implement some of the techniques described herein in hardware circuitry.

[0104] FIG. 10 is a block diagram illustrating an example of a video coding system 100 that can utilize the techniques of this disclosure.

[0105] 10, video coding system 100 may include a source device 110 and a destination device 120. Source device 110 generates encoded video data and may be referred to as a video encoder. Destination device 120 may decode the encoded video data generated by source device 110 and may be referred to as a video decoder.

[0106] Source device 110 may include a video source 112, a video encoder 114, and an input / output (I / O) interface 116.

[0107] The video source 112 may include a source, such as, for example, a video capture device, an interface for receiving video data from a video content provider, and / or a computer graphics system for generating video data, or a combination of such sources. The video data may have one or more pictures. The video encoder 114 encodes the video data from the video source 112 to generate a bitstream. The bitstream may include a series of bits that form a coded representation of the video data. The bitstream may include a coded picture and associated data. A coded picture is a coded representation of a picture. The associated data may include a sequence parameter set, a picture parameter set, and other syntax structures. The I / O interface 116 may include a modulator / demodulator (modem) and / or a transmitter. The coded video data may be transmitted via the I / O interface 116 directly over the network 130a to the destination device 120. The coded video data may also be stored on a storage medium / server 130b for access by the destination device 120.

[0108] The destination device 120 may include an I / O interface 126 , a video decoder 124 , and a display device 122 .

[0109] The I / O interface 126 may include a receiver and / or a modem. The I / O interface 126 may obtain encoded video data from the source device 110 or the storage medium / server 130b. The video decoder 124 may decode the encoded video data. The display device 122 may display the decoded video data to a user. The display device 122 may be integrated with the destination device 120 or may be external to the destination device 120 configured to interface with an external display device.

[0110] The video encoder 114 and the video decoder 124 may operate according to a video compression standard, such as, for example, the High Efficiency Video Coding (HEVC) standard, the Versatile Video Coding (VVC) standard, and other current and / or future standards.

[0111] FIG. 11 is a block diagram illustrating an example of a video encoder 200, which may be video encoder 114 in system 100 shown in FIG.

[0112] Video encoder 200 may be configured to perform any or all of the techniques described in this disclosure. In the example of FIG. 11, video encoder 200 includes multiple functional components. The techniques described in this disclosure may be shared among various components of video encoder 200. In some examples, a processor may be configured to perform any or all of the techniques described in this disclosure.

[0113] Functional components of the video encoder 200 may include a division unit 201, a prediction unit 202, which may include a mode selection unit 203, a motion estimation unit 204, a motion compensation unit 205, and an intra prediction unit 206, a residual generation unit 207, a transform unit 208, a quantization unit 209, an inverse quantization unit 210, an inverse transform unit 211, a reconstruction unit 212, a buffer 213, and an entropy coding unit 214.

[0114] In other examples, video encoder 200 may include more, fewer, or different functional components. In one example, prediction unit 202 may include an intra block copy (IBC) unit. The IBC unit may perform prediction in an IBC mode, where at least one reference picture is the picture in which the current video block is located.

[0115] Also, some components, such as the motion estimation unit 204 and the motion compensation unit 205, although depicted separately in the example of FIG. 11 for illustrative purposes, may be highly integrated.

[0116] Division unit 201 may divide a picture into one or more video blocks. Video encoder 200 and video decoder 300 may support a variety of video block sizes.

[0117] The mode selection unit 203 may select one of a number of coding modes, intra or inter, e.g., based on the error result, and provide the resulting intra- or inter-coded block to a residual generation unit 207 that generates residual block data and to a reconstruction unit 212 that reconstructs the coding block for use as a reference picture. In some examples, the mode selection unit 203 may select a combination of intra and inter predication (CIIP) mode, in which prediction is based on an inter prediction signal and an intra prediction signal. The mode selection unit 203 may also select the resolution of the motion vector for the block (e.g., sub-pixel or integer pixel precision) in the case of inter prediction.

[0118] To perform inter prediction on the current video block, motion estimation unit 204 may generate motion information for the current video block by comparing one or more reference frames from buffer 213 to the current video block. Motion compensation unit 205 may determine a prediction video block for the current video block based on the motion information and decoded samples of pictures from buffer 213 other than the picture associated with the current video block.

[0119] Motion estimation unit 204 and motion compensation unit 205 may perform different operations on the current video block depending on whether the current video block is in an I slice, a P slice, or a B slice, for example.

[0120] In some examples, motion estimation unit 204 may perform unidirectional prediction on the current video block, and motion estimation unit 204 may search reference pictures of list 0 or list 1 for a reference video block for the current video block. Motion estimation unit 204 may then generate a reference index that points to a reference picture in list 0 or list 1 that contains the reference video block, and a motion vector that indicates a spatial displacement between the current video block and the reference video block. Motion estimation unit 204 may output the reference index, a prediction direction indicator, and the motion vector as motion information of the current video block. Based on the reference video block indicated by the motion information of the current video block, motion compensation unit 205 may generate a prediction video block for the current block.

[0121] In another example, motion estimation unit 204 may perform bidirectional prediction on the current video block, and motion estimation unit 204 may search reference pictures in list 0 for a reference video block for the current video block, and may also search reference pictures in list 1 for another reference video block for the current video block. Motion estimation unit 204 may then generate reference indexes that point to the reference pictures in list 0 and list 1 that contain the reference video blocks, and motion vectors that indicate spatial displacements between the reference video blocks and the current video block. Motion estimation unit 204 may output the reference indexes and the motion vector of the current video block as motion information of the current video block. Based on the reference video blocks indicated by the motion information of the current video block, motion compensation unit 205 may generate a prediction video block for the current block.

[0122] In some examples, the motion estimation unit 204 may output a complete set of motion information for the decoding process of the decoder.

[0123] In some examples, motion estimation unit 204 may not output a complete set of motion information for the current picture. Rather, motion estimation unit 204 may signal the motion information of the current video block by reference to motion information of another video block. For example, motion estimation unit 204 may determine that the motion information of the current video block is sufficiently similar to the motion information of a neighboring video block.

[0124] In one example, motion estimation unit 204 may point to a value within a syntax structure associated with the current video block that indicates to video decoder 300 that the current video block has the same motion information as another video block.

[0125] In another example, motion estimation unit 204 may identify another video block and a motion vector difference (MVD) within a syntax structure associated with the current video block. The motion vector difference indicates the difference between the motion vector of the current video block and the motion vector of the pointed-to video block. Video decoder 300 may use the motion vector of the pointed-to video block and the motion vector difference to determine the motion vector of the current video block.

[0126] As mentioned above, video encoder 200 may predictively signal motion vectors. Two examples of predictive signaling techniques that may be implemented by video encoder 200 include advanced motion vector prediction (AMVP) and merge mode signaling.

[0127] The intra prediction unit 206 may perform intra prediction on the current video block. When the intra prediction unit 206 performs intra prediction on the current video block, the intra prediction unit 206 may generate predictive data for the current video block based on decoded samples of other video blocks in the same picture. The predictive data for the current video block may include a predictive video block and various syntax elements.

[0128] Residual generation unit 207 may generate residual data for the current video block by subtracting (e.g., as indicated by a minus sign) the prediction video block(s) of the current video block from the current video block. The residual data for the current video block may include residual video blocks that correspond to different sample components of the samples in the current video block.

[0129] In other examples, such as in skip mode, residual data for the current video block may not exist and residual generation unit 207 may not perform a subtraction operation.

[0130] Transform processing unit 208 may generate one or more transform coefficient image blocks for the current video block by applying one or more transforms to a residual video block related to the current video block.

[0131] After transform processing unit 208 generates the transform coefficient image block for the current video block, quantization unit 209 may quantize the transform coefficient image block for the current video block based on one or more quantization parameter (QP) values ​​for the current video block.

[0132] Inverse quantization unit 210 and inverse transform unit 211 may apply inverse quantization and inverse transform, respectively, to the transform coefficient video block to reconstruct a residual video block from the transform coefficient video block. Reconstruction unit 212 may add the reconstructed residual video block to corresponding samples from one or more prediction video blocks generated by prediction unit 202 to generate a reconstructed video block for the current block, which is stored in buffer 213.

[0133] After reconstruction unit 212 reconstructs the video block, a loop filtering operation may be performed to reduce image blocking artifacts in the video block.

[0134] An entropy coding unit 214 may receive data from other functional components of the video encoder 200. Once the entropy coding unit 214 receives the data, it may perform one or more entropy encoding operations to generate entropy encoded data and output a bitstream including the entropy encoded data.

[0135] FIG. 12 is a block diagram illustrating an example of a video decoder 300, which may be the video decoder 124 in the system 100 shown in FIG.

[0136] The video decoder 300 may be configured to perform any or all of the techniques described in this disclosure. In the example of FIG. 12, the video decoder 300 includes multiple functional components. The techniques described in this disclosure may be shared among various components of the video decoder 300. In some examples, a processor may be configured to perform any or all of the techniques described in this disclosure.

[0137] 12, the video decoder 300 includes an entropy decoding unit 301, a motion compensation unit 302, an intra prediction unit 303, an inverse quantization unit 304, an inverse transform unit 305, a reconstruction unit 306, and a buffer 307. The video decoder 300 may, in some examples, perform a decoding pass that is generally inverse to the encoding pass described with respect to the video encoder 200 (e.g., FIG. 11).

[0138] An entropy decoding unit 301 may retrieve an encoded bitstream. The encoded bitstream may include entropy coded video data (e.g., coded blocks of video data). The entropy decoding unit 301 may decode the entropy coded video data, and from the entropy decoded video data, a motion compensation unit 302 may determine motion information including motion vectors, motion vector precision, reference picture list index, and other motion information. The motion compensation unit 302 may determine such information, for example, by implementing AMVP and merge mode.

[0139] The motion compensation unit 302 may perform interpolation, possibly based on an interpolation filter, to generate the motion compensated blocks. An identifier for the interpolation filter used with sub-pixel precision may be included in the syntax element.

[0140] Motion compensation unit 302 may calculate interpolated values ​​for sub-integer pixels of the reference block using an interpolation filter used by video encoder 200 during encoding of the video block. Motion compensation unit 302 may determine the interpolation filter used by video encoder 200 according to received syntax information and generate a predictive block using the interpolation filter.

[0141] The motion compensation unit 302 may use some of the syntax information to determine the size of the blocks used to code frames and / or slices of the coded video sequence, partition information describing how each macroblock of a picture of the coded video sequence is divided, a mode indicating how each partition is coded, one or more reference frames (and reference frame lists) for each inter-coded block, and other information for decoding the coded video sequence.

[0142] The intra prediction unit 303 may form a prediction block from spatially neighboring blocks using an intra prediction mode, e.g., received in the bitstream. The inverse quantization unit 304 inverse quantizes, e.g., dequantizes, the quantized video block coefficients provided in the bitstream and decoded by the entropy decoding unit 301. The inverse transform unit 305 applies an inverse transform.

[0143] A reconstruction unit 306 may add the residual block with a corresponding prediction block generated by the motion compensation unit 302 or the intra prediction unit 303 to form a decoded block. If desired, a deblocking filter may also be applied to filter the decoded block to remove blocking artifacts. The decoded video block is then stored in a buffer 307, which provides a reference block for later motion compensation / intra prediction and also generates a decoded video for presentation on a display device.

[0144] Below we provide a list of solutions that are preferred by some embodiments.

[0145] The following solutions represent example implementations of the techniques described in the preceding sections (eg, item 1).

[0146] 1. A method of video processing (e.g., method 900 shown in FIG. 9), comprising a step (902) of performing a conversion between a video block of a video and a coding representation of the video, wherein a palette mode is used for the coding representation of the video block, in which samples of the video block are represented using a palette of representative color values, and samples outside the palette are coded using an escape symbol and a value that is quantized using a quantization parameter within a range between a minimum and a maximum allowed value determined by a rule.

[0147] 2. The method of Solution 1, wherein the maximum allowed value is dependent on a binarization method used for the coded representation of the video block.

[0148] 3. The method of Solution 1, wherein the maximum allowed value is expressed as T+B, where B is a number based on a bit depth of a representation of the samples of the video block, and T is a predetermined number.

[0149] The following solutions represent example implementations of the techniques described in the preceding sections (eg, item 2).

[0150] 4. A method of image processing, comprising the step of performing a conversion between an image block of an image and a coding representation of the image, wherein a palette mode is used for the coding representation of the image block in which samples of the image block are represented using a palette of representative color values, and the size of the palette depends on a rule as to whether a local dual tree is used for the conversion between the image block and the coding representation.

[0151] 5. The method of solution 4, wherein the size of the palette depends on the color components of the image through the use of the local dual tree.

[0152] 6. The method of Solution 5, wherein the rule specifies using a smaller palette size when the video block is a chroma block than when the video block is a luma block.

[0153] The following solutions represent example implementations of the techniques described in the preceding sections (eg, item 3).

[0154] 7. A method of video processing, comprising the steps of performing a conversion between a video block of an image and a coding representation of the image, wherein a palette mode in which samples of the video block are represented using a palette of representative color values ​​is used for the coding representation of the video block, and the size of a palette predictor depends on a rule as to whether a local dual tree is used for the conversion between the video block and the coding representation.

[0155] 8. The method of Solution 7, wherein the size of the palette predictor depends on color components of the image block through the use of the local dual tree.

[0156] 9. The method of Solution 8, wherein the rule specifies using a smaller palette size when the video block is a chroma block than when the video block is a luma block.

[0157] The following solutions represent example implementations of the techniques described in the preceding sections (eg, item 4).

[0158] 10. A method of video processing, for converting between a video block in a video domain of a video and a coding representation of the video, comprising the steps of determining based on coding conditions whether syntax elements specifying deblocking offsets for chroma components of the video are included in the coding representation at the video domain level, and performing the conversion based on the determination, wherein the deblocking offsets are used to selectively enable a deblocking process for the video block.

[0159] 11. The method of solution 10, wherein the image region is a video slice or a video picture.

[0160] 12. The method of any of Solutions 10 to 11, wherein the coding conditions include a color format of the image.

[0161] 13. The method of any of Solutions 10 to 12, wherein the coding condition is based on whether separate plane coding is enabled for the transform.

[0162] 14. The method of any of Solutions 10 to 13, wherein the coding condition is based on whether a chroma array type is included in the coding representation.

[0163] The following solutions represent example implementations of the techniques described in the preceding sections (eg, item 5).

[0164] 15. A method of video processing, comprising the steps of determining, based on coding conditions, whether a syntax element specifying the use of a chroma coding tool is included in the coding representation at the video domain level for converting between a video block in a video domain of a video and a coding representation of the video, and performing the conversion based on the determination, wherein a deblocking offset is used to selectively enable a deblocking process for the video block.

[0165] 16. The method of solution 15, wherein the image region is a video slice or a video picture.

[0166] 17. The method of any of Solutions 15 to 16, wherein the coding condition corresponds to including a syntax element in an adaptation parameter set.

[0167] The following solutions provide example implementations of the techniques described in the preceding sections (eg, items 6 and 7).

[0168] 18. A method of video processing, comprising a step of performing a conversion between video blocks of a video region of a video and a coding representation of the video, the coding representation according to a format, the format specifying whether a first flag indicating a deblocking offset for a chroma component of the video is included in the coding representation based on whether a second flag indicating a quantization parameter offset for the chroma component is included in the coding representation.

[0169] 19. The method of solution 18, wherein the formatting rules specify that the coding expression includes a third flag indicating whether the first flag and the second flag are included in the coding expression.

[0170] 20. Any of Solutions 18 to 19, wherein the third flag is included in the coding representation within a picture parameter set.

[0171] The following solutions represent example implementations of the techniques described in the preceding sections (eg, items 8-12).

[0172] 21. A method of video processing, comprising the step of performing a conversion between video blocks of a video domain of a video and a coding representation of said video, said coding representation following formatting rules, said formatting rules specifying that syntax elements within said coding representation control whether one or more parameters indicating the applicability of one or more chroma coding tools are included in said coding representation at the video domain level or at the video block level.

[0173] 22. The method of solution 21, wherein the syntax element is included in an adaptation parameter set.

[0174] 23. Any of Solutions 21 to 22, wherein the formatting rules specify that a first value of the syntax element indicates that the one or more parameters are to be removed from the coding expression and skipped during parsing of the coding expression.

[0175] 24. A method according to any of the above solutions, wherein the transformation uses the method by satisfying a condition for the image.

[0176] 25. The method of solution 24, wherein the conditions include a type of video content or a profile or tier or level used by the coding representation.

[0177] 26. A method of any of the above solutions, wherein the conditions include block dimensions of the video block and / or adjacent video blocks, or a color format of the video, or a coding tree structure used for the transformation of the video block, or a type of the video region.

[0178] 27. A method according to any of Solutions 1 to 26, wherein the conversion comprises encoding the video into the coding representation.

[0179] 28. A method according to any of Solutions 1 to 26, wherein the converting comprises decoding the coding representation to generate pixel values ​​of the image.

[0180] 29. A video decoding device having a processor configured to perform the methods described in one or more of solutions 1 to 28.

[0181] 30. A video encoding device having a processor configured to perform the methods described in one or more of solutions 1 to 28.

[0182] 31. A computer program product storing computer code which, when executed by a processor, causes the processor to perform a method according to any one of solutions 1 to 28. 32. Any method, apparatus or system described herein.

[0183] 13 is a flowchart representation of a method 1300 of video processing in accordance with the present technology. The method 1300 includes, at operation 1310, converting between a video block of a video and a bitstream of the video using a palette mode in which samples of the video block are represented using a palette of representative color values. The size of the palette for the video block is determined based on whether a local dual tree is applied to the video block.

[0184] In some embodiments, when a local dual tree is applied to a coding unit, a partition operation is applied only to the luma blocks of the coding unit based on the partition parameters of the coding unit, and the partition operation is not applicable to at least one chroma block of the coding unit according to a mode type of the coding unit. In some embodiments, when a local dual tree is applied to a video block, the size of the palette is reduced. In some embodiments, when a local dual tree is applied to a video block, the size of the palette is reduced compared to the size of the palette when a local dual tree is not applied to the video block. In some embodiments, when a local dual tree is applied to a video block, the size of the palette is reduced compared to the size of the palette when a normal single tree is applied to the video block. In some embodiments, the size of the palette is reduced by half.

[0185] In some embodiments, when a local dual tree is applied, the size of the palette of the video blocks of the chroma components is different from the size of the palette of the video blocks of the luma component. In some embodiments, the size of the palette of the video blocks of the chroma components is smaller than the size of the palette of the video blocks of the luma component. In some embodiments, the size of the palette of the video blocks of the chroma components is half the size of the palette of the video blocks of the luma component.

[0186] 14 is a flowchart representation of a method 1400 of video processing in accordance with the present technology. The method 1400 includes, at operation 1410, converting between a video block of a video and a bitstream of the video using a palette mode in which samples of the video block are represented using a palette of representative color values. The size of the palette predictor for the video block is based on whether a local dual tree is applied to the video block.

[0187] In some embodiments, when a local dual tree is applied to the transform, the size of the palette predictor is reduced. In some embodiments, when a local dual tree is applied, the size of the palette predictor of the video block of the chroma component is different from the size of the palette predictor of the video block of the luma component. In some embodiments, the size of the palette predictor of the video block of the chroma component is smaller than the size of the palette of the video block of the luma component. In some embodiments, the size of the palette predictor of the video block of the chroma component is reduced by half compared to the size of the palette of the video block of the luma component.

[0188] 15 is a flow chart representation of a method 1500 of video processing in accordance with the present technology. The method 1500 includes, at operation 1510, performing a conversion between a video block of a video and a bitstream of the video using a palette mode in which samples of the video block are represented using a palette of representative color values. The conversion follows rules that stipulate that values ​​of escape samples are coded in the bitstream using a quantization parameter that is constrained by at least a maximum or minimum allowed value.

[0189] In some embodiments, the escape samples include a subset of samples that do not fall into the representative color values ​​of the palette, and the quantization parameter is constrained to be less than or equal to a maximum allowed value or greater than or equal to a minimum allowed value. In some embodiments, the maximum allowed value is determined based on the binarization method used for the conversion. In some embodiments, the maximum allowed value is expressed as (T+B), where B represents the bit depth. In some embodiments, T is indicated in the video domain of the bitstream. In some embodiments, T is signaled in a video parameter set, a sequence parameter set, a picture parameter set, a picture header, or a slice header. In some embodiments, B is equal to the bit depth offset associated with the quantization parameter. In some embodiments, the maximum allowed value is equal to T plus the bit depth offset associated with the quantization parameter. In some embodiments, T is a constant. In some embodiments, T is equal to 23, 35, or 39. In some embodiments, T is a constant less than 23, less than 35, or less than 29. In some embodiments, the value of the escape sample is coded using a bit length of EG5, EG3, or EG4.

[0190] 16 is a flow chart representation of a method 1600 of video processing in accordance with the present technology. The method 1600 includes performing a conversion between blocks of video and a bitstream of video at operation 1610. The conversion follows formatting rules that dictate whether parameters associated with a chroma coding tool are present in an adaptive parameter set of the bitstream based on a control flag in the adaptive parameter set.

[0191] In some embodiments, the parameter is omitted in the adaptive parameter set if the control flag is equal to 0. In some embodiments, the parameters include at least a signal flag for a chroma component of the adaptive loop filter, a signal flag for a Cb component of the adaptive loop filter, a signal flag for the Cr component of the adaptive loop filter, or a signal flag indicating whether a scaling list for a chroma component is present.

[0192] 17 is a flow chart representation of a method 1700 of video processing in accordance with the present technology. The method 1700 includes, at operation 1710, performing a conversion between blocks of a video and a bitstream of the video. The bitstream follows a format rule that specifies that if the video is monochrome or color components of the video are processed separately, syntax elements associated with quantization parameters are omitted in the picture header of the bitstream. In some embodiments, the video being monochrome is determined based on (1) the syntax element ChromaArrayType being equal to 0, and (2) the color format of the video being equal to 4:0:0. In some embodiments, the syntax elements include ph_log2_diff_min_qt_min_cb_intra_slice_luma, ph_log2_diff_min_qt_min_cb_intra_slice_chroma, or ph_log2_diff_min_qt_min_cb_inter_slice.

[0193] 18 is a flowchart representation of a method 1800 of video processing in accordance with the present technology. The method 1800 includes, at operation 1810, performing a conversion between a video block of a video and a video bitstream according to rules that specify that for the conversion, a palette mode, in which samples of the video block are represented using a palette of representative color values, and an adaptive color conversion mode, in which color space conversion is performed in the residual domain, are mutually exclusively enabled.

[0194] In some embodiments, if a palette mode is applied for a transform, the adaptive color conversion mode is disabled. In some embodiments, signaling of adaptive color conversion mode information is omitted for the transform. In some embodiments, use of the adaptive color conversion mode is presumed to be disabled. In some embodiments, if an adaptive color conversion mode is applied for a transform, the palette mode is disabled. In some embodiments, signaling of palette mode information is omitted for the transform. In some embodiments, use of the palette mode is presumed to be disabled.

[0195] 19 is a flow chart representation of a method 1900 of video processing in accordance with the present technology. The method 1900 includes, at operation 1910, performing a conversion between a video block of a video and a video bitstream. An adaptive color conversion mode is applied to the residual block in which the color space conversion is performed in the residual domain, regardless of the color space of the residual block of the video block. In some embodiments, the color space of the residual block has a Green-Blue-Red (GBR) color space or a YCbCr color space.

[0196] 20 is a flowchart representation of a method 2000 of video processing in accordance with the present technology. The method 2000 includes performing a conversion between a video block of a video and a video bitstream at operation 2010. The video block is coded using a transform skip residual coding tool in which the transform skip coding residual coefficients of the video block are coded using a context coding process or a bypass coding process. In the conversion, an operation is applied to a variable that specifies the number of remaining context coding bins allowed in the video block at the start or end of the bypass coding process.

[0197] In some embodiments, the process includes storing a number of remaining context coding bins allowed in the video block in a temporary variable and setting the variable based on the temporary variable. In some embodiments, the process includes setting the variable to a value N, where N is an integer. In some embodiments, N is less than M, where M is equal to 3. In some embodiments, N is based on another variable or another syntax element. In some embodiments, whether a syntax element indicating a sign of a coefficient level is coded using a bypass coding process or a context coding process is based on the number of remaining context coding bins allowed in the video block.

[0198] In some embodiments, the sign of the coefficient level is coded using a bypass coding process if the number of remaining context coding bins allowed in the video block is equal to N, where N is an integer greater than or equal to 0. In some embodiments, the sign of the coefficient level is coded using a context coding process if the number of remaining context coding bins allowed in the video block is greater than or equal to M, where N is an integer.

[0199] 21 is a flowchart representation of a method 2100 of video processing in accordance with the present technology. The method 2100 includes, at operation 2110, performing a conversion between video blocks of a video and a video bitstream using a transform skip residual coding process. In the conversion, an operation is applied to a variable that indicates whether a syntax element belongs to a particular scan path.

[0200] In some embodiments, the process comprises assigning a value to the variable indicating that the current scan path is the third scan path or a residual scan path. In some embodiments, the process comprises assigning a value to the variable indicating that the current scan path is the first scan path. In some embodiments, the process comprises assigning a value to the variable indicating that the current scan path is the second scan path or an X-plus scan path. In some embodiments, the process comprises assigning a first value to the variable at the start of the first scan path and a second value to the variable at the start of the third scan path or a residual scan path, the first value not equal to the second value.

[0201] In some embodiments, whether the syntax element indicating the sign of the coefficient level is coded using a bypass coding process or a context coding process is based on a variable. In some embodiments, if the variable indicates that the particular scan path is the third scan path or the residual scan path, the sign of the coefficient level is coded using a bypass coding process. In some embodiments, if the variable indicates that the particular scan path is the first scan path, the sign of the coefficient level is coded using a context coding process.

[0202] 22 is a flowchart representation of a method 2200 of video processing in accordance with the present technology. The method 2200 includes, at operation 2210, performing a conversion between a video block of a video and a bitstream of the video. In the conversion, whether a syntax element indicating a sign of a coefficient level is coded using a bypass coding process or a context coding process is based on an index of a scan path in which the same syntax element of one or more coefficients in a region of the video block is coded in order. In some embodiments, the conversion is performed using a transform skip residual coding process or a coefficient coding process in which the video block is non-transform skip coded.

[0203] 23 is a flowchart representation of a method 2300 of video processing in accordance with the present technology. The method 2300 includes, at process 2310, converting between video blocks of video and a video bitstream using a transform skip residual coding process, where a syntax element indicating a sign of a coefficient level is coded using a bypass coding process or a context coding process based on whether the syntax element is signaled in the same scan path as another syntax element.

[0204] In some embodiments, the syntax element is signaled as sig_coeff_flag or par_level_flag. In some embodiments, if the syntax element is signaled in the same scan path as abs_remainder, the syntax element is coded using a bypass coding process.

[0205] In some embodiments, the applicability of one or more of the above methods is based on features of the video. In some embodiments, the features comprise content of the video. In some embodiments, the features comprise a decoder parameter set, a sequence parameter set, a video parameter set, a picture parameter set, an adaptation parameter set, 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), a picture unit (PU) block, or a message signaled within a video coding unit. In some embodiments, the features comprise a location of a coding unit, a picture unit, a transform unit, or a block. In some embodiments, the features comprise a size or shape of a video block and / or of neighboring blocks of the video block. In some embodiments, the features comprise a quantization parameter of the video block. In some embodiments, the features comprise a color format of the video. In some embodiments, the features comprise a coding tree structure of the video. In some embodiments, the features comprise a type of slice, tile group, or picture. In some embodiments, the features comprise a color component of the video block. In some embodiments, the features comprise a temporal layer identifier. In some embodiments, the characteristics include a profile, level, or tier of a video standard. In some embodiments, the characteristics include whether the video block includes an escape sample. In some embodiments, the method is only applicable if the video block includes at least one escape sample. In some embodiments, the characteristics include whether the video block is coded using a lossless mode. In some embodiments, the method is only applicable if the video block is not coded using a lossless mode.

[0206] In some embodiments, the conversion comprises encoding the video into a bitstream. In some embodiments, the conversion comprises decoding the video from the bitstream.

[0207] In this document, the term "video processing" may refer to video encoding, video decoding, video compression, or video decompression. For example, a video compression algorithm may be applied in converting a pixel representation of a video to a corresponding bitstream representation or vice versa. The bitstream representation of a current video block may correspond to bits either placed together in the bitstream or scattered in multiple different locations, e.g., as specified by a syntax. For example, a macroblock may be encoded using bits in a header and other fields in the bitstream, with error residual values ​​being transformed and coded.

[0208] The disclosed and other solutions, examples, embodiments, modules and functional operations described in this document, including the structures disclosed in this document and their structural equivalents, can be implemented in digital electronic circuitry, or computer software, firmware, or hardware, or in a combination of one or more of these. The disclosed and other embodiments can be implemented as one or more computer program products, e.g., as one or more modules of computer program instructions encoded on a computer-readable medium for execution by or for controlling the operation of a data processing apparatus. The computer-readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter producing a machine-readable propagated signal, or a combination of one or more of these. The term "data processing apparatus" encompasses any apparatus, device, and machine that processes data, including, by way of example, a programmable processor, a computer, or multiple processors or computers. An apparatus can include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes a processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of these. A propagated signal is an artificially generated signal, for example a machine-generated electrical, optical, or electromagnetic signal generated to encode information for transmission to an appropriate receiver device.

[0209] A computer program (also known as a program, software, software application, script, or code) may be written in any form of programming language, including compiled or interpreted languages, and may 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 may be stored as part of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple cooperating files (e.g., a file that stores one or more modules, subprograms, or portions of code). A computer program may be deployed to be executed on one computer or to be executed on multiple computers, located at one site, or distributed across multiple sites and interconnected by a communication network.

[0210] The processes and logic flows described in this document may 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. These processes and logic flows may also be performed by, and an apparatus may be implemented as, special purpose logic circuitry, such as an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).

[0211] Processors suitable for executing computer programs include, by way of example, both general purpose and special purpose microprocessors, and any one or more processors of any kind of digital computer. Typically, a processor receives 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 executing instructions and one or more memory devices for storing instructions and data. Typically, a computer also includes one or more mass storage devices for storing data, e.g., magnetic disks, magneto-optical disks, or optical disks, or is operatively coupled to receive data from or transfer data to the mass storage devices. However, a computer need not have such devices. Computer-readable media suitable for storing computer program instructions and data include, by way of example, all forms of non-volatile memory, media, and memory devices, including, by way of example, semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices, magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and CD ROM and DVD-ROM disks. The processor and memory may be supplemented by, or incorporated in, dedicated logic circuitry.

[0212] Although this patent document contains numerous details, they should not be construed as limitations on any subject matter or the scope of what may be claimed, but rather as descriptions of features that may be specific to particular embodiments of a particular technology. Certain features described in this patent document in the context of separate embodiments may also be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment may also be implemented in multiple embodiments separately or in any suitable subcombination. Furthermore, although features may be described above as acting in a particular combination, and even initially claimed as such, in some cases one or more features from a claimed combination may be removed from the combination, or the claimed combination may be brought into a subcombination or a variation of the subcombination.

[0213] Similarly, although the figures show operations in a particular order, this should not be understood as requiring that those operations be performed in the particular order or sequence shown, or that all of the operations shown be performed, to achieve desired results, nor should the separation of various system components in the embodiments described in this patent document be understood as requiring such separation in all embodiments.

[0214] Only a few implementations and examples have been described; other implementations, extensions and variations may be made based on what is described and illustrated in this patent document.

Claims

1. 1. A method for processing video data, comprising the steps of: determining a first prediction mode to be applied to a first video block of a video for conversion between the first video block and a bitstream of the video; maintaining a predictor palette table; constructing a first palette having one or more palette predictors for the first video block based on the predictor palette table in the first prediction mode; performing the transformation based on the first prediction mode; having in the first prediction mode, reconstructed samples of the first video block are represented by at least one of a palette predictor derived from the first palette or escape samples; a maximum number of entries in the first palette based on a tree type of the first image block; A first flag related to a coding tool offset for a chroma component is included in a picture parameter set (PPS) in the bitstream; determining whether a first set of syntax elements defining chroma deblocking parameter offsets is included in the PPS in the bitstream based on a value of the first flag; determining whether a second set of syntax elements that specify chroma deblocking parameter offsets for a video picture of the video are included in a picture header that references the PPS based on the value of the first flag; determining whether a third set of syntax elements that specify chroma deblocking parameter offsets for a slice of the video picture is included in a slice header that references the PPS based on the value of the first flag; the value of the first flag relates to a color format of the video picture; whether the first set of syntax elements, the second set of syntax elements, and the third set of syntax elements are included in the bitstream is further based on a value of a second flag related to application of a deblocking filter. method.

2. The method of claim 1 , wherein the predictor palette table is updated based on the first palette.

3. the first prediction mode is applied to a second video block of the video, and a second palette for the second video block is constructed based on the predictor palette table; a single tree is applied to the first image block and a local dual tree is applied to the second image block, and the maximum number of entries in the first palette is different from the maximum number of entries in the second palette. The method of claim 1.

4. The method described in claim 3, wherein the maximum number of entries in the second palette is less than the maximum number of entries in the first palette.

5. The method described in claim 3, wherein the maximum number of entries in the second palette is half the maximum number of entries in the first palette.

6. The method of claim 3 , wherein the second video block is a luma block, and the second video block has a tree type that is not single-tree.

7. 4. The method of claim 3, wherein the second video block is a luma block, and the second video block is obtained by splitting a luma parent block of a coding tree node, and a chroma parent block of the coding tree node is not allowed to be split.

8. 8. The method of claim 7, wherein the first video block is a luma block, and a palette size of a chroma block corresponding to the first video block is greater than a palette size of a chroma block corresponding to the second video block.

9. The method of claim 7 , wherein the second palette has a size larger than a palette size of a chroma block corresponding to the second image block.

10. the first prediction mode is applied to a third video block of the video, and a third palette for the third video block is constructed based on the predictor palette table; a dual tree is applied to the first video block and a local dual tree is applied to the third video block, and a maximum number of entries in the predictor palette table is different for the first video block and for the third video block. The method of claim 1.

11. the first image block is a chroma block; the third video block is a luma block, and the third video block is obtained by splitting a luma parent block of a coding tree node, and a chroma parent block of the coding tree node is not allowed to be split; a size of the first palette is greater than a palette size of a chroma block corresponding to the third image block; The method of claim 10.

12. The method of claim 1 , wherein the converting comprises encoding the video into the bitstream.

13. The method of claim 1 , wherein the converting comprises decoding the video from the bitstream.

14. 1. An apparatus for processing video data comprising a processor and a non-transitory memory having instructions that, upon execution by the processor, cause the processor to: determining that a first prediction mode is to be applied to a first video block of a video for conversion between the first video block and a bitstream of the video; Maintains a predictor palette table; constructing a first palette having one or more palette predictors for the first video block based on the predictor palette table in the first prediction mode; performing the transformation based on the first prediction mode; in the first prediction mode, reconstructed samples of the first video block are represented by at least one of a palette predictor derived from the first palette or escape samples; a maximum number of entries in the first palette based on a tree type of the first image block; A first flag related to a coding tool offset for a chroma component is included in a picture parameter set (PPS) in the bitstream; determining whether a first set of syntax elements defining chroma deblocking parameter offsets is included in the PPS in the bitstream based on a value of the first flag; determining whether a second set of syntax elements that specify chroma deblocking parameter offsets for a video picture of the video are included in a picture header that references the PPS based on the value of the first flag; determining whether a third set of syntax elements that specify chroma deblocking parameter offsets for a slice of the video picture is included in a slice header that references the PPS based on the value of the first flag; the value of the first flag relates to a color format of the video picture; whether the first set of syntax elements, the second set of syntax elements, and the third set of syntax elements are included in the bitstream is further based on a value of a second flag related to application of a deblocking filter. Device.

15. A non-transitory computer-readable storage medium having instructions stored thereon, the instructions causing a processor to: determining that a first prediction mode is to be applied to a first video block of a video for conversion between the first video block and a bitstream of the video; Maintains a predictor palette table; constructing a first palette having one or more palette predictors for the first video block based on the predictor palette table in the first prediction mode; performing the transformation based on the first prediction mode; in the first prediction mode, reconstructed samples of the first video block are represented by at least one of a palette predictor derived from the first palette or escape samples; a maximum number of entries in the first palette based on a tree type of the first image block; A first flag related to a coding tool offset for a chroma component is included in a picture parameter set (PPS) in the bitstream; determining whether a first set of syntax elements defining chroma deblocking parameter offsets is included in the PPS in the bitstream based on a value of the first flag; determining whether a second set of syntax elements that specify chroma deblocking parameter offsets for a video picture of the video are included in a picture header that references the PPS based on the value of the first flag; determining whether a third set of syntax elements that specify chroma deblocking parameter offsets for a slice of the video picture is included in a slice header that references the PPS based on the value of the first flag; the value of the first flag relates to a color format of the video picture; whether the first set of syntax elements, the second set of syntax elements, and the third set of syntax elements are included in the bitstream is further based on a value of a second flag related to application of a deblocking filter. A computer-readable storage medium.

16. 1. A method for storing a video bitstream, comprising: determining, for a first video block of a video, that a first prediction mode is applied to the first video block; maintaining a predictor palette table; constructing a first palette having one or more palette predictors for the first video block based on the predictor palette table in the first prediction mode; generating a bitstream for the video based on the first prediction mode; storing the bitstream on a non-transitory computer readable recording medium; having in the first prediction mode, reconstructed samples of the first video block are represented by at least one of a palette predictor derived from the first palette or escape samples; a maximum number of entries in the first palette based on a tree type of the first image block; A first flag related to a coding tool offset for a chroma component is included in a picture parameter set (PPS) in the bitstream; determining whether a first set of syntax elements defining chroma deblocking parameter offsets is included in the PPS in the bitstream based on a value of the first flag; determining whether a second set of syntax elements that specify chroma deblocking parameter offsets for a video picture of the video are included in a picture header that references the PPS based on the value of the first flag; determining whether a third set of syntax elements that specify chroma deblocking parameter offsets for a slice of the video picture is included in a slice header that references the PPS based on the value of the first flag; the value of the first flag relates to a color format of the video picture; whether the first set of syntax elements, the second set of syntax elements, and the third set of syntax elements are included in the bitstream is further based on a value of a second flag related to application of a deblocking filter. method.

Citation Information

Patent Citations

  • JPP7451731B

  • JPP7556037B