Finalizing description for publication

parent b3f9d3d1
## ITADataSources
ITADataSources is a C++ library for component-oriented audio streaming providing basic modules to manipulate samples in a block-based audio processing.
It is marked deprecated because it will be substituted by the module-base [ITAStreaming](https://git.rwth-aachen.de/ita/ITAStreaming) project in the future, but is still heavily used and updated.
ITADataSources is a component from [ITACoreLibs](https://git.rwth-aachen.de/ita/ITACoreLibs), a collection of C++ libraries for virtual acoustics.
In future it may be substituted by the new module-base [ITAStreaming](https://git.rwth-aachen.de/ita/ITAStreaming) project, but is still heavily used and therefore also updated.
ITADataSources is a component of [ITACoreLibs](https://git.rwth-aachen.de/ita/ITACoreLibs), a collection of C++ libraries for virtual acoustics.
### License
See [LICENSE](LICENSE.md) file.
Copyright 2015-2017 Institute of Technical Acoustics, RWTH Aachen University
Licensed under the Apache License, Version 2.0 (the "License");
you may not use files of this project except in compliance with the License.
You may obtain a copy of the License at
<http://www.apache.org/licenses/LICENSE-2.0>
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
### Quick build guide
Follow instructions from Wiki pages of [ITABase](https://git.rwth-aachen.de/ita/ITABase/wikis/home) project.
It is recommended to clone and follow the build guide of the parent project [ITACoreLibs](https://git.rwth-aachen.de/ita/ITACoreLibs/wikis/home), which includes this project as a submodule.
......@@ -57,7 +57,8 @@
*
* \ingroup datasources
*/
class ITA_DATA_SOURCES_API ITABufferDatasource : public ITADatasource {
class ITA_DATA_SOURCES_API ITABufferDatasource : public ITADatasource
{
public:
//! Konstruktor (2D-Array)
/**
......@@ -68,14 +69,9 @@ public:
* \param uiBlocklength Blocklänge mit der die Datenquelle arbeiten soll
* \param bLoopMode Wiederholungsmodus? [Optional]
*
* \note Bei ungültigen Parametern wird eine Ausnahme vom Typ LLCException ausgelöst
* \note Bei ungültigen Parametern wird eine Ausnahme vom Typ ITAException ausgelöst
*/
ITABufferDatasource(const float** ppfBuffer,
unsigned int uiChannels,
unsigned int uiBuffersize,
double dSamplerate,
unsigned int uiBlocklength,
bool bLoopMode=false);
ITABufferDatasource( const float** ppfBuffer, unsigned int uiChannels, unsigned int uiBuffersize, double dSamplerate, unsigned int uiBlocklength, bool bLoopMode = false );
//! Konstruktor (Vektor von Arrays)
/**
......@@ -86,13 +82,9 @@ public:
* \param bLoopMode Wiederholungsmodus? [Optional]
*
* \note Die Kanalanzahl wird aus der Anzahl der Elemente im Vektor bestimmt
* \note Bei ungültigen Parametern wird eine Ausnahme vom Typ LLCException ausgelöst
* \note Bei ungültigen Parametern wird eine Ausnahme vom Typ CIAException ausgelöst
*/
ITABufferDatasource(const std::vector<float*>& vpfBuffer,
unsigned int uiBuffersize,
double dSamplerate,
unsigned int uiBlocklength,
bool bLoopMode=false);
ITABufferDatasource( const std::vector< float* >& vpfBuffer, unsigned int uiBuffersize, double dSamplerate, unsigned int uiBlocklength, bool bLoopMode = false );
//! Spezieller Konstruktor (Einkanal-Betrieb)
/**
......@@ -104,13 +96,13 @@ public:
* \param uiBlocklength Blocklänge mit der die Datenquelle arbeiten soll
* \param bLoopMode Wiederholungsmodus? [Optional]
*
* \note Bei ungültigen Parametern wird eine Ausnahme vom Typ LLCException ausgelöst
* \note Bei ungültigen Parametern wird eine Ausnahme vom Typ CITAException ausgelöst
*/
ITABufferDatasource(const float* pfBuffer,
ITABufferDatasource( const float* pfBuffer,
unsigned int uiBuffersize,
double dSamplerate,
unsigned int uiBlocklength,
bool bLoopMode=false);
bool bLoopMode = false );
//! Kapazität der Datenquelle zurückgeben
/**
......@@ -137,19 +129,19 @@ public:
unsigned int GetCursor();
//! Wiedergabeposition setzen bezogen auf den Arbeitsbereich
void SetCursor(unsigned int uiNewCursor);
void SetCursor( unsigned int uiNewCursor );
//! Wiedergabe pausiert?
bool IsPaused() const;
//! Pausierung für Wiedergabe ein-/ausschalten
void SetPaused(bool bPaused);
void SetPaused( bool bPaused );
//! Zurückgeben ob die Wiederholung eingeschaltet ist
bool GetLoopMode();
//! Wiederholung Ein-/Ausschalten
void SetLoopMode(bool bLoopMode);
void SetLoopMode( bool bLoopMode );
//! Sets the looping mode
/**
......@@ -176,7 +168,7 @@ public:
* angepasst, das die Differenz uiEndOffset-uiStartOffset das nächstkleinere Vielfache
* der Blocklänge ergibt.
*/
void SetROI(unsigned int uiStartOffset, unsigned int uiEndOffset);
void SetROI( unsigned int uiStartOffset, unsigned int uiEndOffset );
//! Startposition des Arbeitsbereiches (region of interest) zurückgeben
unsigned int GetROIStart();
......@@ -206,7 +198,7 @@ public:
unsigned int GetNumberOfChannels() const;
double GetSampleRate() const;
const float* GetBlockPointer(unsigned int uiChannel, const ITAStreamInfo* pStreamInfo);
const float* GetBlockPointer( unsigned int uiChannel, const ITAStreamInfo* pStreamInfo );
void IncrementBlockPointer();
protected:
......@@ -226,11 +218,11 @@ protected:
/**
* Zu benutzen im Verbund mit dem geschützen Konstruktor.
*/
void Init(const std::vector<float*>& vpfBuffer,
void Init( const std::vector<float*>& vpfBuffer,
unsigned int uiBuffersize,
double dSamplerate,
unsigned int uiBlocklength,
bool bLoopMode);
bool bLoopMode );
private:
unsigned int m_uiBuffersize; // Größe der einzelnen Kanalpuffer
......
#include <ITADataSourceUtils.h>
// Wichtig: Folgendes Makro definiert Windows-NT als Umgebung und
// bewirkt somit die Nutzbarkeit der WaitableTimer.
#define _WIN32_WINNT 0x0500
#include <ITADataSource.h>
#include <ITAStreamInfo.h>
#include <ITAAudiofileWriter.h>
......
/*
+------------------------------------------------------------+
| |
| ThreadInit.cpp |
| |
| Testprogramm aus der Testsuite des ITAsioInterface |
| |
| Beschreibung: Test zur ASIO-Initialisierung |
| in Threads |
| |
| Author: Frank Wefers |
| Letzte nderung: 13.04.2011 [stienen] |
| |
| (c) Copyright Institut fr technische Akustik (ITA) |
| Aachen university of technology (RWTH), 2011 |
| |
+------------------------------------------------------------+
*/
// $Id: ThreadInit.cpp 1801 2011-04-13 14:07:25Z stienen $
#include <ITAAsioInterface.h>
#include <process.h>
#include <stdio.h>
#include <string>
#define _WIN32_WINNT 0x0500
#include <windows.h>
int test(const char* pszDriverName) {
int test( const char* pszDriverName ) {
ITAsioInitializeLibrary();
// Treiber anzeigen
long lDrivers = ITAsioGetNumDrivers();
if (lDrivers > 0) {
printf("Folgende ASIO-Treiber wurden gefunden:\n\n");
for (long i=0; i<lDrivers; i++) {
printf("\t[%d]\t%s\n", i+1, ITAsioGetDriverName(i));
if( lDrivers > 0 ) {
printf( "Folgende ASIO-Treiber wurden gefunden:\n\n" );
for( long i = 0; i < lDrivers; i++ ) {
printf( "\t[%d]\t%s\n", i + 1, ITAsioGetDriverName( i ) );
}
}
} else {
printf("Keine ASIO-Treiber gefunden!\n");
else {
printf( "Keine ASIO-Treiber gefunden!\n" );
return 0;
};
// Treiber initialisieren
printf("Initialisiere Treiber \"%s\"\n", pszDriverName);
printf( "Initialisiere Treiber \"%s\"\n", pszDriverName );
ASIOError ae = ITAsioInitializeDriver( pszDriverName );
if (ae == ASE_OK) {
printf("Initialisierung erfolgreich!");
if( ae == ASE_OK ) {
printf( "Initialisierung erfolgreich!" );
ITAsioFinalizeDriver();
} else {
printf("Initialisierung fehlgeschlagen (errorcode %d: %s)\n",
ae, ITAsioGetErrorStr(ae));
}
else {
printf( "Initialisierung fehlgeschlagen (errorcode %d: %s)\n",
ae, ITAsioGetErrorStr( ae ) );
return -1;
}
......@@ -59,36 +39,37 @@ int test(const char* pszDriverName) {
return 0;
}
void ThreadProc(void* pParam) {
printf("Thread ist gestartet!\n");
void ThreadProc( void* pParam ) {
printf( "Thread ist gestartet!\n" );
// COM initialisieren (Appartment)
//CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
if (test((const char*) pParam) != 0) {
if( test( ( const char* ) pParam ) != 0 ) {
//CoUninitialize();
}
_endthread();
}
int main(int argc, char* argv[]) {
int main( int argc, char* argv[] ) {
// COM initialisieren (Appartment)
//CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
if (argc != 2) {
fprintf(stderr, "Syntax: ThreadInit TREIBERNUMMER\n");
if( argc != 2 ) {
fprintf( stderr, "Syntax: ThreadInit TREIBERNUMMER\n" );
return 255;
}
bool bThreaded = true;
if (bThreaded) {
HANDLE hThread = (HANDLE) _beginthread( ThreadProc, 0, argv[1] );
WaitForSingleObject(hThread, INFINITE);
} else
test(argv[1]);
if( bThreaded ) {
HANDLE hThread = ( HANDLE ) _beginthread( ThreadProc, 0, argv[ 1 ] );
WaitForSingleObject( hThread, INFINITE );
}
else
test( argv[ 1 ] );
//CoUninitialize();
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment