Codec
— Введение
В этом репозитории в основном определяются и реализуются интерфейсы аппаратных драйверов (HDI) модуля кодека, что позволяет сервисам верхнего уровня выполнять следующие операции:
— Структура директорий
Структура директории исходного кода выглядит следующим образом:
/drivers/peripheral/codec
├── interfaces # Driver capability APIs provided for upper-layer services
│ └── include # APIs exposed externally
Модуль кодека предоставляет API, которые могут быть напрямую вызваны слоем фреймворка для создания или уничтожения кодека, запуска или остановки кодека, выполнения операций кодирования или декодирования, очистки кэша и установки обратного вызова.
Таблица ниже описывает основные API HDI 1.0, предоставляемые модулем кодека.
Таблица 1. Основные API HDI 1.0 модуля кодека
Заголовок файла | API | Описание |
---|---|---|
codec_interface.h |
Примечание: часть текста запроса не удалось перевести из-за отсутствия контекста. *int32_t CodecSetParameter(CODEC_HANDLETYPE handle, const Param params, int paramCnt);
Устанавливает параметры, необходимые для компонента кодека.
*int32_t CodecGetParameter(CODEC_HANDLETYPE handle, Param params, int paramCnt);
Получает параметры из компонента кодека.
int32_t CodecStart(CODEC_HANDLETYPE handle);
Запускает компонент кодека.
int32_t CodecStop(CODEC_HANDLETYPE handle);
Останавливает компонент кодека.
int32_t CodecFlush(CODEC_HANDLETYPE handle, DirectionType directType);
Очищает кэш, когда компонент кодека находится в рабочем состоянии.
*int32_t CodecQueueInput(CODEC_HANDLETYPE handle, const InputInfo inputData, uint32_t timeoutMs);
Ставит в очередь входные данные.
*int32_t CodecDequeInput(CODEC_HANDLETYPE handle, uint32_t timeoutMs, InputInfo inputData);
Удаляет из очереди входные данные, которые были использованы.
*int32_t CodecQueueOutput(CODEC_HANDLETYPE handle, OutputInfo outInfo, uint32_t timeoutMs, int releaseFenceFd);
Ставит в очередь выходные данные.
**int32_t CodecDequeueOutput(CODEC_HANDLETYPE handle, uint32_t timeoutMs, int acquireFd, OutputInfo outInfo);
Удаляет из очереди выходные данные. Получает версию компонента кодека
Получает версию компонента кодека.
Отправляет команду компоненту
Отправляет команду OMX_COMMANDTYPE компоненту через параметр cmd. Параметр param содержит дополнительные данные команды. Результат выполнения команды сохраняется в параметре cmdData, а его длина — в cmdDataLen.
Получает параметры настройки компонента
Возвращает указатель на структуру параметров настройки компонента. Структура передаётся через параметр paramStruct, её размер — через paramStructLen.
Устанавливает параметры для компонента
Устанавливает значения параметров компонента, которые передаются через index и paramStruct соответственно. Длина структуры — paramStructLen.
Получает конфигурацию компонента
Возвращает указатель на конфигурацию компонента через cfgStruct. Размер конфигурации — cfgStructLen. Индекс конфигурации передаётся через index.
Устанавливает конфигурацию компонента
Задаёт конфигурацию компонента с помощью указателя на неё cfgStruct и размера cfgStructLen. Значение индекса конфигурации — index.
Получает расширенный индекс компонента по заданной строке
Находит расширенный индекс типа indexType компонента по строке paramName. Возвращаемое значение — указатель на индекс.
Получает состояние компонента
Определяет состояние компонента и сохраняет его в переменной state типа enum OMX_STATETYPE.
Запрос туннеля компонента
Создаёт туннель между двумя компонентами. Номер порта текущего компонента — port. Туннелируемый компонент — tunneledComp. Его порт — tunneledPort. Настройка туннеля описывается в структуре tunnelSetup типа OMX_TUNNELSETUPTYPE. tunnel communication for a component
int32_t (*UseBuffer)(struct CodecComponentType *self, uint32_t portIndex, struct OmxCodecBuffer *buffer);
Назначение буфера для порта компонента.
int32_t (*AllocateBuffer)(struct CodecComponentType *self, uint32_t portIndex, struct OmxCodecBuffer *buffer);
Запрос на выделение буфера порта от компонента.
int32_t (*FreeBuffer)(struct CodecComponentType *self, uint32_t portIndex, const struct OmxCodecBuffer *buffer);
Освобождение буфера.
int32_t (*EmptyThisBuffer)(struct CodecComponentType *self, const struct OmxCodecBuffer *buffer);
Указание буфера, который должен быть опустошён компонентом.
int32_t (*FillThisBuffer)(struct CodecComponentType *self, const struct OmxCodecBuffer *buffer);
Указание буфера, который будет заполнен кодированным и декодированным выводом компонента.
int32_t (*SetCallbacks)(struct CodecComponentType *self, struct CodecCallbackType *callback, int64_t appData);
Установка обратного вызова для компонента кодека.
int32_t (*ComponentDeInit)(struct CodecComponentType *self);
Деинициализация компонента.
int32_t (*UseEglImage)(struct CodecComponentType *self, struct OmxCodecBuffer *buffer, uint32_t portIndex, int8_t *eglImage, uint32_t eglImageLen);
Использование пространства, выделенного EGL.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )