Video processing method and apparatus using palette mode
By determining the tree structure and encoding method of the target encoding unit in video encoding, allowing or prohibiting the use of palette mode, the coding difficulty of local double-tree structure single-tree strips in the prior art is solved, and the palette mode is improved coding efficiency and applicability.
Patent Information
- Application Number
- CN202411013584.6
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2019-12-22
- Filing Date
- 2020-10-02
- Publication Date
- 2024-12-20
AI Technical Summary
When existing video encoding technology deals with single tree strips with local dual-tree structures, it is difficult to effectively apply the palette mode, resulting in a decrease in encoding efficiency.
By determining whether the target encoding unit is a single tree strip and allowing or prohibiting the use of palette mode when specific conditions are met, decoding is combined with the default palette entries, it is suitable for different chromatic formats and encoding tree structures.
Improves the encoding efficiency of the palette mode, and is suitable for other chromaticity formats except for the 4:4:4 color format, solves the problem of single-tree strip coding of dual-tree CUs, and enhances the flexibility and efficiency of video processing. .
Smart Images

Figure CN119172531A_ABST
Abstract
Description
This application is a divisional application of the patent application with application number 202080081908.3 filed on October 2, 2020. CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] The present disclosure claims priority to U.S. Provisional Application No. 62 / 943,083 filed on December 3, 2019 and U.S. Provisional Application No. 62 / 952,426 filed on December 22, 2019, all of which are incorporated herein by reference.
[0002] TECHNICAL FIELD The present disclosure relates generally to video processing, and more particularly, to methods and apparatus for signaling and using palette modes. Background Art
[0003] A video is a set of static images (or "frames") that capture visual information. In order to reduce storage memory and transmission bandwidth, the video can be compressed before storage or transmission, and then decompressed before display. The compression process is usually called encoding, and the decompression process is usually called decoding. There are many video coding formats that use standardized video coding techniques, the most common of which are based on prediction, transform, quantization, entropy coding, and loop filtering. Video coding standards, such as the High Efficiency Video Coding (HEVC / H.265) standard, the Versatile Video Coding (VVC / H.266) standard, and the AVS standard, specify specific video coding formats and are developed by standardization organizations. As more and more advanced video coding technologies are adopted in video standards, the coding efficiency of new video coding standards is getting higher and higher. Summary of the invention
[0004] Embodiments of the present invention provide a method and apparatus for signaling and using a palette mode. In some exemplary embodiments, a video processing method includes: receiving a first palette entry of a palette for encoding a target coding unit (CU); determining whether the target CU is part of a single tree slice; determining whether the target CU is encoded with separate luma trees and chroma trees; and in response to determining that the target CU is part of a single tree slice and is encoded with separate luma trees and chroma trees, decoding a first component of the target CU based on the first palette entry, and decoding a second component of the target CU based on a default palette entry.
[0005] In some embodiments, an exemplary video processing device includes at least one memory for storing an instruction set and at least one processor. The at least one processor is configured to execute the instructions to cause the device to perform: receiving a first palette entry of a palette for encoding a target coding unit (CU); determining whether the target CU is part of a single tree slice; determining whether the target CU is encoded with separate luma trees and chroma trees; and in response to determining that the target CU is part of a single tree slice and is encoded with separate luma trees and chroma trees, decoding a first component of the target CU based on the first palette entry, and decoding a second component of the target CU based on a default palette entry.
[0006] In some embodiments, an exemplary non-transitory computer-readable storage medium stores an instruction set. The instruction set is executable by one or more processing devices to cause a video processing apparatus to perform: receiving a first palette entry of a palette for encoding a target coding unit (CU); determining whether the target CU is part of a single tree slice; determining whether the target CU is encoded with separate luma trees and chroma trees; and in response to determining that the target CU is part of a single tree slice and is encoded with separate luma trees and chroma trees, decoding a first component of the target CU based on the first palette entry, and decoding a second component of the target CU based on a default palette entry. BRIEF DESCRIPTION OF THE DRAWINGS
[0007] Specific embodiments and various aspects of the invention are illustrated in the following detailed description and accompanying drawings.The various features illustrated in the drawings are not drawn to scale.
[0008] Figure 1 is a schematic diagram of the structure of an exemplary video sequence according to some embodiments of the present disclosure.
[0009] Figure 2 A schematic diagram of an exemplary encoder in a hybrid video coding system according to some embodiments of the present disclosure is shown.
[0010] Figure 3 A schematic diagram of an exemplary decoder in a hybrid video coding system according to some embodiments of the present disclosure is shown.
[0011] Figure 4 A block diagram of an exemplary apparatus for encoding or decoding a video according to some embodiments of the present disclosure is shown.
[0012] Figure 5 A schematic diagram of an exemplary image block encoded in palette mode according to some embodiments of the present disclosure is shown.
[0013] Figure 6A schematic diagram is shown of an exemplary process for updating a palette predictor after encoding a coding unit according to some embodiments of the present disclosure.
[0014] Figure 7 An exemplary Table 1 is shown, which shows a portion of a sequence parameter set (SPS) syntax table according to some embodiments of the present disclosure.
[0015] Figure 8 Exemplary Table 2 is shown, which shows a portion of a coding unit syntax table according to some embodiments of the present disclosure.
[0016] Fig. 9 Exemplary Table 3 is shown, which shows a portion of a palette encoding syntax table, according to some embodiments of the present disclosure.
[0017] Fig.10 An exemplary decoding process for palette mode according to some embodiments of the present disclosure is shown.
[0018] Fig.11 Exemplary Table 4 is shown, which shows a portion of a palette encoding syntax table, according to some embodiments of the present disclosure.
[0019] Fig.12 Exemplary palette encoding semantics and decoding processes for palette mode according to some embodiments of the present disclosure are shown.
[0020] Fig.13 Exemplary Table 5 is shown, which shows a portion of a palette encoding syntax table, according to some embodiments of the present disclosure.
[0021] Fig.14 An exemplary decoding process for palette mode according to some embodiments of the present disclosure is shown.
[0022] Fig.15 An exemplary Table 6 is shown, which shows a portion of a coding unit syntax table according to some embodiments of the present disclosure.
[0023] Fig.16 Exemplary Table 7 is shown, which shows a portion of a palette encoding syntax table, according to some embodiments of the present disclosure.
[0024] Fig.17 Another exemplary palette encoding semantics and decoding process for palette mode according to some embodiments of the present disclosure is shown.
[0025] Fig.18 A flowchart of an exemplary video processing method according to some embodiments of the present disclosure is shown.
[0026] Fig.19A flowchart of another exemplary video processing method according to some embodiments of the present disclosure is shown.
[0027] Fig. 20 A flowchart of another exemplary video processing method according to some embodiments of the present disclosure is shown.
[0028] Fig.21 A flowchart of another exemplary video processing method according to some embodiments of the present disclosure is shown.
[0029] Fig. 22 A flowchart of another exemplary video processing method according to some embodiments of the present disclosure is shown.
[0030] Fig.23 A flowchart of another exemplary video processing method according to some embodiments of the present disclosure is shown. DETAILED DESCRIPTION
[0031] Reference will now be made in detail to exemplary embodiments, examples of which are shown in the accompanying drawings. The following description refers to the accompanying drawings, in which the same numbers in different drawings represent the same or similar elements unless otherwise specified. The embodiments set forth in the following description of the exemplary embodiments do not represent all embodiments consistent with the present disclosure. Instead, they are merely examples of devices and methods consistent with aspects related to the present disclosure as described in the appended claims. Specific aspects of the present disclosure are described in more detail below. If there is a conflict with terms and / or definitions incorporated by reference, the terms and definitions provided herein shall prevail.
[0032] The Joint Video Experts Group (JVET) of the ITU-T Video Coding Experts Group (ITU-T VCEG) and the ISO / IEC Moving Picture Experts Group (ISO / IEC MPEG) is currently developing the Versatile Video Coding (VVC / H.266) standard. The VVC standard aims to double the compression efficiency of its predecessor, the High Efficiency Video Coding (HEVC / H.265) standard. In other words, VVC aims to achieve the same subjective quality as HEVC / H.265 using half the bandwidth.
[0033] In order to achieve the same subjective quality as HEVC / H.265 using half the bandwidth, JVET has been developing technologies beyond HEVC using the Joint Exploration Model (JEM) reference software. As coding technologies are incorporated into JEM, JEM achieves higher coding performance than HEVC. VCEG and MPEG have officially started developing the next generation of video compression standards beyond HEVC.
[0034] The VVC standard was developed recently and continues to include more coding techniques that provide better compression performance. VVC is based on the same hybrid video coding system that has been used in modern video compression standards such as HEVC, H.264 / AVC, MPEG2, H.263, etc.
[0035] A video is a set of static images (or "frames") arranged in time sequence to store visual information. These images can be captured and stored in time sequence using a video capture device (e.g., a camera), and such images in time sequence can be displayed using a video playback device (e.g., a television, a computer, a smartphone, a tablet computer, a video player, or any end-user terminal with display capabilities). In addition, in some applications, the video capture device can send the captured video to a video playback device (e.g., a computer with a monitor) in real time, such as for monitoring, conferencing, or live broadcasting.
[0036] In order to reduce the storage space and transmission bandwidth required for such applications, the video can be compressed before storage and transmission, and decompressed before display. Compression and decompression can be implemented by software executed by a processor (e.g., a processor of a general-purpose computer) or dedicated hardware. The module for compression is generally referred to as an "encoder", and the module for decompression is generally referred to as a "decoder". Encoders and decoders can be collectively referred to as "codecs". Encoders and decoders can be implemented as any of various suitable hardware, software, or combinations thereof. For example, the hardware implementation of encoders and decoders can include circuits such as one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, or any combination thereof. The software implementation of encoders and decoders can include program code, computer executable instructions, firmware, or any suitable computer-implemented algorithm or process fixed in a computer-readable medium. Video compression and decompression can be implemented by various algorithms or standards, such as MPEG-1, MPEG-2, MPEG-4, H.26x series, etc. In some applications, a codec can decompress a video from a first coding standard and recompress the decompressed video using a second coding standard, in which case the codec can be referred to as a "transcoder".
[0037] The video encoding process can identify and retain useful information that can be used to reconstruct the image, and ignore unimportant reconstruction information. If the ignored unimportant information cannot be completely reconstructed, such an encoding process can be called "lossy". Otherwise, it can be called "lossless". Most encoding processes are lossy, which is a trade-off to reduce the required storage space and transmission bandwidth.
[0038] Useful information about the image being encoded (referred to as the "current image") includes changes relative to a reference image (e.g., a previously encoded and reconstructed image). Such changes can include changes in pixel position, brightness, or color, with position changes being of greatest interest. Changes in the position of a group of pixels representing an object can reflect the object's motion between the reference image and the current image.
[0039] A picture that is encoded without reference to another picture (i.e. it is its own reference picture) is called an "I-picture". A picture that is encoded using the previous picture as a reference picture is called a "P-picture", and a picture that is encoded using both the previous picture and the future picture as reference pictures is called a "B-picture" (reference is "bidirectional").
[0040] Figure 1 The structure of an example video sequence 100 according to some embodiments of the present disclosure is shown. The video sequence 100 may be a live video or a video that has been captured and archived. The video 100 may be a real-life video, a computer-generated video (e.g., a computer game video), or a combination of the two (e.g., a real video with an augmented reality effect). The video sequence 100 may be from a video capture device (e.g., a camera), a video archive containing previously captured videos (e.g., a video file stored in a storage device), or a video feed interface (e.g., a video broadcast transceiver) that receives video from a video content provider.
[0041] like Figure 1 As shown, video sequence 100 may include a series of images arranged in time along a timeline, including images 102, 104, 106, and 108. Images 102-106 are consecutive, and there are more images between images 106 and 108. Figure 1 , picture 102 is an I-picture, and its reference picture is picture 102 itself. Picture 104 is a P-picture, and its reference picture is picture 102, as indicated by the arrow. Picture 106 is a B-picture, and its reference pictures are pictures 104 and 108, as indicated by the arrow. In some embodiments, the reference picture of a picture (e.g., picture 104) may not be immediately before or after the picture. For example, the reference picture of picture 104 may be the picture before picture 102. It should be noted that the reference pictures of pictures 102-106 are merely examples, and the present disclosure is not limited to such pictures. Figure 1 Example of a reference image shown.
[0042] Typically, video codecs do not encode or decode the entire image at once due to the computational complexity of the encoding and decoding tasks. Instead, they may segment the image into basic segments and encode or decode the image segments one by one. In this disclosure, such basic segments are referred to as basic processing units ("BPUs"). For example, Figure 1Structure 110 in shows an example structure of an image of video sequence 100 (e.g., any of images 102-108). In structure 110, the image is divided into 4×4 basic processing units, whose boundaries are shown as dashed lines. In some embodiments, the basic processing unit may be referred to as a "macroblock" in some video coding standards (e.g., the MPEG family, H.261, H.263, or H.264 / AVC), or as a "coding tree unit" ("CTU") in some other video coding standards (e.g., H.265 / HEVC or H.266 / VVC). The basic processing unit may have a variable size in the image, such as 128×128, 64×64, 32×32, 16×16, 4×8, 16×32, or pixels of any shape and size. The size and shape of the basic processing unit may be selected for the image based on a balance between coding efficiency and the level of detail to be maintained in the basic processing unit.
[0043] A basic processing unit may be a logical unit that may include a set of different types of video data stored in a computer memory (e.g., in a video frame buffer). For example, a basic processing unit of a color image may include a luma component (Y) representing achromatic luminance information, one or more chroma components (e.g., Cb and Cr) representing color information, and associated syntax elements, where the luma and chroma components may have the same size as the basic processing unit. In some video coding standards (e.g., H.265 / HEVC or H.266 / VVC), luma and chroma components may be referred to as "coding tree blocks" ("CTBs"). Any operation performed on a basic processing unit may be repeated for each of its luma and chroma components.
[0044] Video encoding has multiple stages of operation, examples of which are Figure 2 and Figure 3As shown. For each stage, the size of the basic processing unit may still be too large for processing, so it can be further divided into segments referred to as "basic processing subunits" in this disclosure. In some embodiments, the basic processing subunit may be referred to as a "block" in some video coding standards (e.g., MPEG family, H.261, H.263, or H.264 / AVC), or as a "coding unit" ("CU") in some other video coding standards (e.g., H.265 / HEVC or H.266 / VVC). The basic processing subunit may have the same size as the basic processing unit or a smaller size than the basic processing unit. Similar to the basic processing unit, the basic processing subunit is also a logical unit, which may include a set of different types of video data (e.g., Y, Cb, Cr, and associated syntax elements) stored in a computer memory (e.g., in a video frame buffer). Any operation performed on the basic processing subunit can be repeated for each of its luminance and chrominance components. It should be noted that this division can be performed to a further level according to processing needs. It should also be noted that different schemes can be used to divide the basic processing unit at different stages.
[0045] For example, in the mode decision phase (an example of which is in Figure 2 As shown in , the encoder can decide what prediction mode (e.g., intra prediction or inter prediction) to use for a basic processing unit, which may be too large to make such a decision. The encoder can divide the basic processing unit into multiple basic processing sub-units (e.g., CUs in H.265 / HEVC or H.266 / VVC) and decide the prediction type for each individual basic processing sub-unit.
[0046] For another example, in the prediction phase (the example in Figure 2 ), the encoder can perform prediction operations at the level of basic processing sub-units (e.g., CUs). However, in some cases, the basic processing sub-units may still be too large to process. The encoder can further divide the basic processing sub-units into smaller segments (e.g., called "prediction blocks" or "PBs" in H.265 / HEVC or H.266 / VVC), at which prediction operations can be performed.
[0047] For another example, in the transformation phase (the example in Figure 2), the encoder can perform transform operations on the residual basic processing sub-unit (e.g., CU). However, in some cases, the basic processing sub-unit may still be too large to process. The encoder can further divide the basic processing sub-unit into smaller segments (e.g., called "transform blocks" or "TBs" in H.265 / HEVC or H.266 / VVC), at which level transform operations can be performed. It should be noted that the division scheme of the same basic processing sub-unit can be different in the prediction stage and the transform stage. For example, in H.265 / HEVC or H.266 / VVC, the prediction blocks and transform blocks of the same CU can have different sizes and numbers.
[0048] exist Figure 1 In the structure 110, the basic processing unit 112 is further divided into 3×3 basic processing sub-units, whose boundaries are shown by dotted lines. Different basic processing units of the same image can be divided into basic processing sub-units in different schemes.
[0049] In some embodiments, in order to provide parallel processing capabilities and fault tolerance for video encoding and decoding, the image can be divided into regions for processing, so that for the region of the image, the encoding or decoding process can be independent of information from any other region of the image. In other words, each region of the image can be processed separately. By doing so, the codec can process different regions of the image in parallel, thereby improving coding efficiency. In addition, when the data of a region is damaged during processing or lost during network transmission, the codec can correctly encode or decode other regions of the same image without relying on the damaged or lost data, thereby providing fault tolerance. In some video coding standards, the image can be divided into different types of regions. For example, H.265 / HEVC and H.266 / VVC provide two types of regions: "slices" and "tiles". It should also be noted that different images of the video sequence 100 can have different partitioning schemes for dividing the image into regions.
[0050] For example, in Figure 1 In FIG. 1 , the structure 110 is divided into three regions 114, 116, and 118, whose boundaries are shown as solid lines inside the structure 110. The region 114 includes four basic processing units. The regions 116 and 118 each include six basic processing units. It should be noted that Figure 1 The basic processing units, basic processing sub-units, and structural areas in 110 are merely examples, and the present disclosure does not limit the embodiments thereof.
[0051] Figure 2A schematic diagram of an exemplary encoder 200 in a hybrid video coding system according to some embodiments of the present disclosure is shown. The video encoder 200 can perform intra-frame or inter-frame coding of blocks within a video frame (including video blocks, or partitions or sub-partitions of video blocks). Intra-frame coding can rely on spatial prediction to reduce or eliminate spatial redundancy in video within a given video frame. Inter-frame coding can rely on temporal prediction to reduce or eliminate temporal redundancy in video within adjacent frames of a video sequence. Intra-frame modes can refer to multiple spatial-based compression modes. Inter-frame modes (such as unidirectional prediction or bidirectional prediction) can refer to multiple temporal-based compression modes.
[0052] refer to Figure 2 , the input video signal 202 can be processed block by block. For example, the video block unit can be a 16×16 pixel block (e.g., a macroblock (MB)). The size of the video block unit may vary, depending on the coding technology used and the required accuracy and efficiency. In HEVC, extended block sizes (e.g., coding tree units (CTUs)) can be used to compress the resolution of the video signal, for example, 1080p and above. In HEVC, a CTU may include up to 64×64 luma samples, corresponding chroma samples, and associated syntax elements. In VVC, the size of the CTU can be further increased to include 128×128 luma samples, corresponding chroma samples, and associated syntax elements. The CTU can be further divided into coding units (CUs) using, for example, a quadtree, a binary tree, or a ternary tree. The CU can be further divided into prediction units (PUs), for which a separate prediction method can be applied. Each input video block can be processed using a spatial prediction unit 260 or a temporal prediction unit 262.
[0053] The spatial prediction unit 260 performs spatial prediction (e.g., intra prediction) on the current block / CU using information about the same image / slice containing the current block. Spatial prediction can use pixels from already encoded neighboring blocks in the same video image frame / slice to predict the current video block. Spatial prediction can reduce spatial redundancy inherent in video signals.
[0054] The temporal prediction unit 262 performs temporal prediction (e.g., inter-frame prediction) on the current block using information from a different picture / slice than the picture / slice containing the current block. The temporal prediction of a video block may be signaled by one or more motion vectors. In unidirectional directional temporal prediction, only one motion vector indicating one reference picture is used to generate a prediction signal for the current block. On the other hand, in bidirectional temporal prediction, two motion vectors (each indicating a corresponding reference picture) may be used to generate a prediction signal for the current block. The motion vector may indicate the amount and direction of motion between the current block and one or more associated blocks in the reference frame. If multiple reference pictures are supported, one or more reference picture indexes may be sent for the video block. One or more reference indexes may be used to identify which reference picture in the reference picture storage or decoded picture buffer (DPB) 264 the temporal prediction signal comes from.
[0055] The mode decision in the encoder and the encoder control unit 280 can select the prediction mode, for example, based on rate distortion optimization. Based on the determined prediction mode, a prediction block can be obtained. The prediction block can be subtracted from the current video block at the adder 216. The prediction residual can be transformed by the transform unit 204 and quantized by the quantization unit 206. The quantized residual coefficients can be inverse quantized at the inverse quantization unit 210 and inverse transformed at the inverse transform unit 212 to form a reconstructed residual. The reconstructed residual can be added to the prediction block at the adder 226 to form a reconstructed video block. The video block reconstructed before loop filtering can be used to provide reference samples for intra prediction.
[0056] The reconstructed video blocks may be loop filtered at loop filter 266. For example, a deblocking filter, sample adaptive offset (SAO), and adaptive loop filter (ALF) may be used. The loop filtered reconstructed blocks may be stored in reference picture storage 264 and may be used to provide inter prediction reference samples for encoding other video blocks. To form the output video bitstream 220, the coding mode (e.g., inter or intra), prediction mode information, motion information, and quantized residual coefficients may be sent to entropy coding unit 208 to further reduce the bit rate before the data is compressed and packed to form the bitstream 220.
[0057] Figure 3 FIG. 3 is a schematic diagram of an exemplary decoder 300 in a hybrid video coding system according to some embodiments of the present disclosure. Figure 3, the video bitstream 302 may be decompressed or entropy decoded at the entropy decoding unit 308. The coding mode information may be used to determine whether to select the spatial prediction unit 360 or the temporal prediction unit 362. The prediction mode information may be sent to the corresponding prediction unit to generate a prediction block. For example, motion compensated prediction may be applied by the temporal prediction unit 362 to form a temporal prediction block.
[0058] The residual coefficients may be sent to an inverse quantization unit 310 and an inverse transform unit 312 to obtain a reconstructed residual. The predicted block and the reconstructed residual may be added at 326 to form a reconstructed block before loop filtering. The reconstructed block may then be loop filtered at a loop filter 366. For example, loop filtering such as a deblocking filter, SAO, and ALF may be applied. The loop filtered reconstructed block may then be stored in a reference image storage 364. The reconstructed data in the reference image storage 364 may be used to obtain a decoded video 320, or to predict future video blocks. The decoded video 320 may be displayed on a display device (such as a TV, PC, smartphone, or tablet) for viewing by an end user.
[0059] Figure 4 4 is a block diagram of an exemplary apparatus 400 for encoding or decoding a video according to some embodiments of the present disclosure. Figure 4 As shown, the device 400 may include a processor 402. When the processor 402 executes the instructions described herein, the device 400 may become a special-purpose machine for video encoding or decoding. The processor 402 may be any type of circuit capable of manipulating or processing information. For example, the processor 402 may include any number of central processing units (or "CPUs"), graphics processing units (or "GPUs"), neural network processing units ("NPUs"), microcontroller units ("MCUs"), optical processors, programmable logic controllers, microprocessors, digital signal processors, intellectual property (IP) cores, programmable logic arrays (PLAs), programmable array logic (PALs), general array logic (GALs), complex programmable logic devices (CPLDs), field programmable gate arrays (FPGAs), systems on chips (SoCs), application-specific integrated circuits (ASICs), and the like. In some embodiments, the processor 402 may also be a group of processors grouped into a single logical component. For example, as Figure 4 As shown, processor 402 may include multiple processors, including processor 402a, processor 402b, and processor 402n.
[0060] The apparatus 400 may also include a memory 404 configured to store data (eg, a set of instructions, computer code, intermediate data, etc.). Figure 4 As shown, the stored data may include program instructions (e.g., for implementing Figure 2or Figure 3 The processor 402 may access the program instructions and data for processing (e.g., via the bus 410), and execute the program instructions to perform operations or manipulations on the data for processing. The memory 404 may include a high-speed random access memory device or a non-volatile memory device. In some embodiments, the memory 404 may include any number of random access memories (RAM), read-only memories (ROM), optical disks, magnetic disks, hard disk drives, solid-state drives, flash drives, secure digital (SD) cards, memory sticks, compact flash (CF) cards, etc. Any combination. The memory 404 may also be a group of memories grouped into a single logical component ( Figure 4 not shown).
[0061] The bus 410 may be a communication device that transmits data between components inside the apparatus 400, such as an internal bus (eg, a CPU memory bus), an external bus (eg, a Universal Serial Bus port, a Peripheral Component Interconnect Express port), or the like.
[0062] For ease of explanation and without ambiguity, the processor 402 and other data processing circuits are collectively referred to as "data processing circuits" in this disclosure. The data processing circuits may be implemented entirely as hardware, or as a combination of software, hardware, or firmware. In addition, the data processing circuits may be a single separate module, or may be fully or partially combined into any other component of the device 400.
[0063] The device 400 may also include a network interface 406 to provide wired or wireless communication with a network (e.g., the Internet, an intranet, a local area network, a mobile communication network, etc.). In some embodiments, the network interface 406 may include any number of network interface controllers (NICs), radio frequency (RF) modules, transponders, transceivers, modems, routers, gateways, wired network adapters, wireless network adapters, Bluetooth adapters, infrared adapters, near field communication (“NFC”) adapters, cellular network chips, or any combination thereof.
[0064] In some embodiments, the apparatus 400 may optionally further include a peripheral interface 408 to provide a connection to one or more peripheral devices. Figure 4 As shown, peripheral devices may include, but are not limited to, a cursor control device (e.g., a mouse, touchpad, or touch screen), a keyboard, a display (e.g., a cathode ray tube, a liquid crystal display, or a light emitting diode display), a video input device (e.g., a camera or an input interface coupled to a video archive), etc.
[0065] It should be noted that the video codec may be implemented as any combination of software or hardware modules in the apparatus 400. For example, Figure 2 Encoder 200 or Figure 3 Some or all stages of the decoder 300 may be implemented as one or more software modules of the apparatus 400, such as program instructions that may be loaded into the memory 404. For another example, Figure 2 Encoder 200 or Figure 3 Some or all stages of decoder 300 may be implemented as one or more hardware modules of apparatus 400, such as dedicated data processing circuits (eg, FPGA, ASIC, NPU, etc.).
[0066] In the quantization and inverse quantization blocks (e.g. Figure 2 The quantization unit 206 and the inverse quantization unit 210, Figure 3 The amount of quantization (and inverse quantization) applied to the prediction residual is determined using a quantization parameter (QP) in the inverse quantization unit 310 of the quantization unit. The initial QP value for encoding a picture or slice can be signaled at a high level, for example, using the syntax element init_qp_minus26 in the picture parameter set (PPS) and using the syntax element slice_qp_delta in the slice header. In addition, the QP value can be adapted for each CU at a local level using a delta QP value that is sent at the granularity of a quantization group.
[0067] In VVC (e.g., VVC draft 7), palette mode is used in 4:4:4 color format. When palette mode is enabled, if the CU size is less than or equal to 64×64, a flag is sent at the CU level to indicate whether palette mode is used.
[0068] Figure 5 FIG. 5 is a schematic diagram of an exemplary image block 500 encoded in a palette mode according to some embodiments of the present disclosure. Figure 5 As shown, if the current CU is encoded using a palette mode, the sample values in each position in the CU are represented by a small group of representative color values. The group is called a palette (e.g., palette 510). For sample positions (e.g., positions 501, 502, or 503) with values close to the palette color, the corresponding palette index (e.g., index 0, index 1, index 2, or index 3) is signaled. According to some disclosed embodiments, color values outside the palette can be specified by signaling an escape index (or escape color index). Then, for all positions (e.g., position 504) in the CU using an escape color index (e.g., index 4), the (quantized) color component value is signaled for each of these positions.
[0069] To encode the palette, a palette predictor is maintained. The predictor is initialized to 0 (e.g., empty) at the beginning of each slice for the non-wavefront case and at the beginning of each CTU row for the wavefront case. Figure 6 Schematic diagram showing an exemplary process 600 for updating a palette predictor after encoding a coding unit according to some embodiments of the present disclosure. Figure 6 As shown, for each entry in the palette predictor, a reuse flag is signaled to indicate whether it will be included in the current palette of the current CU. The reuse flag is sent using a run-length encoding of zero, followed by the number of new palette entries and the component values of the new palette entries. After encoding a palette-encoded CU, the palette predictor is updated using the current palette, and entries from the previous palette predictor that are not reused in the current palette are added to the end of the new palette predictor until the maximum size allowed is reached.
[0070] In some embodiments, an escape flag is signaled for each CU to indicate whether there is an escape symbol in the current CU. If there is an escape symbol, the palette table is incremented by one and the last index (e.g., Figure 5 The index 4) shown is assigned as an escape symbol.
[0071] Return to reference Figure 5 , the palette indices of the samples in the CU (e.g., index 0, index 1, index 2, index 3, and index 4) form a palette index map. The index map is encoded using horizontal or vertical transverse scanning. The scanning order is explicitly signaled in the bitstream using the syntax element palette_transpose_flag. The palette index map is encoded using index run mode or index copy mode.
[0072] In some embodiments, the palette mode is only allowed for 4:4:4 color formats. However, a large amount of video content may be encoded in other color formats (e.g., 4:2:0 chroma subsampling format). The present disclosure provides methods for extending the palette mode to other chroma formats (such as monochrome, 4:2:0, 4:2:2, etc.).
[0073] In addition, for slices with luma / chroma dual trees, the palette is applied to luma (Y component) and chroma (Cb and Cr components) separately. For single-tree slices, the palette is applied jointly to Y, Cb, Cr components (e.g., each entry in the palette contains Y, Cb, Cr values). However, in VVC, for 4:2:0 and 4:2:2 color formats, due to restrictions on the minimum allowed chroma coding block size, the coding unit (CU) of a single-tree slice may have separate luma and chroma trees. Therefore, since the luma and chroma of a dual-tree CU are processed separately (although the CU belongs to a single-tree slice), a joint palette cannot be applied to a dual-tree CU. Therefore, in some embodiments of the present disclosure, while extending the palette mode to other chroma formats such as 4:2:0 and 4:2:2, the possibility of a single-tree slice with a local dual-tree structure (e.g., a single tree at the slice level and a dual tree at the CU level) can be addressed.
[0074] Some embodiments of the present disclosure provide methods and apparatus for applying a palette mode to a color format other than a 4:4:4 color format (or a non-4:4:4 color format) and to a single-tree stripe having a local dual-tree structure.
[0075] Some embodiments of the present disclosure may allow palette modes for all chroma formats, such as monochrome, 4:2:0, 4:2:2, 4:4:4, etc. Figure 7 An exemplary Table 1 according to some embodiments of the present disclosure is shown, which shows a portion of an SPS syntax table. As shown in Table 1, it is proposed to delete the syntax elements (bars) running through in box 701 from the current VVC draft 7, and it is proposed to add the syntax elements italicized in box 702 to the current VVC draft 7. Regardless of the value of the syntax element chroma_format_idc, the sps_palette_enabled_flag can be signaled.
[0076] As described above, in current video coding standards (e.g., VVC draft 7), for slices with a single tree, the palette mode is applied jointly to the Y, Cb, Cr components. P and B slices are always coded as single-tree slices. The tree structure of the I slice is signaled via the SPS syntax, for example, the syntax element qtbtt_dual_tree_intra_flag. The syntax element qtbtt_dual_tree_intra_flag equal to 1 specifies that for the I slice, two separate coding_tree syntax structures for luma and chroma are used. The syntax element qtbtt_dual_tree_intra_flag equal to 0 specifies that a separate coding_tree syntax structure is not used for the I slice.
[0077] The coding units of a single-tree slice can have separate luma and chroma trees because, in the case of non-internal minimum chroma intra prediction units (SCIPUs), further division of chroma is not allowed, but further division of luma is allowed. In single-tree coding, a SCIPU is defined as a coding tree node whose chroma block size is greater than or equal to 16 chroma samples and has at least one sub-luminance block less than 64 luma samples. Therefore, the joint palette cannot be applied to a dual-tree CU because the luma and chroma of the dual-tree CU are processed separately (although the dual-tree CU belongs to a single-tree slice). This creates the problem of applying a palette mode to a single-tree slice with a dual-tree CU. The present disclosure provides some embodiments to solve this problem.
[0078] According to some embodiments, if the CU contains a local dual tree, the palette mode is not allowed for the CU. Therefore, the palette mode is not allowed for the CU if the following two conditions are met: (1) the CU is encoded using a separate tree, and (2) the CU belongs to a slice with a single tree. Figure 8 An exemplary Table 2 according to some embodiments of the present disclosure is shown, which shows a portion of a coding unit syntax table. The coding unit syntax table of Table 2 may prohibit the palette mode of a CU. As shown in Table 2, syntax changes consistent with this embodiment are indicated in italics in block 801. Based on the coding unit syntax table of Table 2, the palette mode is not allowed if the following two conditions are met: (treeType!=SINGLE_TREE)&& (Slice_type!=I||qtbtt_dual_tree_intra_flag==0)
[0079] According to some embodiments, in order to improve the coding efficiency of the palette mode, the palette mode is applied to the CU containing the local dual tree. For the local dual tree block, the reuse flag (e.g., syntax element new_palette_entries[cIdx][i]) is signaled without adding a new palette entry (e.g., syntax element new_palette_entries[cIdx][i]). Since the local dual tree block may only contain luma (or chroma) components, the chroma (or luma) value of the new palette entry may be empty. Therefore, sending new palette entries for local dual tree blocks is restricted. Fig. 9 An exemplary Table 3 according to some embodiments of the present disclosure is shown, which shows a portion of a palette encoding syntax table. The palette encoding syntax table of Table 3 can apply a palette mode to a CU containing a local dual tree. As shown in Table 3, syntax changes consistent with this embodiment are indicated in italics in blocks 901-904.
[0080] In addition, for non-4:4:4 color formats, there are pixels that contain only luma components. Therefore, in some embodiments, when these pixels use the escape mode (see Fig. 9 When the syntax in Table 3 of , which is bold and shaded in box 903) is encoded, the brightness value is signaled only for these pixels.
[0081] Fig.10 An exemplary decoding process for palette mode according to some embodiments of the present invention is shown. The decoding process includes section 8.4.5.3 in VVC draft 7. The decoding process may contain two processes, one for pixel reconstruction and the other for palette predictor update.
[0082] like Fig.10 As shown, the decoding process can be similar to Section 8.4.5.3 in VVC Draft 7. The decoding process may include some syntax changes indicated in italics in boxes 1001-1003. When the palette predictor is updated using the current palette, the entries of the current palette are placed before the new palette predictor. Then, the entries from the previous palette predictor that are not reused in the current palette are added to the end of the new palette predictor. For local dual-tree blocks, each palette entry contains luma and chroma components. Therefore, all three components participate in the process of palette predictor update. A requirement for bitstream consistency is that the value of PredictorPaletteSize[startComp] is in the range of 0 to 63, including the end values.
[0083] According to some embodiments, the palette mode may be applied to a local dual tree block in the same manner as the palette mode applied to a single tree block. Because the local dual tree block may contain only a luma (or chroma) component, the value of the luma (or chroma) component is signaled, and a default value may be set to the chroma (or luma) component of the new palette entry. As an example, the default value may be related to the bit depth of the video sequence. As another example, the default value may be zero.
[0084] Furthermore, for non-4:4:4 color formats, when pixels are encoded using the escape mode, luma values are signaled only for pixels containing only luma components. Fig.11 An exemplary Table 4 according to some embodiments of the present disclosure is shown, which shows a portion of a palette encoding syntax table. The palette encoding syntax table of Table 4 can apply a palette mode to a CU containing a local dual tree. As shown in Table 4, syntax changes consistent with this embodiment are indicated in italics in blocks 1101 and 1102.
[0085] In some embodiments of the invention, the syntax parsing of the local dual tree may be aligned with the syntax parsing of the single tree. In addition, the coding efficiency of the palette mode may be improved since fewer bits are signaled.
[0086] Fig.12 2 shows exemplary palette encoding semantics and decoding processes for palette mode according to some embodiments of the present disclosure. Fig.12 As shown, the proposed syntax changes in Sections 7.4.12.6 and 8.4.5.3 of VVC Draft 7 are shown in italics in blocks 1201-1205. For local dual-tree blocks, when performing a palette predictor update, the current palette will first be filled with default values (see Fig.12 All three components then participate in the palette predictor update process. A bitstream conformance requirement is that the value of PredictorPaletteSize[startComp] be in the range 0 to 63, inclusive.
[0087] According to some embodiments, the palette mode may be applied to a local dual-tree block in the same manner as the palette mode applied to a single-tree block, similar to Fig.11 However, in some embodiments, the palette of the local dual tree block is not used to update the palette predictor. Therefore, the decoding process can be simplified because the reordering process in the palette predictor is skipped.
[0088] Furthermore, for non-4:4:4 color formats, when pixels are encoded using the escape mode, luma values are signaled only for pixels containing only luma components. Fig.13 An exemplary Table 5 according to some embodiments of the present disclosure is shown, which shows a portion of a palette encoding syntax table. The palette encoding syntax table of Table 5 can apply a palette mode to a CU containing a local dual tree. As shown in Table 5, syntax changes consistent with this embodiment are indicated in italics in blocks 1301 and 1302.
[0089] Fig.14 An exemplary decoding process for palette mode according to some embodiments of the present disclosure is shown. Fig.14 As shown, in blocks 1401 and 1402, the syntax changes suggested in section 8.4.5.3 of VVC draft 7 are in italics. For local dual-tree blocks, the palette predictor is not updated. A bitstream conformance requirement is that the value of PredictorPaletteSize[startComp] is in the range of 0 to 63, inclusive.
[0090] According to some embodiments, the palette mode can be applied to local dual-tree luma blocks in the same manner as the palette mode applied to single-tree blocks. For local dual-tree chroma blocks, the palette mode is disabled. Since the local dual-tree luma blocks may only contain luma components, the value of the luma component is signaled and the new palette entry chroma components can be set to default values. As an example, the default value can be related to the bit depth of the video sequence. As another example, the default value can be zero.
[0091] Furthermore, for non-4:4:4 color formats, when pixels are encoded using skip mode, luma values are signaled only for pixels containing only luma components. Fig.15 An exemplary Table 6 is shown, which shows a portion of a coding unit syntax table according to some embodiments of the present disclosure. Fig.16 An exemplary Table 7 according to some embodiments of the present disclosure is shown, which shows a portion of a palette encoding syntax table. The palette encoding syntax table may apply a palette mode to a CU containing a luma local dual tree. Syntax changes in Tables 6 and 7 consistent with this embodiment are indicated in italics in blocks 1501 and 1601-1602, respectively.
[0092] In some embodiments of the present disclosure, the palette design is simplified by disabling the palette for chroma local dual trees.
[0093] Fig.17 2 shows exemplary palette encoding semantics and decoding processes for palette mode according to some embodiments of the present disclosure. Fig.17 As shown, the syntax changes recommended by sections 7.4.12.6 and 8.4.5.3 in VVC draft 7 are indicated in italics in boxes 1701-1705. For local dual-tree blocks, when performing a palette predictor update, the current palette is first filled with default values. Then, all three components participate in the palette predictor update process. The requirement for bitstream consistency is that the value of PredictorPaletteSize[startComp] is in the range of 0 to 63, inclusive.
[0094] Fig.18 1800 according to some embodiments of the present disclosure. In some embodiments, the method 1800 may be performed by a decoder (e.g., Figure 3 decoder 300) or by a device (e.g., Figure 4 The device 400) is executed by one or more software or hardware components. For example, a processor (e.g., Figure 4The method 1800 may be performed by a processor 402 of the computer system. In some embodiments, the method 1800 may be implemented by a computer program product contained in a computer-readable medium, the computer program product comprising a computer (e.g., Figure 4 Computer executable instructions, such as program codes, executed by device 400).
[0095] At step 1801, a palette entry for encoding a target CU may be received. For example, a decoder (e.g., Figure 3 The decoder 300 of the embodiment may receive one or more palette entries (eg, Fig. 9 The bit stream of new_palette_entries[cIdx][i]) in Table 3.
[0096] In step 1803, it may be determined whether the target CU is encoded using separate luma and chroma trees. For example, it may be determined whether the condition (treeType!=SINGLE_TREE) is satisfied. If treeType!=SINGLE_TREE, it may be determined that the target CU is encoded using separate luma and chroma trees.
[0097] At step 1805, it may be determined whether the target CU is part of a single-tree slice. In some embodiments, method 1800 may include determining whether the target CU is part of a P slice or a B slice (e.g., slice_type=I), or determining whether the target CU is part of a single-tree I slice (e.g., qtbtt_dual_tree_intra_flag==0).
[0098] In step 1807, in response to the target CU being determined to be (a) encoded with separate luma trees and chroma trees and (b) part of a single tree slice, a first component of the target CU may be decoded based on the received palette entry. And a second component of the target CU may be decoded based on a default palette entry. In some embodiments, method 1800 may include: in response to the target CU being determined to be part of a P slice or a B slice or part of a single tree I slice, decoding the first and second components of the target CU based on the received palette entry. The first component is a luma component and the second component is a chroma component, or the first component is a chroma component and the second component is a luma component.
[0099] In some embodiments, method 1800 may include receiving a reuse flag for reusing a palette entry to palette encode a target CU, and updating a palette predictor of the target CU based on the received palette entry and the received reuse flag. In some embodiments, the size of the palette predictor of the target CU is in the range of 0 to 63, including the end value. In some embodiments, method 1800 may include updating the palette predictor of the target CU based on the received palette entry. In some embodiments, the palette predictor of the target CU is not updated after the first component and the second component are decoded.
[0100] Fig.19 1900 according to some embodiments of the present disclosure. In some embodiments, the method 1900 may be performed by an encoder (e.g., Figure 2 200), a decoder (e.g., Figure 3 decoder 300) or a device (e.g., Figure 4 For example, a processor (e.g., Figure 4 The processor 402 of the computer readable medium may perform the method 1900. In some embodiments, the method 1900 may be implemented by a computer program product contained in a computer-readable medium, wherein the computer program product includes a computer (e.g., Figure 4 Computer executable instructions, such as program codes, executed by device 400).
[0101] At step 1901, method 1900 may include signaling a flag indicating that a palette mode is enabled for a target CU. The flag may be signaled regardless of whether the chroma sampling format is used for the target CU. In some embodiments, the flag is signaled in an SPS. The chroma sampling format may include one or more of a 4:4:4 format, a 4:2:2 format, or a 4:2:0 format.
[0102] At step 1903, method 1900 may also include determining a chroma sampling format (e.g., a 4:4:4 format, a 4:2:2 format, or a 4:2:0 format) for the target CU. In some embodiments, method 1900 may include: based on the determined chroma sampling format (e.g., a 4:4:4 format), signaling a corresponding syntax element (e.g., Figure 7 The syntax element sps_act_enabled_flag in Table 1).
[0103] Fig. 20 2000 according to some embodiments of the present disclosure. In some embodiments, the method 2000 may be performed by an encoder (e.g., Figure 2 200), a decoder (e.g., Figure 3 decoder 300) or a device (e.g., Figure 4 For example, a processor (e.g., Figure 4 The method 2000 may be performed by a processor 402 of the computer system. In some embodiments, the method 2000 may be implemented by a computer program product contained in a computer-readable medium, wherein the computer program product includes a computer (e.g., Figure 4 Computer executable instructions, such as program codes, executed by device 400).
[0104] In step 2001, it may be determined whether the target CU is encoded using separate luma trees and chroma trees. For example, it may be determined whether the condition (treeType!=SINGLE_TREE) is satisfied. If treeType!=SINGLE_TREE, it may be determined that the target CU is encoded using separate luma trees and chroma trees.
[0105] In step 2003, it may be determined whether the target CU is part of a single tree slice. In some embodiments, method 2000 may include determining whether the target CU is part of a P slice or a B slice (e.g., slice_type=I), or determining whether the target CU is part of a single tree I slice (e.g., qtbtt_dual_tree_intra_flag==0).
[0106] At step 2005, in response to the target CU being determined to be (a) coded with separate luma and chroma trees and (b) part of a single-tree slice, it may be determined that a palette mode is disabled for the target CU (e.g., Figure 8 Table 2).
[0107] Fig.21 2100 according to some embodiments of the present disclosure. In some embodiments, the method 2100 may be performed by an encoder (e.g., Figure 2 200), a decoder (e.g., Figure 3 decoder 300) or a device (e.g., Figure 4 For example, a processor (e.g., Figure 4 The method 2100 may be performed by a processor 402 of the computer system. In some embodiments, the method 2100 may be implemented by a computer program product contained in a computer-readable medium, wherein the computer program product includes a computer (e.g., Figure 4 Computer executable instructions, such as program codes, executed by device 400).
[0108] In step 2101, it may be determined whether the target CU is encoded using separate luma and chroma trees. For example, it may be determined whether the condition (treeType!=SINGLE_TREE) is satisfied. If treeType!=SINGLE_TREE, it may be determined that the target CU is encoded using separate luma and chroma trees.
[0109] At step 2103, it may be determined whether the target CU is part of a single tree slice. In some embodiments, the method 2100 may include determining whether the target CU is part of a P slice or a B slice (e.g., slice_type=I), or determining whether the target CU is part of a single tree I slice (e.g., qtbtt_dual_tree_intra_flag==0).
[0110] In step 2105, in response to the target CU being determined to be (a) encoded with separate luma and chroma trees and (b) part of a single tree slice, a reuse flag may be signaled for reusing palette entries for encoding the target CU's palette. No new palette entries are signaled for encoding the target CU's palette (e.g., Fig. 9 Table 3).
[0111] In some embodiments, the method 2100 may include: in response to the target CU being determined not to be (a) encoded with separate luma and chroma trees or (b) part of a single tree slice, signaling a palette entry (e.g., Fig. 9 Table 3).
[0112] In some embodiments, method 2100 may include determining whether a pixel in the target CU contains only a luma component, and in response to the pixel being determined to contain only a luma component, if the pixel is encoded using an escape mode CU, only signaling a luma palette escape value for the pixel (e.g., Fig. 9 Table 3).
[0113] Fig. 22 2200 according to some embodiments of the present disclosure. In some embodiments, the method 2200 may be performed by an encoder (e.g., Figure 2 200), a decoder (e.g., Figure 3 decoder 300) or a device (e.g., Figure 4 For example, a processor (e.g., Figure 4The method 2200 may be performed by a processor 402 of the computer system. In some embodiments, the method 2200 may be implemented by a computer program product contained in a computer-readable medium, the computer program product comprising a computer (e.g., Figure 4 Computer executable instructions, such as program codes, executed by device 400).
[0114] At step 2201, it may be determined whether a pixel in a target coding unit (CU) contains only a luma component. At step 2203, in response to the pixel being determined to contain only a luma component, if the pixel is encoded using an escape mode (e.g., Fig.11 4), then only the brightness palette escape value of the pixel can be signaled.
[0115] Fig.23 2300 according to some embodiments of the present disclosure. In some embodiments, the method 2300 may be implemented by a decoder (e.g., Figure 3 decoder 300) or a device (e.g., Figure 4 The device 400) is executed by one or more software or hardware components. For example, a processor (e.g., Figure 4 The method 2300 may be performed by a processor 402 of the computer system. In some embodiments, the method 2300 may be implemented by a computer program product contained in a computer-readable medium, the computer program product comprising a computer (e.g., Figure 4 Computer executable instructions, such as program codes, executed by device 400).
[0116] At step 2301, a bitstream may be received. The bitstream may include a reuse flag for reusing a palette entry for encoding a target CU. For example, a decoder (e.g., Figure 3 The decoder 300 may receive a signal including one or more reuse flags (e.g., Fig. 9 The palette_predictor_run in Table 3 of is used to reuse the palette entries to the palette code that encodes the target CU.
[0117] In step 2303, it may be determined whether the target CU is encoded using separate luma trees and chroma trees. For example, it may be determined whether the condition (treeType!=SINGLE_TREE) is satisfied. If treeType!=SINGLE_TREE, it may be determined that the target CU is encoded using separate luma trees and chroma trees.
[0118] At step 2305, it may be determined whether the target CU is part of a single-tree slice. In some embodiments, method 2300 may include determining whether the target CU is part of a P slice or a B slice (e.g., slice_type=I), or determining whether the target CU is part of a single-tree I slice (e.g., qtbtt_dual_tree_intra_flag==0).
[0119] In step 2307, in response to the target CU being determined to be (a) encoded with separate luma trees and chroma trees and (b) part of a single tree slice, the luma component and the chroma component of the target CU may be decoded based on the received reuse flag. The received bitstream does not include a palette entry for encoding the target CU. In some embodiments, the method 2300 may include: in response to determining that the target CU is part of a P slice or a B slice or part of a single tree I slice, decoding the luma component and the chroma component of the target CU based on the received reuse flag and the palette entry for encoding the target CU in the bitstream.
[0120] In some embodiments, method 2300 may include updating a palette predictor of the target CU based on the received reuse flag. Method 230 may also include: in response to determining that the target CU is part of a P slice or a B slice or part of a single-tree I slice, updating the palette predictor of the target CU based on the received reuse flag and the palette entry for encoding the target CU in the bitstream. In some embodiments, the size of the palette predictor of the target CU is in the range of 0 to 63, including the end value.
[0121] In some embodiments, a non-transitory computer-readable storage medium including an instruction set is also provided, and the instruction set can be executed by a device (such as the disclosed encoder and decoder) for performing the above method. Common forms of non-transitory media include, for example, floppy disks, hard disks, solid-state drives, tapes or any other magnetic data storage media, CD-ROMs, any other optical data storage media, any physical media with hole patterns, RAM, PROM and EPROM, FLASH-EPROM or any other flash memory, NVRAM, cache, registers, any other memory chip or cartridge storage, and networked versions thereof. The device may include one or more processors (CPU), input / output interfaces, network interfaces, and / or memories.
[0122] The embodiments may be further described using the following terms: 1. A video processing method, comprising: Receiving a first palette entry of a palette for encoding a target coding unit (CU); Determining whether the target CU is part of a single tree slice; Determining whether the target CU is encoded using separate luma and chroma trees; and In response to determining that the target CU is part of a single-tree slice and is encoded using separate luma and chroma trees, decoding a first classification of the target CU based on the first palette entry, and The second component of the target CU is decoded based on the default palette entry. 2. The method of clause 1, wherein receiving the first palette entry of a palette for encoding the target CU comprises: receiving a flag associated with a second palette entry; and The second palette entry is included in a palette predictor of the target CU based on the received flag. 3. A method according to clause 2, wherein the size of the palette predictor of the target CU is in the range of 0 to 63, inclusive. 4. A method according to any of clauses 1-3, wherein receiving the first palette entry of the palette used to encode the target CU comprises: A palette predictor of the target CU is updated based on the first palette entry. 5. A method according to any of clauses 1-4, wherein determining whether the target CU is part of a single tree slice comprises: Determine whether the target CU is part of a P slice or a B slice; or It is determined that the target CU is part of a single-tree I slice. 6. The method according to clause 5, further comprising: In response to determining that the target CU is part of a P slice or part of a B slice or part of a single-tree I slice, the first component and the second component of the target CU are decoded based on the first palette entry. 7. A method according to any one of clauses 1 to 6, wherein: The first component is a luminance component and the second component is a chrominance component; or The first component is a chrominance component and the second component is a luminance component. 8. The method of clause 1, wherein a palette predictor of the target CU is not updated after decoding the first component and the second component. 9. A video processing device, comprising: at least one memory for storing an instruction set; and At least one processor is configured to execute the set of instructions to cause the apparatus to perform the following operations: Receiving a first palette entry of a palette for encoding a target coding unit (CU); Determine whether the target CU is part of a single-tree slice; Determine whether the target CU is coded with separate luma and chroma trees; and In response to determining that the target CU is part of a single-tree slice and is coded with separate luma and chroma trees, decoding a first component of the target CU based on the first palette entry, and The second component of the target CU is decoded based on the default palette entry. 10. An apparatus according to clause 9, wherein the at least one processor is configured to execute the instructions to cause the apparatus to perform: receiving a flag associated with a second palette entry; and The second palette entry is included in a palette predictor of the target CU based on the received flag. 11. An apparatus according to clause 10, wherein the size of the palette predictor of the target CU is in the range of 0 to 63, inclusive. 12. An apparatus according to any of clauses 9 to 11, wherein the at least one processor is configured to execute the instructions to cause the apparatus to perform: A palette predictor of the target CU is updated based on the first palette entry. 13. An apparatus according to any of clauses 9 to 12, wherein the at least one processor is configured to execute the instructions to cause the apparatus to perform: Determine whether the target CU is part of a P slice or a B slice; or It is determined that the target CU is part of a single Tree I slice. 14. An apparatus according to clause 13, wherein the at least one processor is configured to execute the instructions to cause the apparatus to perform: In response to the target CU being determined to be part of a P slice or a B slice or part of a single-tree I slice, the first component and the second component of the target CU are decoded based on the first palette entry. 15. The device according to any one of clauses 9 to 14, wherein The first component is a luminance component and the second component is a chrominance component; or The first component is a chrominance component and the second component is a luminance component. 16. The apparatus of clause 9, wherein a palette predictor of the target CU is not updated after decoding the first component and the second component. 17. A non-transitory computer-readable storage medium storing a set of instructions, wherein the set of instructions can be executed by one or more processing devices to cause a video processing apparatus to perform the following operations: Receiving a first palette entry of a palette for encoding a target coding unit (CU); Determining whether the target CU is part of a single tree slice; Determine whether the target CU is encoded using separate luma and chroma trees; and In response to determining that the target CU is part of a single-tree slice and is encoded using separate luma and chroma trees, decoding a first component of the target CU based on the first palette entry, and The second component of the target CU is decoded based on the default palette entry. 18. The non-transitory computer-readable storage medium of clause 17, wherein the set of instructions is executable by the one or more processing devices to cause the video processing apparatus to perform: receiving a flag associated with a second palette entry; and The second palette entry is included in a palette predictor of the target CU based on the received flag. 19. The non-transitory computer-readable storage medium of clause 18, wherein the size of the palette predictor of the target CU is in the range of 0 to 63, inclusive. 20. The non-transitory computer-readable storage medium of any one of clauses 17-19, wherein the set of instructions is executable by the one or more processing devices to cause the video processing apparatus to perform: A palette predictor of the target CU is updated based on the first palette entry. 21. The non-transitory computer-readable storage medium of any of clauses 17-20, wherein the set of instructions is executable by the one or more processing devices to cause the video processing apparatus to perform: Determine whether the target CU is part of a P slice or a B slice; or determine whether the target CU is part of a single tree I slice. 22. The non-transitory computer-readable storage medium of clause 21, wherein the set of instructions is executable by the one or more processing devices to cause the video processing apparatus to perform: In response to the target CU being determined to be part of a P slice or a B slice or part of a single-tree I slice, the first component and the second component of the target CU are decoded based on the first palette entry. 23. The non-transitory computer-readable storage medium of any one of clauses 17-22, wherein The first component is a luminance component and the second component is a chrominance component; or The first component is a chrominance component and the second component is a luminance component. 24. The non-transitory computer-readable storage medium of clause 17, wherein after decoding the first component and the second component, a palette predictor of the target CU is not updated. 25. A video processing method, comprising: Signaling a flag indicating that palette mode is enabled for a target coding unit (CU), Wherein the flag is signaled regardless of whether the chroma sampling format is used for the target CU. 26. A method according to clause 25, wherein the flag is signalled in a sequence parameter set (SPS). 27. A method according to any of clauses 25 and 26, wherein the chroma sampling format comprises one or more of: 4:4:4 format, 4:2:2 format, or 4:2:0 format. 28. A video processing method, comprising: Determine whether the target CU is part of a single tree slice; Determining whether a target coding unit (CU) is encoded using separate luma and chroma trees; and In response to the target CU being determined to be part of a single-tree slice and encoded using separate luma and chroma trees, it is determined that a palette mode for the target CU is disabled. 29. A method as described in clause 28, wherein determining whether the target CU is part of a single tree slice comprises: Determine whether the target CU is part of a P slice or a B slice; or It is determined that the target CU is part of a single-tree I slice. 30. The method according to clause 29, further comprising: In response to the target CU being determined to be a part of a P slice or a B slice or a part of a single-tree I slice, it is determined that a palette mode is allowed for the target CU. 31. A video processing method, comprising: Determine whether the target CU is part of a single tree slice; Determining whether a target coding unit (CU) is encoded using separate luma and chroma trees; and In response to the target CU being determined to be part of a single tree slice and encoded with separate luma and chroma trees, a reuse flag is signaled for reusing a palette entry to a palette for encoding the target CU, wherein no new palette entries are signaled for palette encoding of the target CU. 32. A method as described in clause 31, wherein determining whether the target CU is part of a single tree slice comprises: Determine whether the target CU is part of a P slice or a B slice; or It is determined that the target CU is part of a single-tree I slice. 33. A method according to any one of clauses 31 and 32, further comprising: In response to the target CU not being part of a single-tree slice or not being encoded using separate luma and chroma trees, a palette entry of a palette used to encode the target CU is signaled. 34. A method according to any of clauses 31-33, further comprising: Determine whether a pixel in the target CU includes a chrominance component, the pixel being encoded using an escape mode; and In response to the pixel not including a chroma component, a luma palette escape value for the pixel is signaled, wherein a chroma palette escape value for the pixel is not signaled. 35. A video processing method, comprising: Determining whether a pixel in a target coding unit (CU) includes a chroma component, the pixel being encoded using an escape mode; and In response to the pixel not including a chroma component, an escape value of a luma palette is signaled, wherein an escape value of a chroma palette for the pixel is not signaled. 36. A video processing method, comprising: Receiving a bitstream including a reuse flag for reusing a palette entry to a palette for encoding a target coding unit (CU); Determining whether the target CU is part of a single tree slice; Determining whether the target CU is encoded using separate luma and chroma trees; and In response to the target CU being determined to be part of a single tree slice and encoded using separate luma and chroma trees, a luma component and a chroma component of the target CU are decoded based on the received reuse flag, and the bitstream does not include a palette entry for a palette used to encode the target CU, the target CU being part of the single tree slice and encoded using separate luma and chroma trees. 37. The method according to clause 36, further comprising: The palette predictor of the target CU is updated based on the received reuse flag. 38. A method as described in any of clauses 36 and 37, wherein determining whether the target CU is part of a single tree slice comprises: Determine whether the target CU is part of a P slice or a B slice; or It is determined that the target CU is part of a single-tree I slice. 39. The method according to clause 38, further comprising: In response to determining that the target CU is part of a P slice or a B slice or part of a single-tree I slice, the luma component and the chroma component of the target CU are decoded based on the received reuse flag and the palette entry of the palette used to encode the target CU in the bitstream. 40. A method according to any of clauses 38 and 39, further comprising: In response to determining that the target CU is part of a P slice or a B slice or part of a single-tree I slice, a palette predictor of the target CU is updated based on the received reuse flag and a palette entry of a palette used to encode the target CU in a bitstream. 41. A method according to any of clauses 37 and 40, wherein the size of the palette predictor of the target CU is in the range of 0 to 63, inclusive. 42. A video processing device, comprising: at least one memory for storing an instruction set; and At least one processor is configured to execute the set of instructions to cause the apparatus to perform the following operations: Signaling a flag indicating that palette mode is enabled for a target coding unit (CU), Wherein, the flag is signaled regardless of whether the chroma sampling format is used for the target CU. 43. An apparatus as recited in clause 42, wherein the flag is signaled in a sequence parameter set (SPS). 44. An apparatus as described in any of clauses 42 and 43, wherein the chroma sampling format comprises one or more of: 4:4:4 format, 4:2:2 format, or 4:2:0 format. 45. A video processing device, comprising: at least one memory for storing an instruction set; and At least one processor is configured to execute the set of instructions to cause the apparatus to perform the following operations: Determine whether the target CU is part of a single-tree slice; Determining whether a target coding unit (CU) is encoded using separate luma and chroma trees; and In response to determining that the target CU is part of a single-tree slice and is coded with separate luma and chroma trees, it is determined that a palette mode is disabled for the target CU. 46. An apparatus according to clause 45, wherein the at least one processor is configured to execute the instructions to cause the apparatus to perform: Determine whether the target CU is part of a P slice or a B slice; or It is determined that the target CU is part of a single-tree I slice. 47. An apparatus according to clause 46, wherein the at least one processor is configured to execute the instructions to cause the apparatus to perform: In response to determining that the target CU is part of a P slice or a B slice or part of a single-tree I slice, it is determined that a palette mode is allowed for the target CU. 48. A video processing device, comprising: at least one memory for storing an instruction set; and At least one processor is configured to execute the set of instructions to cause the apparatus to perform the following operations: Determine whether the target CU is part of a single-tree slice; Determining whether a target coding unit (CU) is encoded using separate luma and chroma trees; and In response to determining that the target CU is part of a single tree slice and is encoded with separate luma and chroma trees, a reuse flag is signaled for reusing a palette entry to a palette for encoding the target CU, wherein no new palette entries are signaled for palette encoding of the target CU. 49. An apparatus according to clause 48, wherein the at least one processor is configured to execute the instructions to cause the apparatus to perform: Determine whether the target CU is part of a P slice or a B slice; or It is determined that the target CU is part of a single-tree I slice. 50. An apparatus as described in any of clauses 48 and 49, wherein the at least one processor is configured to execute the instructions to cause the apparatus to perform: In response to the target CU not being part of a single-tree slice or not being encoded using separate luma and chroma trees, a palette entry for encoding the CU is signaled. 51. An apparatus as described in any of clauses 48 to 50, wherein the at least one processor is configured to execute the instructions to cause the apparatus to perform: Determine whether a pixel in the target CU includes a chrominance component, the pixel being encoded using an escape mode; and In response to the pixel not including a chroma component, a luma palette escape value for the pixel is signaled, wherein a chroma palette escape value for the pixel is not signaled. 52. A video processing device, comprising: at least one memory for storing an instruction set; and At least one processor is configured to execute the set of instructions to cause the apparatus to perform the following operations: Determining whether a pixel in a target coding unit (CU) includes a chrominance component, the pixel being encoded using the escape mode; and In response to the pixel not including a chroma component, an escape value of a luma palette is signaled, wherein an escape value of a chroma palette for the pixel is not signaled. 53. A video processing device, comprising: at least one memory for storing an instruction set; and At least one processor is configured to execute the set of instructions to cause the apparatus to perform the following operations: Receiving a bitstream including a reuse flag for reusing a palette entry to a palette for encoding a target coding unit (CU); Determining whether the target CU is part of a single tree slice; Determining whether the target CU is encoded using separate luma and chroma trees; and In response to determining that the target CU is part of a single tree slice and is encoded with separate luma and chroma trees, a luma component and a chroma component of the target CU are decoded based on the received reuse flag, and the bitstream does not include a palette entry for a palette used to encode the target CU, the target CU being part of a single tree slice and being encoded with separate luma and chroma trees. 54. An apparatus according to clause 53, wherein the at least one processor is configured to execute the instructions to cause the apparatus to perform: The palette predictor of the target CU is updated based on the received reuse flag. 55. An apparatus as described in any of clauses 53 and 54, wherein the at least one processor is configured to execute the instructions to cause the apparatus to perform: Determine whether the target CU is part of a P slice or a B slice; or It is determined that the target CU is part of a single Tree I slice. 56. An apparatus according to clause 55, wherein the at least one processor is configured to execute the instructions to cause the apparatus to perform: In response to determining that the target CU is part of a P slice or a B slice or part of a single-tree I slice, the luma component and the chroma component of the target CU are decoded based on the received reuse flag and the palette entry of the palette used to encode the target CU in the bitstream. 57. An apparatus as described in any of clauses 55 and 56, wherein the at least one processor is configured to execute the instructions to cause the apparatus to perform: In response to the target CU being determined to be part of a P slice or a B slice or part of a single-tree I slice, a palette predictor of the target CU is updated based on the received reuse flag and a palette entry of a palette used to encode the target CU in a bitstream. 58. An apparatus according to any of clauses 54 and 57, wherein the size of the palette predictor of the target CU is in the range of 0 to 63, inclusive. 59. A non-transitory computer-readable storage medium storing a set of instructions executable by one or more processing devices to cause a video processing apparatus to perform the following operations: A flag is signaled indicating that a palette mode is enabled for a target coding unit (CU), wherein the flag is signaled regardless of whether a chroma sampling format is used for the target CU. 60. The non-transitory computer-readable storage medium of clause 59, wherein the flag is signaled in a sequence parameter set (SPS). 61. The non-transitory computer-readable storage medium of any of clauses 59 and 60, wherein the chroma sampling format comprises one or more of: 4:4:4 format, 4:2:2 format, or 4:2:0 format. 62. A non-transitory computer-readable storage medium storing a set of instructions executable by one or more processing devices to cause a video processing apparatus to: Determine whether the target CU is part of a single tree slice; Determining whether a target coding unit (CU) is encoded using separate luma and chroma trees; and In response to determining that the target CU is part of a single-tree slice and is coded with separate luma and chroma trees, it is determined that a palette mode is disabled for the target CU. 63. The non-transitory computer-readable storage medium of clause 62, wherein the set of instructions is executable by the one or more processing devices to cause the video processing apparatus to perform: Determine whether the target CU is part of a P slice or a B slice; or It is determined that the target CU is part of a single-tree I slice. 64. The non-transitory computer-readable storage medium of clause 63, wherein the set of instructions is executable by the one or more processing devices to cause the video processing apparatus to perform: In response to determining that the target CU is part of a P slice or a B slice or part of a single-tree I slice, it is determined that a palette mode is allowed for the target CU. 65. A non-transitory computer-readable storage medium storing a set of instructions executable by one or more processing devices to cause a video processing apparatus to: Determine whether the target CU is part of a single tree slice; Determining whether a target coding unit (CU) is encoded using separate luma and chroma trees; and In response to determining that the target CU is part of a single tree slice and is encoded with separate luma and chroma trees, a reuse flag is signaled for reusing a palette entry to a palette for encoding the target CU, wherein no new palette entries are signaled for palette encoding of the target CU. 66. The non-transitory computer-readable storage medium of clause 65, wherein the set of instructions is executable by the one or more processing devices to cause the video processing apparatus to perform: Determine whether the target CU is part of a P slice or a B slice; or It is determined that the target CU is part of a single-tree I slice. 67. The non-transitory computer-readable storage medium of any of clauses 65 and 66, wherein the set of instructions is executable by the one or more processing devices to cause the video processing apparatus to perform: In response to the target CU not being part of a single-tree slice or not being encoded using separate luma and chroma trees, a palette entry for encoding the target CU is signaled. 68. The non-transitory computer-readable storage medium of any of clauses 65-67, wherein the set of instructions is executable by the one or more processing devices to cause the video processing apparatus to perform: Determine whether a pixel in the target CU includes a chrominance component, the pixel being encoded using an escape mode; and In response to the pixel not including a chroma component, a luma palette escape value for the pixel is signaled, wherein a chroma palette jump value for the pixel is not signaled. 69. A non-transitory computer-readable storage medium storing a set of instructions executable by one or more processing devices to cause a video processing apparatus to: Determining whether a pixel in a target coding unit (CU) includes a chroma component, the pixel being encoded using an escape mode; and In response to the pixel not including a chroma component, a luma palette escape value is signaled, wherein an escape value of a chroma palette for the pixel is not signaled. 70. A non-transitory computer-readable storage medium storing a set of instructions executable by one or more processing devices to cause a video processing apparatus to: Receiving a bitstream including a reuse flag for reusing a palette entry to a palette for encoding a target coding unit (CU); Determining whether the target CU is part of a single tree slice; Determining whether the target CU is encoded using separate luma and chroma trees; and In response to determining that the target CU is part of a single tree slice and is encoded using separate luma and chroma trees, a luma component and a chroma component of the target CU are decoded based on the received reuse flag, and the bitstream does not include a palette entry for encoding the target CU, the target CU being part of a single tree slice and encoded using separate luma and chroma trees. 71. The non-transitory computer-readable storage medium of clause 70, wherein the set of instructions is executable by the one or more processing devices to cause the video processing apparatus to perform: The palette predictor of the target CU is updated based on the received reuse flag. 72. The non-transitory computer-readable storage medium of any of clauses 70 and 71, wherein the set of instructions is executable by the one or more processing devices to cause the video processing apparatus to perform: Determine whether the target CU is part of a P slice or a B slice; or It is determined that the target CU is part of a single-tree I slice. 73. The non-transitory computer-readable storage medium of clause 72, wherein the set of instructions is executable by the one or more processing devices to cause the video processing apparatus to perform: In response to determining that the target CU is part of a P slice or a B slice or part of a single-tree I slice, the luma component and the chroma component of the target CU are decoded based on the received reuse flag and the palette entry of the palette used to encode the target CU in the bitstream. 74. The non-transitory computer-readable storage medium of any of clauses 72 and 73, wherein the set of instructions is executable by the one or more processing devices to cause the video processing apparatus to perform: In response to determining that the target CU is part of a P slice or a B slice or part of a single-tree I slice, a palette predictor of the target CU is updated based on the received reuse flag and a palette entry of a palette used to encode the target CU in the bitstream. 75. A non-transitory computer-readable storage medium according to any of clauses 72 and 74, wherein the size of the palette predictor of the target CU is in the range of 0 to 63, inclusive.
[0123] It should be noted that relational terms, such as "first" and "second", herein are used only to distinguish an entity or operation from another entity or operation, without requiring or implying any actual relationship or order between these entities or operations. In addition, the words "include", "have", "include", and "includes" and other similar forms are intended to be equivalent in meaning and open-ended, in that one or more items following any of these words is not meant to be an exhaustive list of such one or more items, or to be limited to the listed one or more items.
[0124] As used herein, unless otherwise specifically stated, the term "or" includes all possible combinations, unless otherwise feasible. For example, if it is stated that a database may include A or B, then unless otherwise explicitly stated or not feasible, the database may include A, or B, or A and B. As a second example, if it is stated that a database may include A, B, or C, then unless otherwise explicitly stated or not feasible, the database may include A, or B, or C, or A and B, or A and C, or B and C, or A, B, and C.
[0125] It should be understood that the above embodiments can be implemented by hardware, or software (program code), or a combination of hardware and software. If implemented by software, it can be stored in the above-mentioned computer-readable medium. The software can execute the disclosed method when executed by a processor. The computing unit and other functional units described in this disclosure can be implemented by hardware, or software, or a combination of hardware and software. Those of ordinary skill in the art will also understand that the above-mentioned multiple modules / units can be combined into one module / unit, and each of the above-mentioned modules / units can be further divided into multiple sub-modules / sub-units.
[0126] In the above description, embodiments have been described with reference to many specific details, which may vary from implementation to implementation. Certain modifications and changes may be made to the described embodiments. Other embodiments will be apparent to those skilled in the art by considering the description and practice of the invention disclosed herein. This description and embodiments are to be considered exemplary only, and the true scope and spirit of the invention are indicated by the appended claims. The sequence of steps shown in the accompanying drawings is for illustrative purposes only and is not intended to be limited to any particular sequence of steps. Therefore, it will be appreciated by those skilled in the art that these steps may be performed in different orders while implementing the same method.
[0127] In the drawings and the specification, exemplary embodiments have been disclosed. However, many changes and modifications may be made to these embodiments. Therefore, although specific terms are employed, they are used only in a general and descriptive sense and not for the purpose of limitation.
Claims
1. A video decoder capable of implementing a palette mode for a non-4:4:4 color format, the non-4:4:4 color format comprising at least one of a 4:2:0 color format, a 4:2:2 color format, or a monochrome color format, the video decoder comprising: means for receiving a first palette entry for palette encoding a target coding unit CU; means for determining whether the target CU is part of a single tree slice; means for determining whether the target CU is encoded using separate luma and chroma trees; as well as means for decoding a first component of the target CU based on the first palette entry in response to the target CU being determined to be part of a single-tree slice and being encoded using separate luma and chroma trees, and The second component of the target CU is decoded based on the default palette entry.
