mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-24 07:27:44 +01:00
'libs/audiographer' - DLL visibility stuff and associated changes needed for building with MSVC. Currently includes debugging information and things that are just commented out until we have known compatibility with the other platforms (i.e. contains stuff to be removed at a later date)
This commit is contained in:
parent
8e51a6c84f
commit
5fc1cbb65c
17 changed files with 29 additions and 74 deletions
|
|
@ -38,7 +38,7 @@ enum LIBAUDIOGRAPHER_API DebugLevel
|
|||
* logical and (short-circuiting).
|
||||
*/
|
||||
template<DebugLevel L = DEFAULT_DEBUG_LEVEL>
|
||||
class LIBAUDIOGRAPHER_API Debuggable
|
||||
class /*LIBAUDIOGRAPHER_API*/ Debuggable
|
||||
{
|
||||
protected:
|
||||
Debuggable(std::ostream & debug_stream = std::cerr)
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ namespace AudioGrapher
|
|||
|
||||
/// A debugging class for nodes that support a certain set of flags.
|
||||
template<DebugLevel L = DEFAULT_DEBUG_LEVEL>
|
||||
class LIBAUDIOGRAPHER_API FlagDebuggable : public Debuggable<L>
|
||||
class /*LIBAUDIOGRAPHER_API*/ FlagDebuggable : public Debuggable<L>
|
||||
{
|
||||
public:
|
||||
typedef FlagField::Flag Flag;
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ namespace AudioGrapher
|
|||
|
||||
/// A class that chunks process cycles into equal sized frames
|
||||
template<typename T = DefaultSampleType>
|
||||
class LIBAUDIOGRAPHER_API Chunker
|
||||
class /*LIBAUDIOGRAPHER_API*/ Chunker
|
||||
: public ListedSource<T>
|
||||
, public Sink<T>
|
||||
, public FlagDebuggable<>
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ namespace AudioGrapher
|
|||
|
||||
/// Converts on stream of interleaved data to many streams of uninterleaved data.
|
||||
template<typename T = DefaultSampleType>
|
||||
class LIBAUDIOGRAPHER_API DeInterleaver
|
||||
class /*LIBAUDIOGRAPHER_API*/ DeInterleaver
|
||||
: public Sink<T>
|
||||
, public Throwing<>
|
||||
{
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ namespace AudioGrapher
|
|||
|
||||
/// Interleaves many streams of non-interleaved data into one interleaved stream
|
||||
template<typename T = DefaultSampleType>
|
||||
class LIBAUDIOGRAPHER_API Interleaver
|
||||
class /*LIBAUDIOGRAPHER_API*/ Interleaver
|
||||
: public ListedSource<T>
|
||||
, public Throwing<>
|
||||
{
|
||||
|
|
|
|||
|
|
@ -6,8 +6,6 @@
|
|||
#include "audiographer/routines.h"
|
||||
#include "audiographer/utils/listed_source.h"
|
||||
|
||||
#include <cstring>
|
||||
|
||||
namespace AudioGrapher
|
||||
{
|
||||
|
||||
|
|
@ -17,71 +15,28 @@ class LIBAUDIOGRAPHER_API Normalizer
|
|||
, public Sink<float>
|
||||
, public Throwing<>
|
||||
{
|
||||
public:
|
||||
public:
|
||||
/// Constructs a normalizer with a specific target in dB \n RT safe
|
||||
Normalizer (float target_dB)
|
||||
: enabled (false)
|
||||
, buffer (0)
|
||||
, buffer_size (0)
|
||||
{
|
||||
target = pow (10.0f, target_dB * 0.05f);
|
||||
}
|
||||
|
||||
~Normalizer()
|
||||
{
|
||||
delete [] buffer;
|
||||
}
|
||||
Normalizer (float target_dB);
|
||||
~Normalizer();
|
||||
|
||||
/// Sets the peak found in the material to be normalized \see PeakReader \n RT safe
|
||||
void set_peak (float peak)
|
||||
{
|
||||
if (peak == 0.0f || peak == target) {
|
||||
/* don't even try */
|
||||
enabled = false;
|
||||
} else {
|
||||
enabled = true;
|
||||
gain = target / peak;
|
||||
}
|
||||
}
|
||||
void set_peak (float peak);
|
||||
|
||||
/** Allocates a buffer for using with const ProcessContexts
|
||||
* This function does not need to be called if
|
||||
* non-const ProcessContexts are given to \a process() .
|
||||
* \n Not RT safe
|
||||
*/
|
||||
void alloc_buffer(framecnt_t frames)
|
||||
{
|
||||
delete [] buffer;
|
||||
buffer = new float[frames];
|
||||
buffer_size = frames;
|
||||
}
|
||||
void alloc_buffer(framecnt_t frames);
|
||||
|
||||
/// Process a const ProcessContext \see alloc_buffer() \n RT safe
|
||||
void process (ProcessContext<float> const & c)
|
||||
{
|
||||
if (throw_level (ThrowProcess) && c.frames() > buffer_size) {
|
||||
throw Exception (*this, "Too many frames given to process()");
|
||||
}
|
||||
|
||||
if (enabled) {
|
||||
memcpy (buffer, c.data(), c.frames() * sizeof(float));
|
||||
Routines::apply_gain_to_buffer (buffer, c.frames(), gain);
|
||||
}
|
||||
|
||||
ProcessContext<float> c_out (c, buffer);
|
||||
ListedSource<float>::output (c_out);
|
||||
}
|
||||
void process (ProcessContext<float> const & c);
|
||||
|
||||
/// Process a non-const ProcsesContext in-place \n RT safe
|
||||
void process (ProcessContext<float> & c)
|
||||
{
|
||||
if (enabled) {
|
||||
Routines::apply_gain_to_buffer (c.data(), c.frames(), gain);
|
||||
}
|
||||
ListedSource<float>::output(c);
|
||||
}
|
||||
|
||||
private:
|
||||
void process (ProcessContext<float> & c);
|
||||
|
||||
private:
|
||||
bool enabled;
|
||||
float target;
|
||||
float gain;
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ namespace AudioGrapher
|
|||
{
|
||||
|
||||
/// A class that reads the maximum value from a stream
|
||||
class LIBAUDIOGRAPHER_API PeakReader : public ListedSource<float>, public Sink<float>
|
||||
class /*LIBAUDIOGRAPHER_API*/ PeakReader : public ListedSource<float>, public Sink<float>
|
||||
{
|
||||
public:
|
||||
/// Constructor \n RT safe
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ namespace AudioGrapher
|
|||
{
|
||||
|
||||
/// Dither types from the gdither library
|
||||
enum LIBAUDIOGRAPHER_API DitherType
|
||||
enum /*LIBAUDIOGRAPHER_API*/ DitherType
|
||||
{
|
||||
D_None = GDitherNone, ///< No didtering
|
||||
D_Rect = GDitherRect, ///< Rectangular dithering, i.e. white noise
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ namespace AudioGrapher {
|
|||
|
||||
/// Removes and adds silent frames to beginning and/or end of stream
|
||||
template<typename T = DefaultSampleType>
|
||||
class LIBAUDIOGRAPHER_API SilenceTrimmer
|
||||
class /*LIBAUDIOGRAPHER_API*/ SilenceTrimmer
|
||||
: public ListedSource<T>
|
||||
, public Sink<T>
|
||||
, public FlagDebuggable<>
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ namespace AudioGrapher
|
|||
{
|
||||
|
||||
/// Class that stores exceptions thrown from different threads
|
||||
class LIBAUDIOGRAPHER_API ThreaderException : public Exception
|
||||
class /*LIBAUDIOGRAPHER_API*/ ThreaderException : public Exception
|
||||
{
|
||||
public:
|
||||
template<typename T>
|
||||
|
|
@ -33,7 +33,7 @@ class LIBAUDIOGRAPHER_API ThreaderException : public Exception
|
|||
|
||||
/// Class for distributing processing across several threads
|
||||
template <typename T = DefaultSampleType>
|
||||
class LIBAUDIOGRAPHER_API Threader : public Source<T>, public Sink<T>
|
||||
class /*LIBAUDIOGRAPHER_API*/ Threader : public Source<T>, public Sink<T>
|
||||
{
|
||||
private:
|
||||
typedef std::vector<typename Source<T>::SinkPtr> OutputVec;
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ namespace AudioGrapher
|
|||
*/
|
||||
|
||||
template <typename T = DefaultSampleType>
|
||||
class LIBAUDIOGRAPHER_API ProcessContext
|
||||
class /*LIBAUDIOGRAPHER_API*/ ProcessContext
|
||||
: public Throwing<>
|
||||
{
|
||||
// Support older compilers that don't support template base class initialization without template parameters
|
||||
|
|
@ -126,7 +126,7 @@ protected:
|
|||
|
||||
/// A process context that allocates and owns it's data buffer
|
||||
template <typename T = DefaultSampleType>
|
||||
class LIBAUDIOGRAPHER_API AllocatingProcessContext : public ProcessContext<T>
|
||||
class /*LIBAUDIOGRAPHER_API*/ AllocatingProcessContext : public ProcessContext<T>
|
||||
{
|
||||
public:
|
||||
/// Allocates uninitialized memory
|
||||
|
|
@ -163,7 +163,7 @@ public:
|
|||
|
||||
/// A wrapper for a const ProcesContext which can be created from const data
|
||||
template <typename T = DefaultSampleType>
|
||||
class LIBAUDIOGRAPHER_API ConstProcessContext
|
||||
class /*LIBAUDIOGRAPHER_API*/ ConstProcessContext
|
||||
{
|
||||
public:
|
||||
/// Basic constructor with data, frame and channel count
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ namespace AudioGrapher
|
|||
* This is a pure virtual interface for all data sinks in AudioGrapher
|
||||
*/
|
||||
template <typename T>
|
||||
class LIBAUDIOGRAPHER_API Sink {
|
||||
class /*LIBAUDIOGRAPHER_API*/ Sink {
|
||||
public:
|
||||
virtual ~Sink () {}
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ namespace AudioGrapher
|
|||
* This is a pure virtual interface for all data sources in AudioGrapher
|
||||
*/
|
||||
template<typename T>
|
||||
class LIBAUDIOGRAPHER_API Source
|
||||
class /*LIBAUDIOGRAPHER_API*/ Source
|
||||
{
|
||||
public:
|
||||
virtual ~Source () { }
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ namespace AudioGrapher
|
|||
* However, if you want ultra-optimized code and/or don't care about handling
|
||||
* error situations, feel free to use whatever you want.
|
||||
*/
|
||||
enum LIBAUDIOGRAPHER_API ThrowLevel
|
||||
enum /*LIBAUDIOGRAPHER_API*/ ThrowLevel
|
||||
{
|
||||
ThrowNone, ///< Not allowed to throw
|
||||
ThrowObject, ///< Object level stuff, ctors, initalizers etc.
|
||||
|
|
@ -40,7 +40,7 @@ enum LIBAUDIOGRAPHER_API ThrowLevel
|
|||
* logical and (short-circuiting).
|
||||
*/
|
||||
template<ThrowLevel L = DEFAULT_THROW_LEVEL>
|
||||
class LIBAUDIOGRAPHER_API Throwing
|
||||
class /*LIBAUDIOGRAPHER_API*/ Throwing
|
||||
{
|
||||
protected:
|
||||
Throwing() {}
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ class LIBAUDIOGRAPHER_API TypeUtilsBase
|
|||
|
||||
/// Utilities for initializing, copying, moving, etc. data
|
||||
template<typename T = DefaultSampleType>
|
||||
class LIBAUDIOGRAPHER_API TypeUtils : private TypeUtilsBase
|
||||
class /*LIBAUDIOGRAPHER_API*/ TypeUtils : private TypeUtilsBase
|
||||
{
|
||||
BOOST_STATIC_ASSERT (boost::has_trivial_destructor<T>::value);
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ namespace AudioGrapher
|
|||
|
||||
/// Outputs its input directly to a number of Sinks
|
||||
template<typename T = DefaultSampleType>
|
||||
class LIBAUDIOGRAPHER_API IdentityVertex : public ListedSource<T>, Sink<T>
|
||||
class /*LIBAUDIOGRAPHER_API*/ IdentityVertex : public ListedSource<T>, Sink<T>
|
||||
{
|
||||
public:
|
||||
void process (ProcessContext<T> const & c) { ListedSource<T>::output(c); }
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ namespace AudioGrapher
|
|||
|
||||
/// An generic \a Source that uses a \a std::list for managing outputs
|
||||
template<typename T = DefaultSampleType>
|
||||
class LIBAUDIOGRAPHER_API ListedSource : public Source<T>
|
||||
class /*LIBAUDIOGRAPHER_API*/ ListedSource : public Source<T>
|
||||
{
|
||||
public:
|
||||
void add_output (typename Source<T>::SinkPtr output) { outputs.push_back(output); }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue