Класс QAbstractVideoSurface
Класс QAbstractVideoSurface — базовый класс для поверхностей отображения видео. Подробнее...
| Заголовок: | #include <QAbstractVideoSurface> |
| qmake: | QT += multimedia |
| Наследует: | QObject |
Открытые типы
| перечисление | Ошибка { НетОшибок, ОшибкаНеподдерживаемогоФормата, ОшибкаНеправильногоФормата, ОшибкаОстановки, ОшибкаРесурса } |
Свойства
- nativeResolution : const QSize
- 1 свойство унаследовано от QObject
Открытые функции
| QAbstractVideoSurface(QObject *parent = nullptr) | |
| виртуальный | ~QAbstractVideoSurface() |
| QAbstractVideoSurface::Ошибка | ошибка() const |
| bool | активна() const |
| виртуальный bool | поддерживаетсяФормат(const QVideoSurfaceFormat &формат) const |
| QSize | nativeResolution() const |
| виртуальный QVideoSurfaceFormat | ближайшийФормат(const QVideoSurfaceFormat &формат) const |
| виртуальный bool | представить(const QVideoFrame &кадр) = 0 |
| виртуальный bool | запустить(const QVideoSurfaceFormat &формат) |
| виртуальный void | остановить() |
| виртуальный QList<QVideoFrame::PixelFormat> | поддерживаемыеФорматыПикселей(QAbstractVideoBuffer::HandleType тип = QAbstractVideoBuffer::NoHandle) const = 0 |
| QVideoSurfaceFormat | форматПоверхности() const |
- 34 открытых функции унаследованы от QObject
Сигналы
| void | изменилосьАктивное(bool активно) |
| void | измениласьNativeResolution(const QSize &разрешение) |
| void | изменилисьПоддерживаемыеФорматы() |
| void | изменилсяФорматПоверхности(const QVideoSurfaceFormat &формат) |
- 2 сигнала унаследованы от QObject
Защищённые функции
| void | установитьОшибка(QAbstractVideoSurface::Ошибка ошибка) |
| void | установитьNativeResolution(const QSize &разрешение) |
- 9 защищённых функций унаследованы от QObject
Дополнительные унаследованные члены
- 1 открытый слот унаследован от QObject
- 1 открытая переменная унаследована от QObject
- 10 статических открытых членов унаследованы от QObject
- 2 защищённых переменных унаследованы от QObject
Подробное описание
Класс QAbstractVideoSurface — базовый класс для поверхностей отображения видео.
Класс QAbstractVideoSurface определяет стандартный интерфейс, который видеопродуценты используют для взаимодействия с поверхностями отображения видео. Вы можете расширить этот интерфейс, чтобы получать видеокадры из источников, таких как декодированное медиа или камеры, для выполнения собственной обработки.
Поверхность видео представляет собой непрерывный поток одинаково отформатированных экземпляров QVideoFrame, где формат каждого кадра совместим с форматом потока, предоставленным при запуске презентации. Каждый кадр может иметь информацию о временной метке, которую поверхность может использовать для определения того, когда отображать этот кадр.
Список форматов пикселей, которые может отобразить поверхность, задаётся функцией supportedPixelFormats(), а функция isFormatSupported() проверяет, поддерживается ли формат видеоповерхности. Если формат не поддерживается, функция nearestFormat() может предложить похожий формат. Например, если поверхность поддерживает фиксированный набор разрешений, она может предложить наименьшее поддерживаемое разрешение, содержащее предложенное разрешение.
Функция запустить() принимает поддерживаемый формат и активирует поверхность видео. После запуска поверхность начнёт отображать получаемые кадры в функции представить(). Поверхности могут удерживать ссылку на буфер представленного видеокадра до тех пор, пока не будет представлен новый кадр или поток не будет остановлен. Кроме того, поверхность видео может удерживать ссылку на видеокадр до тех пор, пока не истечёт время окончания временной метки. Функция остановить() деактивирует поверхность и высвобождает все видеобуферы, на которые она ссылается.
Реализация подкласса QAbstractVideoSurface
При реализации подкласса этого интерфейса необходимо реализовать лишь несколько функций, разделенных на два класса:
- Связанные с форматом
- Связанные с представлением
Для функциональности, связанной с форматом, вам просто нужно описать поддерживаемые форматы пикселей (и функцию nearestFormat()). Для функциональности, связанной с представлением, необходимо реализовать функцию представить() и функции запустить() и остановить().
Примечание: Необходимо вызвать реализацию базового класса запустить() и остановить() в вашей реализации.
Документация по типу члена
перечисление 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 &разрешение) |
Документация по функции члена
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)
Сигнализирует о том, что родное разрешение 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)
Устанавливает родное разрешение 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)
Сигнализирует о том, что конфигурированный формат format поверхности видео изменился.
См. также surfaceFormat() и start().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qabstractvideosurface.html