Hi,
I am considering starting a project to do distributed MP3 encoding, over
the internet, similar in concept to the www.distributed.net distributed
cryptoanalysis project. For those not familiar with distributed.net,
basically they run servers which dole out blocks of encryption keyspace to
clients which are distributed over the internet. To participate, you just
need to install and run the client software, and it sits in the background
and happily tries key after key to break the ciphertext, and reports its
results back to the main server.
Now, it has occured to me that any gain in encoding time by parallizing
the process might be counteracted by the time spent sending large blocks
of audio data over the internet from server to client. On the other hand,
there are a lot of Sun workstations which sit idle on the local area
network at my work after close of business :), and my main motivation for
doing this is to learn distributed processing and networking/socket
programming. MP3 data just happens to be a really cool payload, and more
power to me (and the MP3 community at large) if it actually works ! :-)
While brings me to LAME. I neither 1) understand the MP3 encoding
algorithm, nor 2) want to spend time learning the algorithm in depth and
then coding it when source is already available, if I can avoid doing it.
Hence my interest in LAME.
My questions to the list, particularly to those who understand the
encoding algorithm well, and LAME's implementation of it, is this: 1) is
the encoding algorithm parallelizable [sic], and 2) is the LAME code
modular enough, or easy to make it so that a central server could dole out
blocks of raw audio data and have multiple clients encode and return the
encoded/compressed blocks?
Based on my limited understanding of the algorithm and LAME code analysis,
the answer appears to be no. It seems that the nth block requires
information about the (n-1)th block. Unfortunately I don't have my
analysis notes of the LAME source code, but I do recall that the main
encoding function had a number of static variables which appeared to
figure largely in the encoding code, which suggests dependency on previous
blocks.
On the other hand, I have seen the Martinez paper linked to from the LAME
pages, and while his academic bent makes it hard to glean simple answers
to the questions I have posed here, he does conclude by saying "The
results encourage the use of parallel processing techniques for the
implementation of other sections of the MPEG-1 encoder." (he only
considered a parallel implementation of one part of the encoding process).
So, what does everyone think? I'm hoping someone who knows the
algorithm and LAME can give me a simple boolean answer as to whether
it's possible and worth it to spend further time to use LAME as the
basis for a distributed MP3 encoder.
-Steve
-----------------
Stephen J. Scheck
[EMAIL PROTECTED]
--
MP3 ENCODER mailing list ( http://geek.rcc.se/mp3encoder/ )