Create drivers using a factory system.
[stretchplayer:stretchplayer.git] / src / AudioSystem.cpp
1 /*
2  * Copyright(c) 2009 by Gabriel M. Beddingfield <gabriel@teuton.org>
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY, without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17  *
18  */
19
20 #include "config.h"
21 #include "Configuration.hpp"
22 #include <stdexcept>
23
24 #ifdef AUDIO_SUPPORT_JACK
25 #include "JackAudioSystem.hpp"
26 #endif
27 #ifdef AUDIO_SUPPORT_ALSA
28 #include "AlsaAudioSystem.hpp"
29 #endif
30
31 namespace StretchPlayer
32 {
33
34     AudioSystem* audio_system_factory(int driver)
35     {
36         AudioSystem* d = 0;
37         switch(driver) {
38 #ifdef AUDIO_SUPPORT_JACK
39         case Configuration::JackDriver:
40             d = new JackAudioSystem;
41 #endif
42 #ifdef AUDIO_SUPPORT_ALSA
43         case Configuration::AlsaDriver:
44             d = new AlsaAudioSystem;
45 #endif
46         default:
47             throw std::runtime_error("Unsupported driver requested");
48         }
49         return d;
50     }
51
52 } // namespace StretchPlayer
53