1 #ifndef _AUDIOWAVEOUT__H_
2 #define _AUDIOWAVEOUT__H_
5 #include "audio_def.hpp"
6 #include "audio_format.hpp"
7 #include "audio_producer.hpp"
11 _AUDIO_NAMESPACE_START_
13 enum audio_waveout_status { WAVEOUT_NOTREADY, WAVEOUT_READY,
14 WAVEOUT_PLAYING, WAVEOUT_ERR,
15 WAVEOUT_PAUSED, WAVEOUT_STOP
23 friend class audio_buffer;
30 static DWORD WINAPI playing_procedure( LPVOID );
34 HANDLE wakeup_playthread;
42 WAVEFORMATEX wave_format;
43 WAVEHDR * wave_headers;
44 HWAVEOUT waveout_handle;
50 const audio_format & aud_info;
51 audio_producer & audio_buf;
59 // Audio Playing Thread id
68 audio_waveout_status status;
78 // The temporary buffers for the audio
79 // data outgoing to the waveout device
80 // and its size, and its total number.
84 //base address for entire memory
87 //size in bytes for the entire memory
90 //number of little buffers
99 // Protected Functions
103 void alloc_buffers_mem_( unsigned int, float );
104 void free_buffers_mem_( void );
107 void init_headers_( void );
108 void prep_headers_( void );
109 void unprep_headers_( void );
123 audio_waveout( const audio_format & aud_fmt,
124 audio_producer & a_buf )
126 : wave_headers( 0 ), aud_info( aud_fmt ),
127 audio_buf( a_buf ), status( WAVEOUT_NOTREADY ),
128 main_buffer( 0 ), mb_size( 0 ),
129 buffers( _AUDIO_DEFAULT_WAVEOUTBUFFERS )
133 // Initializing internal wavein data
150 ~audio_waveout( void )
167 audio_waveout_status current_status( void )
181 _AUDIO_NAMESPACE_END_
186 #endif //ifdef _AUDIOWAVEOUT__H_