Using palette predictors in video coding.
Adaptive palette management techniques address inefficiencies in video coding standards by resetting palettes, using shared palettes, and adjusting sizes dynamically, enhancing encoding efficiency and parallel processing capabilities.
Patent Information
- Application Number
- JP2022516099
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-09-12
- Filing Date
- 2020-09-10
- Publication Date
- 2025-12-16
- Estimated Expiration
- 2040-09-10
AI Technical Summary
Existing video coding standards face challenges in optimizing palette mode operations, such as fixed predictor palette sizes, inefficient update mechanisms, and suboptimal parallel processing capabilities, leading to inaccurate motion information and increased complexity.
Implement adaptive palette management techniques, including resetting or reinitializing predictor palettes, using shared palettes across blocks, maintaining usage counters, and dynamically adjusting palette sizes based on block characteristics, to enhance encoding efficiency and parallel processing.
Improves video coding efficiency by reducing inaccuracies in motion information and enabling better parallel processing, thereby optimizing compression and complexity in video encoding and decoding processes.
Smart Images

Figure 0007787067000005 
Figure 0007787067000006 
Figure 0007787067000007
Abstract
Description
[Technical Field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS Book This application timely claims priority to and the benefit of International Patent Application No. PCT / CN2019 / 105554, filed September 12, 2019. , based on International Patent Application No. PCT / US2020 / 050181 filed September 10, 2020 For all purposes under law, the entire disclosure of the above application is incorporated by reference as part of the disclosure of this specification.
[0002] This patent document relates to video coding techniques, devices and systems. [Background technology]
[0003] Efforts are currently underway to improve the performance of current video codec technology and provide video encoding and decoding schemes that achieve better compression ratios or allow for lower complexity or parallel implementation. Industry experts have recently proposed several new video coding tools, and testing is currently underway to determine their effectiveness. Summary of the Invention
[0004] Devices, systems, and methods are described that relate to digital video coding, and in particular to motion vector management. The described methods can be applied to existing video coding standards (e.g., High Efficiency Video Coding (HEVC) or Versatile Video Coding) and future video coding standards or video codecs.
[0005] In one exemplary aspect, the disclosed techniques may be used to provide a method of video processing. The method includes performing a transformation between a current block of video and a coded representation of the video using a palette mode that uses a palette of representative sample values to encode the current block. During the transformation, a predictor palette is used to predict the palette of representative sample values. Updates to the predictor palette after the transformation of the current block are disabled according to rules based on characteristics of the current block.
[0006] In another exemplary aspect, the disclosed techniques may be used to provide a method of video processing. The method includes performing a conversion between a current block of video and a coded representation of the video using a palette mode that uses a palette of representative sample values to encode the current block. During the conversion, a predictor palette is used to predict the palette of representative sample values. Whether to change the predictor palette is determined according to the color components of the current block.
[0007] In another representative aspect, the disclosed techniques may be used to provide a method of video processing that includes performing a transformation between a current block in a video unit of the video and a coded representation of the video using a palette mode that uses a palette of representative sample values to encode the current block, where multiple predictor palettes are used to predict the palette of representative sample values during the transformation.
[0008] In another representative aspect, the disclosed techniques may be used to provide a method of video processing. The method includes performing a transformation between a current block in a video unit of video and a coded representation of the video using a palette mode that uses a palette of representative sample values to encode the current block. During the transformation, a predictor palette is used to predict the palette of representative sample values. The predictor palette is reset or reinitialized according to a rule before transforming the first block in the video unit or after transforming the last video block in the previous video unit.
[0009] In another exemplary aspect, the disclosed techniques may be used to provide a method of video processing. The method includes performing a conversion between a video unit of video and a coded representation of the video using a palette mode. The video unit includes a plurality of blocks. During the conversion, a shared predictor palette is used by all of the plurality of blocks to predict a palette of representative sample values for each of the plurality of blocks in the palette mode.
[0010] In another exemplary aspect, the disclosed techniques may be used to provide a method of video processing that includes performing a transformation between a current block of video and a coded representation of the video using a palette mode that uses a palette of representative sample values to encode the current block. During the transformation, a predictor palette is used to predict the palette of representative sample values, and a counter is maintained for each entry of the predictor palette that indicates how frequently the corresponding entry is used.
[0011] In another exemplary aspect, the disclosed techniques may be used to provide a method of video processing. The method includes performing a transformation between a current block of video and a coded representation of the video using a palette mode in which a palette of representative sample values is used to encode the current block to predict a palette of representative sample values for the current block. The number of palette entries signaled in the coded representation is in the range of [0, maximum allowed size of palette - number of palette entries derived during the transformation].
[0012] In another representative aspect, the disclosed techniques may be used to provide a method of video processing. The method includes performing a transformation between a current block in a video unit of the video and a coded representation of the video using a palette mode that uses a palette of representative sample values to encode the current block. During the transformation, a predictor palette is used to predict the palette of representative sample values, and the size of the predictor palette is adaptively adjusted according to a rule.
[0013] In another exemplary aspect, the disclosed techniques may be used to provide a method of video processing that includes performing a transformation between a current block in a video unit of video and a coded representation of the video using a palette mode that uses a palette of representative sample values to encode the current block, using a predictor palette to predict the palette of representative sample values during the transformation, and determining the size of the palette of representative samples or the predictor palette according to rules that allow for size variation between video units of video.
[0014] In another exemplary aspect, the disclosed techniques may be used to provide a method of video processing. The method includes performing a transformation between a current block in a video unit of a video and a coded representation of the video using a palette mode that uses a palette of representative sample values to encode the current block. During the transformation, a predictor palette is used to predict the palette of representative sample values. The predictor palette is reinitialized when a condition is met, where the condition is met when the video unit is the first video unit in a video unit row and a syntax element is included in the coded representation that indicates enabling wavefront parallelism for the video unit.
[0015] In another representative aspect, the disclosed techniques may be used to provide a method of video processing that includes performing a conversion between a video block in a video unit and a coded representation of the video block using a palette mode, wherein a predictor palette is used to predict current palette information of the video block during the conversion, and further wherein the predictor palette is selectively reset prior to the conversion between the video block and a bitstream representation of the video block.
[0016] In another representative aspect, the disclosed techniques may be used to provide another method of video processing. The method includes performing a transformation between a video block in a video unit and a coded representation of the video block using a palette mode, wherein during the transformation, a predictor palette is used to predict current palette information of the video block, and further, the predictor palette is a shared predictor palette if multiple coding units of the video unit have a common shared region.
[0017] In another representative aspect, the disclosed techniques may be used to provide another method of video processing that includes performing a transform between a video block in a video unit and a coded representation of the video block using a palette mode, where during the transform a predictor palette is used to predict current palette information for the video block, and further where the size of the predictor palette is adaptively changed according to one or more conditions.
[0018] In another representative aspect, the disclosed techniques may be used to provide another method of video processing that includes performing a transformation between a video block in a video unit and a coded representation of the video block using a palette mode, where during the transformation a predictor palette is used to predict current palette information for the video block, and the predictor palette is updated based on a size or number of entries in the predictor palette.
[0019] In another representative aspect, the disclosed techniques may be used to provide another method of video processing that includes performing a transformation between video blocks in a video unit and coded representations of the video blocks using a palette mode, where during the transformation a predictor palette is used to predict current palette information for the video blocks, and the entries of the predictor palette are further reordered or modified.
[0020] In another representative aspect, the disclosed techniques may be used to provide another method of video processing that includes transforming between a video block in a video unit and a coded representation of the video block using a palette mode, where during the transform a predictor palette is used to predict current palette information for the video block, and further where use of the predictor palette is indicated by maintaining a counter that tracks the number of times the predictor palette is used.
[0021] In another exemplary aspect, the above-described methods may be implemented by a video decoder including a processor.
[0022] In another exemplary aspect, the above-described methods may be implemented by a video encoder including a processor.
[0023] Additionally, in a representative aspect, an apparatus in a video system is disclosed that includes a processor and a non-transitory memory loaded with instructions that, when executed by the processor, cause the processor to implement any one or more of the disclosed methods.
[0024] Also disclosed is a computer program product stored on a non-transitory computer readable medium, the computer program product comprising program code for performing any one or more of the disclosed methods.
[0025] These and other aspects and features of the disclosed technology are explained in more detail in the drawings, description and claims. [Brief explanation of the drawings]
[0026] [Figure 1] 1 shows an example of a block coded in palette mode. [Figure 2] An example of using a predicted palette to signal palette entries is shown. [Figure 3] Examples of horizontal and vertical traverse scans are shown. [Figure 4] An example of encoding a palette index is shown below. [Figure 5] An example of a picture with 18x12 luma CTUs divided into 12 tiles and 3 raster scan slices is shown. [Figure 6] An example of a picture with 18x12 luma CTUs is shown, divided into 24 tiles and 9 rectangular slices. [Figure 7] An example of a picture divided into 4 tiles, 11 bricks, and 4 rectangular slices is shown below. [Figure 8] An example of a picture with 28 sub-pictures is shown below. [Figure 9] FIG. 1 is a block diagram illustrating an example of a hardware platform for implementing the visual media decoding or visual media encoding techniques described in this patent specification. [Figure 10] FIG. 1 is a block diagram illustrating an exemplary video processing system in which the disclosed techniques can be implemented. [Figure 11] 1 shows a flowchart of video encoding. [Figure 12] 1 is a flowchart illustrating a method of video processing according to the present technology. [Figure 13] 10 is a flowchart illustrating another method of video processing in accordance with the present technology. [Figure 14] 10 is a flowchart illustrating another method of video processing in accordance with the present technology. [Figure 15] 10 is a flowchart illustrating another method of video processing in accordance with the present technology. [Figure 16]10 is a flowchart illustrating another method of video processing in accordance with the present technology. [Figure 17] 10 is a flowchart illustrating another method of video processing in accordance with the present technology. [Figure 18] 10 is a flowchart illustrating another method of video processing in accordance with the present technology. [Figure 19] 10 is a flowchart illustrating another method of video processing in accordance with the present technology. [Figure 20] 10 is a flowchart illustrating another method of video processing in accordance with the present technology. [Figure 21] 10 is a flowchart illustrating yet another method of video processing in accordance with the present technology. DETAILED DESCRIPTION OF THE INVENTION
[0027] 1. Video coding in HEVC / H.265
[0028] Video coding standards have evolved primarily through the development of well-known ITU-T and ISO / IEC standards. ITU-T created H.261 and H.263, while ISO / IEC created MPEG-1 and MPEG-4 Visual. The two organizations jointly developed H.262 / MPEG-2 Video, H.264 / MPEG-4 AVC (Advanced Video Coding), and H.265 / HEVC. Since H.262, video coding standards have been based on hybrid video coding architectures that utilize temporal prediction and transform coding. 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 incorporated into reference software called Joint Exploration Mode (JEM). In April 2018, the Joint Video Expert Team (JVET) was established between VCEG (Q6 / 16) and ISO / IEC JTC1 SC29 / WG11 (MPEG), and is working on formulating the VVC standard with the goal of reducing the bitrate by 50% compared to HEVC.
[0029] 2. Palette Mode
[0030] 2.1 Palette Mode in HEVC-SCC (HEVC Screen Content Coding Extension)
[0031] 2.1.1. Palette Mode Concept
[0032] The basic idea behind palette mode is to represent the pixels in a CU by a small set of representative color values. This set is called the palette. It is also possible to indicate samples that are outside the palette by signaling an escape symbol followed by a (possibly quantized) component value. Such pixels are called escape pixels. Palette mode is illustrated in Figure 1. As shown in Figure 1, for each pixel with three color components (luminance, and two chrominance components), an index into the palette can be created and the block can be reconstructed based on the values created in the palette.
[0033] 2.1.2. Palette Entry Encoding
[0034] For palette coded blocks, the following important aspects are introduced:
[0035] 1) Build the current palette based on the predictor palette and new entries signaled for the current palette, if any.
[0036] 2) Classify the current samples / pixels into two categories: one (first category) contains samples / pixels in the current palette, and the other (second category) contains samples / pixels beyond the current palette.
[0037] a. For samples / pixels in the second category, apply quantization to the sample / pixel (at the encoder), signal the quantized value, and apply inverse quantization (at the decoder).
[0038] 2.1.2.1. Predictive Palette
[0039] To encode palette entries, a predictor palette is maintained that is updated after decoding a palette-encoded block.
[0040] 2.1.2.1.1. Initializing the predicted palette
[0041] The predictor palette is initialized at the beginning of each slice and each tile.
[0042] In the SPS, the maximum size of the palette and the predicted palette are signaled. In HEVC-SCC, palette_predictor_initializer_present_flag is introduced in the PPS. If this flag is 1, an entry for initializing the predicted palette is signaled in the bitstream.
[0043] Depending on the value of palette_predictor_initializer_present_flag, the predictor palette size is either reset to 0 or initialized using the predictor palette initializer entry signaled in the PPS. HEVC-SCC enabled a predictor palette initializer of size 0 to specifically disable predictor palette initialization at the PPS level.
[0044] The corresponding syntax, semantics, and decoding process are defined below. Newly added text is shown in bold and underlined italics. Deleted text is marked with [[]].
[0045] 7.3.2.2.3 Sequence Parameter Set Screen Content Encoding Extended Syntax
[0046] [Table 1]
[0047] palette_mode_enabled_flag equal to 1 specifies that the decoding process for palette mode may be used for intra blocks. palette_mode_enabled_flag equal to 0 specifies that the decoding process for palette mode is not applied. If not present, the value of palette_mode_enabled_flag is inferred to be equal to 0. palette_max_size specifies the upper limit of the allowed palette size. If not present, the value of palette_max_size is inferred to be 0.
[0048] delta_palette_max_predictor_size specifies the difference between the maximum allowed palette predictor size and the maximum allowed palette size. If not present, the value of delta_palette_max_predictor_size is inferred to be 0. The variable PaletteMaxPredictorSize is derived as follows: PaletteMaxPredictorSize=palette_max_size+delta_palette_max_predictor_size (2-1)
[0049] If palette_max_size is equal to 0, it is a bitstream conformance requirement that the value of delta_palette_max_predictor_size be equal to 0. sps_palette_predictor_initializer_present_flag equal to 1 specifies that the sequence palette predictor is initialized using the sps_palette_predictor_initializers specified in the term. sps_palette_predictor_initializer_flag equal to 0 specifies that the sequence palette predictor entries are initialized to 0. If not present, the value of sps_palette_predictor_initializer_flag is inferred to be equal to 0.
[0050] If palette_max_size is equal to 0, it is a bitstream conformance requirement that the value of sps_palette_predictor_initializer_present_flag be equal to 0. sps_num_palette_predictor_initializer_minus1+1 specifies the number of entries in the sequence palette predictor initializer. The value of sps_num_plete_predictor_initializer_minus1+1 must be less than or equal to PaletteMaxPredictorSize as a bitstream compatibility requirement.
[0051] sps_palette_predictor_initializers[comp][i] specifies the numerical value of the comp-th component of the i-th palette entry in the SPS used to initialize the array PredictorPaletteEntries. If the value of i is in the range of 0 to sps_num_palette_predictor_initializer_minus1 (including 0), the value of sps_palette_predictor_initializer[0][i] is in the range of 0 to (1< <BitDepth Y )-1, and the values of sps_palette_predictor_initializers[1][i] and sps_palette_predictor_initializers[2][i] are in the range 0 to (1< <BitDepth C )-1.
[0052] 7.3.2.3.3 Picture Parameter Set Screen Content Encoding Extended Syntax
[0053] [Table 2]
[0054] pps_palette_predictor_initializer_present_flag equal to 1 specifies that the palette predictor initializer used for pictures referencing the PPS is derived based on the palette predictor initializer specified in the PPS. pps_palette_predictor_initializer_flag equal to 0 specifies that the palette predictor initializer used for pictures referencing the PPS is inferred to be equal to the one specified in the active SPS. If not present, the value of pps_palette_predictor_initializer_present_flag is inferred to be equal to 0.
[0055] If palette_max_size is equal to 0 or palette_mode_enabled_flag is equal to 0, it is a bitstream conformance requirement that the value of pps_palette_predictor_initializer_present_flag is equal to 0. pps_num_palette_predictor_initializer specifies the number of entries in the picture palette predictor initializer. The value of pps_num_plete_predictor_initializer must be less than or equal to PaletteMaxPredictorSize for bitstream compatibility.
[0056] The palette predictor variables are initialized as follows: If the coding tree unit is the first coding tree unit in a tile, the following applies: - The initialization procedure for the palette predictor variables is called as specified in Section 9.3.2.3. - Else, if entropy_coding_sync_enabled_flag is equal to 1 and CtbAddrInRs%PicWidthInCtbsY is equal to 0 or TileId[CtbAddrInTs] is not equal to TileId[CtbAddrRsToTs[CtbAddrInRs-1], then the following applies: Using the position (x0, y0) of the top-left luminance sample of the current coding tree block, derive the position (xNbT, yNbT) of the top-left luminance sample of the spatial neighboring block T (Figure 2) as follows: (xNbT,yNbT)=(x0+CtbSizeY,y0-CtbSizeY) (9-3) The z-scan-order block availability derivation process specified in Section 6.4.1 is invoked with inputs (xCurr, yCurr) set equal to (x0, y0) and neighbor positions (xNbY, yNbY) set equal to (xNbT, yNbT), and its output is assigned to availableFlagT. The synchronization of context variables, Rice parameter initialization states, and palette predictor variables is called as follows: If -availableFlagT is equal to 1, the synchronization process for context variables, Rice parameter initialization state, and palette predictor variables, as specified in Section 9.3.2.5, is invoked with TableStateIdxWpp, TableMpsValWpp, TableStatCoeffWpp, PredictorPaletteSizeWpp, and TableParetteEntriesWpp as input. - Otherwise, the following applies: - The palette predictor initialization procedure is called as specified in Section 9.3.2.3. Otherwise, if CtbAddrInRs is equal to slice_segment_address and dependent_slice_segment_flag is equal to 1, the synchronization process for the context variables and Rice parameter initialization state as specified in Section 9.3.2.5 is invoked with TableStateIdxDs, TableMpsValDs, TableStatCoeffDs, PredictorPaletteSizeDs, and TablePredictorPaletteEntriesDs as input. - Otherwise, the following applies: - The palette predictor initialization procedure is called as specified in Section 9.3.2.3.
[0057] 9.3.2.3 Initialization Process for Palette Predictor Entries The output of this process is the initialized palette predictor variables PredictorPaletteSize and PredictorPaletteEntries. The variable numComps is derived as follows: numComps=(ChromaArrayType==0)?1:3 (9-8) -If pps_palette_predictor_initializer_present_flag is equal to 1, the following applies: -PredictorPaletteSize is set equal to pps_num_palette_predictor_initializer. The array PredictorPaletteEntries is derived as follows: for(comp=0;comp <numComps;comp++) for(i=0;i <PredictorPaletteSize;i++) PredictorPaletteEntries[comp][i]=pps_palette_predictor_initializers[comp][i] (9-9) - Otherwise (pps_palette_predictor_initializer_present_flag is equal to 0), if sps_palette_predictor_initializer_present_flag is equal to 1, the following applies: -PredictorPaletteSize is set equal to sps_num_palette_predictor_initializer_minus1 plus 1. The array PredictorPaletteEntries is derived as follows: for(comp=0;comp <numComps;comp++) for(i=0;i <PredictorPaletteSize;i++) PredictorPaletteEntries[comp][i]=sps_palette_predictor_initializers[comp][i] (9-10) - Otherwise (pps_palette_predictor_initializer_present_flag is equal to 0 and sps_palette_predictor_initializer_present_flag is equal to 0), PredictorPaletteSize is set equal to 0.
[0058] 2.1.2.1.2. Using the Predictive Palette
[0059] For each entry in the palette predictor, a reuse flag is signaled to indicate whether it is part of the current palette. This is shown in Figure 2. The reuse flag is transmitted using a run-length encoding of zeros. After this, the new palette entry number is signaled using an Exponential-Golomb (EG) code of order 0, e.g., EG-0. Finally, the component values for the new palette entry are signaled.
[0060] 2.1.2.2. Predictive Palette Update
[0061] The predictor palette update is performed in the following steps:
[0062] (1) Before decoding the current block, there exists a predictor palette, denoted by PltPred0.
[0063] (2) Build the current palette table by first inserting the one from PltPred0, then inserting a new entry for the current palette.
[0064] (3) Construction of PltPred1:
[0065] a. First add the ones in the current palette table (which may include ones from PltPred0)
[0066] b. If not full, add those not referenced in PltPred0 according to ascending entry index.
[0067] 2.1.3. Palette Index Encoding
[0068] Palette indices are coded using horizontal and vertical transverse scans, as shown in Figure 3. Use palette_transpose_flag to explicitly signal the scan order in the bitstream. In the following subsections, we assume the scan is horizontal.
[0069] 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 decoding index. In "COPY_ABOVE" mode, the palette index of the sample in the row above is copied. Both "COPY_LEFT" and "COPY_ABOVE" modes signal a running value that specifies the number of subsequent samples to be coded using the same mode.
[0070] In palette mode, the value of the index for the escape sample is the palette entry number, and an escape component value is signaled for each escape symbol if the escape symbol is part of a run in "COPY_LEFT" or "COPY_ABOVE" mode. The encoding of the palette index is shown in Figure 4.
[0071] This syntax sequence is performed as follows: First, the number of index values for the CU is signaled. This is followed by signaling the actual index value for the entire CU using truncated binary coding. In bypass mode, both the number of indices and the index value are coded, which results in index-related bypass bins being grouped together. Next, palette sample mode (if required) and execution are signaled in an interleaved manner. Finally, the component escape values corresponding to the escape samples for the entire CU are grouped and coded in bypass mode. The binarization of the escape samples is third-order EG coding, e.g., EG-3.
[0072] After signaling the index value, an additional syntax element, last_run_type_flag, is signaled, which in conjunction with the number of indexes, eliminates the need to signal the run value corresponding to the last run in the block.
[0073] In HEVC-SCC, palette mode is also enabled for 4:2:2, 4:2:0, and monochrome chroma formats. The signaling of palette entries and palette indices is nearly identical for all chroma formats. For non-monochrome formats, each palette entry consists of three components. For monochrome formats, each palette entry consists of a single component. For subsampled chroma directions, chroma samples are associated with luma sample indices that are divisible by two. After reconstructing the palette index of a CU, if only a single component is associated with a sample, only the first component of the palette entry is used. The only difference in signaling is the escape component value. For each escape sample, the number of escape component values signaled may vary depending on the number of components associated with that sample.
[0074] Also, in palette index coding, there is an index adjustment process. When signaling a palette index, the left neighbor index or the upper neighbor index should be different from the current index. Therefore, by removing one possibility, the range of the current palette index can be narrowed by 1. Then, the index is signaled by truncated binary (TB) binarization.
[0075] The text associated with this section is shown below, where CurrPaletteIndex is the current palette index and adjustedRefPaletteIndex is the predicted index.
[0076] The variables PaletteIndexMap[xC][yC] specify a palette index, which is an index into the array represented by CurrentPaletteEntries. The array indices xC, yC specify the sample's location (xC, yC) relative to the top-left luminance sample of the picture. The value of PaletteIndexMap[xC][yC] must be in the range from 0 to MaxPaletteIndex.
[0077] The variable adjustmentRefPaletteIndex 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] } }
[0078] If CopyAboveIndicesFlag[xC][yC] is equal to 0, the variable CurrPaletteIndex is derived as follows: if(CurrPaletteIndex>=adjustedRefPaletteIndex) CurrPaletteIndex++ 2.1.3.1. Palette-encoded block decoding process 1) Read the prediction information (palette_predictor_run) to indicate which entries in the predictor palette to reuse. 2) Read the new palette entry for the current block a.num_signaled_palette_entries b.new_palette_entries 3) Build CurrentPaletteEntries based on a) and b). 4) Read the escape symbol present flag palette_escape_val_present_flag and derive MaxPaletteIndex. 5) Copy mode / run mode encodes some unencoded samples a.num_palette_indices_minus1 b. For each sample that has not been coded in copy mode / run mode, code the palette_idx_idc contained in the current plt table
[0079] 2.2. Palette Mode in VVC
[0080] 2.2.1. Palettes in Dual Trees
[0081] In VVC, a dual-tree coding structure is used to code intra-slices, so the luminance component and two chroma components may have different palettes and palette indices, and the two chroma components share the same palette and palette indices.
[0082] 2.2.2. Palette as a Split Mode
[0083] 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.
[0084] When IBC is turned off, in the I tile, the first bin is used to indicate whether the current prediction mode is MODE_PLT. In the P / B tile, the first bin is used to indicate whether the current prediction mode is MODE_INTRA. Otherwise, one additional bin is used to indicate whether the current prediction mode is MODE_PLT or MODE_INTER.
[0085] If IBC is turned on, in the I-tile, the first bin is used to indicate whether the current prediction mode is MODE_IBC. Otherwise, the second bin is used to indicate whether the current prediction mode is MODE_PLT or MODE_INTRA. In the 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. Otherwise, the second bin is used to indicate whether the current prediction mode is MODE_IBC or MODE_INTER.
[0086] An example of syntax text is shown below:
[0087] Coding Unit Syntax
[0088] [Table 3]
[0089] 2.3. Picture, Subpicture, Slice, Tile, Brick, and CTU Division
[0090] Subpicture: A rectangular area of one or more slices within a picture.
[0091] Slice: An integer number of bricks of a picture contained exclusively in one NAL unit. A slice may consist of multiple complete tiles or just one tile with a continuous sequence of complete bricks.
[0092] Tile: A rectangular region of CTUs within a particular tile column and a particular tile row in a picture.
[0093] Brick: A rectangular area of a CTU row in a particular tile in a picture. A tile can be divided into multiple bricks, each consisting of one or more CTU rows within the tile. A tile that is not divided into multiple bricks is also called a brick. However, a brick that is a true subset of a tile is not called a tile.
[0094] Brick scan: A specific contiguous arrangement of CTUs that divides a picture, where CTUs are arranged contiguously in a brick with a CTU raster scan, bricks within a tile are arranged contiguously in a tile's brick raster scan, and tiles in a picture are arranged contiguously in a picture's tile raster scan.
[0095] A picture is divided into one or more tile rows and one or more tile columns. A tile is a sequence of CTUs that covers a rectangular area of an image.
[0096] A tile is divided into one or more bricks, and each brick consists of multiple CTU rows within the tile.
[0097] A tile that is not divided into multiple bricks is also called a brick, however a brick that is a true subset of a tile is not called a tile.
[0098] A slice contains multiple tiles of a picture or multiple bricks of a tile.
[0099] A subpicture contains one or more slices that collectively cover a rectangular area of the picture.
[0100] Two modes of slicing are supported: raster scan slice mode and rectangular slice mode. In raster scan slice mode, a slice contains a sequence of multiple tiles in a tile raster scan of the picture. In rectangular slice mode, a slice contains multiple bricks of the picture that collectively form a rectangular region of the picture. The bricks within a rectangular slice are in the order of the brick raster scan of the slice.
[0101] FIG. 5 shows an example of a division of raster scan slices of a picture, where the picture is divided into 12 tiles and 3 raster scan slices.
[0102] FIG. 6 shows an example of dividing a picture into rectangular slices, where the picture is divided into 24 tiles (6 tile columns and 4 tile rows) and 9 rectangular slices.
[0103] Figure 7 shows an example of a picture divided into tiles, bricks, and rectangular slices, where the picture is divided into 4 tiles (2 tile columns and 2 tile rows), 11 bricks (the top left tile contains 1 brick, the top right tile contains 5 bricks, the bottom left tile contains 2 bricks, and the bottom right tile contains 3 bricks) and 4 rectangular slices.
[0104] FIG. 8 shows an example of sub-picture division of a picture, dividing the picture into 28 sub-pictures of various dimensions.
[0105] If a picture is coded using three separate color planes (separate_colour_plane_flag equals 1), a slice contains only CTUs of one color component identified by the corresponding value of colour_plane_id, and each color component array of the picture consists of slices with the same colour_plane_id. Coded slices with different values of colour_plane_id within a picture can be interleaved with each other, under the constraint that for each value of colour_plane_id, the coded slice NAL units with that value of colour_plane_id are in brick-scan order with respect to the first CTU of each coded slice NAL unit by increasing CTU addresses.
[0106] If separate_colour_plane_flag is equal to 0, each CTU of the picture is contained in exactly one slice. If separate_colour_plane_flag is equal to 1, each CTU of a color component is contained in exactly one slice (e.g., information for each CTU of the picture is present in exactly three slices, and these three slices have different values of color_plane_id).
[0107] 2.4. Wavefront with 1-CTU delay
[0108] In VVC, a single CTU delay wavefront (WPP) parallel processing is used instead of two CTU delays as in the HEVC design. While WPP processing allows for multiple parallel processing with limited coding loss, the delays of two CTUs can hinder parallel processing capabilities. As target solutions become larger and the number of CPUs increases, we argue that the greater parallel processing capabilities achieved by leveraging the proposed single CTU delay are beneficial for reducing coding latency and fully utilizing CTU power.
[0109] 3. Example Problems with Existing Implementations
[0110] DMVR and BIO do not include the original signal during motion vector refinement, which may result in coded blocks with inaccurate motion information. Also, DMVR and BIO may use fractional motion vectors after motion refinement, while screen images usually have integer motion vectors, making the current motion information more inaccurate and worsening coding performance.
[0111] (1) The current palette is constructed by prediction from the previous one. It is reinitialized before decoding a new CTU row or a new tile only if entropy_coding_sync_enabled_flag is equal to 1. However, in practical applications, a parallel encoder that can pre-encode different CTU rows without referring to information of other CTU rows is preferable.
[0112] (2) The method for operating the predictor palette update process is fixed: inserting entries inherited from the previous predictor palette and new entries in the current palette in order. If the number of entries is still less than the size of the predictor palette, adding more entries not inherited from the previous predictor palette. Such a design does not consider the importance of different entries in the current and previous predictor palettes.
[0113] (3) Because the size of the predictor palette is fixed and some entries may never be referenced after decoding a block, the size must be updated to fill in all potentially suboptimal entries.
[0114] (4) The size of the current palette is fixed, regardless of color components, such as chroma samples, which may be less frequently used compared to luma.
[0115] 4. Exemplary Techniques and Embodiments
[0116] The details of the embodiments detailed below should be considered as examples to illustrate the general concept, and these embodiments should not be construed in a narrow sense. Furthermore, these embodiments can be combined in any way.
[0117] It should be noted that the method described below may be applied to other decoder motion information derivation techniques in addition to DMVR and BIO, which will be described later.
[0118] About the Predictive Palette 1. It is proposed to reset or reinitialize the predictor palette (eg, the entries and / or size of the predictor palette) before decoding the first block in a new video unit. a. Alternatively, the predictor palette (eg, the input and / or the size of the predictor palette) may be reset or reinitialized after decoding the last block in a video unit. b. In one example, a video unit is a sub-region such as a CTU (e.g., VPDU) / CTU / CTB / multiple CTUs / multiple CUs / CTU row / tile / brick / subpicture / view, etc. i. Alternatively, the above method may be called even if the wavefront is disabled (eg, entropy_coding_sync_enabled_flag is equal to 0). c. In one example, the video unit is a chroma CTU row. i. Alternatively, the predictor palette may be reset or reinitialized before decoding the first chroma CTB in a new chroma CTU row. ii. Alternatively, the above method is invoked when a dual tree is applied and the current partition tree is a chroma coding tree. d. In one example, the size of the predictor palette (eg, PredictorPaletteSize in the specification) is reset to 0. e. In one example, the size of the predictor palette (e.g., PredictorPaletteSize in the specification) is reset to the number of entries in the sequence palette predictor initializer (e.g., sps_num_palette_predictor_initializer_minus1+1) or the maximum number of entries allowed in the predictor palette (e.g., PaletteMaxPredictorSize). f. Initializing the predictor palette (e.g., PredictorPaletteEntries) before encoding / decoding a new sequence / picture may be used to initialize the predictor palette before encoding / decoding a new video unit. g. In one example, when entropy_coding_sync_enabled_flag is equal to 1, the predictor palette after encoding / decoding the upper CTB / CTU may be used to initialize the predictor palette before encoding / decoding the current CTB / CTU.
[0119] 2. It is proposed to disable the update of the predictor palette after encoding / decoding a certain palette-coded block. In one example, whether to update the predictor palette may depend on the decoding information of the current block. i. In one example, whether to update the predictor palette may depend on the block dimensions of the current block. 1. In one example, if the width of the current block is less than or equal to a first threshold (denoted as T1) and the height of the current block is less than or equal to a second threshold (denoted as T2), disable the update process. 2. In one example, if the block height times the current block width is less than or equal to a first threshold (denoted as T1), disable the update process. 3. In one example, if the width of the current block is greater than or equal to a first threshold (denoted as T1) and the height of the current block is greater than or equal to a second threshold (denoted as T2), disable the update process. 4. In one example, if the block height times the current block width is greater than or equal to a first threshold (denoted as T1), disable the update process. 5. In the above example, T1 / T2 may be predefined or signaled. a) In one example, T1 / T2 may be set to 4, 16, or 1024. b) In one example, T1 / T2 may depend on the color components.
[0120] 3. A shared predictor palette may be defined such that all CUs / PUs under the shared region can use the same predictor palette. In one example, a shared region may be defined for an MxN region (eg, a 16x4 or 4x16 region) with a TT partition. b. In one example, a shared region may be defined for an MxN region (eg, an 8x4 or 4x8 region) with BT partitioning. c. In one example, a shared region may be defined for an MxN region (eg, an 8x8 region) with a QT division. d. Alternatively, the shared predictor palette may be constructed once, before encoding / decoding all blocks in the shared region. e. In one example, an indication of the predicted entry in the predictor palette (eg, palette_predictor_run) may be signaled along with the first palette-encoded block in the shared region. i. Alternatively, further signaling for indication of predicted entries in the predictor palette (eg, palette_predictor_run) may be omitted for the remaining coding blocks in the shared region. f. Alternatively, one may also omit updating the predictor palette whenever after decoding / encoding a block in the shared region.
[0121] 4. A counter may be maintained for each entry in the predictor palette to indicate how often it has been used. In one example, a counter may be set to a constant K for each new entry added to the predictor palette. i. In one example, K may be set to 0. b. In one example, when encoding / decoding a palette block, if an entry is marked as reused, the corresponding counter may be incremented by a constant N. In one example, N may be set to 1.
[0122] 5. Instead of using a fixed size predictor palette, we propose to adaptively change the size of the predictor palette. In one example, a video unit (block / CU / CTU / tile / brick / subpicture) may be changed to another video unit. b. In one example, the size of the predictor palette may be updated according to the size of the current palette. i. In one example, the predictor palette size may be set to the size of the current palette after decoding / encoding the current block. ii. In one example, the predictor palette size may be set to the current palette size after decoding / encoding the current block minus or plus an integer value represented by K. 1. In one example, K may be signaled / derived on the fly. c. In one example, the size of the predictor palette may depend on the block size. Let S be the predefined size of the predictor palette for a palette-coded block. i. In one example, a palette-coded block having a size less than or equal to T may use a predictor palette having a size smaller than S. 1. In one example, the first K entries (K<=S) in the palette predictor may be used. 2. In one example, a subsampled version of the palette predictor may be used. ii. In one example, a palette-coded block having a size greater than or equal to T may use a predictor palette having a size equal to S. iii. In the above example, K and / or T may be integers and may be based on the following: 1. Visual content (e.g., screen content or natural content) 2. DPS / SPS / VPS / PPS / APS / Picture Header / Slice Header / Tile Group Header / LCU (Largest Coding Unit) / CU (Coding Unit) / LCU Row / LCU Group / TU / PU Block / Video Coding Unit 3. Location of CU / PU / TU / Block / Video Coding Unit 4. Display color format (e.g., 4:2:0, 4:4:4, RGB, YUV, etc.) 5. Coding tree structure (e.g., dual tree or single tree) 6. Slice / Tile Group Type and / or Picture Type 7. Color components 8. Time layer ID 9. Standard Profiles / Levels / Tiers d. In one example, after encoding / decoding a palette block, the predictor palette may be adjusted according to the counter of the entry. i. In one example, entries with counters less than a threshold T may be discarded. ii. In one example, entries with the smallest counter values may be discarded until the size of the predictor palette is less than a threshold T. e. Alternatively, after decoding / encoding a palette-coded block, the predictor palette may be updated based only on the current palette. i. Alternatively, after decoding / encoding a palette-coded block, the predictor palette may be updated to become the current palette.
[0123] 6. The entries of the current palette and / or predictor palette before encoding / decoding the current block may be rearranged / modified before being used to update the predictor palette. In one example, reordering may be applied according to the decoding information / reconstruction of the current sample. b. In one example, reordering may be applied according to the counter value of the entry. c. Alternatively, one may count how many times a sample / pixel (within the current palette and / or outside the current palette) occurs. Alternatively, a sample / pixel with a larger counter (eg, occurring more frequently) may be placed before another with a smaller counter.
[0124] 7. The information in the escaped samples may be utilized to update the predictor palette. a. Alternatively, further updating the predictor palette with the escaped information may be called conditionally. i. In one example, if the predictor palette is not full after inserting the current palette, the escaped sample / pixel information may be added to the predictor palette.
[0125] 8. Predictor palette update / initialization / resetting may depend on color components. In one example, the rules for determining whether to update the predictor palette may depend on the color component, such as luma or chroma.
[0126] 9. A set of multiple predictor palettes may be maintained and / or updated. In one example, one predictor palette may contain information for one or all color components. b. In one example, one predictor palette may have information for two color components (eg, Cb and Cr). c. In one example, at least one global palette and at least one local palette may be maintained. i. In one example, the predictor palette may be updated according to the global palette and the local palette. d. In one example, the palettes associated with the last K palette-coded blocks (in encoding / decoding order) may be maintained. e. In one example, palettes for luma and chroma components may be predicted from different predictor palettes, for example, having different indices for a set of multiple predictor palettes. f. Alternatively, Barrett 1 may also be applied to the set of predictor palettes. g. Alternatively, the index of the predictor palette in the set of predictor palettes may also be signaled for a CU / PU / CTU / CTB / sub-region of a CTU or CTB.
[0127] Palette / Predictor Palette Size 10. The size of the palette may be changed from one visual unit to another. In one example, it may be changed from one video unit (block / CU / CTU / tile / brick / subpicture) to another video unit. b. In one example, it may rely on decoded information of the current block and / or its neighboring (adjacent or non-adjacent) blocks.
[0128] 11. The size of the palette and / or predictor palette may depend on the block dimensions and / or quantization parameters.
[0129] 12. The size of the palette and / or predictor palette (or the number of entries in the palette and / or predictor palette) may be different for different color components. In one example, an indication of the size of the palette and / or predictor palette for the luma and chroma components may be explicitly or implicitly signaled. b. In one example, an indication of the size of the palette and / or predictor palette per color component may be signaled explicitly or implicitly. c. In one example, whether to signal an indication of multiple sizes may depend on the use of dual tree and / or slice / picture types.
[0130] Palette Signal Notification 13. A conforming bitstream shall have the number of directly signaled entries for the current block (e.g., num_signaled_palette_entries) in the closed range [0, palette_max_size-NumPredictedPaletteEntries], inclusive of 0 and palette_max_size-NumPredictedPaletteEntries. How a.num_signaled_palette_entries is binarized may depend on the range allowed. i.In addition, EG-0 th Alternatively, truncated binary encoding may be used. How b.num_signaled_palette_entries is binarized may depend on the decoding information (eg, block size).
[0131] For a wavefront with 1-CTU 14. Upon finishing parsing a CTU syntax (e.g., in Section 7.3.8.2 of VVC), it is proposed to reinitialize the predictor palette (e.g., entries and / or size) if entropy_coding_sync_enabled_flag is equal to 1 and the current CTB is the first in a row of a new CTU or the current CTB is not in the same brick as its previous CTB. a. Alternatively, after finishing encoding / decoding the upper CTU, PredictorPaletteSizeWpp and PredictorPaletteEntriesWpp are further maintained by recording the updated predictor palette size and entries. i. Alternatively, PredictorPaletteSizeWpp and PredictorPaletteEntriesWpp may be used to encode / decode the current block in the current CTU. b. In one example, when parsing the CTU syntax in Section 7.3.8.2 is completed, if entropy_coding_sync_enabled_flag is equal to 1, and CtbAddrInRs%PicWidthInCtbsY is equal to 0, or BrickId[CtbAddrInBs] is not equal to BrickId[CtbAddrRsToBs[CtbAddrInRs-1], the storage process for the context variables as specified in Section 9.3.2.3 is invoked with the output being TableStateIdx0Wpp, TableStateIdx1Wpp, TableMpsValWpp, PredictorPaletteSizeWpp, and PredictorPaletteEntriesWpp when Palette_mode_enabled_flag is 1.
[0132] general 15. Whether and / or how to apply the above methods may be based on: a. Video content (e.g., screen content or nature content) b. DPS / SPS / VPS / PPS / APS / Picture Header / Slice Header / Tile Group Header / LCU (Largest Coding Unit) / CU (Coding Unit) / LCU Row / LCU Group / TU / PU Block / Video Coding Unit c. CU / PU / TU / Block / Video Coding Unit Location d. Decoding information for the current block and / or its neighboring blocks i. Block dimensions / block shapes of the current block and / or its neighboring blocks e. Display color format (e.g., 4:2:0, 4:4:4, RGB, YUV, etc.) f. Coding tree structure (e.g., dual tree or single tree) g. Slice / Tile Group Type and / or Picture Type h. Color components (e.g., may be applied only to the luma and / or chroma components). i. Time layer ID j. Standard Profile / Level / Tier
[0133] 5. Additional Embodiments
[0134] In the following embodiments, newly added text is shown in bold and underlined italics, while deleted text is marked with [[]].
[0135] 5.1. Embodiment #1 9.3.1 General This process is invoked when parsing a syntax element that has the descriptor ae(v) in Sections 7.3.8.1 to 7.3.8.12. The input to this process is the value of the syntax element and a request for the value of the previous syntax element that was parsed. The output of this process is the value of the syntax element. The initialization process specified in Section 9.3.2 is invoked at the beginning of one or more of the following parsing operations: 1. The slice segment data syntax specified in Section 7.3.8.1; 2. The CTU syntax and CTU specified in Section 7.3.8.2 are brick The first CTU in [[tile]], 3. The CTU syntax specified in Section 7.3.8.2, [[entropy_coding_sync_enabled_flag equals 1]], and the associated luminance CTB, brick This is the first luminance CTB in the CTU row of the [[tile]].
[0136] Parsing of a syntax element proceeds as follows. If cabac_bypass_alignment_enabled_flag is equal to 1, the requirement on the value of the syntax element is for the syntax element coeff_abs_level_remaining[], or coeff_sign_flag[], and escapeDataPresent is equal to 1, then alignment processing before aligned bypass decoding is invoked as specified in Section 9.3.4.3.6. For each required value of the syntax element, a binarization is derived as specified in Section 9.3.3. The binarization of the syntax elements and the sequence of parsed bins determines the flow of the decoding process, as described in Section 9.3.4. If a syntax element value request is processed for the syntax element pcm_flag and the decoded value of pcm_flag is equal to 1, then the decoding engine is initialized as specified in Section 9.3.2.6 after decoding any pcm_alignment_zero_bit, all pcm_sample_luma and pcm_sample_chroma data.
[0137] Storage for context variables is applied as follows: - After completing the parsing of the CTU syntax in section 7.3.8.2, if entropy_coding_sync_enabled_flag is equal to 1 and CtbAddrInRs%PicWidthInCtbsY is equal to 1, or both CtbAddrInRs is greater than 1 and TileId[CtbAddrInTs] is not equal to TileId[CtbAddrRsToTs[CtbAddrInRs-2]], the storage process for context variables, Rice parameter initialization state, and palette predictor variables as specified in section 9.3.2.4 is invoked with output TableStateIdxWpp, TableMpsValWpp, TableStatCoeffWpp if persistent_rice_adaptation_enabled_flag is equal to 1, and PredictorPaletteSizeWpp and PredictorPaletteEntriesWpp if palette_mode_enabled_flag is equal to 1. - Finish parsing the general slice segment data syntax in section 7.3.8.1, and if dependent_slice_segments_enabled_flag is equal to 1 and end_of_slice_segment_flag is equal to 1, then the storage process for the context variables, Rice parameter initialization state, and palette predictor variables as specified in section 9.3.2.4 is invoked with output TableStateIdxDs, TableMpsValDs, TableStatCoeffDs if persistent_rice_adaptation_enabled_flag is equal to 1, and PredictorPaletteSizeDs and PredictorPaletteEntriesDs if palette_mode_enabled_flag is equal to 1.
[0138] 5.2. Embodiment #2 9.3 CABAC Parsing of Slice Data 9.3.1 General The input to this process is the value of the syntax element and a request for the value of the previous syntax element that was parsed. The output of this process is the value of the syntax element. The initialization process specified in Section 9.3.2 is invoked at the beginning of parsing the CTU syntax specified in Section 7.3.8.2, and one or more of the following conditions are true: -CTU is the first CTU in Brick. The value of -entropy_coding_sync_enabled_flag is equal to 1 and the CTU is the first CTU in a CTU row of the brick.
[0139] Parsing of a syntax element proceeds as follows. For each required value of the syntax element, a binarization is derived as specified in subclause 9.3.3. The sequence of binarized and parsed bins for the syntax elements determines the flow of the decoding process as described in subclause 9.3.4.
[0140] The context variable storage process is applied as follows: - If parsing of the CTU syntax in Section 7.3.8.2 is terminated and entropy_coding_sync_enabled_flag is equal to 1 and CtbAddrInRs%PicWidthInCtbsY is equal to 0 or BrickId[CtbAddrInBs] is not equal to BrickId[CtbAddrRsToBs[CtbAddrInRs-1]], storage for the context variables TableStateIdx0Wpp, TableStateIdx1Wpp and TableMpsValWpp is performed as specified in Section 9.3.2.3. , PredictorPaletteSizeWpp and PredictorPaletteEntriesWpp when Palette_mode_enabled_flag is equal to 1 is called with the output
[0141] 9.3.2 Initialization process 9.3.2.1 General The output of this process is the initialized CABAC internal variables. The context variables of the arithmetic decoding engine are initialized as follows: --If the CTU is the first CTU in the brick, the context variable initialization process is called as specified in Section 9.3.2.2, and the variable PredictorPaletteSize[0 / 1 / 2] is initialized to 0. --Otherwise, if entropy_coding_sync_enabled_flag is equal to 1 and CtbAddrInRs%PicWidthInCtbsY is equal to 0 or BrickId[CtbAddrInBs] is not equal to BrickId[CtbAddrRsToBs[CtbAddrInRs-1], then the following applies: --Using the position (x0, y0) of the top left luminance sample of the current CTB, the position (xNbT, yNbT) of the top left luminance sample of the spatial neighboring block T (Figure 9-2) is derived as follows: -(xNbT,yNbT)=(x0,y0-CtbSizeY) (9-3) --The derivation process for neighborhood block availability specified in Section 6.4.4 is invoked with inputs location (xCurr,yCurr) equal to (x0,y0), neighborhood location (xNbY,yNbY) equal to (xNbT,yNbT), checkPredModeY equal to FALSE, and cIdx equal to 0, and the output is assigned to availableFlagT. --Context variable synchronization processing is called as follows: If --availableFlagT is equal to 1, the synchronization process for context variables specified in section 9.3.2.4 is invoked with TableStateIdx0Wpp, TableStateIdx1Wpp, and TableMpsValWpp as input, and the variable PredictorPaletTeSize is initialized to 0. -- Otherwise, the initialization process for context variables is invoked as specified in section 9.3.2.2, and the variable PredictorPaletTeSize is initialized to 0. -- Otherwise, the initialization process for context variables is invoked as specified in section 9.3.2.2, and the variable PredictorPaletTeSize is initialized to 0. As specified in the -9.3.2.5 dependent clause, the decoding engine records the decoding engine registers ivlCurrRange and ivlOffset, both of which have 16-bit register precision, which are initialized by calling the initialization procedure for the arithmetic decoding engine.
[0142] 9.3.2.3 Remembering Context Variables The inputs to this process are: - CABAC context variables indexed by ctxTable and ctxIdx. The output of this process is: - The variables tableStateSync0, tableStateSync1, and tableMPSSync, which contain the values of the variables pStateIdx0, pStateIdx1, and valMps used in the initialization process of the context variables assigned to all syntax elements in Sections 7.3.8.1 to 7.3.8.11, except for end_of_brick_one_bit and end_of_subset_one_bit. - PredictorPaletteSizeWpp and PredictorPaletteEntriesWpp when palette_mode_enabled_flag is equal to 1 For each context variable, initialize the corresponding entries pStateIdx0, pStateIdx1, and valMps in the tables tableStateSync0, tableStateSync1, and tableMPSSync to the corresponding pStateIdx0, pStateIdx1, and valMps. PredictorPaletteSizeWpp is set to 0 and PredictorPaletteEntriesWpp is set to empty. Alternatively, the following can be applied: PredictorPaletteSizeWpp and PredictorPaletteEntriesWpp are set to the corresponding PredictorPaletteSize and Predictor palette entries, respectively.
[0143] 5.3.Embodiment 3
[0144] [Table 4]
[0145] Alternatively, in the above table PredictorPaletteSize may be set to a fixed value or another integer value such as the predictor palette size.
[0146] 6. Exemplary Implementations of the Disclosed Technology
[0147] FIG. 9 is a block diagram of a video processing device 900. The device 900 may be used to implement one or more of the methods described herein. The device 900 may be implemented by a smartphone, a tablet, a computer, an Internet of Things (IoT) receiver, etc. The device 900 may include one or more processors 902, one or more memories 904, and video processing hardware 906. The one or more processors 902 may be configured to implement one or more methods described herein. The memory(s) 904 may be used to store data and code used to implement the methods and techniques described herein. The video processing hardware 906 may be used to implement some of the techniques described herein in hardware circuitry, some or all of which may be part of the processor 902 (e.g., a graphics processing unit core GPU or other signal processing circuitry).
[0148] As used herein, the term "video processing" can refer to video encoding, video decoding, video compression, or video decompression. For example, a video compression algorithm may be applied during the conversion of a pixel representation of video to a corresponding bitstream representation, or vice versa. The bitstream representation of a current video block may correspond to bits spread to the same or different locations in the bitstream, e.g., as specified by a syntax. For example, one macroblock may be coded in terms of transformed and coded error residual values and using bits in a header and other fields in the bitstream.
[0149] It will be appreciated that the disclosed methods and techniques will be beneficial in embodiments of video encoders and / or decoders that are integrated into video processing devices such as smartphones, laptops, desktop computers, and similar appliances, by enabling the use of the techniques disclosed herein.
[0150] 10 is a block diagram illustrating an example video processing system 1000 in which various techniques disclosed herein may be implemented. Various implementations may include some or all of the components of system 1000. System 1000 may include an input 1002 for receiving video content. The video content may be received in a raw or uncompressed format, e.g., 8- or 10-bit multi-component pixel values, or in a compressed or encoded format. Input 1002 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.
[0151] System 1000 may include an encoding component 1004 capable of implementing various encoding or coding methods described herein. The encoding component 1004 may reduce the average bit rate of the video from input 1002 to the output of encoding component 1004, generating a coded representation of the video. Accordingly, this encoding technique may be referred to as a video compression or video transcoding technique. The output of encoding component 1004 may be stored or transmitted via a connected communication, as represented by component 1006. The bitstream (or coded) representation of the video received at input 1002, stored, or communicated, may be used by component 1008 to generate pixel values or displayable video that are transmitted to display interface 1010. The process of generating user-viewable video from the bitstream representation is sometimes referred to as video unpacking. Furthermore, while certain video processing operations are referred to as “encoding” operations or tools, it will be understood that the encoding tools or operations are performed by an encoder and corresponding decoding tools or operations that reverse the results of the decoding are performed by a decoder.
[0152] Examples of peripheral bus interface units or display interface units may include USB (Universal Serial Bus) or HDMI (High Definition Multimedia Interface), or DisplayPort, etc. Examples of storage interfaces include SATA (Serial Advanced Technology Interface), PCI, IDE interfaces, etc. The techniques described herein may be implemented in various electronic devices such as mobile phones, laptops, smartphones, or other devices capable of digital data processing and / or video display.
[0153] 11 is a flow chart illustrating an example of a method 1100 of video processing. The method 1100 includes, at 1110, converting between a video block in a video unit and a coded representation of the video block using a palette mode, wherein a predictor palette is used to predict current palette information of the video block during the conversion, and further wherein the predictor palette is selectively reset prior to converting between the video block and a bitstream representation of the video block.
[0154] Some embodiments can be described using the following paragraph-based format.
[0155] 1. A method of image processing, comprising: The method includes using a palette mode to perform a conversion between a video block in a video unit and a coded representation of the video block, wherein a predictor palette is used to predict current palette information of the video block during the conversion, and further wherein the predictor palette is selectively reset before the conversion between the video block and a bitstream representation of the video block.
[0156] 2. The method of item 1, wherein the video unit includes one or more coding tree units, one or more coding tree blocks, a sub-region of a coding tree unit or coding tree block, or a row / tile / brick / sub-picture / view of a coding tree block of a coding tree unit.
[0157] 3. The method according to any of items 1 to 2, wherein delay wavefront parallelism is disabled during the transformation.
[0158] 4. The method according to item 3, wherein entropy_coding_sync_enabled_flag is set equal to 0.
[0159] 5. The method according to item 1, wherein the video unit is a row of a chroma coding tree unit.
[0160] 6. The method described in item 5, in which the predictor palette is reset before decoding the first CTB (Chroma Coding Tree Block) in a new chroma CTU row.
[0161] 7. The method according to item 5, wherein the predictor palette is reset when a dual coding tree is applied and the current partition of the dual coding tree is a chroma coding tree unit.
[0162] 8. The method of item 1, in which the size of the predictor palette is reset to zero.
[0163] 9. The method of item 1, wherein the size of the predictor palette is reset to the number of entries in the sequence palette predictor initializer or the maximum number of allowed entries.
[0164] 10. The method of item 9, wherein a sequence palette predictor initializer is used to initialize a palette predictor before it is applied to a video unit.
[0165] 11. The method of item 1, wherein if entropy_coding_sync_enabled_flag is set equal to 1, a palette predictor applied to a previous video block is reinitialized before being applied to a video unit.
[0166] 12. The method of item 1, wherein updating the predictor palette based on coding information associated with the video unit is disabled.
[0167] 13. The method of claim 12, wherein the encoding information includes dimensions of the video unit.
[0168] 14. The method of item 13, wherein updating the predictor palette is disabled based on dimensions of a video unit that achieves one or more threshold conditions.
[0169] 15. The method of item 14, wherein one or more threshold conditions are predefined.
[0170] 16. The method of clause 14, wherein one or more threshold conditions are signaled explicitly or implicitly in the coded representation of the video unit.
[0171] 17. A method of image processing, comprising: A method comprising: performing a transformation between a video block in a video unit and a coded representation of the video block using a palette mode; during the transformation, a predictor palette is used to predict current palette information of the video block; and further, if multiple coding units of the video unit have a common shared region, the predictor palette is a shared predictor palette.
[0172] 18. The method according to item 17, wherein the shared region is associated with either a TT split, a BT split, or a QT split.
[0173] 19. The method of item 17, wherein a shared predictor palette is constructed before being applied to multiple coding units.
[0174] 20. The method of item 17, wherein an indication of use of a shared predictor palette is signaled explicitly or implicitly in the coded representation in association with the first palette coding unit of the shared region.
[0175] 21. The method according to item 17, further comprising: 11. The method of claim 10, wherein the predictor palette is a shared predictor palette.
[0176] 22. A method of image processing, comprising: A method comprising: performing a transformation between a video block in a video unit and a coded representation of the video block using a palette mode; during the transformation, a predictor palette is used to predict current palette information of the video block; and further, the size of the predictor palette is adaptively changed according to one or more conditions.
[0177] 23. The method of claim 22, wherein the one or more conditions are associated with at least the size of the previous palette information, the dimensions of the video unit, the content of the video unit, the color format of the video unit, the color components of the video unit, the coding tree structure of the video block, the relative position of the video block in the coded representation, the temporal layer ID of the video block, the slice / tile group type and / or picture type of the video block, or the profile / level / hierarchy of the video block.
[0178] 24. A method of image processing, comprising: The method includes using a palette mode to perform a conversion between a video block in a video unit and a coded representation of the video block, wherein during the conversion, a predictor palette is used to predict current palette information for the video block, and further, the predictor palette is updated based on the size or number of entries in the predictor palette.
[0179] 25. The method of item 24, wherein the size of the predictor palette is updated from the previous video block to the current video block.
[0180] 26. The method of item 24, wherein the size of the predictor palette is signaled implicitly or explicitly in the coded representation.
[0181] 27. The method of item 24, wherein the size of the predictor palette depends on the dimensions of the video block, the quantization parameter of the video block, or one or more color components of the video block.
[0182] 28. A video processing method comprising: A method including performing a transformation between a video block in a video unit and a coded representation of the video block using a palette mode, wherein during the transformation a predictor palette is used to predict current palette information of the video block, and further wherein entries of the predictor palette are rearranged or modified.
[0183] 29. The method according to item 28, wherein if entropy_coding_sync_enabled_flag is equal to 1, the entries of the predictor palette are rearranged or modified.
[0184] 30. The method of item 28, wherein the entries of the predictor palette are rearranged or modified when the end of the coding tree unit syntax is encountered.
[0185] 31. The method of item 28, wherein if the current CTB is the first CTB in a new CTU row or the current CTB is not in the same brick as the previous CTB, the entries in the predictor palette are rearranged or modified.
[0186] 32. A method of image processing, comprising: 10. A method comprising: performing a transformation between a video block in a video unit and a coded representation of the video block using a palette mode; during the transformation, a predictor palette is used to predict current palette information of the video block; and further, the use of the predictor palette is indicated by maintaining a counter that tracks the number of times the predictor palette is used.
[0187] 33. A method according to any of the preceding items, wherein enabling or disabling a predictor palette is associated with at least one of the size of the previous palette information, the dimensions of the video block, the contents of the video block, the color format of the video block, the color components of the video block, the coding tree structure of the video block, the relative position of the video block in the coded representation, the temporal layer ID of the video block, the slice / tile group type and / or picture type of the video block, or the profile / level / hierarchy of the video block.
[0188] 34. The method according to any of the preceding items, wherein two or more predictor palettes are used during the transformation.
[0189] 35. A video decoding device comprising a processor configured to implement the methods described in one or more of items 1 to 34.
[0190] 36. A video encoding device comprising a processor configured to implement the methods described in one or more of items 1 to 34.
[0191] 37. A computer program product having computer code stored therein, the code being executed by a processor, causing the processor to implement the method according to any one of items 1 to 34.
[0192] 38. A method, apparatus or system as described herein.
[0193] 12 is a flowchart illustrating a method 1200 of video processing in accordance with the present technology. Method 1200 includes, at step 1210, performing a transformation between a current block of video and a coded representation of the video using a palette mode that uses a palette of representative sample values to encode the current block. During the transformation, a predictor palette is used to predict the palette of representative sample values, and updates of the predictor palette are disabled after transformation of the current block according to rules based on characteristics of the current block.
[0194] In some embodiments, the characteristics of the current block include coding information associated with the current block. In some embodiments, the characteristics of the current block include dimensions of the current block. In some embodiments, the rules specify that predictor palette updates are disabled if the width of the current block is less than or equal to a first threshold and the height of the current block is less than or equal to a second threshold. In some embodiments, the rules specify that predictor palette updates are disabled if the height of the current block is less than or equal to the first threshold. In some embodiments, the rules specify that predictor palette updates are disabled if the width of the current block is greater than or equal to the first threshold and the height of the current block is greater than or equal to a second threshold. In some embodiments, the rules specify that predictor palette updates are disabled if the height of the current block is greater than or equal to the first threshold.
[0195] In some embodiments, the first threshold or the second threshold is predefined or signaled in the coded representation. In some embodiments, the first threshold is 4, 16, or 1024. In some embodiments, the second threshold is 4, 16, or 1024. In some embodiments, the first threshold or the second threshold is based on the color components of the current block.
[0196] 13 is a flowchart illustrating a method 1300 of video processing in accordance with the present technology. The method 1300 includes, at step 1310, performing a conversion between a current block of video and a coded representation of the video using a palette mode that uses a palette of representative sample values to code the current block. During the conversion, a predictor palette is used to predict the palette of representative sample values, and it is determined whether to change the predictor palette according to the color components of the current block.
[0197] In some embodiments, the change to the predictor palette includes updating, initializing, or resetting the predictor palette. In some embodiments, the color components include luma or chroma components. In some embodiments, the predictor palette includes information corresponding to color components of the current block. In some embodiments, the predictor palette includes information corresponding to all color components of the current block. In some embodiments, the predictor palette includes information corresponding to two chroma components of the current block.
[0198] 14 is a flowchart illustrating a method 1400 of video processing in accordance with the present technology. Method 1400 includes, at step 1410, performing a transformation between a current block of a video unit of a video and a coded representation of the video using a palette mode that uses a palette of representative sample values to encode the current block of the video unit. During the transformation, multiple predictor palettes are used to predict the palette of representative sample values.
[0199] In some embodiments, the predictor palette of the current block is updated according to at least a global palette and a local palette. In some embodiments, multiple predictor palettes are associated with K blocks in a video unit coded using palette mode. In some embodiments, palettes for different color components are determined according to different predictor palettes from the multiple predictor palettes. In some embodiments, the multiple predictor palettes are reset or reinitialized before transforming the first block in the video unit or after transforming the last block in a previously transformed video unit. In some embodiments, an index of a predictor palette from the multiple predictor palettes is signaled in the coded representation at a coding unit, a prediction unit, a coding tree unit, a coding tree block, a subregion of a coding tree unit, or a subregion of a coding tree block.
[0200] 15 is a flowchart illustrating a method 1500 of video processing in accordance with the present technology. Method 1500 includes, at step 1510, performing a transformation between a current block of a video unit of a video and a coded representation of the video using a palette mode that uses a palette of representative sample values to encode the current block of the video unit. During the transformation, a predictor palette is used to predict the palette of representative sample values. The predictor palette is reset or reinitialized according to a rule before transforming the first block in the video unit or after transforming the last video block in the previous video unit.
[0201] In some embodiments, a video unit includes a video coding tree unit, a virtual pipeline data unit, one or more coding tree units, one or more coding tree blocks, a row of coding tree units, a tile, a brick, a subpicture, or a subregion of a view. In some embodiments, the rules specify that resetting or reinitializing the predictor palette is applicable to a video unit regardless of whether wavefront parallelism of multiple video units is enabled. In some embodiments, the video unit includes a coding tree unit row corresponding to a chroma component. In some embodiments, the first block includes the first coding tree block corresponding to a chroma component of the coding tree unit row. In some embodiments, the rules specify that resetting or reinitializing the predictor palette is applicable to a video unit when dual tree partitioning is applied and the current partition tree is a coding tree corresponding to a chroma component. In some embodiments, the size of the predictor palette is reset to 0 or reinitialized. In some embodiments, the size of the predictor palette is reset or reinitialized to the number of entries in the sequence palette predictor initializer or the maximum number of entries allowed in the predictor palette signaled in the coding representation.
[0202] In some embodiments, the predictor palette is further reset or reinitialized before transforming a new video unit. In some embodiments, when wavefront parallelism is enabled for multiple video units, the predictor palette used for transforming the current coding tree block or current coding tree unit is determined based on coding tree blocks or coding tree units that have already been transformed.
[0203] 16 is a flowchart illustrating a method 1600 of video processing in accordance with the present technology. The method 1600 includes, at step 1610, performing a conversion between a video unit of a video and a coded representation of the video using a palette mode. The video unit includes a plurality of blocks. During the conversion, a shared predictor palette is used by all of the plurality of blocks to predict a palette of representative sample values for each of the plurality of blocks in the palette mode.
[0204] In some embodiments, ternary tree partitioning is applied to the video unit, and a shared predictor palette is used for video units having dimensions of 16x4 or 4x16. In some embodiments, binary tree partitioning is applied to the video unit, and a shared predictor palette is used for video units having dimensions of 8x4 or 4x8. In some embodiments, quad tree partitioning is applied to the video unit, and a shared predictor palette is used for video units having dimensions of 8x8. In some embodiments, a shared predictor palette is constructed before transforming entire blocks in the video unit.
[0205] In some embodiments, an indication of predicted entries in the shared predictor palette is signaled in the coded representation by a first coded block of the plurality of blocks of the region. In some embodiments, an indication of predicted entries in the shared predictor palette is omitted in the coded representation for the remainder of the plurality of blocks of the region. In some embodiments, after transformation of one of the plurality of blocks of the region, updating of the shared predictor palette is omitted.
[0206] 17 is a flowchart illustrating a method 1700 of video processing in accordance with the present technology. The method 1700 includes, at step 1710, performing a conversion between a current block of video and a coded representation of the video using a palette mode in which a palette of representative sample values is used to code the current block. During the conversion, a predictor palette is used to predict the palette of representative sample values, and a counter is maintained for each entry of the predictor palette that indicates how often the corresponding entry is used.
[0207] In some embodiments, a counter is set to K for each new entry to be added to the predictor palette, where K is an integer. In some embodiments, K=0. In some embodiments, each time the corresponding entry is used again during the transformation of the current block, the counter is incremented by N, where N is a positive integer. In some embodiments, N=1.
[0208] In some embodiments, before the predictor palette is used in the transform, the entries of the predictor palette are rearranged according to a rule. In some embodiments, the rule provides for rearranging the entries of the predictor palette according to coding information of the current sample. In some embodiments, the rule provides for rearranging the entries of the predictor palette according to a counter of each corresponding entry in the predictor palette.
[0209] In some embodiments, the second counter is used to indicate the frequency of occurrence of the sample. In some embodiments, a first sample with a higher frequency of occurrence is placed before a second sample with a lower frequency of occurrence in the predictor palette. In some embodiments, the predictor palette is updated using escaped samples in the current block according to a rule. In some embodiments, the rule specifies that the predictor palette is updated with escaped samples if a condition is met. In some embodiments, the condition is met if the predictor palette is not full after inserting the current block.
[0210] 18 is a flowchart illustrating a method 1800 of video processing in accordance with the present technology. Method 1800 includes, at step 1810, performing a conversion between a current block of video and a coded representation of the video using a palette mode in which a palette of representative sample values will be used to encode the current block to predict a palette of representative sample values for the current block. The number of palette entries signaled in the coded representation is in the range [0, maximum allowed size of palette - number of palette entries derived during conversion], which is a closed range that includes 0 and maximum allowed size of palette - number of palette entries derived during conversion.
[0211] In some embodiments, the number of palette entries signaled in the encoded representation is binarized based on a range. In some embodiments, the number of entries signaled in the encoded representation is binarized using a truncated binarization encoding process. In some embodiments, the number of entries signaled in the encoded representation is binarized based on features of the current block. In some embodiments, the features include dimensions of the current block.
[0212] 19 is a flowchart illustrating a method 1900 of video processing in accordance with the present technology. Method 1900 includes, at step 1910, performing a transformation between a current block of a video unit of a video and a coded representation of the video using a palette mode that uses a palette of representative sample values to encode the current block of the video unit. During the transformation, a predictor palette is used to predict the palette of representative sample values, and the size of the predictor palette is adaptively adjusted according to a rule.
[0213] In some embodiments, the size of the predictor palette in dual-tree partitioning is different from that in single-tree partitioning. In some embodiments, a video unit includes a block, a coding unit, a coding tree unit, a tile, a brick, or a subpicture. In some embodiments, the rules specify that the predictor palette has a first size for a video unit and a different second size for the transformation of a subsequent video unit. In some embodiments, the rules specify adjusting the size of the predictor palette according to the size of the current palette for the transform. In some embodiments, the size of the predictor palette is equal to the size of the current palette determined after transforming the current block. In some embodiments, the size of the predictor palette is equal to the size of the current palette determined after transforming the current block plus or minus an offset, where the offset is an integer. In some embodiments, the offset is signaled in the coded representation. In some embodiments, the offset is derived during the transform.
[0214] In some embodiments, the rule specifies a size of a predefined predictor palette for the current block as S, and the rule further specifies adjusting the size of the predictor palette according to the size of the current block. In some embodiments, if the size of the current block is less than or equal to T, the size of the predictor palette is adjusted to be smaller than the predefined size S, where T and S are integers. In some embodiments, the first K entries in the predictor palette are used for the transform, where K is an integer and K≦S. In some embodiments, a subsampled predictor palette having a size smaller than the predefined size S is used for the transform. In some embodiments, if the size of the current block is greater than or equal to T, the size of the predictor palette is adjusted to the predefined size S.
[0215] In some embodiments, K or T is determined based on video characteristics. In some embodiments, the video characteristics include video content. In some embodiments, the video characteristics include information signaled in the coded representation in a decoder parameter set, a slice 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, an LCU sequence, an LCU group, a transform unit, a picture unit, or a video coding unit. In some embodiments, the video characteristics include a position of a coding unit, a picture unit, a transform unit, a block, or a video coding unit in the video. In some embodiments, the video characteristics include an indication of a color format of the video. In some embodiments, the video characteristics include a coding tree structure applicable to the video. In some embodiments, the video characteristics include a slice type, a tile group type, or a picture type of the video. In some embodiments, the video characteristics include color components of the video. In some embodiments, the video characteristics include a temporal layer identifier for the video. In some embodiments, the video characteristics include a profile, level, or tier of a video standard.
[0216] In some embodiments, the rules provide for adjusting the size of the predictor palette according to one or more counters of each entry in the predictor palette. In some embodiments, entries with counters less than a threshold T are discarded during the transformation, where T is an integer. In some embodiments, entries with the smallest counters are discarded until the size of the predictor palette is less than a threshold T, where T is an integer.
[0217] In some embodiments, the rules provide for updating the predictor palette based solely on the current palette used in the transform, hi some embodiments, the predictor palette is updated to become the current palette for the next block after the transform.
[0218] 20 is a flowchart illustrating a method 2000 of video processing in accordance with the present technology. Method 2000 includes, at step 2010, performing a conversion between a current block of a video unit of a video and a coded representation of the video using a palette mode that uses a palette of representative sample values to encode the current block of the video unit. During the conversion, a predictor palette is used to predict the palette of representative sample values, and the size of the palette of representative samples or predictor palette is determined according to rules that allow for size variation between video units of the video.
[0219] In some embodiments, the video unit comprises a block, a coding unit, a coding tree unit, a tile, a brick, or a subpicture. In some embodiments, the method further determines a size of the palette of representative samples or a predictor palette based on features of the current block or neighboring blocks of the current block. In some embodiments, the features include dimensions of the current block or neighboring blocks. In some embodiments, the features include at least a quantization parameter of the current block or neighboring blocks. In some embodiments, the features include color components of the current block or neighboring blocks.
[0220] In some embodiments, different sizes of the palette of representative samples or predictor palette are used for different color components. In some embodiments, the sizes of the palette of representative samples or predictor palette for the luma component and the chroma component are indicated in the coded representation. In some embodiments, the size of the palette of representative samples or predictor palette for each color component is indicated in the coded representation. In some embodiments, the signaling of different sizes in the coded representation is based on using a dual tree partition, slice type, or picture type for the transform.
[0221] 21 is a flowchart illustrating a method 2100 of video processing in accordance with the present technology. Method 2100 includes, at step 2110, performing a conversion between a current block of a video unit of a video and a coded representation of the video using a palette mode that uses a palette of representative sample values to encode the current block of the video unit. During the conversion, a predictor palette is used to predict the palette of representative sample values. The predictor palette is reinitialized when a condition is met; the condition is met when the video unit is the first video unit in a video unit row and a syntax element is included in the coded representation that indicates enabling wavefront parallelism for the video unit.
[0222] In some embodiments, the video unit includes a coding tree unit or a coding tree block. In some embodiments, the condition is met if the current block and the previous block are not in the same brick. In some embodiments, after transforming the video unit, at least one syntax element is maintained, recording the size of the predictor palette and / or the number of entries in the predictor palette. In some embodiments, the at least one syntax element is used to transform the current block.
[0223] In some embodiments, the video context variables storage operation is invoked if (1) the current block is in the first column of the picture, or (2) the current block and the previous block are not in the same brick. In some embodiments, the output of the storage operation includes at least the size of the predictor palette or the number of entries in the predictor palette.
[0224] In some embodiments, the applicability of one or more of the above methods is based on video characteristics. In some embodiments, the video characteristics include video content. In some embodiments, the video characteristics include information signaled in a coded representation in a decoder parameter set, a slice 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, an LCU sequence, an LCU group, a transform unit, a picture unit, or a video coding unit. In some embodiments, the video characteristics include a position of a coding unit, a picture unit, a transform unit, a block, or a video coding unit in the video. In some embodiments, the video characteristics include a characteristic of a current block or a neighboring block of the current block. In some embodiments, the characteristic of a current block or a neighboring block of the current block includes dimensions of the current block or dimensions of neighboring blocks of the current block. In some embodiments, the video characteristics include an indication of a color format of the video. In some embodiments, the video characteristics include a coding tree structure applicable to the video. In some embodiments, the video characteristics include a slice type, a tile group type, or a picture type of the video. In some embodiments, the video characteristics include a color component of the video. In some embodiments, the video characteristics include a temporal layer identifier for the video. In some embodiments, the video characteristics include a profile, level, or tier of a video standard.
[0225] In some embodiments, the transforming comprises encoding the video into a coded representation, hi some embodiments, the transforming comprises decoding the coded representation to generate pixel values for the video.
[0226] Some embodiments of the disclosed technology include determining or deciding to enable a video processing tool or mode. In one example, when a video processing tool or mode is enabled, an encoder uses or implements the tool or mode when processing blocks of video, but does not necessarily modify the resulting bitstream based on the use of the tool or mode. That is, the conversion from blocks of video to a bitstream representation of video uses the video processing tool or mode when the video processing tool or mode is enabled based on the decision or determination. In another example, when a video processing tool or mode is enabled, a decoder processes the bitstream knowing that the bitstream has been modified based on the video processing tool or mode. That is, the conversion from the bitstream representation of video to blocks of video uses the video processing tool or mode enabled based on the decision or determination.
[0227] Some embodiments of the disclosed techniques include deciding or determining to disable a video processing tool or mode. In one example, when a video processing tool or mode is disabled, an encoder does not use the tool or mode when converting blocks of video into a bitstream representation of the video. In another example, when a video processing tool or mode is disabled, a decoder processes the bitstream knowing that the bitstream has not been modified using the video processing tool or mode that was enabled based on the decision or determination.
[0228] Implementations of the disclosed and other solutions, examples, embodiments, modules, and functional operations described herein, including the structures disclosed herein and their structural equivalents, may be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, or in one or more combinations thereof. The disclosed and other embodiments may 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 implementation by or control of the operation of a data processing apparatus. The computer-readable medium may be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter providing a machine-readable propagated signal, or one or more combinations thereof. The term "data processing apparatus" includes all apparatuses, devices, and machines for processing data, including, for example, a programmable processor, a computer, or multiple processors or computers. In addition to hardware, this apparatus may include code that creates an execution environment for the computer program, such as code constituting processor firmware, a protocol stack, a database management system, an operating system, or one or more combinations thereof. A propagated signal is an artificially generated signal, for example, a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to an appropriate receiving device.
[0229] A computer program (also called a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, and can be deployed in any form, including as a stand-alone program or as modules, components, subroutines, or other units 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 recorded as part of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), may be stored in a single file dedicated to the program, or may be stored in multiple coordinating files (e.g., files containing one or more modules, subprograms, or portions of code). A computer program can be deployed to run on one computer located at a single site or on multiple computers distributed across multiple sites and interconnected by a communications network.
[0230] The processing and logic flows described herein 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. The processing and logic flows may also be performed by, and devices may be implemented as, special purpose logic circuitry, such as a Field Programmable Gate Array (FPGA) or an Application Specific Integrated Circuit (ASIC).
[0231] Processors suitable for executing a computer program include, for 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 will include one or more mass storage devices, e.g., magnetic, magneto-optical, or optical disks, for storing data, or be operatively coupled to receive data from or transfer data to these mass storage devices. However, a computer need not have such devices. Computer-readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media, and memory devices, including, for example, EPROMs, EEPROMs, flash storage devices, magnetic disks, e.g., internal or removable disks, magneto-optical disks, and semiconductor storage devices such as CD-ROM and DVD-ROM disks. The processor and memory may be supplemented by, or incorporated in, special-purpose logic circuitry.
[0232] While this patent specification contains many details, these should not be construed as limiting the scope of any subject matter or the scope of the claims, 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 example. Conversely, various features described in the context of a single example may also be implemented in multiple embodiments separately or in any suitable subcombination. Furthermore, while features may be described above as acting in a particular combination and initially claimed as such, one or more features from a claimed combination may, in some cases, be extracted from the combination, and the claimed combination may be directed to subcombinations or variations of the subcombination.
[0233] Similarly, although operations are shown in a particular order in the figures, this should not be understood as requiring such operations to be performed in the particular order or sequential order shown, or that all of the operations shown be performed, to achieve desired results. Also, the separation of various system components in the examples described in this patent specification should not be understood as requiring such separation in all embodiments.
[0234] Only a few implementations and examples are described; other embodiments, extensions and variations are possible based on the content described and illustrated in this patent document.
Claims
1. 1. A method of video processing, comprising: Determining whether a prediction mode is applied to a current block of a video for conversion between the current block and a bitstream of the video, in which reconstructed samples are represented by a set of representative color values, and the set of representative color values includes at least a palette predictor; constructing a current palette for the current block based on a predictor palette, the current palette being used to derive the reconstructed samples of the current block; and performing the transformation based on the current palette; determining whether to update the predictor palette based on characteristics of the current block; and the predictor palette is updated based on the current palette; the characteristics of the current block include color components, width and height; Disabling the predictor palette update process when the current block satisfies at least the following conditions: the width of the current block is less than or equal to a first threshold and the height of the current block is less than or equal to a second threshold; the updating process includes: (1) inserting an entry of the current palette; and (2) inserting an unreferenced entry of a previously coded block from the predictor palette if it is determined that the predictor palette is not full; If the current block satisfies at least the following conditions: the current block is a luminance block and the current block has a size greater than 16, updating the predictor palette is allowed, and the updating includes a reset operation; The method, wherein if the current block is a luma block having a tree type of dual tree, palettes of different sizes are constructed for the current block and a chroma block corresponding to the current block.
2. 2. The method of claim 1, wherein updating the predictor palette is disabled if the current block satisfies at least the following conditions: the current block is a chroma block; and the current block has a size of 8 or less.
3. if a dual tree is applied to the current block and the current block is a chroma block, the predictor palette includes two color components; The method of claim 1 or 2, wherein if a dual tree is applied to the current block and the current block is a luma block, the predictor palette includes one color component.
4. The method of claim 1 , wherein the conversion comprises encoding the current block into the bitstream.
5. The method of claim 1 , wherein the transforming comprises decoding the current block from the bitstream.
6. 1. An apparatus for processing video data, the apparatus having a processor and a non-transitory memory having instructions, the apparatus comprising: The instructions, when executed by the processor, cause the processor to: Determining whether a prediction mode is applied to a current block of a video for conversion between the current block and a bitstream of the video, in which reconstructed samples are represented by a set of representative color values, and the set of representative color values includes at least a palette predictor; constructing a current palette for the current block based on a predictor palette, the current palette being used to derive the reconstructed samples of the current block; and performing the transformation based on the current palette; determining whether to update the predictor palette based on characteristics of the current block; Let them do this, the predictor palette is updated based on the current palette; the characteristics of the current block include color components, width and height; Disabling the predictor palette update process when the current block satisfies at least the following conditions: the width of the current block is less than or equal to a first threshold and the height of the current block is less than or equal to a second threshold; the updating process includes: (1) inserting an entry of the current palette; and (2) inserting an unreferenced entry of a previously coded block from the predictor palette if it is determined that the predictor palette is not full; If the current block satisfies at least the following conditions: the current block is a luminance block and the current block has a size greater than 16, updating the predictor palette is allowed, and the updating includes a reset operation; When the current block is a luma block having a tree type of dual tree, palettes of different sizes are constructed for the current block and a chroma block corresponding to the current block.
7. The processor Determining whether a prediction mode is applied to a current block of a video for conversion between the current block and a bitstream of the video, in which reconstructed samples are represented by a set of representative color values, and the set of representative color values includes at least a palette predictor; constructing a current palette for the current block based on a predictor palette, the current palette being used to derive the reconstructed samples of the current block; and performing the transformation based on the current palette; determining whether to update the predictor palette based on characteristics of the current block; Let them do this, the predictor palette is updated based on the current palette; the characteristics of the current block include color components, width and height; Disabling the predictor palette update process when the current block satisfies at least the following conditions: the width of the current block is less than or equal to a first threshold and the height of the current block is less than or equal to a second threshold; the updating process includes: (1) inserting an entry of the current palette; and (2) inserting an unreferenced entry of a previously coded block from the predictor palette if it is determined that the predictor palette is not full; If the current block satisfies at least the following conditions: the current block is a luminance block and the current block has a size greater than 16, updating the predictor palette is allowed, and the updating includes a reset operation; If the current block is a luma block having a tree type of dual tree, palettes of different sizes are constructed for the current block and the chroma blocks corresponding to the current block. A non-transitory computer-readable storage medium having instructions stored thereon.
8. 1. A method for storing a video bitstream, comprising: determining, for a current block of the image, whether a prediction mode is applied to the current block, in which reconstructed samples are represented by a set of representative color values, and the set of representative color values includes at least a palette predictor; constructing a current palette for the current block based on a predictor palette, the current palette being used to derive the reconstructed samples of the current block; and generating the bitstream based on the current palette; determining whether to update the predictor palette based on characteristics of the current block; storing the bitstream on a non-transitory computer-readable recording medium; and the predictor palette is updated based on the current palette; the characteristics of the current block include color components, width and height; Disabling the predictor palette update process when the current block satisfies at least the following conditions: the width of the current block is less than or equal to a first threshold and the height of the current block is less than or equal to a second threshold; the updating process includes: (1) inserting an entry of the current palette; and (2) inserting an unreferenced entry of a previously coded block from the predictor palette if it is determined that the predictor palette is not full; If the current block satisfies at least the following conditions: the current block is a luminance block and the current block has a size greater than 16, updating the predictor palette is allowed, and the updating includes a reset operation; The method, wherein if the current block is a luma block having a tree type of dual tree, palettes of different sizes are constructed for the current block and a chroma block corresponding to the current block.
Citation Information
Patent Citations
Advanced screen content coding with improved palette table and index map coding methods
US20150381994A1