Класс 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