QtAV и очистка буфера

Я пишу приложение в Qt, которое позволяет потоковое видео из массива байтов.
В качестве компонента вывода видео я использую QtAV (http://www.qtav.org/).
В моем случае вход этого компонента — QIODevice (QBuffer), где есть QByteArray с моими данными.
Я буду помещать во время потоковой передачи данных внутри QByteArray, но я не знаю, как удалить данные, которые я еще прочитал.
Моя проблема в том, что через некоторое время размерность QByteArray очень велика, и я не знаю, как я могу уменьшить выделенную память.

Спасибо

Angelo

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);
//...
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]