Класс QAbstractVideoSurface
Класс QAbstractVideoSurface — базовый класс для поверхностей визуализации видео. Подробнее...
| Заголовок: | #include <QAbstractVideoSurface> |
| qmake: | QT += multimedia |
| Наследует: | QObject |
Открытые типы
| Перечисление | Error { NoError, UnsupportedFormatError, IncorrectFormatError, StoppedError, ResourceError } |
Свойства
- nativeResolution : const QSize
- 1 свойство унаследовано от QObject
Открытые функции
| QAbstractVideoSurface(QObject *parent = nullptr) | |
| виртуальный | ~QAbstractVideoSurface() |
| QAbstractVideoSurface::Error | error() const |
| bool | isActive() const |
| виртуальный bool | isFormatSupported(const QVideoSurfaceFormat &format) const |
| QSize | nativeResolution() const |
| виртуальный QVideoSurfaceFormat | nearestFormat(const QVideoSurfaceFormat &format) const |
| виртуальный bool | present(const QVideoFrame &frame) = 0 |
| виртуальный bool | start(const QVideoSurfaceFormat &format) |
| виртуальный void | stop() |
| виртуальный QList<QVideoFrame::PixelFormat> | supportedPixelFormats(QAbstractVideoBuffer::HandleType type = QAbstractVideoBuffer::NoHandle) const = 0 |
| QVideoSurfaceFormat | surfaceFormat() const |
- 31 открытая функция унаследована от QObject
Сигналы
| void | activeChanged(bool active) |
| void | nativeResolutionChanged(const QSize &resolution) |
| void | supportedFormatsChanged() |
| void | surfaceFormatChanged(const QVideoSurfaceFormat &format) |
- 2 сигнала унаследованы от QObject
Статические открытые члены
| const QMetaObject | staticMetaObject |
- 9 статических открытых членов унаследованы от QObject
Защищенные функции
| void | setError(QAbstractVideoSurface::Error error) |
| void | setNativeResolution(const QSize &resolution) |
- 9 защищенных функций унаследованы от QObject
Дополнительные унаследованные члены
- 1 открытый слот унаследован от QObject
Подробное описание
Класс QAbstractVideoSurface — базовый класс для поверхностей визуализации видео.
Класс QAbstractVideoSurface определяет стандартный интерфейс, который используют производители видео для взаимодействия с поверхностями визуализации видео. Вы можете создать подкласс этого интерфейса, чтобы получать кадры видео из таких источников, как декодированные медиаданные или камеры, чтобы выполнить свою собственную обработку.
Поверхность видео представляет непрерывный поток идентичных по формату экземпляров QVideoFrame, где формат каждого кадра совместим с форматом потока, предоставленным при запуске презентации. Каждый кадр может содержать информацию о временной метке, которую поверхность может использовать для определения того, когда отображать этот кадр.
Список форматов пикселей, которые может представить поверхность, предоставляется функцией supportedPixelFormats(), а функция isFormatSupported() проверяет, поддерживается ли формат поверхности видео. Если формат не поддерживается, функция nearestFormat() может предложить похожий формат. Например, если поверхность поддерживает фиксированный набор разрешений, она может предложить наименьшее поддерживаемое разрешение, которое включает в себя предложенное разрешение.
Функция start() принимает поддерживаемый формат и активирует поверхность видео. После запуска поверхность начнёт отображать кадры, которые она получает в функции present(). Поверхности могут удерживать ссылку на буфер кадра видео до тех пор, пока не будет представлен новый кадр или поток не будет остановлен. Кроме того, поверхность видео может удерживать ссылку на кадр видео до тех пор, пока не пройдёт время, указанное в временной метке окончания. Функция stop() деактивирует поверхность и освобождает все буферы видео, на которые она ссылается.
Реализация подкласса QAbstractVideoSurface
При реализации подкласса этого интерфейса нужно реализовать лишь несколько функций, разбитых на два класса:
- Связанные с форматом
- Связанные с представлением
Для функциональности, связанной с форматом, вам нужно только описать форматы пикселей, которые вы поддерживаете (и функцию nearestFormat() ). Для функциональности, связанной с представлением, вам нужно реализовать функцию present() и функции start() и stop().
Примечание: Вы должны вызвать реализацию базового класса start() и stop() в своей реализации.
Документация по типам членов
Перечисление QAbstractVideoSurface::Error
Это перечисление описывает ошибки, которые может возвращать функция 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.
[virtual] QAbstractVideoSurface::~QAbstractVideoSurface()
Уничтожает поверхность видео.
[signal] void QAbstractVideoSurface::activeChanged(bool active)
Сигнализирует о том, что состояние active поверхности видео изменилось.
См. также isActive(), start() и stop().
QAbstractVideoSurface::Error QAbstractVideoSurface::error() const
Возвращает последнюю произошедшую ошибку.
Если поверхность не может быть запущена или останавливается неожиданно, эта функция может быть вызвана для выявления произошедшей ошибки.
См. также setError().
bool QAbstractVideoSurface::isActive() const
Указывает, была ли запущена поверхность видео.
Возвращает true, если поверхность была запущена, и false в противном случае.
[virtual] bool QAbstractVideoSurface::isFormatSupported(const QVideoSurfaceFormat &format) const
Проверяет формат поверхности видео format, чтобы определить, может ли его принять поверхность.
Возвращает true, если формат поддерживается поверхностью, и false в противном случае.
[signal] void QAbstractVideoSurface::nativeResolutionChanged(const QSize &resolution)
Сигнализирует о том, что родное разрешение поверхности видео изменилось.
Примечание: Сигнал уведомления для свойства nativeResolution.
[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().
[signal] void QAbstractVideoSurface::supportedFormatsChanged()
Сигнализирует о том, что набор форматов, поддерживаемых поверхностью видео, изменился.
См. также supportedPixelFormats() и isFormatSupported().
[pure virtual] QList<QVideoFrame::PixelFormat> QAbstractVideoSurface::supportedPixelFormats(QAbstractVideoBuffer::HandleType type = QAbstractVideoBuffer::NoHandle) const
Возвращает список форматов пикселей, которые поверхность видео может отобразить для данного типа дескриптора type.
Форматы пикселей, возвращаемые для типа QAbstractVideoBuffer::NoHandle, являются допустимыми для любого буфера, который можно отобразить в режиме только для чтения.
Типы, которые находятся в начале списка, можно предположить как более быстрые для отображения.
QVideoSurfaceFormat QAbstractVideoSurface::surfaceFormat() const
Возвращает формат поверхности видео.
[signal] void QAbstractVideoSurface::surfaceFormatChanged(const QVideoSurfaceFormat &format)
Сигнализирует о том, что сконфигурированный формат поверхности видео изменился.
См. также surfaceFormat() и start().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qabstractvideosurface.html