Обратите внимание: эта страница была переведена автоматически. Если можете, прочтите его на одном из этих языков:

Руководство по программированию IMP

Документация API можно увидеть здесь:

IMP ( Ingenic Media Platform ) ( см. imp_system.h )

Базовые концепты

Программа T20 / T21 основана на следующих концепциях:

  1. Устройство ( = Device )
    Устройство завершает функцию. Примеры:
    • Framesource : Заполните вывод видеоклипов.
    • Encoder : Заполните функцию видеокода или кода изображения.
  2. Группа ( = Group )
    Группа - наименьший блок ввода данных. Устройство может иметь несколько групп, и каждая группа может принимать только один канал ввода данных. Группа может иметь несколько результатов.
    Группа также является контейнером для конкретных функций “ “. См. Объяснение в разделе «Канал» для более подробной информации.
  3. ELIGO ( = Output )
    Выход - самый маленький блок вывода данных на в группу.
    Канал обычно связан с одним функциональным блоком.
    Например:
    • Для кодела канал завершает функцию H264 или кода JPEG.

    • Для IVS канал завершает функцию конкретного алгоритма, и при создании канала Channel определяются характерные алгоритмы, типичные параметры алгоритма.

    • Для OSD есть регион, аналогичный Channel, регион - это специфическая сверхметочная область, которая может быть верхним ( изображением ) крышка ( окклюзия ) и т. Д.

    • Для FrameSource канал производит исходное изображение и канал FrameSource на самом деле является группой

    Канал, как функциональный блок, обычно сохранился в группе (, кроме FrameSource ) получения данных.

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

Модульная ссылка ( Bind )

После двух групп связаны Bind, данные из исходной группы автоматически отправят в пункт назначения.
Поскольку Группа является наименьшим блоком ввода данных, а выход - это самый маленький блок вывода данных, deviceID, groupID и outputID srcCell в двух параметрах IMP_System_Bind (IMPCell * srcCell, IMPCell * dstCell) действительны.

Хотя dstCell действителен только для deviceID и groupID, outputID не имеет смысла, как вход в данные.

Пример 1:

IMPCell fs_chn0 = {DEV_ID_FS, 0, 0};    // FrameSource deviceID: DEV_ID_FS groupID: 0 outputID: 0
IMPCell enc_grp0 = {DEV_ID_ENC, 0, 0}; // ENC deviceID: DEV_ID_ENC groupID : 0 outputID: 0, où le troisième paramètre de enc_grp0 n'a pas de sens. 
int ret = IMP_System_Bind (& fs_chn0, & enc_grp0);
if(ret <0>)
  printf ("Bind FrameSource Channel0 and Encoder Group0 failed \ n");

Результат:

Пример 2:

// flux de données principal
IMPCell fs_chn0 = {DEV_ID_FS, 0, 0};
IMPCell osd_grp0 = {DEV_ID_OSD, 0, 0};
IMPCell enc_grp0 = {DEV_ID_ENC, 0, 0};
int ret = IMP_System_Bind(&fs_chn0, &osd_grp0);
if (ret < 0)
    printf("Bind FrameSource Channel0 and OSD Group0 failed\n");

int ret = IMP_System_Bind(&osd_grp0, &enc_grp0);
if (ret < 0)
    printf("Bind OSD Group0 and Encoder Group0 failed\n");

// flux de données lié 
IMPCell fs_chn1_output0 = {DEV_ID_FS, 1, 0};
IMPCell ivs_grp0 = {DEV_ID_IVS, 0, 0};
IMPCell osd_grp1 = {DEV_ID_OSD, 1, 0};
IMPCell enc_grp1 = {DEV_ID_ENC, 1, 0};

int ret = IMP_System_Bind(&fs_chn1_output0, &ivs_grp0);
if (ret < 0)
    printf("Bind FrameSource Channel1 and IVS Group0 failed\n");

int ret = IMP_System_Bind(&ivs_grp0, &osd_grp1);
if (ret < 0)
    printf("Bind IVS Group0 and OSD Group1 failed\n");

int ret = IMP_System_Bind(&osd_grp1, &enc_grp1);
if (ret < 0)
    printf("Bind OSD Group1 and Encoder Group1 failed\n");

Применить - это типичное приложение Bind : двухканальный код.

Примечания:

Функции

int IMP_System_Init (void )

Начало системы IMP.

Начало системы int IMP_System_Exit (void). _

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

После вызова этой функции все память и int64_t IMP_System_GetTimeStamp (void) _ будут выпущены, а аппаратное устройство будет закрыто. (

Получите поле синхронизации системы IMP в микросекундах.
Возврат: время в микроцентах.

Получите поле синхронизации системы int IMP_System_RebaseTimeStamp (bases int64_t) в микросекундах. _ Возврат: время в микроцентах. (

Определите систему Timestamp IMP в микросекунтах.
Возврат: 0, если успешно.

Определите систему Timestamp uint32_t IMP_System_ReadReg32 (uint32_t u32Addr) в микросекунтах. _ Возврат: 0, если успешно. _

Прочтите значение 32-битного регистра.

void IMP_System_WriteReg32 (uint32 T Regaddr, значение uint32 t)

Напишите значение в 32-разрядном регистре.

Примечание. Внимательно вызывайте этот API и проверьте значение реестра, иначе это может вызвать системные ошибки.

int IMP Система GetVersion (IMPVersion * pstVersion)

Получите систему системы IMP.

const char * IMP Система GetCPUInfo (void)

Получите информацию о модели процессора.
Примечание. Возвращаемое значение представляет собой строку модели ЦП, например, для T10 существует “T10”и “T10-Lite”.

int IMP Система (

Связь между исходной ячейкой и местом назначения.

Примечание 1. В соответствии с концепциями «Устройство», «Группа» и «Выход» каждое устройство может иметь несколько групп, и каждая группа может иметь несколько выходов, группа используется как интерфейс ввода устройства, а выход используется как интерфейс продукта устройства. Следовательно, ссылка фактически соединяет определенный выход устройства вывода с определенной Группой устройства ввода.

Примечание 2: После успешной ссылки данные, сгенерированные srcCell ( Eligo ) , будут автоматически переданы в группу адресатов ( ).

int IMP Система (

Разгруппируйте источники и места назначения.

int IMP Система (

Извлекает информацию из исходной ячейки, относящуюся к месту назначения.