Класс VideoDecoder (абстрактный)
Видеодекодер. Подробнее…
| Подключение: | #include <streamcamera-codec.h> |
Публичные функции
| virtual bool | init (VideoDecoderMetadata metadata)=0 Инициализирует видеокодер. |
| virtual std::vector<PixelFormat > | getSupportedPixelFormats ()=0 |
| virtual bool | decode (const uint8_t *data, size_t size, uint64_t timestampUs, FrameType frameType, void(*releaseCallback)(void *), void *releaseCallbackData)=0 Декодирует видеокадр. |
| virtual void | flush ()=0 Очищает очередь видеодекодера. |
| virtual void | drain ()=0 Сбрасывает очередь видеодекодера. |
| virtual void | stop ()=0 Останавливает декодер. |
| virtual std::string | getParameterRange (VideoDecoderParameter param) const =0 Возвращает возможные значения параметра. |
| virtual std::string | getParameter (VideoDecoderParameter param) const =0 Возвращает текущее значение параметра. |
| virtual bool | setParameter (VideoDecoderParameter param, const std::string &value)=0 Устанавливает значение параметра. |
| void | setListener (VideoDecoderListener *listener) Устанавливает обратные вызовы. |
| void | lockAndSetListener (VideoDecoderListener *listener) Устанавливает обратные вызовы. |
| virtual const VideoCodecInfo & | getInfo () const =0 Получает основную информацию о кодеке. |
| virtual std::shared_ptr<VideoCodecExtendedInfo > | getExtendedInfo () const =0 Получает расширенную информацию о кодеке. |
| virtual bool | supports (const VideoDecoderMetadata &meta) const =0 Проверяет, поддерживает ли декодер видеопоток с заданными параметрами. |
Защищённые атрибуты
| VideoDecoderListener * | m_decoderListener = nullptr |
| std::recursive_mutex | m_decoderListenerMutex |
Подробное описание
Видеодекодер.
Описание функций-членов
decode()
| virtual bool Aurora::StreamCamera::VideoDecoder::decode (const uint8_t * data, size_tsize, uint64_ttimestampUs, FrameType frameType, void(*)(void *) releaseCallback, void * releaseCallbackData) | pure virtual |
Декодирует видеокадр.
Может блокировать, если очередь кодирования заполнена, поэтому может вызываться из отдельного потока.
Параметры
| [in] | data | Указатель на закодированный элемент видеопотока. |
| [in] | size | Размер закодированного элемента видеопотока. |
| [in] | timestampUs | Временная метка видеокадра. |
| [in] | frameType | Тип кадра, если известен, иначе FrameType::Delta |
| [in] | releaseCallback | Метод вызывается, когда данные в памяти больше не нужны. |
| [in] | releaseCallbackData | Параметр releaseCallback. |
getExtendedInfo()
| virtual std::shared_ptr<VideoCodecExtendedInfo > Aurora::StreamCamera::VideoDecoder::getExtendedInfo () const | pure virtual |
Получает расширенную информацию о кодеке.
VideoCodecExtendedInfo может содержать умный указатель на кодек и предотвращать его уничтожение.
Возвращает VideoCodecExtendedInfo
Начиная с v1.5.0
getInfo()
| virtual const VideoCodecInfo & Aurora::StreamCamera::VideoDecoder::getInfo () const | pure virtual |
Получает основную информацию о кодеке.
Возвращает VideoCodecInfo
Начиная с v1.5.0
getParameter()
| virtual std::string Aurora::StreamCamera::VideoDecoder::getParameter (VideoDecoderParameter param) const | pure virtual |
Возвращает текущее значение параметра.
Параметры
| [in] | param | Индекс параметра. |
Возвращает cинтаксис возвращаемого значения для функции getParameter():
- "v";
- "(x,y,w,h)" для прямоугольника;
- пустая строка, если возникает ошибка.
getParameterRange()
| virtual std::string Aurora::StreamCamera::VideoDecoder::getParameterRange (VideoDecoderParameter param) const | pure virtual |
Возвращает возможные значения параметра.
Параметры
| [in] | param | Индекс параметра. |
Возвращает синтаксис возвращаемого значения:
- "v1,v2,v3" для возможного набора значений, например "1,2" или "false,true";
- "v1-v10" для непрерывного значения, например "1-10" или "0,0-1,0" для значений с плавающей точкой;
- "v1,v2-v10" для дискретного значения;
- "-" для значения только для чтения;
- "x" для прямоугольника (значение "(x,y,w,h)");
- пустая строка, если возникает ошибка.
См. также Camera::getParameterRange
getSupportedPixelFormats()
| virtual std::vector<PixelFormat > Aurora::StreamCamera::VideoDecoder::getSupportedPixelFormats () | pure virtual |
Возвращает список поддерживаемых форматов пикселей или пустой список в случае возникновения ошибки. Список отсортирован по предпочтениям кодека.
init()
| virtual bool Aurora::StreamCamera::VideoDecoder::init (VideoDecoderMetadata metadata) | pure virtual |
Инициализирует видеокодер.
После вызова метода декодер может принимать закодированные видеокадры. Последующие вызовы VideoDecoder::init() завершатся ошибкой. Уничтожает объект декодера, чтобы остановить видеодекодер и сгенерировать событие конца потока.
Возвращает true, если видеодекодер успешно инициализирован.
lockAndSetListener()
| void Aurora::StreamCamera::VideoDecoder::lockAndSetListener (VideoDecoderListener * listener) |
Устанавливает обратные вызовы.
Потокобезопасная версия функции setListener.
Поток, вызывающий эту функцию, будет заблокирован, если в данный момент выполняется обратный вызов.
Параметры
| [in] | listener | Объект с обратными вызовами. Следует задать nullptr для сброса перед уничтожением слушателя. |
setListener()
| void Aurora::StreamCamera::VideoDecoder::setListener (VideoDecoderListener * listener) | inline |
Устанавливает обратные вызовы.
- Устарел:
- Не следует использовать в недавно созданном коде. Вместо него рекомендуется использовать VideoDecoder::lockAndSetListener.
Параметры
| [in] | listener | Объект с обратными вызовами. |
setParameter()
| virtual bool Aurora::StreamCamera::VideoDecoder::setParameter (VideoDecoderParameter param, const std::string & value) | pure virtual |
Устанавливает значение параметра.
Параметры
| [in] | param | Индекс параметра. |
| [in] | value | "v" для дискретного или непрерывного значения "(x,y,w,h)" для прямоугольника; |
Возвращает true, если значение принято.
supports()
| virtual bool Aurora::StreamCamera::VideoDecoder::supports (const VideoDecoderMetadata & meta) const | pure virtual |
Проверяет, поддерживает ли декодер видеопоток с заданными параметрами.
Параметры
| [in] | meta | Метаданные видеопотока. Необходимо установить значения равными 0, если они не важны. |
Возвращает true, если декодер поддерживает видеопоток с заданными параметрами.
Начиная с v1.5.0