Spec-Zone.ru › Qt 5.14

Класс QVideoFrame

Класс QVideoFrame представляет кадр видеоданных. Подробнее...

Заголовок: #include <QVideoFrame>
qmake: QT += multimedia
  • Список всех членов, включая унаследованные

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

перечисление FieldType { ProgressiveFrame, TopField, BottomField, InterlacedFrame }
перечисление PixelFormat { Format_Invalid, Format_ARGB32, Format_ARGB32_Premultiplied, Format_RGB32, Format_RGB24, …, Format_User }

Публичные функции

QVideoFrame(const QVideoFrame &other)
QVideoFrame(const QImage &image)
QVideoFrame(int bytes, const QSize &size, int bytesPerLine, QVideoFrame::PixelFormat format)
QVideoFrame(QAbstractVideoBuffer *buffer, const QSize &size, QVideoFrame::PixelFormat format)
QVideoFrame()
QVideoFrame & operator=(const QVideoFrame &other)
~QVideoFrame()
QVariantMap availableMetaData() const
uchar * bits()
uchar * bits(int plane)
const uchar * bits() const
const uchar * bits(int plane) const
QAbstractVideoBuffer * buffer() const
int bytesPerLine() const
int bytesPerLine(int plane) const
qint64 endTime() const
QVideoFrame::FieldType fieldType() const
QVariant handle() const
QAbstractVideoBuffer::HandleType handleType() const
int height() const
bool isMapped() const
bool isReadable() const
bool isValid() const
bool isWritable() const
bool map(QAbstractVideoBuffer::MapMode mode)
QAbstractVideoBuffer::MapMode mapMode() const
int mappedBytes() const
QVariant metaData(const QString &key) const
QVideoFrame::PixelFormat pixelFormat() const
int planeCount() const
void setEndTime(qint64 time)
void setFieldType(QVideoFrame::FieldType field)
void setMetaData(const QString &key, const QVariant &value)
void setStartTime(qint64 time)
QSize size() const
qint64 startTime() const
void unmap()
int width() const
bool operator!=(const QVideoFrame &other) const
bool operator==(const QVideoFrame &other) const

Статические публичные члены

QImage::Format imageFormatFromPixelFormat(QVideoFrame::PixelFormat format)
QVideoFrame::PixelFormat pixelFormatFromImageFormat(QImage::Format format)

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

QVideoFrame инкапсулирует пиксельные данные кадра видео и информацию о кадре.

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

Внутреннее содержимое кадра видео может быть отображено в памяти с помощью функции map(). Во время отображения к данным видео можно получить доступ с помощью функции bits(), которая возвращает указатель на буфер. Общий размер этого буфера задается функцией mappedBytes(), а размер каждой строки — функцией bytesPerLine(). Значение функции handle() также может быть использовано для доступа к данным кадра с помощью собственных API-интерфейсов внутреннего буфера (например, дескриптор текстуры OpenGL).

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

Данные видеопикселей в QVideoFrame инкапсулированы в QAbstractVideoBuffer. QVideoFrame может быть создан из любого типа буфера путём наследования класса QAbstractVideoBuffer.

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

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

перечисление QVideoFrame::FieldType

Определяет поле, к которому относится интерлинированный кадр видео.

Константа Значение Описание
QVideoFrame::ProgressiveFrame 0 Кадр не чересстрочный.
QVideoFrame::TopField 1 Кадр содержит верхнюю строку.
QVideoFrame::BottomField 2 Кадр содержит нижнюю строку.
QVideoFrame::InterlacedFrame 3 Кадр содержит объединённую верхнюю и нижнюю строки.

enum QVideoFrame::PixelFormat

Перечисляет типы видеоданных.

Константа Значение Описание
QVideoFrame::Format_Invalid 0 Кадр недействителен.
QVideoFrame::Format_ARGB32 1 Кадр хранится в формате 32-битного ARGB (0xAARRGGBB). Эквивалентен QImage::Format_ARGB32.
QVideoFrame::Format_ARGB32_Premultiplied 2 Кадр хранится в предварительно умноженном 32-битном формате ARGB (0xAARRGGBB). Эквивалентен QImage::Format_ARGB32_Premultiplied.
QVideoFrame::Format_RGB32 3 Кадр хранится в 32-битном формате RGB (0xffRRGGBB). Эквивалентен QImage::Format_RGB32
QVideoFrame::Format_RGB24 4 Кадр хранится в 24-битном формате RGB (8-8-8). Эквивалентен QImage::Format_RGB888
QVideoFrame::Format_RGB565 5 Кадр хранится в 16-битном формате RGB (5-6-5). Эквивалентен QImage::Format_RGB16.
QVideoFrame::Format_RGB555 6 Кадр хранится в 16-битном формате RGB (5-5-5). Эквивалентен QImage::Format_RGB555.

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

QVideoFrame::QVideoFrame(const QVideoFrame &other)

Создаёт поверхностную копию other. Поскольку QVideoFrame явно использует совместный доступ, эти два экземпляра будут отражать один и тот же кадр.

QVideoFrame::QVideoFrame(const QImage &image)

Создаёт видеокадр из image.

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

END_OF_DOCUMENT_MARKER

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

QVideoFrame::QVideoFrame(int bytes, const QSize &size, int bytesPerLine, QVideoFrame::PixelFormat format)

Создаёт видеокадр заданного пиксельного формата и размера в пикселях.

bytesPerLine (шаг) — длина каждой строки сканирования в байтах, а bytes — общее количество байтов, которые должны быть выделены для кадра.

QVideoFrame::QVideoFrame(QAbstractVideoBuffer *buffer, const QSize &size, QVideoFrame::PixelFormat format)

Создаёт видеокадр из буфера с заданным пиксельным форматом и размером в пикселях.

Примечание: Это не увеличивает счётчик ссылок видеобуфера.

QVideoFrame::QVideoFrame()

Создаёт нулевой видеокадр.

QVideoFrame &QVideoFrame::operator=(const QVideoFrame &other)

Присваивает содержимое other этому видеокадру. Поскольку QVideoFrame явно совместно используемый, эти два экземпляра будут отражать один и тот же кадр.

QVideoFrame::~QVideoFrame()

Уничтожает видеокадр.

QVariantMap QVideoFrame::availableMetaData() const

Возвращает любые дополнительные метаданные, связанные с этим кадром.

uchar *QVideoFrame::bits()

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

Это значение действительное только пока данные кадра отображены.

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

См. также map(), mappedBytes() и bytesPerLine().

uchar *QVideoFrame::bits(int plane)

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

Это значение действительное только пока данные кадра отображены.

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

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

См. также map(), mappedBytes(), bytesPerLine() и planeCount().

const uchar *QVideoFrame::bits() const

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

Это значение действительное только пока данные кадра отображены.

Если буфер не отображался с доступом для чтения, содержимое этого буфера изначально будет неопределённым.

См. также map(), mappedBytes() и bytesPerLine().

const uchar *QVideoFrame::bits(int plane) const

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

Это значение действительное только пока данные кадра отображены.

Если буфер не отображался с доступом для чтения, содержимое этого буфера изначально будет неопределённым.

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

См. также map(), mappedBytes(), bytesPerLine() и planeCount().

QAbstractVideoBuffer *QVideoFrame::buffer() const

Возвращает базовый видеобуфер или null если его нет.

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

int QVideoFrame::bytesPerLine() const

Возвращает количество байтов в строке сканирования.

Примечание: Для плоских форматов это количество байтов в строке только для первой плоскости. Количество байтов в строке последующих плоскостей должно быть вычислено в соответствии с форматом пикселей кадра.

Это значение действительное только пока данные кадра отображены.

См. также bits(), map() и mappedBytes().

int QVideoFrame::bytesPerLine(int plane) const

Возвращает количество байтов в строке сканирования для плоскости.

Это значение действительное только пока данные кадра отображены.

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

См. также bits(), map(), mappedBytes() и planeCount().

qint64 QVideoFrame::endTime() const

Возвращает время презентации (в микросекундах), когда кадр должен перестать отображаться.

Неверное время представлено как -1.

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

QVideoFrame::FieldType QVideoFrame::fieldType() const

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

Если видео не чересстрочное, это будет WholeFrame.

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

QVariant QVideoFrame::handle() const

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

Для текстуры OpenGL это будет идентификатор текстуры.

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

QAbstractVideoBuffer::HandleType QVideoFrame::handleType() const

Возвращает тип ручки видеокадра.

int QVideoFrame::height() const

Возвращает высоту видеокадра.

[static] QImage::Format QVideoFrame::imageFormatFromPixelFormat(QVideoFrame::PixelFormat format)

Возвращает эквивалентный формат изображения для пиксельного формата видеокадра. Если эквивалентного формата нет, возвращается QImage::Format_Invalid.

Примечание: В общем случае QImage не обрабатывает форматы YUV.

bool QVideoFrame::isMapped() const

Определяет, отображаются ли в настоящее время содержимое видеокадра в системной памяти.

Это вспомогательная функция, которая проверяет, что MapMode кадра не равен QAbstractVideoBuffer::NotMapped.

Возвращает true, если содержимое видеокадра отображено в системной памяти, и false в противном случае.

См. также mapMode() и QAbstractVideoBuffer::MapMode.

bool QVideoFrame::isReadable() const

Определяет, были ли отображенные данные видеокадра прочитаны из кадра при отображении.

Это вспомогательная функция, которая проверяет, содержит ли MapMode флаг QAbstractVideoBuffer::WriteOnly.

Возвращает true, если содержимое отображённой памяти было прочитано из видеокадра, и false в противном случае.

См. также mapMode() и QAbstractVideoBuffer::MapMode.

bool QVideoFrame::isValid() const

Определяет, является ли видеокадр допустимым.

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

Возвращает true, если кадр допустим, и false в противном случае.

bool QVideoFrame::isWritable() const

Определяет, будут ли сохранены отображённые данные видеокадра при раз отображении.

Это вспомогательная функция, которая проверяет, содержит ли MapMode флаг QAbstractVideoBuffer::WriteOnly.

Возвращает true, если видеокадр будет обновлён при раз отображении, и false в противном случае.

Примечание: Результат изменения данных кадра, отображённого в режиме только для чтения, не определён. В зависимости от реализации буфера изменения могут быть сохранены или, что хуже, изменят общий буфер.

См. также mapMode() и QAbstractVideoBuffer::MapMode.

bool QVideoFrame::map(QAbstractVideoBuffer::MapMode mode)

Отображает содержимое видеокадра в системную (доступную по адресу ЦП) память.

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

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

Во время отображения к содержимому видеокадра можно получить прямой доступ через указатель, возвращаемый функцией bits().

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

Если видеокадр отображен в режиме только для чтения, разрешено отображать его несколько раз в режиме только для чтения (и скрывать соответствующее количество раз). Во всех остальных случаях необходимо сначала скрыть кадр перед повторным отображением.

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

Возвращает true, если кадр был отображен в памяти в указанном режиме mode, и false в противном случае.

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

QAbstractVideoBuffer::MapMode QVideoFrame::mapMode() const

Возвращает режим отображения видеокадра в системной памяти.

См. также map() и QAbstractVideoBuffer::MapMode.

int QVideoFrame::mappedBytes() const

Возвращает количество байтов, занимаемых отображенными данными кадра.

Это значение применимо только пока данные кадра отображены mapped.

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

QVariant QVideoFrame::metaData(const QString &key) const

Возвращает любые метаданные для этого кадра для данного ключа key.

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

Дополнительную информацию об имеющихся метаданных см. в документации соответствующего производителя видеокадров.

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

QVideoFrame::PixelFormat QVideoFrame::pixelFormat() const

Возвращает цветовой формат видеокадра.

[static] QVideoFrame::PixelFormat QVideoFrame::pixelFormatFromImageFormat(QImage::Format format)

Возвращает эквивалентный видеопиксельный формат для изображения format. Если эквивалентного формата нет, возвращается QVideoFrame::InvalidType.

Примечание: В целом QImage не обрабатывает форматы YUV.

int QVideoFrame::planeCount() const

Возвращает количество планов в видеокадре.

Это значение применимо только пока данные кадра отображены mapped.

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

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

void QVideoFrame::setEndTime(qint64 time)

Устанавливает время отображения (в микросекундах) time, когда кадр должен перестать отображаться.

Неверное время представлено как -1.

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

void QVideoFrame::setFieldType(QVideoFrame::FieldType field)

Устанавливает поле, к которому относится чересстрочный видеокадр.

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

void QVideoFrame::setMetaData(const QString &key, const QVariant &value)

Устанавливает метаданные для заданного ключа key со значением value.

Если value — это нулевая переменная, все метаданные для этого ключа будут удалены.

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

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

void QVideoFrame::setStartTime(qint64 time)

Устанавливает время отображения (в микросекундах) time, когда кадр должен быть отображен вначале.

Неверное время представлено как -1.

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

QSize QVideoFrame::size() const

Возвращает размеры видеокадра.

qint64 QVideoFrame::startTime() const

Возвращает время отображения (в микросекундах), когда кадр должен отображаться.

Неверное время представлено как -1.

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

void QVideoFrame::unmap()

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

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

unmap() не следует вызывать, если функция map() завершилась неудачно.

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

int QVideoFrame::width() const

Возвращает ширину видеокадра.

bool QVideoFrame::operator!=(const QVideoFrame &other) const

Возвращает true если этот QVideoFrame и other не отображают тот же кадр.

bool QVideoFrame::operator==(const QVideoFrame &other) const

Возвращает true если этот QVideoFrame и other отображают тот же кадр.

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

Spec-Zone.ru

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