diff options
author | Michele Calgaro <michele.calgaro@yahoo.it> | 2020-12-06 19:28:06 +0900 |
---|---|---|
committer | Michele Calgaro <michele.calgaro@yahoo.it> | 2020-12-06 19:28:06 +0900 |
commit | 00d4f92b717fbcbed6f9eee361975d6ee5380d59 (patch) | |
tree | 043b5970d66e539e1fbf6dde03440d6569e34c4e /examples/testasubsys.cc | |
parent | 2f53bfe61c8ee78ff36ac6c66ae714b01e407b33 (diff) | |
download | arts-00d4f92b717fbcbed6f9eee361975d6ee5380d59.tar.gz arts-00d4f92b717fbcbed6f9eee361975d6ee5380d59.zip |
Renaming of files in preparation for code style tools.
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
Diffstat (limited to 'examples/testasubsys.cc')
-rw-r--r-- | examples/testasubsys.cc | 142 |
1 files changed, 0 insertions, 142 deletions
diff --git a/examples/testasubsys.cc b/examples/testasubsys.cc deleted file mode 100644 index b70bf9d..0000000 --- a/examples/testasubsys.cc +++ /dev/null @@ -1,142 +0,0 @@ - /* - - Copyright (C) 2000 Stefan Westerfeld - stefan@space.twc.de - - This program 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 2 of the License, or - (at your option) any later version. - - This program 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 this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - Permission is also granted to link this program with the Qt - library, treating Qt like a library that normally accompanies the - operating system kernel, whether or not that is in fact the case. - - */ - -#include <iostream> -#include <math.h> -#include "audiosubsys.h" -#include "convert.h" -#include "dispatcher.h" - -using namespace std; -using namespace Arts; - -class SinTest : public ASProducer { -protected: - int audiofd; - int done; - AudioSubSystem *as; - bool attached; - -public: - SinTest(); - virtual ~SinTest(); - void needMore(); - void run(long samples); -}; - -SinTest::SinTest() : done(0), as(AudioSubSystem::the()) -{ - // initialize and open audio subsystem (defaults to 44kHz, 16bit, stereo) - attached = as->attachProducer(this); - if(!attached) - { - cout << "audio subsystem is already used?" << endl; - } - else - { - if(as->open() == false) - { - cout << "audio subsystem init failed (" - << as->error() << ")" << endl; - audiofd = -1; - } - else - audiofd = as->selectWriteFD(); - } -} - -SinTest::~SinTest() -{ - // deinitialize the audio subsystem - if(attached) - as->detachProducer(); -} - -void SinTest::run(long samples) -{ - // run this loop until enough samples are produced - while(attached && audiofd >= 0 && (done < samples)) - { - fd_set wfds, efds; - FD_ZERO(&wfds); - FD_ZERO(&efds); - FD_SET(audiofd, &wfds); - FD_SET(audiofd, &efds); - - // look if the audio filedescriptor becomes writeable - int result = select(audiofd+1,0,&wfds,&efds,0); - if(result > 0) - { - // if yes, tell the audio subsystem to do something about it - if(FD_ISSET(audiofd, &wfds)) - as->handleIO(AudioSubSystem::ioWrite); - if(FD_ISSET(audiofd, &efds)) - as->handleIO(AudioSubSystem::ioExcept); - } - else - { - cout << "select returned " << result << endl; - } - } -} - -/* - * needMore is a callback by the audio subsystem, which is made as soon as - * the internal buffers need a refill - */ -void SinTest::needMore() -{ - float left[100], right[100]; - unsigned char out[400]; - - // generate two waves, one 440 Hz (left), one 880Hz (right) - for(int i=0;i<100;i++) - { - left[i] = sin((float)i*6.28/100.0); - right[i] = sin((float)i*6.28/50.0); - } - convert_stereo_2float_i16le(100, left, right, out); - - // write them to the audio subsystem - as->write(out,400); - done += 100; -} - -/* - * This is intended to help testing the audio subsystem with different - * hardware without needing to use the whole server. - * - * Warning: this is *not* an example how to use aRts (there are others), - * but a simple test program for debugging purposes. - */ -int main() -{ - Dispatcher d; // to get startup classes executed - - // the test, generate 88100 samples (2 seconds) of pure sine wave test data - SinTest s; - s.run(88100); - return 0; -} |