Spec-Zone.ru › Qt 5.6

Класс QVideoFrame

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

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

Открытые типы

enum FieldType { ProgressiveFrame, TopField, BottomField, InterlacedFrame }
enum PixelFormat { Format_Invalid, Format_ARGB32, Format_ARGB32_Premultiplied, Format_RGB32, ..., Format_User }

Открытые функции

QVideoFrame()
QVideoFrame(QAbstractVideoBuffer *buffer, const QSize &size, PixelFormat format)
QVideoFrame(int bytes, const QSize &size, int bytesPerLine, PixelFormat format)
QVideoFrame(const QImage &image)
QVideoFrame(const QVideoFrame &other)
~QVideoFrame()
QVariantMap availableMetaData() const
uchar * bits()
uchar * bits(int plane)
const uchar * bits() const
const uchar * bits(int plane) const
int bytesPerLine() const
int bytesPerLine(int plane) const
qint64 endTime() const
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
PixelFormat pixelFormat() const
int planeCount() const
void setEndTime(qint64 time)
void setFieldType(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
QVideoFrame & operator=(const QVideoFrame &other)
bool operator==(const QVideoFrame &other) const

Статические открытые члены

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

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

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

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

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

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

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

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

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

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

enum 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 Кадр хранится в формате ARGB 32-бит (0xAARRGGBB). Эквивалентно QImage::Format_ARGB32.
QVideoFrame::Format_ARGB32_Premultiplied 2 Кадр хранится в предумноженном формате ARGB 32-бит (0xAARRGGBB). Эквивалентно QImage::Format_ARGB32_Premultiplied.
QVideoFrame::Format_RGB32 3 Кадр хранится в формате RGB 32-бит (0xffRRGGBB). Эквивалентно QImage::Format_RGB32
QVideoFrame::Format_RGB24 4 Кадр хранится в формате RGB 24-бит (8-8-8). Эквивалентно QImage::Format_RGB888
QVideoFrame::Format_RGB565 5 Кадр хранится в формате RGB 16-бит (5-6-5). Эквивалентно QImage::Format_RGB16.
QVideoFrame::Format_RGB555 6 Кадр хранится в формате RGB 16-бит (5-5-5). Эквивалентно QImage::Format_RGB555.
QVideoFrame::Format_ARGB8565_Premultiplied 7 Кадр хранится в предумноженном формате ARGB 24-бит (8-5-6-5).
QVideoFrame::Format_BGRA32 8 Кадр хранится в формате BGRA 32-бит (0xBBGGRRAA).
QVideoFrame::Format_BGRA32_Premultiplied 9 Кадр хранится в предумноженном формате BGRA 32-бит.
QVideoFrame::Format_BGR32 10 Кадр хранится в формате BGR 32-бит (0xBBGGRRff).
QVideoFrame::Format_BGR24 11 Кадр хранится в формате BGR 24-бит (0xBBGGRR).
QVideoFrame::Format_BGR565 12 Кадр хранится в формате BGR 16-бит (5-6-5).
QVideoFrame::Format_BGR555 13 Кадр хранится в формате BGR 16-бит (5-5-5).
QVideoFrame::Format_BGRA5658_Premultiplied 14 Кадр хранится в предумноженном формате BGRA 24-бит (5-6-5-8).
QVideoFrame::Format_AYUV444 15 Кадр хранится в упакованном формате AYUV 32-бит (0xAAYYUUVV).
QVideoFrame::Format_AYUV444_Premultiplied 16 Кадр хранится в предумноженном упакованном формате AYUV 32-бит (0xAAYYUUVV).
QVideoFrame::Format_YUV444 17 Кадр хранится в упакованном формате YUV 24-бит (8-8-8).
QVideoFrame::Format_YUV420P 18 Кадр хранится в формате YUV с 8 битами на компонент в плоском формате, где плоскости U и V горизонтально и вертикально подвыбираются, то есть высота и ширина плоскостей U и V в два раза меньше, чем у плоскости Y.
QVideoFrame::Format_YV12 19 Кадр хранится в формате YVU с 8 битами на компонент в плоском формате, где плоскости V и U горизонтально и вертикально подвыбираются, то есть высота и ширина плоскостей V и U в два раза меньше, чем у плоскости Y.
QVideoFrame::Format_UYVY 20 Кадр хранится в упакованном формате YUV с 8 битами на компонент, где плоскости U и V горизонтально подвыбираются (U-Y-V-Y), то есть два горизонтально смежных пикселя хранятся как 32-битный макропиксель, который имеет значение Y для каждого пикселя и общие значения U и V.
QVideoFrame::Format_YUYV 21 Кадр хранится в упакованном формате YUV с 8 битами на компонент, где плоскости U и V горизонтально подвыбираются (Y-U-Y-V), то есть два горизонтально смежных пикселя хранятся как 32-битный макропиксель, который имеет значение Y для каждого пикселя и общие значения U и V.
QVideoFrame::Format_NV12 22 Кадр хранится в полуплоском формате YUV с 8 битами на компонент, где плоскость Y идёт первой, за ней следует горизонтально и вертикально подвыбранная упакованная плоскость UV (U-V).
QVideoFrame::Format_NV21 23 Кадр хранится в полуплоском формате YUV с 8 битами на компонент, где плоскость Y идёт первой, за ней следует горизонтально и вертикально подвыбранная упакованная плоскость VU (V-U).
QVideoFrame::Format_IMC1 24 Кадр хранится в плоском формате YUV с 8 битами на компонент, где плоскости U и V горизонтально и вертикально подвыбираются. Это похоже на тип Format_YUV420P, за исключением того, что байты на строку плоскостей U и V заполняются до того же шага, что и плоскость Y.
QVideoFrame::Format_IMC2 25 Кадр хранится в плоском формате YUV с 8 битами на компонент, где плоскости U и V горизонтально и вертикально подвыбираются. Это похоже на тип Format_YUV420P, за исключением того, что строки плоскостей U и V чередуются, то есть каждая строка данных U следует за строкой данных V, создавая одну строку с тем же шагом, что и данные Y.
QVideoFrame::Format_IMC3 26 Кадр хранится в плоском формате YVU с 8 битами на компонент, где плоскости V и U горизонтально и вертикально подвыбираются. Это похоже на тип Format_YV12, за исключением того, что байты на строку плоскостей V и U заполняются до того же шага, что и плоскость Y.
QVideoFrame::Format_IMC4 27 Кадр хранится в плоском формате YVU с 8 битами на компонент, где плоскости V и U горизонтально и вертикально подвыбираются. Это похоже на тип Format_YV12, за исключением того, что строки плоскостей V и U чередуются, то есть каждая строка данных V следует за строкой данных U, создавая одну строку с тем же шагом, что и данные Y.
QVideoFrame::Format_Y8 28 Кадр хранится в 8-битном формате серого цвета.
QVideoFrame::Format_Y16 29 Кадр хранится в 16-битном линейном формате серого цвета. Маленький порядок байтов.
QVideoFrame::Format_Jpeg 30 Кадр хранится в сжатом формате JPEG.
QVideoFrame::Format_CameraRaw 31 Кадр хранится в формате «сырого» изображения камеры, специфичном для устройства.
QVideoFrame::Format_AdobeDng 32 Кадр хранится в формате «сырого» изображения Adobe Digital Negative (DNG).
QVideoFrame::Format_User 1000 Начальное значение для пользовательских форматов пикселей.

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

QVideoFrame::QVideoFrame()

Создаёт пустой видеокадр.

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

Создаёт видеокадр из buffer с заданным форматом пикселей format и размером size в пикселях.

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

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

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

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

QVideoFrame::QVideoFrame(const QImage &image)

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

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

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

QVideoFrame::QVideoFrame(const QVideoFrame &other)

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

QVideoFrame::~QVideoFrame()

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

QVariantMap QVideoFrame::availableMetaData() const

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

uchar *QVideoFrame::bits()

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

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

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

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

uchar *QVideoFrame::bits(int plane)

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

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

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

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

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

const uchar *QVideoFrame::bits() const

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

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

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

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

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

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

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

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

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

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

int QVideoFrame::bytesPerLine() const

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

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

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

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

int QVideoFrame::bytesPerLine(int plane) const

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

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

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

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

qint64 QVideoFrame::endTime() const

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

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

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

FieldType QVideoFrame::fieldType() const

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

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

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

QVariant QVideoFrame::handle() const

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

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

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

QAbstractVideoBuffer::HandleType QVideoFrame::handleType() const

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

int QVideoFrame::height() const

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

Формат изображения, эквивалентный видеоформату. QImage::Format QVideoFrame::imageFormatFromPixelFormat(PixelFormat format)

Возвращает формат изображения, эквивалентный видеоформату пикселей 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)

Отображает содержимое видеокадра в системной (доступной по адресу CPU) памяти.

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

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

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

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

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

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

END_OF_DOCUMENT_MARKER

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

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

QAbstractVideoBuffer::MapMode QVideoFrame::mapMode() const

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

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

int QVideoFrame::mappedBytes() const

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

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

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

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

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

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

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

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

PixelFormat QVideoFrame::pixelFormat() const

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

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

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

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

int QVideoFrame::planeCount() const

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

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

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

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

void QVideoFrame::setEndTime(qint64 time)

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

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

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

void QVideoFrame::setFieldType(FieldType field)

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

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

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

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

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

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

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

void QVideoFrame::setStartTime(qint64 time)

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

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

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

QSize QVideoFrame::size() const

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

qint64 QVideoFrame::startTime() const

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

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

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

void QVideoFrame::unmap()

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

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

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

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

int QVideoFrame::width() const

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

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

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

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

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

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/archives/qt-5.6/qvideoframe.html

Spec-Zone.ru

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