My favorites | Sign in
Project Logo
                
Search
for
Updated Sep 06, 2007 by qub333
Labels: Featured, Phase-Design
DevelopmentPlans  
Plans for future development, but not quite a roadmap.

Introduction

In short, this project can be broken down into 3 main components

  • Port FFT computations to a cross-platform solution
  • Port the media backend (namely mirage-decode) to a cross-platform solution, or implement a pluggable solution with different backends based on environment
  • Provide a frontend for windows.

Details

Porting FFT

The current solution uses P/Invoke to load a C library (libfftw3) for ultra-fast fft computations. The only problem is, while their is a windows build of libfftw3, the cost of dynamic lib loading in windows is far greater. When combined with the limited amount of time spent in the FFT computation loops, I am inclined to port this portion to a pure-managed code solution. While we will lose some execution time, even if the FFT time quadrupaled, it wouldn't even scratch the time we spend decoding the audio files. However, given the heavy-computing nature of a FFT, there aren't many robust C# implementations, we will probably end up just writing a clone of libfftw3 from scratch.

Porting AudioStreamReader

There are a few options here, the easiest short-term solution is have a mirage-decoder.bat which uses windows builds of many of the same libraries to accomplish roughly the same thing. However, this has the same dependency heck, and ignores countless hours spent by other developers creating pluggable systems like gstreamer. Should a gstreamer implementation be written for Linux, we could examine building it on windows, however, in its current state, a successful and speedy build does not seem likely. However, it is very possible that we could utilize the windows media API or the iTunes/quicktime conversion queue in some fashion.

Windows Frontend

iTunes is by far the most popular music management suite for Windows, despite its mediocre plugin system, interfacing to provide an interface similar to that found in the banshee plugin shouldn't be impossible. Although it will be tedious, as certain needed elements are not exposed via the COM interface, so we will have to parse the itunes database AND interact with it over COM.


Sign in to add a comment
Hosted by Google Code