// // 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. // #ifndef LIBTGVOIP_AUDIOINPUTWAVE_H #define LIBTGVOIP_AUDIOINPUTWAVE_H #include #include #include #include "../../audio/AudioInput.h" namespace tgvoip{ namespace audio{ class AudioInputWave : public AudioInput{ public: AudioInputWave(std::string deviceID); virtual ~AudioInputWave(); virtual void Configure(uint32_t sampleRate, uint32_t bitsPerSample, uint32_t channels); virtual void Start(); virtual void Stop(); virtual void SetCurrentDevice(std::string deviceID); static void EnumerateDevices(std::vector& devs); private: static void CALLBACK WaveInProc(HWAVEIN hwi, UINT uMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, DWORD_PTR dwParam2); void OnData(WAVEHDR* hdr); HWAVEIN hWaveIn; WAVEFORMATEX format; WAVEHDR buffers[4]; bool isRecording; }; } } #endif //LIBTGVOIP_AUDIOINPUTWAVE_H