X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Faudio_buffers.h;h=bcf5d5928ee1330758573cf4d8a7417f46d76e56;hb=ffdb290bcba1cb9a3e2e6768ee254629d696dd36;hp=6b57bd142ff5bf674f75c78f2bf987ce7c0cc1a8;hpb=e16c8ed02a0cb1f733a990d75a9de1bf50cf89bd;p=dcpomatic.git diff --git a/src/lib/audio_buffers.h b/src/lib/audio_buffers.h index 6b57bd142..bcf5d5928 100644 --- a/src/lib/audio_buffers.h +++ b/src/lib/audio_buffers.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2012-2013 Carl Hetherington + Copyright (C) 2012-2014 Carl Hetherington This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,6 +17,13 @@ */ +/** @file src/lib/audio_buffers.h + * @brief AudioBuffers class. + */ + +#ifndef DCPOMATIC_AUDIO_BUFFERS_H +#define DCPOMATIC_AUDIO_BUFFERS_H + #include /** @class AudioBuffers @@ -32,12 +39,15 @@ public: AudioBuffers & operator= (AudioBuffers const &); + boost::shared_ptr clone () const; + boost::shared_ptr channel (int) const; + void ensure_size (int); float** data () const { return _data; } - + float* data (int) const; int channels () const { @@ -54,15 +64,18 @@ public: void make_silent (int c); void make_silent (int from, int frames); + void apply_gain (float); + void copy_from (AudioBuffers const * from, int frames_to_copy, int read_offset, int write_offset); + void copy_channel_from (AudioBuffers const * from, int from_channel, int to_channel); void move (int from, int to, int frames); - void accumulate_channel (AudioBuffers const *, int, int); + void accumulate_channel (AudioBuffers const * from, int from_channel, int to_channel, float gain = 1); void accumulate_frames (AudioBuffers const *, int read_offset, int write_offset, int frames); private: void allocate (int, int); void deallocate (); - + /** Number of channels */ int _channels; /** Number of frames (where a frame is one sample across all channels) */ @@ -72,3 +85,5 @@ private: /** Audio data (so that, e.g. _data[2][6] is channel 2, sample 6) */ float** _data; }; + +#endif