The opinions expressed here are mine and not of my employer.
Dear all,
I recently saw Adam's 1000 to 1 compression at work. He brought in his
Apple Compatible Computer, (which had no disk light) and monitor into
work to show us this truly impressive video and audio compression. He
setup his machine took a floppy out and copied a file into a folder on
his desktop. He proceeded to play the file which appeared on the
attached TV. After the demo had played for 1 minute and 8 seconds I
asked to see a list of the top 10 largest files on his hard disk. He
did a search for files that were over 60 Meg, which produce nothing when
I suggest he look for files that were over 10 meg he refused and said
that his application was 60 meg and didn't want me to see it's name as
it would give away his secret. Some interesting things to note about
this 60 Meg application:
1. He claims his program is written in C++, I've been writing in C++ for
10 years and have never even come close to writing a 60 Meg
application. He would have to write an enormous amount of code to even
come close to this, Netscape source comes to 73 Meg from which you get a
9 Meg executable. He would have to write about 486.67 meg of source to
generate a 60 meg application. Most programs use DLLs and try to keep
the application small, it saves on compile time and simplifies the
program structure.
2. A 1 minute 8 seconds AVI would be around 60 Megs.
3. If his program is 60 megs, such a sophisticated and complex algorithm
couldn't be revealed in an application name. And even if it could why
doesn't he simply rename it?
4. He checked first on whether the file finder actually display the file
size, which is something a programmer who just wrote a 60 meg
application would surely know.
Some technical point about his compression:
1. According to Adam each frame is unique and doesn't build on the next
or previous. This means that each data packet he receives is discrete.
i.e. a 28,800 bps modem will transfer 2,880 bytes per seconds ( 8 bits
per byte 1 stop 1 start). This works out to be 115.2 bytes per frame.
A normal frame is:
768 x 576 x 3 = 1,327,104 Bytes per frame for image data
22254 8-bit linear unsigned mono ( actually it's 22254.5454Hz misquoted
22 kHz audio we get)
Historical note: 22254.5454... was the horizontal scan rate of the
original 128k Mac.
Total data per frame = 1,349,358 bytes per frame
or
33,733,850 Bytes per second.
Compression rate of 11,734 : 1
His claim of 1000 to 1 is incorrect, since he's quoting a compression of
an already compressed data, He should really be quoting the compression
of the raw data.
2. Adam claimed he could display 25 different images in a second.
According to Adam all packets are discrete this means he has been able
to store an image in < 115.2 bytes. The number permutations in 115^8 =
30,590,228,625,390,625 this may seem like a large number but in real
terms, if every one on the planet walked around with a video camera in
90 minutes we would exceed the number of uniquely identifiable images
using Adams form of compression. i.e.
90 minutes of film = 8,100,000 images
4,000,000,000 people filming 90 minutes = 32,400,000,000,000,000 images
It's simply a math problem, you can't display all possible images on a
768x568 display in 115 bytes.
3. Adam claims you don't need a decompressor since it decompresses
itself. During the demo he claimed the adobe viewer was decompressing
his file on the fly. An AVI is data, it is not a program, it has no
means of performing the basic ALU operations like if, then, else, let
alone the most advanced image compression the world has ever known. In
an environment like the Mac all files are identified as either data or
executables. Data files like AVIs have no CODe or Stack space
allocated. It's a fundamental law of the operating system.
4. Real-time compression, he has the world's most sophisticated image
and sound compression algorithm, and unless he has written a device
driver to interface a DSP, (Digital Signal Processor) card which I doubt
since he has a 60 meg application which is where the compression takes
place. He has to convert 33,733,850 bytes of data every second, which
means on a 1,000 MIP machine each byte of data only gets 29 instructions
per byte.
Think about what he's doing, he's taking 11,734 bytes of data and
storing them in 1 byte. I don't believe it will ever be possible. And
I know it's not happening here.
Regards,
Ben