Spec-Zone.ru › Qt 5.15

Класс QAbstractVideoSurface

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

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

Типы public

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

Свойства

  • nativeResolution : const QSize

Функции public

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.

ИзменилсяАктивныйСостояниеvoid QAbstractVideoSurface::activeChanged(bool active)

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

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

ИзменилосьРодноеРазрешениеvoid QAbstractVideoSurface::nativeResolutionChanged(const QSize &resolution)

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

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

[signal] void QAbstractVideoSurface::supportedFormatsChanged()

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

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

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

Сигнализирует о том, что конфигурируемый формат 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.

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

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

[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)

Устанавливает родное разрешение видеоповерхности 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.15/qabstractvideosurface.html

Spec-Zone.ru

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