summaryrefslogtreecommitdiff
path: root/src/lib/audio_buffers.h
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2015-09-08 01:10:38 +0100
committerCarl Hetherington <cth@carlh.net>2015-09-14 10:21:14 +0100
commitd22e839b94af048bdeaba61e427bcd2f07b4a3ee (patch)
tree18f37e00d1a5a64c0426588fa530bcffb14e66a3 /src/lib/audio_buffers.h
parent4704d088ae03ab2b5f73ceed577fd84935ad0640 (diff)
Fix analysis of audio when the subject is later in the playlist than
some other long piece of content. Small optimisation to AudioBuffers to extend size logarithmically.
Diffstat (limited to 'src/lib/audio_buffers.h')
-rw-r--r--src/lib/audio_buffers.h24
1 files changed, 14 insertions, 10 deletions
diff --git a/src/lib/audio_buffers.h b/src/lib/audio_buffers.h
index bcf5d5928..122716d77 100644
--- a/src/lib/audio_buffers.h
+++ b/src/lib/audio_buffers.h
@@ -28,11 +28,15 @@
/** @class AudioBuffers
* @brief A class to hold multi-channel audio data in float format.
+ *
+ * The use of int32_t for frame counts in this class is due to the
+ * round-up to the next power-of-2 code in ::ensure_size; if that
+ * were changed the frame count could use any integer type.
*/
class AudioBuffers
{
public:
- AudioBuffers (int channels, int frames);
+ AudioBuffers (int channels, int32_t frames);
AudioBuffers (AudioBuffers const &);
AudioBuffers (boost::shared_ptr<const AudioBuffers>);
~AudioBuffers ();
@@ -42,7 +46,7 @@ public:
boost::shared_ptr<AudioBuffers> clone () const;
boost::shared_ptr<AudioBuffers> channel (int) const;
- void ensure_size (int);
+ void ensure_size (int32_t);
float** data () const {
return _data;
@@ -58,30 +62,30 @@ public:
return _frames;
}
- void set_frames (int f);
+ void set_frames (int32_t f);
void make_silent ();
void make_silent (int c);
- void make_silent (int from, int frames);
+ void make_silent (int32_t from, int32_t frames);
void apply_gain (float);
- void copy_from (AudioBuffers const * from, int frames_to_copy, int read_offset, int write_offset);
+ void copy_from (AudioBuffers const * from, int32_t frames_to_copy, int32_t read_offset, int32_t write_offset);
void copy_channel_from (AudioBuffers const * from, int from_channel, int to_channel);
- void move (int from, int to, int frames);
+ void move (int32_t from, int32_t to, int32_t frames);
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);
+ void accumulate_frames (AudioBuffers const *, int32_t read_offset, int32_t write_offset, int32_t frames);
private:
- void allocate (int, int);
+ void allocate (int channels, int32_t frames);
void deallocate ();
/** Number of channels */
int _channels;
/** Number of frames (where a frame is one sample across all channels) */
- int _frames;
+ int32_t _frames;
/** Number of frames that _data can hold */
- int _allocated_frames;
+ int32_t _allocated_frames;
/** Audio data (so that, e.g. _data[2][6] is channel 2, sample 6) */
float** _data;
};