我正在修改Qt 音频输出示例,如下所示:
- 我可以从第三方访问混音器 API。
- 从这个混音器读取数据的方法是
void AudioMixer::ReadData(uint8_t *stream, uint32_t len);
- 我正在更改以在示例中输出此数据的功能是
qint64 Generator::readData(char *data, qint64 len)
如果我的理解是正确的,我应该能够QIODevice
通过覆盖Generator::readData
方法以调用该AudioMixer::ReadData
方法并将uint8_t*
使用的方法AudioMixer
转换char*
为与QIODevice
.
我认为这是可能的吗?如果是这样,有人可以建议如何进行演员表吗?如果没有,您能否解释一下如何uint8_t*
使用 a输出QIODevice
?
为了完整起见,方法是:
void AudioMixer::ReadData(uint8_t *stream, uint32_t len)
{
if(buffer.GetMaximumReadSize() < len)
{
memset(stream, 0, len);
}
else
{
buffer.Read(stream, len);
}
}
和
qint64 Generator::readData(char *data, qint64 len)
{
qint64 total = 0;
while (len - total > 0) {
const qint64 chunk = qMin((m_buffer.size() - m_pos), len - total);
memcpy(data + total, m_buffer.constData() + m_pos, chunk);
m_pos = (m_pos + chunk) % m_buffer.size();
total += chunk;
// Need to call AudioMixer::readData in here
}
return total;
}