WO2021216361A1 - Techniques de compression avec pertes - Google Patents
Techniques de compression avec pertes Download PDFInfo
- Publication number
- WO2021216361A1 WO2021216361A1 PCT/US2021/027623 US2021027623W WO2021216361A1 WO 2021216361 A1 WO2021216361 A1 WO 2021216361A1 US 2021027623 W US2021027623 W US 2021027623W WO 2021216361 A1 WO2021216361 A1 WO 2021216361A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- bits
- component
- pixels
- compression
- block
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3059—Digital compression and data reduction techniques where the original information is represented by a subset or similar information, e.g. lossy compression
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3082—Vector coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/124—Quantisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
Definitions
- This disclosure relates to data compression circuitry.
- Computing devices may compress various types of data, e.g., to reduce memory footprint or bandwidth. Compression may be particularly useful for multi-media data such as pixels processed by a graphics processor. Some compression is lossy such that decompressed data may not match the image before compression. Lossless compression, on the other hand, provides the original data after decompression. Different lossless compression techniques may have different characteristics, e.g., compute resources such as area or power required for compression, compression speed, compression ratios, etc. Similarly, different lossy compression techniques may have different characteristics, including accuracy of data after decompression (some lossy techniques may cause more loss than others). The quality of a compression implementation may have substantial effects on performance, power consumption, or circuit area.
- FIG. 1A is a block diagram illustrating example compression circuitry, according to some embodiments.
- Fig. IB is a block diagram illustrating example lossless and lossy compression circuitry, according to some embodiments.
- Fig. 2A is a block diagram illustrating an example block of pixels that includes four regions, according to some embodiments.
- Fig. 2B is a block diagram illustrating example neighbor relationships for a block of pixels for a neighbor predictor, according to some embodiments.
- FIG. 3 is a flow diagram illustrating an example method for selecting a lossless compression technique, according to some embodiments.
- FIG. 4 is a block diagram illustrating example formatting of a lossless compressed block of pixels, according to some embodiments.
- Fig. 5 is a flow diagram illustrating an example method for lossy compression, according to some embodiments.
- Fig. 6 is a block diagram illustrating example formatting of a region of a lossy compressed block of pixels, according to some embodiments.
- Fig. 7 is a flow diagram illustrating an example method for lossless compression, according to some embodiments.
- Fig. 8 is a flow diagram illustrating an example method for lossy compression, according to some embodiments.
- FIG. 9 is a block diagram illustrating an example computer system, according to some embodiments.
- FIG. 10 a block diagram illustrating an example computer-readable medium that stores circuit design information, according to some embodiments.
- this formulation is used to indicate that this structure is arranged to perform the one or more tasks during operation.
- a structure can be said to be “configured to” perform some task even if the structure is not currently being operated.
- a “compression circuit configured to compress a block of pixel data” is intended to cover, for example, a circuit that performs this function during operation, even if the circuit in question is not currently being used (e.g., power is not connected to it).
- an entity described or recited as “configured to” perform some task refers to something physical, such as a device, circuit, memory storing program instructions executable to implement the task, etc. This phrase is not used herein to refer to something intangible.
- the term “based on” is used to describe one or more factors that affect a determination. This term does not foreclose the possibility that additional factors may affect the determination. That is, a determination may be solely based on specified factors or based on the specified factors as well as other, unspecified factors.
- a determination may be solely based on specified factors or based on the specified factors as well as other, unspecified factors.
- first,” “second,” “third,” etc. do not necessarily imply an ordering (e.g., temporal) between elements.
- a referring to a “first” graphics operation and a “second” graphics operation does not imply an ordering of the graphics operation, absent additional language constraining the temporal relationship between these operations.
- references such as “first,” “second,” etc. are used as labels for ease of reference in the description and the appended claims.
- This disclosure discusses embodiments of techniques for both lossless and lossy compression.
- a processor operates in a mode in which lossy compression is used for a given block of pixels only if it is determined that lossless compression cannot meet a target output data size.
- compression operates on blocks of pixel data, but these examples are not intended to limit the scope of the present disclosure. Rather, the disclosed techniques may be implemented to compress various types of input data.
- Fig. 1A is a block diagram illustrating example compression circuitry 110.
- the input data may include values for a block of pixels to be compressed (and each pixel may include values for multiple components or channels).
- the compressed data may include data representing pixels after compression, header information that indicates the type of compression used, and metadata that describes the size of the compressed block, for example.
- Fig. IB is a block diagram illustrating example lossless compression circuitry 120 and lossy compression circuitry 130, according to some embodiments.
- lossy compression circuitry 130 is not configured to compress the input data unless lossless compression circuitry 120 determines it cannot achieve a target compressed size.
- lossless and lossy compression may proceed at least partially in parallel.
- disclosed embodiments support both lossless and lossy compression, the disclosed techniques may also be used independently.
- a processor may support the disclosed lossy compression techniques but not the disclosed lossless compression techniques, or vice versa.
- disclosed techniques leverage the fact that the compression circuitry considers both lossless and lossy compression for a given block of pixels.
- Fig. 2A is a block diagram illustrating an example block of pixels, according to some embodiments.
- Each pixel may have multiple corresponding data fields, e.g., components that may be used for R, G, B, A channels, or other uses.
- compression of the block of pixels may operate on multiple components for each valid pixel.
- the block includes MxN pixels where M and N are integers that may be the same or different.
- the block may be 4x4, 4x8, 8x4, 8x8, 8x16, etc.
- the block is divided into four regions by the heavier lines of Fig. 2A.
- a block may be sub-divided into various appropriate numbers of regions that each include multiple pixels, in some embodiments.
- the device determines different lossless compression predictors in order to select a lossless compression technique, e.g., that results in the greatest compression ratio among available techniques.
- Different predictors may use different base pixels, e.g., to encode pixels based on their delta values relative to the base.
- disclosed techniques may utilize origin, gradient, and neighbor predictors.
- the base and gradient predictors use pixel (0,0) as a base pixel while the neighbor predictor uses a different neighbor base (NB) pixel.
- the NB pixel is located near the center of the block.
- one or more predictors may dynamically determine their base location for a given block of pixels, although this may increase complexity and power consumption.
- an origin predictor represents each pixel component as a delta value relative to the same component of a base pixel (e.g., pixel (0,0)).
- an origin-with-decorrelation predictor may operate similarly to the origin predictor but may first subtract out values of one component (e.g., the green component) from the other corresponding components which may reduce correlation among components and may positively affect compression ratios.
- a gradient predictor represents each pixel component as a delta value relative to the same component of a base pixel plus a gradient value.
- a neighbor predictor represents each pixel component as a delta value relative to the same component of a neighbor pixel.
- a neighbor- with-decorrelation predictor may be similar to a neighbor predictor, but with one component subtracted.
- Fig. 2B shows an example pattern for a neighbor predictor, according to some embodiments.
- the arrow from each pixel indicates the neighbor pixel based on which its delta is computed.
- the pattern includes a base pixel which is not represented using a delta and which may be located at various locations in different embodiments.
- the illustrated pattern is included for purposes of explanation, but is not intended to limit the scope of the present disclosure; various patterns for encoding relationships between pixels may be implemented for various predictors.
- a computing system computes multiple lossless predictors for different compression techniques, at least partially in parallel, to determine the performance of multiple different compression techniques on an input block of pixel data. For example, consider a situation where an origin predictor has a pixel with a greatest delta from the origin value of seven while a neighbor predictor has a pixel with a greatest delta of three. In an implementation with unsigned deltas t, the origin predictor needs three bits to represent each pixel in compressed form while the neighbor predictor only needs two bits to represent each pixel in compressed form.
- the overall best predictor may further be influenced by additional considerations such as header size needed, whether use of a bias affects delta size, whether pixels in different regions of the block can be represented using different numbers of bits, etc., as discussed in further detail below.
- the system may select the compression technique that provides the smallest compression size (e.g., header metadata plus bits needed to represent all the pixels in the block).
- Fig. 3 is a flow diagram illustrating an example technique for lossless compression of a block of pixels, according to some embodiments.
- the method shown in Fig. 3 may be used in conjunction with any of the computer circuitry, systems, devices, elements, or components disclosed herein, among others.
- some of the method elements shown may be performed concurrently, in a different order than shown, or may be omitted. Additional method elements may also be performed as desired.
- a computing system determines a delta for each component of each pixel, using multiple predictors.
- Example predictors include an origin predictor, an origin-with-decorrelation predictor, a gradient predictor, a neighbor predictor, and a neighbor-with-decorrelation predictor.
- delta origin pixel(x, y).c - pixel(0, 0).c where pixel (0,0) is the base pixel for the origin predictor.
- delta origin de correlate wrap to range (pixel(x, y).c - pixel(x, y). green) - wrap to range(pixel(0, 0).c - pixel(0, 0). green) where decorrelation is performed by subtracting the green component.
- delta gradient pixel(x, y).c - ( pixel(0, 0).c + dcdx*x + dcdy*y ) where pixel (0,0) is the base pixel for the gradient predictor.
- delta neighbor pixel(x, y).c - pixel(nx, ny).c where pixel (nx,ny) is the neighbor pixel for pixel (x,y) according to a neighbor pattern.
- delta neighbor decorrelate wrap to range (pixel(x, y).c pixel(x, y). green) wrap to range (pixel(nx, ny).c - pixel(nx, ny). green)
- the system determines, for the entire block, the greatest number of bits needed to represent a delta for each pixel component for each predictor.
- the system may encode deltas as signed values with a bit width equal to the component width.
- bits c max( signed num bits(max delta c), signed num bits(min delta c) ) where signed num bits is a function that determines the number of bits needed to contain a 2’s compliment encoding of the input, max delta c is the greatest delta value for the component and min delta c is the smallest delta value for the component.
- the system is configured to determine the number of bits needed to pack all the deltas in the block for each component.
- the system also determines, for each sub- region of the block (e.g., each of the four regions shown in Fig. 2A), a greatest number of bits needed to represent a delta for each pixel component for each predictor.
- the system is configured to determine the number of bits needed to pack all the deltas in the each sub-region of the block for each component. In some embodiments, this may allow different regions to use different numbers of bits for deltas, when it will improve the overall compression ratio.
- the system determines if a bias will reduce bits c (e.g., by one) for the block. In some embodiments, this determination is performed for each component and each predictor but is not performed separately for each region.
- the system determines potential reductions in bit widths to represent deltas if using different numbers of bits for deltas in different regions.
- the reduction_c[] for each region is encoded in the header for compressed data, if any region has a non-zero reduction.
- the system selects one or more predictors for use in compressing the block of pixels.
- the system determines which predictor gives the best compression by calculating the variable size in bits.
- the system may then, for each predictor, determine the cost of the header, which may vary based on whether the predictor uses regions or bias. Further, some types of predictors such as gradients may incur additional header overhead to represent the gradient.
- region code size bits represents the number of bits needed to specify the size of deltas for a region
- region nonzero is defined as true if any region reduction code (reduction_c[0 .. N-l] above) is non-zero
- predictor c.bias indicates whether a predictor used bias.
- the system selects the predictor with the smaller size for each component.
- compressing the block of pixels may use different compression techniques for different components.
- the disclosed computations may be performed separately for different components.
- lossy compression may share bits between components in certain situations.
- the system compresses the block based on the selection. This may include storing delta values for each component of each pixel using the determined parameters.
- the system generates a layout for a header for the block and packs the header.
- the header may indicate the selected predictor, the number of bits per delta, region information, bias information, etc. Detailed example embodiments of a header are discussed below with reference to Fig. 4.
- the system generates metadata for the block.
- the metadata indicates the size of the compressed block.
- the metadata may be the same size for both lossy and lossless formats, e.g., one byte.
- the metadata may indicate whether a block is uncompressed or compressed.
- the metadata may indicate whether the block is lossy or lossless.
- the block may be described as constant.
- the metadata may be set according to a table lookup in this scenario for different compression container formats. If the block is not constant, then the block may be padded and the metadata may describe the block size.
- the metadata when all bits of the metadata are not needed to describe the block size, the metadata may include a portion of the mode bits for a component (e.g., component 0) from the header (which may further reduce the size of the compressed block).
- a value of a value of 4’blll for metadata[7:4] indicates lossy compression. In some embodiments, this value will never occur in the metadata when the size of a lossless compressed block is less than or equal to a target size. This fact may be used by a lossy compression technique, in some embodiments, to avoid explicitly encoding the size of the compressed block in the metadata. Rather, if the metadata indicates lossy compression, this implies that the compressed block has a target block size for the lossy compression.
- the system packs the block. This may include aligning the header and region information as shown in Fig. 4 below. The deltas for each region may be packed in twiddle order. If part of the header is included in the metadata for the block, the system removes that information from the header and the size of the header is reduced. For uncompressed blocks, the system may arrange the pixels in a pre-determined order without a header. In some embodiments, multiple compressed blocks may be packed together into a macro-block for a write to memory, for example.
- the disclosed techniques may advantageously provide improved lossless compression ratios and improved compression speed, relative to traditional techniques.
- enabling different deltas widths for different regions may provide good compression in regions where one region has a very large maximum delta with a reasonable amount of header information to encode the reductions for the different regions.
- Fig. 4 is a diagram illustrating an example compressed block of pixels with a header, according to some embodiments.
- the compressed block includes header 410 and region fields that specify pixel data for N regions.
- Header 410 in the illustrated embodiment, includes a mode field, a bits, field, and a base field. Header 410 may also optionally include a region field, a bias field, or a gradient field (shown using dashed lines) depending on the compression parameters used to compress the block. In some embodiments, the system generates a separate header for each component for the block of pixels. In other embodiments, a single header is used for the block and the header includes separate instances of fields for different components.
- the mode field in some embodiments, describes how the component is compressed. In some embodiments, this field indicates the selected predictor (e.g., neighbor, gradient, or origin), whether different numbers of bits per delta in different regions is enabled, whether bias is enabled, and whether decorrelation is used. For some formats that do not support decorrelation, the system may omit a decorrelation bit to reduce the size of the mode field.
- the selected predictor e.g., neighbor, gradient, or origin
- the bits field indicates the delta bit width for the block.
- the system may encode the bits field as delta bits c - 1 for each component.
- the size of the bits field may be log2(component_width).
- a delta bit width of 1 represents values from -1 to 0, a width of 2 represents values from -2 to 1, a width of 3 represents values from -4 to 3, and so on. Note that the bit widths for one or more regions may be reduced from the bit width indicated by the bits field, as discussed below.
- the base field indicates the base value used for the selected predictor.
- the size of the base field may correspond to the component width. If decorrelation is enabled, this field indicates the decorrelated base value.
- the region field in some embodiments, describes the reduction for each region in the block. Note that this field may be included only if the mode field indicates that regions are enabled, in some embodiments. In some embodiments, this field includes a sub-field for each region that indicates that field’s reduction relative to the bit width for the block. For example, if the bit width is eight and region R3’s reduction is three, then the bit width for deltas in region R3 is five.
- the bias field indicates the bias value to be subtracted from deltas during compression. Note that this field may be included only if the mode field indicates that bias is enabled, in some embodiments. In some embodiments, the size of this field is delta bits c. [0051]
- the gradient field indicates the gradients dcdx and dcdy. The size of this field may be the component width & ⁇ 1. Note that this field may be included only if the mode field indicates that the gradient predictor was selected, in some embodiments.
- each region includes deltas for the pixels in that region.
- the device may locate the start of each region based on header 410
- region 0 includes the base pixel, (either pixel 0 or pixel M-l in the illustrated embodiment), where M is the number of pixels per region.
- the potential base pixel that is not actually used as the base is always located at the last location in the region, which may simplify decoding.
- the region that includes the base pixel may include one less delta than the other regions.
- the pixels in the other regions e.g., region N-l
- decompression circuitry is configured to decompress a compressed block of pixels by un-doing various compression actions. For example, decompression circuitry may first determine the location of a block of pixels, e.g., based on the metadata for blocks in a larger data set that includes multiple compressed blocks. The decompression circuitry then decodes metadata for the block. If the metadata indicates a constant block, the device may copy constant data to each pixel if the sub-block includes a constant color. If the metadata indicates an uncompressed blocks, the decompression circuitry may simply unpack pixel data into an expected format.
- the decompression circuitry then unpacks the header to determine the size of the variable fields and the start of the packed deltas.
- the device then unpacks the deltas using the bit widths specified by the header.
- For origin and gradient modes they system decompresses each component directly using the header by adding the deltas to the base value.
- the device may initially decode interior components, followed by neighboring components. The system reverses decorrelation, if applied during compression. In some embodiments, this decompression procedure provides the original pixel data without loss.
- the computing system falls back to a lossy compression technique after a lossless technique such as the technique of Fig. 3 is determined not to meet a target compressed block size.
- the target block size may be programmable or may vary based on processing mode.
- the computing system may perform lossy compression without first determining the output size for lossless compression.
- the disclosed lossy technique separately considers different regions of a block of pixels being compressed. Further, the system may determine whether to share bits across components after selecting an initial quantization, adjust bit widths used for bases and deltas, and handle certain error conditions or fallback modes.
- Fig. 5 is a flow diagram illustrating an example technique for lossy compression of a block of pixels, according to some embodiments.
- the method shown in Fig. 5 may be used in conjunction with any of the computer circuitry, systems, devices, elements, or components disclosed herein, among others.
- some of the method elements shown may be performed concurrently, in a different order than shown, or may be omitted. Additional method elements may also be performed as desired.
- the computing system determines that lossless predictor results are too large. For example, none of the lossless predictors used in the technique of Fig. 3 may compress a block of pixels to a threshold data size. Note that in other embodiments, lossy compression may be performed without performing lossless predictors first. In some embodiments, checking whether a lossless compressor can be used before falling back to lossy compression may improve overall compression ratios.
- the system adds bias and clamps pixel component values. For example, the following system may determine whether the component is represented in a signed format (e.g., signed integer or signed normalized) or another format (e.g., float or unsigned). If signed, for each component and each region, the system applies bias by flipping the sign bit. The result is then clamped, if appropriate, to a minimum value for preservation. [0060] At 514, in the illustrated embodiment, the system determines minimum and maximum values for each pixel component in each region of the block of pixels being compressed. This is one technique for determining the least compressible pixel(s) in each region.
- a signed format e.g., signed integer or signed normalized
- another format e.g., float or unsigned
- the minimum value is used as the base and the maximum value is used to determine the range of the component.
- the outputs of this processing may be the min value for each component for each region, the min position (position of the pixel with the min value) for each component for each region, and the max value for each component for each region.
- the system determines a lossy quantization mode.
- a number of modes may be available.
- the modes may be predetermined and encoded, e.g., in a lookup table.
- Each mode may have potentially different values for various attributes such as: range, base bits, delta bits, level, free level, and whether the base is protected.
- the base bits and delta bits may indicate the number of bits used to encode the base and deltas, respectively. Bases may be quantized more in higher modes while deltas may be quantized more with lower modes.
- the level may indicate how heavily a mode will be quantized (or not).
- the system may also use the level to determine whether to apply cross-component bit sharing.
- the level may be signed, and lower level values may indicate greater quantization, overall.
- the free level may indicate the number of levels that can be given to another component without subtracting from the current component’s base or delta bits.
- a protected base indicates that the component’s base bits cannot be decremented when giving levels to another component.
- the following table includes mode information for two modes of a 16-bit component width, according to some embodiments (although note that various encodings may be implemented).
- the other modes not shown e.g., modes 1 through 14
- the system first determines, for each region, the number of bits needed to pack all deltas by finding the maximum deltas for each component and determining the number of unsigned bits needed to represent the deltas. This value may then be used to generate a quantization mode for each component based on these ranges.
- each mode may be associated with a range and the mode may be selected such that the difference between the max value and min value for a component in a region falls within that range.
- compression circuitry may determine whether to perform cross-component bit sharing based on the mode.
- the system further determines whether expanding the delta range (reducing delta quantization) by quantizing the base value will reduce quantization loss. For example, the system may apply a mask to determine a new base value after quantization and determine whether this value meets a transition threshold. Therefore, the system may determine, in some situations, to further quantize the base min value to provide additional bits for use for delta quantization. This may be implemented by increasing the quantization mode by one, for example. At this point, the system has selected a quantization mode for each component in each region, in some embodiments.
- the system determines whether to use cross component bit sharing.
- some components may need fewer base/delta bits (e.g., for constant values or small delta ranges) and can give up some of their bits for other components to reduce quantization errors for the other components.
- this includes, for each region, sorting each component’s quantization modes e.g., from smallest to largest.
- the system may sort the modes such that mO corresponds to the component with the smallest mode, m3 to the component with the greatest mode, and ml and m2 to the two other components in an example four-component format.
- the system may then determine the differences between each component’s modes and use the differences to determine which components gain or lose quantization levels.
- the system adjusts the base and delta bits. In some embodiments, this uses the quantization levels determined in element 518. For example, the following pseudocode may implement this functionality.
- the system has generated final base bits and delta bits for each component, in some embodiments.
- the system checks if pixel-quantization fallback is needed. In certain situations, it may be preferred to quantize input pixel data within a region directly rather than quantizing the base and deltas.
- One example situation is when the level of quantization used for deltas creates quantization errors that exceed direct quantization of the input pixel data.
- Another such situation is when the input data is represented in a floating point format and a component had at least one value that matched a special encoding (e.g., negative zero, plus or minus infinity, or canonical not a number (NaN) wherein the exponent is all l’s and the mantissa’s most-significant bit is set.
- the system is configured to fallback to direct quantization of pixel values for a region if either of these scenarios is detected for that region. If fallback occurs, the system may skip to element 526 for that region.
- the system calculates and quantizes bases and deltas according to the selected parameters.
- the system may determine the delta for pixel components in a region by subtracting their value from the base value for that region. Thus, for each N-pixel region, N-l delta values may be generated for each component, because the base pixel has an implied delta value of zero.
- the system then quantizes the delta values using the determined numbers of bits for each region. The quantization may include adjustment to preserve the max component value and to reduce bias (e.g., bias due to midpoint reconstruction during decompression).
- the system packs the compressed pixel information.
- the packing may be performed differently depending on whether pixel- quantization fallback mode was used.
- Fig. 6, discussed in further detail below, provides example packing formats.
- the system creates metadata for the compressed data.
- the metadata is the same size for all formats, e.g., one byte.
- sub-blocks with no valid data have a metadata value of zero.
- setting metadata[7:4] to 4’b 1111 indicates a lossy mode, which may imply that the size of the compressed block corresponds to a lossy target size (which may avoid explicitly encoding the size of the compressed block in the metadata).
- the remaining bits each indicate whether quantization fallback was used for a particular region (in example four-region embodiments).
- a number of compressed blocks are then packed together, along with their metadata, e.g., for a combined write to memory.
- Fig. 6 is a block diagram illustrating an example format for a region of a block of compressed pixels, according to some embodiments.
- the format includes a fixed header 610, variable header 620, padding bits 630, and packed deltas 640.
- the system interleaves data for the different components (e.g., RGBA).
- the data in some embodiments, must fit within 1 /4 th of the lossy target size.
- padding 630 is added such that the header is aligned to the start of the data for the region and the last delta is aligned with the end of the data for the region.
- Fixed header 610 in some embodiments, encodes the mode while the variable header 620 encodes the base value position, and quantized base value, for each component.
- packed deltas 640 include a delta for each pixel in the region for each component, except for the base.
- packed deltas include data for pixels P0 through Pi where there are i+2 pixels in the region.
- each pixel field includes four deltas (one for each component) and may include padding if needed. Note that greater or smaller number of deltas may be included for embodiments with different number of components per pixel.
- fallback mode is used for a region, in some embodiments, all components are quantized equally and there is no header encoding.
- Decompression circuitry in some embodiments, is configured to perform the following procedure for lossy decompression.
- the device may determine the location of a compressed block, e.g., based on metadata values of previous blocks.
- the decompression circuitry may decode the metadata for the block. If the metadata indicates a constant block, the decompression circuitry may copy the color to each pixel. If the metadata indicates a lossless block that fits within the target size, lossless decompression circuitry decodes the block, as described above with reference to lossless techniques. If the metadata indicates a lossy block that required quantization, lossy decompression circuitry decodes the block.
- the decompression circuitry determines the region encoding. If fallback encoding was used, it unpacks the region and performs midpoint reconstruction to de-quantize each pixel. Decompression of this region may be finished, at this point. If fallback encoding was not used, the decompression circuitry unpacks and decodes based on the extracted mode. In some embodiments, this includes determining base and delta bit widths based on the mode and adjusting according to cross-component bit sharing (the decompression circuitry may perform the same calculation as the compression circuitry to determine cross-component bit sharing based on modes for each component). The decompression circuitry may then determine unpack the base and base position and unpack quantized deltas. The decompression circuitry may then de-quantize the deltas and reconstruct pixel values. For lossy compression, the output pixel component values may not match the input pixel component values due to quantization.
- Disclosed techniques may advantageously provide good compression ratios, low power consumption, and improved accuracy for lossy compression, relative to traditional techniques.
- Fig. 7 is a flow diagram illustrating an example method for lossless compression, according to some embodiments.
- the method shown in Fig. 7 may be used in conjunction with any of the computer circuitry, systems, devices, elements, or components disclosed herein, among others.
- some of the method elements shown may be performed concurrently, in a different order than shown, or may be omitted. Additional method elements may also be performed as desired.
- compression circuitry determines, at least partially in parallel for multiple different lossless compression techniques, a number of bits needed to represent a least compressible pixel, using that technique, in a set of pixels being compressed.
- a “least compressible pixel” in a set of pixels refers to a pixel that requires the greatest amount of data to represent in a given compression technique. For example, for a set of four pixels and an origin predictor, consider a situation where the pixels have respective deltas of one, two, four, and thirty-one. The pixel with the delta of thirty-one is the least compressible pixel because it requires the most bits to represent its delta for an origin compression technique.
- multiple pixels may be “least compressible pixels” in a set, e.g., if multiple pixels require the same greatest number of bits.
- the elements of Fig. 7 are performed separately for different components of the pixels in the set of pixels.
- the compression circuitry determines, for multiple regions of pixels in the set of pixels for ones of the compression techniques, a region number of bits needed to represent a least compressible pixel, using that technique.
- header information for one or more of the techniques includes fields indicating differences between respective region numbers of bits and the number of bits. This may provide better compression ratios, e.g., in scenarios where one region has a particularly difficult pixel but other regions do not.
- the compression techniques include an origin technique that determines deltas between values for pixels in the set of pixels and a value of an origin pixel in the set of pixels, a neighbor technique that determines deltas between values for adjacent pixels in the set of pixels, and a gradient technique that determines deltas between values for pixels in the set of pixels and a value of an origin pixel in the set of pixels added to a gradient value that is based on one or more pixels adjacent to the origin pixel.
- the pixel data includes multiple components per pixel and the compression techniques include one or more decorrelation techniques that subtract values from one component (e.g., a green component) from one or more other components.
- One of more of the compression techniques may have fixed base pixel locations, which may be different for different techniques.
- the compression circuitry selects one of the compression techniques based on the determined numbers of bits for and header sizes needed to store compression information for the multiple compression techniques. In some embodiments, selection of the compression technique may be further based on determined region numbers of bits.
- the compression circuitry stores information that encodes values for the set of pixels using the selected compression technique.
- the compression circuitry may store a delta for each component for each pixel according to the selected technique and generate header information indicating the selected technique and the size of the deltas.
- the compression circuitry generates metadata that indicates the size of the compressed set of pixels.
- the metadata has a fixed size and the compression circuitry, in response to determining that all bits of the metadata are not needed to represent the size of the compressed set of pixels, includes one or more bits of header information in the metadata. This may further reduce the overall size of the compressed block of pixels.
- Fig. 8 is a flow diagram illustrating an example method for lossy compression, according to some embodiments. The method shown in Fig. 7 may be used in conjunction with any of the computer circuitry, systems, devices, elements, or components disclosed herein, among others. In various embodiments, some of the method elements shown may be performed concurrently, in a different order than shown, or may be omitted. Additional method elements may also be performed as desired.
- compression circuitry accesses pixel data for a block of pixels being compressed.
- the pixel data may include values for multiple components for each pixel.
- the component values may have different widths for different blocks of pixels and the widths may be programmable.
- the compression circuitry determines whether to apply bias to one or more component values represented in a signed format.
- the compression circuitry determines, for multiple components included in pixels of the block of pixels, respective smallest and greatest component values in respective different regions of the block of pixels.
- the compression circuitry determines, based on the determined smallest and greatest component values, to use a first number of bits to represent delta values relative to a base value for a first component in a first region and a second, different number of bits to represent delta values relative to a base value for a second component in the first region.
- the compression circuitry determines a first initial number of bits to represent delta values in the first region for the first component based on a difference between corresponding smallest and greatest component values and a second initial number of bits to represent delta values in the first region for the second component based on a difference between corresponding smallest and greatest component values. The compression circuitry then selects the first and second numbers of bits in response to determining to reduce the first initial number of bits to share delta bits with the second component.
- the compression circuitry uses a mode-based look-up technique to determine whether to apply cross-component bit sharing.
- the compression circuitry may determine a compression mode for the first component based on a difference between smallest and greatest component values in the first region for the first component.
- the compression circuitry may then determine whether to share bits based on modes of the different components.
- each mode may indicate one or more of the following: an initial number of base bits, an initial number of delta bits, a compression level, a free level value that indicates a number of levels that can be given to another component without subtracting from the component’s base or delta bits, and a protected base value that indicates whether the component’s base bits can be decremented when giving one or more levels to another component.
- cross component bit sharing logic may determine the extent of bit sharing, e.g., to reduce overall quantization.
- the compression circuitry quantizes delta values for the first and second components of pixels in the first region of the block of pixels using the determined first and second numbers of bits.
- the deltas may be determined relative to a base pixel value.
- the quantization may result in lossy compression.
- the compression circuitry quantizes deltas values for the first component of pixels in a second region of the block of pixels using a third, different determined number of bits. Said another way, the compression circuitry may quantize delta values for the same component using different numbers of bits in different regions.
- the compression circuitry is configured to select and apply direct quantization of pixel component values for a second region of the block of pixels.
- the compression circuitry may apply direct quantization (e.g., in contrast to base and delta values) in response to determining: that a level of quantization used for delta values for the second region creates quantization errors that exceed direct quantization of the input pixel data or that a floating point value of a component in the second region is included in a set of special floating point values.
- the compression circuitry stores a compressed version of the block of pixels using the quantized deltas. For example, the compression circuitry may write the compressed block of pixels to a level in a cache/memory hierarchy. The block may later be retrieved and decompressed for use in generating graphics frames.
- each is used to refer to every element in a set of multiple elements, but there may be other elements associated with the apparatus or method that are not being referred to. Said another way, where “each” is used with respect to an embodiment to attribute a property or action to every member of a plurality of elements, it is not intended to foreclose the possibility that the embodiment may include other instances of the element to which the property or action does not apply.
- the phrase “determine, for each technique in a set of multiple compression techniques, . . ” may refer to each technique in various subsets of all the supported techniques (e.g., subset A-B, B-E, D and F, etc.).
- this phrase may refer to some subset of all potential components, (e.g., when one or more of the components is not being used to store pixel information).
- An apparatus comprising: compression circuitry configured to: determine, at least partially in parallel for multiple different lossless compression techniques, a number of bits needed to represent a least compressible pixel, using that technique, in a set of pixels being compressed; select one of the compression techniques based on the determined numbers of bits and header sizes needed to store compression information for the multiple compression techniques; and store information that encodes values for the set of pixels using the selected compression technique.
- the compression circuitry is further configured to: determine, for multiple regions of pixels in the set of pixels, for ones of the compression techniques, a region number of bits needed to represent a least compressible pixel, using that technique; wherein the selection of the one of the compression techniques is further based on the determined region number of bits.
- header information for one or more of the techniques includes fields indicating differences between respective region numbers of bits and the number of bits.
- header information further indicates the selected compression technique, numbers of bits used to represent deltas for components of pixels in the set of pixels, and a base pixel value.
- the multiple different lossless compression techniques include: an origin technique that determines deltas between values for pixels in the set of pixels and a value of an origin pixel in the set of pixels; a neighbor technique that determines deltas between values for adjacent pixels in the set of pixels; a gradient technique that determines deltas between values for pixels in the set of pixels and a value of an origin pixel in the set of pixels added to a gradient value that is based on one or more pixels adjacent to the origin pixel.
- the compression circuitry is configured to store a gradient value in a header for the set of pixels.
- the compression circuitry is configured to separately determine a least compressible pixel and select a compression technique for multiple components included in pixels in the set of pixels.
- A13 A method, comprising any combination of the operations performed by the apparatus of any previous clause within set A.
- design information specifies a design of at least a portion of a hardware integrated circuit in a format recognized by a semiconductor fabrication system that is configured to use the design information to produce the circuit according to the design, wherein the design information specifies that the circuit includes: any combination of the elements recited in any previous clause within set A.
- device 900 may be included within a system on a chip.
- device 900 may be included in a mobile device, which may be battery-powered. Therefore, power consumption by device 900 may be an important design consideration.
- device 900 includes fabric 910, compute complex 920 input/output (I/O) bridge 950, cache/memory controller 945, graphics unit 970, and display unit 965.
- device 900 may include other components (not shown) in addition to and/or in place of the illustrated components, such as video processor encoders and decoders, image processing or recognition elements, computer vision elements, etc.
- Fabric 910 may include various interconnects, buses, MUX’s, controllers, etc., and may be configured to facilitate communication between various elements of device 900. In some embodiments, portions of fabric 910 may be configured to implement various different communication protocols. In other embodiments, fabric 910 may implement a single communication protocol and elements coupled to fabric 910 may convert from the single communication protocol to other communication protocols internally.
- compute complex 920 includes bus interface unit (BIU) 925, cache 930, and cores 935 and 940.
- compute complex 920 may include various numbers of processors, processor cores and/or caches.
- compute complex 920 may include 1, 2, or 4 processor cores, or any other suitable number.
- cache 930 is a set associative L2 cache.
- cores 935 and/or 940 may include internal instruction and/or data caches.
- a coherency unit (not shown) in fabric 910, cache 930, or elsewhere in device 900 may be configured to maintain coherency between various caches of device 900.
- BIU 925 may be configured to manage communication between compute complex 920 and other elements of device 900.
- Processor cores such as cores 935 and 940 may be configured to execute instructions of a particular instruction set architecture (ISA) which may include operating system instructions and user application instructions.
- ISA instruction set architecture
- Cache/memory controller 945 may be configured to manage transfer of data between fabric 910 and one or more caches and/or memories.
- cache/memory controller 945 may be coupled to an L3 cache, which may in turn be coupled to a system memory.
- cache/memory controller 945 may be directly coupled to a memory.
- cache/memory controller 945 may include one or more internal caches.
- the term “coupled to” may indicate one or more connections between elements, and a coupling may include intervening elements.
- graphics unit 970 may be described as “coupled to” a memory through fabric 910 and cache/memory controller 945.
- graphics unit 970 is “directly coupled” to fabric 910 because there are no intervening elements.
- Graphics unit 970 may include one or more processors and/or one or more graphics processing units (GPU’s). Graphics unit 970 may receive graphics-oriented instructions, such as OPENGL®, Metal, or DIRECT3D® instructions, for example. Graphics unit 970 may execute specialized GPU instructions or perform other operations based on the received graphics-oriented instructions. Graphics unit 970 may generally be configured to process large blocks of data in parallel and may build images in a frame buffer for output to a display. Graphics unit 970 may include transform, lighting, triangle, and/or rendering engines in one or more graphics processing pipelines. Graphics unit 970 may output pixel information for display images. Programmable shader 975, in various embodiments, may include highly parallel execution cores configured to execute graphics programs, which may include pixel tasks, vertex tasks, and compute tasks (which may or may not be graphics-related).
- graphics-oriented instructions such as OPENGL®, Metal, or DIRECT3D® instructions, for example. Graphics unit 970 may execute specialized GPU instructions or perform other operations based on the received
- programmable shader 975 includes disclosed compression circuitry.
- Display unit 965 may be configured to read data from a frame buffer and provide a stream of pixel values for display.
- Display unit 965 may be configured as a display pipeline in some embodiments. Additionally, display unit 965 may be configured to blend multiple frames to produce an output frame. Further, display unit 965 may include one or more interfaces (e.g., MIPI® or embedded display port (eDP)) for coupling to a user display (e.g., a touchscreen or an external display).
- interfaces e.g., MIPI® or embedded display port (eDP)
- I/O bridge 950 may include various elements configured to implement: universal serial bus (USB) communications, security, audio, and/or low-power always-on functionality, for example. I/O bridge 950 may also include interfaces such as pulse-width modulation (PWM), general-purpose input/output (GPIO), serial peripheral interface (SPI), and/or inter- integrated circuit (I2C), for example. Various types of peripherals and devices may be coupled to device 900 via I/O bridge 950.
- PWM pulse-width modulation
- GPIO general-purpose input/output
- SPI serial peripheral interface
- I2C inter- integrated circuit
- the present disclosure has described various example circuits in detail above. It is intended that the present disclosure cover not only embodiments that include such circuitry, but also a computer-readable storage medium that includes design information that specifies such circuitry. Accordingly, the present disclosure is intended to support claims that cover not only an apparatus that includes the disclosed circuitry, but also a storage medium that specifies the circuitry in a format that is recognized by a fabrication system configured to produce hardware (e.g., an integrated circuit) that includes the disclosed circuitry. Claims to such a storage medium are intended to cover, for example, an entity that produces a circuit design, but does not itself fabricate the design.
- Fig. 8 is a block diagram illustrating an example non-transitory computer-readable storage medium that stores circuit design information, according to some embodiments.
- semiconductor fabrication system 820 is configured to process the design information 815 stored on non-transitory computer-readable medium 810 and fabricate integrated circuit 830 based on the design information 815.
- Non-transitory computer-readable storage medium 810 may comprise any of various appropriate types of memory devices or storage devices.
- Non-transitory computer-readable storage medium 810 may be an installation medium, e.g., a CD-ROM, floppy disks, or tape device; a computer system memory or random access memory such as DRAM, DDR RAM, SRAM, EDO RAM, Rambus RAM, etc.; a non-volatile memory such as a Flash, magnetic media, e.g., a hard drive, or optical storage; registers, or other similar types of memory elements, etc.
- Non-transitory computer-readable storage medium 810 may include other types of non-transitory memory as well or combinations thereof.
- Non-transitory computer-readable storage medium 810 may include two or more memory mediums which may reside in different locations, e.g., in different computer systems that are connected over a network.
- Design information 815 may be specified using any of various appropriate computer languages, including hardware description languages such as, without limitation: VHDL, Verilog, SystemC, SystemVerilog, RHDL, M, MyHDL, etc. Design information 815 may be usable by semiconductor fabrication system 820 to fabricate at least a portion of integrated circuit 830. The format of design information 815 may be recognized by at least one semiconductor fabrication system 820. In some embodiments, design information 815 may also include one or more cell libraries which specify the synthesis and/or layout of integrated circuit 830. In some embodiments, the design information is specified in whole or in part in the form of a netlist that specifies cell library elements and their connectivity.
- Design information 815 taken alone, may or may not include sufficient information for fabrication of a corresponding integrated circuit.
- design information 815 may specify the circuit elements to be fabricated but not their physical layout. In this case, design information 815 may need to be combined with layout information to actually fabricate the specified circuitry.
- Integrated circuit 830 may, in various embodiments, include one or more custom macrocells, such as memories, analog or mixed-signal circuits, and the like.
- design information 815 may include information related to included macrocells. Such information may include, without limitation, schematics capture database, mask design data, behavioral models, and device or transistor level netlists.
- mask design data may be formatted according to graphic data system (GDSII), or any other suitable format.
- Semiconductor fabrication system 820 may include any of various appropriate elements configured to fabricate integrated circuits. This may include, for example, elements for depositing semiconductor materials (e.g., on a wafer, which may include masking), removing materials, altering the shape of deposited materials, modifying materials (e.g., by doping materials or modifying dielectric constants using ultraviolet processing), etc. Semiconductor fabrication system 820 may also be configured to perform various testing of fabricated circuits for correct operation.
- integrated circuit 830 is configured to operate according to a circuit design specified by design information 815, which may include performing any of the functionality described herein.
- integrated circuit 830 may include any of various elements shown in Figs. 1A-1B.
- integrated circuit 830 may be configured to perform various functions described herein in conjunction with other components. Further, the functionality described herein may be performed by multiple connected integrated circuits.
- design information that specifies a design of a circuit configured to ...” does not imply that the circuit in question must be fabricated in order for the element to be met. Rather, this phrase indicates that the design information describes a circuit that, upon being fabricated, will be configured to perform the indicated actions or will include the specified components.
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB2215649.1A GB2608965A (en) | 2020-04-22 | 2021-04-16 | Lossy compression techniques |
CN202180029948.8A CN115516769A (zh) | 2020-04-22 | 2021-04-16 | 有损压缩技术 |
KR1020227036666A KR20220157467A (ko) | 2020-04-22 | 2021-04-16 | 손실 압축 기법들 |
DE112021002484.1T DE112021002484T5 (de) | 2020-04-22 | 2021-04-16 | Verlustbehaftete komprimierungstechniken |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/855,540 | 2020-04-22 | ||
US16/855,540 US11664816B2 (en) | 2020-04-22 | 2020-04-22 | Lossy compression techniques |
US16/855,459 US11405622B2 (en) | 2020-04-22 | 2020-04-22 | Lossless compression techniques |
US16/855,459 | 2020-04-22 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2021216361A1 true WO2021216361A1 (fr) | 2021-10-28 |
Family
ID=75914572
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2021/027623 WO2021216361A1 (fr) | 2020-04-22 | 2021-04-16 | Techniques de compression avec pertes |
Country Status (5)
Country | Link |
---|---|
KR (1) | KR20220157467A (fr) |
CN (1) | CN115516769A (fr) |
DE (1) | DE112021002484T5 (fr) |
GB (1) | GB2608965A (fr) |
WO (1) | WO2021216361A1 (fr) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0424060A2 (fr) * | 1989-10-14 | 1991-04-24 | Sony Corporation | Méthode de codage de signaux vidéo et système de transmission à cette fin |
EP0840510A1 (fr) * | 1996-05-17 | 1998-05-06 | Matsushita Electric Industrial Co., Ltd. | Codeur et decodeur d'images, methode de codage et de decodage d'images et support d'enregistrement de programmes de codage et de decodage d'images |
US6058217A (en) * | 1996-07-17 | 2000-05-02 | Sony Corporation | Image coding apparatus for coding an image of a component signal |
-
2021
- 2021-04-16 KR KR1020227036666A patent/KR20220157467A/ko not_active Application Discontinuation
- 2021-04-16 CN CN202180029948.8A patent/CN115516769A/zh active Pending
- 2021-04-16 GB GB2215649.1A patent/GB2608965A/en active Pending
- 2021-04-16 DE DE112021002484.1T patent/DE112021002484T5/de active Pending
- 2021-04-16 WO PCT/US2021/027623 patent/WO2021216361A1/fr active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0424060A2 (fr) * | 1989-10-14 | 1991-04-24 | Sony Corporation | Méthode de codage de signaux vidéo et système de transmission à cette fin |
EP0840510A1 (fr) * | 1996-05-17 | 1998-05-06 | Matsushita Electric Industrial Co., Ltd. | Codeur et decodeur d'images, methode de codage et de decodage d'images et support d'enregistrement de programmes de codage et de decodage d'images |
US6058217A (en) * | 1996-07-17 | 2000-05-02 | Sony Corporation | Image coding apparatus for coding an image of a component signal |
Also Published As
Publication number | Publication date |
---|---|
CN115516769A (zh) | 2022-12-23 |
GB202215649D0 (en) | 2022-12-07 |
GB2608965A (en) | 2023-01-18 |
DE112021002484T5 (de) | 2023-04-06 |
KR20220157467A (ko) | 2022-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12052038B2 (en) | Lossy compression techniques | |
US11843788B2 (en) | Lossless compression techniques | |
US11847550B2 (en) | Sparse convolutional neural network accelerator | |
US10860922B2 (en) | Sparse convolutional neural network accelerator | |
CN109643443B (zh) | 图形处理器流水线中的高速缓存和压缩互操作性 | |
US6674536B2 (en) | Multi-instruction stream processor | |
EP0875859B1 (fr) | Procédé et appareil pour le décodage de données | |
US9274951B2 (en) | Cache memory controller for accelerated data transfer | |
US6393545B1 (en) | Method apparatus and system for managing virtual memory with virtual-physical mapping | |
US8355028B2 (en) | Scheme for varying packing and linking in graphics systems | |
US20180075574A1 (en) | Method and apparatus for compressing randomly accessed data | |
CN112422981B (zh) | 图像数据压缩 | |
JPH11505640A (ja) | ビット・スライス式テーブル・ルックアップ・デジタルたたみ込み | |
US12118212B2 (en) | System and method for memory compression for deep learning networks | |
Abel et al. | Applications tuning for streaming SIMD extensions | |
JPH1185969A (ja) | 画像処理装置及びその方法 | |
WO2021216361A1 (fr) | Techniques de compression avec pertes | |
US10503473B1 (en) | Floating-point division alternative techniques | |
Lacassagne et al. | 16-bit floating point instructions for embedded multimedia applications | |
Bhaskaran et al. | Multimedia architectures: from desktop systems to portable appliances | |
CN114025161B (zh) | 图像处理中的频率特定压缩与补偿技术 | |
US7075539B1 (en) | Apparatus and method for processing dual format floating-point data in a graphics processing system | |
Slingerland et al. | Multimedia extensions for general purpose microprocessors: A survey | |
GB2619574A (en) | Image data decompression | |
MacDonald | Hardware JPEG Decompression |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 21725610 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 20227036666 Country of ref document: KR Kind code of ref document: A |
|
ENP | Entry into the national phase |
Ref document number: 202215649 Country of ref document: GB Kind code of ref document: A Free format text: PCT FILING DATE = 20210416 |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 21725610 Country of ref document: EP Kind code of ref document: A1 |