VIDEO CONTENT ENCODING METHOD, VIDEO CONTENT DECODING METHOD, AND VIDEO CONTENT TRANSFER SYSTEM
The method dynamically adjusts throughput by dividing video blocks into N single samples and M groups using SVLC and CPEC, addressing throughput inefficiencies in diverse devices, ensuring optimal performance across varying bandwidth and power constraints.
Patent Information
- Application Number
- JP2021003124
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-03-30
- Filing Date
- 2021-01-12
- Publication Date
- 2025-01-20
- Estimated Expiration
- 2041-01-12
AI Technical Summary
Existing video encoding and decoding technologies struggle to adjust throughput efficiently, leading to suboptimal performance in various devices with differing bandwidth, resolution, and power requirements.
A video content encoding and decoding method that divides blocks into N single samples and M sample groups, using symbol variable length codes (SVLC) and common prefix entropy codes (CPEC) to adjust throughput by controlling the number of variable length codes, allowing for dynamic adaptation to decoder capabilities and environmental factors.
Enables flexible adjustment of throughput to match specific device requirements, balancing compression efficiency and processing power, while maintaining effective video decoding and encoding.
Smart Images

Figure 0007617748000030 
Figure 0007617748000031 
Figure 0007617748000032
Abstract
Description
[Technical field]
[0001] An embodiment of the present invention relates to a video content encoding method, a video content decoding method, and a video content transfer system.
[0002] This application claims priority to U.S. Patent Application No. 62 / 960,517, filed in the United States Patent and Trademark Office on January 13, 2020, the entire contents of which are incorporated herein by reference. [Background technology]
[0003] Data compression involves encoding information, which uses fewer bits than the original representation. Lossless data compression makes encoding possible by removing statistical redundancies in the original representation. Thus, no information is lost in lossless data compression and the original representation can be reconstructed using a decoder or decompressor. Lossy data compression, on the other hand, reduces bits by removing unnecessary or less important information. Thus, in many cases, the original representation cannot be perfectly reconstructed from data compressed using lossy compression algorithms.
[0004] Entropy coding (or entropy encoding) is a data compression method that uses fewer bits to encode the most probable symbols (MPS) and more bits to encode the least probable symbols (LPS). In other words, in an entropy coding system, the number of bits used to represent a symbol depends on the probability of the symbol appearing in the original text. Examples of entropy encoding include Huffman codes and Morse code, which encode the most common English letters "E" and "T" with one bit and the least common letters "Q" and "Z" with four bits. Summary of the Invention [Problem to be solved by the invention]
[0005] The problem to be solved by the present invention is to make the amount of processing of an encoder or decoder adjustable. [Means for solving the problem]
[0006] According to an embodiment of the present invention, a video content decoding method for decoding video content from an encoded bitstream including a plurality of blocks includes the steps of: dividing a block including one or more components of the video content into N single samples and M sample groups corresponding to one of the one or more components by a decoder circuit, where N is equal to or greater than 1 and M is equal to or greater than 1; decoding the N single samples by a symbol variable length code (SVLC) to generate one or more decoded single samples by the decoder circuit; the decoder circuitry decoding the M sample groups using a variable length pre-encoded (CPEC) code to generate one or more decoded sample groups; associating, by the decoder circuitry, the decoded single samples and the decoded sample groups into a residual block; and reconstructing, by the decoder circuitry, the video content based on previously reconstructed adjacent blocks of the video content and the residual block, wherein each of the M sample groups includes a variable length prefix and one or more fixed length suffixes representing a plurality of samples.
[0007] According to one embodiment of the present invention, N and M may be set according to the target decoder processing volume by calculating an upper limit for M based on the number of samples in the block and a maximum possible processing volume, calculating the number of variable length codes based on the number of samples in the block and a target decoder processing volume, and calculating N based on the number of variable length codes and an upper limit for M.
[0008] According to one embodiment of the invention, each of the M sample groups of the block may have the same number of fixed length suffixes.
[0009] According to an embodiment of the present invention, the block may be predictively coded in a transform omitted-block prediction mode.
[0010] According to one embodiment of the invention, at least two of the M sample groups of the block may have a different number of fixed length suffixes.
[0011] According to an embodiment of the present invention, the block may be predictively coded in a transform mode or a transform-omitted block prediction mode.
[0012] According to one embodiment of the invention, the block may contain multiple components of the video content.
[0013] According to one embodiment of the present invention, the encoded bitstream may further include a component omitted flag indicating that all of the samples of one corresponding component of the block of the encoded bitstream are zero.
[0014] According to one embodiment of the present invention, the encoded bitstream may further include a group omitted flag indicating that all of the samples in one of the M sample groups are zero.
[0015] According to an embodiment of the present invention, a method for encoding video content includes the steps of: dividing received video content into one or more blocks by an encoder circuit, each of the one or more blocks including a plurality of samples from one or more components of the video content; predictively encoding each of the blocks to generate a residual block by the encoder circuit; partitioning each of the residual blocks into N single samples and M sample groups by the encoder circuit, where N is equal to or greater than 1 and M is equal to or greater than 1; encoding each of the N single samples using a symbol variable length code (SVLC) to generate one or more SVLC-encoded samples by the encoder circuit; and combining, by the encoder circuit, the SVLC-coded samples and the CPEC-coded samples to output a coded bitstream, wherein each of the M sample groups includes a variable length prefix and one or more fixed length suffixes.
[0016] According to one embodiment of the present invention, N and M may be set according to the target decoder processing rate by calculating an upper limit for M based on the one or more number of samples per block and a maximum possible processing rate, calculating the number of variable length codes based on the number of samples per block and the target decoder processing rate, and calculating N based on the number of variable length codes and an upper limit for M.
[0017] According to one embodiment of the present invention, the partitioning of each of the predictively coded blocks may involve dividing at least one of the predictively coded blocks using a uniform partition, and each of the M sample groups of the at least one predictively coded block may have the same number of fixed-length suffixes.
[0018] According to an embodiment of the present invention, the at least one predictively coded block may be predictively coded in a transform skipped-block prediction mode.
[0019] According to one embodiment of the present invention, the partitioning of each of the predictively coded blocks may include dividing at least one of the predictively coded blocks into non-uniform partitions, and at least two of the M sample groups of the at least one predictively coded block may have different numbers of fixed length suffixes.
[0020] According to an embodiment of the present invention, the at least one predictively coded block may be predictively coded in a transform mode or a transform-omitted-block prediction mode.
[0021] According to one embodiment of the invention, each of the blocks may contain multiple components of the video content.
[0022] According to an embodiment of the present invention, the encoded bitstream may further include a component omitted flag indicating that all of the samples of at least one corresponding channel of the block are zero.
[0023] According to one embodiment of the present invention, the encoded bitstream may further include a group omitted flag indicating that all of the samples in one of the M sample groups are zero.
[0024] According to an embodiment of the present invention, a video content transmission system includes an encoder circuit and a decoder circuit, the encoder circuit dividing received video content having a plurality of components into one or more blocks, each of the one or more blocks including a plurality of samples from one of the plurality of components, predictively encoding each of the blocks to generate a predictively encoded block, partitioning each of the predictively encoded blocks into N single samples and M sample groups, where N is 1 or more and M is 1 or more, encoding each of the N single samples using a symbol variable length code (SVLC) to generate one or more SVLC-encoded samples, and decoding each of the M sample groups using a common prefix entropy code (CEC). the decoder circuit receives the encoded bitstream from the encoder circuit, divides a block of the encoded bitstream into the N single samples and the M sample groups, decodes the N single samples using a symbol variable length code to generate one or more decoded single samples, decodes each of the M sample groups using a common prefix entropy code to generate one or more decoded sample groups, reconstructs the predictively coded block from the decoded single samples and the decoded sample groups, decodes the predictively coded block by applying predictive coding, and reconstructs the video content from the predictively coded block, each of the M sample groups including a variable length prefix and one or more fixed length suffixes representing a plurality of samples.
[0025] According to one embodiment of the present invention, N and M may be set according to the target decoder processing volume by calculating an upper limit for M based on the number of samples in the block and a maximum possible processing volume, calculating the number of variable length codes based on the number of samples in the block and a target decoder processing volume, and calculating N based on the number of variable length codes and an upper limit for M.
[0026] According to one embodiment of the invention, the encoder circuit may sense one or more factors of a communications environment in which at least one of the encoder circuit or the decoder circuit operates, and update the values of N and M based on the one or more factors.
[0027] The one or more factors may include one or more of the number of decoders operating in parallel in the decoder circuit, the internal bandwidth, the thermal conditions of the decoder circuit, and noise in the physical medium between the encoder circuit and the decoder circuit. Effect of the Invention
[0028] According to one embodiment of the present invention, it is possible to adjust the amount of processing in the encoder or decoder. [Brief description of the drawings]
[0029] [Figure 1] As a block diagram of a system including an encoder and a decoder, the encoder encodes image content, and the decoder decodes the image content and displays it on a display device. [Diagram 2] Schematic drawing of a block of an image, where the block is 8x2 dimensional (of 16 samples) and is divided into 4 groups of 4 samples. [Diagram 3] FIG. 1 is a schematic diagram illustrating a common prefix entropy code (CPEC) structure for N=4 sample groups. [Figure 4]FIG. 1 is a diagram illustrating a schematic diagram of a 3x1 block and a form encoded with CPEC in the case of display stream compression (DSC). [Figure 5A] This is a schematic diagram of an 8x2 block divided into four uniformly sized groups (each group is a 2x2 portion of the block corresponding to four samples). [Figure 5B] 5 is a schematic diagram of an 8x2 block 530 divided into four groups of unequal size. [Figure 6] 1 is a flow chart illustrating a method for calculating the number of samples M and the number of samples N encrypted using SVLC for a given target decoder throughput in accordance with one embodiment of the present invention. [Figure 7] 2 is a flowchart illustrating a video content encoding method according to an embodiment of the present invention. [Figure 8] 2 is a flowchart illustrating a video content decoding method according to an embodiment of the present invention. [Figure 9A] FIG. 2 is a schematic diagram of encoding using homogeneous groups according to an embodiment of the present invention; [Figure 9B] FIG. 2 is a schematic diagram of encoding using non-uniform groups according to an embodiment of the present invention; [Figure 9C] FIG. 1 is a schematic diagram of encoding for a transform omitted-block predictive coding block using non-uniform groups according to an embodiment of the present invention; DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0030] In the following detailed description, an embodiment of the present invention will be illustrated and described with reference to the drawings. Those skilled in the art will understand that the present invention can be realized in various different forms and is not limited to the embodiment described herein. By illustrating such an embodiment, the detailed description of the invention will be clearer and various aspects and features of the invention can be fully conveyed to those skilled in the art. Therefore, descriptions of processes, devices, techniques, etc. that can be omitted to enable those skilled in the art to understand various aspects and features of the present invention will be omitted. Unless otherwise specified, the same reference numerals throughout the drawings and the specification indicate the same components, and duplicate descriptions will be omitted.
[0031] Compression can be applied to data storage and data transfer in a broad sense, such as data archival, and to wired and wireless data communication over computer networks and local connections, which may include data transfer over a data bus within a computing device (e.g., a smartphone, tablet computer, laptop computer, desktop computer) and / or a connection to an external device via a wired link such as a digital display device interface (e.g., DisplayPort (DP) or display serial interface (DSI)).
[0032] For ease of explanation, an embodiment of the present invention will be illustrated in the context of displaying digital display data, and in particular video content, on a display panel of a display device, however, the present invention is not limited thereto and the principles described herein can be applied to illustrate adjustable throughput entropy coders for use in other devices.
[0033] FIG. 1 is a block diagram of a system including an encoder and a decoder. The encoder encodes image content, and the decoder decodes the image content for display on a display device. As shown in FIG. 1, image content 10 (e.g., a single image or single / multiple frames of image) is provided to an application processor (AP) 100 of a host 1. The application processor 100 may be a central processing unit (CPU), a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), and / or a graphics processing unit (GPU) of a computing device, and may include an encoder 110. The encoder 110 encodes the original image content 10 into an encoded (or compressed) bitstream 30. The encoded (or compressed) bitstream 30 may be transferred via a wired or wireless connection. In one embodiment described herein, transfer via a wired connection is described, but the techniques may also be applied to examples including transfer via a wireless connection. In one embodiment shown in FIG. 1, the encoded (or compressed) bitstream 30 can be transferred via a physical medium / link 50 (e.g., a data bus, cable or other connector, or a wireless connection) to a display driver integrated circuit (DDIC) 200 of a display device 2 (e.g., an external monitor, a television, or an integrated display panel of a smartphone, tablet or laptop computer).The DDIC 200 includes a frame buffer 202 (e.g., a random access memory (RAM) such as dynamic random access memory (DRAM)) that receives and stores the encoded bitstream 30 arriving over the physical link 50, and a decoder 210 that decodes the encoded (or compressed) bitstream 30 from the frame buffer 202 into a decompressed / decoded representation 18. In the case of lossless coding, the decompressed representation 18 is identical (or substantially identical) to the original of the video content 10. In the case of lossy coding, the decompressed representation 18 is substantially similar (e.g., visually similar) to the original of the video content 10 such that the resulting data appears visually lossless. The DDIC 200 subsequently controls the display panel 20 to display the decoded representation 18 of the video content 10 by providing driving waveforms to the display panel 20 and adjusting the brightness of each pixel of the display panel 20 according to the decoded representation 18 of the video content 10.
[0034] DDIC 200 may include or be coupled to components that demodulate signals received via physical medium 50 (e.g., generate a digital copy of bitstream 30 from a voltage applied to physical medium 50). Similarly, application processor 100 may include or be coupled to components that modulate signals based on the encoded bitstream 30 applied to physical medium 50.
[0035] According to an embodiment of the present invention, the encoder and decoder may be referred to as an encoder circuit and a decoder circuit, respectively, and may be implemented using various types of processing circuits as would be understood by one skilled in the art, and the encoder circuit may be implemented using a different type of processing circuit than the decoder circuit. Examples of such processing circuits include a general purpose central processing unit (CPU), a graphics processing unit (GPU), a digital signal processor (DSP), a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), or a combination thereof (e.g., where different parts of an encoding or decoding process or pipeline are implemented using different types of processing circuits). In addition, one skilled in the art will understand that the various processing circuits may be parts of the same integrated circuit (e.g., parts of the same system on a chip or SoC) or parts of different integrated circuits connected via pins or lines on a printed circuit board.
[0036] In general, video data or video content can be represented by a bitmap, where every location of the bitmap corresponds to a pixel. Here, the term "pixel" is used to mean a picture element that includes multiple components (or channels). For example, in a red-green-blue (RGB) color space, the components include a red component (or red channel), a green component (or green channel), and a blue component (or blue channel). As another example, in a YCbCr color space, the components include a luma (Y) component, a chrominance blue (Cb) component, and a chrominance red (Cr) component. As another example, in a YCoCg color space, the components include a luma (Y) component, a chrominance green (Cg) component, and a chrominance orange (Co) component. However, an embodiment of the present invention is not limited to the embodiments illustrated herein. The value at each location of the bitmap indicates the level (e.g., gray level) of the component at that location. Thus, the video content or data can be considered to indicate the hue and brightness at each location in the image.
[0037] Here, each channel of the video content 10 is treated as independent. Those skilled in the art will appreciate that the term "sample" refers to a digital value associated with a component of a pixel of the video content 10 (e.g., a "sample" may be a scalar value), the term "block" refers to a collection of samples (e.g., samples corresponding to adjacent portions of the video content 10), and each block is divided into one or more sample "groups." Figure 2 shows a schematic diagram of a block 12 of a bird video (video content 10), where the block 12 is 8x2 dimensional (16 samples 14) divided into four groups (16A, 16B, 16C, 16D), each group (16A, 16B, 16C, 16D) containing four samples.
[0038] Blocks may be coded within the video content 10 using spatial prediction (e.g., a sample value may be coded based on a prediction obtained from neighboring samples in the video, i.e., pixels above and to the left). Instead of the original neighboring values, reconstructed values are used for the prediction. The difference between the predicted value and the actual value of a sample is called the quantized residual, and this quantized residual may be used to represent the sample in the coded version of the video content 10.
[0039] For each block, one of a number of different prediction coding modes may be used, and a particular prediction coding mode may be selected based on a test of which mode provides the lowest distortion given the rate control constraints, or in other words, the rate-distortion cost, where rate refers to the amount of data required for that block to be coded, and distortion refers to the quality loss after coding (e.g., the magnitude of the difference between the input block and the coded block (after decoding)). Such predictive coding modes may include "transform modes" and "transform-omitted-block prediction modes". Transform modes include a transform operation (e.g., to the frequency domain) that is more suitable for natural content. Transform-omitted-block prediction modes omit (or eliminate) the transform and perform a block prediction operation that may be used for artificial or illustrated graphics content. For each block, multiple modes (or choices) may be used for coding, and the encoder may select the optimal mode (or choice) for that block.
[0040] According to one embodiment of the present invention, when operating in transform mode, the encoder tests a set of intra predictors for each block (here represented as X) to determine which intra predictor provides the lowest rate-distortion cost. The selected intra prediction mode is explicitly signaled in the bitstream, so that the decoder only needs to parse the information and perform a single decoding operation. If the block (X) is in RGB color space, the data can be converted to YCoCg color space. In some cases, if the block (X) is in YCbCr color space, it continues in YCbCr color space without color space conversion.
[0041] According to one embodiment of the present invention, the encoder computes an intra prediction block (P) for the transform space from a given set of intra prediction modes. The output of the intra prediction is a residual block (R) which is the difference between the block (X) and the intra prediction block (P). Next, according to one embodiment of the present invention, a discrete cosine transform (DCT) is applied to the residual block (R) to generate a scale coefficient block (T). The scale coefficient block (T) is then quantized to generate a quantized scale coefficient block (QT). The quantized scale coefficient block (QT) is transmitted in the bitstream and embedded within the entropy coding group. Inverse quantization ( TIFF0007617748000001.tif15170) and the reverse conversion ( TIFF0007617748000002.tif17170) to obtain the residual block (R) and the reconstructed residual block ( TIFF0007617748000003.tif13170) (the decoder can perform the same inverse quantization and inverse transform operations). Calculate the rate-distortion cost information for each mode from the previous rate and distortion.
[0042] According to one embodiment of the present invention, when operating in transform skipped-block prediction (BP) mode, the current block is spatially predicted from a set of reconstructed neighboring samples (BP search range). Before prediction, the current block is partitioned into a set of sub-blocks (e.g., four 2x2 sub-blocks for an 8x2 block).
[0043] According to an embodiment of the present invention, each subblock is predicted from the BP search range using a 2×2 partition or a pair of 2×1 partitions. In the former case, the 2×2 subblock is represented by a single block prediction vector (BPV) that generates a 2×2 predicted block from the search range. If a pair of 2×1 partitions is selected, the subblock is represented by two different BPVs. The first BPV generates a 2×1 predicted block for the two top samples in the subblock, and the second BPV generates a 2×1 predicted block for the two bottom samples. The encoder performs a search to find a BPV that minimizes distortion for each 2×2 and 2×1 partition in the current block. The result is a set of BPVs for the two partition types and a predicted block (P). The residual is then calculated with R=XP. Since there are two options for partition type, two residual blocks are calculated, namely, a block associated with the 2×2 partition and a block associated with the 2×1 partition. The two residual blocks can then be processed (e.g., in parallel) as follows: First, we perform forward quantization on all residual samples and use the quantized residual (QR) to calculate the entropy coding cost for each 2 × 2 subblock. Second, we perform inverse quantization to obtain the reconstructed residual ( TIFF0007617748000004.tif11170), based on which the distortion for each subblock can be calculated. Third, for each 2x2 subblock, the encoder can select between 2x2 and 2x1 regions based on a rate / distortion tradeoff. The syntax for BP mode includes the entropy coded quantized residuals for the three color components in addition to the BPV set.
[0044] According to one embodiment of the present invention, a decoder receives a BP coded block containing a quantized residual from a bitstream. In particular, the decoder applies an entropy decoder to decode the quantized residual, and the BPV values and domain structure are directly parsed. The encoder and decoder are identical since the BP search range contains the causally available reconstructed samples. The domain structure and the BPV are used to generate a prediction block (P), and the quantized residual is inversely quantized to obtain the reconstructed residual ( TIFF0007617748000005.tif13170). Finally, we obtain the predicted block (P) and the reconstructed residual ( TIFF0007617748000006.tif12170) are added together to form a reconstruction block, which undergoes color space conversion if necessary. For RGB source content, BP is calculated in the YCoCg color space. If the source content is YCbCr, BP is naturally calculated in YCbCr.
[0045] When operating in transform mode, a further transform such as a discrete cosine transform (DCT) is applied to the residual, and the scale coefficients are represented by intrablock values. In other cases, such as transform omitted-block prediction mode, the transform is omitted and the residual itself is represented by intrablock values. The transform mode can be omitted if lossless compression is used. When lossy compression is applied, the scale coefficients or the residual are quantized (for transform mode or transform omitted mode respectively).
[0046] Common prefix entropy code (CPEC) is a technique for entropy coding a group of N samples (e.g., quantized scale factors or quantized residuals in the case of lossy compression) using one prefix and N suffixes. In CPEC, the prefix is coded using a variable length code (e.g., a unary code) that represents the number of bits used to code each of the N suffixes. Each of the N suffixes is coded using the same number of bits (e.g., using a fixed length code). Figure 3 is a schematic diagram of a CPEC structure for a group of N=4 samples. As shown in Figure 3, the CPEC structure 300 includes one prefix 302 and four suffixes (304A, 304B, 304C, 304D) (Suffix1, Suffix2, Suffix3, Suffix4).
[0047] The entropy decoder parses the prefixes of a CPEC coded group for one clock because the prefixes are of variable length, but by decoding the prefixes that represent the number of bits in each suffix, the N suffixes can be moved to another buffer to parse each sample without using more entropy decoder time, and the entropy decoder can jump forward in the frame buffer (e.g. only the number of decoded bits multiplied by N).
[0048] Additional information on entropy coding can be found, for example, in Jacobson, Natan, et al. "Anew display stream compression standard under development in VESA." Applications of Digital Image Processing XL. Vol. 10396. International Society forOptics and Photonics, 2017.
[0049] Entropy coders and common prefix entropy codes (CPEC) are used in several standards such as display stream compression (DSC). Figure 4 shows a schematic diagram of a 3x1 block, which is encoded using CPEC in the case of DSU-VLC (delta size unit-variable length coding) and used in DSC. As shown in Figure 4, a group of 3x1 (e.g., three adjacent samples s0, s1, s2 in one row) block size can be entropy coded into one prefix 402 (p0) and three suffixes (404A, 404B, 404C) (suffix0, suffix1, suffix2) using CPEC. Thus, one clock is required to parse the variable length prefix 402, but the three suffixes can be decoded without additional time consumption in the entropy decoder, thus obtaining a throughput of three samples per clock, since there is, for example, one variable length binary word (VLB) [in prefix 402] for every three samples (s0, s1, s2 denoted as suffix0, suffix1, suffix2, respectively).
[0050] As another example, VESA Display Compression-M (VDC-M) uses an 8x2 block size and divides each component of the block into four groups. In some modes, the 8x2 block is divided into uniform groups. FIG. 5A is a schematic diagram of an 8x2 block 510 divided into four uniformly sized groups (each group is a 2x2 portion of the block corresponding to four samples), represented as group0, group1, group2, and group3. The 16 samples of block 510 are represented as S0 through S15. As shown in FIG. 5A, each group is entropy coded using a CPEC with a corresponding variable length prefix and four suffixes to generate a corresponding entropy coding group (520, 521, 522, 523). In particular, group0 includes symbols representing samples (S0, S1, S8, S9) and is entropy coded using prefix (P0) as entropy coding group 520, group1 includes symbols representing samples (S2, S3, S10, S11) and is entropy coded using prefix (P1) as entropy coding group 521, group2 includes symbols representing samples (S4, S5, S12, S13) and is entropy coded using prefix (P2) as entropy coding group 522, and group3 includes symbols representing samples (S6, S7, S14, S15) and is entropy coded using prefix (P3) as entropy coding group 523. Figure 5A illustrates that the variable length prefixes can have different lengths (e.g., coding the number of bits used to code each suffix in each group) by illustrating the prefixes (P0, P1, P2, P3) using rectangles of different widths. Similarly, the suffixes of each group have different lengths depending on the value encoded in the prefix.
[0051] In another mode, the 8x2 block is divided into unequal groups. Figure 5B shows a schematic diagram of an 8x2 block 530 divided into four groups of unequal size, denoted as group0, group1, group2, and group3. The 16 samples in block 530 are denoted as S0-S15. In the arrangement shown in Figure 5B, group0 has a size of 1 sample, group1 has a size of 3 samples, group2 has a size of 5 samples, and group3 has a size of 7 samples. In particular, group 0 contains symbols representing samples (S0) and is entropy coded using prefix (P0) as entropy coding group 540, group 1 contains symbols representing samples (S1, S2, S8) and is entropy coded using prefix (P1) as entropy coding group 541, group 2 contains symbols representing samples (S3, S4, S9, S10, S11) and is entropy coded using prefix (P2) as entropy coding group 542, and group 3 contains symbols representing samples (S5, S6, S7, S12, S13, S14, S15) and is entropy coded using prefix (P3) as entropy coding group 543. Similar to Figure 5A, Figure 5B illustrates that the variable length prefixes can have different lengths (e.g., encoding the number of bits used to encode each suffix in each group) by using rectangles of different widths to represent the prefixes (P0, P1, P2, P3). Similarly, the suffixes in each group have different lengths depending on the value encoded in the prefix.
[0052] When using both uniform and non-uniform groups in VDC-M, CPEC is applied on a per group basis, so that an average throughput of 4 samples per clock can be obtained in VDC-M, since, for example, 4 clock cycles are used to decode the variable length prefixes of the 4 groups that together encode the 16 samples of a block in both cases (e.g., 16 / 4=4).
[0053] Different devices require different design requirements such as available bandwidth of the physical medium 50, video resolution of the video content 10, frame rate of the video content 10, decoder clock speed, power requirements or limitations, etc. (e.g., smaller mobile devices such as smartphones have more stringent power consumption requirements than larger mobile devices such as laptops, and than grid-connected devices such as TVs). For example, the DDIC 200 of the display device 2 is often much slower than the processor 100 and other components including the encoder 110, and may be made of older technology. When designing communication channels for various devices, a design tradeoff is made between throughput (TP) and compression efficiency (CE), with more throughput generally resulting in less compression efficiency and more compression generally resulting in less throughput. As mentioned above, DSC's DSU-VLC encoding uses one variable length code per three samples, resulting in a throughput of three samples per clock, and VDC-M encoding uses four variable length codes per block of 16 samples, resulting in a throughput of four samples per clock. While the methods used by DSC and VDC-M allow the system to achieve a particular throughput, they do not allow the encryption scheme to be adjusted to vary the throughput to meet specific device design requirements (e.g., compression efficiency requirements, decryption clock speed, power requirements).
[0054] Thus, one embodiment of the present invention relates to a system and method for an entropy coding method and / or protocol that can adjust the throughput of the entropy coding method by controlling the design parameters of the protocol. As discussed above, the throughput of a decoder is typically limited by the number of variable length codes that need to be parsed for each block of samples, expressed in samples per decoder clock. Thus, one embodiment of the present invention relates to controlling the throughput by setting the number of variable length codes used when encrypting (or encoding) a large number of samples (e.g., the number of variable length codes used to encrypt a block containing 16 samples).
[0055] More specifically, one embodiment of the present invention relates to a hybrid entropy coding method for encrypting each component of a block (e.g., red, green and blue components or luma and chroma components) by encrypting one or more samples of the block independently using a symbolic variable length code, grouping the remaining samples of the block, and encrypting the groups using CPEC, which assigns one variable length binary word per group. Examples of symbolic variable length codes (SVLC) include unary, Huffman, Exponential-Golomb encryption, Rice encryption, and concatenation of Exponential-Golomb and Rice codes. In the following description, a block is assumed to have N samples encrypted using SVLC and M samples encrypted using CPEC, where N and M are 0 or greater. One embodiment of the present invention relates to blocks where N and M are 1 or greater.
[0056] Thus, in a hybrid encryption method according to one embodiment of the present invention, the parameters N and M can control the total number of variable length binary words (VLBs) per component per block, and therefore allow for the design of controlled decoder throughput in samples per clock.
[0057] More specifically, the decoder throughput depends on the number of samples per component in a block and the total number of VLBs in that block. In this case, the decoder throughput is expressed by the following equation: TIFF0007617748000007.tif44167 where k ≠ 0.
[0058] The total number of variable length binary words (VLBs) per component in a block depends on the number of samples N encrypted using SVLC and the number of samples M encrypted using CPEC. Then, the total number of VLBs is given by the following formula: TIFF0007617748000008.tif13169
[0059] Figure 6 is a flow chart illustrating a method for calculating the number of samples M for a given target decoder throughput and the number of samples N to be encrypted using SVLC, in accordance with one embodiment of the present invention. In accordance with one embodiment of the present invention, the method illustrated in Figure 6 is performed using a suitable computing device. An example computing device is a computer system including a processor and a memory, where the memory stores a plurality of instructions, and the processor executes the instructions to perform the operations of the method illustrated in Figure 6 to output the calculated design parameters N and M.
[0060] In operation 610, a computer system according to an embodiment of the present invention calculates an upper bound on the number M of CPEC encryption groups. The number M of CPEC encryption groups is determined based on the estimated highest available value (TP max ), the highest estimated value varies depending on the available technology. Then, the number of CPEC encryption groups, M, is given by the following formula: TIFF0007617748000009.tif20157
[0061] For example, in some cases, TP per clock max = 4 samples shows a good trade-off between performance and complexity (or compression efficiency). Then, the number of CPEC encryption groups, M, is given by TIFF0007617748000010.tif19157
[0062] However, the embodiment of the present invention is max The TP is not limited to 4 samples per clock. For example, improvements in semiconductor technology and compression technology may lead to TPs higher than 4 samples per clock. max In some cases, the value represents a good tradeoff between performance and complexity.
[0063] In operation (630), the computing system receives an input target decoder throughput (TP targetCalculate the number of variable-length binary words (#VLBs) required to achieve the above. Here, #VLBs is given by the following formula: TIFF0007617748000011.tif19161
[0064] In operation 650, the computing system calculates the number N of SVLC encrypted values to achieve the decoder throughput based on the previously calculated number of VLBs (#VLBs) and the previously calculated value of M. In this case, #VLBs is expressed as follows: TIFF0007617748000012.tif24170
[0065] Therefore, the method described with reference to FIG. 6 presents a way to calculate the design parameters N and M based on the target decoder output.
[0066] For example, with a block size of 8x2 samples per component and TP max = 4, the M and N values can be calculated as follows:
[0067] For a target throughput of 2 samples per clock, according to step (610): According to TIFF0007617748000013.tif48160 step (630), According to TIFF0007617748000014.tif29160 steps (650), The file is TIFF0007617748000015.tif29164. For a target throughput of 3 samples per clock, according to step (610): According to TIFF0007617748000016.tif46160 step (630), According to TIFF0007617748000017.tif29161 step (650), For a target throughput of 4 samples per clock, according to step (610): According to TIFF0007617748000019.tif46160 step (630), According to TIFF0007617748000020.tif31160 steps (650), For a target throughput of 1 sample per clock, according to step (610): According to step (630), According to TIFF0007617748000024.tif32159 step(650), The file is TIFF0007617748000025.tif29164.
[0068] According to one embodiment of the present invention, a specific input target decoder throughput (TP target Instead of calculating parameters N and M to obtain a given compression efficiency, the computing system calculates parameters N and M according to a specific target compression efficiency. More specifically, compression efficiency can vary depending on 1) the compression ratio, 2) the throughput, and 3) the complexity of the codec (which varies with the throughput). For a given codec complexity (e.g., keeping the codec complexity constant), a higher compression ratio can perform as well as a lower compression ratio, higher throughput scheme only if it compromises the throughput. (For example, given two codecs A and B with roughly the same complexity and performance, codec A can operate with a 6:1 compression ratio and a throughput of 1 pixel per clock, while codec B can operate with a 4:1 compression ratio and a throughput of 4 pixels per clock.)
[0069] According to one embodiment of the present invention, such design parameters are selected during the design phase of the system and fixed for production of the final product, but embodiments of the present invention are not so limited, and according to one embodiment, the parameters N and M that control the number of SVLC samples and CPEC groups are dynamically set during use of the system in response to changing conditions (e.g., a changing communication environment that reduces throughput due to the need for additional error correction encryption).
[0070] According to one embodiment of the invention, the encoder 110 and / or the decoder 210 dynamically determine a target throughput or compression efficiency based on certain factors related to the communication environment in which at least one of the encoders 110 or decoders 210 (e.g., one of the encoders 110 or decoders 210 or both the encoders 110 and decoders 210) operates, and set the protocol parameters N and M accordingly (e.g., based on the factors, depending on the updated target decoder throughput). According to one embodiment of the invention, such factors include power (e.g., whether the device is connected to an external power source or is otherwise battery-connected), processor capabilities (e.g., throttling due to thermal conditions and / or power consumption settings), number of decoders operating in parallel, internal bandwidth, thermal or temperature conditions of the decoder circuitry, noise or interference in the physical medium 50 between the encoder and decoder, etc.
[0071] In order for the encoder 110 to configure or set the parameters N and M and determine the target throughput or compression efficiency based on such factors, one embodiment of the present invention illustrates a feedback scheme to the encoder 110. According to one embodiment of the present invention, this may be done in real time (e.g., during live streaming where the target is to change mid-stream) or when the encoder 110 first starts encoding for a particular decoder 210 (and the encoder can take into account the specifications of the decoder 210 and other factors and set the target using the specifications). Examples of feedback types include the clock speed of the decoder 210, the current temperature of the decoder 210, the power conditions of the system including the decoder 210 (e.g., battery level or external power conditions), the current state of the physical medium 50 over which the encoder 110 and decoder 210 communicate (e.g., wired or wireless connection, throughput of the physical medium 50 due to possible bandwidth or interference), etc. Feedback may be provided, for example, directly from the decoder side system 200 to the encoder side system 100 (e.g., via physical medium 50), or indirectly via a third system (e.g., a monitoring device that monitors the status, such as temperature and power status, of the decoder side system 200 and provides information indicative of the monitoring status of the encoder side system 100).
[0072] According to an embodiment of the present invention, the decoder 210 may also dynamically update the encoding parameters (M and N values) according to parameter changes made by the encoder 110 to perform the appropriate decoding scheme. According to an embodiment of the present invention, the encoder 110 may explicitly indicate the changes (when the changes occur or that the changes occur at time T) to the decoder 210, and such explicit indication may be provided in-band (e.g., in the bitstream 30 encoded as the encoded video content) or out of band (e.g., in a separate channel, such as a separate communication stream in parallel with the bitstream 30 encoded over the same physical medium 50 or another physical medium). According to an embodiment of the present invention, the decoder 210 may independently consider the same factors as the encoder 110 and perform the same analysis as the encoder 110 to predict how and when the encoder 110 will update the encoding parameters (e.g., M and N values).
[0073] FIG. 7 is a flow chart illustrating a method for encoding video content according to an embodiment of the present invention. According to an embodiment of the present invention, the operations described with reference to FIG. 7 are performed by the encoder 110 to generate an encoded bitstream 30 based on the provided video content 10. At step (710), each channel of the video content is divided into a number of blocks of adjacent samples (e.g., samples of regions of adjacent pixels). According to an embodiment of the present invention, the video content is converted to another color space, e.g., from RGB to YCoCg or YCbCr. At step (730), the encoder 110 performs prediction encoding / coding on each block, which may be, for example, transform mode encoding, transform omitted-block prediction mode encoding, etc. More specifically, at step (730), the predictive encoding may include predicting the values of each component (e.g., Y, Cb, Cr components) of the block based on sample values reconstructed from adjacent blocks (e.g., previous rows and / or previous columns of the video content) using a predictor. The encoder 110 then calculates a residual based on the difference between the predicted value and the actual value. According to an embodiment of the present invention, when a lossy coding scheme is used, the residual is quantized to generate a quantized residual block. As described above, different blocks of the same image content may have different types of predictive coding applied (e.g., some blocks may use a transform mode and other blocks of the same image may use a transform-less block prediction mode - according to an embodiment of the present invention, the encoder 110 applies a predictive coding mode to each block to generate a plurality of coded blocks corresponding to each mode, and the encoder 110 outputs a coded block having the lowest rate-distortion cost). In step (750), the encoder 110 divides each coded block into N single samples and M sample groups (e.g., the encoder 110 takes N samples from the block and divides the remaining samples into M groups, each of the M groups containing one or more samples, and each sample of the block appears only once among the N single samples and the M sample groups).For example, according to one embodiment of the present invention, the decoder 210 takes the first N samples of the block (e.g., samples S0 through S(N-1)) as N single samples, and groups the remaining samples into M sample groups.
[0074] In step 770, the encoder 110 applies entropy coding to the residual. In step 772, the encoder 110 encodes each of the N single samples using a symbol variable length code (SVLC), such as unary, Huffman, Exponential-Golomb coding, Rice coding, or a concatenation of Exponential-Golomb and Rice codes, to generate coded single samples. Similarly, in step 774, the encoder 110 encodes the M sample groups using a common prefix entropy code (CPEC) (or other code that encodes one or more samples using exactly one variable length prefix and one or more fixed length suffixes) to generate coded sample groups.
[0075] At step 790, the encoder 110 combines (or concatenates) the encoded single samples with the encoded sample groups to generate a data stream (eg, encoded bitstream 30).
[0076] FIG. 8 is a flow chart illustrating a method for decoding video content according to an embodiment of the present invention. According to an embodiment of the present invention, the operations described with reference to FIG. 8 are performed by the decoder 210 to generate the reconstructed video content 18 based on the received encoded bitstream 30. The particular predictive coding technique (e.g., block prediction-transform skip mode versus transform mode) varies from block to block depending on the technique selected by the encoder 110 (e.g., by minimizing the rate-distortion cost). Thus, according to an embodiment of the present invention, the encoder 110 generates an explicit indicator (e.g., a flag) of the predictive coding mode in the encoded bitstream 30, and according to an embodiment of the present invention, the decoder 210 automatically determines the predictive coding mode from the encoded bitstream 30. In step (806), the decoder 210 determines the predictive coding mode of a current block of the encoded bitstream 30, e.g., which of a plurality of different coding modes for that block is selected via a flag or other identifier in the encoded bitstream 30. In step (810), the decoder 210 splits the received coded bitstream into N single samples and M sample groups (e.g., the first N VLBs can be treated as N single samples and the remaining data can be parsed as CPEC coded groups). As mentioned above, to receive a single block, step (810) takes as many clock cycles as the number of variable length binary words (VLBs) used to encode the block, since each VLB takes one clock cycle to parse. However, if the VLBs act as a prefix for a group (e.g., a sample group), the fixed length suffix can be shifted to a different buffer for further processing without slowing down the decoder 210.
[0077] In step (830), the decoder 210 entropy decodes the residual. In step (832), the decoder 210 decodes each of the N single samples using an SVLC code (e.g., a unary code or a Huffman code) as previously described, and in step (834), decodes each of the M sample groups using CPEC. The number of samples in each of the M sample groups may be determined by the predictive coding mode for the block determined in step (806) (e.g., whether uniform groups are used when encoding the M sample groups, or whether non-uniform groups are used, as will be described in more detail below with reference to Figures 9A and 9B). In some cases, N is 0, and step (832) is omitted. The decoder 210 may subsequently combine (850) the N single samples and the samples of the M sample groups into a residual block and apply (870) the appropriate predictive coding (e.g., the appropriate inverse of the operations performed by the encoder 110) to reconstruct each component (e.g., Y, Cb, Cr components) of the block. In general, the reconstruction process may involve entropy decoding as the inverse of the encoding process described with reference to FIG. 7, dequantizing to produce a reconstructed residual, performing an inverse transform (if a transform mode was used for this block), calculating prediction samples based on neighboring samples (e.g., previously reconstructed neighboring blocks, such as blocks in a previous row and / or column of the video content), and adding the residual to the output of the predictor.
[0078] For an example of encoding a data block according to one embodiment of the present invention, an 8x2 block containing 16 samples and a target throughput of 2 samples per clock (TP target ) will be described in more detail below. However, embodiments of the present invention are not limited to the specific conditions presented below. For example, embodiments of the present invention may be applied to blocks of other sizes and / or dimensions, such as 3x1, 4x8, 8x8, etc., and may achieve other target throughputs (TPs), such as 3 samples per clock, by selecting the parameters N and M described with reference to FIG. target) values. Also, the samples can be encoded using 2's complement or sign-magnitude representation.
[0079] An example of the CPEC output for an entropy coded group of four samples with sample values {1,-2,-1,0} is given below. In this example, two's complement representation is used to generate the bits for the sample values of the entropy coded group. The number of bits required for reliable reconstruction of this group is two. In particular, in two's complement representation, [-2 n-1 , 2 n-1 n bits are needed to represent data in the range [-1]. Each sample value is represented by 2 bits in two's complement representation. Thus the prefix signals a value of 2. For a group of samples {1,-2,-1,0}, the bits output by the CPEC operation may be a prefix 110 (unary code 2) and 4 suffixes, where each sample is encoded using 2 bits, e.g. "01 10 11 00". The output of the CPEC operation in this example is an example and the actual output of the CPEC operation may vary depending on the actual implementation.
[0080] If we use sign-magnitude representation, we need n bits for each sample, and the absolute value (or magnitude) of all samples in a group is in [0,2 nThe data range is within the range of 0 to 100 [0, 1, 0, -1]. In the sign-magnitude representation, the sign bit is transmitted only for non-zero values. As an example, for an input group with sample values {1,-2,-1,0}, in the sign-magnitude representation, the output of the CPEC operation is the prefix 110 (unary code 2) followed by the suffix and at least the sign bit "1 0 0", and the absolute value of each sample is encoded using two bits, e.g. "01 10 01 00", with the sign bit "1 0 0" being 1 (for the first sample value 1) representing a positive symbol and 0 (for the second and third sample values -2,-1) representing a negative symbol. (Note that in this example the sign value for the symbol 0 is not transmitted.) According to another embodiment of the invention, 0 is used to represent a positive symbol and 1 is used to represent a negative symbol.
[0081] The partitioning of a block into M groups can be done in a uniform or non-uniform manner. In uniform partitioning, the number of samples (or fixed-length suffix) contained in each of the M groups is the same. In non-uniform partitioning, the number of samples varies from group to group (e.g., the number of samples in at least two of the M groups differs from each other). The choice between uniform or non-uniform partitioning is based on the predictive coding mode used to code the block. For example, blocks coded using transform modes are generally more suitable for non-uniform groups.
[0082] Figure 9A is a schematic diagram of encoding using uniform groups according to an embodiment of the present invention. In the embodiment shown in Figure 9A, block 910 represents an 8x2 rectangular sample taken from one component of an input image (e.g., taken from one component of video content 10). Uniform groups can be applied if block 910 is a prediction coded using a transform-omitted block prediction mode (e.g., where the symbols (S0-S15) of block 910 represent quantized residuals of video component samples rather than DCT-like scaled coefficients of a portion of the image).
[0083] In the embodiment shown in FIG. 9A, the encoding scheme was designed to provide a throughput of 2 samples per clock. Thus, according to the calculations described above in connection with FIG. 6, the N samples encoded using the symbol variable length code (SVLC) are 4, and the M sample groups are also 4. Each of the M sample groups includes one prefix and three suffixes. This results in a total of 8 (N+M=8) variable length binary words (VLBs) in the bitstream per block of 16 (N+M*3=16) samples, which provides a target throughput of 2 samples per clock (16 samples / 8 clocks). The N samples encoded using SVLC are represented in FIG. 9A as group0 920, and the M sample groups are represented as group1 921, group2 922, group3 923, and group4 924. The five groups shown in FIG. 9A are summarized in Table 1 below, along with the corresponding encoding method and total number of variable length binary words (VLBs) for each group.
[0084] [Table 1]
[0085] In the arrangement shown in FIG. 9A and Table 1, the bit representations (B0, B1, B8, B9) for samples (S0, S1, S8, S9) in group0 920 are decoded in order because the boundaries between symbols are not known or are ambiguous since each sample is coded as a VLB. The bit representations (B0, B1, B8, B9) for samples (S0, S1, S8, S9) are represented in FIG. 9A as rectangles of different widths, indicating that SVLC coded symbols have different lengths. In accordance with the example coding scheme shown in FIG. 9A, group0 920 represents samples (S0, S1, S8, S9). However, embodiments of the present invention are not limited in this respect, and SVLC coded sample groups may represent different samples of block 910.
[0086] FIG. 9A uses rectangles of different widths to represent the prefixes (P1, P2, P3, P4) to indicate that the variable length prefixes have different lengths (e.g., by encoding the number of bits used to encode each suffix in each group). Similarly, the suffixes in each group have lengths that vary depending on the value encoded by the prefix. The three suffixes in each of group1, group2, group3, and group4 may be parsed in parallel once the VLB prefix (P1, P2, P3, P4) has been parsed. According to the example encoding scheme shown in FIG. 9A, group1 921 represents exemplars (S2, S3, S10), group2 922 represents exemplars (S4, S11, S12), group3 923 represents exemplars (S5, S6, S13), and group4 924 represents exemplars (S7, S14, S15). However, one embodiment of the present invention is not so limited, and example groups may represent different examples of block 910 .
[0087] Figure 9B is a schematic diagram of coding using non-uniform groups according to an embodiment of the present invention. In the embodiment shown in Figure 9B, block 930 represents an 8x2 rectangular sample taken from one component of the input video (e.g., taken from one component of video content 10). Non-uniform groups can be applied if block 930 is prediction coded using a transform prediction mode (e.g., the block's samples (S0-S15) represent quantized coefficients of a discrete cosine transform (DCT) or similar transform of the block's quantized residual).
[0088] In the embodiment shown in FIG. 9B, the encoding scheme was designed to provide a throughput of 2 samples per clock. Thus, per the calculations described above in connection with FIG. 6, the N samples encoded using a symbolic variable length code (SVLC) are 4, and the M sample groups are also 4. The four samples encoded using SVLC are represented in FIG. 9B as group0 940, and the four sample groups are represented as group1 941, group2 942, group3 943, and group4 944. Each of the M sample groups includes one prefix and a variable number of suffixes. The number of suffixes can be set during encoding scheme design (e.g., by block size along with selection of parameters N and M based on target throughput). In the particular example of FIG. 9B, group1 941 includes one prefix (P1) and only one suffix, and group2 942 includes one prefix (P2) and only one suffix [e.g., group1 941 and group2 942 each include only one value.]. Group 3 943 contains one prefix (P3) and four suffixes, and group 4 944 contains one prefix (P4) and six suffixes. This results in a total of 16 (4+1+1+4+6=16) variable length binary words (VLBs) in a bitstream per block of 16 (N+M*3=16) samples, which provides a target throughput of 2 samples per clock (16 samples / 8 clocks). The five groups shown in Figure 9B are summarized in Table 2 below, along with the corresponding encoding method and total number of variable length binary words (VLBs) for each group.
[0089] [Table 2]
[0090] In the arrangement shown in FIG. 9B and Table 2, the bit representations (B0, B1, B2, B8) for samples (S0, S1, S2, S8) in group0 940 are decoded in order because the boundaries between symbols are not known or are ambiguous since each sample is coded as a VLB. The bit representations (B0, B1, B2, B8) for samples (S0, S1, S1, S8) are represented in FIG. 9B as rectangles of different widths, indicating that SVLC coded symbols have different lengths. In accordance with the example coding scheme shown in FIG. 9B, group0 940 represents samples (S0, S1, S2, S8). However, embodiments of the present invention are not limited in this respect, and SVLC coded sample groups may represent different samples of block 930.
[0091] Similar to FIG. 9A, FIG. 9B uses rectangles of different widths to represent the prefixes (P1, P2, P3, P4) to indicate that the variable length prefixes have different lengths (e.g., by encoding the number of bits used to encode each suffix in each group). Similarly, the suffixes in each group have lengths that vary depending on the value encoded by the prefix. The suffixes in group1, group2, group3, and group4 may be parsed in parallel once the VLB prefix (P1, P2, P3, P4) has been parsed. According to the example encoding scheme shown in FIG. 9B, group1 941 represents exemplar (S3), group2 942 represents exemplar (S4), group3 943 represents exemplar (S5, S9, S10, S11), and group4 944 represents exemplar (S6, S7, S12, S13, S14, S15). However, embodiments of the present invention are not so limited and example groups may represent different examples of block 930 .
[0092] According to one embodiment of the present invention, CPEC coding groups that contain only one sample are instead coded using SVLC. For example, referring to FIG. 9B, group1 and group2 each contain only one sample. Thus, rather than coding each of them with a corresponding variable length prefix (P1, P2) and suffix, the two samples can be coded directly using SVLC (see, for example, FIG. 9C, described below). One embodiment of the present invention relates to the manner in which the encoder 110 selects between coding a single sample using SVLC or a single-valued CPEC group. For example, the selection between SVLC and CPEC may depend on the sample distribution and the SVLC coding method. For example, assume the sample value is -1. Using CPEC coding and binary complement, the -1 value can be represented by a single bit having a value of 1. Thus, the prefix of a CPEC group specifying a suffix of length 1 is "10" and the suffix is 1 for a total of 3 bits as previously described. Alternatively, using SVLC and, for example, Huffman coding, -1 may be a very unlikely value in a given environment, so that a particular codebook for that environment may use more than 3 bits to represent a sample value of -1. Alternatively, a sample may be a highly probable value, so that it has a short representation in a Huffman code, but would require more bits to represent using binary complement CPEC. In this situation, SVLC may be a more efficient way to code the sample. Thus, according to one embodiment of the present invention, the encoder 110 dynamically selects which of the two methods to use to code a sample based on the efficiency of using the two different methods, SVLC and CPEC, and the encoder may include a selection in the bitstream. According to one embodiment of the present invention, the selection of SVLC or CPEC is determined as part of determining the predictive coding mode for the block in step 806 based on a flag included in the bitstream 30, and according to one embodiment of the present invention, the flag indicating whether SVLC or CPEC is used to code a single sample is located in another portion of the encoded bitstream 30, e.g., immediately preceding the M sample group.Table 3 below summarizes the modified version of the encoding of FIG. 9B according to the present embodiment.
[0093] [Table 3]
[0094] In addition, according to an embodiment of the present invention, the method of dividing a block into a plurality of non-uniform groups can also be applied when encoding a block using the transform skipped-block prediction mode. Figure 9C is a schematic diagram of encoding a transform skipped-block prediction encoded block using non-uniform groups according to an embodiment of the present invention. In the embodiment shown in Figure 9C, block 950 represents an 8x2 rectangular sample taken from one component of an input image (e.g., taken from one component of video content 10). Non-uniform groups can also be applied when block 950 is a prediction encoded using the transform skipped-block prediction mode.
[0095] In the embodiment shown in FIG. 9C, the encoding scheme was designed to provide a throughput of 2 samples per clock. Thus, per the calculations previously described in connection with FIG. 6, the N samples encoded using a symbol variable length code (SVLC) are 4, and the M sample groups are also 4. The four samples encoded using SVLC are represented in FIG. 9C as group0 960, and the four sample groups are represented as group1 961, group2 962, group3 963, and group4 964. Each of the M sample groups includes one prefix and a variable number of suffixes. The number of suffixes can be set during encoding scheme design (e.g., by block size along with selection of parameters N and M based on target throughput). In the particular example of FIG. 9C, group1 961 includes one prefix (P1) and only one suffix, and group2 962 includes one prefix (P2) and only one suffix [e.g., group1 961 and group2 962 each include only one value.]. Therefore, as previously discussed and shown in Figure 9C, in one embodiment of the present invention, these samples are encoded using SVLC instead of CPEC. Group3 963 contains one prefix (P3) and five suffixes, and group4 964 contains one prefix (P4) and five suffixes. This results in a total of 16 (4+1+1+5+5=16) variable length binary words (VLBs) in the bitstream per block of 16 (N+M*3=16) samples, which provides a target throughput of 2 samples per clock (16 samples / 8 clocks). The five groups shown in Figure 9C are summarized in Table 4 below, along with the corresponding encoding method and total number of variable length binary words (VLBs) for each group.
[0096] [Table 4]
[0097] In the arrangement shown in FIG. 9C and Table 4, the bit representations (B0, B1, B8, B9) for samples (S0, S1, S8, S9) in group0 960 are decoded in order because the boundaries between symbols are not known or are ambiguous since each sample is coded as a VLB. The bit representations (B0, B1, B8, B9) for samples (S0, S1, S8, S9) are represented in FIG. 9C as rectangles of different widths, indicating that the SVLC coded symbols have different lengths. In accordance with the example coding scheme shown in FIG. 9C, group0 960 represents samples (S0, S1, S8, S9). However, an embodiment of the present invention is not limited in this respect, and the SVLC coded sample groups may represent different samples of block 950.
[0098] FIG. 9C uses rectangles of different widths to represent the prefixes (P1, P2, P3, P4) to indicate that the variable length prefixes have different lengths (e.g., by encoding the number of bits used to encode each suffix in each group). Similarly, the suffixes in each group have lengths that vary depending on the value encoded by the prefix. The suffixes in group1, group2, group3, and group4 may be parsed in parallel once the VLB prefix (P1, P2, P3, P4) has been parsed. According to the example encoding scheme shown in FIG. 9C, group1 961 represents a sample (S2), group2 962 represents a sample (S10), group3 963 represents a sample (S3, S11, S4, S12, S5), and group4 964 represents a sample (S7, S12, S13, S14, S15). However, embodiments of the present invention are not limited in this respect, and the sample groups may represent different samples of the block 950. The groups are selected as adjacent groups because Figure 9C illustrates a block that is coded using the transform omitted-block prediction mode.
[0099] According to one embodiment of the invention, an omission flag is used to signal when all sample values within a group or component are 0. According to one embodiment of the invention, a component omission flag is used when all samples within a component of a block (e.g., the chrominance orange component or the chrominance green component in YCoCg or YCbCr color spaces - this is because it is rare for the luma component Y to be all 0) are 0.
[0100] According to one embodiment of the present invention, the group skip flag is used when all samples in a block are zero. According to one embodiment of the present invention, the SVLC coded samples may be partitioned into one or more groups and the group skip flag may be applied to all samples within a group of SVLC coded samples. According to one embodiment of the present invention, the group skip flag is applied to the CPEC coded group. According to one embodiment of the present invention, the group skip flag is applied only to the CPEC coded group and not to other groups such as the SVLC coded group. All zero groups usually occur when using transform modes for block coding because, for example, blocks with low spatial frequencies have many coefficients that are zero.
[0101] One embodiment of the present invention relates to adjusting the coding sequence to accommodate different sampling formats. For example, in a 4:2:2 chroma format, a chroma block (e.g., Cb and Cr components in a YCbCr format) contains only half the samples of the luma (Y) component due to horizontal subsampling. As another example, in a 4:2:0 chroma format, a chroma block contains only ¼ the samples of the luma (Y) component due to horizontal and vertical subsampling.
[0102] Thus, one embodiment of the present invention is directed to maintaining the same amount of decoding work for 4:2:2 and 4:2:0 chroma formats. According to one embodiment of the present invention, a total of M groups and N single values are calculated such that the total number of VLBs for a chroma format is not greater than half (for 4:2:2 chroma format) or ¼ (for 4:2:0 format) of the total number of VLBs for the luma components. For example, referring to the previous discussion in relation to an 8×2 block size for a total of 16 samples, for 4:2:2 content, the number of luma samples is 16 and the number of chroma samples is 8, so that the upper limit of M encoded using CPEC in a bitstream for 4:2:2 is 4 (16 / 4=4) for luma blocks and 2 (8 / 4=2) for chroma blocks. For 4:2:0 content, the number of luma samples is 16 and the number of chroma samples is 4, so the upper limit of M in the bitstream for 4:2:0 is 4 for the luma blocks (16 / 4=4) and 1 for the chroma blocks (4 / 4=1).
[0103] Thus, one embodiment of the present invention relates to a system and method for performing an encoding method that allows for adjustable throughput of an encoding protocol measured in symbols per decoder clock. One embodiment of the present invention relates to a method that allows for the throughput to be adjusted by modifying the variable length binary words (VLBs) used for a given block in the encoded bitstream. More specifically, assume that a decoder requires one full clock cycle to parse one VLB, and therefore achieves a target throughput by dividing the number of samples per clock by the target throughput to arrive at a target number of VLBs per clock. The target number of VLBs can be controlled by encoding some samples using symbol variable length codes (SVLCs) and some samples using codes that share a single variable length code with many samples that are encoded using fixed length codes (e.g., common prefix entropy codes or CPECs). Thus, one embodiment of the present invention allows for a protocol or class of protocols that can be adjusted to meet the target throughput of a particular device, allowing for greater design flexibility when trading off throughput and compression efficiency.
[0104] Although one embodiment of the present invention has been illustrated and described with reference to the drawings, the present invention is not limited to the above-described embodiment, but includes various modifications and equivalent arrangements that fall within the spirit and scope of the appended claims, and their equivalents.
Claims
1. 1. A method for decoding video content from an encoded bitstream comprising a plurality of blocks, the method comprising: dividing, by decoder circuitry, a block comprising one or more components of said video content into N single samples and M sample groups corresponding to one of said one or more components, where N is greater than or equal to 1 and M is greater than or equal to 1; decoding, by the decoder circuitry, the N single samples using a symbol variable length code (SVLC) to generate one or more decoded single samples; decoding, by the decoder circuit, each of the M sample groups using a common prefix entropy code (CPEC) to generate one or more decoded sample groups; combining, by said decoder circuitry, said decoded single samples and said decoded sample groups into residual blocks; and reconstructing, by the decoder circuitry, the video content based on previously reconstructed neighboring blocks of the video content and the residual block. Including, Each of the M sample groups includes a variable length prefix and one or more fixed length suffixes representing a plurality of samples. A method for decoding video content.
2. Calculating an upper bound for M based on the number of samples in the block and a maximum possible throughput; Calculating a number of variable length codes based on the number of samples in the block and a target decoder throughput; Calculating N based on the number of variable length codes and the upper limit of M, 2. The video content decoding method according to claim 1, wherein said N and M are set according to said target decoder throughput.
3. 2. The method of claim 1, wherein each of the M sample groups of the block has the same number of fixed-length suffixes.
4. The method of claim 3, wherein the blocks are predictively coded in a transform omitted-block prediction mode.
5. 2. The method of claim 1, wherein at least two of the M sample groups of the block have different numbers of fixed-length suffixes.
6. The method of claim 5, wherein the blocks are predictively coded in a transform mode or a transform-omitted block prediction mode.
7. The method of claim 1 , wherein the block comprises multiple components of the video content.
8. The method of claim 1 , wherein the encoded bitstream further includes a component omitted flag indicating that all of the samples of one corresponding component of the block of the encoded bitstream are zero.
9. 2. The method of claim 1, wherein the encoded bitstream further comprises a group omitted flag indicating that the samples in one of the M sample groups are all zero.
10. dividing the received video content into one or more blocks by an encoder circuit, each of the one or more blocks including a plurality of samples from one or more components of the video content; predictively encoding, by said encoder circuitry, each said block to generate a residual block; partitioning, by said encoder circuitry, each of said residual blocks into N single samples and M sample groups, where N is greater than or equal to 1 and M is greater than or equal to 1; encoding, by the encoder circuit, each of the N single samples using a symbol variable length code (SVLC) to generate one or more SVLC-coded samples; encoding, by the encoder circuitry, each of the M sample groups using a common prefix entropy code (CPEC) to generate one or more CPEC-encoded samples; and combining said SVLC coded samples and said CPEC coded samples by said encoder circuit to output an encoded bitstream. Including, Each of the M sample groups includes one variable length prefix and one or more fixed length suffixes. A video content encoding method.
11. calculating an upper bound for M based on the number of samples per one or more blocks and a maximum possible throughput; Calculating the number of variable length codes based on the number of samples per block and the target decoder throughput; By calculating N based on the number of variable length codes and the upper limit of M The video content encoding method according to claim 10, wherein the N and M are set according to the target decoder throughput.
12. 11. The video content encoding method of claim 10, wherein the partitioning of each of the predictively encoded blocks comprises partitioning at least one of the predictively encoded blocks using a uniform partition, and each of the M sample groups of the at least one predictively encoded block has the same number of fixed-length suffixes.
13. The method of claim 12, wherein the at least one predictively coded block is predictively coded in a transform-omitted block prediction mode.
14. 11. The method of claim 10, wherein the partitioning of each of the predictively coded blocks comprises partitioning at least one of the predictively coded blocks into non-uniform partitions, and at least two of the M sample groups of the at least one predictively coded block have different numbers of fixed-length suffixes.
15. The method of claim 14, wherein the at least one predictively coded block is predictively coded in a transform mode or a transform-omitted-block prediction mode.
16. 15. The method of claim 14, wherein each said block comprises multiple components of the video content.
17. The method of claim 10 , wherein the encoded bitstream further comprises a component omitted flag indicating that all of the samples of at least one corresponding channel of the block are zero.
18. 11. The method of claim 10, wherein the encoded bitstream further comprises a group omitted flag indicating that the samples in one of the M sample groups are all zero.
19. an encoder circuit; and Decoder Circuit Including, The encoder circuit includes: dividing received video content comprising a plurality of components into one or more blocks, each of said one or more blocks comprising a plurality of samples from one of said plurality of components; predictively encoding each of the blocks to generate a predictively encoded block; partitioning each of the predictively coded blocks into N single samples and M sample groups, where N is equal to or greater than 1 and M is equal to or greater than 1; encoding each of the N single samples using a symbol variable length code (SVLC) to generate one or more SVLC-coded samples; encoding each of the M sample groups using a common prefix entropy code (CPEC) to generate one or more CPEC-encoded samples; combining the SVLC coded samples and the CPEC coded samples to output a coded bitstream; The decoder circuit includes: receiving the encoded bitstream from the encoder circuit; Dividing a block of the encoded bitstream into the N single samples and the M sample groups; decoding the N single samples using a symbolic variable length code to generate one or more decoded single samples; decode each of the M sample groups using a common prefix entropy code to generate one or more decoded sample groups; reconstructing the predictively coded block from the decoded single samples and the decoded groups of samples; applying predictive coding to decode the predictively coded block; reconstructing the video content from the predictively coded blocks; Each of the M sample groups includes a variable length prefix and one or more fixed length suffixes representing a number of samples. Video content transfer system.
20. Calculating an upper bound for M based on the number of samples in the block and a maximum possible throughput; Calculating a number of variable length codes based on the number of samples in the block and a target decoder throughput; By calculating N based on the number of variable length codes and the upper limit of M 20. The video content transfer system of claim 19, wherein said N and M are set according to said target decoder throughput.
21. The encoder circuit includes: sensing one or more factors of a communications environment in which at least one of the encoder circuitry or the decoder circuitry operates; 21. The video content transfer system of claim 20, further comprising: updating the values of N and M based on the one or more factors.
22. The one or more factors include 22. The video content transfer system of claim 21, comprising one or more of a number of decoders operating in parallel in the decoder circuit, an internal bandwidth, a temperature condition of the decoder circuit, and noise in a physical medium between the encoder circuit and the decoder circuit.
Citation Information
Patent Citations
Apparatus and method for vector-based entropy coding for display stream compression
JP2019511865A
Substream multiplexing for display stream compression
US20180343471A1