Класс QAbstractVideoSurface
Класс QAbstractVideoSurface — базовый класс для поверхностей визуализации видео. Подробнее...
| Заголовок: | #include <QAbstractVideoSurface> |
| qmake: | QT += multimedia |
| Наследует: | QObject |
Типы публичного доступа
| Перечисление | Error { НетОшибки, ОшибкаНеподдерживаемогоФормата, ОшибкаНеправильногоФормата, ОшибкаОстановки, ОшибкаРесурса } |
Свойства
- nativeResolution : const QSize
- 1 свойство унаследовано от QObject
Функции публичного доступа
| QAbstractVideoSurface(QObject *parent = Q_NULLPTR) | |
| ~QAbstractVideoSurface() | |
| Error | 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 |
- 32 функции публичного доступа унаследованы от QObject
Сигналы
| void | activeChanged(bool active) |
| void | nativeResolutionChanged(const QSize &resolution) |
| void | supportedFormatsChanged() |
| void | surfaceFormatChanged(const QVideoSurfaceFormat &format) |
- 2 сигнала унаследованы от QObject
Защищенные функции
| void | setError(Error error) |
| void | setNativeResolution(const QSize &resolution) |
- 9 защищенных функций унаследованы от QObject
Дополнительные унаследованные члены
- 1 слот публичного доступа унаследован от QObject
- 11 статические публичные члены унаследованы от 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 = Q_NULLPTR)
Конструирует видеоповерхность с указанным parent.
QAbstractVideoSurface::~QAbstractVideoSurface()
Уничтожает поверхность видео.
[signal] void QAbstractVideoSurface::activeChanged(bool active)
Сигнализирует о том, что состояние активности поверхности видео изменилось.
См. также isActive(), start() и stop().
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(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.9/qabstractvideosurface.html