/* * vim: softtabstop=4 shiftwidth=4 cindent foldmethod=marker expandtab * * $LastChangedDate$ * $Revision$ * $LastChangedBy$ * $URL$ * * Copyright 2009-2011 Eric Connell * Copyright 2010-2011 Roman Tetelman * * This file is part of Mangler. * * Mangler is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Mangler is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Mangler. If not, see . */ #ifndef _MANGLER_BACKEND_H #define _MANGLER_BACKEND_H // circular dependencies in C(++) are fun! class ManglerAudioDevice; class ManglerBackend { public: virtual bool open(int type, Glib::ustring device, int rate, int channels) = 0; virtual void close(bool drain = false) = 0; virtual bool write(uint8_t* sample, uint32_t length, int channels) = 0; virtual bool read(uint8_t* buf) = 0; virtual Glib::ustring getAudioSubsystem(void) = 0; static ManglerBackend* getBackend(Glib::ustring audioSubsystem, uint32_t rate, uint8_t channels, uint32_t pcm_framesize); virtual ~ManglerBackend(); static void getDeviceList(Glib::ustring audioSubsystem, std::vector& input, std::vector& output); }; #endif