Systems and methods for providing fast and efficient data compression using a combination of content independent data compression and content dependent data compression. In one aspect, a method for compressing data comprises the steps of: analyzing a data block of an input data stream to identify a data type of the data block, the input data stream comprising a plurality of disparate data types; performing content dependent data compression on the data block, if the data type of the data block is identified; performing content independent data compression on the data block, if the data type of the data block is not identified. |
Citations|
| US4682150 | Dec 9, 1985 | Jul 21, 1987 | NCR Corporation | Data compression method and apparatus | | US4872009 | Dec 7, 1987 | Oct 3, 1989 | Hitachi, Ltd. Hitachi Computer Peripherals Co. | Method and apparatus for data compression and restoration | | US4929946 | Feb 9, 1989 | May 29, 1990 | Storage Technology Corporation | Adaptive data compression apparatus including run length encoding for a tape drive system | | US5045852 | Mar 30, 1990 | Sep 3, 1991 | International Business Machines Corporation | Dynamic model selection during data compression | | US5097261 | Nov 19, 1990 | Mar 17, 1992 | International Business Machines Corporation | Data compression for recording on a record medium | | US5212742 | May 24, 1991 | May 18, 1993 | Apple Computer, Inc. | Method and apparatus for encoding/decoding image data | | US5231492 | Nov 16, 1990 | Jul 27, 1993 | Fujitsu Limited | Video and audio multiplex transmission system | | US5237675 | Mar 19, 1992 | Aug 17, 1993 | Maxtor Corporation | Apparatus and method for efficient organization of compressed data on a hard disk utilizing an estimated compression factor | | US5243341 | Jun 1, 1992 | Sep 7, 1993 | Hewlett Packard Company | Lempel-Ziv compression scheme with enhanced adapation | | US5243348 | Apr 27, 1992 | Sep 7, 1993 | Motorola, Inc. | Partitioned digital encoder and method for encoding bit groups in parallel | | US5270832 | Apr 14, 1992 | Dec 14, 1993 | C-Cube Microsystems | System for compression and decompression of video data using discrete cosine transform and coding techniques | | US5379036 | Apr 1, 1992 | Jan 3, 1995 | | Method and apparatus for data compression | | US5381145 | Feb 10, 1993 | Jan 10, 1995 | Ricoh Corporation Ricoh Company Ltd. | Method and apparatus for parallel decoding and encoding of data | | US5394534 | Sep 11, 1992 | Feb 28, 1995 | International Business Machines Corporation | Data compression/decompression and storage of compressed and uncompressed data on a same removable data storage medium | | US5461679 | May 14, 1993 | Oct 24, 1995 | Apple Computer, Inc. | Method and apparatus for encoding/decoding image data | | US5467087 | Dec 18, 1992 | Nov 14, 1995 | Apple Computer, Inc. | High speed lossless data compression system | | US5471206 | Dec 5, 1994 | Nov 28, 1995 | Ricoh Corporation Ricoh Company Ltd | Method and apparatus for parallel decoding and encoding of data | | US5479587 | Sep 3, 1992 | Dec 26, 1995 | Hewlett-Packard Company | Page printer having adaptive data compression for memory minimization | | US5486826 | May 19, 1994 | Jan 23, 1996 | PS Venture 1 LLC | Method and apparatus for iterative compression of digital data | | US5495244 | Oct 12, 1994 | Feb 27, 1996 | Samsung Electronics Co., Ltd. | Device for encoding and decoding transmission signals through adaptive selection of transforming methods | | US5533051 | Mar 12, 1993 | Jul 2, 1996 | The James Group | Method for data compression | | US5557749 | Oct 15, 1992 | Sep 17, 1996 | Intel Corporation | System for automatically compressing and decompressing data for sender and receiver processes upon determination of a common compression/decompression method understood by both sender and receiver processes | | US5583500 | Dec 23, 1993 | Dec 10, 1996 | Ricoh Corporation Ricoh Company, Ltd. | Method and apparatus for parallel encoding and decoding of data | | US5627534 | Mar 23, 1995 | May 6, 1997 | International Business Machines Corporation | Dual stage compression of bit mapped image data using refined run length and LZ compression | | US5654703 | Jun 17, 1996 | Aug 5, 1997 | Hewlett-Packard Company | Parallel data compression and decompression | | US5668737 | Mar 22, 1995 | Sep 16, 1997 | Pixel Magic, Inc. | High-speed data processor and coding method | | US5717393 | Jul 19, 1996 | Feb 10, 1998 | Fujitsu Limited | Apparatus for data compression and data decompression | | US5717394 | Dec 17, 1996 | Feb 10, 1998 | Ricoh Company Ltd. Ricoh Corporation | Method and apparatus for encoding and decoding data | | US5729228 | Jul 6, 1995 | Mar 17, 1998 | International Business Machines Corp. | Parallel compression and decompression using a cooperative dictionary | | US5748904 | Sep 13, 1996 | May 5, 1998 | Silicon Integrated Systems Corp. | Method and system for segment encoded graphic data compression | | US5771340 | Dec 18, 1996 | Jun 23, 1998 | Oki Electric Industry Co., Ltd. | Data compression method and print processing device utilizing the same | | US5784572 | Dec 29, 1995 | Jul 21, 1998 | LSI Logic Corporation | Method and apparatus for compressing video and voice signals according to different standards | | US5799110 | Nov 9, 1995 | Aug 25, 1998 | Utah State University Foundation | Hierarchical adaptive multistage vector quantization | | US5805932 | Feb 13, 1996 | Sep 8, 1998 | Sony Corporation | System for transmitting compressed data if compression ratio is at least preset ratio and pre-compressed data if compression ratio is less than preset ratio | | US5809176 | Oct 18, 1995 | Sep 15, 1998 | Seiko Epson Corporation | Image data encoder/decoder system which divides uncompresed image data into a plurality of streams and method thereof | | US5818368 | Apr 18, 1997 | Oct 6, 1998 | Premier Research, LLC | Method and apparatus for lossless digital data compression | | US5818530 | Jun 19, 1996 | Oct 6, 1998 | Thomson Consumer Electronics, Inc. | MPEG compatible decoder including a dual stage data reduction network | | US5819215 | Oct 13, 1995 | Oct 6, 1998 | | Method and apparatus for wavelet based data compression having adaptive bit rate control for compression of digital audio or other sensory data | | US5825424 | Jun 19, 1996 | Oct 20, 1998 | Thomson Consumer Electronics, Inc. | MPEG system which decompresses and recompresses image data before storing image data in a memory and in accordance with a resolution of a display device | | US5847762 | Dec 27, 1995 | Dec 8, 1998 | Thomson Consumer Electronics, Inc. | MPEG system which decompresses and then recompresses MPEG video data before storing said recompressed MPEG video data into memory | | US5861824 | Feb 6, 1997 | Jan 19, 1999 | Ricoh Company, Ltd. | Encoding method and system, and decoding method and system | | US5917438 | Jun 25, 1996 | Jun 29, 1999 | Victor Company of Japan, Ltd. | Data storing and outputting apparatus | | US5964842 | Jan 31, 1997 | Oct 12, 1999 | Network Computing Devices, Inc. | Method and apparatus for scaling data compression based on system capacity | | US5991515 | Jul 15, 1997 | Nov 23, 1999 | Adobe Systems Incorporated | Method and apparatus for compressing and decompressing data prior to display | | US6031939 | Mar 13, 1998 | Feb 29, 2000 | Alcatel | Method of optimizing the compression of image data, with automatic selection of compression conditions | | US6195024 | Dec 11, 1998 | Feb 27, 2001 | Realtime Data, LLC | Content independent data compression method and system | | US6309424 | Nov 3, 2000 | Oct 30, 2001 | Realtime Data LLC | Content independent data compression method and system | | US6529633 | Sep 10, 1999 | Mar 4, 2003 | Texas Instruments Incorporated | Parallel difference coding method for lossless compression and real time decompression |
Referenced by|
| US6825780 | Apr 17, 2003 | Nov 30, 2004 | Droplet Technology, Inc. | Multiple codec-imager system and method | | US6907516 | May 30, 2002 | Jun 14, 2005 | Microsoft Corporation | Compression of program instructions using advanced sequential correlation | | US7130913 | Jul 28, 2003 | Oct 31, 2006 | Realtime Data LLC | System and methods for accelerated data storage and retrieval | | US7161506 | Sep 22, 2003 | Jan 9, 2007 | Realtime Data LLC | Systems and methods for data compression such as content dependent data compression | | US7181608 | Feb 2, 2001 | Feb 20, 2007 | Realtime Data LLC | Systems and methods for accelerated loading of operating systems and application programs | | US7283265 | Nov 14, 2001 | Oct 16, 2007 | InfoPrint Solutions Company | Raster data compression apparatus and method | | US7295608 | Sep 26, 2002 | Nov 13, 2007 | | System and method for communicating media signals | | US7302102 | Feb 23, 2004 | Nov 27, 2007 | | System and method for dynamically switching quality settings of a codec to maintain a target data rate | | US7321937 | Apr 8, 2006 | Jan 22, 2008 | Realtime Data LLC | System and methods for accelerated data storage and retrieval | | US7352300 | Jan 8, 2007 | Apr 1, 2008 | Realtime Data LLC | Data compression systems and methods | | US7358867 | Apr 8, 2006 | Apr 15, 2008 | Realtime Data LLC | Content independent data compression method and system | | US7376772 | Apr 8, 2006 | May 20, 2008 | Realtime Data LLC | Data storewidth accelerator | | US7378992 | Apr 8, 2006 | May 27, 2008 | Realtime Data LLC | Content independent data compression method and system | | US7386046 | Feb 13, 2002 | Jun 10, 2008 | Realtime Data LLC | Bandwidth sensitive data compression and decompression | | US7395345 | Apr 8, 2006 | Jul 1, 2008 | Realtime Data LLC | System and methods for accelerated data storage and retrieval | | US7400274 | Mar 13, 2007 | Jul 15, 2008 | Realtime Data LLC | System and method for data feed acceleration and encryption | | US7415530 | Oct 26, 2006 | Aug 19, 2008 | Realtime Data LLC | System and methods for accelerated data storage and retrieval | | US7417568 | May 7, 2003 | Aug 26, 2008 | Realtime Data LLC | System and method for data feed acceleration and encryption | | US7420992 | Mar 17, 2005 | Sep 2, 2008 | Packeteer, Inc. | Adaptive network traffic compression mechanism including dynamic selection of compression algorithms | | US7457358 | Feb 23, 2004 | Nov 25, 2008 | Interact Devices, Inc. | Polymorphic codec system and method | | US7457359 | Apr 16, 2004 | Nov 25, 2008 | | Systems, devices and methods for securely distributing highly-compressed multimedia content | | US7460032 | Oct 3, 2006 | Dec 2, 2008 | Evault, Inc. | Methods and apparatus for performing adaptive compression | | US7464185 | Apr 30, 2002 | Dec 9, 2008 | Hewlett-Packard Development Company, L.P. | Method and apparatus for transfering data from a sending system to a receiving system, and program storage devices | | US7512748 | Aug 17, 2006 | Mar 31, 2009 | OSR Open Systems Resources, Inc. | Managing lock rankings | | US7548657 | Jun 25, 2005 | Jun 16, 2009 | General Electric Company | Adaptive video compression of graphical user interfaces using application metadata | | US7599434 | Oct 23, 2003 | Oct 6, 2009 | | System and method for compressing portions of a media signal using different codecs | | US7649909 | Jun 30, 2006 | Jan 19, 2010 | Packeteer, Inc. | Adaptive tunnel transport protocol | | US7714747 | Jan 8, 2007 | May 11, 2010 | Realtime Data LLC | Data compression systems and methods | | US7777651 | Jun 2, 2008 | Aug 17, 2010 | Realtime Data LLC | System and method for data feed acceleration and encryption | | US7809897 | Feb 19, 2009 | Oct 5, 2010 | OSR Open Systems Resources, Inc. | Managing lock rankings | | US7831491 | Nov 5, 2004 | Nov 9, 2010 | Chicago Mercantile Exchange Inc. | Market data message format | | US7936290 | Nov 2, 2009 | May 3, 2011 | ARM Limited | Dynamic selection of suitable codes for variable length coding and decoding | | US7949693 | Aug 23, 2007 | May 24, 2011 | OSR Open Systems Resources, Inc. | Log-structured host data storage | | US7966496 | Dec 22, 2006 | Jun 21, 2011 | JPMorgan Chase Bank, N.A. | System and method for single sign on process for websites with multiple applications and services | | US7987246 | May 23, 2002 | Jul 26, 2011 | JPMorgan Chase Bank | Method and system for client browser update | | US7987501 | Dec 21, 2001 | Jul 26, 2011 | JPMorgan Chase Bank, N.A. | System and method for single session sign-on | | US8024433 | Apr 24, 2007 | Sep 20, 2011 | OSR Open Systems Resources, Inc. | Managing application resources | | US8036265 | Nov 9, 2007 | Oct 11, 2011 | Interact Devices | System and method for communicating media signals | | US8054879 | Jan 8, 2010 | Nov 8, 2011 | Realtime Data LLC | Bandwidth sensitive data compression and decompression | | US8064515 | Aug 19, 2009 | Nov 22, 2011 | Interact Devices, Inc. | System and method for compressing portions of a media signal using different codecs | | US8073047 | May 19, 2008 | Dec 6, 2011 | Realtime Data, LLC | Bandwidth sensitive data compression and decompression | | US8090936 | Oct 19, 2006 | Jan 3, 2012 | Realtime Data, LLC | Systems and methods for accelerated loading of operating systems and application programs | | US8108221 | May 18, 2009 | Jan 31, 2012 | Microsoft Corporation | Mixed lossless audio compression | | US8112619 | Oct 19, 2006 | Feb 7, 2012 | Realtime Data LLC | Systems and methods for accelerated loading of operating systems and application programs | | US8120515 | Sep 26, 2007 | Feb 21, 2012 | AgileDelta, Inc. | Knowledge based encoding of data with multiplexing to facilitate compression | | US8160160 | Sep 8, 2006 | Apr 17, 2012 | Broadcast International, Inc. | Bit-rate reduction for multimedia data streams | | US8160960 | Dec 11, 2009 | Apr 17, 2012 | JPMorgan Chase Bank, N.A. | System and method for rapid updating of credit information | | US8175395 | Nov 26, 2007 | May 8, 2012 | Interact Devices, Inc. | System and method for dynamically switching quality settings of a codec to maintain a target data rate | | US8185940 | Jul 17, 2007 | May 22, 2012 | JPMorgan Chase Bank, N.A. | System and method for providing discriminated content to network users | | US8229820 | Sep 22, 2010 | Jul 24, 2012 | Chicago Mercantile Exchange Inc. | Market data message format |
Claims1. A method for compressing data, comprising the steps of: - analyzing a data block of an input data stream to identify a data type of the data block, the input data stream comprising a plurality of disparate data types;
- performing content dependent data compression on the data block, if the data type of the data block is identified;
- performing content independent data compression on the data block, if the data type of the data block is not identified.
2. The method of claim 1, wherein the step of analyzing the data block comprises one of analyzing the data block to recognize one of a data type, data structure, data block format, file substructure, file types and a combination thereof. 3. The method of claim 2, further comprising the step of maintaining an association between encoder types and one of data types, data structures, data block formats, file substructure, file types and a combination thereof. 4. The method of claim 1, wherein the step of performing content independent data compression, comprises: - encoding the data block with a plurality of encoders to provide a plurality of encoded data blocks;
- determining a compression ratio obtained for each of the encoders;
- comparing each of the determined compression ratios with a first compression threshold;
- selecting for output the input data block and appending a null compression descriptor to the input data block, if all of the encoder compression ratios do not meet the first compression threshold; and
- selecting for output the encoded data block having the highest compression ratio and appending a corresponding compression type descriptor to the selected encoded data block, if at least one of the compression ratios meet the first compression threshold.
5. The method of claim 1, wherein the step of performing content dependent compression comprises the steps of: - selecting one or more encoders associated with the identified data type and encoding the data block with the selected encoders to provide a plurality of encoded data blocks;
- determining a compression ratio obtained for each of the selected encoders;
- comparing each of the determined compression ratios with a second compression threshold;
- selecting for output the input data block and appending a null compression descriptor to the input data block, if all of the encoder compression do not meet the second compression threshold; and
- selecting for output the encoded data block having the highest compression ratio and appending a corresponding compression type descriptor to the selected encoded data block, if at least one of the compression ratios meet the second compression threshold.
6. The method of claim 1, wherein the step of performing content independent data compression on the data block, if the data type of the data block is not identified, comprises the steps of: - estimating a desirability of using of one or more encoder types based one characteristics of the data block; and
- compressing the data block using one or more desirable encoders.
7. The method of claim 1, wherein the methods steps are tangibly embodied as program instructions on a program storage device, wherein the instructions are executable by a machine to perform the method steps. 8. The method of claim 1, wherein the step of performing content dependent data compression on the data block, if the data type of the data block is identified, comprises the steps of: - estimating a desirability of using of one or more encoder types based on characteristics of the data block; and
- compressing the data block using one or more desirable encoders.
9. A method for compressing data, comprising the steps of: - analyzing a data block of an input data stream to identify a data type of the data block, the input data stream comprising a plurality of disparate data types;
- performing content dependent data compression on the data block, if the data type of the data block is identified;
- determining a compression ratio of the compressed data block obtained using the content dependent compression and comparing the compression ratio with a first compression threshold; and
- performing content independent data compression on the data block, if the data type of the data block is not identified or if the compression ratio of the compressed data block obtained using the content dependent compression does not meet the first compression threshold.
10. The method of claim 9, wherein the step of analyzing the data block comprises one of analyzing the data block to recognize one of a data type, data structure, data block format, file substructure, file types and a combination thereof. 11. The method of claim 10, further comprising the step of maintaining an association between encoder types and one of data types, data structures, data block formats, file substructure, file types and a combination thereof. 12. The method of claim 9, wherein the step of performing content independent data compression, comprises: - encoding the data block with a plurality of encoders to provide a plurality of encoded data blocks;
- determining a compression ratio obtained for each of the encoders;
- comparing each of the determined compression ratios with a second compression threshold;
- selecting for output the input data block and appending a null compression descriptor to the input data block, if all of the encoder compression ratios do not meet the second compression threshold; and
- selecting for output the encoded data block having the highest compression ratio and appending a corresponding compression type descriptor to the selected encoded data block, if at least one of the compression ratios meet the second compression threshold.
13. The method of claim 9, wherein the step of performing content dependent compression comprises the steps of: - selecting one or more encoders associated with the identified data type and encoding the data block with the selected encoders to provide a plurality of encoded data blocks;
- determining a compression ratio obtained for each of the selected encoders;
- comparing each of the determined compression ratios with the first compression threshold;
- selecting for output the input data block and appending a null compression descriptor to the input data block, if all of the encoder compression do not meet the first compression threshold; and
- selecting for output the encoded data block having the highest compression ratio and appending a corresponding compression type descriptor to the selected encoded data block, if at least one of the compression ratios meet the first compression threshold.
14. The method of claim 9, wherein the step of performing content dependent data compression when the data type of the data block is identified, further comprises the steps of: - estimating a desirability of using of one or more encoder types based one characteristics of the data block; and
- compressing the data block using one or more desirable encoders.
15. The method of claim 9, wherein the step of performing content independent data compression on the data block, if the data type of the data block is not identified, comprises the steps of: - estimating a desirability of using of one or more encoder types based one characteristics of the data block; and
- compressing the data block using one or more desirable encoders.
16. The method of claim 9, wherein the methods steps are tangibly embodied as program instructions on a program storage device, wherein the instructions are executable by a machine to perform the method steps. 17. A program storage device readable by a machine, tangibly embodying a program instructions executable by the machine to perform method steps for compressing data, the method steps comprising: - receiving an input data stream comprising a plurality of disparate data types;
- compressing the input data stream using each of a plurality of different encoders; and
- generating an encoded data stream by selectively combining compressed data blocks output from each of the encoders based on compression ratios obtained by the encoders.
18. The program storage device of claim 17, wherein the instructions for performing the step of compressing the input data stream comprise instructions for compressing each data block in the input data stream using each of the encoders, and wherein the instructions for performing the step of generating the encoded data stream comprise instructions for: - for each data block in the input stream,
- determining a compression ratio obtained from each of the encoders;
- selecting for output the input data block and appending a null compression descriptor to input the data block, if no compression ratio exceeds a predetermined threshold; and
- selecting for output the encoded data block having the greatest compression ratio associated therewith that meets the predetermined threshold and appending a compression type descriptor to the selected encoded data block.
19. The program storage device of claim 18, further comprising instructions for performing the step of applying a predetermined timing constraint to the compression process to provide real-time data compression of the input data stream. 20. The program storage device of 19, wherein the instructions for performing the step of applying a predetermined time constraint comprise instructions for performing the steps of: - initializing a timer with a user-specified time interval upon commencing compression of an input data block; and
- terminating the encoding step upon the earlier of one of the expiration of the timer and the completion of the encoding of the input data block by all of the plurality of encoders;
- wherein the step of determining the compression ratios is only performed for the encoders that have completed encoding of the input data block before expiration of the timer.
21. The program storage device of claim 17, wherein the instructions for performing the step of generating the encoded data stream comprise instructions for tagging each compressed data block with a compression type descriptor. 22. The program storage device of claim 17, wherein the step of generating the encoded data stream comprises combining uncompressed data blocks from the input data stream with the compressed data blocks and tagging each uncompressed data block with a null compression descriptor. |