Spec-Zone.ru › Qt 5.13

Класс QAbstractVideoSurface

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

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

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

перечисление Ошибка { НетОшибки, ОшибкаФормата, НеправильныйФормат, ОшибкаОстановки, ОшибкаРесурса }

Свойства

  • nativeResolution : const QSize

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

QAbstractVideoSurface(QObject *parent = nullptr)
виртуальный ~QAbstractVideoSurface()
QAbstractVideoSurface::Ошибка ошибка() const
bool isActive() const
виртуальный bool поддерживаетФормат(const QVideoSurfaceFormat &format) const
QSize nativeResolution() const
виртуальный QVideoSurfaceFormat ближайшийФормат(const QVideoSurfaceFormat &format) const
виртуальный bool представить(const QVideoFrame &frame) = 0
виртуальный bool начать(const QVideoSurfaceFormat &format)
виртуальный void остановить()
виртуальный QList<QVideoFrame::PixelFormat> поддерживаемыеФорматыПикселей(QAbstractVideoBuffer::HandleType type = QAbstractVideoBuffer::NoHandle) const = 0
QVideoSurfaceFormat форматПоверхности() const

Сигналы

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

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

void установитьОшибка(QAbstractVideoSurface::Ошибка error)
void установитьNativeResolution(const QSize &resolution)

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

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

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

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

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

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

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

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

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

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

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

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

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

Константа Значение Описание
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)

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

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

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

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

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

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

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

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

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

Представляет кадр видео 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)

Запускает поверхность видео, представляющую кадры 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.13/qabstractvideosurface.html

Spec-Zone.ru

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