1

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

4

1 に答える 1