リアルタイム オーディオ アプリケーション用にダブル バッファを実装しようとしてい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
実装は、1 回の呼び出しですべてのデータをバッファリングする責任がありますか?