Spec-Zone.ru › Qt 5.15

Класс 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
QImage image() 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 encapsulates пиксельные данные кадра видео и информацию о кадре.

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

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

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

Пиксельные данные видео в QVideoFrame encapsulate в 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 Кадр хранится с использованием 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::Format_ARGB8565_Premultiplied 7 Кадр хранится с использованием 24-битного предварительно умноженного формата ARGB (8-5-6-5).
QVideoFrame::Format_BGRA32 8 Кадр хранится с использованием 32-битного формата BGRA (0xBBGGRRAA).
QVideoFrame::Format_BGRA32_Premultiplied 9 Кадр хранится с использованием 32-битного предварительно умноженного формата BGRA.
QVideoFrame::Format_ABGR32 33 Кадр хранится с использованием 32-битного формата ABGR (0xAABBGGRR).
QVideoFrame::Format_BGR32 10 Кадр хранится с использованием 32-битного формата BGR (0xBBGGRRff).
QVideoFrame::Format_BGR24 11 Кадр хранится с использованием 24-битного формата BGR (0xBBGGRR).
QVideoFrame::Format_BGR565 12 Кадр хранится с использованием 16-битного формата BGR (5-6-5).
QVideoFrame::Format_BGR555 13 Кадр хранится с использованием 16-битного формата BGR (5-5-5).
QVideoFrame::Format_BGRA5658_Premultiplied 14 Кадр хранится с использованием 24-битного предварительно умноженного формата BGRA (5-6-5-8).
QVideoFrame::Format_AYUV444 15 Кадр хранится с использованием упакованного 32-битного формата AYUV (0xAAYYUUVV).
QVideoFrame::Format_AYUV444_Premultiplied 16 Кадр хранится с использованием упакованного 32-битного предварительно умноженного формата AYUV (0xAAYYUUVV).
QVideoFrame::Format_YUV444 17 Кадр хранится с использованием 24-битного упакованного формата YUV (8-8-8).
QVideoFrame::Format_YUV420P 18 Кадр хранится с использованием планарного формата YUV с 8 битами на компонент, где плоскости U и V субдискретизированы по горизонтали и вертикали, т.е. высота и ширина плоскостей U и V составляют половину от высоты и ширины плоскости Y.
QVideoFrame::Format_YUV422P 34 Кадр хранится с использованием планарного формата YUV с 8 битами на компонент, где плоскости U и V субдискретизированы по горизонтали, т.е. ширина плоскостей U и V составляет половину от ширины плоскости Y, а высота плоскостей 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 (Y), за которой следует упакованная субдискретизированная по горизонтали и вертикали плоскость UV (U-V).
QVideoFrame::Format_NV21 23 Кадр хранится с использованием полупланарного формата YUV с 8 битами на компонент, с плоскостью Y (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-битного линейного градационного формата. Little endian.
QVideoFrame::Format_Jpeg 30 Кадр хранится в сжатом формате Jpeg.
QVideoFrame::Format_CameraRaw 31 Кадр хранится с использованием специфического для устройства формата RAW камеры.
QVideoFrame::Format_AdobeDng 32 Кадр хранится с использованием формата raw 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 байты, const QSize &размер, int байтыНаСтроку, QVideoFrame::PixelFormat формат)

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

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

QVideoFrame::QVideoFrame(QAbstractVideoBuffer *буфер, const QSize &размер, QVideoFrame::PixelFormat формат)

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

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

QVideoFrame::QVideoFrame()

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

QVideoFrame &QVideoFrame::operator=(const QVideoFrame &другой)

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

QVideoFrame::~QVideoFrame()

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

QVariantMap QVideoFrame::availableMetaData() const

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

uchar *QVideoFrame::bits()

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

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

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

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

uchar *QVideoFrame::bits(int плоскость)

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

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

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

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

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

const uchar *QVideoFrame::bits() const

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

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

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

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

const uchar *QVideoFrame::bits(int плоскость) 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 плоскость) 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

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

QImage QVideoFrame::image() const

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

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

[static] QImage::Format QVideoFrame::imageFormatFromPixelFormat(QVideoFrame::PixelFormat формат)

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

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

QAbstractVideoBuffer::MapMode QVideoFrame::mapMode() const

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

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

int QVideoFrame::mappedBytes() const

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

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

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

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

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

Эта функция была добавлена в 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.15/qvideoframe.html

Spec-Zone.ru

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