从字节数组中获取音频样本

时间:2011-09-12 05:35:49

标签: c++ qt audio

如何从QAudioInput

获取数据样本

我在这个示例代码中找到了audioinput示例代码

的代码
    void InputTest::readMore()
{
    if(!m_audioInput)
        return;
    qint64 len = m_audioInput->bytesReady();
    if(len > 4096)
        len = 4096;
    qint64 l = m_input->read(m_buffer.data(), len);
    if(l > 0) {
        m_audioInfo->write(m_buffer.constData(), l);
    }
}

我知道m_buffer包含音频数据样本

但是我的音频处理库收到了短样本 我如何将其转换为短指针

我的音频库功能如下

putSample( short *Sample, int numberOfSample)

我可以从

获取样本数量
Q_ASSERT(m_format.sampleSize() % 8 == 0);
        const int channelBytes = m_format.sampleSize() / 8;
        const int sampleBytes = m_format.channels() * channelBytes;
        Q_ASSERT(len % sampleBytes == 0);
        const int numSamples = len / sampleBytes;

1 个答案:

答案 0 :(得分:2)

This page表示read()期望char *存储数据。如果你已经正确设置了音频设备的格式,那么数据确实会被“分段”为char数组中的short并且你可以简单地将char *转换为short *,然后再将其传递给你的库。