ITADataSourceUtils.h 3.14 KB
Newer Older
Jonas Stienen's avatar
Jonas Stienen committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
/*
* ----------------------------------------------------------------
*
*		ITA core libs
*		(c) Copyright Institute of Technical Acoustics (ITA)
*		RWTH Aachen University, Germany, 2015-2016
*
* ----------------------------------------------------------------
*				    ____  __________  _______
*				   //  / //__   ___/ //  _   |
*				  //  /    //  /    //  /_|  |
*				 //  /    //  /    //  ___   |
*				//__/    //__/    //__/   |__|
*
* ----------------------------------------------------------------
*
*/
// $Id: ITADataSourceUtils.h 2900 2012-09-17 08:42:42Z stienen $

#ifndef INCLUDE_WATCHER_ITA_DATA_SOURCE_UTILS
#define INCLUDE_WATCHER_ITA_DATA_SOURCE_UTILS

#include <ITADataSourcesDefinitions.h>

#include <string> // Strings der Standard Template Library (STL)

// Vorwärtsdeklarationen
class ITADatasource;

/**
 * \defgroup utilfuncs Hilfsfunktionen
 */
/*@{*/

//! Daten einer Datenquelle in einen Puffer schreiben
/**
 * Holt eine gewissen Anzahl Samples von einer Datenquelle und
 * schreibt diese in eine Puffer.
 *
 * \param pSource Zeiger auf die Datenquelle
 * \param ppfDest Zeiger auf das Array der Puffer (jeweils für die Kanäle)
 * \param uiNumberOfSamples Anzahl der Samples
 * \param dGain Verstärkungsfaktor (optional)
 * \param bOnline Echtzeit-Modus verwenden? (d.h. reale Dauern zwischen den
 *                Datenanforderungen verwenden). Falls false, werden die 
 *                Daten direkt hintereinander angefordert (Maximaler Datendurchsatz)
 * \param bDisplayProgress Fortschritt auf der Konsole ausgeben? (Optional, Standard: Nein)
 *
 * \note Gibt die Datenquelle den Nullzeiger zurück, wird für 
 *       den betreffenden Block Stille in den Puffer geschrieben
 * \note Ausnahmebehandlung mittels der Klasse ITAException
 */
ITA_DATA_SOURCES_API void WriteFromDatasourceToBuffer(ITADatasource* pSource,
				  		         float** ppfDest,
						         unsigned int uiNumberOfSamples,
						         double dGain=1.0,
							     bool bOnline=true,
							     bool bDisplayProgress=false);

//! Daten einer Datenquelle in eine Datei schreiben
/**
 * Holt eine gewissen Anzahl Samples von einer Datenquelle und
 * schreibt diese in eine Audiodatei.
 *
 * \param pSource Zeiger auf die Datenquelle
 * \param sFilename	Dateiname der Zieldatei
 * \param uiNumberOfSamples Anzahl der Samples
 * \param dGain Verstärkungsfaktor (optional)
 * \param bOnline Echtzeit-Modus verwenden? (d.h. reale Dauern zwischen den
 *                Datenanforderungen verwenden). Falls false, werden die 
 *                Daten direkt hintereinander angefordert (Maximaler Datendurchsatz)
 * \param bDisplayProgress Fortschritt auf der Konsole ausgeben? (Optional, Standard: Nein)
 *
 * \note Gibt die Datenquelle den Nullzeiger zurück, wird für 
 *       den betreffenden Block Stille in die Datei geschrieben
 * \note Ausnahmebehandlung mittels der Klasse ITAException
 */
ITA_DATA_SOURCES_API void WriteFromDatasourceToFile(ITADatasource* pSource,
				  		       std::string sFilename,
						       unsigned int uiNumberOfSamples,
						       double dGain=1.0,
							   bool bOnline=true,
							   bool bDisplayProgress=false);


#endif // INCLUDE_WATCHER_ITA_DATA_SOURCE_UTILS