0

バイト配列からのビデオ ストリーミングを許可するアプリケーションを Qt で作成しています。ビデオ出力コンポーネントとして、QtAV ( http://www.qtav.org/ ) を使用しています。私の場合、このコンポーネントの入力は、私のデータを持つ QByteArray を持つ QIODevice (QBuffer) です。QByteArray 内のデータをストリーミング中に入れますが、まだ読み取ったデータを削除する方法がわかりません。私の問題は、しばらくすると QByteArray の次元が非常に大きくなり、割り当てられたメモリを減らす方法がわからないことです。

ありがとうございました

アンジェロ

4

1 に答える 1

0

メソッドを使用してバッファからバイト配列オブジェクトへの参照を取得し、
QByteArray &QBuffer::buffer()それを消去するだけです。

your_io_buffer.buffer().resize(0);

ただし、頻繁に動的配列からデータを削除したり追加したりすると、メモリの再割り当てが発生するため、それほど高速ではないことに注意してください。したがって、次の
void QByteArray::reserve(int size)方法を使用することをお勧めします。

QByteArray buf;
buf.reserve(100000);
//...
your_io_buffer.setBuffer(&buf);
//...
于 2016-12-14T12:55:58.040 に答える