X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Faudio_buffers.cc;h=cfe762659ebdb6d91128557b35cccb3c08c56144;hb=143cfcf6c9e8c0a0879652d0d741ec268e8d9541;hp=82df9d6f6984dfc19f36dcc5dd71932df15eae91;hpb=f62398d081db17afd1816bfc8312afb386f22e78;p=dcpomatic.git diff --git a/src/lib/audio_buffers.cc b/src/lib/audio_buffers.cc index 82df9d6f6..cfe762659 100644 --- a/src/lib/audio_buffers.cc +++ b/src/lib/audio_buffers.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2012-2017 Carl Hetherington + Copyright (C) 2012-2020 Carl Hetherington This file is part of DCP-o-matic. @@ -18,6 +18,7 @@ */ +#include "util.h" #include "audio_buffers.h" #include "dcpomatic_assert.h" #include @@ -52,6 +53,12 @@ AudioBuffers::AudioBuffers (boost::shared_ptr other) copy_from (other.get(), other->_frames, 0, 0); } +AudioBuffers::AudioBuffers (boost::shared_ptr 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) { @@ -125,7 +132,9 @@ AudioBuffers::set_frames (int32_t f) { DCPOMATIC_ASSERT (f <= _allocated_frames); - make_silent (f, _frames - f); + if (f < _frames) { + make_silent (f, _frames - f); + } _frames = f; } @@ -301,7 +310,7 @@ AudioBuffers::accumulate_frames (AudioBuffers const * from, int32_t frames, int3 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) {