view audioio/AudioTargetFactory.cpp @ 17:9149ecec02fc

* A bit more work on main window / document / commands stuff. This is still pretty unstable. * Enable CSV file reader also to read files with other separators (e.g. .lab files with space separators) * Show "(R)" on waveform display when resampling during playback * Add ability to import additional audio files (can't process them yet) * Fixes to spectrogram cache for multiple views * Fix to avoid floating-point exception in sparse model when resolution not set yet
author Chris Cannam
date Mon, 06 Mar 2006 17:20:25 +0000
parents df5923e33d01
children c606d3ffa397
line wrap: on
line source
/* -*- c-basic-offset: 4 -*-  vi:set ts=8 sts=4 sw=4: */

/*
    A waveform viewer and audio annotation editor.
    Chris Cannam, Queen Mary University of London, 2005-2006
    
    This is experimental software.  Not for distribution.
*/

#include "AudioTargetFactory.h"

#include "AudioJACKTarget.h"
#include "AudioCoreAudioTarget.h"
#include "AudioPortAudioTarget.h"

#include <iostream>

AudioCallbackPlayTarget *
AudioTargetFactory::createCallbackTarget(AudioCallbackPlaySource *source)
{
    AudioCallbackPlayTarget *target = 0;

#ifdef HAVE_JACK
    target = new AudioJACKTarget(source);
    if (target->isOK()) return target;
    else {
	std::cerr << "WARNING: AudioTargetFactory::createCallbackTarget: Failed to open JACK target" << std::endl;
	delete target;
    }
#endif

#ifdef HAVE_COREAUDIO
    target = new AudioCoreAudioTarget(source);
    if (target->isOK()) return target;
    else {
	std::cerr << "WARNING: AudioTargetFactory::createCallbackTarget: Failed to open CoreAudio target" << std::endl;
	delete target;
    }
#endif

#ifdef HAVE_DIRECTSOUND
    target = new AudioDirectSoundTarget(source);
    if (target->isOK()) return target;
    else {
	std::cerr << "WARNING: AudioTargetFactory::createCallbackTarget: Failed to open DirectSound target" << std::endl;
	delete target;
    }
#endif

#ifdef HAVE_PORTAUDIO
    target = new AudioPortAudioTarget(source);
    if (target->isOK()) return target;
    else {
	std::cerr << "WARNING: AudioTargetFactory::createCallbackTarget: Failed to open PortAudio target" << std::endl;
	delete target;
    }
#endif

    std::cerr << "WARNING: AudioTargetFactory::createCallbackTarget: No suitable targets available" << std::endl;
    return 0;
}