Method and apparatus for video coding using palette mode

The palette mode in video coding addresses the challenge of efficiently encoding and decoding high-definition video data by determining a minimum block size and using a palette mode enable flag, enhancing compression efficiency and image quality.

JP2025138767AActive Publication Date: 2025-09-25BEIJING DAJIA INTERNET INFORMATION TECH CO LTD
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
JP2025107913
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2020-01-11
Filing Date
2025-06-26
Publication Date
2025-09-25
Estimated Expiration
2041-01-11

AI Technical Summary

Technical Problem

Existing video coding technologies face challenges in efficiently encoding and decoding high-definition and ultra-high-definition video data while maintaining image quality, as the amount of data to be processed increases exponentially.

Method used

Implementing a palette mode for video coding that includes determining a minimum palette mode block size and decoding video data using a palette mode enable flag, along with a non-transitory computer-readable recording medium for executing decoding programs.

Benefits of technology

Enhances the efficiency of encoding and decoding high-definition and ultra-high-definition video data by reducing data redundancy, thereby improving image quality and compression efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025138767000001_ABST
    Figure 2025138767000001_ABST
Patent Text Reader

Abstract

To provide a system and a method for encoding and decoding video using palette mode.SOLUTION: A video coding method includes receiving from a bitstream a plurality of syntax elements associated with a coding unit and indicating a size and a coding tree type of the coding unit, determining a minimum palette mode block size for the coding unit in response to the coding tree type of the coding unit, receiving from the bitstream a palette mode enable flag associated with the coding unit in response to determining that the size of the coding unit is greater than the minimum palette mode block size, and decoding the coding unit from the bitstream in response to the palette mode enable flag.SELECTED DRAWING: Figure 6
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] Related Applications This application is a continuation of the application filed on January 11, 2020 entitled "VIDEO CODING USING This application claims priority to U.S. Provisional Application No. 62 / 959,913, entitled "Video Coding Using Palette Mode," which is incorporated by reference in its entirety.

[0002] This application relates generally to coding and compressing video data, and more particularly to a method and system for video coding using palette mode. [Background technology]

[0003] Digital video is supported by a variety of electronic devices, such as digital televisions, laptop or desktop computers, tablet computers, digital cameras, digital recording devices, digital media players, video game consoles, smartphones, video teleconferencing devices, and video streaming devices. Such electronic devices transmit, receive, encode, decode, and / or store digital video data by implementing video compression and decompression standards such as MPEG-4, ITU-T H.263, ITU-T H.264 / MPEG-4 Part 10 Advanced Video Coding (AVC), High Efficiency Video Coding (HEVC), and Versatile Video Coding (VVC). Video compression generally involves performing spatial (intra-frame) prediction and / or temporal (inter-frame) prediction to reduce or remove redundancy inherent in video data. For block-based video coding, a video frame is divided into one or more slices, with each slice having multiple video blocks, which may also be referred to as coding tree units (CTUs). Each CTU may contain one coding unit (CU) or may be recursively divided into smaller CUs until a predetermined minimum CU size is reached. Each CU (also named leaf CU) contains one or more transform units (TUs) and also includes one or more prediction units (PUs). Each CU may be coded in either intra mode, inter mode, or IBC mode. Video blocks within an intra-coded (I) slice in a video frame are coded using spatial prediction with respect to reference samples in neighboring blocks within the same video frame.Video blocks within an inter-coded (P or B) slice in a video frame may use spatial prediction relative to reference samples in neighboring blocks within the same video frame, or may use temporal prediction relative to reference samples in other previous and / or future reference video frames.

[0004] Spatial or temporal prediction based on previously coded reference blocks, e.g., neighboring blocks, results in a predicted block for the current video block being coded. The process of finding the reference block may be achieved by a block matching algorithm. Residual data representing pixel differences between the current block being coded and the predicted block is called a residual block or prediction error. Inter-coded blocks are coded according to motion vectors and residual blocks that point to reference blocks in reference frames that form the predicted block. The process of determining motion vectors is commonly called motion prediction. Intra-coded blocks are coded according to intra prediction modes and residual blocks. For further compression, the residual blocks may be converted from the pixel domain to a variant, e.g., the frequency domain. The quantized transform coefficients may be converted to a transform domain to yield residual transform coefficients, which are then quantized. The quantized transform coefficients, initially arranged in a two-dimensional array, may be scanned to generate a one-dimensional vector of transform coefficients, which are then entropy coded into a video bitstream to achieve even greater compression.

[0005] The encoded video bitstream is then stored on a computer-readable storage medium (e.g., flash memory) that is accessed by another electronic device with digital video capabilities, or transmitted directly to the electronic device via wired or wireless connections. The electronic device then performs video decompression (the inverse process of the video compression discussed above) by, for example, parsing the encoded video bitstream to obtain syntax elements from the bitstream, reconstructing the digital video data from the encoded video bitstream into its original format based at least in part on the syntax elements obtained from the bitstream, and rendering the reconstructed digital video data on a display of the electronic device.

[0006] As the quality of digital video moves from high definition to 4Kx2K or 8Kx4K, the amount of video data to be encoded / decoded increases exponentially, which means there is a constant effort to encode / decode video data more efficiently while maintaining the image quality of the decoded video data. Summary of the Invention [Problem to be solved by the invention]

[0007] This application describes implementations related to encoding and decoding video data, and more particularly, describes systems and methods for encoding and decoding video using palette mode. [Means for solving the problem]

[0008] According to a first aspect of the present application, a method for decoding video data includes receiving, from a bitstream, a plurality of syntax elements associated with a coding unit, the plurality of syntax elements indicating a size and a coding tree type of the coding unit; determining a minimum palette mode block size for the coding unit in response to the coding tree type of the coding unit; receiving, from the bitstream, a palette mode enable flag associated with the coding unit in response to determining that the size of the coding unit is larger than the minimum palette mode block size; and decoding the coding unit from the bitstream in response to the palette mode enable flag.

[0009] According to a second aspect of the present application, an electronic device includes one or more processing units, a memory, and a plurality of programs stored in the memory, which, when executed by the one or more processing units, cause the electronic device to perform a method for decoding video data as described above.

[0010] According to a third aspect of the present application, a non-transitory computer-readable recording medium stores a plurality of programs for execution by an electronic device having one or more processing units, the programs, when executed by the one or more processing units, causing the electronic device to perform the method for decoding video data as described above.

[0011] The accompanying drawings, which are included to provide a further understanding of the implementations, are incorporated in and constitute a part of this specification, illustrate the described implementations, and together with the description, serve to explain the underlying principles, with like reference numerals referring to corresponding parts. [Brief explanation of the drawings]

[0012] [Figure 1] FIG. 1 is a block diagram illustrating an example video encoding and decoding system according to some implementations of the present disclosure. [Figure 2]1 is a block diagram illustrating an example video encoder according to some implementations of this disclosure. [Figure 3] 1 is a block diagram illustrating an example video decoder according to some implementations of the present disclosure. [Figure 4A] A block diagram showing how a frame is recursively divided into multiple video blocks of different sizes and shapes according to some implementations of this disclosure. [Figure 4B] A block diagram showing how a frame is recursively divided into multiple video blocks of different sizes and shapes according to some implementations of this disclosure. [Figure 4C] A block diagram showing how a frame is recursively divided into multiple video blocks of different sizes and shapes according to some implementations of this disclosure. [Figure 4D] A block diagram showing how a frame is recursively divided into multiple video blocks of different sizes and shapes according to some implementations of this disclosure. [Figure 4E] A block diagram showing how a frame is recursively divided into multiple video blocks of different sizes and shapes according to some implementations of this disclosure. [Figure 5A] FIG. 1 is a block diagram illustrating an example of using a palette table to encode video data, in accordance with some implementations of the present disclosure. [Figure 5B] FIG. 1 is a block diagram illustrating an example of using a palette table to encode video data, in accordance with some implementations of the present disclosure. [Figure 5C] FIG. 1 is a block diagram illustrating an example of using a palette table to encode video data, in accordance with some implementations of the present disclosure. [Figure 5D] FIG. 1 is a block diagram illustrating an example of using a palette table to encode video data, in accordance with some implementations of the present disclosure. [Figure 6]1 is a flow diagram illustrating an example process by which a video decoder performs techniques for decoding video data according to some implementations of this disclosure. [Figure 7] FIG. 1 is a block diagram illustrating an example of a context-adaptive binary arithmetic coding (CABAC) engine, in accordance with some implementations of the present disclosure. DETAILED DESCRIPTION OF THE INVENTION

[0013] Reference will now be made in detail to specific implementations, examples of which are illustrated in the accompanying drawings. In the following detailed description, numerous non-limiting specific details are set forth to aid in an understanding of the subject matter presented herein. However, it will be apparent to those skilled in the art that various alternatives may be used without departing from the scope of the claims, and that the subject matter may be practiced without these specific details. For example, it will be apparent to those skilled in the art that the subject matter presented herein may be implemented in many types of electronic devices with digital video capabilities.

[0014] 1 is a block diagram illustrating an example system 10 for concurrently encoding and decoding video blocks in accordance with some implementations of the present disclosure. As shown in FIG. 1, system 10 includes a source device 12 that generates and encodes video data that is subsequently decoded by a destination device 14. Source device 12 and destination device 14 may comprise any of a variety of electronic devices, including desktop or laptop computers, tablet computers, smartphones, set-top boxes, digital televisions, cameras, displays, digital media players, video game consoles, video streaming devices, etc. In some implementations, source device 12 and destination device 14 are equipped with wireless communication capabilities.

[0015] In some implementations, the destination device 14 receives the encoded data over link 16. Link 16 may receive encoded video data from source device 12 to destination device 14. Link 16 may comprise any type of communications medium or communications device capable of transferring encoded video data from source device 12 to destination device 14. In one example, link 16 may comprise a communications medium for enabling source device 12 to transmit encoded video data directly to destination device 14 in real time. The encoded video data may be modulated according to a communications standard, such as a wireless communications protocol, and transmitted to destination device 14. The communications medium may comprise any wireless or wired communications medium, such as the radio frequency (RF) spectrum or one or more physical transmission paths. The communications medium may form part of a packet-based network, such as a local area network, a wide area network, or a global network such as the Internet. The communications medium may include routers, switches, base stations, or other equipment that helps facilitate communication from source device 12 to destination device 14.

[0016] In some other implementations, the encoded video data may be transmitted from output interface 22 to recording device 32. The encoded video data in recording device 32 may then be accessed by destination device 14 via input interface 28. Recording device 32 may include any of a variety of distributed or locally accessed data storage media, such as a hard drive, Blu-ray Disc, DVD, CD-ROM, flash memory, volatile or non-volatile memory, or other digital storage media suitable for storing encoded video data. In a further example, recording device 32 may represent a file server or another intermediate storage device that may hold the encoded video data generated by source device 12. Destination device 14 may access the stored video data by streaming or downloading it from recording device 32. The file server may be any type of computer capable of storing encoded video data or transmitting the encoded video data to destination device 14. Exemplary file servers include a web server (e.g., for a website), an FTP server, a network attached storage (NAS) device, or a local disk drive. Destination device 14 may access the encoded video data over any standard data connection, including a wireless channel (e.g., a Wi-Fi connection), a wired connection (e.g., a DSL or cable modem), or a combination of both, suitable for accessing encoded video data stored on a file server. The transmission of the encoded video data from recording device 32 may be a streaming transmission, a download transmission, or a combination of both.

[0017] 1 , source device 12 includes a video source 18, a video encoder 20, and an output interface 22. Video source 18 may include sources such as a video capture device, e.g., a video camera, a video archive containing previously captured video, a video feed interface for receiving video from a video content provider, and / or a computer graphics system for generating computer graphics data as source video, or a combination of such sources. As an example, if video source 18 is a video camera in a security surveillance system, source device 12 and destination device 14 may form a camera phone or video phone. However, implementations described herein may be applicable to video coding generally and may be applied to wireless and / or wired applications.

[0018] Captured, pre-captured, or computer-generated video may be encoded by video encoder 20. The encoded video data may be transmitted directly to destination device 14 through output interface 22 of source device 12. The encoded video data may also (or alternatively) be stored in recording device 32 for later access by destination device 14 or other devices for decoding and / or playback. Output interface 22 may further include a modem and / or a transmitter.

[0019] Destination device 14 includes an input interface 28, a video decoder 30, and a display device 34. Input interface 28 may include a receiver and / or a modem and receives encoded video data over link 16. The encoded video data communicated over link 16 or provided by recording device 32 may include various syntax elements generated by video encoder 20 for use in decoding the video data by video decoder 30. The encoded video data, which may include such syntax elements, is transmitted over a communications medium and stored on a recording medium or file server.

[0020] In some implementations, destination device 14 may include a display device 34, which may be an integrated display device or an external display device configured to communicate with destination device 14. Display device 34 displays the decoded video data to a user and may comprise any of a variety of display devices, such as a liquid crystal display (LCD), a plasma display, an organic light-emitting diode (OLED) display, or another type of display device.

[0021] Video encoder 20 and video decoder 30 may operate based on proprietary or industry standards, such as VVC, HEVC, MPEG-4 Part 10 AVC (Advanced Video Coding), or extensions of these standards. It should be understood that the present application is not limited to a particular video encoding / decoding standard and may be applicable to other video encoding / decoding standards. It is generally contemplated that video encoder 20 of source device 12 may be configured to encode video data in accordance with any of these current or future standards. Similarly, it is generally contemplated that video decoder 30 of destination device 14 may be configured to decode video data in accordance with any of these current or future standards.

[0022] Video encoder 20 and video decoder 30 may each be implemented using one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), or other devices. The video encoder 20 and the video decoder 30 may be implemented as any of a variety of suitable encoding circuitry configurations, such as a standard integrated circuit (SCI), a field programmable gate array (FPGA), discrete logic, software, hardware, firmware, or any combination thereof. When implemented partially in software, the electronic device may store instructions for the software on a suitable non-transitory computer-readable medium and execute the instructions in hardware using one or more processors to perform the video encoding / decoding processes disclosed in this disclosure. Each of the video encoder 20 and the video decoder 30 may be included in one or more encoders or decoders, any of which may be integrated as part of a combined encoder / decoder (CODEC) in the respective device.

[0023] 2 is a block diagram illustrating an example video encoder 20 according to some implementations described herein. Video encoder 20 may perform intra-predictive and inter-predictive coding of video blocks within video frames. Intra-predictive coding relies on spatial prediction to reduce or remove spatial redundancy in video data within a given video frame or picture. Inter-predictive coding relies on temporal prediction to reduce or remove temporal redundancy in video data within adjacent video frames or pictures of a video sequence.

[0024] As shown in FIG. 2, the video encoder 20 includes a video data memory 40, a prediction processor 41, a decoded picture buffer (DPB), and a ) 64, summer 50, transform processor 52, quantizer 54, and entropy coder 56. Prediction processor 41 further includes motion estimation unit 42, motion compensation unit 44, segmentation unit 45, intra prediction processor 46, and intra block copy (BC) unit 48. In some implementations, video encoder 20 also includes inverse quantization unit 58, inverse transform processor 60, and summer 62 for reconstructing video blocks. A deblocking filter (not shown) may be disposed between summer 62 and DPB 64 to filter block boundaries and remove block artifacts from the reconstructed video. In addition to the deblocking filter, an in-loop filter (not shown) may also be used to filter the output of summer 62. Video encoder 20 may take the form of a fixed or programmable hardware unit, or may be divided among one or more fixed or programmable hardware units.

[0025] Video data memory 40 may store video data to be encoded by components of video encoder 20. The video data in video data memory 40 may be obtained, for example, from video source 18. DPB 64 is a buffer that records reference video data used by video encoder 20 to encode video data (e.g., in an intra-predictive coding mode or an inter-predictive coding mode). Video data memory 40 and DPB 64 may be formed by any of a variety of storage devices. In various examples, video data memory 40 may be on-chip with other components of video encoder 20 or may be off-chip relative to those components.

[0026] As shown in FIG. 2 , a partitioning unit 45 within the prediction processor 41 partitions the received video data into video blocks. This partitioning may include dividing the video frame into slices, tiles, or other larger coding units (CUs) according to a predetermined partitioning structure, such as a quadtree structure, associated with the video data. The video frame may be partitioned into multiple video blocks (or sets of video blocks called tiles). The prediction processor 41 may select one of multiple possible predictive coding modes, such as one of multiple intra-predictive coding modes or one of multiple inter-predictive coding modes, for the current video block based on error results (e.g., coding rate or distortion level). The prediction processor 41 may provide the resulting intra-predictively coded block or inter-predictively coded block to an adder 50 to generate a residual block, and may provide this coded block to an adder 62 for later reconstruction for use as part of a reference frame. The prediction processor 41 also provides syntax elements, such as motion vectors, intra-mode indicators, partition information, and other such syntax information, to an entropy encoder 56.

[0027] To select an appropriate intra-prediction coding mode for a current video block, an intra-prediction unit 46 within prediction unit 41 may perform intra-prediction coding of the current video block relative to one or more neighboring blocks in the same frame as the current block being coded, resulting in spatial prediction. A motion estimation unit 42 and a motion compensation unit 44 within prediction unit 41 perform inter-prediction coding of the current video block relative to one or more predictive blocks in one or more reference frames, resulting in temporal prediction. Video encoder 20 may perform multiple coding passes, e.g., to select an appropriate coding mode for each block of video data.

[0028] In some implementations, motion estimator 42 determines the inter-prediction mode for the current video frame by generating motion vectors that indicate the displacement of prediction units (PUs) of video blocks within the current video frame relative to prediction blocks within reference video frames according to a predetermined pattern within the series of video frames. The motion estimation performed by motion estimator 42 generates motion vectors that estimate the motion of video blocks. A motion vector is a process of generating a motion vector. A motion vector may indicate, for example, the displacement of a PU of a video block within a current video frame or picture relative to a predictive block in a reference frame (or other coding unit) relative to a current block being coded within the current frame (or other coding unit). The predetermined pattern may designate a video frame as a P-frame or a B-frame in a sequence. Intra BC unit 48 may determine vectors, e.g., block vectors, for intra BC coding in a manner similar to the determination of motion vectors by motion estimator 42 for inter prediction, or may utilize motion estimator 42 to determine the block vectors.

[0029] A prediction block is a block of a reference frame that is considered to closely correspond to the PU of the video block to be coded in terms of pixel difference, and is calculated by sum of absolute difference (SAD), sum of squared difference (SSD), etc. The fractional pixel positions may be determined by a square difference (of square difference), or other difference metric. In some implementations, video encoder 20 may calculate values ​​for sub-integer pixel positions of the reference frame stored in DPB 64. For example, video encoder 20 may interpolate values ​​for quarter-pixel positions, eighth-pixel positions, or other fractional pixel positions of the reference frame. Thus, motion estimator 42 may perform motion searches for whole pixel positions and fractional pixel positions to output motion vectors with fractional pixel precision.

[0030] For a PU of a video block of an inter-predictively coded frame, the motion estimation unit 42 calculates a motion vector by comparing the position of the PU with the position of a predictive block of a reference frame selected from a first reference frame list (List 0) or a second reference frame list (List 1), where the first reference frame list or the second reference frame list identifies one or more reference frames stored in the DPB 64. The motion estimation unit 42 sends the calculated motion vector to the motion compensation unit 44 and then to the entropy coding unit 56.

[0031] The motion compensation performed by motion compensation unit 44 may involve fetching or generating a predictive block based on the motion vector determined by motion estimation unit 42. Upon receiving the motion vector for the PU of the current video block, motion compensation unit 44 locates the predictive block to which the motion vector points in one of the reference frame lists, retrieves the predictive block from DPB 64, and forwards the predictive block to summer 50. Summer 50 then forms a residual video block of pixel difference values ​​by subtracting pixel values ​​of the predictive block provided by motion compensation unit 44 from pixel values ​​of the current video block to be coded. The pixel difference values ​​forming the residual video block may include luma difference components, chroma difference components, or both. Motion compensation unit 44 may also generate syntax elements related to the video blocks of the video frame for use by video decoder 30 in decoding the video blocks of the video frame. The syntax elements may include, for example, syntax elements defining motion vectors used to identify predictive blocks, any flags indicating prediction modes, or other syntax information described herein. Note that motion estimation unit 42 and motion compensation unit 44 may be largely integrated, but are shown separately for conceptual purposes.

[0032] In some implementations, the intra BC unit 48 may generate vectors to capture predictive blocks in a manner similar to that described above with respect to the motion estimation unit 42 and motion compensation unit 44, except that the predictive block is in the same frame as the current block being coded, and the vectors are referred to as block vectors, as opposed to motion vectors. In particular, the intra BC unit 48 may determine to use an intra prediction mode to code the current block. In some examples, the intra BC unit 48 may code the current block using various intra prediction modes, e.g., during separate coding passes, and determine the best intra prediction mode based on rate-distortion analysis. The intra-BC unit 48 may then use a rate-distortion analysis to analyze the performance of the intra-prediction modes. The intra-BC unit 48 may then select an appropriate intra-prediction mode from the various intra-prediction modes tested to use in generating an intra-mode indicator. For example, the intra-BC unit 48 may use a rate-distortion analysis to calculate rate-distortion values ​​for the various intra-prediction modes tested and select the intra-prediction mode with the best rate-distortion characteristics from among the tested modes as the appropriate intra-prediction mode to use. The rate-distortion analysis generally determines the bitrate (i.e., number of bits) used to generate a coding block, along with the amount of distortion (or error) between the coding block and the original block that was coded to generate the coding block. The intra-BC unit 48 may calculate the distortion-to-rate ratio for the various coding blocks to determine the intra-prediction mode that exhibits the best rate-distortion value for the block.

[0033] In other examples, the intra BC unit 48 may use, in whole or in part, the motion estimation unit 42 and the motion compensation unit 44 to perform such functions for intra BC prediction according to the implementations described herein. In either case, for intra block copying, the predictive block may be a block that is considered to closely correspond to the block to be coded in terms of pixel differences, and may be determined by sum of absolute differences (SAD), sum of squared differences (SSD), or other difference measures. Identifying the predictive block may include calculating values ​​for sub-integer pixel positions.

[0034] Whether the predictive block is from the same frame via intra prediction or a different frame via inter prediction, video encoder 20 may form a residual video block by subtracting pixel values ​​of the predictive block from pixel values ​​of the current video block being coded, forming pixel difference values. The pixel difference values ​​that form the residual video block may include both luma and chroma difference components.

[0035] The intra-prediction unit 46 may intra-predict the current video block as an alternative to inter-prediction performed by the motion estimation unit 42 and motion compensation unit 44 or intra-block copy prediction performed by the intra-BC unit 48, as described above. In particular, the intra-prediction unit 46 may determine an intra-prediction mode to use to encode the current block. To do so, the intra-prediction unit 46 may encode the current block using various intra-prediction modes, for example, during separate encoding passes, and the intra-prediction unit 46 (or a mode selection unit in some examples) may select an appropriate intra-prediction mode to use from the tested intra-prediction modes. The intra-prediction unit 46 may provide information indicative of the selected intra-prediction mode for the block to the entropy coding unit 56. The entropy coding unit 56 may encode information indicating the selected intra-prediction mode in the bitstream.

[0036] After prediction processor 41 determines a predictive block for the current video block, either by inter-prediction or intra-prediction, adder 50 generates a residual video block by subtracting the predictive block from the current video block. The residual video data in the residual block may be included in one or more transform units (TUs) and provided to transform processor 52. Transform processor 52 performs a discrete cosine transform (DCT) The residual video data is converted into residual transform coefficients using a transform such as a transform (or conceptually similar transform).

[0037] The transform processor 52 may send the resulting transform coefficients to a quantizer 54, which quantizes the transform coefficients to further reduce the bit rate. The quantization process may also reduce the bit depth associated with some or all of the coefficients. The degree of quantization may be varied by adjusting a quantization parameter. In some examples, the quantizer Entropy coding unit 54 may then perform the scan of the matrix containing the quantized transform coefficients, or entropy coding unit 56 may perform the scan.

[0038] Following quantization, the entropy coding unit 56 may use, for example, context adaptive variable length coding (CAVLC), context adaptive binary arithmetic coding (CABAC), syntax-based context adaptive binary arithmetic coding (SBAC), or the like. The quantized transform coefficients are entropy coded into a video bitstream using context-adaptive binary arithmetic coding (CAB), probability interval partitioning entropy coding (PIPE), or another entropy coding technique or technology. The coded bitstream may then be transmitted to video decoder 30 or recorded on recording device 32 for later transmission to or retrieval by video decoder 30. Entropy coding unit 56 may also entropy code motion vectors and other syntax elements for the current video frame being coded.

[0039] Inverse quantization unit 58 applies inverse quantization, and inverse transform processor 60 applies inverse transform, to reconstruct the residual video block in the pixel domain to generate reference blocks for predicting other video blocks. As previously mentioned, motion compensation unit 44 may generate motion-compensated prediction blocks from one or more reference blocks of frames stored in DPB 64. Motion compensation unit 44 may also apply one or more interpolation filters to the prediction block to calculate sub-integer pixel values ​​for use in motion estimation.

[0040] Adder 62 adds the reconstructed residual block to the motion compensated prediction block generated by motion compensation unit 44 to generate a reference block for storage in DPB 64. The reference block may then be used by intra BC unit 48, motion estimation unit 42, and motion compensation unit 44 as a prediction block for inter predicting another video block in a subsequent video frame.

[0041] 3 is a block diagram illustrating an exemplary video decoder 30 according to some implementations of the present application. The video decoder 30 includes a video data memory 79, an entropy decoding unit 80, a prediction processing unit 81, an inverse quantization unit 86, an inverse transform processing unit 88, an adder 90, and a DPB 92. The prediction processing unit 81 further includes a motion compensation unit 82, an intra-prediction processing unit 84, and an intra-BC unit 85. The video decoder 30 may perform a decoding process that is generally inverse to the encoding process described for the video encoder 20 in connection with FIG. 2. For example, the motion compensation unit 82 may generate prediction data based on motion vectors received from the entropy decoding unit 80, while the intra-prediction processing unit 84 may generate prediction data based on an intra-prediction mode indicator received from the entropy decoding unit 80.

[0042] In some examples, units of video decoder 30 may be tasked with performing implementations of the present application. Also, in some examples, implementations of the present disclosure may be divided among one or more units of video decoder 30. For example, intra BC unit 85 may perform implementations of the present application alone or in combination with other units, such as motion compensation unit 82, intra prediction processing unit 84, and entropy decoding unit 80, of video decoder 30. In some examples, video decoder 30 may not include intra BC unit 85, and the functionality of intra BC unit 85 may be performed by other components of prediction processing unit 81, such as motion compensation unit 82.

[0043] Video data memory 79 may store video data, such as an encoded video bitstream, that is decoded by other components of video decoder 30. The video data stored in video data memory 79 may be obtained from recording device 32, from a local video source such as a camera, by wired or wireless network communication of the video data, or by accessing a physical data storage medium such as a flash drive or hard disk. Video data memory 79 may include a coded picture buffer (CPB) that stores coded video data from the coded video bitstream. A decoded picture buffer (DPB) 92 of video decoder 30 stores reference video data used to encode video data by video decoder 30 (e.g., in an intra-predictive coding mode or an inter-predictive coding mode). Video data memory 79 and DPB 92 may be formed by any of a variety of memory devices, such as dynamic random access memory (DRAM), including synchronous dynamic random access memory (SDRAM), magneto-resistive RAM (MRAM), resistive RAM (RRAM), or other types of memory devices. For illustrative purposes, video data memory 79 and DPB 92 are depicted as two separate components of video decoder 30 in FIG. 3 . However, it will be apparent to those skilled in the art that video data memory 79 and DPB 92 may be provided by the same memory device or separate memory devices. In some examples, video data memory 79 may be on-chip with other components of video decoder 30 or may be off-chip relative to those components.

[0044] During the decoding process, video decoder 30 receives an encoded video bitstream representing video blocks of encoded video frames and associated syntax elements. Video decoder 30 may receive video frame-level and / or video block-level syntax elements. An entropy decoding unit 80 of video decoder 30 entropy decodes the bitstream to generate quantized coefficients, motion vectors or intra-prediction mode indicators, and other syntax elements. Entropy decoding unit 80 then forwards the motion vectors and other syntax elements to a prediction processing unit 81.

[0045] When a video frame is coded as an intra-predictively coded (I) frame or for intra-coded predictive blocks in other types of frames, the intra-prediction processing unit 84 of the prediction processing unit 81 may generate predictive data for video blocks of the current video frame based on the signaled intra-prediction mode and reference data from previously decoded blocks of the current frame.

[0046] When a video frame is coded as an inter-predictive (i.e., B or P) frame, motion compensation unit 82 of prediction processor 81 generates one or more predictive blocks for video blocks of the current video frame based on the motion vectors and other syntax elements received from entropy decoder 80. Each of the predictive blocks may be generated from a reference frame within one of the reference frame lists. Video decoder 30 may construct the reference frame lists, List 0 and List 1, using a default construction technique based on the reference frames stored in DPB 92.

[0047] In some examples, when a video block is encoded according to the intra BC modes described herein, intra BC unit 85 of prediction processor 81 generates a predictive block for the current video block based on the block vectors and other syntax elements received from entropy decoding unit 80. The predictive block may be within the same reconstructed region of the picture as the current video block as defined by video encoder 20.

[0048] Motion compensation unit 82 and / or intra BC unit 85 determine prediction information for video blocks of the current video frame by analyzing the motion vectors and other syntax elements, and then use the prediction information to generate predictive blocks for the current video block to be decoded. For example, motion compensation unit 82 uses some of the received syntax elements to determine the prediction mode (e.g., intra-prediction or inter-prediction) used to encode the video blocks of the video frame, the inter-prediction frame type (e.g., B or P), configuration information for one or more of the reference frame lists for the frame, the motion vectors of each inter-predictively coded video block in the frame, the inter-prediction state of each inter-predictively coded video block of the frame, and other information for decoding the video blocks in the current video frame.

[0049] Similarly, the intra BC unit 85 may use some of the received syntax elements, such as flags, to determine that the current video block was predicted using an intra BC mode, configuration information of the video blocks of the frame that are within the reconstructed region and that should be stored in the DPB 92, block vectors of each intra BC predicted video block of the frame, the intra BC prediction state of each intra BC predicted video block of the frame, and other information for decoding the video blocks in the current video frame.

[0050] Motion compensation unit 82 may also perform the interpolation using an interpolation filter such as that used to calculate sub-integer pixel interpolated values ​​of a reference block during encoding of the video block by video encoder 20. In this case, motion compensation unit 82 may determine the interpolation filter used by video encoder 20 from the received syntax element and generate the predictive block using the interpolation filter.

[0051] An inverse quantizer 86 inverse quantizes the quantized transform coefficients provided in the bitstream and entropy decoded by entropy decoder 80 using the same quantization parameters calculated by video encoder 20 to determine the degree of quantization for each video block in a video frame. An inverse transform processor 88 applies an inverse transform, such as an inverse DCT, an inverse integer transform, or a conceptually similar inverse transform process, to the transform coefficients in order to reconstruct residual blocks in the pixel domain.

[0052] After motion compensation unit 82 or intra BC unit 85 generates a predictive block for the current video block based on the vectors and other syntax elements, summer 90 reconstructs a decoded video block for the current video block by summing the residual block from inverse transform processor 88 with the corresponding predictive block generated by motion compensation unit 82 and intra BC unit 85. An in-loop filter (not shown) may be disposed between summer 90 and DPB 92 for further processing the decoded video block. The decoded video block for a given frame is then stored in DPB 92, which stores reference frames used for subsequent motion compensation of the next video block. DPB 92 or a memory device separate from DPB 92 may also store decoded video for later presentation to a display device, such as display device 34 of FIG. 1 .

[0053] In a typical video coding process, a video sequence typically includes an ordered set of frames or pictures. Each frame may include three sample arrays, denoted as SL, SCb, and SCr. SL is a two-dimensional array of luma samples. SCb is a two-dimensional array of Cb chrominance samples. SCr is a two-dimensional array of Cr chrominance samples. In other cases, a frame may be black and white and therefore include only one two-dimensional array of luma samples.

[0054] As shown in FIG. 4A, video encoder 20 (more specifically, divider 45) generates a coded representation of a frame by first dividing the frame into a set of coding tree units (CTUs). A video frame may include an integer number of CTUs sequentially ordered in raster scan order from left to right and top to bottom. Each CTU is the largest logical coding unit, and the width and height of a CTU are signaled by video encoder 20 in a sequence parameter set so that all CTUs in a video sequence have the same size, which may be one of 128×128, 64×64, 32×32, and 16×16. However, it should be noted that the present application is not necessarily limited to a particular size. As shown in FIG. 4B, each CTU may include one coding tree block (CTB) consisting of luma samples, a corresponding coding tree block consisting of two chrominance samples, and syntax elements used to encode the samples in the coding tree block. The syntax elements describe the characteristics of various types of units of coding blocks of pixels and how a video sequence may be reconstructed at video decoder 30, including inter- or intra-prediction, intra-prediction mode, motion vectors, and other parameters. For black and white pictures or pictures with three distinct color planes, a CTU may include a single coding tree block and syntax elements used to encode the samples of the coding tree block. A coding tree block may be an NxN block of samples.

[0055] To achieve better performance, video encoder 20 may recursively perform tree partitioning, such as binary-tree partitioning, ternary-tree partitioning, quad-tree partitioning, or a combination thereof, on the coding tree blocks of a CTU to divide the CTU into smaller coding units (CUs). As shown in FIG. 4C , a 64×64 CTU 400 is first partitioned into four smaller CUs, each with a 32×32 block size. Among the four smaller CUs, CU 410 and CU 420 are each partitioned into four CUs with a 16×16 block size. Two 16×16 CUs, 430 and 440, are further partitioned into four CUs with an 8×8 block size. FIG. 4D illustrates a quadtree data structure showing the final result of the partitioning process of the CTU 400 as illustrated in FIG. 4C, with each leaf node of the quadtree corresponding to one CU of a respective size ranging from 32×32 to 8×8. Similar to the CTU illustrated in FIG. 4B, each CU may include a coding block (CB) of luma samples, two corresponding coding blocks of chroma samples of the same size frame, and syntax elements used to encode the samples of the coding block. In a monochrome picture or a picture with three distinct color planes, a CU may include a single coding block and syntax structures used to encode the samples of the coding block. Note that the quadtree partitioning illustrated in FIGS. 4C and 4D is for illustrative purposes only; a CTU may be partitioned into CUs based on quadtree, ternary, or binary tree partitioning to suit various local characteristics. In the composite tree structure, one CTU is divided by a quadtree structure, and the leaf CU of each quadtree can be further divided by a binary tree structure and a ternary tree structure. As shown in Figure 4E, there are five division types: 4-way division, horizontal 2-way division, vertical 2-way division, horizontal 3-way division, and vertical 3-way division.

[0056] In some implementations, video encoder 20 may further divide a coding block of a CU into one or more M×N prediction blocks (PBs). A prediction block is a rectangular (square or non-square) block of samples to which a uniform (inter or intra) prediction is applied. A prediction unit (PU) of a CU may include a prediction block of luma samples, two corresponding prediction blocks of chroma samples, and syntax elements used to predict the prediction block. In a black and white picture or a picture with three distinct color planes, a PU may include a single prediction block and syntax elements used to predict the prediction block. Video encoder 20 may generate predicted luminance, Cb and Cr blocks for luminance, and Cb and Cr predicted blocks for each PU of a CU.

[0057] Video encoder 20 may use intra prediction or inter prediction to generate the predictive blocks for a PU. If video encoder 20 uses intra prediction to generate the predictive blocks for a PU, video encoder 20 may generate the predictive blocks for the PU based on decoded samples of a frame associated with the PU. If video encoder 20 uses inter prediction to generate the predictive blocks for the PU, video encoder 20 may generate the predictive blocks for the PU based on decoded samples of one or more frames other than the frame associated with the PU.

[0058] After generating a predictive luma block, a predictive Cb block, and a predictive Cr block for one or more PUs in a CU, video encoder 20 may generate a luma residual block for the CU by subtracting the predictive luma block of the CU from the original luma coding block of the CU, such that each sample in the luma residual block of the CU indicates a difference between a luma sample in one of the predictive luma blocks of the CU and a corresponding sample in the original luma coding block of the CU. Similarly, video encoder 20 may generate a Cb residual block and a Cr residual block of the CU, respectively, such that each sample in the Cb residual block of the CU indicates a difference between a Cb sample in one of the predictive Cb blocks of the CU and a corresponding sample in the original Cb coding block of the CU, and each sample in the Cr residual block of the CU may indicate a difference between a Cr sample in one of the predictive Cr blocks of the CU and a corresponding sample in the original Cr coding block of the CU.

[0059] Moreover, as shown in FIG. 4C , video encoder 20 uses quadtree partitioning to decompose the luma, Cb, and Cr residual blocks of a CU into one or more luma, Cb, and Cr transform blocks. A transform block is a rectangular (square or non-square) block of samples to which the same transform is applied. A transform unit (TU) of a CU may include a transform block of luma samples, two corresponding transform blocks of chroma samples, and syntax elements used to predict the transform block samples. Thus, each TU of a CU may be associated with a luma transform block, a Cb transform block, and a Cr transform block. In some examples, the luma transform block associated with a TU may be a sub-block of the CU's luma residual block. The Cb transform block may be a sub-block of the CU's Cb residual block. The Cr transform block may be a sub-block of the CU's Cr residual block. In monochrome pictures or pictures with three separate color planes, a TU may include a single transform block and syntax structures used to transform the transform block samples.

[0060] Video encoder 20 may apply one or more transforms to a luma transform block of a TU to generate a luma coefficient block for the TU. The coefficient block may be a two-dimensional array of transform coefficients. The transform coefficients may be scalar quantities. Video encoder 20 may apply one or more transforms to a Cb transform block of the TU to generate a Cb coefficient block for the TU. Video encoder 20 may apply one or more transforms to a Cr transform block of the TU to generate a Cr coefficient block for the TU.

[0061] After generating a coefficient block (e.g., a luma coefficient block, a Cb coefficient block, or a Cr coefficient block), the video encoder 20 may quantize the coefficient block. Quantization generally refers to a process by which transform coefficients are quantized to somehow reduce the amount of data used to represent the transform coefficients, resulting in further compression. After quantizing the coefficient block, the video encoder 20 may entropy code syntax elements that indicate the quantized transform coefficients. For example, the video encoder 20 may perform context-adaptive binary arithmetic coding (CABAC) on the syntax elements that indicate the quantized transform coefficients. Finally, Video encoder 20 may output a bitstream containing a series of bits forming a representation of an encoded frame and associated data, which may be stored in recording device 32 or transmitted to destination device 14 .

[0062] After receiving the bitstream generated by video encoder 20, video decoder 30 may parse the bitstream to obtain syntax elements from the bitstream. Video decoder 30 may reconstruct frames of video data based at least in part on the syntax elements obtained from the bitstream. The process of reconstructing video data is generally the reverse of the encoding process performed by video encoder 20. For example, video decoder 30 may perform an inverse transform on coefficient blocks associated with TUs of the current CU to reconstruct residual blocks associated with the TUs of the current CU. Video decoder 30 also reconstructs coding blocks of the current CU by adding samples of predictive blocks for PUs of the current CU to samples of transform blocks of corresponding TUs of the current CU. Video decoder 30 may reconstruct a frame after reconstructing coding blocks for each CU of the frame.

[0063] As mentioned above, video coding achieves video compression primarily using two modes: intra-frame prediction (i.e., intra-prediction) and inter-frame prediction (i.e., inter-prediction). Palette-based coding is another coding method adopted by many video coding standards. Palette-based coding is particularly suitable for encoding content generated on a screen, in which a video coder (e.g., video encoder 20 or video decoder 30) forms a palette table of colors to represent video data of a given block. The palette table includes the most dominant (e.g., frequently used) pixel values ​​in the given block. Pixel values ​​that are not frequently represented in the video data of a given block are either not included in the palette table or are included in the palette table as avoided colors.

[0064] Each entry in the palette table contains an index for a corresponding pixel value in the palette table. The palette index for a sample in a block may be coded to indicate the palette table entry used to predict or reconstruct the sample. This palette mode begins with the process of generating a palette predictor for the first block of a picture, slice, tile, or such grouping of video blocks. As described below, palette predictors for subsequent video blocks are generally generated by updating a previously used palette predictor. For illustrative purposes, it is assumed that the palette predictor is defined at the picture level. In other words, a picture may contain multiple coded blocks, each with its own palette table, but there is one palette predictor for the entire picture.

[0065] To reduce the number of bits required to signal palette entries in a video bitstream, a video decoder may utilize a palette predictor to determine new palette entries for a palette table used to reconstruct a video block. For example, the palette predictor may include palette entries from a previously used palette table, or may be initialized with the most recently used palette table by including all entries from the most recently used palette table. In some implementations, the palette predictor may include fewer than all entries from the most recently used palette table and then incorporate some entries from other previously used palette tables. The size of the palette predictor may be the same as, larger than, or smaller than the size of the palette tables used to encode different blocks. In one example, the palette predictor is implemented as a first-in-first-out (FIFO) table containing 64 palette entries.

[0066] To generate a palette table for a block of video data from the palette predictor, the video decoder may receive a one-bit flag for each input of the palette predictor from the encoded video bitstream. The one-bit flag may have a first value (e.g., binary 1) indicating that the associated input of the palette predictor is included in the palette table or a second value (e.g., binary 0) indicating that the associated input of the palette predictor is not included in the palette table. If the size of the palette predictor is larger than the palette table used for the block of video data, the video decoder may stop receiving further flags once the maximum size of the palette table is reached.

[0067] In some implementations, some entries in the palette table may be directly signaled in the coded video bitstream rather than being determined using a palette predictor. For such entries, the video decoder may receive three separate m-bit values ​​from the coded video bitstream indicating pixel values ​​for the luma component and two chroma components associated with the entry, where m represents the bit depth of the video data. While multiple m-bit values ​​are required for directly signaled palette entries, palette entries derived from a palette predictor require only a one-bit flag. Thus, signaling some or all of the palette entries using a palette predictor can significantly reduce the number of bits required to signal new palette table entries, thereby improving the overall coding efficiency of palette mode coding.

[0068] In many cases, the palette predictor for a block is determined based on the palette table used to code one or more previously coded blocks. However, when coding the first coding tree unit in a picture, slice, or tile, the palette table of the previously coded block may not be available. Therefore, the palette predictor cannot be generated using entries in the previously used palette table. In such cases, a set of palette predictor initializers, whose values ​​are used to generate the palette predictor when the previously used palette table is unavailable, may be signaled in a sequence parameter set (SPS) and / or a picture parameter set (PPS). An SPS generally refers to a syntactic structure of syntax elements that fits into a series of consecutive coded video pictures, called a coded video sequence (CVS), as determined by the content of syntax elements found in a PPS referenced by syntax elements found in each slice segment header. A PPS generally refers to a syntactic structure of syntax elements that fits into one or more individual pictures within a CVS, as determined by the content of syntax elements found in each slice segment header. Therefore, an SPS is generally considered a higher level syntax structure than a PPS, meaning that the syntax elements contained in an SPS generally change less frequently and fit a larger portion of the video data compared to the syntax elements contained in a PPS.

[0069] 5A-5B are block diagrams illustrating examples of using a palette table to encode video data in accordance with some implementations of the present disclosure.

[0070] For palette (PLT) mode signaling, the palette mode is coded as the prediction mode for a coding unit, i.e., the prediction modes for a coding unit can be MODE_INTRA, MODE_INTER, MODE_IBC, and MODE_PLT. When palette mode is used, pixel values ​​of a CU are represented by a small set of representative colors. This set is called the palette. For pixels with values ​​close to the palette colors, a palette index is signaled. Pixels with values ​​outside the palette are signaled with the escape symbol. and the quantized pixel values ​​are signaled directly. The syntax and associated semantics of palette modes in the current VVC draft specification are shown in Tables 1 and 2 below, respectively.

[0071] To decode a block coded in palette mode, the decoder needs to decode the palette color and index from the bitstream. The palette color is defined by the palette table and coded by the palette table coding syntax (e.g., palette_predictor_run, num_signaled_palette_entries, new_palette_entries). For each CU, an escape flag palette_escape_val_present_flag is signaled to indicate whether there is an escape symbol in the current CU. If there is an escape symbol, the palette table is augmented with one more entry, and the last index is assigned to the escape mode. The palette indices of all pixels in a CU form a palette index map, which is coded by the palette index map coding syntax (e.g., num_palette_indices_minus1, palette_idx_idc, copy_above_indices_for_final_run_flag, palette_transpose_flag, copy_above_palette_indices_flag, palette_run_prefix, palette_run_suffix). Figure 5A shows an example of a CU coded in palette mode, with a palette size of 4. The first three samples in the CU use palette entries 2, 0, and 3 for reconstruction, respectively. The "x" sample in the CU represents an escape symbol. A CU-level flag, palette_escape_val_present_flag, indicates whether there are any escape symbols in the CU. If there are escape symbols, the palette size is increased by one, and the last index is used to indicate the escape symbol. Thus, in Figure 5A, the escape symbol is assigned index 4.

[0072] If the palette index (eg, index 4 in FIG. 5A) corresponds to an escape symbol, additional overhead is signaled to indicate the corresponding color of the sample.

[0073] In some embodiments, the encoder side must derive an appropriate palette to be used with the CU. A modified k-means clustering algorithm is used to derive a palette for lossy coding. The first sample of a block is added to the palette. Then, for each subsequent sample from the block, the sum of absolute differences (SAD) between the sample and each of the current palette colors is calculated. If the distortion of each of the components is less than the threshold for the palette entry corresponding to the smallest SAD, the sample is added to the cluster belonging to that palette entry. Otherwise, the sample is added as a new palette entry. If the number of samples mapped to a cluster exceeds the threshold, the centroid of that cluster is updated to become the palette entry for that cluster.

[0074] In the next step, the clusters are sorted in descending order of usage. Then, the palette entry corresponding to each entry is updated. Normally, the cluster centroid is used as the palette entry. However, taking into account the cost of encoding the palette entry, a rate-distortion analysis is performed to analyze whether there is any entry from the palette predictor that is more suitable to be used as the updated palette entry instead of the centroid. This process continues until all clusters have been processed or the maximum palette size is reached. Finally, if a cluster has only a single sample and there is no corresponding palette entry in the palette predictor, the sample is converted to an escape symbol. Additionally, duplicate palette entries are removed and their clusters are combined.

[0075] After palette derivation, each sample in the block is assigned the index of the nearest palette entry (in the SAD). The sample is then assigned to either "INDEX" or "COPY_ABOVE" mode. For each sample that can be in either "INDEX" or "COPY_ABOVE" mode, the implementation of each mode is determined. The cost of encoding the mode is then calculated. The mode with the lower cost is selected.

[0076] A palette predictor is maintained for encoding the palette table. Both the maximum size of the palette and the maximum size of the palette predictor can be signaled in the SPS (or other encoding levels, such as the PPS or slice header). The palette predictor is initialized at the start of each slice, where the palette predictor is reset to 0. For each entry in the palette predictor, a reuse flag is signaled to indicate whether it is part of the current palette. As shown in Figure 5B, a reuse flag, palette_predictor_run, is signaled. After this, the number of new palette entries is signaled using an exponential-Golomb code of order 0 to the syntax num_signaled_palette_entries. Finally, the component values ​​for the new palette entries, new_palette_entries[], are signaled. After encoding the current 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 it reaches the maximum possible size.

[0077] To encode a palette index map, the indices are encoded using either horizontal or vertical scanning, as shown in Figure 5C. The scanning order is explicitly signaled in the bitstream using palette_transpose_flag.

[0078] The palette index is coded using two main palette sample modes, "INDEX" and "COPY_ABOVE". In "INDEX" mode, the palette index is signaled explicitly. In "COPY_ABOVE" mode, the palette index of the sample in the row above is copied. For both "INDEX" and "COPY_ABOVE" modes, a run value is signaled that specifies the number of pixels to be coded using the same mode. The mode is signaled using a flag, but not the top row when horizontal scanning is used, or the first column when vertical scanning is used or the previous mode was "COPY_ABOVE".

[0079] In some embodiments, the coding order for the index map is as follows: First, the number of index values ​​for a CU is signaled using the syntax num_palette_indices_minus1, followed by the actual index value for the entire CU using the syntax palette_idx_idc. Both the number of indices and the index value are coded in bypass mode, which groups the bypass coding bins associated with the index. Then, the palette mode (INDEX or COPY_ABOVE) and run are signaled in an interleaved manner using the syntax copy_above_palette_indices_flag, palette_run_prefix, and palette_run_suffix. copy_above_palette_indices_flag is a context coding flag (only one bin), the codeword for palette_run_prefix is ​​determined by the process described in Table 3 below, and the first five bins are context coded. palette_run_suffix is ​​a bypass coding flag. bins. Finally, the component escape values ​​corresponding to the escape samples for the entire CU are grouped and coded in bypass mode. After signaling the index values, an additional syntax element copy_above_indices_for_final_run_flag is signaled. This syntax element eliminates the need to signal the run value corresponding to the last run in the block along with the number of indices.

[0080] In the VVC (VTM) reference software, the dual tree is enabled for I slices to separate the coding unit division for the luma and chroma components. As a result, the palette is applied separately to the luma (Y component) and chroma (Cb and Cr components). When the dual tree is disabled, the palette is applied jointly to the Y, Cb, and Cr components.

[0081] [Table 1-1] [Table 1-2] [Table 1-3] [Table 1-4] [Table 1-5] [Table 1-6]

[0082] [Table 2-1] [Table 2-2] [Table 2-3] [Table 2-4] [Table 2-5]

[0083] [Table 3-1] [Table 3-2]

[0084] At the 15th JVET conference, line-based CGs were proposed to simplify buffer usage and syntax in palette mode of VTM6.0 (the document number is JVET-O0120 and can be accessed at http: / / phenix.int-evry.fr / jvet / ). A CU is divided into multiple line-based coefficient groups (CGs) of m samples each, like the coefficient groups used in encoding transform coefficients, where the index run, palette index value, and quantized color for escape mode are coded / parsed sequentially for each CG. As a result, pixels in line-based CGs can be reconstructed after parsing syntax elements such as index run, palette index value, and escape quantized color for CGs, which allows VTM6.0 to reconstruct all CGs before reconstruction. The buffer requirements in palette mode, where syntax elements for a CU need to be parsed (and stored), are greatly reduced.

[0085] In this application, each CU in palette mode is divided into multiple segments of m samples (m=8 in this test) based on the horizontal scan mode, as shown in FIG. 5D.

[0086] In each segment, the encoding order for palette run encoding is as follows: For each pixel, one context encoding bin run_copy_flag=0 is signaled to indicate that the pixel is of the same mode as the previous pixel, i.e., the previous scanned pixel and the current pixel are both of run type COPY_ABOVE, or of run type INDEX and have the same index value; otherwise, run_copy_flag=1 is signaled.

[0087] If the current pixel and the previous pixel are in different modes, one context coding bin copy_above_palette indices_flag is signaled to indicate the execution type of the pixel, i.e., INDEX or COPY_ABOVE. In this case, since INDEX mode is used by default, the decoder does not need to parse the execution type whether the sample is in the first row (horizontal scan) or the first column (vertical scan). The decoder also does not need to parse the execution type whether the previously parsed execution type was COPY_ABOVE.

[0088] After palette run encoding of pixels in one segment, the index values ​​(in INDEX mode) and quantized escape colors are encoded as bypass bins and grouped separately from the encoding / parsing of context coding bins to improve internal performance of each line-based CG. After the encoding run, the encoder does not need to signal the number of index values ​​num_palette_indices_minus1 and the final run type copy_above_indices_for_final_run_flag, since the index values ​​are encoded / parsed at this time. The syntax of the CG palette mode is shown in Table 4.

[0089] [Table 4-1] [Table 4-2] [Table 4-3] [Table 4-4] [Table 4-5]

[0090] FIG. 6 is a flow diagram 600 illustrating an example process by which a video decoder (eg, video decoder 30) performs techniques for decoding video data according to some implementations of this disclosure.

[0091] For VVC palette modes, the palette mode may fit into CUs of 64x64 pixels or smaller. In some embodiments, a minimum palette mode block size is proposed to reduce complexity by disabling palette mode for coding units smaller than the minimum palette mode block size. For example, it is proposed to disable palette mode for all blocks smaller than a certain threshold, e.g., 16 samples. This threshold may vary because there are various chrominance formats (e.g., 4:4:4, 4:2:2, 4:2:0) and various coding tree types (e.g., SINGLE_TREE, DUAL_TREE_LUMA, and DUAL_TREE_CHROMA). Note that "SINGLE_TREE" indicates that the luma and chroma components of an image are split similarly, such that the two components share the same palette table and palette predictor under that palette mode. In contrast, "DUAL_TREE" indicates that the luma and chroma components of an image are split separately, such that the two components obtain separate palette tables and palette predictors under that palette mode. For example, for a YUV 4:2:0 format with a "DUAL_TREE" type, where different components are considered separately, the palette mode of chrominance components of CUs with less than 16 samples may be disabled to reduce complexity. Table 5 below shows an example of a proposed syntax.

[0092] [Table 5]

[0093] In Table 5, pred_mode_plt_flag specifies whether palette mode is enabled (e.g., a value of 1) or disabled (e.g., a value of 0) for the coding unit. Parameters such as SubWidthC and SubHeightC are associated with the chroma format of the coding unit as follows: [Table 6]

[0094] In monochrome sampling, there is only one sample array, nominally considered the luma array. In 4:2:0 sampling, each of the two chroma arrays has half the height and half the width of the luma array. In 4:2:2 sampling, each of the two chroma arrays has the same height and half the width of the luma array. In 4:4:4 sampling, each of the two chroma arrays has the same height and width as the luma array.

[0095] In another embodiment, in the case of a single tree, the palette mode is For example, palette mode is disabled for small size blocks depending on the luma block size. In one example for the YUV 420 format, palette mode for CUs smaller than 16 pixels is disabled in the single tree case depending on the luma block size. In a specific example, palette enablement is conditional on the luma sample size and ignores the chroma sample size, so palette mode may be enabled for an 8x4 CU containing 8x4 luma samples and two 4x2 chroma samples.

[0096] During bitstream decoding, video decoder 30 first receives from the bitstream a number of syntax elements associated with a coding unit (610). The number of syntax elements indicates the size and coding tree type of the coding unit. For example, the coding tree type of the coding unit may be one of SINGLE_TREE, DUAL_TREE_LUMA, or DUAL_TREE_CHROMA. Video decoder 30 then determines a minimum palette mode block size for the coding unit depending on the coding tree type of the coding unit (620). For example, as shown in Table 5 above, when the coding tree type of the coding unit is SINGLE_TREE or DUAL_TREE_LUMA, video decoder 30 sets the minimum palette mode block size to 16 samples. When the coding tree type of the coding unit is DUAL_TREE_CHROMA, video decoder 30 first determines the chroma format for the coding unit and then sets the minimum palette mode block size depending on the chroma format, as shown in the table above. For example, when the chrominance format is 4:4:4, the minimum palette mode block size is 16 samples, when the chrominance format is 4:2:2, the minimum palette mode block size is 32 samples, and when the chrominance format is 4:2:0, the minimum palette mode block size is 64 samples.

[0097] In response to determining that the size of the coding unit is larger than the minimum palette mode block size (630), video decoder 30 receives a palette mode enable flag associated with the coding unit from the bitstream (640) and then decodes the coding unit from the bitstream in response to the palette mode enable flag (650). In some embodiments, when the palette mode enable flag indicates that palette mode is enabled for the coding unit, video decoder 30 generates a palette table for the current unit from the bitstream (670) and then decodes the coding unit from the bitstream using the generated palette table (680), as described above in connection with Figures 5A-5D.

[0098] FIG. 7 is a block diagram illustrating an example context-adaptive binary arithmetic coding (CABAC) engine, in accordance with some implementations of the present disclosure.

[0099] Context-adaptive binary arithmetic coding (CABAC) is a form of entropy coding used in many video coding standards, such as H.264 / MPEG-4 AVC, High Efficiency Video Coding (HEVC), and VVC. CABAC is based on arithmetic coding with several innovations and modifications to meet the requirements of video coding standards. For example, CABAC encodes binary symbols, maintains low complexity, and enables probability modeling for the more frequently used bits of every symbol. The probability model is adaptively selected based on the local context, allowing for better modeling of probabilities because coding modes are usually well correlated locally. Finally, CABAC uses multiplication-free range partitioning by using quantized probability ranges and probability states.

[0100] CABAC has multiple probability models for different contexts. First, all non-binary symbols are converted to binary. Then, for each bin (also called bit), the encoder selects a probability model to use and then optimizes the probability estimate using information from nearby elements. Finally, arithmetic coding is applied to compress the data.

[0101] Context modeling provides an estimate of the conditional probability of the coding symbol. With the use of an appropriate context model, a given inter-symbol redundancy can be exploited by switching between different probability models depending on the already coded symbols in the neighborhood of the current symbol for coding. The step of coding a data symbol comprises the following stages:

[0102] Binarization: CABAC uses binary arithmetic coding, meaning that only binary decisions (1 or 0) are coded. Non-binary symbols (e.g., transform coefficients or motion vectors) are "binarized," or converted into binary codes, prior to arithmetic coding. This process is similar to converting data symbols into variable-length codes, except that the binary codes are further coded (by an arithmetic coder) before transmission. The stages are repeated for each bin (or "bit") of the binarized symbols.

[0103] Context Model Selection: A "context model" is a probability model for one or more bins of a binarized symbol. This model may be selected from available models based on the statistics of recently coded data symbols. The context model stores the probability that each bin is a "1" or a "0."

[0104] Arithmetic coding: The arithmetic coder encodes each bin according to a selected probability model. Note that for each bin there are exactly two subranges (corresponding to "0" and "1").

[0105] Probability update: The selected context model is updated based on the actual encoded value (e.g., if the bin value is "1", the frequency count of "1" is increased).

[0106] By decomposing the value of each non-binary syntax element into a set of bins, further processing of each bin value in CABAC can be selected to normal mode or bypass mode depending on the associated coding mode decision. Bins selected for bypass mode are assumed to have a uniform distribution, and consequently, all normal binary arithmetic coding (and decoding) processes are simply bypassed. In normal coding mode, each bin value is coded using a normal binary arithmetic coding engine, and the associated probability model is determined by a fixed selection based on the type of syntax element and the bin position, i.e., bin index (binIdx), of the binary representation of the syntax element, or adaptively selected from two or more probability models based on relevant side information (e.g., spatial neighborhood, component, depth, or size of a CU / PU / TU, or location inside a TU). The selection of the probability model is called context modeling. As a key design decision, the latter is typically applied only to the most frequently observed bins, while other bins, which are typically less frequently observed, are processed using a joint, typically zero-order probability model. In this way, CABAC allows selective adaptive probability modeling at the sub-symbol level, thus providing an efficient means for exploiting inter-symbol redundancy with significantly reduced overall modeling or training costs. Note that for both constant and adaptive selection, in principle, switching from one probability model to another can occur between any two consecutive normally coded bins. In general, in CABAC, the design of the context model strikes an excellent compromise between the conflicting goals of preventing unnecessary modeling cost overhead and exploiting statistical dependencies to a significant extent. Reflects the goal of

[0107] The parameters of the probability model in CABAC are adaptive, meaning that the adaptation of the model probability to the statistical fluctuations of the bin's source is performed synchronously in a backward-adaptive manner for each bin at both the encoder and decoder; this process is called probability estimation. To this end, each probability model in CABAC can adopt one of 126 distinct states, with the associated model probability value p ranging from [0:01875;0:98125]. Two parameters of each probability model are stored as a 7-bit entry in the context memory: 6 bits for each of the 63 probability states representing the model probability pLPS of the least probable symbol (LPS), and 1 bit for the value nMPS of the most probable symbol (MPS).

[0108] In one or more examples, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted as one or more instructions or code on a computer-readable medium and executed by a hardware-based processing unit. Computer-readable media may include computer-readable media, which correspond to tangible media such as data storage media, or communication media, including any medium that facilitates transfer of a computer program from one place to another, for example, according to a communications protocol. Thus, computer-readable media generally may correspond to (1) non-transitory tangible computer-readable media or (2) communication media, such as a signal or carrier wave. Data storage media may be any available medium that can be accessed by one or more computers or one or more processors to retrieve instructions, code, and / or data structures to implement the implementations described herein. A computer program product may include computer-readable media.

[0109] The terminology used in describing implementations herein is for the purpose of describing particular implementations only and is not intended to limit the scope of the claims. As used in describing implementations and the appended claims, the singular forms "a," "an," and "the" are intended to include the plural forms as well, unless the context clearly indicates otherwise. The term "and / or," as used herein, will also be understood to refer to and include any and all possible combinations of one or more of the associated listed items. It will be further understood that the terms "comprise" and / or "comprising," when used herein, specify the presence of stated features, elements, and / or components, but do not exclude the presence or addition of one or more other features, elements, components, and / or groups thereof.

[0110] Terms such as "first," "second," and the like may be used herein to describe various elements, but it should be understood that these elements should not be limited by these terms. These terms are merely used to distinguish one element from another. For example, a first electrode may be referred to as a second electrode, and similarly, a second electrode may be referred to as a first electrode, without departing from the scope of the implementation. The first electrode and the second electrode are both electrodes, but are not the same electrode.

[0111] The description in this application has been presented for purposes of illustration and description and is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications, variations, and alternative implementations will be apparent to those skilled in the art having the benefit of the teachings presented in the foregoing description and the associated drawings. The embodiments are provided to best explain the principles and practical applications of the invention, to enable others skilled in the art to understand the invention in terms of various implementations, and to provide a clear understanding of the basic principles and various modifications as may be appropriate for the particular use intended. Various implementations with associated features have been selected and described in order to best utilize them. It is therefore to be understood that the claims are not limited to the specific examples and modifications of the disclosed implementations, and that other implementations are intended to be included within the scope of the appended claims.

Claims

1. 1. A method for decoding video data, comprising: receiving, from a bitstream, a plurality of syntax elements associated with a coding unit, the plurality of syntax elements indicating a size and a coding tree type of the coding unit; determining a minimum palette mode block size for the coding unit according to the coding tree type of the coding unit; In response to determining that the size of the coding unit is greater than the minimum palette mode block size, receiving a palette mode enable flag associated with the coding unit from the bitstream; decoding the coding unit from the bitstream in response to the palette mode enable flag; A method comprising:

2. 10. The method of claim 1, the step of decoding the coding unit from the bitstream in response to the palette mode enable flag comprises: When the palette mode enable flag indicates that the palette mode is enabled for the coding unit, generating a palette table for the current unit from the bitstream; decoding the coding unit from the bitstream using the generated palette table; The method further comprises:

3. 10. The method of claim 1, determining a minimum palette mode block size for the coding unit in response to the coding tree type of the coding unit, When the coding tree type of the coding unit is SINGLE_TREE or DUAL_TREE_LUMA, setting the minimum palette mode block size to 16 samples; When the coding tree type of the coding unit is DUAL_TREE_CHROMA, determining a chrominance format of the coding unit; setting the minimum palette mode block size according to the chrominance format; The method further comprises the steps.

4. 4. The method of claim 3, wherein when the chrominance format is 4:4:4, the minimum palette mode block size is 16 samples.

5. 4. The method of claim 3, wherein when the chrominance format is 4:2:2, the minimum palette mode block size is 32 samples.

6. 4. The method of claim 3, wherein when the chrominance format is 4:2:0, the minimum palette mode block size is 64 samples.

7. 1. An electronic device, comprising: one or more processing units; a memory coupled to the one or more processing units; a plurality of programs stored in the memory; Equipped with An electronic device, wherein the plurality of programs, when executed by the one or more processing units, cause the electronic device to perform the method of any one of claims 1 to 6.

8. 10. A non-transitory computer-readable recording medium storing a plurality of programs for execution by an electronic device having one or more processing units, the plurality of programs, when executed by the one or more processing units, causing the electronic device to perform the method of any one of claims 1 to 6.

Citation Information

Patent Citations

  • Restriction on palette block size in video coding

    US20160234494A1