X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Faudio_buffers.h;h=8cd67aaa729d52afc42a8ff5b11f3d42327de414;hb=04eebe07e2f64bd15f6887a10ab51fb92c52901a;hp=47b8145a1de2892e6126ca3cea8738a034514eff;hpb=883d885dc8690519d205c8baa275385af8a39f4b;p=dcpomatic.git diff --git a/src/lib/audio_buffers.h b/src/lib/audio_buffers.h index 47b8145a1..8cd67aaa7 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 @@ -30,6 +37,11 @@ public: AudioBuffers (boost::shared_ptr); ~AudioBuffers (); + AudioBuffers & operator= (AudioBuffers const &); + + boost::shared_ptr clone () const; + boost::shared_ptr channel (int) const; + void ensure_size (int); float** data () const { @@ -50,13 +62,20 @@ public: void make_silent (); 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) */ @@ -66,3 +85,5 @@ private: /** Audio data (so that, e.g. _data[2][6] is channel 2, sample 6) */ float** _data; }; + +#endif