ITABufferedAudioFileWriter.h 2.14 KB
Newer Older
Jonas Stienen's avatar
Jonas Stienen committed
1
/*
2
3
4
5
 * ----------------------------------------------------------------
 *
 *		ITA core libs
 *		(c) Copyright Institute of Technical Acoustics (ITA)
6
 *		RWTH Aachen University, Germany, 2015-2018
7
8
9
10
11
12
13
14
15
16
17
 *
 * ----------------------------------------------------------------
 *				    ____  __________  _______
 *				   //  / //__   ___/ //  _   |
 *				  //  /    //  /    //  /_|  |
 *				 //  /    //  /    //  ___   |
 *				//__/    //__/    //__/   |__|
 *
 * ----------------------------------------------------------------
 *
 */
Jonas Stienen's avatar
Jonas Stienen committed
18
19
20
21
22
23
24

#ifndef INCLUDE_WATCHER_ITA_BUFFERED_AUDIO_FILE_WRITER
#define INCLUDE_WATCHER_ITA_BUFFERED_AUDIO_FILE_WRITER

#include <ITABaseDefinitions.h>
#include <ITAAudiofileWriter.h>

25
//! Audio file writer that first buffers samples and exports on demand or destruction
Jonas Stienen's avatar
Jonas Stienen committed
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/**
 * Klasse welche Schreiber von Audiodateien um Pufferung erweitert.
 * Dies ist u.A. wichtig in der Echtzeit-Verarbeitung, wobei keine
 * OS-Dateizugriffe innerhalb eines Audio-Streaming-Kontextes auftreten
 * sollten. Die Klasse verwendet die normalen AudiofileWriter mittels
 * uses-Beziehung und schaltet ihm eine Pufferung der Samples voraus.
 * Jeder Aufruf einer write-Methode wird dann nicht mehr zu einem
 * Dateisystem-Zugriff führen. Alle Daten werden erst mit dem Aufruf
 * des Destruktors geschrieben. Die initiale Puffergröße kann festgelegt
 * werden. Wird diese Aufgebraucht, wird der Puffer automatisch um die
 * angegebene Wachstumsgröße erweitert.
 */
class ITA_BASE_API ITABufferedAudiofileWriter : public ITAAudiofileWriter
{
public:
	//! Factory method. Erzeugt einen gepufferten Schreiber.
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
	static ITABufferedAudiofileWriter* create( const ITAAudiofileProperties& props, double dInitialBufferSizeSeconds = 60, double dGrowBufferSizeSeconds = 20 );

	//! Returns current file path or empty string
	/**
	  * @return Current file path or empty string
	  *
	  */
	virtual std::string GetFilePath() const = 0;

	//! Sets the export file path (without any checks)
	/**
	  * @param[in] sFilePath File path (make sure base folder exists)
	  *
	  */
	virtual void SetFilePath( const std::string& sFilePath ) = 0;
Jonas Stienen's avatar
Jonas Stienen committed
57
58
59
};

#endif // INCLUDE_WATCHER_ITA_BUFFERED_AUDIO_FILE_WRITER