System and method of digital compression and decompression using scaled quantization of variable-sized packets
AssigneeDigital Pictures, Inc.
InventorsMark D. Klein, Dana Keen
Life of this patent
Estimating the term…
Abstract
A system and method of compressing and decompressing a digital signal using scaled quantization of variable-sized packets of difference samples. Difference samples are generated and subdivided into packets. Packet boundaries may be moved to maximize resolution. A scale value is established for each packet, and scaled samples are generated for the difference samples. Packet boundaries, scale values, and scaled samples are then output as the compressed signal. Decompression is performed by multiplying scaled samples by the appropriate scale value. The resulting set of decompressed difference samples are sequentially added to an initial sample to produce a decompressed signal.
Claims24
A method of generating a compressed digital signal from a source signal having a plurality of successive source samples, the signal having a beginning and an end, the method comprising the steps of:
- (a) for each source sample except a first source sample, subtracting an immediately preceding source sample from the source sample to generate a difference sample;
- (b.1) defining a plurality of packet boundaries to partition the difference samples into a plurality of successive packets of predefined sizes, each packet having a beginning and an end and comprising a contiguous subset of the difference samples, wherein:
- the beginning of a first packet is defined by the beginning of the signal;
- the end of a last packet is defined by the end of the signal;
- and
- the end of the first packet, the beginning of the last packet, and the beginning and end of each other packet are defined by packet boundaries;
- (b.2) adjusting the packet boundaries to change the sizes of at least a subset of the packets;
- (c) for each packet, performing the steps of:
- (c.1) determining a scale value representing a multiplier for obtaining a decompressed sample from a scaled sample;
- and
- (c.2) for each difference sample in the packet, generating a scaled sample using the scale value;
- and
- (d) outputting a signal representing the packet boundaries, scaled samples, and scale values.
A method of generating a compressed digital signal from a source signal having a plurality of successive source samples, the signal having a beginning and an end, the method comprising the steps of:
- (a) for each source sample except a first source sample, subtracting an immediately preceding source sample from the source sample to generate a difference sample;
- (b) defining a plurality of packet boundaries to partition the difference samples into a plurality of successive packets, each packet having a beginning and an end and comprising a contiguous subset of the difference samples, wherein:
- the beginning of a first packet is defined by the beginning of the signal;
- the end of a last packet is defined by the end of the signal;
- and
- the end of the first packet, the beginning of the last packet, and the beginning and end of each other packet are defined by packet boundaries;
- (c) for each packet, performing the steps of:
- (c.1.1) establishing a maximum permissible value for scaled samples;
- (c.1.2) determining the largest-magnitude difference sample in the packet to obtain a difference amplitude;
- (c.1.3) dividing the difference amplitude by the maximum permissible value to obtain a scale value representing a multiplier for obtaining a decompressed sample from a scaled sample;
- (c.2) for each difference sample in the packet, generating a scaled sample using the scale value;
- and
- (d) outputting a signal representing the packet boundaries, scaled samples, and scale values.
A method of generating a compressed digital signal from a source signal having a plurality of successive source samples, the signal having a beginning and an end, the method comprising the steps of:
- (a) for each source sample except a first source sample, subtracting an immediately preceding source sample from the source sample to generate a difference sample;
- (b) defining a plurality of packet boundaries to partition the difference samples into a plurality of successive packets, each packet having a beginning and an end and comprising a contiguous subset of the difference samples, wherein:
- the beginning of a first packet is defined by the beginning of the signal;
- the end of a last packet is defined by the end of the signal;
- and the end of the first packet, the beginning of the lost packet, and the beginning and end of each other packet are defined bv packet boundaries;
- (c) for each packet, performing the substeps of:
- (c.1) determining a scale value representing a multiplier for obtaining a decompressed sample from a scaled sample;
- and
- (c.2) for each source sample in the packet except the first source sample in the signal, performing the substeps of:
- (c.2.1) establishing an immediately preceding source sample as a reference source sample;
- (c.2.2) determining a reference sample corresponding to the reference source sample;
- (c.2.3) subtracting the source sample from the reference sample to obtain a practical difference sample;
- and
- (c.2.4) dividing the practical difference sample by the scale value to obtain a scaled sample;
- and
- (d) outputting a signal representing the packet boundaries, scaled samples, and scale values.
A method of generating a compressed digital signal from a source signal having a plurality of sectors, each sector having a beginning and an end and containing a plurality of successive source samples, the method comprising the steps of, for each sector:
- (a) for each source sample except a first source sample, subtracting an immediately preceding source sample from the source sample to generate a difference sample;
- (b) defining a plurality of packet boundaries to partition the difference samples into a plurality of packets of predefined sizes, each packet having a beginning and an end and comprising a contiguous subset of the difference samples, wherein:
- the beginning of a first packet is defined by the beginning of the sector;
- the end of a last packet is defined by the end of the sector;
- and
- the end of the first packet, the beginning of the last packet, and the beginning and end of each other packet are defined by pocket boundaries;
- (c) for each packet, determining the largest-magnitude absolute difference sample in the packet to obtain a difference amplitude for the packet;
- (d) designating all packet boundaries as unmarked;
- (e) for each unmarked packet boundary, determining a boundary differential by subtracting the difference amplitude of the immediately succeeding packet from the difference amplitude of the immediately preceding packet;
- (f) selecting the unmarked packet boundary having the largest-magnitude boundary differential;
- (g) responsive to the boundary differential of the selected unmarked packet boundary having a magnitude not equal to zero, performing the substeps of:
- (g.1) selectively repositioning the selected packet boundary;
- (g.2) marking the selected packet boundary;
- (g.3) determining whether any unmarked packet boundaries remain;
- and
- (g.4) responsive to any unmarked packet boundaries remaining, repeating steps (e) through (g);
- (h) establishing a maximum permissible value for scaled samples
- (i) for each packet, performing the substeps of:
- (i.1) determining a scale value representing a multiplier for obtaining a decompressed sample from a scaled sample;
- (i.2) for each source sample in the packet except the first source sample in the sector, performing the substeps of:
- (i.2.1) establishing an immediately preceding source sample as a reference source sample;
- (i.2.2) responsive to the reference source sample being the first source sample in the sector, determining a reference sample to be equal to the reference source sample;
- (i.2.3) responsive to the reference source sample not being the first source sample in the sector, determining a reference sample according to the equation:
- r(N)=r(N-1)+s(N)*v,
- where:
- r(N) is the reference sample;
- r(N-1) is the reference sample immediately preceding the reference source sample;
- s(N) is the scaled sample corresponding to the reference source sample;
- and
- v is the scale value of the corresponding packet;
- (i.2.4) subtracting the source sample from the reference sample to obtain a practical difference sample;
- and
- (i.2.5) dividing the practical difference sample by the scale value to obtain a scaled sample;
- (i.3) determining whether any of the scaled samples in the packet exceed the maximum permissible value;
- and
- (i.4) responsive to any of the scaled samples in the packet exceeding the maximum permissible value, performing the substeps of:
- (i.4.1) increasing the scale value;
- and
- (i.4.2) repeating substeps (i.2) through (i.4);
- and
- (j) outputting a signal representing the first source sample, packet boundaries, scaled samples, and scale values.
A method of decompressing a compressed digital signal having at least one sector, each sector comprising at least one packet, each packet comprising at least one scaled sample, wherein a first packet of each sector includes a start value representing a first sample of the sector, the method comprising the steps of, for each sector:
- (a) obtaining the start value;
- (b) storing the start value as a decompressed sample;
- (c) outputting the start value;
- (d) for each packet in the sector, performing the substeps of:
- (d.1) obtaining a scale value for the packet, the scale value representing a multiplier for obtaining a decompressed sample from a scaled sample;
- (d.2) for each scaled sample in the packet, performing the substeps of:
- (d.2.1) multiplying the scaled sample by the scale value to generate a difference sample;
- (d.2.2) adding the difference sample to a previously stored decompressed sample to generate a decompressed sample;
- (d.2.3) storing the decompressed sample;
- and
- (d.2.4) outputting the decompressed sample.
A system for generating a compressed digital signal from a source signal having a plurality of successive source samples, the signal having a beginning and an end, the system comprising:
- an input device for accepting input containing the source samples;
- a difference sample generator, coupled to the input device, for generating a plurality of difference samples from the source samples;
- a packet partitioner, coupled to the difference sample generator, for defining a plurality of packet boundaries to partition the difference samples into a plurality of packets, each packet having a beginning and an end and comprising a contiguous subset of the difference samples, wherein:
- the beginning of a first packet is defined by the beginning of the signal;
- the end of a last packet is defined by the end of the signal;
- and
- the end of the first packet, the beginning of the last packet, and the beginning and end of each other packet are defined by packet boundaries;
- a packet boundary adjuster, coupled to the packet partitioner, for changing the sizes of at least a subset of the packets by adjusting packet boundaries;
- a scale value generator, coupled to the packet partitioner, for generating a scale value for each packet, the scale values representing multipliers for obtaining decompressed samples from scaled samples;
- a scaled sample generator, coupled to the difference sample generator, for generating a plurality of scaled samples from the difference samples and the scale values;
- and
- an output device, coupled to the scaled sample generator and the scale value generator, for outputting a first source sample of the source signal, packet boundaries, scaled samples, and scale values.
A system for decompressing a compressed digital signal, comprising:
- a parser for extracting at least one start value, scaled samples, and scale values from the compressed digital signal, the start value representing a first sample of the signal and the scale values representing multipliers for obtaining decompressed samples from the scaled samples;
- a result register for initially storing the start value and subsequently storing decompressed samples;
- a multiplier, coupled to the parser, for multiplying the scaled samples by the scale values to generate values representing differences between adjacent decompressed samples;
- an adding device, coupled to the multiplier, for adding the generated values to the contents of the result register to obtain decompressed samples;
- and
- an output device coupled to the adding device, for outputting the decompressed samples;
- wherein the result register is coupled to the parser and to the adding device.
Dependencies are inferred from the claim text.