本文整理汇总了C++中AudioBuffer::copy方法的典型用法代码示例。如果您正苦于以下问题:C++ AudioBuffer::copy方法的具体用法?C++ AudioBuffer::copy怎么用?C++ AudioBuffer::copy使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AudioBuffer
的用法示例。
在下文中一共展示了AudioBuffer::copy方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: get
size_t RingBuffer::get(AudioBuffer& buf, const std::string &call_id)
{
std::lock_guard<std::mutex> l(lock_);
if (hasNoReadOffsets())
return 0;
if (not hasThisReadOffset(call_id))
return 0;
const size_t buffer_size = buffer_.frames();
if (buffer_size == 0)
return 0;
size_t len = getLength(call_id);
const size_t sample_num = buf.frames();
size_t toCopy = std::min(sample_num, len);
if (toCopy and toCopy != sample_num) {
RING_DBG("Partial get: %zu/%zu", toCopy, sample_num);
}
const size_t copied = toCopy;
size_t dest = 0;
size_t startPos = getReadOffset(call_id);
while (toCopy > 0) {
size_t block = toCopy;
if (block > buffer_size - startPos)
block = buffer_size - startPos;
buf.copy(buffer_, block, startPos, dest);
dest += block;
startPos = (startPos + block) % buffer_size;
toCopy -= block;
}
storeReadOffset(startPos, call_id);
return copied;
}