Palette codec mode

By using dictionary-based encoding/decoding modes and palette prediction technology, the problem of low encoding/decoding efficiency in existing video encoding/decoding standards when processing screen content is solved, achieving more efficient video encoding/decoding.

CN121037572APending Publication Date: 2025-11-28DOUYIN CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202511421930.9
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2019-11-30
Filing Date
2020-11-30
Publication Date
2025-11-28

AI Technical Summary

Technical Problem

Existing video codec standards struggle to effectively utilize redundant information between video blocks when processing screen content, resulting in low codec efficiency.

Method used

A dictionary-based encoding/decoding mode is adopted, which encodes video blocks by using one or more dictionaries, determines encoding/decoding characteristics based on the size of the video block and information in the bitstream representation, uses a palette mode to predict the current block, and updates the dictionary during the encoding/decoding process.

Benefits of technology

It improves the efficiency of video encoding and decoding, especially when processing screen content, by reducing redundant information and improving encoding and decoding quality.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN121037572A_ABST
    Figure CN121037572A_ABST
Patent Text Reader

Abstract

A method of video processing is described. The method includes performing a conversion between a current block of the video and a bitstream of the video, where the current block of the video is encoded and decoded using a palette mode in which the current block is represented using a palette of representative sample values, and where the conversion includes encoding and decoding the current block based on use of local dual trees in the conversion. Palette predictors for a palette are selectively saved and loaded in a palette mode.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross-references to related applications

[0002] This divisional application is a divisional application of International Patent Application No. PCT / CN2019 / 122267, filed on November 30, 2020, entitled “Palette Encoding / Decoding Mode”, filed on November 30, 2019. Technical Field

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

[0004] Digital video consumes the largest share of bandwidth in the internet and other digital communication networks. As the number of connected user devices capable of receiving and displaying video increases, the bandwidth demand for digital video is expected to continue to grow. Summary of the Invention

[0005] Devices, systems, and methods related to digital video encoding and decoding are described, including dictionary-based encoding and decoding modes for screen content encoding and decoding. The described methods are applicable to existing video encoding and decoding standards (e.g., High Efficiency Video Codec (HEVC) and / or Universal Video Codec (VVC)) 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 a current block of video and a bitstream representation of the video, wherein the current block is encoded using one or more dictionaries in a dictionary-based encoding / decoding mode, and wherein the conversion is based on one or more dictionaries.

[0007] In another representative aspect, the disclosed technology can be used to provide a method for video processing. The method includes: for a conversion between a video comprising video blocks and a bitstream representation of the video, determining, according to rules and based on one or more codec characteristics of the video blocks, to use one or more dictionaries for the video blocks; and performing the conversion based on this determination, wherein the codec characteristics include the size of the video blocks and / or information in the bitstream representation.

[0008] In another representative aspect, the disclosed technology can be used to provide a method for video processing. This method includes: for a current block of a video to which a dictionary-based encoding / decoding mode is applied, determining a predicted block of the current block based on one or more entries in the dictionary; and performing a conversion between the current block and a bitstream representation of the video based on this determination.

[0009] In another representative aspect, the disclosed technology can be used to provide a method for video processing. This method includes performing a conversion between a current video unit of a current video region and a bitstream representation of the video, wherein the current video unit is encoded and decoded using a dictionary in a dictionary-based encoding / decoding mode, and wherein the dictionary is reset before encoding / decoding the current video region and updated after encoding / decoding the current video unit.

[0010] In another representative aspect, the disclosed technology can be used to provide a method for video processing. This method includes performing a conversion between a current block of video and a bitstream representation of the video, wherein the current block is encoded and decoded using a dictionary in a dictionary-based encoding / decoding mode, and wherein a predicted block or reconstructed block of the current block is derived by sorting the entries in the dictionary.

[0011] In another representative aspect, the disclosed technology can be used to provide a method for video processing. This method includes performing a conversion between a current block of video and a bitstream representation of the video, wherein the current block is encoded and decoded using a dictionary in a dictionary-based encoding / decoding mode, and wherein the index of one or more entries of the dictionary is included in the bitstream representation.

[0012] In another representative aspect, the disclosed technology can be used to provide a method for video processing. This method includes performing a conversion between a current block of video and a bitstream representation of the video, wherein the current block is encoded and decoded using a palette pattern, and wherein the bitstream representation includes syntax elements representing escape samples of each of the coefficient groups of the current block.

[0013] In another representative aspect, the above method is implemented in the form of processor-executable code and stored in a computer-readable program medium.

[0014] In another representative aspect, a device configured or operable to perform the above-described methods is disclosed. This device may include a processor programmed to implement the methods.

[0015] In another representative aspect, video decoder devices can implement the methods described herein.

[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 intra-frame block copying is shown.

[0018] Figure 2 Five examples of airspace proximity candidates are shown.

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

[0020] Figure 4 An example of using palette prediction values ​​to signal palette entries is shown.

[0021] Figure 5 Examples of horizontal and vertical traversal scans are shown.

[0022] Figure 6 This shows an example of encoding and decoding a palette index.

[0023] Figure 7A and Figure 7B An example of the Minimum Chromaticity Inter-Frame Prediction Unit (SCIPU) is shown.

[0024] Figure 8 This shows an example of the problem of repeating palette (PLT) entries in the case of a local dual-tree.

[0025] Figure 9 An example of the encoding / decoding process based on dictionary-based encoding / decoding modes is shown.

[0026] Figure 10 An example of the update process for a dictionary-based encoding / decoding mode is shown.

[0027] Figure 11 An example of a block template is shown.

[0028] Figure 12 This is a flowchart illustrating an example of a video processing method.

[0029] Figure 13 This is a flowchart of another example of a video processing method.

[0030] Figure 14A This is a block diagram of an example video processing device.

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

[0032] Figure 15 This is a block diagram illustrating an example video codec system.

[0033] Figure 16 This is a block diagram showing an encoder according to some embodiments of the disclosed technology.

[0034] Figure 17 This is a block diagram showing a decoder according to some embodiments of the disclosed technology.

[0035] Figures 18A to 18CThe flowchart shows an example method for video processing based on some implementations of the disclosed technology. Detailed Implementation

[0036] This document provides various techniques that decoders of image or video bitstreams can use to improve the quality of decompressed or decoded digital video or images. For simplicity, the term "video" used herein includes both sequences of pictures (traditionally referred to as video) and individual images. Furthermore, video encoders may also implement these techniques during the encoding process to reconstruct decoded frames for further encoding.

[0037] The chapter headings used in this document are for ease of understanding and do not limit the embodiments and techniques to the corresponding chapters. Thus, embodiments from one chapter can be combined with embodiments from other chapters.

[0038] 1. Summary

[0039] This document relates to video codec technology. Specifically, it relates to a dictionary-based codec model for encoding and decoding screen content. It is applicable to existing video codec standards, such as HEVC, or upcoming standards (General Video Codec). It is also applicable to future video codec standards or video codecs.

[0040] 2. Example Implementation of Video Encoding and Decoding

[0041] 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 Visual. These two organizations jointly developed the H.262 / MPEG-2 video and H.264 / MPEG-4 Advanced Video Codec (AVC) and H.265 / HEVC standards. Since H.262, video codec standards have been based on a hybrid video codec architecture, 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 incorporated them into reference software called the Joint Exploration Model (JEM). In April 2018, VCEG (Q6 / 16) and ISO / IEC JTC1 SC29 / WG11 (MPEG) established the Joint Video Experts Group (JVET) to work on the VVC standard, with the goal of reducing the bit rate by 50% compared to HEVC.

[0042] 2.1 Intra-frame block copying

[0043] Intra-frame block copy (IBC), also known as current picture reference, has been adopted in HEVC Screen Content Codec Extension (HEVC-SCC) and the current VVC test model (VTM-4.0). IBC extends the concept of motion compensation from inter-frame codec to intra-frame codec. Figure 1 As shown, when IBC is applied, the current block is predicted from a reference block in the same image. Samples in the reference block must be reconstructed before the current block is encoded or decoded. While IBC is not very efficient for most camera-captured sequences, it shows significant codec gains for screen content. This is because screen content images contain many repeating patterns, such as icons and text characters. IBC effectively eliminates redundancy between these repeating patterns. In HEVC-SCC, IBC can be applied if the codec unit (CU) of inter-frame encoding / decoding selects the current image as its reference image. In this case, the MV is renamed to a block vector (BV), and the BV always has integer pixel precision. For compatibility with the main profile HEVC, the current image is marked as the "long-term" reference image in the decoded image buffer (DPB). It should be noted that, similarly, in multi-view / 3D video codec standards, inter-view reference images are also marked as "long-term" reference images.

[0044] By following the BV to find its reference block, predictions can be generated by copying the reference block. The residual can be obtained by subtracting the reference pixel from the original signal. Transformation and quantization can then be applied as in other codec modes.

[0045] However, some or all pixel values ​​may be undefined when the reference block is outside the image, overlaps with the current block, is outside the reconstructed region, or is outside the valid region subject to certain constraints. Essentially, there are two solutions to handle such problems. One is to disallow this situation, such as in bitstream consistency. The other is to apply padding to those undefined pixel values. These solutions are described in detail in the following sub-discussion.

[0046] 2.1.1 HEVC IBC Screen Content Encoding and Decoding Extension

[0047] In HEVC's screen content encoding and decoding extensions, when a block uses the current image as a reference, it should ensure that the entire reference block is within the available reconstructable area, as shown in the specification text below:

[0048] The variables offsetX and offsetY are derived as follows:

[0049] offsetX = ( ChromaArrayType = = 0 )? 0: (mvCLX[0] & 0x7? 2:0) (8-106)

[0050] offsetY = ( ChromaArrayType = = 0 )? 0: (mvCLX[1] & 0x7? 2:0) (8-107)

[0051] The requirement for bitstream consistency is that, when the reference image is the current image, the luminance motion vector mvLX should adhere to the following constraints:

[0052] 1. When the procedure for deriving the availability of the z-scan sequence block specified in Clause 6.4.1 is invoked, (xCurr,yCurr) is set to be equal to (xCb,yCb), and the adjacent brightness position (xNbY,yNbY) is set to be equal to (xPb+(mvLX[0]).

[0053] When >>2)-offsetX,yPb+(mvLX[1]>>2)-offsetY) is used as input, the output should be true.

[0054] 2. When the derived procedure for the availability of z-scan sequence blocks specified in Clause 6.4.1 is invoked, and (xCurr,yCurr) is set to be equal to (xCb,yCb), and the adjacent brightness position (xNbY,yNbY) is set to be equal to (xPb+(mvLX[0]>>2)+nPbW-1+offsetX,yPb+(mvLX[1]>>2)+nPbH-1+offsetY) is taken as input, the output should be true.

[0055] 3. One or two of the following conditions should be true:

[0056] The value of -(mvLX[0]>>2)+nPbW+xB1+offsetX is less than or equal to 0.

[0057] The value of -(mvLX[1]>>2)+nPbH+yB1+offsetY is less than or equal to 0.

[0058] 4. The following conditions should be true:

[0059] (xPb+(mvLX[0]>>2)+nPbSw-1+offsetX) / CtbSizeY-xCurr / CtbSizeY<=yCurr / CtbSizeY-(yPb+(mvLX[1]>>2)+nPbSh-1+offsetY) / CtbSizeY(8-108)

[0060] Therefore, situations where the reference block overlaps with the current block or is outside the image will not occur. No need to fill the reference or prediction blocks.

[0061] 2.1.2 IBC in the VVC Test Model

[0062] In the current VVC test model, specifically the VTM-4.0 design, the entire reference block should be together with the current codec tree unit (CTU) and should not overlap with the current block. Therefore, there is no need to pad the reference or prediction block. The IBC flag is encoded as the prediction mode of the current CU. Thus, for each CU, there are a total of three prediction modes: MODE_INTRA, MODE_INTER, and MODE_IBC.

[0063] 2.1.2.1 IBC Merge Mode

[0064] In IBC Merge mode, indices pointing to entries in the IBC Merge candidate list are parsed from the bitstream. The construction of the IBC Merge list can be summarized by a sequence of the following steps:

[0065] ●Step 1: Exporting candidate spatial domains

[0066] ●Step 2: Insertion of HMVP candidates

[0067] ●Step 3: Insertion of Pairwise Average Candidate Values

[0068] In the derivation of spatial merge candidates, up to four merge candidates are selected from those located at the positions shown in the figure. The derivation order is A1, B1, B0, A0, and B2. Position B2 is considered only if any PU at positions A1, B1, B0, or A0 is unavailable (e.g., because it belongs to another stripe or slice) or is not encoded / decoded using IBC mode. After the candidate at position A1 is added, the insertion of the remaining candidates is subject to a redundancy check, which ensures that candidates with the same motion information are excluded from the list, thereby improving encoding / decoding efficiency.

[0069] After inserting a spatial candidate, if the size of the IBCMeterge list is still smaller than the maximum IBCMeterge list size, an IBC candidate from the HMVP table can be inserted. Redundancy checks are performed when inserting an HMVP candidate.

[0070] Finally, the pairwise average candidates are inserted into the IBCMeerge list.

[0071] A Merge candidate is considered an invalid Merge candidate when the reference block identified by the Merge candidate is outside the image, overlaps with the current block, is outside the reconstructed region, or is outside the valid region subject to certain constraints.

[0072] Note that invalid Merge candidates may be inserted into the IBC Merge list.

[0073] JVET-N0843 has been adopted for VVC. In JVET-N0843, the BV predictions from the Merge and AMVP modes in IBC will share a common list of predictions, which includes the following elements:

[0074] ○ Two adjacent airspace locations (e.g.) Figure 2 (A1, B1)

[0075] ○5 HMVP entries

[0076] ○ The default value is the zero vector.

[0077] For Merge mode, the first 6 entries of the list will be used; for AMVP mode, the first 2 entries will be used. Furthermore, the list must conform to the shared Merge list region requirements (the same list shared within SMR).

[0078] In addition to the aforementioned BV prediction candidate list, JVET-N0843 proposes a simplified pruning operation between the HMVP candidate and the existing Merge candidate (A1, B1). In this simplification, there will be up to two pruning operations, as it only compares the first HMVP candidate with the spatial Merge candidate.

[0079] In the latest VVC and VTM5, it is proposed to explicitly use syntax constraints to disable the 128x128 IBC mode on top of the current bitstream constraints in previous VTM and VVC versions, which makes the presence of the IBC flag dependent on the CU size <128x128.

[0080] 2.1.2.2 IBC AMVP Mode

[0081] In IBC AMVP mode, the AMVP index pointing to an entry in the IBC AMVP list is parsed from the bitstream. The construction of the IBC AMVP list can be summarized as follows:

[0082] Step 1: Derivation of spatial domain candidates

[0083] Check A0 and A1 until a usable candidate is found.

[0084] Check B0, B1, B2 until a usable candidate is found.

[0085] Step 2: Insertion of HMVP candidates

[0086] Step 3: Insertion of zero candidates

[0087] After inserting spatial candidates, if the size of the IBC AMVP list is still smaller than the maximum IBC AMVP list size, then IBC candidates from the HMVP table can be inserted.

[0088] Finally, the zero candidate was inserted into the IBC·AMVP list.

[0089] 2.1.2.3 IBC Virtual Buffer

[0090] The concept of a virtual buffer is introduced to help describe the reference region of the IBC prediction mode and has been adopted in the VVC draft. For a CTU size of ctbSize, we represent wIbcBuf = 128 * 128 / ctbSize, and define a virtual IBC buffer IbcBuf with a width of wIbcBuf and a height of ctbSize. Therefore,

[0091] For a CTU with dimensions of 128x128, the ibcBuf also has dimensions of 128x128.

[0092] For a CTU with dimensions of 64x64, the ibcBuf has dimensions of 256x64.

[0093] For a CTU with dimensions of 32x32, the ibcBuf has dimensions of 512x32.

[0094] Note that the width and height of the VPDU are min(ctbSize, 64). We represent Wv = min(ctbSize, 64).

[0095] The virtual IBC buffer ibcBuf is maintained as follows.

[0096] (1) At the beginning of decoding each CTU line, refresh the entire ibcBuf with the value (-1).

[0097] (2) At the beginning of decoding the VPDU(xVPDU, yVPDU) relative to the top left corner of the image, set ibcBuf[x][y] = -1, where x = xVPDU%wIbcBuf,…,xVPDU%wIbcBuf+Wv-1; y = yVPDU%ctbSize,…,yVPDU%ctbSize+Wv-1.

[0098] (3) After decoding, the CU containing (x, y) relative to the top left of the image is set.

[0099] ibcBuf[x%wIbcBuf][y%ctbSize]=recSample[x][y]

[0100] Therefore, bitstream constraints can be simply described as...

[0101] The requirement for bitstream consistency is that, for bv, ibcBuf[(x+bv[0])%wIbcBuf][(y+bv[1])%ctbSize] should not be equal to -1.

[0102] Utilizing the concept of the IBC reference buffer, it also simplifies the decoding process by avoiding reference frame inter-interpolation and motion compensation processes, including sub-block processes.

[0103] Furthermore, the text typically processed by the codec unit in JVET-P2001 using IBC prediction mode is shown below.

[0104] The input to this process is:

[0105] 5. Luminance position (xCb, yCb), which specifies the top-left sample of the current codec block relative to the top-left luminance sample of the current image.

[0106] 6. The variable cbWidth specifies the width of the current codec block in the luminance sample.

[0107] 7. The variable cbHeight specifies the height of the current codec block in the luminance sample.

[0108] 8. The variable treeType specifies whether to use a single tree or a double tree. If a double tree is used, it specifies whether the current tree corresponds to the luminance component or the chrominance component.

[0109] The output of this process is a reconstructed image modified before loop filtering.

[0110] Call the quantization parameter export procedure specified in Clause 8.7.1, with the luminance position (xCb, yCb), the width cbWidth of the current codec block in the luminance sample, the height cbHeight of the current codec block in the luminance sample, and the variable treeType as input.

[0111] The variable IsGt4by4 is derived as follows:

[0112] IsGt4by4=(cbWidth*cbHeight>16)? True: False (8-893)

[0113] The decoding process of the codec unit using IBC prediction mode includes the following ordered steps:

[0114] 1. The block vector components of the current encoding / decoding unit are derived as follows:

[0115] 9. Call the derivation procedure for the block vector components specified in Clause 8.6.2.1, with the luma codec block position (xCb, yCb), luma codec block width cbWidth, and luma codec block height cbHeight as inputs, and the luma block vector bvL as output.

[0116] 10. When treeType equals SINGLE_TREE, call the chroma block vector derivation process in clause 8.6.2.5, which takes the luma block vector bvL as input and the chroma block vector bvC as output.

[0117] 2. The prediction samples of the current encoding / decoding unit are exported as follows:

[0118] 11. Call the decoding process of the IBC block specified in Clause 8.6.3.1, with the luma codec block position (xCb, yCb), luma codec block width cbWidth and luma codec block height cbHeight, luma block vector bvL, and variable cIdx set to 0 as input, and the IBC predicted samples (predSamples) of the (cbWidth)x(cbHeight) array predSamplesL as output.

[0119] 12. When treeType equals SINGLE_TREE, the prediction samples of the current codec unit are derived as follows:

[0120] i. Call the decoding process of the IBC block specified in Clause 8.6.3.1, with the luma codec block position (xCb, yCb), luma codec block width cbWidth and luma codec block height cbHeight, chroma block vector bvC and variable cIdx set to 1 as input, and the IBC predicted samples (predSamples) of the array predSamplesCb, which is the predicted chroma samples of the chroma component Cb, as output.

[0121] ii. Call the decoding procedure for the IBC block specified in Clause 8.6.3.1, with the luma codec block position (xCb, yCb), luma codec block width cbWidth and luma codec block height cbHeight, chroma block vector bvC and variable cIdx set to 2 as input, and with the IBC predicted samples (predSamples) of the array predSamplesCr as the predicted chroma samples of the chroma component Cr as output.

[0122] 3. The residual samples of the current encoding / decoding unit are exported as follows:

[0123] 13. Call the decoding process of the residual signal of the codec block encoded and decoded in inter-frame prediction mode as specified in Clause 8.5.8, wherein the input is the position (xTb0, yTb0) set to be equal to the luma position (xCb, yCb), the width nTbW set to be equal to the width cbWidth of the luma codec block, the height nTbH set to be equal to the height cbHeight of the luma codec block, and the variable cIdx set to be equal to 0, and the output is the array resSamplesL.

[0124] 14. When treeType equals SINGLE_TREE, call the decoding process of the residual signal of the codec block encoded and decoded in inter-frame prediction mode as specified in Clause 8.5.8, with the following inputs: the variable cIdx set to the position (xTb0, yTb0) of the chroma position (xCb / SubWidthC, yCb / SubHeightC), the width nTbW set to the width cbWidth / SubWidthC of the chroma codec block, the height nTbH set to the height cbHeight / SubHeightC of the chroma codec block, and the variable cIdx set to 1, and the array resSamplesCb as the output.

[0125] 15. When treeType equals SINGLE_TREE, call the decoding process of the residual signal of the codec block encoded and decoded in inter-frame prediction mode as specified in Clause 8.5.8, with the following inputs: position (xTb0, yTb0) set to equal the chroma position (xCb / SubWidthC, yCb / SubHeightC), width nTbW set to equal the width cbWidth / SubWidthC of the chroma codec block, height nTbH set to equal the height cbHeight / SubHeightC of the chroma codec block, and variable cIdx set to 2, and the array resSamplesCr as the output.

[0126] 4. The reconstructed sample data of the current encoding / decoding unit is exported as follows:

[0127] 16. Call the image reconstruction process for the color components specified in Clause 8.7.5, taking as input a block position (xB, yB) set to (xCb, yCb), a block width bWidth set to cbWidth, a block height bHeight set to cbHeight, a variable treeType, a variable cIdx set to 0, an array predSamples set to predSamplesL (cbWidth) x (cbHeight), and an array resSamples set to resSamplesL (cbWidth) x (cbHeight). The output is the reconstructed image modified before loop filtering.

[0128] 17. When treeType equals SINGLE_TREE, call the image reconstruction process for the color components specified in Clause 8.7.5, with the block position (xB, yB) set to (xCb / SubWidthC, yCb / SubHeightC), the block width bWidth set to cbWidth / SubWidthC, the block height bHeight set to cbHeight / SubHeightC, the variable treeType, the variable cIdx set to 1, the array predSamples set to (cbWidth / SubWidthC) x (cbHeight / SubHeightC) set to predSamplesCb, and the array resSamples set to (cbWidth / SubWidthC) x (cbHeight / SubHeightC) set to resSamplesCb as input, and the output being the reconstructed image modified before loop filtering.

[0129] 18. When treeType equals SINGLE_TREE, call the image reconstruction process for the color components specified in Clause 8.7.5, with the block position (xB, yB) set to (xCb / SubWidthC, yCb / SubHeightC), the block width bWidth set to cbWidth / SubWidthC, the block height bHeight set to cbHeight / SubHeightC, the variable treeType, the variable cIdx set to 2, the array predSamples set to (cbWidth / SubWidthC) x (cbHeight / SubHeightC) set to predSamplesCr, and the array resSamples set to (cbWidth / SubWidthC) x (cbHeight / SubHeightC) set to resSamplesCr as input, and the output being the reconstructed image modified before loop filtering.

[0130] 2.2 Palette Mode in HEVC Screen Content Codec Extension (HEVC-SCC)

[0131] 2.2.1 The concept of palette mode

[0132] 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 sign for (potentially quantized) component values. These types of pixels are called escape pixels. Palette mode is as follows... Figure 3 As shown. Figure 3 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.

[0133] Palette mode in HEVC-SSC

[0134] For encoding and decoding of palette entries, palette predictors are maintained. The maximum size of the palette and the palette predictor are signaled in the SPS. In HEVC-SCC, the `palette_predictor_initializer_present_flag` is introduced in the PPS. When this flag is 1, the entry for initializing the palette predictor is signaled in the bitstream. Palette predictors are initialized at the beginning of each CTU line, each stripe, and each slice. Depending on the value of `palette_predictor_initializer_present_flag`, the palette predictor is either reset to 0 or initialized using the palette predictor initializer entry signaled in the PPS. In HEVC-SCC, a palette predictor initializer of size 0 is enabled to allow explicit disabling of palette predictor initialization at the PPS level.

[0135] For each entry in the palette prediction values, a signaling notification reuse flag is used to indicate whether it is part of the current palette. This is as follows: Figure 4 As shown, a reuse flag is sent using zero-run-length coding. Subsequently, zero-order exponent Golomb codes are used to signal the number of new palette entries. Finally, the component values ​​of the new palette entries are signaled.

[0136] The palette index is encoded and decoded using horizontal and vertical traversal scans, such as... Figure 5 As shown. The scan order is explicitly signaled in the bitstream using the palette_transpose_flag. For the remainder of this section, it is assumed that the scan is horizontal.

[0137] The palette index is encoded and decoded using two main palette sample modes: 'INDEX' and 'COPY_ABOVE'. As previously mentioned, escape symbols are also signaled as part of the 'INDEX' mode and are assigned an index equal to the maximum palette size. A flag is used to signal this mode, except when the top row or previous mode is 'COPY_ABOVE'. In 'COPY_ABOVE' mode, the palette index of the samples in the above row is copied. In 'INDEX' mode, the palette index is explicitly signaled. For both 'INDEX' and 'COPY_ABOVE' modes, a run value is signaled, specifying the number of subsequent samples that are also encoded and decoded using the same mode. When an escape symbol is part of a run in 'INDEX' or 'COPY_ABOVE' mode, an escape component value is signaled for each escape symbol. The encoding and decoding of the palette index is as follows: Figure 6 As shown.

[0138] This syntactic sequence is performed as follows: First, the signaling informs the number of index values ​​for the CU. Next, truncated binary encoding / decoding is used to signal the actual index values ​​for the entire CU. Both the number of indices and the index values ​​are encoded / decoded in bypass mode. This groups the bypass binary bits associated with the indices together. Then, palette sample mode (if necessary) and run are signaled in an interleaved manner. Finally, the component escape values ​​corresponding to the escape samples of the entire CU are grouped together and encoded / decoded in bypass mode.

[0139] 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.

[0140] In HEVC-SCC, the palette mode also supports 4:2:2, 4:2:0, and monochrome chroma formats. For all chroma formats, the signaling notifications for palette entries and palette indices are almost identical. In non-monochrome formats, each palette entry includes three components. In monochrome formats, each palette entry includes 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 signaling notifications is for escape component values. For each escape sample, the number of escape component values ​​in the signaling notification may differ depending on the number of components associated with that sample.

[0141] Furthermore, there is an index adjustment process in the palette index encoding. When signaling is given to the palette index, the left neighbor index or the upper neighbor 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. After this, the index is signaled using truncated binary (TB) binary representation.

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

[0143] 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 luminance sample of the image. The value of PaletteIndexMap[xC][yC] should be in the range of 0 to MaxPaletteIndex, inclusive of the endpoints.

[0144] The variable adjustedRefPaletteIndex is exported as follows:

[0145]

[0146]

[0147] When CopyAboveIndicesFlag[xC][yC] equals 0, the variable CurrPaletteIndex is exported as follows:

[0148] if(CurrPaletteIndex>=adjustedRefPaletteIndex)

[0149] CurrPaletteIndex++

[0150] 2.2.3 Palette Mode in VVC

[0151] 2.2.3.1 Palette in Two Trees

[0152] 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.

[0153] 2.2.3.2 Palette as a Separation Mode

[0154] 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 binary representation of the prediction mode changes accordingly.

[0155] When IBC is disabled, on I-chips, the first bit (bin) is used to indicate whether the current prediction mode is MODE_PLT. On P / B-chips, 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.

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

[0157] In addition, JVET-P0516 is adopted. It is proposed that, under all conditions, when the prediction mode is MODE_INTRA, signaling should notify MODE_PLT. The proposed modification only introduces changes when only inter-frame, intra-frame, and PLT modes are allowed.

[0158] 2.2.3.3 Line-based CG Palette Mode

[0159] VVC employs a line-based CG palette pattern. In this method, based on a traversal scan pattern, each CU in the palette pattern is divided into multiple segments of m samples (m = 16 in this test). The encoding order of the palette run encoder / decoder within each segment is as follows: For each pixel, a signaling instruction is given to one binary bit of the context encoder / decoder, run_copy_flag = 0, indicating whether the pixel has the same pattern as a previous pixel; that is, whether the previously scanned pixel and the current pixel are both run type COPY_ABOVE, or whether the previous scanned pixel and the current pixel are both run type INDEX and have the same index value. Otherwise, the signaling instruction is given to run_copy_flag = 1. If the pixel and the previous pixel have different patterns, the signaling instruction is given to the binary bit copy_above_palette_indices_flag of the context encoder / decoder, indicating the pixel's run type, i.e., INDEX or COPY_ABOVE. Similar to the palette mode in VTM 6.0, the decoder does not need to resolve the run type if the sample is in the first row (horizontal traversal scan) or the first column (vertical traversal scan), as INDEX mode is used by default. Furthermore, if the previously resolved run type was COPY_ABOVE, the decoder does not need to resolve the run type. After palette run encoding / decoding of pixels in a segment, the index values ​​(for INDEX mode) and quantized escaped colors are bypassed and grouped separately from the encoding / decoding of binary bits in the context encoding / decoding to improve throughput within each line CG. Because the index values ​​are now encoded / decoded / decoded after the run encoding / decoding, instead of being processed before palette run encoding / decoding as in VTM, the encoder does not need to signal the number of index values ​​num_palette_indices_minus1 and the final run type copy_above_indices_for_final_run_flag.

[0160] The text for the line-based CG mode provided by JVET-P0077 for the palette mode is shown below.

[0161]

[0162]

[0163]

[0164]

[0165] Palette encoding and decoding semantics

[0166] In the following semantics, array indices x0 and y0 specify the position (x0, y0) of the top-left luminance sample of the codec block under consideration relative to the top-left luminance sample of the image. Array indices xC and yC specify the position (xC, yC) of the sample relative to the top-left luminance sample of the image. Array index startComp specifies the first color component of the current palette list. startComp equals 0 to indicate the Y component; startComp equals 1 to indicate the Cb component; startComp equals 2 to indicate the Cr component. numComps specifies the number of color components in the current palette list.

[0167] The prediction palette includes palette entries from previous encoding / decoding units, used to predict items in the current palette.

[0168] The variable `PredictorPaletteSize[startComp]` specifies the size of the palette, representing the predicted value of the first color component of the current palette list `startComp`. `PredictorPaletteSize` is derived according to the specification in clause 8.4.5.3.

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

[0170] The `palette_predictor_run` function determines the number of zeros preceding non-zero entries in the array `PalettePredictorEntryReuseFlags`.

[0171] The requirement for bitstream consistency is that the value of `palette_predictor_run` should be in the range of 0 to `(PredictorPaletteSize - predictorEntryIdx)`, including the endpoints, where `predictorEntryIdx` corresponds to the current position in the array `PalettePredictorEntryReuseFlags`. The variable `NumPredictedPaletteEntries` specifies the number of entries reused from the predicted palette in the current palette. The value of `NumPredictedPaletteEntries` should be in the range of 0 to `palette_max_size`, including the endpoints.

[0172] num_signalled_palette_entries specifies the number of entries in the current palette that are explicitly signaled to the first color component of the current palette list startComp.

[0173] If num_signalled_palette_entries does not exist, it is inferred to be equal to 0.

[0174] The variable CurrentPaletteSize[startComp] specifies the size of the current palette for the first color component of the current palette list startComp, and its derivation is as follows:

[0175] CurrentPaletteSize[startComp]=NumPredictedPaletteEntries+num_signalled_palette_entries(7-155)

[0176] The value of CurrentPaletteSize[startComp] should be in the range of 0 to palette_max_size, including the endpoints.

[0177] new_palette_entries[cIdx][i] specifies the value of the i-th signaling palette entry for color component cIdx.

[0178] The variable PredictorPaletteEntries[cIdx][i] specifies the i-th element in the color palette whose predicted value is cIdx.

[0179] The variable CurrentPaletteEntries[cIdx][i] specifies the i-th element in the current palette for color component cIdx, and its derivation is as follows:

[0180]

[0181]

[0182] A `palette_escape_val_present_flag` value of 1 indicates that the current codec unit contains at least one escaped codec sample. A `escape_val_present_flag` value of 0 indicates that there are no escaped codec samples in the current codec unit. When it does not exist, the value of `palette_escape_val_present_flag` is inferred to be 1.

[0183] The variable MaxPaletteIndex specifies the maximum possible value of the palette index for the current codec unit. The value of MaxPaletteIndex is set to equal CurrentPaletteSize[startComp]-1+palette_escape_val_present_flag.

[0184] palette_idx_idc is an indicator of the index of the palette list CurrentPaletteEntries. For the first index in the block, the value of palette_idx_idc should be in the range of 0 to MaxPaletteIndex, including the endpoints, and for the remaining indices in the block, the value of palette_idx_idc should be in the range of 0 to (MaxPaletteIndex-1), including the endpoints.

[0185] If palette_idx_idc does not exist, it is inferred to be equal to 0.

[0186] A `palette_transpose_flag` value of 1 specifies that a vertical traversal scan is applied to scan the indices of the samples in the current codec unit. A `palette_transpose_flag` value of 0 specifies that a horizontal traversal scan is applied to scan the indices of the samples in the current codec unit. If it does not exist, the value of `palette_transpose_flag` is inferred to be 0.

[0187] The array TraverseScanOrder specifies the scan order array for the palette encoding and decoding. If palette_transpose_flag equals 0, TraverseScanOrder is assigned the horizontal scan order HorTravScanOrder, and if palette_transpose_flag equals 1, TraverseScanOrder is assigned the vertical scan order VerTravScanOrder.

[0188] If `copy_above_palette_indices_flag` equals 0, then `run_copy_flag` equals 1, indicating that the palette run type is the same as the run type of the previous scan position, and the palette run index is the same as the index of the previous position. Otherwise, `run_copy_flag` equals 0.

[0189] A copy_above_palette_indices_flag value of 1 specifies that the palette index is equal to the palette index at the same position in the row above (if using a horizontal traversal scan) or the palette index at the same position in the left column (if using a vertical traversal scan). A copy_above_palette_indices_flag value of 0 specifies whether the palette index of the sample is encoded / decoded or inferred in the bitstream.

[0190] The variable `CopyAboveIndicesFlag[xC][yC]` equal to 1 specifies that the palette indices are copied from the palette indices in the top row (horizontal scan) or left column (vertical scan). `CopyAboveIndicesFlag[xC][yC]` equal to 0 specifies whether the palette indices are explicitly encoded / decoded or inferred in the bitstream. The array indices `xC` and `yC` specify the position (xC, yC) of the sample relative to the top-left luminance sample of the image.

[0191] 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 luminance sample of the image. The value of PaletteIndexMap[xC][yC] should be in the range of 0 to MaxPaletteIndex, inclusive of the endpoints.

[0192] The variable adjustedRefPaletteIndex is exported as follows:

[0193]

[0194] When CopyAboveIndicesFlag[xC][yC] equals 0, the variable CurrPaletteIndex is exported as follows:

[0195] if(CurrPaletteIndex>=adjustedRefPaletteIndex)

[0196] CurrPaletteIndex++(7-158)

[0197] Palette_escape_val specifies the escape sample value of the quantization of the component.

[0198] The variable `PaletteEscapeVal[cIdx][xC][yC]` specifies the escape value of the sample, where `PaletteIndexMap[xC][yC]` equals `MaxPaletteIndex`, and `palette_escape_val_present_flag` equals 1. The array index `cIdx` specifies the color component. The array indices `xC` and `yC` specify the position (xC, yC) of the sample relative to the top-left luminance sample of the image.

[0199] The requirement for bitstream consistency is that, for cIdx equal to 0, PaletteEscapeVal[cIdx][xC][yC] should be in the range of 0 to (1<<(BitDepthY+1))-1, including the endpoints, and for cIdx not equal to 0, PaletteEscapeVal[cIdx][xC][yC] should be in the range of 0 to (1<<(BitDepthC+1))-1, including the endpoints.

[0200] Local dual trees in 2.3VVC

[0201] In typical hardware video encoders and decoders, processing throughput decreases as the image contains more small intra-blocks due to the data dependency of sample processing between adjacent intra-blocks. Intra-block prediction generation requires samples reconstructed from the top and left boundaries of adjacent blocks. Therefore, intra-prediction must be processed sequentially block by block.

[0202] In HEVC, the smallest intra-frame prediction unit (CU) is an 8×8 luma sample. The luma component of the smallest intra-frame prediction unit can be further divided into four 4×4 luma intra-frame prediction units (PUs), but the chroma component of the smallest intra-frame prediction unit cannot be further divided. Therefore, the hardware processing throughput is worst when processing 4×4 chroma intra-frame blocks or 4×4 luma intra-frame blocks.

[0203] In VTM 5.0, within a single codec tree, since chroma segmentation always follows luma, the minimum intra-frame CU is 4x4 luma samples, and therefore the minimum intra-frame CB is 2x2. Thus, in VTM 5.0, the minimum intra-frame CB in a single codec tree is 2x2. The worst-case hardware processing throughput of VVC decoding is only 1 / 4 that of HEVC decoding. Furthermore, after employing tools including Cross Component Linear Model (CCLM), 4-tap interpolation filters, Position-dependent Intra-Prediction Combination (PDPC), and Combined Inter-Frame Intra-Prediction (CIIP), the reconstruction process of intra-frame CB becomes significantly more complex than in HEVC. Achieving high processing throughput in the hardware decoder is challenging. In this section, we propose a method to improve worst-case hardware processing throughput.

[0204] The goal of this method is to prohibit intra-chroma CBs with fewer than 16 chroma samples by constraining the segmentation of intra-chroma CBs.

[0205] In a single codec tree, a SCIPU is defined as a codec tree node with a chroma block size greater than or equal to TH chroma samples and at least one sub-luminance block less than 4TH luma samples, where TH is set to 16 in this contribution. It is required that in each SCIPU, all CBs are inter, or all CBs are non-inter, i.e., intra or IBC. In the case of non-inter-frame SCIPUs, it is further required that the chroma of the non-inter-frame SCIPU should not be further subdivided, while the luma of the SCIPU is allowed to be further subdivided. In this way, the minimum chroma intra-frame CB size is 16 chroma samples, and 2x2, 2x4, and 4x2 chroma CBs are removed. Furthermore, chroma scaling is not applied in the case of non-inter-frame SCIPUs. Additionally, a local dual-tree codec structure is constructed when the luma block is further subdivided while the chroma block is not.

[0206] Figure 7A and Figure 7B Two SCIPU examples are shown. Figure 7A In this context, one chromaticity CB and three luminance CBs (4×8, 8×8, and 4×8 luminance CBs) from an 8×4 chromaticity sample point form a SCIPU because the ternary tree (TT) partitioned from the 8×4 chromaticity sample point will result in fewer than 16 chromaticity sample points for the chromaticity CB. Figure 7B In this context, a 4×4 chromaticity sample chromaticity CB (to the left of an 8×4 chromaticity sample) and three luminance CBs (8×4, 4×4, 4×4 luminance CBs) form a SCIPU, while another 4×4 sample chromaticity CB (to the right of an 8×4 chromaticity sample) and two luminance CBs (8×4, 8×4 luminance CBs) form a SCIPU, because the binary tree (BT) partitioned from the 4×4 chromaticity sample results in a chromaticity CB of less than 16 chromaticity samples.

[0207] In the proposed method, if the current stripe is an I stripe or the current SCIPU has a 4×4 luminance division in it after being further divided once (because 4×4 is not allowed between frames in VVC), the type of the SCIPU is inferred to be non-inter-frame; otherwise, the type of the SCIPU (inter-frame or non-inter-frame) is indicated by a signaling notification flag before the CU in the SCIPU is resolved.

[0208] By applying the above method, the worst-case hardware throughput is obtained when processing 4×4, 2×8, or 8×2 chroma blocks instead of 2×2 chroma blocks. The worst-case hardware throughput is the same as HEVC and is four times that of VTM 5.0.

[0209] 3. Examples of problems solved by the embodiments

[0210] 1. In order to reduce bandwidth costs, IBC can only refer to blocks above the CTU in the left codec tree unit (CTU) as prediction blocks in VVC, which limits the performance of IBC mode for encoding and decoding screen content.

[0211] 2. Binary representation depends on the escape flag in the CU-level signaling notification, and an index typically costs more bits when the escape flag is true. However, some CGs may not have escape samples, thus saving some bits, which is not considered in the current design.

[0212] 3. Local dual-tree and PLT cannot be used simultaneously because some palette entries may be duplicated when encoding / decoding from a single-tree region to a dual-tree region. An example is... Figure 8 As shown.

[0213] 4. The number of entries in the palette prediction and the maximum allowed number of palette entries are fixed, which may compromise the efficiency and flexibility of controlling the palette pattern.

[0214] 4. Examples of Implementation Methods

[0215] The inventions detailed below should be considered as examples for explaining general concepts. These inventions should not be interpreted in a narrow sense. Furthermore, these inventions can be combined in any way.

[0216] DCM

[0217] 1. DCM can be considered as a new prediction mode in addition to existing prediction modes (e.g., intra / inter / IBC prediction modes).

[0218] a. In one instance, DCM can be considered as part of a selected existing forecasting model (e.g., an IBC forecasting model).

[0219] i. Alternatively, when utilizing an existing forecasting model of the selected option, further signaling can be used to inform the DCM of its usage.

[0220] ii. In one example, the instructions used by the DCM can be either context-coded or bypass-coded.

[0221] b. Alternatively, in one example, the indication of the use of DCM can be signaled / parsed as a separate prediction mode (e.g., MODE_DCM).

[0222] c. In one example, under certain conditions, signaling can be used to notify / resolve instructions on the use of DCM.

[0223] i. Under block-level condition checks, signaling notifications / parsing instructions used by DCM can be implemented.

[0224] 1. In one example, only when the block size is less than or equal to M×N,

[0225] Only then can it be notified via signaling.

[0226] a) Alternatively, in one example, it can be signaled only if the width of the block is less than or equal to M and / or the height of the block is less than or equal to N.

[0227] ii. Under the conditional check of block location, the signaling notification / parsing of the indication used by DCM can be performed.

[0228] 1. In one example, a signaling notification may be sent only if the vertical and / or horizontal coordinates of the top-left sample point in the block are not equal to 0, for example, relative to the strip / slice / tile containing the block.

[0229] 2. In one example, it may be possible to target only blocks not included in the first CTU.

[0230] (For example, a strip / piece / block containing the block) receives a signaling notification.

[0231] iii. Signaling notification may be used when performing condition checks on previously encoded / decoded information.

[0232] / Instructions for resolving DCM usage.

[0233] 1. In one example, when applying a dual-tree codec structure, it can be notified only for the luma block signaling.

[0234] 2. Multiple dictionaries can be used, and how to select a dictionary for a block can depend on information from the encoding / decoding (e.g., based on the block dimension or the value of the signaling notification in the bitstream).

[0235] a. In one example, multiple dictionaries can be used for blocks with the same encoding / decoding information (e.g., the same block width and height).

[0236] i. Alternatively, in addition, multiple dictionary indices can be signaled / parsed in the bitstream.

[0237] b. In one example, for blocks with the same codec information (e.g., the same block width and height), only a dictionary can be used, while for blocks with different codec information, different dictionaries can be used.

[0238] i. In one example, for blocks with dimensions K*L, the first dictionary is used, while for blocks with dimensions M*N (where M != K and / or N != L), the second dictionary is used.

[0239] 3. The dictionary used in DCM may contain one or more entries.

[0240] a. The maximum number of entries in the dictionary can be predefined or signaled in the bitstream.

[0241] b. In one example, dictionary entries can contain multiple samples / pixels, such as K*L samples.

[0242] / pixel.

[0243] c. In one example, dictionary entries can be blocks within a reconstructed region.

[0244] i. Alternatively, dictionary entries can be luminous blocks within a reconstructed region.

[0245] 3. When applying dictionary-based codec mode (DCM), a predicted block for the current block can be generated based on one or more entries from one or more dictionaries.

[0246] a. In one example, entries in the dictionary can be used as prediction blocks for the current block.

[0247] i. In one example, the index of this entry can be signaled to the decoder.

[0248] 1. Alternatively, in one example, the index of the entry can be inferred as N.

[0249] ii. In one example, how to select the best entry can be determined by minimizing a certain cost.

[0250] 1. In one example, cost can represent the rate distortion cost between the entry and the current block.

[0251] 2. Alternatively, in one example, the cost could represent the distortion between the entry and the current block, such as SAD, SATD, SSE, or MSE.

[0252] b. In one instance, the predicted block for the current block may depend entirely on entries in the dictionary.

[0253] i. Alternatively, the predicted block for the current block can depend on the dictionary and reconstructed regions in the current image that are not included in the dictionary.

[0254] c. In one example, the DCM process can be as follows: Figure 9 As shown. In Figure 9 In the dictionary, there are N entries, and B i It is the i-th entry in the dictionary. The current block is represented by C. The encoder can first check each entry B. i(0 <= i <= N-1), and determine the best prediction block for C under a specific criterion, which is in Figure 9 By B K This indicates that C and B... K The corresponding residual blocks can be transformed, quantized, and / or entropy encoded / decoded.

[0255] 4. It is proposed to reset the dictionary before encoding / decoding strips / slices / images, and then update the dictionary after encoding / decoding video units.

[0256] a. In one instance, a video unit can be a block / CU / CTU / CTU row.

[0257] b. In one instance, all overlapping blocks with different block sizes contained in a video unit can be used to update the dictionary.

[0258] i. Alternatively, in one example, only blocks of size M×N can be used to update the dictionary.

[0259] c. In one example, a hash function can be used to exclude similar / identical blocks from a dictionary.

[0260] i. In one example, the hash function could be a CRC function with N bits.

[0261] ii. In one example, following raster order, if two blocks have the same hash value, only the later block can be included in the dictionary.

[0262] 1. Alternatively, in one example, if two blocks have the same hash value, both blocks can be included in the dictionary.

[0263] iii. In one example, the DCM update process can be as follows: Figure 10 As shown. In Figure 10 In the dictionary, there are N entries, B i Let `x` be the i-th entry in the dictionary. The current block is represented by `C`. Let `x` be the hash value of `C`. When updating the dictionary using `C`, first derive `x`, then the entry at the `x-th` position can be filled / replaced with `C`. Figure 10 In this example, x equals 1, so entry B1 can be replaced by C.

[0264] iv. In one example, each entry in the dictionary could be a list of blocks that store blocks with the same hash value.

[0265] 1. In one example, the list can be updated using a first-in, first-out (FIFO) strategy.

[0266] 2. In one example, the list size can be equal to m.

[0267] a. In one example, M can be set to equal 1.

[0268] 5. Entries in the dictionary can be sorted before being used to derive predictions / reconstructions for the current block.

[0269] a. It is proposed to sort the entries in the dictionary based on the distortion between the template of each entry and the template of the current block.

[0270] b. In one example, such as Figure 11 As shown, if the current block is S1×S2, the template can represent an M×N region other than the region of the current block, where M>S1 and N>S2.

[0271] c. In one example, the distortion in the above example can represent the distortion between two templates, such as SAD, SATD, SSE, or MSE.

[0272] d. In one example, the entry may include not only the block in the reconstructed region, but also the template of that block.

[0273] e. In one example, the dictionary can be sorted in ascending / descending order based on template distortion cost.

[0274] f. In one example, after sorting the dictionary in descending order based on template distortion cost, only the first K entries can be applied when encoding / decoding the current block with DCM.

[0275] i. In one example, assuming the dictionary size is N, the index range can be reduced from [0, N-1] to [0, K-1].

[0276] 6. For blocks encoded or decoded using DCM, the selected one or more entry indices can be notified by explicit signaling or implicit signaling in the bitstream.

[0277] a. In one example, fixed-length codec / Exp-Golomb / truncated unary / truncated binary can be used to binarynize the entry index.

[0278] b. The binary representation of the signaling notification index in the DCM can depend on the number of possible entries used in the DCM.

[0279] i. In one example, the binary representation could be a fixed length of M bits.

[0280] 1. In one example, M can be set to be equal to floor(log2(N)).

[0281] a. In one example, log2(N) is a function of the logarithm of N to the base 2.

[0282] b. In one example, floor(N) is a function that gets the nearest integer that is the upper bound of N.

[0283] ii. In one example, binaryization can be truncated binary / unary, where

[0284] cMax equals N.

[0285] iii. In the example above, N can be the number of all entries in the dictionary.

[0286] 1. Alternatively, N can be the number of available entries in the dictionary, such as K in bullet point 5.f.

[0287] Escape flag in line-based CG mode of palette mode

[0288] 7. It is possible to indicate whether each CG is an escape sample and to encode and decode the escape flags of the CGs together.

[0289] a. In one example, syntax elements, such as palette_escape_val_present_flag, can be signaled at the CG level.

[0290] i. In one example, a flag can be signaled first to indicate whether the escape flag of all CGs is false. If any escape flag is true, the escape flag of each CG can be further signaled.

[0291] ii. In one example, the index of the escape flag, which is equal to true, can be signaled.

[0292] iii. In one example, the index of the escape flag can be signaled as false.

[0293] b. Alternatively, block-based flags can be sent to indicate the presence of escaped samples.

[0294] i. In one example, the CG level escape sample presence flag can be skipped when the block-based flag indicates that there are no escape samples.

[0295] c. The values ​​of the escape flags of all CGs in the block can be concatenated and encoded / decoded together.

[0296] i. In one example, each bit of variable E represents the presence flag of an escaped sample point of CG.

[0297] ii. In one example, fixed-length binary conversion can be used to encode and decode E.

[0298] 1. Alternatively, in one example, truncated unary binary representation can be used to encode and decode E.

[0299] 2. Alternatively, in one instance, the binary representation of exp Golomb of order k can be used to encode and decode E.

[0300] iii. In one example, E can be either bypass codec or context codec.

[0301] Palette predictor correlation

[0302] 8. A method based on the use of local dual trees is proposed for saving and loading palette predictions.

[0303] a. In one example, when a single tree is switched to a local dual tree, i.e. after decoding the last block in the single tree or before decoding the first block in the local dual tree, the palette prediction can be saved to a temporary buffer.

[0304] i. In one example, the palette prediction value can be reset before the first block in the local dual tree is decoded.

[0305] b. In one example, when the local dual tree is switched to a single tree, i.e., after decoding the last block in the local dual tree or before decoding the first block in the single tree, the palette prediction can be loaded from the temporary buffer.

[0306] 9. It is proposed to include the maximum permissible palette size in the signaling of 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.

[0307] 10. It is recommended that the maximum permissible size of the palette prediction value be specified in the signaling information of 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.

[0308] Technical solution applicable to all the above items

[0309] 11. In the above examples, M, N, K and / or L can be integers.

[0310] a. In one example, both M and N can be equal to 4.

[0311] 1. In one example, N can be a predefined constant value for all QPs.

[0312] 2. In one example, N signaling can be sent to the decoder.

[0313] 3. In one example, N can be based on

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

[0315] 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

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

[0317] d. Block size of the current block and / or its neighboring blocks

[0318] e. The block shape of the current block and / or its neighboring blocks

[0319] f. Quantization parameters of the current block

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

[0321] h. Encoding / decoding tree structure (such as dual-tree or single-tree)

[0322] i. Strip / group type and / or image type

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

[0324] k. Time-domain layer ID

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

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

[0327] i. In one example, the above method can be applied only to screen content.

[0328] 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

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

[0330] d. Block size of the current block and / or its neighboring blocks

[0331] e. The block shape of the current block and / or its neighboring blocks

[0332] f. Quantization parameters of the current block

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

[0334] h. Encoding / decoding tree structure (such as dual-tree or single-tree)

[0335] i. Strip / group type and / or image type

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

[0337] k. Time-domain layer ID

[0338] l. Standard configuration files / levels / tiers (Tier)

[0339] The examples described above can be incorporated into the context of the methods described below, such as methods 1200 and 1300, which can be implemented at a video decoder or video encoder.

[0340] Figure 12 A flowchart of an exemplary method 1200 for video processing is shown. Method 1200 includes, in operation 1210, performing a conversion between a current block of video and a bitstream representation of video, the conversion using a dictionary-based encoding / decoding mode that maintains or updates one or more dictionaries during the encoding and / or decoding process of the current block, and the conversion being based on one or more dictionaries.

[0341] Figure 13 A flowchart of an exemplary method 1300 for video processing is shown. Method 1300 includes, at operation 1310, performing a conversion between a current block of video encoded and decoded using a palette mode and a bitstream representation of the video, the conversion including saving and loading palette prediction values ​​in the palette mode based on the use of local dual trees in the conversion.

[0342] Figure 14AThis is a block diagram of video processing device 1400. Device 1400 can be used to implement one or more methods described herein. Device 1400 can be embodied in smartphones, tablets, computers, Internet of Things (IoT) receivers, etc. Device 1400 may include one or more processors 1402, one or more memories 1404, and video processing hardware 1406. Processor 1402 can be configured to implement one or more methods described in this document. Memory 1404 can be used to store data and code for implementing the methods and techniques described herein. Video processing hardware 1406 can be used to implement some of the techniques described in this document in hardware circuitry.

[0343] Figure 14B This is a block diagram showing an example video processing system 2100, in which various techniques disclosed herein can be implemented. Various implementations may include some or all of the components of system 2100. System 2100 may include an input 2102 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 2102 may represent a network interface, a peripheral bus interface, or a storage interface. Examples of network interfaces include wired interfaces such as Ethernet, Passive Optical Networking (PON), etc., and wireless interfaces such as Wi-Fi or cellular interfaces.

[0344] System 2100 may include codec component 2104, which can implement the various encoding or encoding methods described in this document. Codec component 2104 can reduce the average bit rate of the video from input 2102 to the output of codec component 2104 to produce an encoded representation of the video. Therefore, codec techniques are sometimes referred to as video compression or video codec techniques. As indicated by component 2106, the output of codec component 2104 can be stored or transmitted via connected communication. Component 2108 can use the stored or transmitted bitstream (or encoded) representation of the video received at input 2102 to generate pixel values ​​or displayable video sent to display interface 2110. The process of generating user-visible video from the bitstream representation is sometimes referred to as video decompression. Furthermore, although some video processing operations are referred to as “encoding” operations or tools, it should be understood that encoding tools or operations are used at the encoder, and corresponding decoding tools or operations, the opposite of the encoding / decoding result, will be performed by the decoder.

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

[0346] Figure 15 This is a block diagram illustrating an example video encoding / decoding system 100 in which the technology of the present invention can be utilized.

[0347] like Figure 15 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, which 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.

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

[0349] 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 for generating video data, or combinations of these sources. Video data may include one or more pictures. Video encoder 114 encodes the video data from video source 112 to generate a bitstream. The bitstream may include sequences of bits forming an encoded representation of the video data. The bitstream may include encoded / decoded pictures and associated data. The encoded / decoded pictures are encoded / decoded representations of the pictures. The associated data may include sequence parameter sets, picture 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 media / server 130b for access by destination device 120.

[0350] Destination device 120 may include I / O interface 126, video decoder 124 and display device 122.

[0351] 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 it may be external to destination device 120, which is configured to interface with an external display device.

[0352] 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 Universal Video Codec (VVC) standard, and other current and / or further standards.

[0353] Figure 16 This is a block diagram showing an example of a video encoder 200, which can be... Figure 15 The video encoder 114 in the system 100 shown.

[0354] The video encoder 200 can be configured to perform any or all of the techniques of this invention. Figure 16 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.

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

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

[0357] Furthermore, some components (such as motion estimation unit 204 and motion compensation unit 205) can be highly integrated, but for interpretative purposes... Figure 16 Separate representation in instances.

[0358] 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.

[0359] 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 blocks to the residual generation unit 207 to generate residual block data, and to the reconstruction unit 212 to reconstruct the encoded blocks for use as reference images. In some examples, the mode selection unit 203 can select a combination of intra-frame and inter-frame prediction (CIIP) modes, where prediction is based on inter-frame prediction signals and intra-frame prediction signals. In the case of inter-frame prediction, the mode selection unit 203 can also select the resolution of the motion vectors for the blocks (e.g., sub-pixel or integer pixel precision).

[0360] 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 from images other than those associated with the current video block from buffer 213 and decoded samples.

[0361] 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.

[0362] In some instances, 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 reference images in 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, the reference image containing 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.

[0363] In other instances, 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 contain the reference video block, and the motion vector indicates the spatial displacement between the reference video block 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 block indicated by the motion information of the current video block.

[0364] In some instances, the motion estimation unit 204 may output a set of all motion information for the decoder's decoding processing.

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

[0366] In one instance, 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.

[0367] In another instance, motion estimation unit 204 can identify another video block and motion vector difference (MVD) within 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.

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

[0369] 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.

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

[0371] In other instances, the current video block may not have residual data, such as in skip mode, and the residual generation unit 207 may not perform the subtraction operation.

[0372] 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.

[0373] 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.

[0374] 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.

[0375] 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.

[0376] The entropy encoding / decoding unit 214 can receive data from other functional components of the video encoder 200. When the entropy encoding / decoding 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.

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

[0378] The video decoder 300 can be configured to perform any or all of the techniques of this invention. Figure 17 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.

[0379] exist Figure 17 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 (e.g., Figure 16 The encoding process described is the opposite of the decoding process.

[0380] The entropy decoding unit 301 can retrieve the encoded bitstream. The encoded bitstream may include entropy-coded video data (e.g., encoded blocks of video data). The entropy decoding unit 301 can decode the entropy-decoded video data, and from the entropy-decoded 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 this information, for example, by executing AMVP and Merge modes.

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

[0382] The motion compensation unit 302 can use interpolation filters, such as those used by the video encoder 200 during the encoding of a video block, to calculate interpolated values ​​for 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 a prediction block.

[0383] The motion compensation unit 302 may use some syntax information to determine the size of the blocks of frames and / or stripes of the video sequence used for encoding, segmentation information describing how each macroblock of the picture of the encoded video sequence is segmented, a mode 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.

[0384] 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.

[0385] 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 the 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.

[0386] Some embodiments of the disclosed technology involve making a decision or determination to enable a video processing tool or mode. In one example, when a video processing tool or mode is enabled, the encoder will use or implement the tool or mode in the processing of video blocks, but may not necessarily modify the resulting bitstream based on the use of the tool or mode. That is, when a video processing tool or mode is enabled based on a decision or determination, the conversion from video blocks to a bitstream representation of the video will use that video processing tool or mode. In another example, when a video processing tool or mode is enabled, the decoder will process the bitstream knowing that it has been modified based on the video processing tool or mode. That is, the conversion from the bitstream representation of the video to video blocks will be performed using the video processing tool or mode enabled based on that decision or determination.

[0387] 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 bits that are co-located or scattered at different positions within the bitstream. For example, a macroblock can be encoded based on the error residuals from the transformation and encoding / decoding, and also using bits from the header and other fields in the bitstream.

[0388] 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.

[0389] Some embodiments may be described using the following clause-based format. The first set of clauses illustrates example embodiments of the techniques discussed in the preceding sections.

[0390] A1. A method for video processing. It includes: performing a conversion between a current block of video and a bitstream representation of the video, wherein the conversion uses a dictionary-based encoding / decoding mode that maintains or updates one or more dictionaries during the encoding and / or decoding process of the current block, and wherein the conversion is based on one or more dictionaries.

[0391] A2. The method of Clause A1, wherein the dictionary-based encoding / decoding mode differs from the inter-frame prediction mode, intra-frame prediction mode, and intra-block copy (IBC) prediction mode.

[0392] A3. The method of Clause A1, wherein a dictionary-based encoding / decoding mode is considered as part of an existing prediction mode used for encoding / decoding the current block.

[0393] A4. The method of Clause A3, wherein the existing prediction mode is the intra-block copy (IBC) prediction mode.

[0394] A5. The method of clause A3 or A4, wherein the bitstream representation includes a first indication of the use of an existing prediction mode and a second indication of the use of a dictionary-based encoding / decoding mode.

[0395] A6. The method of Clause A5, wherein the second instruction is context-coded or bypass-coded.

[0396] A7. The methods of clauses A1 or A2 also include: the optional inclusion of making decisions regarding instructions on the use of dictionary-based encoding / decoding modes.

[0397] A8. The method of Clause A7, wherein the instruction is MODE_DCM.

[0398] A9. The method of clause A7 or A8, wherein the indication is included because the size of the current block is determined to be less than or equal to M×N, where M and N are positive integers.

[0399] A10. The method of clause A7 or A8, wherein the indication is included because the width of the current block is determined to be less than or equal to M and / or the height of the current block is less than or equal to N, wherein M and N are positive integers.

[0400] A11. The method of clause A7 or A8, wherein the indication is included because the vertical and / or horizontal coordinates of the top-left sample point of the current block are not equal to zero.

[0401] A12. The method of clause A7 or A8, wherein the indication is included because it is determined that the current block is not contained in the first codec tree unit (CTU).

[0402] A13. The method of clause A7 or A8, wherein an indication is included as a result of determining that the current block is a luminance block that includes a dual-tree codec structure.

[0403] A14. The method of Clause A1, wherein one or more dictionaries of the current block are selected based on the size of the current block and / or information in the bitstream representation.

[0404] A15. The method of Clause A14, wherein a first dictionary from one or more dictionaries is used for blocks of size K×L, wherein a second dictionary, different from the first dictionary, is used for blocks of size M×N, and wherein M≠K and / or N≠L

[0405] A16. The method of any one of clauses A1 through A15, wherein each of one or more dictionaries includes one or more entries.

[0406] A17. The method of Clause A16, wherein the maximum number of entries in at least one of the one or more dictionaries is predefined in the bitstream representation or signaled.

[0407] A18. The method of Clause A16, wherein at least one of one or more entries includes a plurality of samples or pixels.

[0408] A19. The method of Clause A16, wherein at least one of one or more entries includes a block from the reconstructed region.

[0409] A20. The method of Clause A1, wherein one or more dictionaries are reset before encoding or decoding a strip, slice, or picture including the current block, and wherein one or more dictionaries are updated after encoding or decoding a video unit.

[0410] A21. The method of Clause A20, wherein the video unit is the current block, or a codec unit (CU), codec tree unit (CTU), or CTU line associated with the current block.

[0411] A22. The method of Clause A20, wherein at least one of one or more dictionaries is updated based on overlapping blocks of different block sizes contained in a video unit.

[0412] A23. The method of Clause A1 also includes: sorting the entries in one or more dictionaries before conversion.

[0413] A24. The method of Clause A23, wherein the sorting is based on a distortion measurement between the template of an entry in one or more dictionaries and the template of the current block.

[0414] A25. The method of Clause A24, wherein the distortion measurement is based on the sum of absolute differences (SAD), the sum of absolute time-domain differences (SATD), the sum of squared errors (SSE), or the mean square error (MSE).

[0415] A26. The method of clause A23, wherein the sorting is in descending order, and wherein only the first K entries are used in the transformation.

[0416] A27. The method of Clause A1, wherein the index of one or more entries of one or more dictionaries is implicitly or explicitly signaled in the bitstream representation.

[0417] A28. The method of Clause A27, wherein the index is binaryized using truncated unary encoding, truncated binary encoding, fixed-length encoding, or exponential Golomb encoding.

[0418] A29. The method of Article A27, wherein the index is binary based on the number of one or more entries in one or more dictionaries.

[0419] A30. A method for video processing, comprising: performing a conversion between a current block of a video encoded and decoded using a palette mode and a bitstream representation of the video, wherein the conversion includes saving and loading palette prediction values ​​in the palette mode based on the use of local dual trees in the conversion.

[0420] A31. The method of Clause A30, wherein when it is determined that a single tree is switched to a local dual tree, the palette prediction value is saved to a temporary buffer.

[0421] A32. The method of clause A31, wherein the palette prediction value is reset before the first block in the local dual tree is used for decoding.

[0422] A33. The method of Clause A30, wherein when it is determined that a local dual-tree has been switched to a single-tree, a palette prediction value is loaded from a temporary buffer.

[0423] A34. The method of Clause A30, wherein the maximum permissible size of the palette is signaled in the decoder parameter set (DPS), sequence parameter set (SPS), video parameter set (VPS), picture parameter set (PPS), adaptive parameter set (APS), picture header, strip header, slice header, maximum codec unit (LCU), codec unit (CU), LCU line, LCU group, transform unit (TU) or prediction unit (PU) block or video codec unit associated with the current block.

[0424] A35. The method of Clause A30, wherein the maximum permissible size of the palette prediction value is signaled in the decoder parameter set (DPS), sequence parameter set (SPS), video parameter set (VPS), picture parameter set (PPS), adaptive parameter set (APS), picture header, strip header, slice group header, maximum codec unit (LCU), codec unit (CU), LCU line, LCU group, transform unit (TU) or prediction unit (PU) block or video codec unit associated with the current block.

[0425] A36. The method of any one of clauses A1 to A35, wherein the transformation is performed based on at least one of: (a) screen content or natural content associated with the current block, (b) information in the decoder parameter set (DPS), sequence parameter set (SPS), video parameter set (VPS), picture parameter set (PPS), adaptive parameter set (APS), picture header, strip header, slice header, maximum codec unit (LCU), codec unit (CU), LCU line, LCU group, transform unit (TU) or prediction unit (PU) block or video codec unit associated with the current block. The notification message includes: (c) the location of at least one of the CU, PU, ​​TU, current block, or video codec unit; (d) the height or width of the current block or neighboring blocks; (e) the shape of the current block or neighboring blocks; (f) the quantization parameter (QP) of the current block; (g) an indication of the color format of the current block; (h) the codec tree structure applied to the current block; (i) the stripe or slice group type or picture type that includes the stripe, slice, or picture of the current block; (j) the color components of the color representation of the video; (k) the temporal layer identifier (ID); or (l) the profile, level, or hierarchy of the standard associated with the conversion.

[0426] A37. The method of any of clauses A1 to A36, wherein the transformation generates the current block from the bitstream representation.

[0427] A38. The method of any one of clauses A1 to A36, wherein the transformation generates a bitstream representation from the current block.

[0428] A39. An apparatus in a video system, comprising a processor and a non-transitory memory having instructions thereon, wherein the instructions, when executed by the processor, cause the processor to perform the method of any one of clauses A1 to A38.

[0429] A40. A computer program product stored on a non-transitory computer-readable medium, the computer program product comprising program code for performing the method of any one of clauses A1 to A38.

[0430] The second set of clauses illustrates example embodiments of the techniques discussed in the preceding sections (e.g., embodiments 1 to 7).

[0431] 1. A method for video processing (e.g., such as...) Figure 18A The method shown (1810) includes: performing a conversion between a current block of video and a bitstream representation of video, wherein the current block is encoded and decoded using one or more dictionaries in a dictionary-based encoding / decoding mode, and wherein the conversion is based on one or more dictionaries.

[0432] 2. The method of Clause 1, wherein signaling notification in the bitstream representation is a dictionary-based encoding / decoding mode, unlike inter-frame prediction mode, intra-frame prediction mode and intra-block copy (IBC) prediction mode.

[0433] 3. The method of Clause 1, wherein the dictionary-based encoding and decoding mode is regarded as part of the existing prediction mode for video.

[0434] 4. The methodology of Clause 3, existing forecasting models include the IBC model.

[0435] 5. The method of Clause 3 or 4, wherein the bitstream representation includes a first indication of the use of an existing prediction mode and a second indication of the use of a dictionary-based encoding / decoding mode, the second indication being based on the first indication signaling notification.

[0436] 6. The method of Clause 5, wherein the second instruction is context-coded or bypass-coded.

[0437] 7. The method of Clause 1 or 2, wherein the bitstream representation includes an indication of the use of a dictionary-based encoding / decoding mode.

[0438] 8. The method of Clause 7, wherein the dictionary-based encoding and decoding mode is regarded as a mode separate from the existing prediction mode used for video.

[0439] 9. The method of Clause 1 or 2, wherein the bitstream representation includes an indication of the use of a dictionary-based encoding / decoding mode based on the dimension of the current block.

[0440] 10. The method of Clause 9, wherein the indication is included in the bitstream representation because the size of the current block is less than or equal to M×N, where M and N are positive integers.

[0441] 11. The method of Clause 9, wherein an indication is included in the bitstream representation because the width of the current block is less than or equal to M and / or the height of the current block is less than or equal to N, wherein M and N are positive integers.

[0442] 12. The method of Clause 1 or 2, wherein the bitstream representation includes an indication of the use of a dictionary-based encoding / decoding mode based on the position of the current block.

[0443] 13. The method of Clause 12, wherein the indication is included in the bitstream representation because the vertical and / or horizontal coordinates of the top-left sample of the current block are not equal to zero.

[0444] 14. The method of Clause 12, wherein the indication is included in the bitstream representation because the current block is not contained in the first codec tree unit (CTU).

[0445] 15. The method of Clause 1 or 2, wherein the bitstream represents information based on previous encoding and decoding, including indications of the use of dictionary-based encoding and decoding modes.

[0446] 16. The method of Clause 15, wherein the indication is included in the bitstream representation because the current block is a luminance block when a dual-tree partitioning structure is applied.

[0447] 17. A method for video processing (e.g., such as...) Figure 18B The method shown (1820) includes: for a conversion between a video comprising video blocks and a bitstream representation of the video, determining, according to rules, based on one or more codec characteristics of the video blocks, 1822 using one or more dictionaries of the video blocks; and performing a conversion 1824 based on the determination, wherein the codec characteristics include the size of the video blocks and / or information in the bitstream representation.

[0448] 18. The method of Clause 17, wherein the rule specifies the use of multiple dictionaries for video blocks having the same codec characteristics and another video block.

[0449] 19. The method of Item 18, wherein the bitstream representation comprises an index of multiple dictionaries.

[0450] 20. The method of Clause 17, wherein the rule specifies a first dictionary from one or more dictionaries for a video block of size K×L, wherein a second dictionary, different from the first dictionary, is used for another video block of size M×N, and wherein M≠K and / or N≠L

[0451] 21. The method of any of the preceding clauses, wherein each of the one or more dictionaries comprises one or more entries.

[0452] 22. The method of Clause 21, wherein the maximum number of entries in at least one of the one or more dictionaries is predefined or signaled in the bitstream representation.

[0453] 23. The method of Clause 21, wherein at least one of one or more entries comprises a plurality of samples or pixels.

[0454] 24. The method of Article 21, wherein at least one of one or more entries includes a block from the reconstructed region.

[0455] 25. A method for video processing (e.g., such as...) Figure 18C The method shown (1830) includes: for a current block of a video to which a dictionary-based encoding / decoding mode is applied, determining 1832 a predicted block of the current block based on one or more entries of a dictionary; and performing 1834 a conversion between the current block and a bitstream representation of the video based on the determination.

[0456] 26. The method of Item 25, in which dictionary entries are used to determine the prediction block.

[0457] 27. The method of Article 26, wherein the index of the entry is included in the bitstream representation.

[0458] 28. The method of Article 26, wherein the index of an entry is inferred as N, where N is an integer.

[0459] 29. The method of Article 25, wherein how an entry is selected is determined by minimizing a particular cost.

[0460] 30. The method of Clause 29, wherein the particular cost corresponds to the rate distortion cost or rate distortion characteristic between the entry and the current block.

[0461] 31. The method of Clause 29, wherein the particular cost corresponds to the distortion between the entry and the current block.

[0462] 32. The method of Article 25, wherein the prediction block is determined based solely on multiple entries of the dictionary.

[0463] 33. The method of Item 25, wherein a predicted block is determined based on multiple entries of a dictionary and the reconstructed region in the current image, including the current block.

[0464] 34. The method of Clause 25, wherein the corresponding residual blocks between the current block and the predicted block are transformed, quantized, and / or entropy encoded / decoded.

[0465] 35. A video processing method comprising: performing a conversion between a current video unit of a current video region of the video and a bitstream representation of the video, wherein the current video unit is encoded and decoded using a dictionary in a dictionary-based encoding and decoding mode, and wherein the dictionary is reset before encoding and decoding the current video region and updated after encoding and decoding the current video unit.

[0466] 36. The method of Clause 35, wherein the current video unit is a video block, a codec unit (CU), a codec tree unit (CTU) or a CTU row, and the current video region is a strip, a slice or a picture.

[0467] 37. The method of Article 35, wherein the dictionary is updated based on overlapping video blocks of different sizes contained in the current video region.

[0468] 38. The method of Item 35, wherein the dictionary is updated based on overlapping video blocks of size M x N, where M and N are positive integers.

[0469] 39. The method of Article 35, wherein a hash function is used to exclude similar or identical video blocks from a dictionary.

[0470] 40. The method of Article 39, wherein the hash function is a CRC (Cyclic Redundancy Check) function with N bits, where N is a positive integer.

[0471] 41. The method of Clause 39, wherein only the later of two video blocks having the same hash value according to the raster order is included in the dictionary.

[0472] 42. The method of Article 39, wherein two video blocks having the same hash value are included in a dictionary.

[0473] 43. The method of Article 39, wherein the current video unit corresponds to a video block, and wherein the hash value of the current video unit is used to update the dictionary.

[0474] 44. The method of Article 35, wherein each entry in the dictionary is a list of blocks storing blocks with the same hash value.

[0475] 45. A video processing method comprising: performing a conversion between a current block of video and a bitstream representation of video, wherein the current block is encoded and decoded using a dictionary in a dictionary-based encoding / decoding mode, wherein a predicted block or reconstructed block of the current block is obtained by sorting entries in the dictionary.

[0476] 46. ​​The method of Clause 45, wherein the sorting is based on a distortion measurement between the template of an entry in the dictionary and the template of the current block.

[0477] 47. The method of Clause 46, wherein, for the current block having size S1xS2, the template is represented as an MxN region other than the region corresponding to size S1xS2, where S1, S2, M, and N are positive integers, M>S1, and M>S2.

[0478] 48. The method of Clause 46, wherein the distortion measurement is based on the sum of absolute differences (SAD), the sum of absolute time-domain differences (SATD), the sum of squared errors (SSE), or the mean square error (MSE).

[0479] 49. The method of Clause 46, wherein the entry includes the current block in the reconstructed region and the template of the current block.

[0480] 50. The method of Clause 45, wherein the sorting is performed in ascending or descending order based on template distortion cost.

[0481] 51. The method of Clause 45, wherein the sorting is in descending order, and wherein only the first K entries are used in the transformation.

[0482] 52. A method for video processing, comprising: performing a conversion between a current block of video and a bitstream representation of video, wherein the current block is encoded or decoded using a dictionary in a dictionary-based encoding / decoding mode, and wherein the index of one or more entries of the dictionary is included in the bitstream representation.

[0483] 53. The method of Clause 52, wherein the index is binaryized using truncated unary encoding, truncated binary encoding, fixed-length encoding, or exponential-Golomb encoding.

[0484] 54. The method of Item 52, wherein the index is binary based on the number of one or more entries in the dictionary.

[0485] 55. The method of Clause 54, wherein the binary of the coded index has a fixed length of M bits.

[0486] 56. The method of Item 55, where M equals floor(log2(N)), where log2(N) is a function that obtains the base-2 logarithm of N, and floor(N) is a function that obtains the nearest integer to the upper bound of N.

[0487] 57. The method of Item 54, wherein the index is binaryized using a truncated binary codec or a truncated unary code, where cMax equals N.

[0488] 58. The method of Articles 56 or 57, where N is the number of all entries in the dictionary or the number of available entries.

[0489] 59. A method for video processing, performing a conversion between a current block of video and a bitstream representation of video, wherein the current block is encoded and decoded using a palette mode, and wherein the bitstream representation includes syntax elements representing escape samples of each of the coefficient groups of the current block.

[0490] 60. The method of Article 59, wherein the signaling notification syntax element is at the coefficient group level.

[0491] 61. The method of Articles 59 or 60, wherein the syntax element includes a flag indicating whether the escape flag of all coefficient groups is false.

[0492] 62. The method of Articles 59 or 60, wherein the signaling notification is equal to the index of the true syntax element.

[0493] 63. The method of Articles 59 or 60, wherein the signaling notification is equal to the index of the false syntax element.

[0494] 64. The method of Clause 59, wherein another syntax element is indicated at the video block level, and that syntax element is skipped if the other syntax element indicates that there are no escape samples of the current block.

[0495] 65. The method of Item 59, in which the values ​​of the syntax elements of all coefficient groups are concatenated and encoded together.

[0496] 66. The method of Item 65, wherein bits of variable (E) are used to represent syntax elements of the coefficient group of the current block.

[0497] 67. The method of Clause 66, wherein the variable (E) is binary-coded using fixed-length encoding / decoding, truncated unary encoding / decoding, or exponential-Golomb encoding / decoding.

[0498] 68. The method of Clause 66, wherein the variable (E) is either bypass-coded or context-coded.

[0499] 69. The method as described in any of the preceding clauses, where M and N equal 4.

[0500] 70. The method as described in any of the preceding clauses, where N corresponds to a predefined constant value of the quantization parameter.

[0501] 71. The method as described in any of the preceding clauses, wherein N is included in the bitstream representation of the video.

[0502] 72. The method as described in any of the preceding clauses, wherein N is based on at least one of the following:

[0503] (a) Screen content or natural content associated with the current block,

[0504] (b) Messages notified by signaling in the decoder parameter set (DPS), sequence parameter set (SPS), video parameter set (VPS), picture parameter set (PPS), adaptive parameter set (APS), picture header, strip header, slice header, maximum codec unit (LCU), codec unit (CU), LCU line, LCU group, transform unit (TU) or prediction unit (PU) block or video codec unit associated with the current block.

[0505] (c) The location of at least one of the CU, PU, ​​TU, current block, or video codec unit.

[0506] (d) The height or width of the current block or adjacent blocks.

[0507] (e) The shape of the current block or adjacent blocks.

[0508] (f) Quantization parameters (QP) of the current block,

[0509] (g) Indicator of the color format of the current block,

[0510] (h) Applied to the codec tree structure of the current block.

[0511] (i) Each includes the stripe, slice, or picture type of the current block, or the stripe or slice group type or picture type.

[0512] (j) The color components representing the color of the video, or

[0513] (k) Temporal layer identifier (ID).

[0514] 73. The method of any one of the provisions 1 to 72, wherein the conversion includes encoding the video into a bitstream representation.

[0515] 74. The method of any one of the clauses 1 to 72, wherein the conversion includes decoding video from a bitstream representation.

[0516] 75. A video processing apparatus, comprising a processor configured to implement any one or more of the methods of clauses 1 to 74.

[0517] 76. 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 75.

[0518] 77. A computer-readable medium for storing an encoded representation or bitstream representation generated according to any of the methods described above.

[0519] The third set of clauses illustrates example embodiments of the techniques discussed in the preceding sections (e.g., embodiments 8 to 12).

[0520] 1. A video processing method, comprising: performing a conversion between a current block of video and a bitstream representation of video, wherein the current video block is encoded and decoded using a palette mode, and the current block is represented in the palette mode using a palette of representative sample values; wherein the conversion includes selectively saving and loading palette prediction values ​​in the palette mode based on the use of local dual trees in the conversion.

[0521] 2. The method of Clause 1, wherein the palette prediction value is saved to a temporary buffer when it is determined that a single tree is switched to a local dual tree.

[0522] 3. The method of Clause 2, wherein the palette prediction value is reset before being used to decode the first block in the local dual tree.

[0523] 4. According to the method in Article 1, the palette prediction value is loaded from the temporary buffer when it is determined that the local dual tree has been switched to a single tree.

[0524] 5. The method of Clause 1, wherein the maximum permissible size of the palette is signaled in the decoder parameter set (DPS), sequence parameter set (SPS), video parameter set (VPS), picture parameter set (PPS), adaptive parameter set (APS), picture header, strip header, slice header, maximum codec unit (LCU), codec unit (CU), LCU line, LCU group, transform unit (TU) or prediction unit (PU) block or video codec unit associated with the current block.

[0525] 6. The method of Clause 1, wherein the maximum permissible size of the palette prediction value is signaled in the decoder parameter set (DPS), sequence parameter set (SPS), video parameter set (VPS), picture parameter set (PPS), adaptive parameter set (APS), picture header, strip header, slice header, maximum codec unit (LCU), codec unit (CU), LCU line, LCU group, transform unit (TU) or prediction unit (PU) block or video codec unit associated with the current block.

[0526] 7. The method of any one of clauses 1 to 6, wherein the manner of performing the conversion is further based on at least one of the following:

[0527] (a) Screen content or natural content associated with the current block,

[0528] (b) Messages notified by signaling in the decoder parameter set (DPS), sequence parameter set (SPS), video parameter set (VPS), picture parameter set (PPS), adaptive parameter set (APS), picture header, strip header, slice header, maximum codec unit (LCU), codec unit (CU), LCU line, LCU group, transform unit (TU) or prediction unit (PU) block or video codec unit associated with the current block.

[0529] (c) The location of at least one of the CU, PU, ​​TU, current block, or video codec unit.

[0530] (d) The height or width of the current block or adjacent blocks.

[0531] (e) The shape of the current block or adjacent blocks.

[0532] (f) Quantization parameters (QP) of the current block,

[0533] (g) Indicator of the color format of the current block,

[0534] (h) Applied to the codec tree structure of the current block.

[0535] (i) Each includes the stripe, slice, or picture type of the current block, or the stripe or slice group type or picture type.

[0536] (j) Color components representing the color of the video.

[0537] (k) Temporal layer identifier (ID), or

[0538] (l) The configuration file, level, or hierarchy of the standard associated with the conversion.

[0539] 8. The method of any one of the provisions 1 to 7, wherein the transformation includes encoding the current block into a bitstream representation.

[0540] 9. The method of any one of the provisions 1 to 7, wherein the transformation includes decoding the current block from the bitstream representation.

[0541] 10. A video processing apparatus, comprising a processor configured to implement the methods of any one or more of clauses 1 to 9.

[0542] 11. A computer-readable medium storing program code that, when executed, causes a processor to implement one or more of the methods described in items 1 to 9.

[0543] 12. A computer-readable medium for storing an encoded representation or bitstream representation generated according to any of the methods described above.

[0544] The disclosures and other terms, 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 thereof. 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 materials that enable machine-readable propagation of signals, or a combination thereof. The term "data processing apparatus" includes all means, devices, and machines for processing data, including, for example, a programmable processor, a computer, or multiple processors or computers. In addition to hardware, the apparatus may include code that creates an execution environment for the computer program in question, for example, code constituting processor firmware, a protocol stack, a database management system, an operating system, or a combination thereof. The propagated signals are artificially generated signals, such as machine-generated electrical, optical, or electromagnetic signals, which are generated to encode and decode information for transmission to a suitable receiver device.

[0545] Computer programs (also known as programs, software, software applications, scripts, or code) can be written in any programming language, including compiled or interpreted languages, and can be deployed in any form, including as standalone programs or as modules, components, subroutines, or other units suited to a computing environment. A computer program does not necessarily correspond to a file in a file system. A program can be stored as a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple collaborative files (e.g., a file storing one or more modules, subroutines, or code sections). Computer programs can be deployed to execute on a single computer or on multiple computers located at a site or distributed across multiple sites and interconnected via a communication network.

[0546] The processes and logic flows described herein can be executed by one or more programmable processors that execute one or more computer programs to perform functions by manipulating input data and generating 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).

[0547] For example, processors suitable for executing computer programs include general-purpose and special-purpose microprocessors, as well as any one or more processors in any kind of digital computer. Typically, the processor receives instructions and data from read-only memory or random access memory, or both. The basic components of a computer are a processor for executing instructions and one or more storage 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 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 storage 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 integrated therein by dedicated logic circuitry.

[0548] While this patent document contains numerous details, these details should not be construed as limiting the scope of any subject matter or claimed content, but rather as descriptions of features characteristic of specific embodiments of a particular technology. Certain features described in the context of individual embodiments in this patent document may also be implemented in combination in a single embodiment. Conversely, various features described in the context of a single embodiment may also be implemented individually or in any suitable sub-combination in multiple embodiments. Furthermore, although features may be described above as functioning in certain combinations, and even initially claimed in this way, one or more features from a claimed combination may be removed from that combination in some cases, and the claimed combination may be for sub-combinations or variations thereof.

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

[0550] Only some implementation methods and examples are described, and other implementation methods, enhancements and variations can be made based on the content described and shown in this patent document.

Claims

1. A video processing method, comprising: Perform the conversion between the current block of the video and the bitstream of the video. The current video block is encoded and decoded using a palette mode, where a palette of representative sample values ​​is used to represent the current block. The transformation includes selectively saving and loading the palette prediction values ​​in the palette mode based on the use of local dual trees in the transformation.

2. The method of claim 1, wherein when it is determined that a single tree is switched to a local dual tree, the palette prediction value is saved to a temporary buffer.

3. The method of claim 2, wherein the palette prediction value is reset before being used to decode the first block in the local dual tree.

4. The method of claim 1, wherein when it is determined that a local dual-tree has been switched to a single-tree, the palette prediction value is loaded from a temporary buffer.

5. The method of claim 1, wherein the maximum permissible size of the palette is signaled in the decoder parameter set (DPS), sequence parameter set (SPS), video parameter set (VPS), picture parameter set (PPS), adaptive parameter set (APS), picture header, strip header, slice header, maximum codec unit (LCU), codec unit (CU), LCU line, LCU group, transform unit (TU) or prediction unit (PU) block or video codec unit associated with the current block.

6. The method of claim 1, wherein the maximum permissible size of the palette prediction value is signaled in the decoder parameter set (DPS), sequence parameter set (SPS), video parameter set (VPS), picture parameter set (PPS), adaptive parameter set (APS), picture header, strip header, slice header, maximum codec unit (LCU), codec unit (CU), LCU line, LCU group, transform unit (TU) or prediction unit (PU) block or video codec unit associated with the current block.

7. The method according to any one of claims 1 to 6, wherein the manner in which the conversion is performed is further based on at least one of the following: (a) Screen content or natural content associated with the current block, (b) Messages notified by signaling in the decoder parameter set (DPS), sequence parameter set (SPS), video parameter set (VPS), picture parameter set (PPS), adaptive parameter set (APS), picture header, strip header, slice header, maximum codec unit (LCU), codec unit (CU), LCU line, LCU group, transform unit (TU) or prediction unit (PU) block or video codec unit associated with the current block. (c) The location of at least one of the CU, PU, ​​TU, current block, or video codec unit. (d) The height or width of the current block or neighboring blocks. (e) The shape of the current block or neighboring blocks. (f) The quantization parameters (QP) of the current block, (g) An indication of the color format of the current block, (h) Applied to the codec tree structure of the current block, (i) are stripe or slice group type or image type that includes the current block, slice or image. (j) The color components representing the color of the video. (k) Temporal layer identifier (ID), or (l) The grade, level or hierarchy of the standard associated with the conversion.

8. The method according to any one of claims 1 to 7, wherein the conversion comprises encoding the current block into the bit stream.

9. The method according to any one of claims 1 to 7, wherein the conversion comprises decoding the current block from the bitstream.

10. A video processing apparatus comprising a processor configured to implement the method of any one or more of claims 1 to 9.

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

12. A computer-readable medium for storing a encoded or decoded representation or bitstream generated according to any of the methods described above.