Data Compression/Asymmetric Compression

< Data Compression

Asymmetric Compression

The idea of Asymmetric Compression is quite simple, given a method of processing compression in such a way as to continually improve the compression ratio[citation needed], A server would be able to pack the data into a tighter and tighter file structure[citation needed], while replacing the data with a series of instructions that would then recover the data more quickly and in fewer steps. An example of this might be a program that tries different combinations of order injection or entropy injection until it finds the one that allows the greatest compression. Then incorporates a signifier that allows the decompression system to find the exact order/entropy injection used so that it can reverse the effects once the new compression step is completed, as part of the decompression algorythm. [1]

This concept is attractive to the server industry, however so far no such algorythm has become practical.


When a data compression algorithm takes about the same time to generate a compressed file as it does to uncompress that file, we call that algorithm "symmetric".

When a data compression algorithm takes much longer to generate a compressed file than it does to uncompress a file, we call that algorithm "asymmetric".

(Are there any cases where a data compression algorithm takes much *less* time to generate a compressed file than it does to uncompress the file?)


All video compression algorithms use asymmetric compression.

In particular, motion compensation is notorious for requiring a lot of time on the compression side. To get the best compression, the motion compensation subroutine during compression must compare every 16x16 block of pixels in the current frame with every 16x16 block of pixels in the previous frame, which takes many, many comparisons, and figure out which block of the previous frame gives the best match. During decompression, the motion compensation routine takes the coordinates of the "best match" from the compressed data stream, and copies the data from that location in the previous frame to the current 16x16 block of pixels in the current frame.

There are many computers that are plenty fast enough to play back motion-compensated compressed video in real time, but not quite fast enough to motion-compensate and compress video in real time. If you have such a computer, and you want to compress video, you can either:


Further reading

  1. "Data Compression Explained" by Matt Mahoney: "In particular, it is not possible to compress random data or compress recursively."
This article is issued from Wikibooks. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.