diff options
author | Sebastian Koslowski <koslowski@kit.edu> | 2016-11-17 21:20:55 +0100 |
---|---|---|
committer | Sebastian Koslowski <koslowski@kit.edu> | 2016-11-17 21:21:08 +0100 |
commit | 7f25c0120fc7bc6a6eeee87878cf387647d51614 (patch) | |
tree | ab510060a2c5625d00e7f19f4c7d699861b98cea /gr-audio/lib/windows/windows_source.h | |
parent | e1acf2d27760d606cc7cba200aa380e885f2ffaf (diff) | |
parent | 1d50d70f0b990b909357a803881955623dea94d8 (diff) |
Merge remote-tracking branch 'upstream/next' into gtk3
Diffstat (limited to 'gr-audio/lib/windows/windows_source.h')
-rw-r--r-- | gr-audio/lib/windows/windows_source.h | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/gr-audio/lib/windows/windows_source.h b/gr-audio/lib/windows/windows_source.h index 9814d12f54..edb89a73ce 100644 --- a/gr-audio/lib/windows/windows_source.h +++ b/gr-audio/lib/windows/windows_source.h @@ -23,9 +23,17 @@ #ifndef INCLUDED_AUDIO_WINDOWS_SOURCE_H #define INCLUDED_AUDIO_WINDOWS_SOURCE_H +#define WIN32_LEAN_AND_MEAN +#define NOMINMAX // stops windef.h defining max/min under cygwin + +#include <windows.h> +#include <mmsystem.h> + #include <gnuradio/audio/source.h> #include <string> +#include <boost/lockfree/spsc_queue.hpp> + namespace gr { namespace audio { @@ -38,11 +46,22 @@ namespace gr { */ class windows_source : public source { - int d_sampling_freq; - std::string d_device_name; - int d_fd; - short *d_buffer; - int d_chunk_size; + int d_sampling_freq; + std::string d_device_name; + int d_fd; + LPWAVEHDR *lp_buffers; + DWORD d_chunk_size; + DWORD d_buffer_size; + HWAVEIN d_h_wavein; + WAVEFORMATEX wave_format; + + protected: + int string_to_int(const std::string & s); + int open_wavein_device(void); + MMRESULT is_format_supported(LPWAVEFORMATEX pwfx, UINT uDeviceID); + bool is_number(const std::string& s); + UINT find_device(std::string szDeviceName); + boost::lockfree::spsc_queue<LPWAVEHDR> buffer_queue{ 100 }; public: windows_source(int sampling_freq, @@ -54,6 +73,14 @@ namespace gr { gr_vector_void_star & output_items); }; + static void CALLBACK read_wavein( + HWAVEIN hwi, + UINT uMsg, + DWORD_PTR dwInstance, + DWORD_PTR dwParam1, + DWORD_PTR dwParam2 + ); + } /* namespace audio */ } /* namespace gr */ |