So, like I briefly blogged about earlier, I’m in the Google Summer of Code for the FFmpeg project. I’m working with my program mentor Vitor Sessak in order to create a flexible filtering audio filtering library that can be used in ffmpeg, or any other program that needs to do audio filtering. The end goal is to have a library that is able to configure audio filters in any way you want to use them. For instance, with the way my project looks, you should be able to take two audio streams, bump up the volume on one of the streams, apply an equalizer on the other, and mix them together, and normalize the combined output (all in real time!). I’m hoping it should be pretty useful once its done.
This week I’ve made some pretty good progress on the whole thing. While not in really a useable state yet, I did manage to chain simple ‘proto-filters’ together, have the filters ingest some data, and run the chain, all good steps toward completion. I still need to complete some format negotiation between the filters, and work on optimizations and data handling. The way its looking, I’m also mildly confident that splitting the filtering off into its own thread would be a pretty easy task, all things considered. That’s pretty far down the road, though.
My next steps are to clean up the programming interface, and refine how the data is passed down the chain, so to avoid performance hits in copying buffers all around. Once that’s done (hopefully by the SoC’s midterm review in a few weeks), I’ll send the code for a general brainstorming thread on the FFmpeg mailing lists to see what the other developers think of it.