本文整理汇总了C++中AudioBuffer::add_frames方法的典型用法代码示例。如果您正苦于以下问题:C++ AudioBuffer::add_frames方法的具体用法?C++ AudioBuffer::add_frames怎么用?C++ AudioBuffer::add_frames使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AudioBuffer
的用法示例。
在下文中一共展示了AudioBuffer::add_frames方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: convert_channels
void AudioBuffer::convert_channels(AudioBuffer &_dest, unsigned _frames_count)
{
AudioSpec destspec{m_spec.format, _dest.channels(), m_spec.rate};
if(_dest.spec() != destspec) {
throw std::logic_error("unsupported format");
}
_frames_count = std::min(frames(),_frames_count);
if(m_spec.channels == destspec.channels) {
_dest.add_frames(*this,_frames_count);
return;
}
switch(m_spec.format) {
case AUDIO_FORMAT_U8:
convert_channels<uint8_t>(*this,_dest,_frames_count);
break;
case AUDIO_FORMAT_S16:
convert_channels<int16_t>(*this,_dest,_frames_count);
break;
case AUDIO_FORMAT_F32:
convert_channels<float>(*this,_dest,_frames_count);
break;
default:
throw std::logic_error("unsupported format");
}
}
示例2: convert_format
void AudioBuffer::convert_format(AudioBuffer &_dest, unsigned _frames_count)
{
AudioSpec destspec{_dest.format(), m_spec.channels, m_spec.rate};
if(_dest.spec() != destspec) {
throw std::logic_error("destination must have same channels and rate");
}
_frames_count = std::min(frames(),_frames_count);
if(m_spec.format == destspec.format) {
_dest.add_frames(*this,_frames_count);
return;
}
const unsigned samples_count = m_spec.frames_to_samples(_frames_count);
std::vector<uint8_t> buffer, *data=&buffer;
switch(m_spec.format) {
case AUDIO_FORMAT_U8:
u8_to_f32(m_data, buffer, samples_count);
break;
case AUDIO_FORMAT_S16:
s16_to_f32(m_data, buffer, samples_count);
break;
case AUDIO_FORMAT_F32:
data = &m_data;
break;
default:
throw std::logic_error("unsupported source format");
}
switch(destspec.format) {
case AUDIO_FORMAT_S16:
f32_to_s16(*data, _dest.m_data, samples_count);
break;
case AUDIO_FORMAT_F32:
_dest.m_data.swap(buffer);
break;
default:
throw std::logic_error("unsupported destination format");
}
}