Spec-Zone.ru › Qt 5.13

Класс QVideoFrame

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

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

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

перечисление FieldType { ProgressiveFrame, TopField, BottomField, InterlacedFrame }
перечисление PixelFormat { Format_Invalid, Format_ARGB32, Format_ARGB32_Premultiplied, Format_RGB32, ..., 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 Кадр хранится в формате 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_ABGR32 10 Кадр хранится в формате ABGR 32 бит (0xAABBGGRR).
QVideoFrame::Format_BGR32 11 Кадр хранится в формате BGR 32 бит (0xBBGGRRff).
QVideoFrame::Format_BGR24 12 Кадр хранится в формате BGR 24 бит (0xBBGGRR).
QVideoFrame::Format_BGR565 13 Кадр хранится в формате BGR 16 бит (5-6-5).
QVideoFrame::Format_BGR555 14 Кадр хранится в формате BGR 16 бит (5-5-5).
QVideoFrame::Format_BGRA5658_Premultiplied 15 Кадр хранится в предварительно умноженном формате BGRA 24 бит (5-6-5-8).
QVideoFrame::Format_AYUV444 16 Кадр хранится в упакованном формате AYUV 32 бит (0xAAYYUUVV).
QVideoFrame::Format_AYUV444_Premultiplied 17 Кадр хранится в предварительно умноженном упакованном формате AYUV 32 бит (0xAAYYUUVV).
QVideoFrame::Format_YUV444 18 Кадр хранится в упакованном формате YUV 24 бит (8-8-8).
QVideoFrame::Format_YUV420P 19 Кадр хранится в планарном формате YUV 8 бит на компонент с субдискретизацией U и V плоскостей по горизонтали и вертикали, т.е. высота и ширина плоскостей U и V составляют половину высоты и ширины плоскости Y.
QVideoFrame::Format_YV12 20 Кадр хранится в планарном формате YVU 8 бит на компонент с субдискретизацией V и U плоскостей по горизонтали и вертикали, т.е. высота и ширина плоскостей V и U составляют половину высоты и ширины плоскости Y.
QVideoFrame::Format_UYVY 21 Кадр хранится в упакованном формате YUV 8 бит на компонент с субдискретизацией U и V плоскостей по горизонтали (U-Y-V-Y), т.е. два соседних по горизонтали пикселя хранятся как 32-битный макропиксель, который имеет значение Y для каждого пикселя и общие значения U и V.
QVideoFrame::Format_YUYV 22 Кадр хранится в упакованном формате YUV 8 бит на компонент с субдискретизацией U и V плоскостей по горизонтали (Y-U-Y-V), т.е. два соседних по горизонтали пикселя хранятся как 32-битный макропиксель, который имеет значение Y для каждого пикселя и общие значения U и V.
QVideoFrame::Format_NV12 23 Кадр хранится в полупланарном формате YUV 8 бит на компонент с плоскостью Y, за которой следует упакованная, субдискретизированная по горизонтали и вертикали плоскость UV (U-V).
QVideoFrame::Format_NV21 24 Кадр хранится в полупланарном формате YUV 8 бит на компонент с плоскостью Y, за которой следует упакованная, субдискретизированная по горизонтали и вертикали плоскость VU (V-U).
QVideoFrame::Format_IMC1 25 Кадр хранится в планарном формате YUV 8 бит на компонент с субдискретизацией U и V плоскостей по горизонтали и вертикали. Это аналогично типу Format_YUV420P, за исключением того, что байты на строку плоскостей U и V заполняются до того же шага, что и плоскость Y.
QVideoFrame::Format_IMC2 26 Кадр хранится в планарном формате YUV 8 бит на компонент с субдискретизацией U и V плоскостей по горизонтали и вертикали. Это аналогично типу Format_YUV420P, за исключением того, что строки плоскостей U и V чередуются, т.е. каждая строка данных U следует за строкой данных V, создавая одну строку с тем же шагом, что и данные Y.
QVideoFrame::Format_IMC3 27 Кадр хранится в планарном формате YVU 8 бит на компонент с субдискретизацией V и U плоскостей по горизонтали и вертикали. Это аналогично типу Format_YV12, за исключением того, что байты на строку плоскостей V и U заполняются до того же шага, что и плоскость Y.
QVideoFrame::Format_IMC4 28 Кадр хранится в планарном формате YVU 8 бит на компонент с субдискретизацией V и U плоскостей по горизонтали и вертикали. Это аналогично типу Format_YV12, за исключением того, что строки плоскостей V и U чередуются, т.е. каждая строка данных V следует за строкой данных U, создавая одну строку с тем же шагом, что и данные Y.
QVideoFrame::Format_Y8 29 Кадр хранится в формате серого цвета 8 бит.
QVideoFrame::Format_Y16 30 Кадр хранится в линейном формате серого цвета 16 бит. Маленький порядок байтов.
QVideoFrame::Format_Jpeg 31 Кадр хранится в сжатом формате JPEG.
QVideoFrame::Format_CameraRaw 32 Кадр хранится в формате необработанных данных камеры, специфичном для устройства.
QVideoFrame::Format_AdobeDng 33 Кадр хранится в формате необработанных данных Adobe Digital Negative (DNG).
QVideoFrame::Format_User 1000 Начальное значение для пользовательских форматов пикселей.

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

QVideoFrame::QVideoFrame(const QVideoFrame &other)

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

QVideoFrame::QVideoFrame(const QImage &image)

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

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

См. также 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)

Возвращает указатель на начало буфера данных кадра для плоскости 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().

QAbstractVideoBuffer *QVideoFrame::buffer() const

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

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

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().

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)

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

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

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

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

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

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

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

Возвращает 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().

QVideoFrame::PixelFormat QVideoFrame::pixelFormat() const

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

[static] QVideoFrame::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(QVideoFrame::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().

Если 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.13/qvideoframe.html

Spec-Zone.ru

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