/*
- Copyright (C) 2012-2017 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2012-2020 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
*/
+#include "util.h"
#include "audio_buffers.h"
#include "dcpomatic_assert.h"
#include <cassert>
#include <stdexcept>
using std::bad_alloc;
-using boost::shared_ptr;
+using std::shared_ptr;
/** Construct an AudioBuffers. Audio data is undefined after this constructor.
* @param channels Number of channels.
copy_from (&other, other._frames, 0, 0);
}
-AudioBuffers::AudioBuffers (boost::shared_ptr<const AudioBuffers> other)
+AudioBuffers::AudioBuffers (std::shared_ptr<const AudioBuffers> other)
{
allocate (other->_channels, other->_frames);
copy_from (other.get(), other->_frames, 0, 0);
}
+AudioBuffers::AudioBuffers (std::shared_ptr<const AudioBuffers> other, int32_t frames_to_copy, int32_t read_offset)
+{
+ allocate (other->_channels, frames_to_copy);
+ copy_from (other.get(), frames_to_copy, read_offset, 0);
+}
+
AudioBuffers &
AudioBuffers::operator= (AudioBuffers const & other)
{
return;
}
- DCPOMATIC_ASSERT (from->channels() == channels());
-
DCPOMATIC_ASSERT (from);
+ DCPOMATIC_ASSERT (from->channels() == channels());
DCPOMATIC_ASSERT (read_offset >= 0 && (read_offset + frames_to_copy) <= from->_allocated_frames);
DCPOMATIC_ASSERT (write_offset >= 0 && (write_offset + frames_to_copy) <= _allocated_frames);
void
AudioBuffers::apply_gain (float dB)
{
- float const linear = pow (10, dB / 20);
+ float const linear = db_to_linear (dB);
for (int i = 0; i < _channels; ++i) {
for (int j = 0; j < _frames; ++j) {