From: Albert S. <al...@mi...> - 2010-05-25 04:04:30
|
Hi guys, I've just merged the sadness_ssplugin branch into trunk. A significant amount of work was done in this branch in order to refactor our SoundSource classes so that the SoundSourceM4A class could be compiled as a dynamic library and loaded at runtime. If you compile Mixxx from source, the M4A plugin is built by default. The source code is located in the "plugins/soundsourcem4a" directory in our source tree. Please do a "sudo scons install" after compiling in order to install the plugin system-wide. The install path is "[prefix]/lib/mixxx/plugins/soundsource/". In the "plugins/build" directory, there is a script for building a .deb package containing the M4A plugin. There is also an Inno Setup project file that generates a Windows installer, and an OS X Installer project file build a .pkg installer. Due to legal uncertainty, we will not be distributing the M4A playback plugin ourselves. M4A playback will not work out-of-the-box in Mixxx. >From a user experience perspective, we know this is less than ideal, especially considering the popularity of the iTunes Music Store, which distributes M4As. The M4A plugin is a temporary solution - It's very important for us to write a SoundSource class that uses an AAC decoder that's provided by the operating system, be it through the Quicktime API, DirectShow, or a wrapper like Phonon. Doing so will eliminate the distribution problems we face with the M4A plugin because the AAC decoder would not have to be distributed. Attached is a screenshot of what the Library preferences pane looks like now. The "Available Online..." button opens up a web browser to our Mixxx Add-ons Wiki page. Lastly, I want to acknowledge that the build system is a bit of a mess for this. I forked our SConscript in the soundsourcem4a directory, but it's overkill. The SoundSource plugins are tied to Qt because I didn't want to rewrite all those classes without Qt, so the SConscript in that directory does detection for a bunch of libraries. The build is hierarchical - our root SConstruct does call the SConscript in the plugins directory, and the list of DLLs that are created does get passed into our usual SConscript. However, the Configure environment should be shared between these two SConscripts. If that was done, I suspect 99% of the soundsourcem4a/SConscript file would be eliminated.... Thanks, Albert P.S. I finally got rid of that defs_audiofiles.h that I disliked so much. :) The supported audio filetypes are enumerated at runtime after all the plugins are loaded, and SoundSourceProxy has static functions that replace the hardcoded constants previously provided by defs_audiofiles.h. |