annotate audioio/AudioTargetFactory.cpp @ 43:3c5756fb6a68

* Move some things around to facilitate plundering libraries for other applications without needing to duplicate so much code. sv/osc -> data/osc sv/audioio -> audioio sv/transform -> plugin/transform sv/document -> document (will rename to framework in next commit)
author Chris Cannam
date Wed, 24 Oct 2007 16:34:31 +0000
parents
children ccdc5b30e54c
rev   line source
Chris@43 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@43 2
Chris@43 3 /*
Chris@43 4 Sonic Visualiser
Chris@43 5 An audio file viewer and annotation editor.
Chris@43 6 Centre for Digital Music, Queen Mary, University of London.
Chris@43 7 This file copyright 2006 Chris Cannam.
Chris@43 8
Chris@43 9 This program is free software; you can redistribute it and/or
Chris@43 10 modify it under the terms of the GNU General Public License as
Chris@43 11 published by the Free Software Foundation; either version 2 of the
Chris@43 12 License, or (at your option) any later version. See the file
Chris@43 13 COPYING included with this distribution for more information.
Chris@43 14 */
Chris@43 15
Chris@43 16 #include "AudioTargetFactory.h"
Chris@43 17
Chris@43 18 #include "AudioJACKTarget.h"
Chris@43 19 #include "AudioCoreAudioTarget.h"
Chris@43 20 #include "AudioPortAudioTarget.h"
Chris@43 21
Chris@43 22 #include <iostream>
Chris@43 23
Chris@43 24 AudioCallbackPlayTarget *
Chris@43 25 AudioTargetFactory::createCallbackTarget(AudioCallbackPlaySource *source)
Chris@43 26 {
Chris@43 27 AudioCallbackPlayTarget *target = 0;
Chris@43 28
Chris@43 29 #ifdef HAVE_JACK
Chris@43 30 target = new AudioJACKTarget(source);
Chris@43 31 if (target->isOK()) return target;
Chris@43 32 else {
Chris@43 33 std::cerr << "WARNING: AudioTargetFactory::createCallbackTarget: Failed to open JACK target" << std::endl;
Chris@43 34 delete target;
Chris@43 35 }
Chris@43 36 #endif
Chris@43 37
Chris@43 38 #ifdef HAVE_COREAUDIO
Chris@43 39 target = new AudioCoreAudioTarget(source);
Chris@43 40 if (target->isOK()) return target;
Chris@43 41 else {
Chris@43 42 std::cerr << "WARNING: AudioTargetFactory::createCallbackTarget: Failed to open CoreAudio target" << std::endl;
Chris@43 43 delete target;
Chris@43 44 }
Chris@43 45 #endif
Chris@43 46
Chris@43 47 #ifdef HAVE_DIRECTSOUND
Chris@43 48 target = new AudioDirectSoundTarget(source);
Chris@43 49 if (target->isOK()) return target;
Chris@43 50 else {
Chris@43 51 std::cerr << "WARNING: AudioTargetFactory::createCallbackTarget: Failed to open DirectSound target" << std::endl;
Chris@43 52 delete target;
Chris@43 53 }
Chris@43 54 #endif
Chris@43 55
Chris@43 56 #ifdef HAVE_PORTAUDIO
Chris@43 57 target = new AudioPortAudioTarget(source);
Chris@43 58 if (target->isOK()) return target;
Chris@43 59 else {
Chris@43 60 std::cerr << "WARNING: AudioTargetFactory::createCallbackTarget: Failed to open PortAudio target" << std::endl;
Chris@43 61 delete target;
Chris@43 62 }
Chris@43 63 #endif
Chris@43 64
Chris@43 65 std::cerr << "WARNING: AudioTargetFactory::createCallbackTarget: No suitable targets available" << std::endl;
Chris@43 66 return 0;
Chris@43 67 }
Chris@43 68
Chris@43 69