Документация
ОС Аврора 5.2.0

Класс VideoEncoder (абстрактный)

Видеокодер. Подробнее…

Подключение: #include <streamcamera-codec.h>

Публичные функции

virtual bool init (VideoEncoderMetadata metadata)=0
Инициализирует видеокодер.
virtual std::vector<PixelFormat > getSupportedPixelFormats ()=0
virtual bool encode (std::shared_ptr<const StreamCamera::YCbCrFrame > frame, bool forceSync)=0
Начинает кодирование видеокадра.
virtual bool encode (std::shared_ptr<const StreamCamera::RawImageFrame > frame, bool forceSync)=0
Начинает кодирование видеокадра.
virtual void setBitrate (uint32_t bps)=0
Устанавливает битрейт кодировщика.
virtual std::string getParameterRange (VideoEncoderParameter param) const =0
Возвращает возможные значения параметра.
virtual std::string getParameter (VideoEncoderParameter param) const =0
Возвращает текущее значение параметра.
virtual bool setParameter (VideoEncoderParameter param, const std::string &value)=0
Устанавливает значение параметра.
void setListener (VideoEncoderListener *listener)
Устанавливает обратные вызовы.
void lockAndSetListener (VideoEncoderListener *listener)
Устанавливает обратные вызовы.
virtual const VideoCodecInfo & getInfo () const =0
Получает основную информацию о кодеке.
virtual std::shared_ptr<VideoCodecExtendedInfo > getExtendedInfo () const =0
Получает расширенную информацию о кодеке.
virtual bool supports (const VideoEncoderMetadata &meta) const =0
Проверяет, поддерживает ли кодировщик видеопоток с заданными параметрами.
virtual bool encode (std::shared_ptr<const StreamCamera::Frame > frame, bool forceSync)=0
Начинает кодирование видеокадра.
virtual void eos ()=0
Уведомляет кодировщик о EOS.

Защищённые атрибуты

VideoEncoderListener * m_encoderListener = nullptr
std::recursive_mutex m_encoderListenerMutex

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

Видеокодер.

Описание функций-членов

encode() [1/3]

virtual bool Aurora::StreamCamera::VideoEncoder::encode (std::shared_ptr<const StreamCamera::Frame >frame, bool forceSync) pure virtual

Начинает кодирование видеокадра.

Кодирование выполняется асинхронно, На некотором оборудовании для генерации закодированного кадра кодировщик должен получить несколько входных кадров для заполнения очереди кодирования. Кодировщик должен быть уничтожен для генерации события EOS.

Параметры

[in] frame Видеокадр для кодирования
[in] forceSync Просит кодировщик сгенерировать ключевой кадр

Возвращает true, если кадр принимается для кодирования.

Начиная с v1.7.0

encode() [2/3]

virtual bool Aurora::StreamCamera::VideoEncoder::encode (std::shared_ptr<const StreamCamera::RawImageFrame >frame, bool forceSync) pure virtual

Начинает кодирование видеокадра.

Устарел:
Не следует использовать. Сохранена только для обеспечения бинарной совместимости.

Параметры

[in] frame Видеокадр для кодирования
[in] forceSync Просит кодировщик сгенерировать ключевой кадр

Возвращает false всегда.

encode() [3/3]

virtual bool Aurora::StreamCamera::VideoEncoder::encode (std::shared_ptr<const StreamCamera::YCbCrFrame >frame, bool forceSync) pure virtual

Начинает кодирование видеокадра.

Кодировщик не обязательно возвращает закодированный кадр немедленно. На некотором оборудовании для генерации закодированного кадра кодировщик должен получить несколько входных кадров для заполнения очереди кодирования. Кодировщик должен быть уничтожен для генерации события EOS.

Параметры

[in] frame Видеокадр для кодирования
[in] forceSync Просит кодировщик сгенерировать ключевой кадр

Возвращает true, если кадр принимается для кодирования.

eos()

virtual void Aurora::StreamCamera::VideoEncoder::eos () pure virtual

Уведомляет кодировщик о EOS.

Необходимо дождаться обратного вызова onEncoderEOS или onEncoderError, чтобы убедиться, что все кадры в очереди были закодированы. После этого вызова кодировщик становится недоступен. Не обязательно вызывать eos(), если кадры в очереди не нужны; в этом случае просто необходимо вызвать деструктор экземпляра кодировщика.

Начиная с v1.7.5

См. также VideoEncoderListener::onEncoderEOS

VideoEncoderListener::onEncoderError

getExtendedInfo()

virtual std::shared_ptr<VideoCodecExtendedInfo > Aurora::StreamCamera::VideoEncoder::getExtendedInfo () const pure virtual

Получает расширенную информацию о кодеке.

VideoCodecExtendedInfo может содержать умный указатель на кодек и предотвращать его уничтожение.

Возвращает VideoCodecExtendedInfo

Начиная с v1.5.0

getInfo()

virtual const VideoCodecInfo & Aurora::StreamCamera::VideoEncoder::getInfo () const pure virtual

Получает основную информацию о кодеке.

Возвращает VideoCodecInfo

Начиная с v1.5.0

getParameter()

virtual std::string Aurora::StreamCamera::VideoEncoder::getParameter (VideoEncoderParameter param) const pure virtual

Возвращает текущее значение параметра.

Параметры

[in] param Индекс параметра.

Возвращает cинтаксис возвращаемого значения для функции getParameter():

  • "v";
  • "(x,y,w,h)" для прямоугольника;
  • пустая строка, если возникает ошибка.

getParameterRange()

virtual std::string Aurora::StreamCamera::VideoEncoder::getParameterRange (VideoEncoderParameter param) const pure virtual

Возвращает возможные значения параметра.

Параметры

[in] param Индекс параметра.

Возвращает синтаксис возвращаемого значения:

  • "v1,v2,v3" для возможного набора значений, например "1,2" или "false,true";
  • "v1-v10" для непрерывного значения, например "1-10" или "0,0-1,0" для значений с плавающей точкой;
  • "-" для значения только для чтения;
  • "x" для прямоугольника (значение "(x,y,w,h)");
  • пустая строка, если возникает ошибка.

См. также Camera::getParameterRange

getSupportedPixelFormats()

virtual std::vector<PixelFormat > Aurora::StreamCamera::VideoEncoder::getSupportedPixelFormats () pure virtual

Возвращает список поддерживаемых форматов пикселей или пустой список в случае возникновения ошибки. Список отсортирован по предпочтениям кодека.

init()

virtual bool Aurora::StreamCamera::VideoEncoder::init (VideoEncoderMetadata metadata) pure virtual

Инициализирует видеокодер.

После вызова метода кодировщик может использовать необработанные видеокадры. Последующие вызовы VideoEncoder::init() завершатся ошибкой. Уничтожает объект кодировщика, чтобы остановить видеокодер и сгенерировать событие конца потока.

Возвращает true, если видеокодер успешно инициализирован.

lockAndSetListener()

void Aurora::StreamCamera::VideoEncoder::lockAndSetListener (VideoEncoderListener * listener)

Устанавливает обратные вызовы.

Потокобезопасная версия функции setListener.

Поток, вызывающий эту функцию, будет заблокирован, если в данный момент выполняется обратный вызов.

Параметры

[in] listener Объект с обратными вызовами. Следует задать nullptr для сброса перед уничтожением слушателя.

setBitrate()

virtual void Aurora::StreamCamera::VideoEncoder::setBitrate (uint32_tbps) pure virtual

Устанавливает битрейт кодировщика.

Допустимо вызывать в любое время после вызова VideoEncoder:init(). Это полезно в режиме CBR, когда используется внешний алгоритм управления битрейтом.

setListener()

void Aurora::StreamCamera::VideoEncoder::setListener (VideoEncoderListener * listener) inline

Устанавливает обратные вызовы.

Устарел:
Не следует использовать в недавно созданном коде. Вместо него рекомендуется использовать VideoEncoder::lockAndSetListener.

Параметры

[in] listener Объект с обратными вызовами.

setParameter()

virtual bool Aurora::StreamCamera::VideoEncoder::setParameter (VideoEncoderParameter param, const std::string & value) pure virtual

Устанавливает значение параметра.

Параметры

[in] param Индекс параметра.
[in] value "v" для дискретного или непрерывного значения
"(x,y,w,h)" для прямоугольника;

Возвращает true, если значение принято.

supports()

virtual bool Aurora::StreamCamera::VideoEncoder::supports (const VideoEncoderMetadata & meta) const pure virtual

Проверяет, поддерживает ли кодировщик видеопоток с заданными параметрами.

Параметры

[in] meta Метаданные видеопотока. Необходимо установить значения равными 0, если они не важны.

Возвращает true, если декодер поддерживает видеопоток с заданными параметрами.

Начиная с v1.5.0

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.