 165b814f5d
			
		
	
	
		165b814f5d
		
	
	
	
	
		
			
			this is necessary in order to get Furnace to build using CMake 4.0. you should do: git submodule deinit extern/portaudio
		
			
				
	
	
		
			87 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #ifndef INCLUDED_PORTAUDIO_CPPFUNCALLBACKSTREAM_HXX
 | |
| #define INCLUDED_PORTAUDIO_CPPFUNCALLBACKSTREAM_HXX
 | |
| 
 | |
| // ---------------------------------------------------------------------------------------
 | |
| 
 | |
| #include "portaudio.h"
 | |
| 
 | |
| #include "portaudiocpp/CallbackStream.hxx"
 | |
| 
 | |
| // ---------------------------------------------------------------------------------------
 | |
| 
 | |
| // Forward declaration(s):
 | |
| namespace portaudio
 | |
| {
 | |
|     class StreamParameters;
 | |
| }
 | |
| 
 | |
| // ---------------------------------------------------------------------------------------
 | |
| 
 | |
| // Declaration(s):
 | |
| namespace portaudio
 | |
| {
 | |
| 
 | |
| 
 | |
|     namespace impl
 | |
|     {
 | |
|         extern "C"
 | |
|         {
 | |
|             int cppCallbackToPaCallbackAdapter(const void *inputBuffer, void *outputBuffer, unsigned long numFrames,
 | |
|                 const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags,
 | |
|                 void *userData);
 | |
|         } // extern "C"
 | |
|     }
 | |
| 
 | |
|     // -----------------------------------------------------------------------------------
 | |
| 
 | |
|     //////
 | |
|     /// @brief Callback stream using a C++ function (either a free function or a static function)
 | |
|     /// callback.
 | |
|     //////
 | |
|     class FunCallbackStream : public CallbackStream
 | |
|     {
 | |
|     public:
 | |
|         typedef int (*CallbackFunPtr)(const void *inputBuffer, void *outputBuffer, unsigned long numFrames,
 | |
|             const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags,
 | |
|             void *userData);
 | |
| 
 | |
|         // -------------------------------------------------------------------------------
 | |
| 
 | |
|         //////
 | |
|         /// @brief Simple structure containing a function pointer to the C++ callback function and a
 | |
|         /// (void) pointer to the user supplied data.
 | |
|         //////
 | |
|         struct CppToCCallbackData
 | |
|         {
 | |
|             CppToCCallbackData();
 | |
|             CppToCCallbackData(CallbackFunPtr funPtr, void *userData);
 | |
|             void init(CallbackFunPtr funPtr, void *userData);
 | |
| 
 | |
|             CallbackFunPtr funPtr;
 | |
|             void *userData;
 | |
|         };
 | |
| 
 | |
|         // -------------------------------------------------------------------------------
 | |
| 
 | |
|         FunCallbackStream();
 | |
|         FunCallbackStream(const StreamParameters ¶meters, CallbackFunPtr funPtr, void *userData);
 | |
|         ~FunCallbackStream();
 | |
| 
 | |
|         void open(const StreamParameters ¶meters, CallbackFunPtr funPtr, void *userData);
 | |
| 
 | |
|     private:
 | |
|         FunCallbackStream(const FunCallbackStream &); // non-copyable
 | |
|         FunCallbackStream &operator=(const FunCallbackStream &); // non-copyable
 | |
| 
 | |
|         CppToCCallbackData adapterData_;
 | |
| 
 | |
|         void open(const StreamParameters ¶meters);
 | |
|     };
 | |
| 
 | |
| 
 | |
| } // portaudio
 | |
| 
 | |
| // ---------------------------------------------------------------------------------------
 | |
| 
 | |
| #endif // INCLUDED_PORTAUDIO_CPPFUNCALLBACKSTREAM_HXX
 |