mirror of https://github.com/procxx/kepka.git
				
				
				
			
		
			
				
	
	
		
			109 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			5.2 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.
 | |
| //
 | |
| 
 | |
| #ifndef LIBTGVOIP_PULSEAUDIOLOADER_H
 | |
| #define LIBTGVOIP_PULSEAUDIOLOADER_H
 | |
| 
 | |
| #include <pulse/pulseaudio.h>
 | |
| 
 | |
| #define DECLARE_DL_FUNCTION(name) static typeof(name)* _import_##name
 | |
| 
 | |
| namespace tgvoip{
 | |
| class PulseAudioLoader{
 | |
| public:
 | |
| 	static bool IncRef();
 | |
| 	static void DecRef();
 | |
| 
 | |
| 	DECLARE_DL_FUNCTION(pa_threaded_mainloop_new);
 | |
| 	DECLARE_DL_FUNCTION(pa_threaded_mainloop_get_api);
 | |
| 	DECLARE_DL_FUNCTION(pa_context_new);
 | |
| 	DECLARE_DL_FUNCTION(pa_context_set_state_callback);
 | |
| 	DECLARE_DL_FUNCTION(pa_threaded_mainloop_lock);
 | |
| 	DECLARE_DL_FUNCTION(pa_threaded_mainloop_unlock);
 | |
| 	DECLARE_DL_FUNCTION(pa_threaded_mainloop_start);
 | |
| 	DECLARE_DL_FUNCTION(pa_context_connect);
 | |
| 	DECLARE_DL_FUNCTION(pa_context_get_state);
 | |
| 	DECLARE_DL_FUNCTION(pa_threaded_mainloop_wait);
 | |
| 	DECLARE_DL_FUNCTION(pa_stream_new);
 | |
| 	DECLARE_DL_FUNCTION(pa_stream_set_state_callback);
 | |
| 	DECLARE_DL_FUNCTION(pa_stream_set_write_callback);
 | |
| 	DECLARE_DL_FUNCTION(pa_stream_connect_playback);
 | |
| 	DECLARE_DL_FUNCTION(pa_operation_unref);
 | |
| 	DECLARE_DL_FUNCTION(pa_stream_cork);
 | |
| 	DECLARE_DL_FUNCTION(pa_threaded_mainloop_stop);
 | |
| 	DECLARE_DL_FUNCTION(pa_stream_disconnect);
 | |
| 	DECLARE_DL_FUNCTION(pa_stream_unref);
 | |
| 	DECLARE_DL_FUNCTION(pa_context_disconnect);
 | |
| 	DECLARE_DL_FUNCTION(pa_context_unref);
 | |
| 	DECLARE_DL_FUNCTION(pa_threaded_mainloop_free);
 | |
| 	DECLARE_DL_FUNCTION(pa_threaded_mainloop_signal);
 | |
| 	DECLARE_DL_FUNCTION(pa_stream_begin_write);
 | |
| 	DECLARE_DL_FUNCTION(pa_stream_write);
 | |
| 	DECLARE_DL_FUNCTION(pa_stream_get_state);
 | |
| 	DECLARE_DL_FUNCTION(pa_strerror);
 | |
| 	DECLARE_DL_FUNCTION(pa_stream_set_read_callback);
 | |
| 	DECLARE_DL_FUNCTION(pa_stream_connect_record);
 | |
| 	DECLARE_DL_FUNCTION(pa_stream_peek);
 | |
| 	DECLARE_DL_FUNCTION(pa_stream_drop);
 | |
| 
 | |
| 	DECLARE_DL_FUNCTION(pa_mainloop_new);
 | |
| 	DECLARE_DL_FUNCTION(pa_mainloop_get_api);
 | |
| 	DECLARE_DL_FUNCTION(pa_mainloop_iterate);
 | |
| 	DECLARE_DL_FUNCTION(pa_mainloop_free);
 | |
| 	DECLARE_DL_FUNCTION(pa_context_get_sink_info_list);
 | |
| 	DECLARE_DL_FUNCTION(pa_context_get_source_info_list);
 | |
| 	DECLARE_DL_FUNCTION(pa_operation_get_state);
 | |
| 
 | |
| private:
 | |
| 	static void* lib;
 | |
| 	static int refCount;
 | |
| };
 | |
| }
 | |
| 
 | |
| #undef DECLARE_DL_FUNCTION
 | |
| 
 | |
| #ifdef TGVOIP_IN_AUDIO_IO
 | |
| #define pa_threaded_mainloop_new PulseAudioLoader::_import_pa_threaded_mainloop_new
 | |
| #define pa_threaded_mainloop_get_api PulseAudioLoader::_import_pa_threaded_mainloop_get_api
 | |
| #define pa_context_new PulseAudioLoader::_import_pa_context_new
 | |
| #define pa_context_set_state_callback PulseAudioLoader::_import_pa_context_set_state_callback
 | |
| #define pa_threaded_mainloop_lock PulseAudioLoader::_import_pa_threaded_mainloop_lock
 | |
| #define pa_threaded_mainloop_unlock PulseAudioLoader::_import_pa_threaded_mainloop_unlock
 | |
| #define pa_threaded_mainloop_start PulseAudioLoader::_import_pa_threaded_mainloop_start
 | |
| #define pa_context_connect PulseAudioLoader::_import_pa_context_connect
 | |
| #define pa_context_get_state PulseAudioLoader::_import_pa_context_get_state
 | |
| #define pa_threaded_mainloop_wait PulseAudioLoader::_import_pa_threaded_mainloop_wait
 | |
| #define pa_stream_new PulseAudioLoader::_import_pa_stream_new
 | |
| #define pa_stream_set_state_callback PulseAudioLoader::_import_pa_stream_set_state_callback
 | |
| #define pa_stream_set_write_callback PulseAudioLoader::_import_pa_stream_set_write_callback
 | |
| #define pa_stream_connect_playback PulseAudioLoader::_import_pa_stream_connect_playback
 | |
| #define pa_operation_unref PulseAudioLoader::_import_pa_operation_unref
 | |
| #define pa_stream_cork PulseAudioLoader::_import_pa_stream_cork
 | |
| #define pa_threaded_mainloop_stop PulseAudioLoader::_import_pa_threaded_mainloop_stop
 | |
| #define pa_stream_disconnect PulseAudioLoader::_import_pa_stream_disconnect
 | |
| #define pa_stream_unref PulseAudioLoader::_import_pa_stream_unref
 | |
| #define pa_context_disconnect PulseAudioLoader::_import_pa_context_disconnect
 | |
| #define pa_context_unref PulseAudioLoader::_import_pa_context_unref
 | |
| #define pa_threaded_mainloop_free PulseAudioLoader::_import_pa_threaded_mainloop_free
 | |
| #define pa_threaded_mainloop_signal PulseAudioLoader::_import_pa_threaded_mainloop_signal
 | |
| #define pa_stream_begin_write PulseAudioLoader::_import_pa_stream_begin_write
 | |
| #define pa_stream_write PulseAudioLoader::_import_pa_stream_write
 | |
| #define pa_strerror PulseAudioLoader::_import_pa_strerror
 | |
| #define pa_stream_get_state PulseAudioLoader::_import_pa_stream_get_state
 | |
| #define pa_stream_set_read_callback PulseAudioLoader::_import_pa_stream_set_read_callback
 | |
| #define pa_stream_connect_record PulseAudioLoader::_import_pa_stream_connect_record
 | |
| #define pa_stream_peek PulseAudioLoader::_import_pa_stream_peek
 | |
| #define pa_stream_drop PulseAudioLoader::_import_pa_stream_drop
 | |
| #define pa_mainloop_new PulseAudioLoader::_import_pa_mainloop_new
 | |
| #define pa_mainloop_get_api PulseAudioLoader::_import_pa_mainloop_get_api
 | |
| #define pa_mainloop_iterate PulseAudioLoader::_import_pa_mainloop_iterate
 | |
| #define pa_mainloop_free PulseAudioLoader::_import_pa_mainloop_free
 | |
| #define pa_context_get_sink_info_list PulseAudioLoader::_import_pa_context_get_sink_info_list
 | |
| #define pa_context_get_source_info_list PulseAudioLoader::_import_pa_context_get_source_info_list
 | |
| #define pa_operation_get_state PulseAudioLoader::_import_pa_operation_get_state
 | |
| #endif
 | |
| 
 | |
| #endif // LIBTGVOIP_PULSEAUDIOLOADER_H
 |