Along the same line as Frederick, myself and another university student were 
able to implement a multi threaded FLAC
encoder, but using Intel's Threading Building Blocks (TBB) package. We saw 
similar near-linear speedup.

Our solution is a bit more convoluted since we were learning the API, TBB and 
writing the encoder all in one 6 week
period. We used a pipeline model on the input stream, and considered each token 
in the pipeline to be a single block of
audio.

We also had to add some pipeline-safe functions to libFLAC. All of this is 
detailed in our project report, so I won't
repeat it here.

I agree with Frederick in that the existing encoding API was obviously designed 
for serial execution, and any internal
threading support would be messy. We had to come up with quite a few tricks to 
modify as little of libFLAC as possible.

Project report, patches and example encoder: 
http://rhubarbtech.com/things/pflac.tar.gz

Chris Peplin
_______________________________________________
Flac-dev mailing list
[email protected]
http://lists.xiph.org/mailman/listinfo/flac-dev

Reply via email to