'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:
John Emmas 2014-01-13 14:58:04 +00:00
parent 8e51a6c84f
commit 5fc1cbb65c
17 changed files with 29 additions and 74 deletions

View file

@ -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)

View file

@ -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;

View file

@ -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<>

View file

@ -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<>
{

View file

@ -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<>
{

View file

@ -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;

View file

@ -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

View file

@ -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

View file

@ -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<>

View file

@ -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;

View file

@ -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

View file

@ -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 () {}

View file

@ -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 () { }

View file

@ -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() {}

View file

@ -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);

View file

@ -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); }

View file

@ -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); }