Palette size signaling in video coding

By dynamically adjusting the palette size signaling and flexibly updating the predictor palette, combined with asymmetric clipping and dual-tree encoding/decoding, the video encoding/decoding process is optimized, solving the problems of low efficiency in palette size signaling and inflexible predictor palette updates, thereby improving encoding/decoding efficiency and performance.

CN115211119BActive Publication Date: 2026-04-17DOUYIN VISION CO LTD +1
View PDF 1 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
DOUYIN VISION CO LTD
Filing Date
2020-12-31
Publication Date
2026-04-17

AI Technical Summary

Technical Problem

Existing video encoding and decoding technologies suffer from low efficiency in palette size signaling and fixed and inflexible predictor palette update methods when processing video blocks and bitstream conversions, resulting in insufficient encoding and decoding performance, especially in parallel processing and processing different color components.

Method used

By dynamically adjusting the palette size signaling during video encoding and decoding, the predictor palette is flexibly updated. Asymmetric clipping operation and dual-tree encoding and decoding structure are adopted to optimize palette index encoding and decoding, support multiple segmentation modes and parallel processing, and improve nonlinear adaptive loop filtering.

Benefits of technology

It improves the efficiency and performance of video encoding and decoding, especially in parallel processing and processing of different color components, reducing encoding and decoding latency and improving signaling efficiency and encoding and decoding quality.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN115211119B_ABST
    Figure CN115211119B_ABST
Patent Text Reader

Abstract

A method of video processing is provided that includes performing a conversion between a video block of a video and a bitstream of the video using a palette mode in which a palette of representative sample values is used to code the video block. The bitstream conforms to a format rule that specifies that the bitstream includes a first syntax element or a second syntax element that specifies a difference between a predefined value (T0) and a maximum allowed palette size.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross-references to related applications

[0002] In accordance with applicable patent law and / or the Paris Convention, this application promptly claims priority and benefit from PCT application PCT / CN2020 / 070347, filed January 3, 2020. For all legal purposes, the entire disclosure of the aforementioned application is incorporated herein by reference as a part of this application disclosure. Technical Field

[0003] This patent document relates to video encoding and decoding technologies, equipment, and systems. Background Technology

[0004] Currently, efforts are underway to improve the performance of existing video codec technologies to provide better compression ratios or to offer video encoding and decoding schemes that allow for lower complexity or parallel implementation. Industry experts have recently proposed several new video codec tools, and they are currently being tested to determine their effectiveness. Summary of the Invention

[0005] This paper describes devices, systems, and methods related to digital video encoding and decoding, specifically concerning the management of motion vectors. The described methods can be applied to existing video encoding and decoding standards (e.g., High Efficiency Video Codec (HEVC) or Multifunction Video Codec) and future video encoding and decoding standards or codecs.

[0006] In one representative aspect, the disclosed technology can be used to provide a method for video processing. This method includes performing a conversion between video blocks and a video bitstream using a palette mode, in which a palette of representative sample values ​​is used to encode and decode the video blocks, wherein the bitstream conforms to a format rule specifying that the bitstream includes a first syntax element or a second syntax element, the first or second syntax element specifying the difference between a predefined value (T0) and a maximum allowed palette size.

[0007] In one representative aspect, the disclosed technology can be used to provide a method for video processing. This method includes performing a conversion between video blocks and a video bitstream using a palette mode, in which a palette of representative sample values ​​is used to encode and decode the video blocks, wherein the bitstream conforms to a format rule specifying that the bitstream includes a first syntax element or a second syntax element, the first syntax element or the second syntax element specifying the difference between a predefined value (T0) and a maximum permissible palette predictor size.

[0008] In one representative aspect, the disclosed technology can be used to provide a method for video processing. This method includes performing a conversion between video blocks and a bitstream of video according to rules, wherein the video blocks are encoded and decoded using a palette mode, in which a palette of representative sample values ​​is used to encode and decode the video blocks, and wherein the rules specify a maximum permissible palette size and / or a maximum permissible palette predictor size greater than a non-zero integer K.

[0009] In one representative aspect, the disclosed technology can be used to provide a method for video processing. This method includes performing a conversion between video blocks and a video bitstream using a palette mode, in which a palette of representative sample values ​​is used to encode and decode the video blocks, wherein the bitstream conforms to a format rule, wherein the format rule specifies that a first syntax element indicating the maximum permissible palette predictor size is signaled before a second syntax element indicating the maximum permissible palette size.

[0010] In one representative aspect, the disclosed technology can be used to provide a method for video processing. This method includes performing a conversion between video blocks and a video bitstream using a palette pattern, in which a palette of representative sample values ​​is used to encode and decode the video blocks, wherein the bitstream conforms to format rules specifying that information related to the palette pattern is included at the video processing unit level of the video.

[0011] In one representative aspect, the disclosed technology can be used to provide a method for video processing. The method includes: performing a conversion between video blocks and a video bitstream, wherein performing the conversion includes applying an asymmetric cropping operation during filtering; and wherein the absolute values ​​of the upper and lower bounds used in the asymmetric cropping operation are different.

[0012] In another example, the above method can be implemented by a video decoder device that includes a processor.

[0013] In another example, the above method can be implemented by a video encoder device that includes a processor.

[0014] Furthermore, in a representative aspect, an apparatus for a video system is disclosed, including a processor and a non-transitory memory having instructions thereon. The instructions executed by the processor cause the processor to implement any one or more of the disclosed methods.

[0015] In addition, a computer program product stored on a non-transitory computer-readable medium is disclosed, the computer program product including program code for performing any one or more of the disclosed methods.

[0016] The above and other aspects and features of the disclosed technology are described in more detail in the accompanying drawings, description and claims. Attached Figure Description

[0017] Figure 1 An example of a block encoded and decoded in palette mode is shown.

[0018] Figure 2 An example of using a predictor palette to signal palette entries is shown.

[0019] Figure 3 Examples of horizontal and vertical traversal scans are shown.

[0020] Figure 4 An example of encoding and decoding a palette index is shown.

[0021] Figure 5 An example of an image with an 18x12 brightness CTU is shown, which is divided into 12 slices and 3 raster scan strips.

[0022] Figure 6 An example image with an 18x12 luminance CTU is shown, which is divided into 24 slices and 9 rectangular strips.

[0023] Figure 7 An example of an image is shown, divided into 4 pieces, 11 bricks, and 4 rectangular strips.

[0024] Figure 8 An example image with 28 sub-images is shown.

[0025] Figure 9 This is a block diagram of an example hardware platform used to implement the visual media decoding or visual media encoding techniques described in this document.

[0026] Figure 10 This is a block diagram of an example video processing system that can implement the disclosed technology.

[0027] Figure 11 A flowchart of an example method for video encoding and decoding is shown.

[0028] Figure 12 This is a block diagram illustrating a video encoding / decoding system according to some embodiments of the present disclosure.

[0029] Figure 13 This is a block diagram illustrating an encoder according to some embodiments of the present disclosure.

[0030] Figure 14 This is a block diagram illustrating a decoder according to some embodiments of the present disclosure.

[0031] Figure 15 A flowchart is shown for example methods of video processing based on some implementations of the disclosed technology. Detailed Implementation

[0032] 1. HEVC / H.265 video encoding and decoding

[0033] Video codec standards have primarily evolved through the development of well-known ITU-T and ISO / IEC standards. ITU-T developed H.261 and H.263, while ISO / IEC developed MPEG-1 and MPEG-4 Vision. These two organizations jointly developed the H.262 / MPEG-2 Video and H.264 / MPEG-4 Advanced Video Codec (AVC) and H.265 / HEVC standards. Starting with H.262, video codec standards have been based on a hybrid video codec architecture, utilizing temporal prediction plus transform coding. To explore future video codec technologies beyond HEVC, VCEG and MPEG jointly established the Joint Video Exploration Team (JVET) in 2015. Since then, JVET has adopted many new methods and applied them to reference software called the Joint Exploration Model (JEM). In April 2018, the Joint Video Experts Team (JVET) was established between VCEG (Q6 / 16) and ISO / IEC JTC1 SC29 / WG11 (MPEG) to work on the VVC standard, which aims to reduce the bit rate by 50% compared to HEVC.

[0034] 2.1. Palette Mode in HEVC Screen Content Codec Extension (HEVC-SCC)

[0035] 2.1.1. The concept of palette mode

[0036] The basic idea behind palette mode is that pixels in a CU are represented by a small set of representative color values. This set is called the palette. Samples outside the palette can be indicated by signaling followed by an escape symbol for (potentially quantized) component values. Such pixels are called escaped pixels. Palette mode in... Figure 1 As shown in the image. Figure 1 As shown, for each pixel with three color components (luminance and two chrominance components), an index of the color palette is established, and the block can be reconstructed based on the values ​​established in the color palette.

[0037] 2.1.2. Encoding and Decoding of Palette Entries

[0038] For the palette codec block, the following key aspects are introduced:

[0039] 1) Construct the current color palette based on the predictor palette and new entries (if any) for signaling notification of the current palette.

[0040] 2) Divide the current samples / pixels into two categories: one category (Category 1) includes samples / pixels in the current color palette, and the other category (Category 2) includes samples / pixels outside the current color palette.

[0041] a) For samples / pixels in the second category, quantization (at the encoder) is applied to the sample / pixel, and signaling is used to notify the quantized value; and dequantization is applied (at the decoder).

[0042] 2.1.2.1. Predictor Palette

[0043] For encoding and decoding of palette entries, maintain the predictor palette and update it after decoding the palette encoding / decoding block.

[0044] 2.1.2.1.1. Predictor Palette Initialization

[0045] The predictor palette is initialized at the beginning of each strip and each slice.

[0046] The maximum size of the palette and predictor palette is signaled in the SPS. In HEVC-SCC, the `palette_predictor_initializer_present_flag` is introduced in the PPS. When this flag is 1, the entries used to initialize the predictor palette are signaled in the bitstream.

[0047] Depending on the value of `palette_predictor_initializer_present_flag`, the size of the predictor palette is either reset to 0 or initialized using the predictor palette initializer entity (signaled in PPS). In HEVC-SCC, a predictor palette initializer of size 0 is enabled to allow explicit disabling of predictor palette initialization at the PPS level.

[0048] The corresponding syntax, semantics, and decoding process are defined as follows:

[0049] 7.3.2.2.3 Sequence Parameter Set Screen Content Encoding and Decoding Extended Syntax

[0050] Newly added text is displayed in bold and underlined italics. Any deleted text is marked with double brackets (e.g., [[a]] means the character "a" is deleted).

[0051]

[0052]

[0053]

[0054] 7.3.2.3.3 Image Parameter Set Screen Content Encoding / Decoding Extended Syntax

[0055] Newly added text is displayed in bold and underlined italics. Any deleted text is marked with double brackets (e.g., [[a]] means the character "a" is deleted).

[0056]

[0057]

[0058]

[0059] The palette predictor variables are initialized as follows:

[0060] – If the codec tree unit is the first codec tree unit in the chip, then the following applies:

[0061] – The initialization procedure for the palette predictor variables is invoked as specified in Clause 9.3.2.3.

[0062] Otherwise, if If CtbAddrInRs%PicWidthInCtbsY equals 0, or TileId[CtbAddrInTs] is not equal to TileId[CtbAddrRsToTs[CtbAddrInRs-1]], then the following applies:

[0063] – Use the position (x0, y0) of the top-left luminance sample of the current codec tree block to deduce the spatial neighboring block T( Figure 2 The position (xNbT, yNbT) of the upper left brightness sample point is shown below:

[0064] (xNbT,yNbT)=(x0+CtbSizeY,y0-CtbSizeY) (9-3)

[0065] – Call the availability derivation procedure for the z-scan sequence block as specified in Section 6.4.1, where the position (xCurr, yCurr) is set to equal to (x0, y0), the adjacent position (xNbY, yNbY) is set to equal to (xNbT, yNbT) as input, and the output is assigned to availableFlagT.

[0066] The synchronization process for context variables, Rice parameter initialization status, and palette predictor variables is called as follows:

[0067] – If availableFlagT equals 1, then take TableStateIdxWpp, TableMpsValWpp, TableStatCoeffWpp, PredictorPaletteSizeWpp, and TablePredictorPaletteEntriesWpp as input and call the synchronization procedure for the context variables, Rice parameter initialization state, and palette predictor variables as specified in Section 9.3.2.5.

[0068] –Otherwise, the following applies:

[0069] – The initialization procedure for the palette predictor variables is invoked as specified in Clause 9.3.2.3.

[0070] Otherwise, if CtbAddrInRs equals slice_segment_address and dependent_slice_segment_flag equals 1, then take TableStateIdxDs, TableMpsValDs, TableStatCoeffDs, PredictorPaletteSizeDs, and TablePredictorPaletteEntriesDs as input, and invoke the synchronization procedure for initializing the state using the context variables and Rice parameter specified in Section 9.3.2.5.

[0071] –Otherwise, the following applies:

[0072] – The initialization procedure for the palette predictor variables is invoked as specified in Clause 9.3.2.3.

[0073] 9.3.2.3 Initialization process of palette predictor entries

[0074] The output of this process is the initialized palette predictor variables PredictorPaletteSize and PredictorPaletteEntries.

[0075] The derivation of the variable numComps is as follows:

[0076] numComps=(ChromaArrayType==0)? 1:3 (9-8)

[0077] – If pps_palette_predictor_initializer_present_flag equals 1, then the following applies:

[0078] –PredictorPaletteSize is set to equal to pps_num_palette_predictor_initializer.

[0079] The comprehension of the PredictorPaletteEntries array is as follows:

[0080] for(comp=0;comp <numComps;comp++)

[0081] for(i=0; i <PredictorPaletteSize;i++) (9-9)

[0082] PredictorPaletteEntries[comp][i]=pps_palette_predictor_initializers[comp

[0083] ][i]

[0084] – Otherwise (pps_palette_predictor_initializer_present_flag equals 0), if sps_palette_predictor_initializer_present_flag equals 1, then the following applies:

[0085] –PredictorPaletteSize is set to equal to sps_num_palette_predictor_initializer_minus 1 plus 1.

[0086] The comprehension of the PredictorPaletteEntries array is as follows:

[0087] for(comp=0;comp <numComps;comp++)

[0088] for(i=0; i <PredictorPaletteSize;i++) (9-10)

[0089] PredictorPaletteEntries[comp][i]=sps_palette_predictor_initializers[comp][i]

[0090] Otherwise (pps_palette_predictor_initializer_present_flag equals 0, and sps_palette_predictor_initializer_present_flag equals 0), PredictorPaletteSize is set to 0.

[0091] 2.1.2.1.2. Use of the Predictor Palette

[0092] For each entry in the palette predictor, a signaling notification reuse flag is used to indicate whether it is part of the current palette. This is in Figure 2 As shown in the diagram, the reuse flag is transmitted using a zero-run-length encoding / decoding method. Subsequently, a zero-order exponent Golomb (EG) code (i.e., EG-0) is used to signal the number of new palette entries. Finally, the component values ​​of the new palette entries are signaled.

[0093] 2.1.2.2. Predictor Palette Update

[0094] The predictor palette is updated via the following steps:

[0095] 1. Before decoding the current block, there is a predictor palette, represented by PltPred0.

[0096] 2. The current palette table is constructed by first inserting those from PltPred0, followed by new entries for the current palette.

[0097] 3. Building PltPred1:

[0098] a. First, add these to the current color palette table (possibly including those from PltPred0).

[0099] b. If not full, add unreferenced entries from PltPred0 based on the ascending entry index.

[0100] 2.1.3. Encoding and Decoding of Palette Index

[0101] like Figure 3 As shown, the palette index is encoded and decoded using horizontal and vertical traversal scans. The scan order is explicitly signaled in the bitstream using the `palette_transpose_flag`. For the remainder of this subsection, it is assumed that the scan is horizontal.

[0102] The palette index is encoded and decoded 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 previous row is copied. For both "COPY_LEFT" and "COPY_ABOVE" modes, a run value is signaled, specifying the number of subsequent samples that will also be encoded and decoded using the same mode.

[0103] In palette mode, the index value of the escape sample is the number of palette entries. Furthermore, when an escape character is part of a downstream process in "COPY_LEFT" or "COPY_ABOVE" mode, the escape component value is notified for each escape character signaling. The encoding and decoding of the palette index is as follows: Figure 4 As shown.

[0104] This grammatical sequence is performed as follows: First, the number of index values ​​for the CU is signaled. Next, the actual index values ​​for the entire CU are signaled using truncated binary encoding / decoding. Both the index number and index values ​​are encoded / decoded in bypass mode. This groups the bypass bins associated with the indexes together. Then, the palette sample mode (if necessary) and run lengths are signaled in an interleaved manner. Finally, the component escape values ​​corresponding to the escape samples for the entire CU are grouped together and encoded / decoded in bypass mode. The binarization of the escape samples is done using EG encoding / decoding with order 3, i.e., EG-3.

[0105] The additional syntax element `last_run_type_flag` is signaled after the index value. This syntax element, combined with the number of indices, eliminates the need for signaling to notify the run value corresponding to the last run in the block.

[0106] In HEVC-SCC, palette mode is also enabled for 4:2:2, 4:2:0, and monochrome chroma formats. For all chroma formats, the signaling for palette entries and palette indices is almost identical. In non-monochrome formats, each palette entry consists of 3 components. In monochrome formats, each palette entry consists of one component. For the chroma direction of a subsample, the chroma sample is associated with a luminance sample index divisible by 2. After reconstructing the palette index for the CU, if a sample has only a single associated component, only the first component of the palette entry is used. The only difference in the signaling is the escape component values. For each escape sample, the number of escape component values ​​signaled may differ depending on the number of components associated with that sample.

[0107] In addition, there is an index adjustment process in the palette index encoding and decoding. When signaling informs the palette index, the left adjacent index or the upper adjacent index should be different from the current index. Therefore, by eliminating one possibility, the range of the current palette index can be reduced by 1. Afterwards, the index is signaled using truncated binary (TB) binarization.

[0108] The relevant text for this section is shown below, where CurrPaletteIndex is the current palette index and adjustedRefPaletteIndex is the predicted index.

[0109] The variable PaletteIndexMap[xC][yC] specifies the palette index, which is the index of an array represented by CurrentPaletteEntries. The array indices xC and yC specify the position (xC, yC) of the sample relative to the top-left brightness sample of the image. The value of PaletteIndexMap[xC][yC] should be in the range of 0 to MaxPaletteIndex (inclusive).

[0110] The derivation of the variable adjustedRefPaletteIndex is as follows:

[0111]

[0112]

[0113] When CopyAboveIndicesFlag[xC][yC] equals 0, the derivation of the variable CurrPaletteIndex is as follows:

[0114] if(CurrPaletteIndex>=adjustedRefPaletteIndex)

[0115] CurrPaletteIndex++

[0116] 2.1.3.1. Decoding process of the palette codec block

[0117] 1) Read the prediction information to mark which entries in the predictor palette will be reused;

[0118] (palette_predictor_run)

[0119] 2) Read the new palette entry for the current block.

[0120] a.num_signalled_palette_entries

[0121] b.new_palette_entries

[0122] 3) Construct CurrentPaletteEntries based on a) and b)

[0123] 4) Read the escape character presence flag: palette_escape_val_present_flag to deduce MaxPaletteIndex.

[0124] 5) How many samples are not encoded / decoded using copy mode / run-length mode?

[0125] a.num_palette_indices_minus1

[0126] b. For each sample that is not encoded using copy mode / run-length mode, encode palette_idx_idc in the current plt table.

[0127] 2.2. Palette Mode in VVC

[0128] 2.2.1. Palette in Two Trees

[0129] In VVC, a dual-tree codec structure is used to encode and decode intra-frame stripes, allowing the luma component and the two chroma components to have different palettes and palette indices. Furthermore, the two chroma components share the same palette and palette index.

[0130] 2.2.2. Palette as a standalone mode

[0131] In JVET-N0258 and the current VTM, the prediction mode of the codec unit can be MODE_INTRA, MODE_INTER, MODE_IBC, and MODE_PLT. The binarization of the prediction mode changes accordingly.

[0132] When IBC is disabled, on the I-chip, the first bit is used to indicate whether the current prediction mode is MODE_PLT. On the P / B-chip, the first bit is used to indicate whether the current prediction mode is MODE_INTRA. If not, an additional bit is used to indicate whether the current prediction mode is MODE_PLT or MODE_INTER.

[0133] When IBC is enabled, on the I-chip, the first bit is used to indicate whether the current prediction mode is IBC mode. If not, the second bit is used to indicate whether the current prediction mode is MODE_PLT or MODE_INTRA. On the P / B-chip, the first bit is used to indicate whether the current prediction mode is MODE_INTRA. If it is intra-frame mode, the second bit is used to indicate whether the current prediction mode is MODE_PLT or MODE_INTRA. If not, the second bit is used to indicate whether the current prediction mode is MODE_IBC or MODE_INTER.

[0134] The relevant text in JVET-O2001-vE is shown below.

[0135] Encoder / decoder unit syntax

[0136]

[0137]

[0138] 2.2.3. Signaling notification of maximum palette and maximum palette predictor size

[0139] In the HEVC standard, the maximum palette table size and the maximum palette predictor size are signaled in the Sequence Parameter Set (SPS), while the palette in VVC Draft 7 uses a fixed maximum palette table size of 31 and a fixed maximum palette predictor size of 36.

[0140] In HEVC SCC, signaling notifies two syntax elements as follows:

[0141] 7.3.2.2.3 Sequence Parameter Set Screen Content Encoding Extended Syntax

[0142]

[0143]

[0144] A value of 1 indicates that the palette mode decoding process can be used within an intra-frame block. A value of 0 indicates that the palette mode decoding process is not applied. When it does not exist, the value of palette_mode_enabled_flag is inferred to be 0.

[0145] Specifies the maximum allowed palette size. If not specified, the value of palette_max_size is inferred to be 0.

[0146] Specifies the difference between the maximum allowed palette predictor size and the maximum allowed palette size. When not specified, the value of delta_palette_max_predictor_size is inferred to be 0. The derivation of the variable PaletteMaxPredictorSize is as follows:

[0147] PaletteMaxPredictorSize=palette_max_size+delta_palette_max_predictor_size (7-35)

[0148] The requirement for bitstream consistency is that when palette_max_size equals 0, the value of delta_palette_max_predictor_size should be equal to 0.

[0149] JVET-Q0519 proposes introducing a syntax for signaling the maximum palette table size and the maximum palette predictor size into VVC. The syntax / semantics proposed in JVET-Q0519 are as follows:

[0150]

[0151] Specifies the maximum allowed palette size. If not specified, the value of palette_max_size is inferred to be 0.

[0152] Specifies the difference between the maximum allowed palette predictor size and the maximum allowed palette size. When not specified, the value of delta_palette_max_predictor_size is inferred to be 0.

[0153] In addition, a bitstream consistency constraint is proposed, which stipulates that the maximum palette table size and the maximum palette predictor size should not exceed 64 and 128, respectively.

[0154] 2.3. Segmentation of images, sub-images, strips, slices, bricks, and CTUs

[0155] A rectangular area.

[0156] Exclusively included in a single The integer number of bricks in a unit.

[0157] Note – a strip can consist of multiple complete slices, or just a continuous sequence of complete bricks from a single slice.

[0158] China Specific and specific within A rectangular area.

[0159] China Specific Inside A rectangular area of ​​rows.

[0160] Note – A slice can be divided into multiple bricks, each consisting of one or more CTU rows within the slice. A slice that is not divided into multiple bricks is also called a brick. However, bricks that are a proper subset of a slice are not called slices.

[0161] sorting in a specific order, where exist In Continuous sorting in the middle, within exist of of Continuous sorting in the middle, and In exist of of Continuous sorting in the middle.

[0162] The image is divided into one or more slice rows and one or more slice columns. A slice is a CTU sequence that covers a rectangular area of ​​the image.

[0163] The slice is divided into one or more bricks, each consisting of multiple CTU rows within the slice.

[0164] A slice that is not divided into multiple bricks is also called a brick. However, a brick that is a proper subset of a slice is not called a slice.

[0165] A strip or a series of images, or a series of bricks containing images.

[0166] Sub-images consist of one or more stripes that collectively cover a rectangular area of ​​the image.

[0167] Two stripe modes are supported: raster scan stripe mode and rectangular stripe mode. In raster scan stripe mode, the stripe consists of a sequence of slices from a raster scan of the image. In rectangular stripe mode, the stripe consists of multiple tiles from the image, which together form a rectangular area of ​​the image. The tiles within the rectangular stripe are arranged according to the raster scan order of the stripe tiles.

[0168] Figure 5An example of raster scan strip segmentation of an image is shown, where the image is divided into 12 slices and 3 raster scan strips.

[0169] Figure 6 An example of rectangular strip segmentation of an image is shown, where the image is divided into 24 strips (6 slice columns and 4 slice rows) and 9 rectangular strips.

[0170] Figure 7 An example of an image divided into slices, bricks, and rectangular strips is shown, where the image is divided into 4 slices (2 slice columns and 2 slice rows), 11 bricks (the top left slice contains 1 brick, the top right slice contains 5 bricks, the bottom left slice contains 2 bricks, and the bottom right slice contains 3 bricks) and 4 rectangular strips.

[0171] Figure 8 An example of sub-image segmentation of an image is shown, where the image is segmented into 28 sub-images of different dimensions.

[0172] When encoding and decoding an image using three separate color planes (separate_colour_plane_flag equals 1), a stripe includes only the CTU of one color component identified by the corresponding value of colour_plane_id, and each color component array of the image consists of stripes with the same colour_plane_id value. Encoding and decoding stripes with different colour_plane_id values ​​within an image can be interleaved under the following constraint: for each colour_plane_id value, the NAL units of the encoding and decoding stripe with that colour_plane_id value should be ordered in ascending order of CTU address in the brick scan sequence of the first CTU of each encoding and decoding stripe NAL unit.

[0173] Note 1 – When separate_colour_plane_flag equals 0, each CTU of the image is included in exactly one stripe. When separate_colour_plane_flag equals 1, each CTU of the color component is included in exactly one stripe (i.e., the information of each CTU of the image exists in exactly three stripes, and these three stripes have different colour_plane_id values).

[0174] 2.4. Wavefront with 1-CTU delay

[0175] In VVC, a single CTU delay wavefront (WPP) is used for parallel processing instead of the two CTU delays in the HEVC design. WPP processing enables multiple parallel processing operations with limited encoding / decoding loss, but two CTU delays would hinder parallel processing capabilities. As target resolutions become increasingly larger and the number of CPUs increases, it is asserted that utilizing the proposed single CTU delay for greater parallel processing capability will benefit the reduction of encoding / decoding latency and will fully utilize CTU power.

[0176] 2.5.JVET-Q0519

[0177] In the HEVC standard, the maximum palette table size and the maximum palette predictor size are signaled in the Sequence Parameter Set (SPS), while the palettes in VVC Draft 7 use a fixed maximum palette table size of 31 and a fixed maximum palette predictor size of 67. JVET-Q0519 proposes to import the syntax for signaling the maximum palette table size and maximum palette predictor size from HEVC back into the palette design of VVC.

[0178] The syntax / semantics proposed in JVET-Q0519 are listed below.

[0179]

[0180] Specifies the maximum allowed palette size. If not specified, the value of palette_max_size is inferred to be 0.

[0181] Specifies the difference between the maximum allowed palette predictor size and the maximum allowed palette size. When not specified, the value of delta_palette_max_predictor_size is inferred to be 0.

[0182] In addition, a bitstream consistency constraint is proposed, which stipulates that the maximum palette table size and the maximum palette predictor size should not exceed 64 and 128, respectively.

[0183] 2.6. Nonlinear Adaptive Loop Filtering

[0184] In VVC, a clipping operation is involved in the ALF filtering process, as shown in the filtering equation. Each sample R(i,j) within the CU is filtered, producing sample values ​​R′(i,j) as shown below. K(x,y) is the clipping function, and c(k,l) represents the clipping parameters for decoding.

[0185]

[0186] Where f(k,l) represents the filter coefficients for decoding, K(x,y) is the clipping function, and c(k,l) represents the clipping parameters for decoding. The variables k and l in... and The values ​​vary between L and L, where L represents the filter length. The clipping function K(x,y) = min(y,max(-y,x)) corresponds to the function Clip3(-y,y,x).

[0187] Furthermore, in the current VVC, these clipping values ​​depend on the internal bit depth. More precisely, the luminance table and chrominance table of the clipping values ​​are obtained using the following formulas:

[0188] AlfClip = {round(2 B-α*n For n∈[0..N-1]}

[0189] Where AlfClip is the clipping value, B refers to the bit depth of the input sample in the Internal Bit Depth (IBDI) or ALF, and α is a predefined constant value equal to 2.35. Table 8 below lists the clipping parameters for a given bit depth and the clipIdx of the signaling notification, which specifies the clipping index of the clipping value to be used before multiplying by the j-th coefficient of the alternative luma or chroma filter.

[0190]

[0191]

[0192] The filtering process in JVET-P1001 is defined as follows:

[0193] 8.8.5.4 Encoding and Decoding Tree Block Filtering Process for Chroma Samples

[0194] The input to this process is:

[0195] –The reconstructed chroma image sample array recPicture preceding the adaptive loop filtering process

[0196] – The filtered reconstructed chroma image sample array alfPicture,

[0197] – Chroma position (xCtbC, yCtbC), specifies the top-left sample of the current chroma codec block relative to the top-left sample of the current image.

[0198] – Alternative chroma filter index altIdx.

[0199] The output of this process is a modified, filtered array of reconstructed chroma image samples, alfPicture.

[0200] The width and height of the current chroma codec tree blocks ctbWidthC and ctbHeightC are derived as follows:

[0201] ctbWidthC=CtbSizeY / SubWidthC (1458)

[0202] ctbHeightC=CtbSizeY / SubHeightC (1459)

[0203] To derive the filtered reconstructed chroma sample alfPicture[x][y], each reconstructed chroma sample within the current chroma codec block recPicture[x][y] is filtered as follows, where x = 0..ctbWidthC-1, y = 0..ctbHeightC-1:

[0204] –…

[0205] – The derivation of the variable curr is as follows:

[0206] curr = recPicture[hx,v y (1462)

[0207] The derivation of the chroma filter coefficient array f[j] and the chroma clipping value array c[j] is as follows, where j = 0..5:

[0208] f[j]=AlfCoeff C [slice_alf_aps_id_chroma][altIdx][j] (1463)

[0209] c[j]=AlfClipC[slice_alf_aps_id_chroma][altIdx][j] (1464)

[0210] The derivation of the variable sum is as follows:

[0211] sum=f[0]*(Clip3(-c[0],c[0],recPicture[h x ,v y+y2 ]-curr)+

[0212] Clip3(-c[0],c[0],recPicture[h x ,v y-y2 ]-curr))+f[1]*(Clip3(-c[1],c[1],recPicture[h x+1 ,v y+y1 ]-curr)+

[0213] Clip3(-c[1],c[1],recPicture[h x -1,v y -y1]-curr))+f[2]*(Clip3(-c[2],c[2],recPicture[hx,v y +y1]-curr)+

[0214] Clip3(-c[2],c[2],recPicture[hx,v y -y1]-curr))+ (1465)f[3]*(Clip3(-c[3],c[3],recPicture[h x -1,v y +y1]-curr)+

[0215] Clip3(-c[3],c[3],recPicture[h x+1 ,v y-y1 ]-curr))+f[4]*(Clip3(-c[4],c[4],recPicture[h x+2 ,v y ]-curr)+

[0216] Clip3(-c[4],c[4],recPicture[h x-2 ,v y ]-curr))+f[5]*(Clip3(-c[5],c[5],recPicture[h x+1 ,v y ]-curr)+

[0217] Clip3(-c[5],c[5],recPicture[h x-1 ,v y ]-curr))

[0218] sum=curr+((sum+64)>>7) (1466)

[0219] – The derivation of the modified filtered reconstructed chroma image sample alfPicture[xCtbC+x][yCtbC+y] is as follows:

[0220] alfPicture[xCtbC+x][yCtbC+y]=Clip3(0,(1< <BitDepth)-1,sum)(1467)

[0221] 3. Disadvantages of existing implementations

[0222] DMVR and BIO do not involve the original signal during motion vector refinement, which may cause the codec block to have inaccurate motion information. Furthermore, DMVR and BIO sometimes use fractional motion vectors after motion refinement, while screen video typically has integer motion vectors, making the current motion information even less accurate and worsening codec performance.

[0223] 1. The current palette is constructed using predictions based on the previous encoded / decoded palette. It is only reinitialized before decoding a new CTU line or a new slice if `entropy_coding_sync_enabled_flag` is equal to 1. However, in practice, parallel encoders are preferred, where different CTU lines can be pre-encoded / decoded without referencing information from other CTU lines.

[0224] 2. The way the predictor palette is updated is fixed. That is, entries inherited from the previous predictor palette and new entries in the current palette are inserted sequentially. If the number of entries is still less than the size of the predictor palette, then entries not inherited from the previous predictor palette are added. This design does not take into account the importance of different entries in the current and previous predictor palettes.

[0225] 3. The size of the predictor palette is fixed, and after the decoding block, it must be updated to populate all potentially suboptimal entries, as some of them may never have been referenced.

[0226] 4. The current color palette size is fixed regardless of the color components; for example, fewer chromaticity samples can be used compared to luminance.

[0227] 5. In HEVC SCC, Signaling is done using the shortest codeword representing 0. In practice, It is very likely that the signaling will notify it of the maximum allowed value. Therefore, the signaling notification is inefficient. The same problem exists.

[0228] 6. Palette information can be changed using sequences of different images / sub-images / strips. Simply signaling this in SPS may be inefficient.

[0229] 7. The clipping function used in the nonlinear ALF process is defined as Clip3(-y,y,x), and the clipping parameter y is not of the form 2N. Furthermore, if we wish to implement clipping as a logical OR / and most significant bit, the upper and lower bounds of the clipping should be modified accordingly.

[0230] 4. Example technologies and implementation examples

[0231] The detailed embodiments described below should be considered as examples for explaining general concepts. These embodiments should not be interpreted narrowly. Furthermore, these embodiments can be combined in any way.

[0232] In addition to DMVR and BIO mentioned below, the methods described below can also be applied to other decoder motion information derivation techniques.

[0233] About the Predictor Palette

[0234] 1. Propose resetting or reinitializing the predictor palette (e.g., entries, and / or the size of the predictor palette) before decoding the first block in a new video unit.

[0235] a. Alternatively, the predictor palette (e.g., entries, and / or the size of the predictor palette) can be reset or reinitialized after the last block in the decoded video unit.

[0236] b. In one example, a video unit is a sub-region of a CTU (e.g., VPDU) / CTU / CTB / multiple CTUs / multiple CUs / CTU rows / pieces / blocks / sub-pictures / views, etc.

[0237] i. Alternatively, the above method is invoked even if the wavefront is disabled (e.g., entropy_coding_sync_enabled_flag equals 0).

[0238] c. In one example, the video unit is a chroma CTU row.

[0239] i. Alternatively, the predictor palette can be reset or reinitialized before decoding the first chroma CTB in the new chroma CTU line.

[0240] ii. Alternatively, the above method is invoked when a dual-tree is applied and the current split tree is a chroma codec tree.

[0241] d. In one example, the size of the predictor palette (e.g., in the specification) ) was reset to 0.

[0242] e. In one example, the size of the predictor palette (e.g., in the specification) The number of entries in the sequence palette predictor initializer is reset to the number of entries in the sequence palette predictor initializer (e.g., Add 1) or the maximum number of entries allowed in the predictor palette (e.g., ).

[0243] f. Initialization of the predictor palette (e.g., PredictorPaletteEntries) before encoding / decoding a new sequence / image can be used to initialize the predictor palette before encoding / decoding a new video unit.

[0244] g. In one example, when entropy_coding_sync_enabled_flag equals 1, the predictor palette after the CTB / CTU above the encoding / decoding can be used to initialize the predictor palette before encoding / decoding the current CTB / CTU.

[0245] 2. Propose disabling the update of the predictor palette after encoding / decoding a certain palette codec block.

[0246] a. In one example, whether to update the predictor palette may depend on the decoding information of the current block.

[0247] i. In one example, whether to update the predictor palette may depend on the block dimension of the current block.

[0248] 1. In one example, the update process is disabled if the width of the current block is not greater than a first threshold (denoted by T1) and the height of the current block is not greater than a second threshold (denoted by T2).

[0249] 2. In one example, the update process is disabled if the width of the current block multiplied by the height of the block is not greater than a first threshold (denoted by T1).

[0250] 3. In one example, the update process is disabled if the width of the current block is not less than the first threshold (denoted by T1) and the height of the current block is not less than the second threshold (denoted by T2).

[0251] 4. In one example, the update process is disabled if the width of the current block multiplied by the height of the block is not less than a first threshold (denoted by T1).

[0252] 5. In the above example, T1 / T2 can be predefined or signaled.

[0253] a) In one example, T1 / T2 can be set to 4, 16, or 1024.

[0254] b) In one example, T1 / T2 can depend on the color components.

[0255] 3. A shared predictor palette can be defined, where the same predictor palette can be used for all CUs / PUs under a shared region.

[0256] a. In one example, a shared region can be defined by splitting TT into MxN regions (e.g., 16×4 or 4×16 regions).

[0257] b. In one example, a shared region can be defined by splitting BT into MxN regions (e.g., 8×4 or 4×8 regions).

[0258] c. In one example, a shared region can be defined by splitting QT into MxN regions (e.g., 8x8 regions).

[0259] d. Alternatively, a shared predictor palette can be built once before all blocks within the encoding / decoding shared region.

[0260] e. In one example, the indication of prediction entries in the predictor palette (e.g., palette_predictor_run) can be signaled along with the first palette codec block in the shared region.

[0261] i. Alternatively, for the remaining codec blocks within the shared region, signaling notifications indicating prediction entries in the predictor palette (e.g., palette_predictor_run) can be skipped.

[0262] f. Alternatively, in addition, updates to the predictor palette can always be skipped after a block within the decode / encode shared area.

[0263] 4. A counter can be maintained for each entry in the predictor palette to indicate how frequently it is used. a. In one example, the counter can be set to a constant K for each new entry added to the predictor palette.

[0264] i. In one example, K can be set to 0.

[0265] b. In one example, when an entry is marked as reused in the encoding / decoding color palette, the corresponding counter can be incremented by a constant N.

[0266] i. In one example, N can be set to 1.

[0267] 5. Propose adaptively changing the size of the predictor palette instead of using a fixed size for the predictor palette.

[0268] a. In one example, the size of the predictor palette can be changed from one video unit (block / CU / CTU / piece / brick / sub-picture) to another.

[0269] b. In one example, the size of the predictor palette can be updated based on the current size of the palette.

[0270] i. In one example, after decoding / encoding the current block, the size of the predictor palette can be set to the size of the current palette.

[0271] ii. In one example, the size of the predictor palette can be set to the size of the current palette after decoding / encoding the current block, minus or plus an integer value represented by K.

[0272] 1. In one example, K can be dynamically notified / derived by signaling.

[0273] c. In one example, the size of the predictor palette can depend on the block size. Let S be the predefined size of the predictor palette for the palette encoding / decoding block.

[0274] i. In one example, a palette codec block of size T or less can use a predictor palette of size S.

[0275] 1. In one example, the first K entries (K <= S) from the palette predictor can be used.

[0276] 2. In one example, a subsampled version of the palette predictor can be used.

[0277] ii. In one example, a block encoded or decoded by a palette of size T or greater can use a predictor palette of size S.

[0278] iii. In the above example, K and / or T are integers and can be based on

[0279] 1. Video content (e.g., screen content or natural content)

[0280] 2. Signaling notification messages in DPS / SPS / VPS / PPS / APS / Picture Header / Strip Header / Piece Group Header / Maximum Codec Unit (LCU) / Codec Unit (CU) / LCU Line / LCU Group / TU / PU Block / Video Codec Unit

[0281] 3. Location of CU / PU / TU / block / video codec unit

[0282] 4. Color format indication (e.g., 4:2:0, 4:4:4, RGB, or YUV)

[0283] 5. Encoding / decoding tree structures (such as dual-tree or single-tree)

[0284] 6. Strip / Patch Type and / or Image Type

[0285] 7. Color Components

[0286] 8. Time-domain layer ID

[0287] 9. Standard configuration files / levels / hierarchies

[0288] d. In one example, after the encoding / decoding color palette, the predictor palette can be customized based on the counter of the entry.

[0289] i. In one example, entries whose counters are less than the threshold T can be discarded.

[0290] ii. In one example, the entry with the smallest counter value can be discarded until the size of the predictor palette is less than the threshold T.

[0291] e. Alternatively, after decoding / encoding a palette encoding block, the predictor palette can be updated based solely on the current palette.

[0292] i. Alternatively, the predictor palette can be updated to the current palette after the decode / encode palette encoding / decoding block.

[0293] 6. Encoding / decoding entries in the current palette and / or predictor palette prior to the current block can be reordered / modified before being used to update the predictor palette.

[0294] a. In one example, a reordering can be applied based on the decoding information / reconstruction of the current sample.

[0295] b. In one example, reordering can be applied based on the counter value of the entries.

[0296] c. Alternatively, the number of times a sample point / pixel (in and / or outside the current color palette) appears can also be counted.

[0297] i. Alternatively, samples / pixels with a larger counter (i.e., appearing more frequently) can be placed before those with a smaller counter.

[0298] 7. Information from escaped samples can be used to update the predictor palette.

[0299] a. Alternatively, the predictor palette can be conditionally updated with escape information.

[0300] i. In one example, when the predictor palette is not full after the current palette is inserted, escaped sample / pixel information can be added to the predictor palette.

[0301] 8. Updating / initializing / resetting the predictor palette can depend on the color components.

[0302] a. In one example, the rule for determining whether to update the predictor palette can depend on color components, such as luminance or chrominance.

[0303] 9. It can maintain and / or update a collection of multiple predictor palettes.

[0304] a. In one example, a predictor palette can have information on one or all color components.

[0305] b. In one example, a predictor palette may have information on two color components (e.g., Cb and Cr).

[0306] c. In one example, at least one global palette and at least one local palette can be maintained.

[0307] i. In one example, the predictor palette can be updated based on the global palette and the local palette.

[0308] d. In one example, the palettes associated with the last K palette codec blocks can be maintained (in encoding / decoding order).

[0309] e. In one example, the palettes for the luminance and chromaticity components can be predicted from different predictor palettes, i.e., with different indices on a set of multiple predictor palettes.

[0310] f. Alternatively, bullet point 1 can be applied to the set of predictor palettes.

[0311] g. Alternatively, one or more indices of the predictor palette in the predictor palette set can be provided for the sub-region signaling notification of CU / PU / CTU / CTB / CTU or CTB.

[0312] About the color palette / predictor color palette size

[0313] 10. The size of the color palette can be changed from one video unit to another.

[0314] a. In one example, the size of the color palette can be changed from one video unit (block / CU / CTU / piece / brick / sub-picture) to another video unit.

[0315] b. In one example, the size of the palette may depend on the decoding information of the current block and / or adjacent (nearby or non-nearby) blocks.

[0316] 11. Palette and / or predictor palette size may depend on block dimensions and / or quantization parameters.

[0317] 12. For different color components, the size (or the number of entries) of the color palette and / or predictor palette may be different.

[0318] a. In one example, the size of the palette and / or predictor palette for the luminance and chromaticity components can be explicitly or implicitly signaled.

[0319] b. In one example, the size of the palette and / or predictor palette for each color component can be explicitly or implicitly signaled.

[0320] c. In one example, whether signaling notifications indicate multiple dimensions may depend on the use of dual-tree and / or strip / picture types.

[0321] Palette signaling notification

[0322] 13. The consistent bitstream should satisfy the number of direct signaling notification entries for the current block (e.g., ...). The value should be within [0, palette_max_size - NumPredictedPaletteEntries].

[0323] a. How to binarize num_signalled_palette_entries can depend on the allowed range.

[0324] i. Truncated binarization encoding and decoding can be used to replace the 0th order EG.

[0325] b. How to binarize num_signalled_palette_entries can depend on the information being decoded (e.g., block dimension).

[0326] Regarding wavefronts with 1-CTU

[0327] 14. Propose that when parsing the CTU syntax ends (e.g., in VVC 7.3.8.2), the predictor palette (e.g., entries and / or size) be reinitialized, entropy_coding_sync_enabled_flag is equal to 1, and either the current CTB is the first in the new CTU line, or the current CTB is not in the same brick as its previous CTB.

[0328] a. Alternatively, after completing the encoding / decoding of the CTU described above, PredictorPaletteSizeWpp and PredictorPaletteEntriesWpp are maintained to record the updated size and entries of the predictor palette.

[0329] i. Alternatively, PredictorPaletteSizeWpp and PredictorPaletteEntriesWpp can also be used to encode / decode the current block in the current CTU.

[0330] b. In one example, when parsing of the CTU syntax in Section 7.3.8.2 ends, entropy_coding_sync_enabled_flag equals 1, and either CtbAddrInRs%PicWidthInCtbsY equals 0 or BrickId[CtbAddrInBs] is not equal to BrickId[CtbAddrRsToBs[CtbAddrInRs-1]], the stored procedure for the context variables specified in Section 9.3.2.3 is invoked with TableStateIdx0Wpp, TableStateIdx1Wpp, and TableMpsValWpp as output, and PredictorPaletteSizeWpp and PredictorPaletteEntriesWpp when palette_mode_enabled_flag equals 1.

[0331] General Concepts

[0332] 15. Whether and / or how to apply the above methods can be based on:

[0333] a. Video content (e.g., screen content or natural content)

[0334] b. Signaling notification messages in DPS / SPS / VPS / PPS / APS / Picture Header / Strip Header / Piece Group Header / Maximum Codec Unit (LCU) / Codec Unit (CU) / LCU Line / LCU Group / TU / PU Block / Video Codec Unit

[0335] c. Location of CU / PU / TU / block / video encoding / decoding unit

[0336] d. Decoding information of the current block and / or its adjacent blocks

[0337] i. Block dimensions / block shapes of the current block and / or its neighboring blocks

[0338] e. Color format indication (e.g., 4:2:0, 4:4:4, RGB, or YUV)

[0339] f. Encoding / decoding tree structures (such as dual-tree or single-tree structures)

[0340] g. Strip / group type and / or image type

[0341] h. Color components (e.g., may be applied only to the luminance and / or chrominance components)

[0342] i. Time-domain layer ID

[0343] j. Standard configuration files / levels / hierarchies

[0344] Signaling notification regarding maximum palette size and maximum palette prediction size 16. The first syntax, delta_maximum_palette_size, specifies the difference between a predefined value represented by T0 and the maximum allowed palette size, which can be signaled at the video processing unit level (e.g., sequence / picture / strip / piece / brick / subpicture).

[0345] a. Alternatively, the maximum palette size is set to (T0 - delta_maximum_palette_size).

[0346] i. In one example, the predefined value is an integer of the form 2N, where N is an integer.

[0347] a) In one example, the predefined value is equal to 32, 64, 128 or 256.

[0348] ii. Alternatively, the maximum palette size is set to (T0 - delta_maximum_palette_size).

[0349] a) In one example, the predefined value is an integer of the form (2N-K), where N and K are integers.

[0350] i. In one example, K = 1.

[0351] ii. Alternatively, the minimum palette size is K.

[0352] b. Alternatively, a second syntax, delta_maximum_palette_size, can be signaled, which specifies the difference between the maximum allowed palette size and a predefined value represented by T0.

[0353] i. Alternatively, the maximum palette size is set to (T0 + delta_maximum_palette_size).

[0354] ii. In one example, the predefined value is an integer of the form 2N, where N is an integer.

[0355] a) In one example, the predefined value is equal to 1.

[0356] c. In one example, the predefined value is not zero.

[0357] d. In one example, the first / second syntax element can be binarized using unary codes / exponential Golomb codes / Rice codes / fixed-length codes / truncated binary codes / unsigned integer 0th order Exp-Golomb binarization for encoding and decoding.

[0358] e. In one example, the first / second syntax element can be an unsigned integer that is not less than zero.

[0359] f. In one example, the first / second syntax element can be a signed integer that is not less than zero or less than zero.

[0360] g. In one example, the maximum allowed palette size must be less than or equal to a predefined value.

[0361] i. In one example, the predefined value is equal to 1.

[0362] 17. The third syntax element, delta_maximum_palette_predictor_size, specifies the difference between a predefined value and the maximum allowed palette predictor size.

[0363] a. Alternatively, the maximum palette predictor size is set to (T0 - delta_maximum_palette_predictor_size).

[0364] i. In one example, the predefined value is an integer of the form 2N, where N is an integer.

[0365] a) In one example, the predefined value is equal to 32, 64, 128 or 256.

[0366] ii. Alternatively, the maximum palette predictor size is set to (T0 - delta_maximum_palette_predictor_size).

[0367] a) In one example, the predefined value is an integer of the form (2N-K), where N and K are integers.

[0368] i. In one example, K = 1.

[0369] ii. Alternatively, the minimum palette size is K.

[0370] b. Alternatively, a second syntax, 'delta_maximum_palette_predictor_size', can be signaled, which specifies the difference between the maximum allowed palette predictor size and a predefined value.

[0371] i. Alternatively, the maximum palette predictor size is set to (T0 + delta_maximum_palette_predictor_size).

[0372] ii. In one example, the predefined value is an integer of the form 2N, where N is an integer.

[0373] a) In one example, the predefined value is equal to 1.

[0374] c. In one example, the predefined value is not equal to the maximum allowed palette size.

[0375] d. In one example, the third and / or fourth syntax elements can be binarized using unary codes / exponential Golomb codes / Rice codes / fixed-length codes / truncated binary codes / unsigned integer 0th order Exp-Golomb binarization for encoding and decoding.

[0376] e. In one example, the third and / or fourth syntax elements can be unsigned integers not less than zero.

[0377] f. In one example, the third and / or fourth syntax elements can be signed integers that are not less than zero or less than zero.

[0378] g. In one example, the maximum allowed palette predictor size must be less than or equal to a predefined value.

[0379] h. In one example, the maximum allowed palette predictor size must be greater than or equal to a predefined value.

[0380] 18. The maximum palette size and / or the maximum palette predictor size should be greater than K (K is a non-zero integer).

[0381] a. In one example, K is 0. In this case, the maximum palette size and / or the maximum palette predictor size should be greater than 0.

[0382] b. In one example, the maximum palette predictor size can be smaller than the maximum palette size.

[0383] i. Alternatively, the difference in signaling notification between the maximum allowed palette predictor size and the maximum allowed palette size (e.g., delta_palette_max_predictor_size) can be less than 0.

[0384] a) Alternatively, a mapping process from decoded syntax elements to real differences can be performed.

[0385] 19. Propose that, before indicating the syntax element that indicates the maximum permissible palette size, signaling notify the syntax element that indicates the maximum permissible palette predictor size.

[0386] a. For example, whether signaling indicates the maximum permissible palette size depends on the maximum permissible palette predictor size.

[0387] 20. Palette-related information, such as enabling / disabling palettes, maximum allowed palette size, and / or maximum allowed palette predictor size, is proposed and can be signaled in the dependent PPS / image header / strip header / sub-image.

[0388] a. Alternatively, information indicating the maximum permissible palette size and / or the maximum permissible palette predictor size may be signaled in association with one or more subgraphs.

[0389] b. In one example, a flag indicating whether the color palette is enabled is displayed in the PPS / Picture Header / Strip Header signaling notification or associated with a sub-picture.

[0390] c. In one example, palette-related information signaled in a higher-level video unit (such as in SPS) can be overwritten by palette-related information signaled in a lower-level video unit (such as in PPS or picture header).

[0391] d. In one example, palette-related information notified in lower-level video units (such as in PPS or picture headers) can be predicted by palette-related information notified in higher-level video units (such as in SPS).

[0392] i. For example, the difference between a first value associated with the color palette and a second value signaled in a higher-level video unit associated with the color palette is signaled in a lower-level video unit.

[0393] a) In one example, the first value is the maximum allowed palette size associated with the lower-level video unit, and the second value is the maximum allowed palette size for signaling notification in the higher-level video unit.

[0394] b) In one example, the first value is the maximum allowed palette predictor size associated with the lower-level video unit, and the second value is the maximum allowed palette predictor size for signaling notification in the higher-level video unit.

[0395] Shearing in nonlinear ALF

[0396]

[0397] 21. It is proposed to apply asymmetric shearing in nonlinear ALF to shear the same difference, where the absolute values ​​of the upper and lower limits are different.

[0398] a. In one example, it is suggested to use Clip3(-a,b,x) instead of Clip3(-y,y,x), where -a is the lower bound and b is the upper bound, and a is not equal to b.

[0399] i. In one example, it is suggested to use Clip3(-y,y-1,x) instead of Clip3(-y,y,x).

[0400] ii. In one example, it is suggested to use Clip3(-(y+1),y,x) instead of Clip3(-y,y,x).

[0401] iii. In one example, a lookup table can be used to define the upper limit b of the cut operation.

[0402] a) In one example, the upper limit is of the form (2N-1).

[0403] iv. In one example, a lookup table can be used to define the absolute value 'a' of the lower bound of the cut operation.

[0404] a) In one example, the lower bound -a is in the form of -2N.

[0405] b. Alternatively, the proposed method can also be applied to other filtering methods, such as cross-component ALF.

[0406] 5. Additional Examples

[0407] 5.1. Example #1

[0408] This embodiment is based on ITU-T HEVC v5 (2018 / 02) https: / / www.itu.int / rec / dologin_pub.asp?lang=e&id=T-REC-H.265-201802-S!!PDF-E&type=items. Newly added text is displayed in bold and underlined italics. Any deleted text is marked with double brackets (e.g., [[a]] indicates the deletion of the character "a").

[0409] 9.3.1 Overview

[0410] This procedure is invoked when parsing syntax elements with the descriptor ae(v) in sections 7.3.8.1 through 7.3.8.12.

[0411] The input to this process is a request for the value of the syntax element and the value of the previously parsed syntax element.

[0412] The output of this process is the value of the syntax element.

[0413] When parsing one or more of the following begins, the initialization procedure specified in Section 9.3.2 is invoked:

[0414] 1. The stripe data syntax specified in Clause 7.3.8.1,

[0415] 2. Section 7.3.8.2 and the CTU syntax specified in CTU are... The first CTU in the [[film]]

[0416] 3. The CTU syntax specified in section 7.3.8.2, [[entropy_coding_sync_enabled_flag equals 1 and]] is associated with the luminance CTB. The first luminance CTB in the CTU line of the image.

[0417] The parsing process of syntax elements is as follows:

[0418] When cabac_bypass_alignment_enabled_flag equals 1, the request for the value of the syntax element is for the syntax element coeff_abs_level_remaining[] or coeff_sign_flag[], and escapeDataPresent equals 1, invoking the alignment process prior to alignment bypass decoding as specified in section 9.3.4.3.6.

[0419] For each requested value of a syntax element, derive the binarization as specified in Clause 9.3.3.

[0420] The binarization of syntax elements and the parsed binary bit sequence determines the decoding process flow, as described in Section 9.3.4.

[0421] When a request for a syntax element value has been processed for the syntax element pcm_flag, and the decoded value of pcm_flag is equal to 1, the decoding engine is initialized as specified in Section 9.3.2.6 after decoding any pcm_alignment_zero_bit and all pcm_sample_luma and pcm_sample_chroma data.

[0422] The stored procedure uses context variables as follows:

[0423] – When parsing of the CTU syntax in Section 7.3.8.2 ends, if entropy_coding_sync_enabled_flag equals 1, and either CtbAddrInRs%PicWidthInCtbsY equals 1, or both CtbAddrInRs are greater than 1 and TileId[CtbAddrInTs] is not equal to TileId[CtbAddrRsToTs[CtbAddrInRs-2]], the stored procedures for the context variables, Rice parameter initialization state, and palette predictor variables specified in Section 9.3.2.4 are called as output, using TableStateIdxWpp, TableMpsValWpp, TableStatCoeffWpp when persistent_rice_adaptation_enabled_flag equals 1, and PredictorPaletteSizeWpp and PredictorPaletteEntriesWpp when palette_mode_enabled_flag equals 1.

[0424] – When the parsing of the general stripe segment data syntax in Section 7.3.8.1 is complete, and dependent_slice_segments_enabled_flag equals 1 and end_of_slice_segment_flag equals 1, the stored procedures for the context variables, Rice parameter initialization state, and palette predictor variables specified in Section 9.3.2.4 are called as output, using TableStateIdxDs, TableMpsValDs, TableStatCoeffDs when persistent_rice_adaptation_enabled_flag equals 1, and PredictorPaletteSizeDs and PredictorPaletteEntriesDs when palette_mode_enabled_flag equals 1.

[0425] 5.2. Example #2

[0426] This example is based on VVC CD. Newly added text is displayed in bold and underlined italics. Any deleted text is marked with double brackets (e.g., [[a]] indicates the deletion of the character "a").

[0427] 9.3 CABAC parsing process for striped data

[0428] 9.3.1 Overview

[0429] The input to this process is a request for the value of the syntax element and the value of the previously parsed syntax element.

[0430] The output of this process is the value of the syntax element.

[0431] When parsing the CTU syntax specified in Section 7.3.8.2 begins, and one or more of the following conditions are met, the initialization procedure specified in Section 9.3.2 is invoked:

[0432] –CTU is the first CTU in the brick.

[0433] The value of –entropy_coding_sync_enabled_flag is equal to 1, and the CTU is the first CTU in the CTU row of the brick.

[0434] The parsing of syntax elements proceeds as follows:

[0435] For each requested value of a syntax element, derive the binarization as specified in subsection 9.3.3.

[0436] The binarization of syntax elements and the sequence of parsed binary bits determine the decoding process flow (as described in subsection 9.3.4).

[0437] The stored procedure uses context variables as follows:

[0438] – When parsing of the CTU syntax in section 7.3.8.2 ends, `entropy_coding_sync_enabled_flag` equals 1, and either `CtbAddrInRs%PicWidthInCtbsY` equals 0 or `BrickId[CtbAddrInBs]` is not equal to `BrickId[CtbAddrRsToBs[CtbAddrInRs-1]]`, `TableStateIdx0Wpp`, `TableStateIdx1Wpp`, and `TableMpsValWpp` are used. The output calls the stored procedure containing the context variables specified in section 9.3.2.3.

[0439] 9.3.2 Initialization process

[0440] 9.3.2.1 Overview

[0441] – The output of this process is the initialized CABAC internal variables.

[0442] – The context variables of the arithmetic decoding engine are initialized as follows:

[0443] ––If the CTU is the first CTU in the brick, the initialization procedure for the context variable is invoked as specified in Clause 9.3.2.2, and the variable PredictorPaletteSize[0 / 1 / 2] is initialized to 0.

[0444] --- Otherwise, if entropy_coding_sync_enabled_flag equals 1, and either CtbAddrInRs%PicWidthInCtbsY equals 0 or BrickId[CtbAddrInBs] is not equal to BrickId[CtbAddrRsToBs[CtbAddrInRs-1]], then the following applies:

[0445] –– Spatial adjacent block T( Figure 9-2 The position (xNbT, yNbT) of the top left luminance sample is derived using the position (x0, y0) of the top left luminance sample of the current CTB, as shown below:

[0446] –(xNbT,yNbT)=(x0,y0-CtbSizeY)(9-3)

[0447] –– Using the position (xCurr, yCurr) set to equal to (x0, y0), the adjacent position (xNbY, yNbY) set to equal to (xNbT, yNbT), checkPredModeY set to equal to FALSE, and cIdx set to equal to 0 as input, the derivation process for the availability of adjacent blocks as specified in Section 6.4.4 is invoked, and the output is assigned to availableFlagT.

[0448] The synchronization procedure for context variables is called as follows:

[0449] ––If availableFlagT equals 1, then use TableStateIdx0Wpp, TableStateIdx1Wpp, and TableMpsValWpp as input, call the synchronization procedure for the context variables specified in Section 9.3.2.4, and initialize the variable PredictorPaletteSize to 0.

[0450] Otherwise, the context variable initialization procedure will be invoked as specified in Section 9.3.2.2, and the variable PredictorPaletteSize will be initialized to 0.

[0451] Otherwise, the context variable initialization procedure will be invoked as specified in Section 9.3.2.2, and the variable PredictorPaletteSize will be initialized to 0.

[0452] The decoding engine registers ivlCurrRange and ivlOffset, both with 16-bit register precision, are initialized by calling the initialization procedure of the arithmetic decoding engine in sub-clause 9.3.2.5.

[0453] 9.3.2.3 Stored Procedures with Context Variables

[0454] The inputs to this process include:

[0455] – CABAC context variables indexed by ctxTable and ctxIdx.

[0456] The output of this process is:

[0457] – The variables tableStateSync0, tableStateSync1, and tableMPSSync include the values ​​of the variables pStateIdx0, pStateIdx1, and valMps used in the initialization of context variables, which are assigned to all syntax elements in sections 7.3.8.1 through 7.3.8.11, except for end_of_brick_one_bit and end_of_subset_one_bit.

[0458]

[0459] For each context variable, the corresponding entries pStateIdx0, pStateIdx1, and valMps of tables tableStateSync0, tableStateSync1, and tableMPSSync are initialized to the corresponding pStateIdx0, pStateIdx1, and valMps.

[0460]

[0461] Alternatively, the following may be applied:

[0462]

[0463] 5.3. Example #3

[0464]

[0465]

[0466] Alternatively, in the table above It can be set to another integer value, such as a fixed value or the predictor palette size.

[0467] 5.4. Example #4

[0468]

[0469]

[0470] Specifies the difference between 64 and the maximum allowed palette size. If not specified, the value of delta_palette_max_size is inferred to be 64. The variable PaletteMaxSize is deduced to be equal to 64 - delta_palette_max_size.

[0471] Specifies the difference between 128 and the maximum allowed palette predictor size and the maximum allowed palette size. When not present, the value of delta_palette_max_predictor_size is inferred as 128 - PaletteMaxSize. The variable PalettePredictorMaxSize is deduced to be equal to 128 - delta_palette_max_predictor_size.

[0472] In a consistent bitstream, PaletteMaxSize and PalettePredictorMaxSize are required to be no greater than 64 and 128, respectively.

[0473] 5.5. Example #5

[0474]

[0475] Specifies the difference between 64 and the maximum allowed palette size. If not specified, the value of delta_palette_max_size is inferred to be 64. The variable PaletteMaxSize is deduced to be equal to 64 - delta_palette_max_size.

[0476] Specifies the difference between 128 and the maximum allowed palette predictor size and the maximum allowed palette size. When not present, the value of delta_palette_max_predictor_size is inferred as 128 - PaletteMaxSize. The variable PalettePredictorMaxSize is deduced to be equal to 128 - delta_palette_max_predictor_size.

[0477] In a consistent bitstream, PaletteMaxSize and PalettePredictorMaxSize should not exceed 64 and 128, respectively. Furthermore, PalettePredictorMaxSize should be greater than or equal to PaletteMaxSize.

[0478] 6. Example implementation of the disclosed technology

[0479] Figure 9 This is a block diagram of a video processing apparatus 900. Apparatus 900 can be used to implement one or more methods described herein. Apparatus 900 can be embodied in smartphones, tablets, computers, Internet of Things (IoT) receivers, etc. Apparatus 900 may include one or more processors 902, one or more memories 904, and video processing hardware 906. The processors(multiple) 902 can be configured to implement one or more methods described herein. The memories(multiple) 904 can be used to store data and code for implementing the methods and techniques described herein. The video processing hardware 906 can be used to implement some of the techniques described herein in hardware circuitry and may be part or entirely part of the processor 902 (e.g., a graphics processing unit (GPU) core or other signal processing circuitry).

[0480] In this document, the term "video processing" can refer to video encoding, video decoding, video compression, or video decompression. For example, a video compression algorithm can be applied during the conversion from the pixel representation of a video to the corresponding bitstream representation, and vice versa. As defined in the syntax, the bitstream representation of the current video block can, for example, correspond to co-located or bits located at different positions within the bitstream. For example, a macroblock can be encoded based on the error residual values ​​after transformation and encoding / decoding, and also using bits from the header and other fields in the bitstream.

[0481] It should be understood that by allowing the use of the techniques disclosed in this document, the disclosed methods and techniques will be beneficial to video encoder and / or decoder embodiments incorporated in video processing devices such as smartphones, laptops, desktop computers and similar devices.

[0482] Figure 10This is a block diagram illustrating a video processing system 1000 in which various technical examples 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, such as 8 or 10-bit multi-component pixel values, or it may be 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 and Passive Optical Network (PON), and wireless interfaces such as Wi-Fi or cellular interfaces.

[0483] System 1000 may include an encoding / decoding component 1004, which can implement the various encoding / decoding or coding methods described in this document. Encoding / decoding component 1004 can reduce the average bit rate of the video from input 1002 to the output of encoding / decoding component 1004 to produce an encoded / decoded representation of the video. Therefore, encoding / decoding techniques are sometimes referred to as video compression or video transcoding techniques. As indicated by component 1006, the output of encoding component 1004 can be stored or transmitted via connected communication. Component 1008 can use the stored or communicated bitstream (or encoded / decoded) representation of the video received at input 1002 to generate pixel values ​​or displayable video to be sent to display interface 1010. The process of generating user-visible video from a bitstream representation is sometimes referred to as video decompression. Furthermore, although some video processing operations are referred to as “encoding / decoding” operations or tools, it should be understood that encoding tools or operations are used at the encoder, and corresponding decoding tools or operations that reverse the encoded results will be performed by the decoder.

[0484] Examples of peripheral bus interfaces or display interfaces may include Universal Serial Bus (USB), High Definition Multimedia Interface (HDMI), or DisplayPort. Examples of storage interfaces include SATA (Serial Advanced Technology Accessory), PCI, IDE, etc. The technologies described in this document can be implemented in a variety of electronic devices, such as mobile phones, laptops, smartphones, or other devices capable of performing digital data processing and / or video display.

[0485] Figure 11 This is a flowchart of an example method 1100 for video processing. Method 1100 includes performing a conversion between a video block in a video unit and a codec representation of the video block at 1110 using a palette mode, wherein during the conversion, a predictor palette is used to predict the current palette information of the video block, and further wherein the predictor palette is selectively reset prior to the conversion between the video block and the bitstream representation of the video block.

[0486] Figure 12 This is a block diagram illustrating an example video encoding / decoding system 100 that can utilize the technology of the present invention.

[0487] like Figure 12 As shown, the video encoding / decoding system 100 may include a source device 110 and a destination device 120. The source device 110 generates encoded video data and may be referred to as a video encoding device. The destination device 120 decodes the encoded video data generated by the source device 110 and may be referred to as a video decoding device.

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

[0489] Video source 112 may include sources such as video capture devices, interfaces for receiving video data from video content providers, and / or computer graphics systems used to generate video data, or combinations of these sources. Video data may include one or more images. Video encoder 114 encodes the video data from video source 112 to generate a bitstream. The bitstream may include a sequence of bits forming a codec representation of the video data. The bitstream may include codec images and associated data. A codec image is a codec representation of an image. Associated data may include sequence parameter sets, image parameter sets, and other syntax structures. I / O interface 116 may include a modulator / demodulator (modem) and / or a transmitter. Encoded video data may be transmitted directly to destination device 120 via network 130a through I / O interface 116. Encoded video data may also be stored on storage medium / server 130b for access by destination device 120.

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

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

[0492] The video encoder 114 and the video decoder 124 can operate according to video compression standards, such as the High Efficiency Video Codec (HEVC) standard, the Multi-Functional Video Codec (VVM) standard, and other current and / or further standards.

[0493] Figure 13 This is a block diagram illustrating an example of a video encoder 200, which can be... Figure 12 The video encoder 114 in the system 100 shown

[0494] The video encoder 200 can be configured to perform any or all of the techniques of this invention. Figure 13 In the example, the video encoder 200 includes multiple functional components. The techniques described in this invention can be shared among the various components of the video encoder 200. In some examples, the processor can be configured to perform any or all of the techniques described in this disclosure.

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

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

[0497] Furthermore, some components (such as motion estimation unit 204 and motion compensation unit 205) can be highly integrated, but for interpretative purposes... Figure 13 The example is shown separately.

[0498] The segmentation unit 201 can segment an image into one or more video blocks. The video encoder 200 and the video decoder 300 can support various video block sizes.

[0499] The mode selection unit 203 can, for example, select one of the encoding / decoding modes (intra-frame or inter-frame) based on the error result, and provide the resulting intra-frame or inter-frame encoded / decoded block to the residual generation unit 207 to generate residual block data, and to the reconstruction unit 212 to reconstruct the coded block for use as a reference picture. In some examples, the mode selection unit 203 can select a combined intra-frame and inter-frame prediction (CIIP) mode, where the prediction is based on the inter-frame prediction signal and the intra-frame prediction signal. In the case of inter-frame prediction, the mode selection unit 203 can also select the resolution of the motion vector for the block (e.g., sub-pixel or integer pixel precision).

[0500] To perform inter-frame prediction on the current video block, motion estimation unit 204 can generate motion information for the current video block by comparing one or more reference frames from buffer 213 with the current video block. Motion compensation unit 205 can determine the predicted video block for the current video block based on motion information and decoded samples from images other than those associated with the current video block from buffer 213.

[0501] The motion estimation unit 204 and the motion compensation unit 205 can perform different operations on the current video block, for example, depending on whether the current video block is in an I-band, P-band, or B-band.

[0502] In some examples, motion estimation unit 204 can perform unidirectional prediction on the current video block, and can search for a reference video block for the current video block in the reference images of list 0 or list 1. Motion estimation unit 204 can then generate a reference index indicating the reference image in list 0 or list 1, which includes the reference video block and a motion vector indicating the spatial displacement between the current video block and the reference video block. Motion estimation unit 204 can output the reference index, prediction direction indicator, and motion vector as motion information for the current video block. Motion compensation unit 205 can generate a predicted video block for the current block based on the reference video block indicated by the motion information of the current video block.

[0503] In other examples, motion estimation unit 204 can perform bidirectional prediction on the current video block. Motion estimation unit 204 can search for a reference video block for the current video block in the reference images in list 0, and can also search for another reference video block for the current video block in the reference images in list 1. Motion estimation unit 204 can then generate a reference index and a motion vector. The reference index indicates the reference images in lists 0 and 1 that include the reference video blocks, and the motion vector indicates the spatial displacement between the reference video blocks and the current video block. Motion estimation unit 204 can output the reference index and motion vector of the current video block as motion information for the current video block. Motion compensation unit 205 can generate a predicted video block for the current video block based on the reference video blocks indicated by the motion information of the current video block.

[0504] In some examples, the motion estimation unit 204 can output a complete set of motion information for the decoder's decoding processing.

[0505] In some examples, motion estimation unit 204 may not output the complete set of motion information for the current video. Instead, motion estimation unit 204 may signal the motion information of the current video block to another video block. For example, motion estimation unit 204 may determine that the motion information of the current video block is sufficiently similar to the motion information of neighboring video blocks.

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

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

[0508] As described above, the video encoder 200 can predictively signal motion vectors. Two examples of predictive signaling notification techniques that can be implemented by the video encoder 200 include Advanced Motion Vector Prediction (AMVP) and Merge Pattern Signaling Notification.

[0509] Intra-prediction unit 206 can perform intra-prediction on the current video block. When intra-prediction unit 206 performs intra-prediction on the current video block, it can generate prediction data for the current video block based on the decoded samples of other video blocks in the same frame. The prediction data for the current video block may include the predicted video block and various syntax elements.

[0510] The residual generation unit 207 can generate residual data for the current video block by subtracting (e.g., indicated by a negative sign) multiple predicted video blocks from the current video block. The residual data for the current video block may include residual video blocks corresponding to different sample components of the samples in the current video block.

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

[0512] The transform processing unit 208 can generate one or more transform coefficient video blocks of the current video block by applying one or more transforms to the residual video block associated with the current video block.

[0513] After the transform processing unit 208 generates a transform coefficient video block associated with the current video block, the quantization unit 209 can quantize the transform coefficient video block associated with the current video block based on one or more quantization parameter (QP) values ​​associated with the current video block.

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

[0515] After the video block is reconstructed by the reconstruction unit 212, a loop filtering operation can be performed to reduce video block artifacts in the video block.

[0516] Entropy encoding unit 214 can receive data from other functional components of video encoder 200. When entropy encoding unit 214 receives data, it can perform one or more entropy encoding operations to generate entropy-encoded data and output a bitstream including the entropy-encoded data.

[0517] Figure 14 This is a block diagram illustrating an example of a video decoder 300, which can be... Figure 12 The video decoder 114 in the system 100 shown

[0518] The video decoder 300 can be configured to perform any or all of the techniques of this invention. Figure 14 In the example, the video decoder 300 includes multiple functional components. The techniques described in this disclosure can be shared among the various components of the video decoder 300. In some examples, the processor can be configured to perform any or all of the techniques described in this disclosure.

[0519] exist Figure 14 In the example, the video decoder 300 includes an entropy decoding unit 301, a motion compensation unit 302, an intra-frame prediction unit 303, an inverse quantization unit 304, an inverse transform unit 305, a reconstruction unit 306, and a buffer 307. In some examples, the video decoder 300 can perform functions typically associated with the video encoder 200. Figure 13 The encoding pass described is the opposite of the decoding pass.

[0520] The entropy decoding unit 301 can retrieve the encoded bitstream. The encoded bitstream may include entropy-coded video data (e.g., encoded video data blocks). The entropy decoding unit 301 can decode the entropy-coded video data, and based on the entropy-coded video data, the motion compensation unit 302 can determine motion information, including motion vectors, motion vector precision, reference image list index, and other motion information. The motion compensation unit 302 can determine such information, for example, by executing AMVP and Merge modes.

[0521] Motion compensation unit 302 can generate motion compensation blocks, possibly performing interpolation based on interpolation filtering. The syntax elements may include an identifier for the interpolation filter to be used with sub-pixel precision.

[0522] The motion compensation unit 302 can use interpolation filters, such as those used by the video encoder 200 during the encoding of video blocks, to calculate interpolated sub-integer pixels of the reference block. The motion compensation unit 302 can determine the interpolation filter used by the video encoder 200 based on the received syntax information and use the interpolation filter to generate the prediction block.

[0523] The motion compensation unit 302 may use some syntax information to determine the size of the blocks used for encoding the (multiple) frames and / or (multiple) stripes of the encoded video sequence, segmentation information describing how each macroblock of the image of the encoded video sequence is segmented, a pattern indicating how each segment is encoded, one or more reference frames (and a list of reference frames) for each inter-frame encoded block, and other information for decoding the encoded video sequence.

[0524] Intra-prediction unit 303 can use, for example, an intra-prediction mode received in the bitstream to form prediction blocks from spatially adjacent blocks. Inverse quantization unit 303 inverse quantizes (i.e., dequantizes) the quantized video block coefficients provided in the bitstream and decoded by entropy decoding unit 301. Inverse transform unit 303 applies an inverse transform.

[0525] The reconstruction unit 306 can add the residual block to the corresponding predicted block generated by the motion compensation unit 202 or the intra-frame prediction unit 303 to form a decoded block. If necessary, a deblocking filter can also be applied to filter the decoded block to remove block artifacts. The decoded video block is then stored in a buffer 307, which provides a reference block for subsequent motion compensation / intra-frame prediction and also generates the decoded video for presentation on the display device.

[0526] Some embodiments may be described using the following clause-based format. The first set of clauses describes certain features and aspects of the technology disclosed in the preceding sections.

[0527] 1. A video processing method, comprising:

[0528] The conversion between video blocks and their codec representations within a video unit is performed using a palette mode, wherein during the conversion, a predictor palette is used to predict the current palette information of the video block, and further wherein the predictor palette is selectively reset prior to the conversion between the video block and its bitstream representation.

[0529] 2. The method according to Clause 1, wherein the video unit comprises one or more codec tree units, one or more codec tree blocks, a sub-region of a codec tree unit or a codec tree block, or a codec tree block row / piece / brick / sub-picture / view of a codec tree unit.

[0530] 3. The method according to any one of Clauses 1-2, wherein delayed wavefront parallel processing is disabled during the conversion.

[0531] 4. As described in Clause 3, wherein the entropy_coding_sync_enabled_flag is set to 0.

[0532] 5. The method according to Clause 1, wherein the video unit is a row of chroma codec tree units.

[0533] 6. The method according to Clause 5, wherein the predictor palette is reset before decoding the first chroma codec tree block (CTB) in the new chroma CTU line.

[0534] 7. The method according to Clause 5, wherein when a dual codec tree is applied and the current segment of the dual codec tree is a chroma codec tree unit, the predictor palette is reset.

[0535] 8. The method described in Clause 1, wherein the size of the predictor palette is reset to zero.

[0536] 9. The method according to Clause 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.

[0537] 10. The method according to Clause 9, wherein the sequence palette predictor initializer is used to initialize the palette predictor before it is applied to the video unit.

[0538] 11. The method according to Clause 1, wherein when entropy_coding_sync_enabled_flag is set to equal to 1, the palette predictor applied to the previous video block is reinitialized before being applied to the video unit.

[0539] 12. The method according to Clause 1, wherein the update predictor palette is disabled based on codec information associated with the video unit.

[0540] 13. The method according to Clause 12, wherein the encoding / decoding information includes the dimensions of the video unit.

[0541] 14. The method according to Clause 13, wherein updating the predictor palette is disabled based on the dimensions of video units that meet one or more threshold conditions.

[0542] 15. The method described in Clause 14, wherein one or more threshold conditions are predefined.

[0543] 16. The method according to Clause 14, wherein one or more threshold conditions are explicitly or implicitly signaled in the codec representation of the video unit.

[0544] 17. A video processing method, comprising:

[0545] The conversion between video blocks and their codec representations within a video unit is performed using a palette mode, wherein during the conversion, a predictor palette is used to predict the current palette information of the video blocks, and further wherein the predictor palette is a shared predictor palette when multiple codec units of a video unit have a common shared area.

[0546] 18. The method described in Clause 17, wherein the shared region is associated with any one of TT split, BT split, or QT split.

[0547] 19. The method according to Clause 17, wherein the shared predictor palette is constructed before being applied to multiple codec units.

[0548] 20. The method according to Clause 17, wherein the use of the shared predictor palette is explicitly or implicitly signaled in the codec representation relating to the first palette codec unit of the shared region.

[0549] 21. The method according to Clause 17 further includes: skipping the update of the shared predictor palette after being applied to one of the multiple codec units.

[0550] 22. A video processing method comprising: performing a conversion between a video block in a video unit and a codec representation of the video block using a palette pattern, wherein, during the conversion, a predictor palette is used to predict current palette information of the video block, and further wherein the size of the predictor palette is adaptively changed according to one or more conditions.

[0551] 23. The method described in Clause 22, wherein one or more of the conditions are associated with at least the following: the size of the prior palette information, the dimension 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 codec 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 strip / slice group type and / or picture type of the video block, or the profile / level / hierarchy of the video block.

[0552] 24. A video processing method comprising: performing a conversion between a video block in a video unit and a codec representation of the video block using a palette pattern, wherein, during the conversion, a predictor palette is used to predict current palette information of the video block, and further wherein the predictor palette is updated based on the size or number of entries in the predictor palette.

[0553] 25. The method according to Clause 24, wherein the size of the predictor palette is updated from the previous video block to the current video block.

[0554] 26. The method according to Clause 24, wherein the size of the predictor palette is implicitly or explicitly signaled in the codec representation.

[0555] 27. The method according to Clause 24, wherein the size of the predictor palette depends on one or more of the following: the dimension of the video patch, the quantization parameter of the video patch, or one or more color components of the video patch.

[0556] 28. A video processing method, comprising:

[0557] The conversion between video blocks and their codec representations within a video unit is performed using a palette mode, wherein during the conversion, a predictor palette is used to predict the current palette information of the video blocks, and further wherein the entries in the predictor palette are reordered or modified.

[0558] 29. The method described in Clause 28, wherein when entropy_coding_sync_enabled_flag equals 1, the entries in the predictor palette are reordered or modified.

[0559] 30. The method according to Clause 28, wherein when the end of the codec tree unit syntax is encountered, the entries in the predictor palette are reordered or modified.

[0560] 31. The method described in Clause 28, wherein the entries in the predictor palette are reordered or modified when the current CTB is the first in a new CTU row or when the current CTB is not in the same brick as the previous CTB.

[0561] 32. A video processing method, comprising: performing a conversion between a video block in a video unit and a codec representation of the video block using a palette mode, wherein during the conversion, a predictor palette is used to predict current palette information of the video block, and further wherein the use of the predictor palette is indicated by maintaining a counter that tracks the number of times the predictor palette is used.

[0562] 33. The method according to any one of the preceding clauses, wherein enabling or disabling the predictor palette is associated with at least one of the following: the size of the previous palette information, the dimension of the video block, the content of the video block, the color format of the video block, the color components of the video block, the codec tree structure of the video block, the relative position of the video block in the codec representation, the temporal layer ID of the video block, the strip / slice group type and / or picture type of the video block, or the profile / level / hierarchy of the video block.

[0563] 34. The method according to any one of the preceding clauses, wherein more than one predictor palette is used during the conversion.

[0564] 35. A video decoding apparatus comprising a processor configured to implement one or more of the methods described in clauses 1 to 34.

[0565] 36. A video encoding apparatus comprising a processor configured to implement one or more of the methods described in clauses 1 to 34.

[0566] 37. A computer program product having computer code stored thereon, which, when executed by a processor, causes the processor to perform the method described in any one of clauses 1 to 34.

[0567] 38. The methods, apparatus or systems described in this document.

[0568] The second set of clauses describes certain features and aspects of the technology disclosed in the previous chapters (e.g., items 16-21 in the “Example Technologies and Embodiments” chapter).

[0569] 1. A method for video processing (e.g., such as...) Figure 15 The method shown (1500) includes: performing a conversion between a video block of video 1510 and a video bitstream using a palette mode, in which a palette representing sample values ​​is used to encode and decode the video block, wherein the bitstream conforms to a format rule, wherein the format rule specifies that the bitstream includes a first syntax element or a second syntax element, the first syntax element or the second syntax element specifying the difference between a predefined value (T0) and a maximum allowed palette size.

[0570] 2. The method according to Clause 1, wherein the first syntax element is included at the video processing unit level, which is a sequence of videos, pictures, strips, slices, bricks, or sub-pictures.

[0571] 3. As described in Clause 2, wherein the first syntax element is delta_maximum_palette_size.

[0572] 4. The method described in any of the clauses 1-3, wherein the maximum permissible palette size is set to the value obtained by subtracting the first syntax element from T0.

[0573] 5. The method according to Clause 4, wherein T0 is 2 N An integer of the form N, where N is an integer.

[0574] 6. The method according to Clause 4, wherein T0 is 2 N Integers of the form -K, where N and K are integers.

[0575] 7. The method described in Clause 1, wherein the second syntax element is delta_maximum_palette_size.

[0576] 8. The method according to Clause 7, wherein the maximum permissible palette size is set to the value obtained by adding T0 to the second syntax element.

[0577] 9. The method of Clause 8, where T0 is 2 N An integer of the form N, where N is an integer.

[0578] 10. The method described in Clause 9, wherein the predefined value is equal to zero.

[0579] 11. The method described in Clause 1, wherein the predefined value is not equal to zero.

[0580] 12. The method according to Clause 1, wherein at least one of the first syntax element or the second syntax element is to be binarized using unary encoding, exponential Golomb encoding, Rice encoding, fixed-length encoding, truncated binary encoding, or unsigned integer 0th order Exp-Golomb encoding.

[0581] 13. The method according to Clause 1, wherein at least one of the first syntax element or the second syntax element corresponds to an unsigned integer not less than zero.

[0582] 14. The method according to Clause 1, wherein at least one of the first syntax element or the second syntax element corresponds to a signed integer that is not less than zero or less than zero.

[0583] 15. The method described in Clause 1, wherein the maximum permissible palette size is less than or equal to a predefined value.

[0584] 16. The method described in Clause 1, wherein the predefined value is equal to 1.

[0585] 17. A video processing method comprising: performing a conversion between a video block and a video bitstream using a palette mode, wherein a palette representing sample values ​​is used to encode and decode the video block, wherein the bitstream conforms to a format rule, wherein the format rule specifies that the bitstream includes a first syntax element or a second syntax element, the first syntax element or the second syntax element specifying the difference between a predefined value (T0) and a maximum permissible palette predictor size.

[0586] 18. The method described in accordance with Item 17, wherein the first syntax element is delta_maximum_palette_predictor_size.

[0587] 19. The method according to Clause 17 or 18, wherein the maximum permissible palette predictor size is set to a value obtained by subtracting the first syntax element from T0.

[0588] 20. The method according to Clause 19, wherein T0 is 2 N An integer of the form N, where N is an integer.

[0589] 21. The method according to Clause 19, wherein T0 is 2 N Integers of the form -K, where N and K are integers.

[0590] 22. The method described in accordance with Item 17, wherein the second syntax element is delta_maximum_palette_predictor_size.

[0591] 23. The method according to Clause 22, wherein the maximum permissible palette predictor size is set to a value obtained by adding T0 to the second syntax element.

[0592] 24. The method described according to Clause 23, wherein T0 is 2 N An integer of the form N, where N is an integer.

[0593] 25. The method described in Clause 24, wherein the predefined value is equal to 1.

[0594] 26. The method described in Clause 17, wherein the predefined value is not equal to the maximum permissible palette size.

[0595] 27. The method according to Clause 17, wherein at least one of the first syntax element or the second syntax element is to be binarized in the future using unary encoding, exponential Golomb encoding, Rice encoding, fixed-length encoding, truncated binary encoding, or unsigned integer 0th order Exp-Golomb encoding.

[0596] 28. The method according to Clause 17, wherein at least one of the first syntax element or the second syntax element corresponds to an unsigned integer not less than zero.

[0597] 29. The method according to Clause 17, wherein at least one of the first syntax element or the second syntax element corresponds to a signed integer that is not less than zero or less than zero.

[0598] 30. The method according to Clause 17, wherein the maximum permissible palette predictor size is less than or equal to a predefined value.

[0599] 31. The method described in Clause 17, wherein the predefined value is equal to 1.

[0600] 32. The method according to Clause 17, wherein the maximum permissible palette predictor size is greater than or equal to a predefined value.

[0601] 33. A video processing method comprising: performing a conversion between video blocks and a bitstream of video according to a rule, wherein the video blocks are encoded and decoded using a palette mode, wherein a palette representing sample values ​​is used to encode and decode the video blocks, and wherein the rule specifies a maximum permissible palette size and / or a maximum permissible palette predictor size greater than a non-zero integer K.

[0602] 34. The method described in Clause 33, wherein K is 0.

[0603] 35. The method according to Clause 33, wherein the maximum permissible palette predictor size is less than the maximum permissible palette size.

[0604] 36. The method according to Clause 33, wherein the bitstream includes a syntax element corresponding to the difference between the maximum allowed palette predictor size and the maximum allowed palette size, and the syntax element has a value less than 0.

[0605] 37. The method described in Article 36, wherein a mapping process using the decoded syntax elements is also performed.

[0606] 38. A video processing method comprising: performing a conversion between a video block and a bitstream of a video using a palette mode, wherein a palette representing sample values ​​is used to encode and decode the video block, wherein the bitstream conforms to a format rule, wherein the format rule specifies that a first syntax element indicating the maximum permissible palette predictor size is signaled before a second syntax element indicating the maximum permissible palette predictor size.

[0607] 39. The method according to Clause 38, wherein whether signaling is given to the second syntax element depends on the maximum permissible palette predictor size.

[0608] 40. A video processing method comprising: performing a conversion between a video block and a bitstream of a video using a palette mode, wherein a palette representing sample values ​​is used to encode and decode the video block in the palette mode, wherein the bitstream conforms to a format rule specifying that information related to the palette mode is included at the video processing unit level of the video.

[0609] 41. The method according to Clause 40, wherein the information includes enabling or disabling the palette mode, the maximum allowed palette size, and / or the maximum allowed palette predictor size.

[0610] 42. The method according to Clause 40, wherein the video processing unit corresponds to a picture parameter set (PPS), picture header, strip header, or sub-picture of the video.

[0611] 43. The method according to any one of clauses 40 to 42, wherein the information is associated with one or more sub-pictures of the video.

[0612] 44. The method according to any one of clauses 40 to 42, wherein the information corresponds to a flag indicating whether the color palette is enabled.

[0613] 45. The method according to any one of clauses 40 to 42, wherein the information includes first information related to the color palette and included in a higher-level video unit, and second information related to the color palette and included in a lower-level video unit, and wherein the first information is overwritten by the second information.

[0614] 46. ​​The method according to any one of clauses 40 to 42, wherein the information includes first information related to the color palette and included in a higher-level video unit, and second information related to the color palette and included in a lower-level video unit, and wherein the second information is predicted by the first information.

[0615] 47. The method according to Clause 46, wherein in a lower-level video unit, signaling is provided to indicate the difference between a first value associated with the color palette and a second value corresponding to the first information.

[0616] 48. The method according to Clause 47, wherein the first value is the maximum permissible palette size associated with the lower-level video unit, and the second value is the maximum permissible palette size for signaling notification in the higher-level video unit.

[0617] 49. The method according to Clause 47, wherein the first value is the maximum permissible palette predictor size associated with the lower-level video unit, and the second value is the maximum permissible palette predictor size signaled in the higher-level video unit.

[0618] 50. A video processing method comprising: performing a conversion between video blocks of a video and a bitstream of a video, wherein performing the conversion includes applying an asymmetric cropping operation during a filtering process; and wherein the absolute values ​​of the upper and lower bounds used in the asymmetric cropping operation are different.

[0619] 51. The method according to Clause 50, wherein the filtering process includes a nonlinear adaptive loop filtering (ALF) process or a cross-component ALF process.

[0620] 52. The method according to Clause 50, wherein asymmetric shearing includes using Clip3(-a,b,x),

[0621] in

[0622] Where -a is the lower limit, b is the upper limit, a is not equal to b, and x is a number.

[0623] 53. The method according to Clause 50, wherein asymmetric shearing includes using Clip3(-y,y-1,x) or Clip3(-(y+1),y,x),

[0624] in

[0625] 54. The method described in Clause 52, wherein a lookup table is used to define the upper limit.

[0626] 55. The method described in Clause 54, wherein the maximum is 2 N The form is -1, where N is an integer.

[0627] 56. The method described in Clause 52, wherein a lookup table is used to define the absolute value of the lower bound.

[0628] 57. The method described in Clause 56, wherein the lower limit is -2. N The form is N, where N is an integer.

[0629] 58. The method according to any one of the provisions 1 to 57, wherein the conversion includes encoding video into a bitstream.

[0630] 59. The method according to any one of the clauses 1 to 57, wherein the conversion includes decoding video from the bitstream.

[0631] 60. A video processing apparatus comprising a processor configured to implement the methods described in any one or more of clauses 1 to 59.

[0632] 61. A method for storing a video bitstream, comprising the method of any one of clauses 1 to 59, and further comprising storing the bitstream to a non-transitory computer-readable recording medium.

[0633] 62. A computer-readable medium storing program code that, when executed, causes a processor to perform any one or more of the methods described in clauses 1 to 59.

[0634] 63. A computer-readable medium storing a codec representation or bitstream representation generated according to any of the above methods.

[0635] 64. A video processing apparatus for storing a bitstream representation, wherein the video processing apparatus is configured to implement any one or more of the methods described in clauses 1 to 59.

[0636] The disclosed and other technical solutions, examples, embodiments, modules, and functional operations described in this document can be implemented in digital electronic circuits, or in computer software, firmware, or hardware, including the structures disclosed in this document and their structural equivalents, or in combinations of one or more of them. The disclosed and other embodiments can be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a computer-readable medium for execution by or control of the operation of a data processing apparatus. The computer-readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, a combination of substances influencing machine-readable propagation signals, or a combination of one or more of them. The term "data processing apparatus" encompasses all means, devices, and machines for processing data, including, for example, a programmable processor, a computer, or multiple processors or computers. In addition to hardware, the apparatus may include code that creates an operating environment for the computer program in question, for example, code constituting processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them. Propagation signals are artificially generated signals, such as machine-generated electrical, optical, or electromagnetic signals, which are generated to encode information for transmission to a suitable receiver device.

[0637] A computer program (also called a program, software, software application, script, or code) can be written in any programming language, including compiled or interpreted languages, and can be deployed in any form, including as a standalone program or as a module, component, subroutine, or other unit suitable for a computing environment. A computer program does not necessarily correspond to a file in a file system. A program can be stored as part of a file containing other programs or data (e.g., one or more scripts stored in a markup language file), in a single file dedicated to the program in question, or in multiple collaborative files (e.g., a file storing one or more modules, subroutines, or code sections). A computer program can be deployed to run on a single computer or on multiple computers located in one location or distributed across multiple locations and interconnected by a communication network.

[0638] The processes and logic flows described herein can be executed by one or more programmable processors running one or more computer programs to perform functions by manipulating input data and generating outputs. The processes and logic flows can also be executed by dedicated logic circuits, and the devices can be implemented as dedicated logic circuits, such as FPGAs (Field-Programmable Gate Arrays) or ASICs (Application-Specific Integrated Circuits).

[0639] Processors suitable for executing computer programs include, for example, 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 read-only memory or random access memory, or both. The basic components of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Typically, a computer will also include, or be operatively coupled to, one or more mass storage devices for storing data, such as magnetic disks, magneto-optical disks, or optical disks, to receive data from or transfer data to, or both. However, a computer does not necessarily need to 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, semiconductor memory devices such as EPROM, EEPROM, and flash memory devices; magnetic disks, such as internal hard disks or removable disks; magneto-optical disks; and CD-ROMs and DVD-ROMs. The processor and memory may be supplemented or incorporated therein by dedicated logic circuitry.

[0640] While this patent document includes numerous details, these details should not be construed as limiting any subject matter or scope of the claims, but rather as descriptions of features of specific embodiments of a particular technology. Certain features described in the context of individual embodiments may also be implemented in combination in a single embodiment. Conversely, various functions described in the context of a single embodiment may also be implemented individually in multiple embodiments, or in any suitable sub-combination. Furthermore, although features may be described above as functioning in certain combinations, or even initially claimed to be so, in some cases one or more features from a combination of claims may be removed from the combination, and a combination of claims may refer to a sub-combination or a variation of a sub-combination.

[0641] Similarly, although operations are described in a specific order in the accompanying drawings, this should not be construed as requiring such operations to be performed in the specific order shown or in sequence, or to perform all of the shown operations to achieve the desired result. Furthermore, the separation of various system components in the embodiments described in this patent document should not be construed as requiring such separation in all embodiments.

[0642] Only some implementations and examples are described; other implementations, enhancements, and variations can be made based on the content described and illustrated in this patent document.

Claims

1. A video processing method, comprising: The conversion between video blocks and the video bitstream is performed using a palette mode, in which a palette representing sample values ​​is used to encode and decode the video blocks. The bitstream described therein conforms to the format rules. The formatting rules specify that the bitstream includes a first syntax element or a second syntax element, wherein the first syntax element or the second syntax element specifies the difference between a predefined value and the maximum allowed palette size. wherein, when the bitstream includes the first syntax element, the maximum allowed palette size is set to a value obtained by subtracting the first syntax element from a predefined value, wherein the predefined value is 2 N an integer of the form 2 N an integer of the form N-K, where N and K are integers; and when the bitstream includes the second syntax element, the maximum allowed palette size is set to a value obtained by adding a predefined value to the second syntax element, wherein the predefined value is 2 N integer of the form 2. The method according to claim 1, wherein the first syntax element is included at the video processing unit level, the video processing unit level being a sequence, image, strip, slice, brick, or sub-image of the video.

3. The method of claim 2, wherein the first syntax element is delta_maximum_palette_size.

4. The method of claim 1, wherein the second syntax element is delta_maximum_palette_size.

5. The method according to claim 1, wherein the predefined value is not equal to zero.

6. The method of claim 1, wherein at least one of the first syntax element or the second syntax element is binarized using unary encoding, exponential Golomb encoding, Rice encoding, fixed-length encoding, truncated binary encoding, or unsigned integer 0th-order Exp-Golomb encoding.

7. The method of claim 1, wherein at least one of the first syntax element or the second syntax element corresponds to an unsigned integer not less than zero.

8. The method of claim 1, wherein at least one of the first syntax element or the second syntax element corresponds to a signed integer that is not less than zero or less than zero.

9. The method of claim 1, wherein the maximum permissible palette size is less than or equal to the predefined value.

10. The method of claim 1, wherein the predefined value is equal to 1.

11. The method according to claim 1, wherein, The maximum permissible palette size and / or the maximum permissible palette predictor size is greater than a non-zero integer Q.

12. The method of claim 11, wherein Q is 0.

13. The method of claim 11, wherein the maximum permissible palette predictor size is smaller than the maximum permissible palette size.

14. The method of claim 11, wherein the bitstream includes a syntax element corresponding to the difference between the maximum allowed palette predictor size and the maximum allowed palette size, and the syntax element has a value less than 0.

15. The method of claim 14, wherein a mapping process using the decoded syntax elements is further performed.

16. The method according to claim 1, The formatting rule specifies that a third syntax element indicating the maximum permissible palette predictor size should be signaled before a fourth syntax element indicating the maximum permissible palette size.

17. The method of claim 16, wherein whether the second syntax element is transmitted via signal depends on the maximum permissible palette predictor size.

18. The method according to claim 1, The formatting rules specify that information related to the palette mode is included at the video processing unit level of the video.

19. The method of claim 18, wherein the information includes enabling or disabling the palette mode, the maximum allowed palette size, and / or the maximum allowed palette predictor size.

20. The method of claim 18, wherein the video processing unit corresponds to a picture parameter set (PPS), picture header, strip header, or sub-picture of the video.

21. The method according to any one of claims 18 to 20, wherein the information is associated with one or more sub-pictures of the video.

22. The method according to any one of claims 18 to 20, wherein the information corresponds to a flag indicating whether the palette is enabled.

23. The method according to any one of claims 18 to 20, wherein the information includes first information related to the palette and included in a higher-level video unit, and second information related to the palette and included in a lower-level video unit, and wherein the first information is overwritten by the second information.

24. The method of any one of claims 18 to 20, wherein the information includes first information related to the color palette and included in a higher-level video unit, and second information related to the color palette and included in a lower-level video unit, and wherein the second information is predicted by the first information.

25. The method of claim 24, wherein, The difference between a first value associated with the color palette and a second value corresponding to the first information is transmitted via a signal in the lower-level video unit.

26. The method of claim 25, wherein, The first value is the maximum permissible palette size associated with the lower-level video unit, and the second value is the maximum permissible palette size transmitted via signal in the higher-level video unit.

27. The method of claim 25, wherein, The first value is the maximum permissible palette predictor size associated with the lower-level video unit, and the second value is the maximum permissible palette predictor size transmitted via signal in the higher-level video unit.

28. The method according to claim 1, wherein The transformation includes applying an asymmetric shearing operation during the filtering process; and The absolute values ​​of the upper and lower limits used in asymmetric shearing operations are different.

29. The method of claim 28, wherein the filtering process includes a nonlinear adaptive loop filtering (ALF) process or a cross-component ALF process.

30. The method of claim 28, wherein the asymmetric shearing comprises using Clip3(-a, b, x), Where Clip3(x, y, z) = as well as Where -a is the lower limit, and b is the upper limit, and a is not equal to b, and x is a number.

31. The method of claim 28, wherein the asymmetric shearing comprises using Clip3(-y, y-1, x) or Clip3(-(y+1), y, x), where Clip3(x, y, z) = max {min {x, z}, y} = min {max {x, y}, z} ​ 32. The method of claim 30, wherein a lookup table is used to define the upper limit.

33. The method of claim 32, wherein the upper limit is 2 M -1, where M is an integer.

34. The method of claim 30, wherein a lookup table is used to define the absolute value of the lower bound.

35. The method of claim 34, wherein the lower limit is -2 M in the form wherein M is an integer.

36. The method of claim 1, wherein the conversion comprises encoding the video into the bitstream.

37. The method of claim 1, wherein the conversion comprises decoding the video from the bitstream.

38. A video processing method, comprising: The conversion between video blocks and the video bitstream is performed using a palette mode, in which a palette representing sample values ​​is used to encode and decode the video blocks. The bitstream described therein conforms to the format rules. The format rules specify that the bitstream includes a first syntax element or a second syntax element, wherein the first syntax element or the second syntax element specifies the difference between a predefined value and the maximum allowed palette predictor size. Wherein, when the bitstream includes the first syntax element, the maximum allowed palette predictor size is set to a value obtained by subtracting the first syntax element from the predefined value, wherein the predefined value is 2. N Integers of the form 2 or 2 N Integers of the form -K, where N and K are integers; and when the bitstream includes the second syntax element, the maximum allowed palette predictor size is set to a value obtained by adding a predefined value to the second syntax element, wherein the predefined value is 2 N or the predefined value is equal to 1.

39. The method of claim 38, wherein, The first syntax element is delta_maximum_palette_predictor_size.

40. The method of claim 38, wherein the second syntax element is 'delta_maximum_palette_predictor_size'.

41. The method of claim 38, wherein the predefined value is not equal to the maximum permissible palette size.

42. The method of claim 38, wherein at least one of the first syntax element or the second syntax element is binarized using unary encoding, exponential Golomb encoding, Rice encoding, fixed-length encoding, truncated binary encoding, or unsigned integer 0-order Exp-Golomb encoding.

43. The method of claim 38, wherein at least one of the first syntax element or the second syntax element corresponds to an unsigned integer not less than zero.

44. The method of claim 38, wherein at least one of the first syntax element or the second syntax element corresponds to a signed integer that is not less than zero or less than zero.

45. The method of claim 38, wherein the maximum permissible palette predictor size is less than or equal to the predefined value.

46. ​​The method of claim 38, wherein the maximum permissible palette predictor size is greater than or equal to the predefined value.

47. The method of claim 38, wherein, The maximum permissible palette size and / or the maximum permissible palette predictor size is greater than a non-zero integer Q.

48. The method of claim 47, wherein Q is 0.

49. The method of claim 47, wherein the maximum permissible palette predictor size is smaller than the maximum permissible palette size.

50. The method of claim 47, wherein the bitstream includes a syntax element corresponding to the difference between the maximum allowed palette predictor size and the maximum allowed palette size, and the syntax element has a value less than 0.

51. The method of claim 50, wherein a mapping process using decoded syntax elements is further performed.

52. The method according to claim 38, The format rule specifies that a third syntax element indicating the maximum permissible palette predictor size should be signaled before a fourth syntax element indicating the maximum permissible palette size.

53. The method of claim 52, wherein whether the second syntax element is transmitted via signal depends on the maximum permissible palette predictor size.

54. The method according to claim 38, The formatting rules specify that information related to the palette mode is included at the video processing unit level of the video.

55. The method of claim 54, wherein the information includes enabling or disabling the palette mode, the maximum allowed palette size, and / or the maximum allowed palette predictor size.

56. The method according to claim 54, wherein the video processing unit corresponds to a picture parameter set (PPS), picture header, strip header, or sub-picture of the video.

57. The method according to any one of claims 54 to 56, wherein the information is associated with one or more sub-pictures of the video.

58. The method according to any one of claims 54 to 56, wherein the information corresponds to a flag indicating whether the palette is enabled.

59. The method according to any one of claims 54 to 56, wherein the information includes first information related to the color palette and included in a higher-level video unit, and second information related to the color palette and included in a lower-level video unit, and wherein the first information is overwritten by the second information.

60. The method of any one of claims 54 to 56, wherein the information includes first information related to the color palette and included in a higher-level video unit, and second information related to the color palette and included in a lower-level video unit, and wherein the second information is predicted by the first information.

61. The method of claim 60, wherein, The difference between a first value associated with the color palette and a second value corresponding to the first information is transmitted via a signal in the lower-level video unit.

62. The method of claim 61, wherein, The first value is the maximum permissible palette size associated with the lower-level video unit, and the second value is the maximum permissible palette size transmitted via signal in the higher-level video unit.

63. The method of claim 61, wherein, The first value is the maximum permissible palette predictor size associated with the lower-level video unit, and the second value is the maximum permissible palette predictor size transmitted via signal in the higher-level video unit.

64. The method according to claim 38, in, The transformation includes applying an asymmetric shearing operation during the filtering process; and The absolute values ​​of the upper and lower limits used in asymmetric shearing operations are different.

65. The method of claim 64, wherein the filtering process includes a nonlinear adaptive loop filtering (ALF) process or a cross-component ALF process.

66. The method of claim 64, wherein the asymmetric shearing comprises using Clip3(-a, b, x), Where Clip3(x, y, z) = as well as Where -a is the lower limit, and b is the upper limit, and a is not equal to b, and x is a number.

67. The method of claim 64, wherein the asymmetric shearing comprises using Clip3(-y, y-1, x) or Clip3(-(y+1), y, x), where Clip3(x, y, z) = max {min {x, z}, y} = min {max {x, y}, z} ​ 68. The method of claim 66, wherein a lookup table is used to define the upper limit.

69. The method of claim 68, wherein the upper limit is 2 M -1 in the form where M is an integer.

70. The method of claim 66, wherein a lookup table is used to define the absolute value of the lower bound.

71. The method of claim 70, wherein the lower limit is -2 M in the form wherein M is an integer.

72. The method of claim 38, wherein the conversion comprises encoding the video into the bitstream.

73. The method of claim 38, wherein the conversion includes decoding the video from the bitstream.

74. A video processing apparatus comprising a processor configured to implement the method of any one of claims 1 to 73.

75. A method of storing a video bitstream, comprising: The method of any one of claims 1 to 73 is used to generate a bit stream, and the bit stream is stored in a non-transitory computer-readable recording medium.

76. A computer-readable medium storing program code, which, when executed, causes a processor to implement the method of any one of claims 1 to 73.

77. A computer-readable medium having a computer program and a bit stream stored thereon, wherein the computer program, when executed by a processor, implements the method of any one of claims 1 to 73 to generate the bit stream.

78. A video processing apparatus for storing a bitstream representation, wherein, The video processing apparatus is configured to perform the method according to any one of claims 1 to 73.

Citation Information

Patent Citations

  • Methods and systems for palette table coding

    US20160234498A1