Spec-Zone.ru › Qt 5.11

Класс QAbstractVideoBuffer

Класс QAbstractVideoBuffer является абстракцией для видеоданных. Подробнее...

Заголовок: #include <QAbstractVideoBuffer>
qmake: QT += multimedia
Наследуется от:

QAbstractPlanarVideoBuffer

  • Список всех членов, включая наследуемые

Типы публичного доступа

перечисление HandleType { НетОбработчика, GLTextureHandle, XvShmImageHandle, CoreImageHandle, ..., ОбработчикПользователя }
перечисление MapMode { НеОтображено, ТолькоДляЧтения, ТолькоДляЗаписи, ДляЧтенияИЗаписи }

Функции публичного доступа

QAbstractVideoBuffer(QAbstractVideoBuffer::HandleType type)
виртуальный ~QAbstractVideoBuffer()
виртуальный QVariant handle() const
QAbstractVideoBuffer::HandleType handleType() const
виртуальный uchar * map(QAbstractVideoBuffer::MapMode mode, int *numBytes, int *bytesPerLine) = 0
виртуальный QAbstractVideoBuffer::MapMode mapMode() const = 0
int mapPlanes(QAbstractVideoBuffer::MapMode mode, int *numBytes, int [4] bytesPerLine = 4, uchar *[4] data = 4)
виртуальный void release()
виртуальный void unmap() = 0

Подробное описание

Класс QAbstractVideoBuffer является абстракцией для видеоданных.

Класс QVideoFrame использует QAbstractVideoBuffer внутри для ссылки на буфер видеоданных. Часто буферы видеоданных могут находиться в видеопамяти, а не в системной памяти, и этот класс предоставляет абстракцию местоположения.

Кроме того, создание подкласса QAbstractVideoBuffer позволит создавать видеокадры из предварительно выделенных или статических буферов в случаях, когда конструкторы QVideoFrame, принимающие QByteArray или QImage, недостаточны. Это может быть необходимо при реализации новой системы видеообработки с аппаратным ускорением, например.

Содержание буфера можно получить, отобразив буфер в память с помощью функции map(), которая возвращает указатель на память, содержащую содержимое буфера видеоданных. Память, возвращаемая функцией map(), освобождается с помощью функции unmap().

Обработчик handle() буфера также может использоваться для управления его содержимым с помощью API, специфичных для типа. Тип обработчика буфера задается функцией handleType().

См. также QVideoFrame.

Документация по типам-членам

перечисление QAbstractVideoBuffer::HandleType

Идентифицирует тип обработчика буфера видеоданных.

Константа Значение Описание
QAbstractVideoBuffer::NoHandle 0 Буфер не имеет обработчика; данные можно получить только с помощью отображения буфера.
QAbstractVideoBuffer::GLTextureHandle 1 Обработчик буфера — идентификатор текстуры OpenGL.
QAbstractVideoBuffer::XvShmImageHandle 2 Обработчик содержит указатель на изображение XVideo в общей памяти.
QAbstractVideoBuffer::CoreImageHandle 3 Обработчик содержит указатель на CIImage macOS.
QAbstractVideoBuffer::QPixmapHandle 4 Обработчик буфера — QPixmap.
QAbstractVideoBuffer::EGLImageHandle 5 Обработчик буфера — EGLImageKHR.
QAbstractVideoBuffer::UserHandle 1000 Начальное значение для пользовательских типов обработчиков.

См. также handleType().

перечисление QAbstractVideoBuffer::MapMode

Перечисляет способы отображения данных буфера видео в системную память.

Константа Значение Описание
QAbstractVideoBuffer::NotMapped 0x00 Буфер видео не отображен в памяти.
QAbstractVideoBuffer::ReadOnly 0x01 Данные из буфера видео загружаются в отображенную память при отображении, но содержимое отображенной памяти может быть удалено при отображении.
QAbstractVideoBuffer::WriteOnly 0x02 Отображенная память не инициализируется при отображении, но потенциально измененное содержимое будет использоваться для заполнения буфера видео при отображении.
QAbstractVideoBuffer::ReadWrite ReadOnly | WriteOnly Отображенная память заполняется данными из буфера видео, и буфер видео заполняется содержимым отображенной памяти при отображении.

См. также mapMode() и map().

Документация по функциям-членам

QAbstractVideoBuffer::QAbstractVideoBuffer(QAbstractVideoBuffer::HandleType type)

Создает абстрактный буфер видео заданного типа type.

[virtual] QAbstractVideoBuffer::~QAbstractVideoBuffer()

Уничтожает абстрактный буфер видео.

[virtual] QVariant QAbstractVideoBuffer::handle() const

Возвращает обработчик, специфичный для типа, буфера данных.

Тип обработчика задается функцией handleType().

См. также handleType().

QAbstractVideoBuffer::HandleType QAbstractVideoBuffer::handleType() const

Возвращает тип обработчика буфера видеоданных.

См. также handle().

[pure virtual] uchar *QAbstractVideoBuffer::map(QAbstractVideoBuffer::MapMode mode, int *numBytes, int *bytesPerLine)

Отображает содержимое буфера видео в память.

В некоторых случаях буфер видео может храниться в видеопамяти или в ином недоступном сегменте памяти, поэтому перед доступом к данным пикселей необходимо отобразить буфер. Это может включать копирование содержимого, поэтому избегайте отображения и отображения, если это не требуется.

Режим отображения mode указывает, должно ли содержимое отображенной памяти читаться из и/или записываться в буфер. Если режим отображения включает флаг QAbstractVideoBuffer::ReadOnly, отображенная память будет заполнена содержимым буфера при первоначальном отображении. Если режим отображения включает флаг QAbstractVideoBuffer::WriteOnly, содержимое потенциально измененной отображенной памяти будет перезаписано в буфер при отображении.

Когда доступ к данным больше не нужен, обязательно вызовите функцию unmap() для освобождения отображенной памяти и возможного обновления содержимого буфера.

Возвращает указатель на отображенный регион памяти или нулевой указатель, если отображение не удалось. Размер отображенного региона памяти в байтах возвращается в numBytes, а шаг строки — в bytesPerLine.

Примечание: Запись в память, отображенную как только для чтения, не определена и может привести к изменениям в общих данных или к сбоям.

См. также unmap() и mapMode().

[pure virtual] QAbstractVideoBuffer::MapMode QAbstractVideoBuffer::mapMode() const

Возвращает режим отображения буфера видео.

См. также map().

int QAbstractVideoBuffer::mapPlanes(QAbstractVideoBuffer::MapMode mode, int *numBytes, int [4] bytesPerLine = 4, uchar *[4] data = 4)

Независимо отображает плоскости буфера видео в память.

Режим отображения mode указывает, следует ли читать/записывать содержимое отображенной памяти в буфер. Если режим отображения включает флаг QAbstractVideoBuffer::ReadOnly, отображенная память будет заполняться содержимым буфера при первоначальном отображении. Если режим отображения включает флаг QAbstractVideoBuffer::WriteOnly, содержимое, возможно, изменённой отображенной памяти, будет записано обратно в буфер при размыкании.

Когда доступ к данным больше не нужен, обязательно вызовите функцию unmap(), чтобы освободить отображенную память и, возможно, обновить содержимое буфера.

Возвращает количество плоскостей в отображенных видеоданных. Для каждой плоскости размер строки этой плоскости будет возвращён в bytesPerLine, а указатель на данные плоскости будет возвращён в data. Общий размер отображенных данных возвращается в numBytes.

Не все реализации буферов будут отображать более первой плоскости, если это возвращает одну плоскость для плоского формата, дополнительные плоскости нужно будет вычислить из размера строки первой плоскости и высоты кадра. Отображение буфера с помощью QVideoFrame сделает это за вас.

Для реализации этой функции создайте производный класс от QAbstractPlanarVideoBuffer и реализуйте его функцию отображения вместо.

Эта функция была добавлена в Qt 5.4.

[virtual] void QAbstractVideoBuffer::release()

Освобождает буфер видео.

QVideoFrame вызывает QAbstractVideoBuffer::release, когда буфер больше не используется и может быть уничтожен или возвращён в пул буферов.

По умолчанию реализация удаляет экземпляр буфера.

[pure virtual] void QAbstractVideoBuffer::unmap()

Освобождает память, отображенную функцией map().

Если режим отображения MapMode включал флаг QAbstractVideoBuffer::WriteOnly, это запишет текущее содержимое отображенной памяти обратно в кадр видео.

См. также map().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qabstractvideobuffer.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API