#ifndef IW_VACORE_BINAURALREALTIMERENDERER #define IW_VACORE_BINAURALREALTIMERENDERER // VA Includes #include #include "../../VAAudioRenderer.h" // ITA includes #include // Other #include "./Utils/BinauralClusterEngine/VABinauralClusterEngine.h" #include "./Utils/BinauralSoundSource/VABinauralSoundSource.h" #include "./Utils/BinauralListener/VABinauralListener.h" class VABinauralRealTimeRenderer : public IVAAudioRenderer, public CVAObject, public ITADatasourceRealization { public: VABinauralRealTimeRenderer( const CVAAudioRendererInitParams& ); virtual ~VABinauralRealTimeRenderer(); inline void loadScene( const std::string& ) {}; void processStream( const ITAStreamInfo* pStreamInfo ); void updateScene( CVASceneState* newSceneState ); // Resets the renderer to it's initial state void reset(); // Returns the renderers output stream datasource // ITADatasource* GetOutputDatasource(); private: const CVAAudioRendererInitParams _params; std::map< int, VABinauralSoundSource* > _sources; std::map< int, VABinauralListener* > _listeners; VABinauralClusterEngine _clusterEngine; CVACoreImpl* _core; CVASceneState* _newSceneState; CVASceneState* _curSceneState; IVAObjectPool* _sourcePool; IVAObjectPool* _listenerPool; ITAAtomicBool _indicateReset, _resetAck; VABinauralListener::config_t _defaultListenerConf; //!< Default listener config for factory object creation VABinauralSoundSource::config_t _defaultSourceConf; // CVABFFUpdateMessage* _updateMessage; int _defaultVDLSwitchingAlgorithm; int _hrirFilterLength; double _additionalStaticDelaySeconds; void init( const CVAStruct& oArgs ); void updateListeners( CVASceneStateDiff* diff ); void updateSources( CVASceneStateDiff* diff ); void createListener( const int listenerID, const CVAReceiverState* receiverState ); void createSource( const int sourceID, const CVASoundSourceState* sourceState ); void deleteListener( const int listenerID ); void deleteSource( const int sourceID ); }; #endif // IW_VACORE_BINAURALREALTIMERENDERER