我正在尝试为实时音频应用程序实现双缓冲区,并QAudioInput
要求它是QIODevice
. 我发现这种方法的文档非常混乱。
首先,文档中的方法签名与 QT 5.9.2 的标头不匹配,该标头具有virtual qint64 writeData(const char *data, qint64 len) = 0;
.
文档虽然有这个签名:qint64 QIODevice::writeData(const char *data, qint64 maxSize)
该maxSize
参数让我感到困惑,因为它意味着我可以缓冲一些数据,文档还暗示:
maxSize
从数据向设备写入最多字节。返回写入的字节数,或者-1
是否发生错误。
然而,紧接着文档就这么说了,这对我来说似乎是矛盾的:
重新实现此函数时,重要的是此函数在返回之前写入所有可用数据。为了
QDataStream
能够对类进行操作,这是必需的。QDataStream
假定所有信息都已写入,因此如果出现问题不会重试写入。
那么我的QIODevice
实现是否负责在一次调用中缓冲所有数据?