Spec-Zone.ru › Qt 5.14

Класс QAbstractVideoSurface

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

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

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

Перечисление Ошибка { НетОшибки, ОшибкаНеподдерживаемогоФормата, ОшибкаНекорректногоФормата, ОшибкаОстановки, ОшибкаРесурса }

Свойства

  • nativeResolution : const QSize

Функции публичного доступа

QAbstractVideoSurface(QObject *parent = nullptr)
virtual ~QAbstractVideoSurface()
QAbstractVideoSurface::Ошибка error() const
bool isActive() const
virtual bool isFormatSupported(const QVideoSurfaceFormat &format) const
QSize nativeResolution() const
virtual QVideoSurfaceFormat nearestFormat(const QVideoSurfaceFormat &format) const
virtual bool present(const QVideoFrame &frame) = 0
virtual bool start(const QVideoSurfaceFormat &format)
virtual void stop()
virtual QList<QVideoFrame::PixelFormat> supportedPixelFormats(QAbstractVideoBuffer::HandleType type = QAbstractVideoBuffer::NoHandle) const = 0
QVideoSurfaceFormat surfaceFormat() const

Сигналы

void activeChanged(bool active)
void nativeResolutionChanged(const QSize &resolution)
void supportedFormatsChanged()
void surfaceFormatChanged(const QVideoSurfaceFormat &format)

Защищённые функции

void setError(QAbstractVideoSurface::Ошибка error)
void setNativeResolution(const QSize &resolution)

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

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

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

Список форматов пикселей, которые может отобразить поверхность, указан функцией supportedPixelFormats(), а функция isFormatSupported() проверяет, поддерживается ли формат видеоповерхности. Если формат не поддерживается, функция nearestFormat() может предложить аналогичный формат. Например, если поверхность поддерживает фиксированный набор разрешений, она может предложить наименьшее поддерживаемое разрешение, содержащее предложенное разрешение.

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

Реализация подкласса QAbstractVideoSurface

При реализации подкласса этого интерфейса необходимо реализовать лишь несколько функций, разделённых на два класса:

  • Связанные с форматом
  • Связанные с представлением

Для функций, связанных с форматом, нужно только описать поддерживаемые вами форматы пикселей (и функцию nearestFormat()). Для функций, связанных с представлением, нужно реализовать функцию present() и функции start() и stop().

Примечание: Вы должны вызвать реализацию базового класса start() и stop() в своей реализации.

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

Перечисление QAbstractVideoSurface::Ошибка

Это перечисление описывает ошибки, которые могут быть возвращены функцией error().

Константа Значение Описание
QAbstractVideoSurface::NoError 0 Ошибка не произошла.
QAbstractVideoSurface::UnsupportedFormatError 1 Формат видео не поддерживается.
QAbstractVideoSurface::IncorrectFormatError 2 Видеокадр несовместим с форматом поверхности.
QAbstractVideoSurface::StoppedError 3 Поверхность не была запущена.
QAbstractVideoSurface::ResourceError 4 Поверхность не смогла выделить ресурс.

Документация свойств

nativeResolution : const QSize

Родное разрешение видеоповерхности. Это разрешение видеокадров, которые поверхность может отображать с оптимальным качеством и/или производительностью.

Родное разрешение не всегда известно и может изменяться во время воспроизведения.

Функции доступа:

QSize nativeResolution() const

Сигнал уведомления:

void nativeResolutionChanged(const QSize &resolution)

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

QAbstractVideoSurface::QAbstractVideoSurface(QObject *parent = nullptr)

Конструирует видеоповерхность с указанным parent.

[signal] void QAbstractVideoSurface::activeChanged(bool active)

Сигнализирует, что состояние active видеоповерхности изменилось.

См. также isActive(), start() и stop().

[signal] void QAbstractVideoSurface::nativeResolutionChanged(const QSize &resolution)

Сигнализирует, что родное разрешение видеоповерхности изменилось.

Примечание: Сигнал уведомления для свойства nativeResolution.

[signal] void QAbstractVideoSurface::supportedFormatsChanged()

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

См. также supportedPixelFormats() и isFormatSupported().

[signal] void QAbstractVideoSurface::surfaceFormatChanged(const QVideoSurfaceFormat &format)

Сигнализирует о том, что конфигурируемый формат видеоповерхности изменился.

См. также surfaceFormat() и start().

[virtual] QAbstractVideoSurface::~QAbstractVideoSurface()

Уничтожает видеоповерхность.

QAbstractVideoSurface::Error QAbstractVideoSurface::error() const

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

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

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

bool QAbstractVideoSurface::isActive() const

Указывает, запущена ли видеоповерхность.

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

[virtual] bool QAbstractVideoSurface::isFormatSupported(const QVideoSurfaceFormat &format) const

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

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

[virtual] QVideoSurfaceFormat QAbstractVideoSurface::nearestFormat(const QVideoSurfaceFormat &format) const

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

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

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

[pure virtual] bool QAbstractVideoSurface::present(const QVideoFrame &frame)

Представляет видеокадр.

Возвращает true, если кадр был представлен, и false, если произошла ошибка.

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

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

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

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

[protected] void QAbstractVideoSurface::setError(QAbstractVideoSurface::Error error)

Устанавливает значение error() в error.

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

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

[protected] void QAbstractVideoSurface::setNativeResolution(const QSize &resolution)

Устанавливает родную разрешение видеоповерхности.

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

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

[virtual] bool QAbstractVideoSurface::start(const QVideoSurfaceFormat &format)

Запускает видеоповерхность, представляющую кадры формата.

Возвращает true, если поверхность была запущена, и false, если произошла ошибка.

Примечание: Вы должны вызвать реализацию базового класса start() в конце своей реализации.

См. также isActive() и stop().

[virtual] void QAbstractVideoSurface::stop()

Останавливает видеоповерхность, представляющую кадры, и освобождает любые ресурсы, полученные в start().

Примечание: Вы должны вызвать реализацию базового класса stop() в начале своей реализации.

См. также isActive() и start().

[pure virtual] QList<QVideoFrame::PixelFormat> QAbstractVideoSurface::supportedPixelFormats(QAbstractVideoBuffer::HandleType type = QAbstractVideoBuffer::NoHandle) const

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

Форматы пикселей, возвращаемые для типа QAbstractVideoBuffer::NoHandle, допустимы для любого буфера, который можно отобразить в режиме только для чтения.

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

QVideoSurfaceFormat QAbstractVideoSurface::surfaceFormat() const

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

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

Spec-Zone.ru

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