Commit caff6470 authored by Jonas Stienen's avatar Jonas Stienen
Browse files

Merge branch 'develop' of https://git.rwth-aachen.de/ita/VACore into develop

parents 53936af7 f9b1bd37
HTML
*.bat
*.mat
*.pdf
*.dll
*.exe
*.so*
Thumbs.db
.DS_Store
*.asv
*.wav
*.xlsx
*.docx
*.dll
*.csv
*.h5
*.ita
*.fig
*.png
*.jpeg
*.sofa
*.spk
*.unv
*.stl
svnaccess
*.lib
*.exp
......@@ -11,8 +11,8 @@
* --------------------------------------------------------------------------------------------
*/
#ifndef VA_INCLUDE_GUARD_VACORE_DEFINITIONS
#define VA_INCLUDE_GUARD_VACORE_DEFINITIONS
#ifndef IW_VACORE_DEFINITIONS
#define IW_VACORE_DEFINITIONS
#include <string>
#include <vector>
......@@ -32,4 +32,4 @@
#pragma warning( disable: 4251 )
#endif
#endif // VA_INCLUDE_GUARD_VACORE_DEFINITIONS
#endif // IW_VACORE_DEFINITIONS
......@@ -11,8 +11,8 @@
* ---------------------------------------------------------------------------------
*/
#ifndef INCLUDE_WATCHER_VA_COREFACTORY_H
#define INCLUDE_WATCHER_VA_COREFACTORY_H
#ifndef IW_VACORE_CORE_FACTORY
#define IW_VACORE_CORE_FACTORY
#include <VACoreDefinitions.h>
#include <VAStruct.h>
......@@ -41,4 +41,4 @@ namespace VACore
} // End of namespace "VACore"
#endif // INCLUDE_WATCHER_VA_COREFACTORY_H
#endif // IW_VACORE_CORE_FACTORY
/*
* --------------------------------------------------------------------------------------------
*
* VVV VVV A
* VVV VVV AAA Virtual Acoustics
* VVV VVV AAA Virtual Acoustics (VA)
* VVV VVV AAA Real-time auralisation for virtual reality
* VVV VVV AAA
* VVVVVV AAA (c) Copyright Institut fr Technische Akustik (ITA)
* VVVV AAA RWTH Aachen (http://www.akustik.rwth-aachen.de)
* VVVVVV AAA (c) Copyright Institute of Technical Acoustics (ITA), 2015-2017
* VVVV AAA RWTH Aachen University (http://www.akustik.rwth-aachen.de)
*
* ---------------------------------------------------------------------------------
*
* File: VAObjectPool.h
*
* Purpose: Object pool class
*
* Author(s): Frank Wefers (Frank.Wefers@akustik.rwth-aachen.de)
*
* ---------------------------------------------------------------------------------
* --------------------------------------------------------------------------------------------
*/
#ifndef __VA_OBJECTPOOL_H__
#define __VA_OBJECTPOOL_H__
#ifndef IW_VACORE_OBJECT_POOL
#define IW_VACORE_OBJECT_POOL
#include <VACoreDefinitions.h>
......@@ -43,7 +36,7 @@ class IVAPoolObjectFactory;
*
* Creation and deletion of objects is abstracted and is implemented in a way that
* reusage is lightweight and effizient. Usage/Links of objects is realised by
* reference counters. A release is triggert, if an object does not have any
* reference counters. A release is triggert, if an object does not have any
* remaining references.
*
* The pool creates object by using a factory that has to be provided. Therefore,
......@@ -52,7 +45,8 @@ class IVAPoolObjectFactory;
*
* \note Not thread safe, thread safety has to be provided by user
*/
class VACORE_API IVAObjectPool : public IVAUncopyable {
class VACORE_API IVAObjectPool : public IVAUncopyable
{
public:
//! Factory method
/**
......@@ -63,7 +57,7 @@ public:
*
* \return Pointer to the newly created pool of unused objects
*/
static IVAObjectPool* Create(int iInitialSize, int iDelta, IVAPoolObjectFactory* pFactory, bool bDeleteFactory);
static IVAObjectPool* Create( int iInitialSize, int iDelta, IVAPoolObjectFactory* pFactory, bool bDeleteFactory );
//! Destructor
virtual ~IVAObjectPool() {};
......@@ -72,32 +66,32 @@ public:
/**
* Set name of the pool (for debugging purposes only)
*/
virtual void SetName(const std::string& sName)=0;
virtual void SetName( const std::string& sName ) = 0;
//! Reset
/**
* Resets pool by quick reference removal of all objects. Does not
* change size of pool.
*/
virtual void Reset()=0;
virtual void Reset() = 0;
//! Number of free object slots
/**
* \return Number of free objects that can be requested
*/
virtual int GetNumFree() const=0;
virtual int GetNumFree() const = 0;
//! Number of used object slots
/**
* \return Number of used objects that can be requested
*/
virtual int GetNumUsed() const=0;
virtual int GetNumUsed() const = 0;
//! Pool size getter
/**
* \return Number of available slots for objects
*/
virtual int GetSize() const=0;
virtual int GetSize() const = 0;
//! Increase pool size
/**
......@@ -105,7 +99,7 @@ public:
*
* \param Returns number of created object slots (iDelta)
*/
virtual int Grow(int iDelta)=0;
virtual int Grow( int iDelta ) = 0;
//! Request a free object slot in pool
/**
......@@ -113,14 +107,14 @@ public:
*
* \return Pointer to the new object
*/
virtual CVAPoolObject* RequestObject()=0;
virtual CVAPoolObject* RequestObject() = 0;
protected:
//! Release-Hook (used by IVAPoolObject implementations)
/**
* Releases object to the pool if no reference available anymore
*/
virtual void ReleaseObject(CVAPoolObject* pObject)=0;
virtual void ReleaseObject( CVAPoolObject* pObject ) = 0;
// Access for CVAPoolObject to RemoveReference()
friend class CVAPoolObject;
......@@ -136,7 +130,8 @@ protected:
* for new usage (recycling). The object releases itself to
* the pool if no references are existent.
*/
class VACORE_API CVAPoolObject : public IVAUncopyable, public CVAReferenceableObject {
class VACORE_API CVAPoolObject : public IVAUncopyable, public CVAReferenceableObject
{
public:
//! Redefined method to remove reference
/**
......@@ -163,7 +158,7 @@ protected:
* The PreRequest method is called before the object is used
*/
virtual void PreRequest() {};
//! Pre release method
/**
* The PreRelease method is called after the object has been released
......@@ -182,17 +177,18 @@ private:
/**
* Interface for the creation of a pool object (factory method)
*/
class VACORE_API IVAPoolObjectFactory {
class VACORE_API IVAPoolObjectFactory
{
public:
virtual ~IVAPoolObjectFactory() {};
inline virtual ~IVAPoolObjectFactory() {};
//! Factory method (abstract)
/**
* Interface method to create a new pool object
*
*
* \return Pointer to the new pool object
*/
virtual CVAPoolObject* CreatePoolObject()=0;
virtual CVAPoolObject* CreatePoolObject() = 0;
};
......@@ -200,7 +196,8 @@ public:
/**
* Pool object factory for objects using the default constructor
*/
template<class T> class CVAPoolObjectDefaultFactory : public IVAPoolObjectFactory {
template< class T > class CVAPoolObjectDefaultFactory : public IVAPoolObjectFactory
{
public:
//! Factory method
/**
......@@ -208,7 +205,10 @@ public:
*
* \return Pointer to the new pool object
*/
virtual CVAPoolObject* CreatePoolObject() { return new T; }
inline virtual CVAPoolObject* CreatePoolObject()
{
return new T;
}
};
#endif // __VA_OBJECTPOOL_H__
\ No newline at end of file
#endif // IW_VACORE_OBJECT_POOL
\ No newline at end of file
/*
* --------------------------------------------------------------------------------------------
*
* VVV VVV A
* VVV VVV AAA Virtual Acoustics
* VVV VVV AAA Virtual Acoustics (VA)
* VVV VVV AAA Real-time auralisation for virtual reality
* VVV VVV AAA
* VVVVVV AAA (c) Copyright Institut fr Technische Akustik (ITA)
* VVVV AAA RWTH Aachen (http://www.akustik.rwth-aachen.de)
* VVVVVV AAA (c) Copyright Institute of Technical Acoustics (ITA), 2015-2017
* VVVV AAA RWTH Aachen University (http://www.akustik.rwth-aachen.de)
*
* ---------------------------------------------------------------------------------
*
* File: VAReferenceableObject.h
*
* Purpose: Base class for referencable objects
*
* Author(s): Frank Wefers (Frank.Wefers@akustik.rwth-aachen.de)
*
* ---------------------------------------------------------------------------------
* --------------------------------------------------------------------------------------------
*/
// $Id: VAReferenceableObject.h 2729 2012-06-26 13:23:36Z fwefers $
#ifndef __VA_REFERENCEABLE_OBJECT_H__
#define __VA_REFERENCEABLE_OBJECT_H__
......
/*
* --------------------------------------------------------------------------------------------
*
* VVV VVV A
* VVV VVV AAA Virtual Acoustics
* VVV VVV AAA Virtual Acoustics (VA)
* VVV VVV AAA Real-time auralisation for virtual reality
* VVV VVV AAA
* VVVVVV AAA (c) Copyright Institut fr Technische Akustik (ITA)
* VVVV AAA RWTH Aachen (http://www.akustik.rwth-aachen.de)
* VVVVVV AAA (c) Copyright Institute of Technical Acoustics (ITA), 2015-2017
* VVVV AAA RWTH Aachen University (http://www.akustik.rwth-aachen.de)
*
* ---------------------------------------------------------------------------------
*
* File: VAUncopyable.h
*
* Purpose: Suppress copy actions of objects
*
* Author(s): Frank Wefers (Frank.Wefers@akustik.rwth-aachen.de)
*
* ---------------------------------------------------------------------------------
* --------------------------------------------------------------------------------------------
*/
// $Id: VAUncopyable.h 1790 2011-04-12 20:08:07Z stienen $
#ifndef __VA_UNCOPYABLE_H__
#define __VA_UNCOPYABLE_H__
#ifndef IW_VACORE_UNCOPYABLE
#define IW_VACORE_UNCOPYABLE
#include <VACoreDefinitions.h>
......@@ -30,20 +22,21 @@
/**
* Derive your class from VAUncopyable to block any copy instruction.
*/
class VACORE_API IVAUncopyable {
class VACORE_API IVAUncopyable
{
protected:
//! For subclasses: standard constructor available
IVAUncopyable() {};
inline IVAUncopyable() {};
//! For subclasses: destructor available
virtual ~IVAUncopyable() {};
inline virtual ~IVAUncopyable() {};
private:
//! Forbidden for everyone: copy constructor
IVAUncopyable(const IVAUncopyable&) {};
inline IVAUncopyable( const IVAUncopyable& ) {};
//! Forbidden for everyone: assignment operator
IVAUncopyable& operator=(const IVAUncopyable&);
IVAUncopyable& operator=( const IVAUncopyable& );
};
#endif // __VA_UNCOPYABLE_H__
\ No newline at end of file
#endif // IW_VACORE_UNCOPYABLE
\ No newline at end of file
......@@ -227,20 +227,15 @@ std::string CVAAudioSignalSourceManager::CreateAudiofileSignalSource(const std::
std::string CVAAudioSignalSourceManager::CreateSequencerSignalSource(const std::string& sName)
{
// Sampler-Quellen sind immer managed und dynamisch
CVASequencerSignalSource* pSource = new CVASequencerSignalSource(m_dSamplerate, m_iBlocklength, m_pParentCore->GetSamplePool());
return RegisterSignalSource(pSource, sName, true, true);
CVASequencerSignalSource* pSource = new CVASequencerSignalSource( m_dSamplerate, m_iBlocklength, m_pParentCore->GetSamplePool() );
return RegisterSignalSource( pSource, sName, true, true );
}
std::string CVAAudioSignalSourceManager::CreateNetstreamSignalSource(const std::string& sBindAddress,
int iRecvPort,
const std::string& sName)
std::string CVAAudioSignalSourceManager::CreateNetstreamSignalSource( const std::string& sBindAddress, int iRecvPort, const std::string& sName )
{
/*
// Datei-Quellen sind immer managed und dynamisch
CVANetstreamSignalSource* pSource = new CVANetstreamSignalSource(m_dSamplerate, m_iBlocklength, sBindAddress, iRecvPort);
return RegisterSignalSource(pSource, sName, true, true);
*/
return "";
CVANetstreamSignalSource* pSource = new CVANetstreamSignalSource( m_dSamplerate, m_iBlocklength, sBindAddress, iRecvPort );
return RegisterSignalSource( pSource, sName, true, true );
}
std::string CVAAudioSignalSourceManager::CreateEngineSignalSource( const std::string& sName )
......
#include "VANetstreamSignalSource.h"
#include <ITAException.h>
#include <ITABufferDataSource.h>
#include <sstream>
#include <VAException.h>
CVANetstreamSignalSource::CVANetstreamSignalSource(double dDestinationSamplerate,
int iBlocklength,
const std::string& sBindAddress,
int iRecvPort)
: m_pAssociatedCore(NULL)
{
// TODO: ...
}
#include <ITANetAudioStream.h>
#include "../VAAudiostreamTracker.h"
CVANetstreamSignalSource::~CVANetstreamSignalSource() {
// TODO: ...
}
#include <sstream>
std::string CVANetstreamSignalSource::GetBindAddress() const {
// TODO: ...
return "";
CVANetstreamSignalSource::CVANetstreamSignalSource( double dDestinationSamplerate, int iBlocklength, const std::string& sBindAddress, int iRecvPort )
: m_pAssociatedCore( NULL )
{
m_pSourceStream = new CITANetAudioStream( 1, dDestinationSamplerate, iBlocklength, 12 * iBlocklength );
if( !m_pSourceStream->Connect( sBindAddress, iRecvPort ) )
VA_EXCEPT2( INVALID_PARAMETER, "Could not connect to network audio streaming server" );
}
int CVANetstreamSignalSource::GetRecvPort() const {
// TODO: ...
return 0;
CVANetstreamSignalSource::~CVANetstreamSignalSource()
{
delete m_pSourceStream;
m_pSourceStream = NULL;
}
std::string CVANetstreamSignalSource::GetTypeString() const {
std::string CVANetstreamSignalSource::GetTypeString() const
{
return "Network stream";
}
std::string CVANetstreamSignalSource::GetTypeMnemonic() const {
std::string CVANetstreamSignalSource::GetTypeMnemonic() const
{
return "ns";
}
std::string CVANetstreamSignalSource::GetDesc() const {
std::string CVANetstreamSignalSource::GetDesc() const
{
std::stringstream ss;
ss << "Plays the network audio stream received on "
<< GetBindAddress() << ":" << GetRecvPort();
ss << "Plays the network audio stream";
return ss.str();
}
std::string CVANetstreamSignalSource::GetStateString() const {
return "<TODO: State string>";
std::string CVANetstreamSignalSource::GetStateString() const
{
if( m_pSourceStream->GetIsConnected() )
return "Connected";
else
return "Disconnected";
}
IVACore* CVANetstreamSignalSource::GetAssociatedCore() const {
IVACore* CVANetstreamSignalSource::GetAssociatedCore() const
{
return m_pAssociatedCore;
}
ITADatasource* CVANetstreamSignalSource::GetStreamingDatasource() const {
// TODO: ...
return NULL;
ITADatasource* CVANetstreamSignalSource::GetStreamingDatasource() const
{
return m_pSourceStream;
}
void CVANetstreamSignalSource::HandleRegistration(IVACore* pParentCore) {
const float* CVANetstreamSignalSource::GetStreamBlock( const CVAAudiostreamState* pStreamInfo )
{
const float* pfSignalSourceData = m_pSourceStream->GetBlockPointer( 0, dynamic_cast< const CVAAudiostreamStateImpl* >( pStreamInfo ) );
m_pSourceStream->IncrementBlockPointer();
return pfSignalSourceData;
}
void CVANetstreamSignalSource::HandleRegistration( IVACore* pParentCore )
{
m_pAssociatedCore = pParentCore;
}
void CVANetstreamSignalSource::HandleUnregistration(IVACore* pParentCore) {
void CVANetstreamSignalSource::HandleUnregistration( IVACore* )
{
m_pAssociatedCore = NULL;
}
\ No newline at end of file
}
......@@ -4,19 +4,16 @@
#include "VAAudioSignalSource.h"
#include <string>
class ITABufferDatasource;
class IVACore;
class CITANetAudioStream;
class ITADatasource;
/**
* Diese Klasse realisiert Audiosignalquellen, welche Audiodaten
* per Netzwerk-Stream empfangen und diese dann freisetzen.
* Mit solchen Quellen knnen in VA Audiosignale von externen Rechnern
* eingespielt werden (z.B. fr Klangsynthese).
/** Network audio stream class
*
* TODO: Momentan ist die Klasse nur ein Stub. Sie muss noch implementiert werden.
* Can be used i.e. for complex physical sound synthesis on another processing unit.
*/
class CVANetstreamSignalSource : public IVAAudioSignalSource {
class CVANetstreamSignalSource : public IVAAudioSignalSource
{
public:
/**
* \param dDestinationSamplerate Abtastrate die vorrausgesetzt wird
......@@ -24,34 +21,28 @@ public:
* \param sBindAddress Netzwerk-Adresse an den gebunden wird
* \param iRecvPort Eingangsport auf dem gelauscht wird.
*/
CVANetstreamSignalSource(double dDestinationSamplerate,
int iBlocklength,
const std::string& sBindAddress,
int iRecvPort);
CVANetstreamSignalSource( double dDestinationSamplerate, int iBlocklength, const std::string& sBindAddress, int iRecvPort );
virtual ~CVANetstreamSignalSource();
std::string GetBindAddress() const;
int GetRecvPort() const;
// Zukunftsmusik ...
// int GetDropouts();
// --= Schnittstelle IVAAudioSignalSource =-------------------------
std::string GetTypeString() const;
std::string GetTypeMnemonic() const;
std::string GetDesc() const;
std::string GetStateString() const;
IVACore* GetAssociatedCore() const;
ITADatasource* GetStreamingDatasource() const;
inline int GetType() const { return VA_SS_NETSTREAM; };
const float* GetStreamBlock( const CVAAudiostreamState* pStreamInfo );
CVAStruct GetParameters( const CVAStruct& ) const { return CVAStruct(); };
virtual void SetParameters( const CVAStruct& ) {};
private:
IVACore* m_pAssociatedCore;
ITABufferDatasource* m_pFileDatasource;
IVACore* m_pAssociatedCore; //!< TODO needed?
CITANetAudioStream* m_pSourceStream;
void HandleRegistration(IVACore* pParentCore);
void HandleUnregistration(IVACore* pParentCore);
void HandleRegistration( IVACore* pParentCore );
void HandleUnregistration( IVACore* pParentCore );
};
#endif // __VA_NETSTREAMSIGNALSOURCE_H__
......@@ -14,8 +14,8 @@ set( DirFiles
VAEngineSignalSource.h
VAMachineSignalSource.cpp
VAMachineSignalSource.h
#VANetstreamSignalSource.cpp
#VANetstreamSignalSource.h
VANetstreamSignalSource.cpp
VANetstreamSignalSource.h
#VAPureDataSignalSource.cpp
#VAPureDataSignalSource.h
VASequencerSignalSource.cpp
......
/*
*
* VVV VVV A
* VVV VVV AAA Virtual Acoustics
* VVV VVV AAA Real-time auralisation for virtual reality
* VVV VVV AAA
* VVVVVV AAA (c) Copyright Institut fr Technische Akustik (ITA)
* VVVV AAA RWTH Aachen (http://www.akustik.rwth-aachen.de)
*
* ---------------------------------------------------------------------------------
*
* Datei: VAHRIRDataset.h
*
* Zweck: Schnittstelle fr HRIR-Datenstze
*
* Autor(en): Frank Wefers (Frank.Wefers@akustik.rwth-aachen.de)
*
* ---------------------------------------------------------------------------------
*/
// $Id: VAHRIRDataset.h 4497 2016-01-29 15:24:15Z stienen $
#ifndef __VA_HRIRDATASET__
#define __VA_HRIRDATASET__
......
......@@ -474,7 +474,8 @@ void CVAVariableDelayLine::Process(const ITASampleBuffer* psbInput, ITASampleBuf
}
#if (VA_VDL_DATA_LOG == 1)
std::ostream& CVAVariableDelayLine::VDLLogData::outputDesc(std::ostream& os) const {
std::ostream& CVAVariableDelayLine::VDLLogData::outputDesc(std::ostream& os)
{
os << "Current delay" << "\t"
<< "New delay" << "\t"
<< "Resampling factor" << "\t"
......
......@@ -264,7 +264,7 @@ private:
//! Implementierungsklasse für Logger-Datum
class VDLLogData : ITALogDataBase {
public:
std::ostream& outputDesc(std::ostream& os) const;
static std::ostream& outputDesc(std::ostream& os);
std::ostream& outputData(std::ostream& os) const;
float fCurrentDelay;
......
......@@ -272,7 +272,7 @@ void CVABasicMotionModel::SetName(const std::string& sNewName)
m_oEstimationDataLog.setOutputFile(sNewName+"_Estimated.log");
}
std::ostream& CVABasicMotionModel::MotionLogDataOutput::outputDesc(std::ostream& os) const
std::ostream& CVABasicMotionModel::MotionLogDataOutput::outputDesc(std::ostream& os)
{
os << "Estimation time" << "\t"
<< "Estimated Position [x]" << "\t"
......@@ -307,7 +307,7 @@ std::ostream& CVABasicMotionModel::MotionLogDataOutput::outputData(std::ostream&
return os;
}
std::ostream& CVABasicMotionModel::MotionLogDataInput::outputDesc(std::ostream& os) const
std::ostream& CVABasicMotionModel::MotionLogDataInput::outputDesc(std::ostream& os)
{