Spec-Zone.ru › Qt

Класс QVideoFrame

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

Заголовок: #include <QVideoFrame>
CMake: find_package(Qt6 COMPONENTS Multimedia REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmake: QT += multimedia
  • Список всех членов, включая унаследованные

Типы public

Перечисление HandleType { NoHandle, RhiTextureHandle }
Перечисление MapMode { NotMapped, ReadOnly, WriteOnly, ReadWrite }

Функции public

QVideoFrame(QVideoFrame &&other)
QVideoFrame(const QVideoFrame &other)
QVideoFrame(const QVideoFrameFormat &format)
QVideoFrame()
QVideoFrame & operator=(const QVideoFrame &other)
QVideoFrame & operator=(QVideoFrame &&other)
~QVideoFrame()
uchar * bits(int plane)
const uchar * bits(int plane) const
int bytesPerLine(int plane) const
qint64 endTime() const
QVideoFrame::HandleType handleType() const
int height() const
bool isMapped() const
bool isReadable() const
bool isValid() const
bool isWritable() const
bool map(QVideoFrame::MapMode mode)
QVideoFrame::MapMode mapMode() const
int mappedBytes(int plane) const
void paint(QPainter *painter, const QRectF &rect, const QVideoFrame::PaintOptions &options)
QVideoFrameFormat::PixelFormat pixelFormat() const
int planeCount() const
void setEndTime(qint64 time)
void setStartTime(qint64 time)
void setSubtitleText(const QString &text)
QSize size() const
qint64 startTime() const
QString subtitleText() const
QVideoFrameFormat surfaceFormat() const
QImage toImage() const
void unmap()
int width() const
bool operator!=(const QVideoFrame &other) const
bool operator==(const QVideoFrame &other) const

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

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

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

Пиксельные данные кадра видео можно отобразить в памяти, используя функцию map(). После успешного вызова map() доступ к видеоданным можно получить через различные функции. Некоторые форматы пикселей YUV предоставляют данные в нескольких плоскостях. Метод planeCount() вернёт количество используемых плоскостей.

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

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

Объекты QVideoFrame могут потреблять значительное количество памяти или системных ресурсов и не должны удерживаться дольше, чем необходимо приложению.

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

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

enum QVideoFrame::HandleType

Определяет тип обработчика видеобуфера.

Константа Значение Описание
QVideoFrame::NoHandle 0 Буфер не имеет обработчика; доступ к его данным возможен только путем отображения буфера.
QVideoFrame::RhiTextureHandle 1 Обработчик буфера определяется интерфейсом Qt Rendering Hardware Interface (RHI). RHI — это внутреннее графическое абстрагирование Qt для 3D-API, таких как OpenGL, Vulkan, Metal и Direct 3D.

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

enum QVideoFrame::MapMode

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

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

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

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

QVideoFrame::QVideoFrame(QVideoFrame &&other)

Создаёт QVideoFrame, перемещая данные из other.

QVideoFrame::QVideoFrame(const QVideoFrame &other)

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

QVideoFrame::QVideoFrame(const QVideoFrameFormat &format)

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

QVideoFrame::QVideoFrame()

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

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

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

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

Перемещает other в этот QVideoFrame.

QVideoFrame::~QVideoFrame()

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

uchar *QVideoFrame::bits(int plane)

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

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

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

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

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

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

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

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

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

int QVideoFrame::bytesPerLine(int plane) const

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

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

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

qint64 QVideoFrame::endTime() const

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

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

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

QVideoFrame::HandleType QVideoFrame::handleType() const

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

Тип обработчика может быть NoHandle, что означает, что кадр основан на памяти, или текстурой RHI.

int QVideoFrame::height() const

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

bool QVideoFrame::isMapped() const

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

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

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

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

bool QVideoFrame::isReadable() const

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

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

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

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

bool QVideoFrame::isValid() const

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

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

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

bool QVideoFrame::isWritable() const

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

QVideoFrame::MapMode QVideoFrame::mapMode() const

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

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

int QVideoFrame::mappedBytes(int plane) const

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

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

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

void QVideoFrame::paint(QPainter *painter, const QRectF &rect, const QVideoFrame::PaintOptions &options)

Использует QPainter, painter, для отрисовки этого QVideoFrame в прямоугольник rect. Опции рисования options могут быть использованы для задания цвета фона и способа заполнения прямоугольника rect видео.

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

QVideoFrameFormat::PixelFormat QVideoFrame::pixelFormat() const

Возвращает формат пикселей этого видеокадра.

int QVideoFrame::planeCount() const

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

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

void QVideoFrame::setEndTime(qint64 time)

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

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

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

void QVideoFrame::setStartTime(qint64 time)

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

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

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

void QVideoFrame::setSubtitleText(const QString &text)

Устанавливает текст субтитров, который должен быть отрисован вместе с этим видеокадром, в text.

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

QSize QVideoFrame::size() const

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

qint64 QVideoFrame::startTime() const

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

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

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

QString QVideoFrame::subtitleText() const

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

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

QVideoFrameFormat QVideoFrame::surfaceFormat() const

Возвращает формат поверхности этого видеокадра.

QImage QVideoFrame::toImage() const

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

void QVideoFrame::unmap()

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

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

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-6.2/qvideoframe.html

Spec-Zone.ru

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