Block floating point compression of signal data
First Claim
1. A method for compressing a plurality of signal samples, where the signal samples consist of a number of bits per sample, comprising:
- grouping the plurality of signal samples received in a processor into a sequence of encoding groups;
for an encoding group in the sequence of encoding groups, determining a block exponent value for the encoding group, and determining a mantissa for each signal sample in the encoding group, the mantissa having a number of bits based on said block exponent value for the encoding group;
for the sequence of encoding groups, encoding the block exponent values for the encoding groups to determine exponent tokens for the encoding groups in the sequence, wherein an exponent token represents one or more block exponent values for one or more encoding groups in the sequence, including determining differences between block exponent values for consecutive encoding groups in the sequence;
encoding the determined differences to produce the exponent tokens for at least a portion of the consecutive encoding groups;
providing a predetermined set of exponent token codes, the exponent token codes in the predetermined set encoding respective differences between block exponent values in more than two consecutive encoding groups;
if the determined differences in the block exponent values for more than two consecutive encoding groups in the sequence match one of the exponent token codes in the predetermined set, then representing the block exponent values for more than one of the encoding groups in the consecutive encoding groups using said one of the exponent token codes; and
encoding the plurality of signal samples using the exponent tokens and the mantissas for the sequence of encoding groups to form compressed data for storage in a storage device or transmission from the processor.
3 Assignments
0 Petitions
Accused Products
Abstract
A method and apparatus for compressing signal samples uses block floating point representations where the number of bits per mantissa is determined by the maximum magnitude sample in the group. The compressor defines groups of signal samples having a fixed number of samples per group. The maximum magnitude sample in the group determines an exponent value corresponding to the number of bits for representing the maximum sample value. The exponent values are encoded to form exponent tokens. Exponent differences between consecutive exponent values may be encoded individually or jointly. The samples in the group are mapped to corresponding mantissas, each mantissa having a number of bits based on the exponent value. Removing LSBs depending on the exponent value produces mantissas having fewer bits. Feedback control monitors the compressed bit rate and/or a quality metric. This abstract does not limit the scope of the invention as described in the claims.
-
Citations
35 Claims
-
1. A method for compressing a plurality of signal samples, where the signal samples consist of a number of bits per sample, comprising:
-
grouping the plurality of signal samples received in a processor into a sequence of encoding groups; for an encoding group in the sequence of encoding groups, determining a block exponent value for the encoding group, and determining a mantissa for each signal sample in the encoding group, the mantissa having a number of bits based on said block exponent value for the encoding group; for the sequence of encoding groups, encoding the block exponent values for the encoding groups to determine exponent tokens for the encoding groups in the sequence, wherein an exponent token represents one or more block exponent values for one or more encoding groups in the sequence, including determining differences between block exponent values for consecutive encoding groups in the sequence; encoding the determined differences to produce the exponent tokens for at least a portion of the consecutive encoding groups; providing a predetermined set of exponent token codes, the exponent token codes in the predetermined set encoding respective differences between block exponent values in more than two consecutive encoding groups; if the determined differences in the block exponent values for more than two consecutive encoding groups in the sequence match one of the exponent token codes in the predetermined set, then representing the block exponent values for more than one of the encoding groups in the consecutive encoding groups using said one of the exponent token codes; and encoding the plurality of signal samples using the exponent tokens and the mantissas for the sequence of encoding groups to form compressed data for storage in a storage device or transmission from the processor. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. A method for decompressing an input signal conveying compressed data to a processor representing a plurality of encoded original signal samples, the method comprising:
-
disassembling the compressed data received at the processor to obtain a plurality of exponent tokens and a plurality of compressed groups of mantissas, where the plurality of the encoded original signal samples are represented by the exponent tokens and the mantissas; decoding the plurality of exponent tokens to form a plurality of block exponent values, wherein each block exponent value is associated with one of the plurality of compressed groups, wherein a portion of the plurality of exponent tokens encodes differences between block exponent values associated with consecutive compressed groups, the decoding the plurality of exponent tokens further comprising; providing a predetermined set of exponent token codes, the exponent token codes in the predetermined set encoding respective differences between block exponent values associated with consecutive compressed groups; for a given exponent token, using the predetermined set to decode one or more differences represented by the given exponent token; for each decoded difference, adding the decoded difference to a previous block exponent value to determine the block exponent value associated with a corresponding one of the consecutive compressed groups; for each of the compressed groups of mantissas, determining a number of bits representing each of the mantissas in the compressed group using the associated block exponent value, and mapping the number of bits of each mantissa to a corresponding decompressed sample, to form a group of decompressed samples; and applying said determining a number of bits and said mapping the number of bits of each mantissa to the plurality of compressed groups of mantissas to generate a plurality of decompressed samples. - View Dependent Claims (15, 16, 17, 18, 19)
-
-
20. An apparatus for compressing a plurality of signal samples, where the signal samples consist of a number of bits per sample, comprising a processor and a memory in communication with the processor, the processor including:
-
logic for grouping the signal samples into a sequence of encoding groups, to form a sequence of encoding groups; logic determining a block exponent value for each encoding group; a mantissa encoder that receives the signal samples in each encoding group and forms a mantissa for each signal sample, wherein each mantissa of a particular encoding group has a number of bits based on the block exponent value for the particular encoding group; an exponent encoder that encodes the block exponent values for the sequence of encoding groups to produce exponent tokens, wherein an exponent token represents one or more block exponent values for one or more encoding groups, the exponent encoder further comprising; a difference calculator determining differences between the block exponent values associated with consecutive compressed groups, the exponent encoder encoding the determined differences to produce corresponding exponent tokens; a predetermined set of exponent token codes stored in the memory, the exponent token codes in the predetermined set encoding respective differences between block exponent values for more than two consecutive encoding groups; logic determining if the determined differences between block exponent values for more than two consecutive encoding groups in the sequence match one of the exponent token codes in the predetermined set, and if so, selecting said one of the exponent token codes to represent the block exponent values for more than one of the encoding groups in the consecutive encoding groups; and a bit packer arranging the exponent tokens and the mantissas for the sequence of encoding groups to form compressed data for storage in a storage device or transmission from the processor. - View Dependent Claims (21, 22, 23, 24, 25, 26, 27, 28, 29, 30)
-
-
31. An apparatus for decompressing an input signal conveying compressed data representing a plurality of encoded original signal samples, comprising a processor and a memory in communication with the processor, the processor including:
-
a buffer receiving the compressed data, wherein the plurality of encoded original signal samples are represented by a plurality of exponent tokens and a plurality of compressed groups of mantissas; logic coupled to the buffer for disassembling the compressed data to obtain the plurality of exponent tokens and the plurality of compressed groups of mantissas; an exponent decoder receiving the plurality of exponent tokens and determining a plurality of block exponent values, wherein each block exponent value is associated with one of the compressed groups of mantissas, wherein a portion of the plurality of exponent tokens encode differences between block exponent values associated with consecutive compressed groups, the exponent decoder further comprising; a predetermined set of exponent token codes stored in the memory, the exponent token codes in the predetermined set to encode respective differences between block exponent values for consecutive compressed groups, the exponent decoder using the predetermined set to decode one or more differences represented by a received exponent token to obtain one or more decoded differences; an adder receiving each decoded difference and a respective previous block exponent value and producing the block exponent value for a corresponding one of the consecutive compressed groups; and a mantissa decoder receiving each compressed group of mantissas and the associated block exponent value, wherein a number of bits representing each of the mantissas in the compressed group is based on the associated block exponent value, the mantissa decoder mapping the number of bits of each mantissa to a corresponding decompressed sample to form a group of decompressed samples, the mantissa decoder decoding the plurality of compressed groups to produce a plurality of decompressed samples. - View Dependent Claims (32, 33, 34, 35)
-
Specification