1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/openharmony-drivers_peripheral

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 8.1 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 07:36 80e6969

Codec

  • Codec
    • Введение
    • Структура директорий
      • Доступные API
      • Руководство по использованию
    • Задействованные репозитории

Введение

В этом репозитории в основном определяются и реализуются интерфейсы аппаратных драйверов (HDI) модуля кодека, что позволяет сервисам верхнего уровня выполнять следующие операции:

  • создание и уничтожение кодека;
  • запуск и остановка кодека;
  • кодирование исходных кодовых потоков в сжатые кодовые потоки;
  • декодирование сжатых кодовых потоков в исходные кодовые потоки;
  • очистка кэша.

Структура директорий

Структура директории исходного кода выглядит следующим образом:

/drivers/peripheral/codec  
├── interfaces         # Driver capability APIs provided for upper-layer services  
│   └── include       # APIs exposed externally  

Доступные API

Модуль кодека предоставляет 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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/openharmony-drivers_peripheral.git
git@api.gitlife.ru:oschina-mirror/openharmony-drivers_peripheral.git
oschina-mirror
openharmony-drivers_peripheral
openharmony-drivers_peripheral
master