Swiftgram/audio/AudioOutput.cpp
Grishka bfde1a4be3 Update to v0.4
Moved public API classes into namespace tgvoip (CVoIPController -> tgvoip::VoIPController, CVoIPServerConfig -> tgvoip::ServerConfig)
Endpoint is now a class instead of a struct; also, IP addresses are now wrapped into objects instead of relying on in_addr and in6_addr
Full Windows port (Win32 threading + Winsock + WaveOut/WaveIn)
Added support for ALSA audio I/O on Linux (closes #2)
Abstracted away low-level networking to make it more portable
Minor bugfixes
2017-04-17 21:57:07 +03:00

63 lines
1.4 KiB
C++

//
// libtgvoip is free and unencumbered public domain software.
// For more information, see http://unlicense.org or the UNLICENSE file
// you should have received with this source code distribution.
//
#include "AudioOutput.h"
#if defined(__ANDROID__)
#include "../os/android/AudioOutputOpenSLES.h"
#include "../os/android/AudioOutputAndroid.h"
#elif defined(__APPLE__)
#include <TargetConditionals.h>
#if TARGET_OS_IPHONE
#include "../os/darwin/AudioOutputAudioUnit.h"
#else
#include "../os/darwin/AudioOutputAudioUnitOSX.h"
#endif
#elif defined(_WIN32)
#include "../os/windows/AudioOutputWave.h"
#elif defined(__linux__)
#include "../os/linux/AudioOutputALSA.h"
#else
#error "Unsupported operating system"
#endif
#if defined(__ANDROID__)
int CAudioOutput::systemVersion;
#endif
CAudioOutput *CAudioOutput::Create(){
#if defined(__ANDROID__)
if(systemVersion<21)
return new CAudioOutputAndroid();
return new CAudioOutputOpenSLES();
#elif defined(__APPLE__)
return new CAudioOutputAudioUnit();
#elif defined(_WIN32)
return new tgvoip::audio::AudioOutputWave();
#elif defined(__linux__)
return new tgvoip::audio::AudioOutputALSA();
#endif
}
CAudioOutput::CAudioOutput(){
failed=false;
}
CAudioOutput::~CAudioOutput(){
}
int32_t CAudioOutput::GetEstimatedDelay(){
#if defined(__ANDROID__)
return systemVersion<21 ? 150 : 50;
#endif
return 60;
}
float CAudioOutput::GetLevel(){
return 0;
}