Основа - предоставленные китайский и английский документы Rockchip V2.28.0 от 2025-04-27; сохранены технические главы 3-13. По китайскому тексту добавлены сведения, отсутствующие в английском; расхождения отмечены. Это справочный материал для платформ ArmSoM: проверьте конкретную плату, SoC, SDK/BSP, ядро и периферию. Поддержка всех плат ArmSoM не заявляется. Команды и аппаратные испытания не выполнялись.
| SoC | Версия ядра |
|---|---|
| RV1106/RV1103 | Linux 5.10 |
| RV1103B/RV1106B | Linux 5.10 |
| RK3308 | Linux 6.1 |
| RK3506 | Linux 6.1 / rt-thread 4.1 |
| RV1126B | Linux 6.1 |
3. Архитектура
Для упрощения переноса Rockit в ядре разработана новая библиотека времени выполнения, далее RRT. Её структура показана ниже.

.
├── isp.ko ---- isp - модуль, узел /dev/mpi/rkisp-vir0
├── valloc.ko --- менеджер буферов, узел /dev/mpi/valloc
├── venc.ko --- Кодировщик - модуль, узел /dev/mpi/venc
├── vmpi.ko --- медиасреда, узел /dev/mpi/vmpi
├── vpss.ko --- vpss - модуль, узел /dev/mpi/vpss
├── vrga.ko --- rga - модуль, узел /dev/mpi/vrga
├── vrgn.ko --- rgn - модуль, узел /dev/mpi/vrgn
├── vsys.ko --- system - модуль, узел /dev/mpi/vsys
└── vvi.ko --- vi - модуль, узел /dev/mpi/vvi
Перед использованием интерфейсов rockit необходимо загрузить перечисленные модули ko. Все эти модули объединены в один ko, который загружается следующей командой:
insmod rockit.ko
Проверьте успешную загрузку следующей командой:
# lsmod
Module Size Used by Tainted: G
rknpu 21535 1
rockit 90530 14
mpp_vcodec 350020 4 rockit
rga3 76968 3 rockit
sc4336 8940 2
phy_rockchip_csi2_dphy 7657 0
phy_rockchip_csi2_dphy_hw 7644 0
video_rkisp 138585 3 rockit,[permanent]
video_rkcif 107889 4
rk_dvbm 5813 2 mpp_vcodec,video_rkisp
После успешной загрузки можно запускать программы, зависящие от rockit.so.
3.1 Параметры модуля KO
3.1.1 mcu_fw_path
Путь к прошивке MCU для режима wrapping. По умолчанию пустой: прошивка MCU не загружается.
insmod rockit.ko mcu_fw_path=/oem/usr/ko/hpmcu_wrap.bin
3.1.2 mcu_fw_addr
Адрес прошивки MCU для wrapping. По умолчанию 0xff6ff000 для RV1106 и 0x210f6000 для RV1103B.
insmod rockit.ko mcu_fw_addr=0xff6ff000
3.1.3 isp_max_h
Высота входа перед ISP. Если VICAP выполняет обрезку, источник предписывает настроить «ширину после обрезки». Это противоречит определению высоты и требует проверки по SDK. При неверной настройке cat /dev/mpi/vlog выводит правильное значение. Диагностическая строка:
mpi_log_err("isp input height config err, config h= %d, real h = %d", isp_max_h, isp_h);
insmod rockit.ko isp_max_h=1920
3.1.4 isp_max_w
Зарезервировано.
3.1.5 en_mcu
Включение драйвера MCU. По умолчанию включён на RV1106 и выключен на RV1103B. Если отключён, драйвер MCU не загружается.
insmod rockit.ko en_mcu=0
3.1.6 rk_dma_heap_base
Начальный адрес MMZ, освобождаемой через RK_MPI_SYS_RelasePhyMemory, должен быть выровнен по 4K и превышать начало MMZ. Начало MMZ = общий объём физической памяти - размер MMZ.
insmod rockit.ko rk_dma_heap_base=0x40000
3.1.7 rk_dma_heap_size
Размер MMZ, освобождаемой через RK_MPI_SYS_RelasePhyMemory, не должен превышать размер MMZ.
insmod rockit.ko rk_dma_heap_size=0x40000
4. Межплатформенный перенос
RRT дополнена уровнем абстракции ОС OSAL и переписана на его основе. Теперь она работает в ядре Linux, в пользовательском режиме Linux и в RTOS. На RV1103B/RV1126B работают два экземпляра RRT: один в пользовательском режиме и один в ядре. Для просмотра узлов /dev/mpi/xxx в пользовательском режиме Linux и в RTOS добавьте dumpsys перед исходной командой:
dumpsys cat /dev/mpi/valloc
dumpsys cat /dev/mpi/vsys
dumpsys cat /dev/mpi/vlog
dumpsys cat /dev/mpi/vrgn
5. Межплатформенное взаимодействие
На одном SoC могут работать несколько RRT. Для упрощения взаимодействия разработчиков модулей RRT поддерживает связь между платформами: VALLOC управляет межплатформенными счётчиками ссылок BUFFER, а VSYS обеспечивает связывание и передачу BUFFER. Обязательное условие: RRT разных платформ должны совместно использовать BUFFER через физическую память. Ниже перечислены поддерживаемые на SoC экземпляры RRT и их модули.
| SOC | RRT (режим ядра Linux) | RRT (пользовательский режим Linux) | RRT (rt-thread) |
|---|---|---|---|
| RV1106/RV1103 | VI / VPSS / VENC / AVS / VRGN / VALLOC / VSYS |
Не поддерживается | Не поддерживается |
| RV1103B/RV1106B | VI / VPSS / VENC / AVS / VRGN / VALLOC / VSYS |
VDEC / VO / VRGN / AI / AO / AENC / ADEC / AMIX / AF / TDE / VALLOC / VSYS / TDE |
Не поддерживается |
| RK3308 | Не поддерживается | VALLOC / VSYS / VRGN / VDEC / AI / AO / ADEC / AENC / AMIX / AF / VO |
Не поддерживается |
| RK3506 | Не поддерживается | VALLOC / VSYS / VRGN / VDEC / AI / AO / ADEC / AENC / AMIX / AF / VO / TDE |
VALLOC / VSYS / VRGN / VDEC / AI / AO / ADEC / AENC / AMIX / AF / VO / TDE |
| RV1126B | VI / VPSS / VENC / AVS / VRGN / VALLC / VSYS / GDC / IVS |
VI / VALLOC / VSYS / VRGN / VDEC / AI / AO / ADEC / AENC / AMIX / AF / VO / TDE |
Не поддерживается |
6. VALLOC
VALLOC выделяет и управляет памятью медиасреды. Текущее состояние памяти выводится командой:
cat /dev/mpi/valloc
Описание полей:
| Поле | Описание | Примечания |
|---|---|---|
| module | Информация о модуле | Имя модуля |
| version | Информация о версии | Имя репозитория: commit: номер версии |
| build | Информация о сборке | Компилятор и дата компиляции |
| mpi buf list |
Разделитель списка буферов | Далее приведена информация о BUF |
| buf_id | Уникальный ID на этой платформе | Идентифицирует MPI BUF, эквивалент HANDLE. Выводятся два ID; ID в скобках уникален между платформами |
| pool | ID пула буферов | Пул, которому принадлежит mpi buf; -1 означает отсутствие пула |
| ref | Счётчик использования MPI buf | +1 перед использованием, -1 после; если счётчик равен 0 и пула нет, mpi buf освобождается (китайский текст; английский связывает 0 с отсутствием пула) |
| dma | Счётчик использования DMA buf | +1 перед использованием, -1 после; при 0 dma_buf освобождается |
| use | Ссылки, добавленные другими экземплярами RRT | Если ref - use == 0, этот RRT не использует данный BUF |
| basefd | Базовый fd буфера dma buf | Для RRT в режиме ядра Linux basefd = -1 |
| status | Текущее состояние буфера | bit0: 1 - объект зарегистрирован, 0 - ресурс освобождён; bit1: 1 - доступен, 0 - недоступен; bit2: 1 - удалён, 0 - не удалён; bit3: 1 - удаление запрещено, 0 - разрешено; bit4: 1 - частный объект, 0 - общий; bit5: 1 - ID сохраняется при удалении, 0 - не сохраняется; bit6: 1 - мониторинг возможен, 0 - невозможен; bit7-9: резерв; bit10: 1 - BUFFER удалён; bit11-31: резерв |
| size | Размер буфера | Единица: BYTE; 0 означает режим wrapping |
| handle | Дескриптор буфера | На RV1106 это физический адрес |
| vaddr | Виртуальный адрес | Виртуальный адрес RTOS (совпадает с физическим) |
| paddr | Физический адрес | Адрес периферии на шине IC |
| memtype | Тип пула памяти | cma: непрерывная память; system: непрерывность не гарантируется; memfd: общая память процессов пользовательского режима Linux |
| create | Создатель буфера | Записывает распределение BUFFER; deleted означает, что создатель этого BUFFER удалён |
| user | Пользователь буфера | Для всех циркулирующих BUFFER записывается текущий пользователь; среди пользователей также есть POOL |
| total | Общий объём памяти | Единица: BYTE |
| mpi pool list |
Разделитель списка пулов | Далее приведена информация о POOL |
| poid | Глобально уникальный ID | pool_id = poid означает, что BUFFER принадлежит этому POOL |
| nkid | Пользовательский ID | Если POOL импортирован из пользовательского режима, это ID POOL пользовательского режима |
| total | Общее число BUFFER |
| Поле | Описание | Примечания |
|---|---|---|
| free | Оставшееся число BUFFER | Доступные сейчас BUFFER |
| min | Минимальное оставшееся число | -1 указывает на потерю кадров |
| size | Размер BUFFER в пуле | Размер каждого BUFFER должен превышать это значение |
| reflevel | Порог REFCNT свободного BUF в POOL | MPI BUF считается свободным, если REFCNT не превышает это значение |
| status | Текущее состояние пула | bit0: 1 - зарегистрирован, 0 - ресурс освобождён; bit1: 1 - доступен, 0 - недоступен; bit2: 1 - удалён, 0 - не удалён; bit3: 1 - удаление запрещено, 0 - разрешено; bit4: 1 - частный, 0 - общий; bit5: 1 - ID сохраняется при удалении, 0 - нет; bit6: 1 - мониторинг поддерживается, 0 - нет; bit7-31: резерв |
| create | Создатель пула | |
| user | Пользователь пула |
7. VLOG
Менеджер журналов медиасреды.
7.1 Просмотр журнала ядра
cat /dev/mpi/vlog
7.2 Настройка уровня журналирования модуля
Команда echo module=level > /tmp/rt_log_level меняет уровень журналирования модуля одновременно для rockit so и ko. Допустимые module: all cmpi mb sys vdec venc rgn vpss vgs tde avs wbc vo vi ai ao aenc adec. Уровни: 0,1,2,3,4,5,6; 2 - ERR (красный), 3 - WRN (жёлтый), 4 - INF (зелёный).
echo module=level > /tmp/rt_log_level
7.3 Путь и размер журнала SO
echo rt_log_path=/tmp/rockit.log > /tmp/rt_log_level
echo rt_log_size=1024000 > /tmp/rt_log_level
7.4 Очистка журнала
echo 0 > /dev/mpi/vlog
8. VSYS
VSYS управляет связями медиамодулей. Текущие связи и статистика частоты кадров доступны следующей командой:
cat /dev/mpi/vsys
| Поле | Описание | Примечания |
|---|---|---|
| module | Информация о модуле | Имя модуля |
| version | Информация о версии | Имя репозитория: commit: номер версии |
| build | Информация о компиляции | Компилятор - дата компиляции |
| mpi node list | Разделитель списка узлов | Далее приведена информация об узлах |
| id | Глобально уникальный ID | Идентифицирует узел MPI, эквивалент HANDLE |
| name | Имя устройства, создавшего NODE | Несколько NODE могут иметь одинаковое имя |
| handle | Дескриптор NODE | Указатель на структуру узла в памяти |
| nid | Пользовательский ID rockit | Пользовательский ID для управления NODE в ROCKIT |
| uid | ID узла дерева потока данных | По этому ID запрашивается массив пользователей MPI BUF, что позволяет определить текущего владельца BUF |
| ref | Счётчик использования | +1 перед использованием, -1 после; при 0 освобождение |
| infa_cnt | Число полученных кадров | Общее число кадров, полученных узлом |
| lcnt | Число потерянных входных кадров | Потери из-за невозможности обработки или ошибки обработки; регулирование частоты кадров сюда не входит |
| frate | Частота получаемых кадров | Статистика за секунду; настройка не поддерживается |
| fbase | Коэффициент пропуска входных кадров | Из fbase полученных кадров сохраняется первый, остальные отбрасываются |
| wcnt | Фактическое число кадров в пользовательской очереди приёма | Размер пользовательской очереди задаётся через depth; полученные, но ещё не освобождённые пользователем кадры также учитываются |
| depth | Глубина пользовательской очереди приёма | Не должна превышать общий размер предшествующей очереди BUF, иначе предыдущий этап может зависнуть |
| timeout | Тайм-аут получения данных из пользовательской очереди приёма | Единица: ms |
| onfa_cnt | Число отправленных кадров | Общее число кадров, отправленных узлом |
| lcnt | Число потерянных выходных кадров | Потери из-за невозможности обработки или ошибки обработки; регулирование частоты кадров сюда не входит |
| frate | Частота отправляемых кадров | Статистика за секунду; настройка не поддерживается |
| fbase | Коэффициент пропуска выходных кадров | Из fbase выходных кадров отправляется первый, остальные отбрасываются |
| wcnt | Фактическое число кадров в пользовательской очереди отправки | Размер пользовательской очереди задаётся через depth; полученные, но ещё не освобождённые пользователем кадры также учитываются |
| depth | Глубина пользовательской очереди отправки | Не должна превышать общий размер предшествующей очереди BUF, иначе предыдущий этап может зависнуть |
| timeout | Тайм-аут получения данных из пользовательской очереди отправки | Единица: ms |
| itime | Время приёма одного кадра | Единица: us |
| Поле | Описание | Примечания |
|---|---|---|
| otime | Время отправки одного кадра | Единица: us |
| state | Текущее состояние узла | bit0: 1 - зарегистрирован, 0 - ресурс освобождён; bit1: 1 - доступен, 0 - недоступен; bit2: 1 - удалён, 0 - нет; bit3: 1 - удаление запрещено, 0 - разрешено; bit4: 1 - частный, 0 - общий; bit5: 1 - ID сохраняется при удалении, 0 - нет; bit6: 1 - мониторинг поддерживается, 0 - нет; bit7-9: резерв; bit10: 1 - удаляется; bit11: 1 - обновляет BUF; bit12: 1 - работает; bit13: 1 - связан с предыдущим этапом; bit14: 1 - автоматически запускается при связывании с предыдущим этапом; bit15-31: резерв |
| next node | ID следующего NODE | Один NODE может быть связан с несколькими NODE |
| mpi node frame control |
Таблица регулирования частоты кадров узла | Далее приведена информация о регулировании частоты кадров NODE |
| id | Глобально уникальный ID | Идентифицирует узел MPI, эквивалент HANDLE |
| name | Имя устройства, создавшего NODE | Несколько NODE могут иметь одинаковое имя |
| table | Таблица пропуска кадров | Размер равен частоте кадров; n сохраняет n кадров, 0 отбрасывает (китайский источник). Английский: 0 сохраняет, 1 отбрасывает; проверьте SDK. |
| mpi dev list | Список устройств ROCKIT | Далее приведена информация об устройствах |
| id | ID устройства | Глобально уникальный идентификатор |
| name | Имя устройства | Для удобного различения устройств |
| handle | Дескриптор устройства | Адрес структуры устройства в памяти |
| ref | Счётчик ссылок | Увеличивается на 1 при каждой ссылке на открытый дескриптор |
| node | NODE устройства | Перечисляет ID всех NODE устройства |
9. VENC
Параметры кодирования доступны следующей командой:
cat /proc/vcodec/enc/venc_info
venc thread status
| Параметр | Описание |
|---|---|
| last_runing (EN: last_running) | Время последнего пробуждения потока |
| run_cnt | Число запусков потока |
| que_cnt | Число активаций потока |
venc chn running status
| Параметр | Описание |
|---|---|
| ID | ID канала кодирования |
| runing (EN: running) | Активен ли канал |
| combo_run | Активно ли комбинированное кодирование JPEG в канале |
| cfg_gap | Время настройки регистров канала, ms |
| strm_cnt | Число кэшированных потоков в канале |
| strm_out | Число потоков канала, переданных приложению |
| gap_time | Интервал между двумя последними началами кодирования канала, ms |
| cb_gap_time | Интервал между двумя операциями комбинированного кодирования JPEG |
| last_cb_start | Последнее время начала комбинированного кодирования JPEG |
| last_cb_end | Последнее время завершения комбинированного кодирования JPEG |
| queue_size | Размер очереди буферов канала |
| pkt_total_cnt | Общее число пакетов канала |
| pkt_user_get | Число пакетов, полученных приложением из канала |
| pkt_user_put | Число пакетов канала, освобождённых приложением |
| seq_user_get | Seq текущего потока, полученного приложением |
| seq_user_put | Seq текущего потока, освобождённого приложением |
| seq_encoded | Seq уже закодированных данных канала |
| seq_encoding | Seq данных, кодируемых сейчас в канале |
venc chn attr 1
| Параметры | Описание |
|---|---|
| ID | ID канала кодирования |
| Width | Ширина канала кодирования |
| Height | Высота канала кодирования |
| Type | Тип канала кодирования |
| ByFrame | Получение потока по кадрам: n - по пакетам (сейчас не поддерживается); y - по кадрам |
| Sequence | Порядковый ID: при покадровом получении это номер кадра, при пакетном - номер пакета |
| GOPMode | Режим GOP |
| Prio | Приоритет канала |
| MaxWidth | Максимальная ширина канала кодирования |
| MaxHeight | Максимальная высота канала кодирования |
| Online | Включение Wrapping (написание источника) |
| RefShare | Совместное использование реконструированного/опорного кадра |
venc chn attr 2
| Параметры | Описание |
|---|---|
| ID | ID канала кодирования |
| Vestr | Включено ли кодирование |
| SrcFr | Исходная частота кадров регулирования VENC, то есть входная частота кадров |
| TarFr | Целевая частота кадров регулирования VENC |
| Timeref | Время запуска VENC |
| PixFmt | Формат кодируемого текущего кадра |
| RealFps | Фактическая частота кадров VENC |
| Rotation | Включён ли поворот VENC |
| Mirror | Включено ли зеркальное отражение VENC |
ring buf status
| Параметры | Описание |
|---|---|
| ID | ID канала кодирования |
| w_pos | Позиция записи в буфер битового потока |
| r_pos | Позиция чтения из буфера битового потока |
| used_len | Занятое место в буфере потока |
| total_len | Общий размер буфера битового потока |
| min_size | Минимальное свободное место для выделения одного кадра (китайский текст; английский говорит «последнее») |
| l_w_pos | Последняя обновлённая позиция записи |
| l_r_pos | Последняя обновлённая позиция чтения |
| max_use_len | Максимально занятое место в буфере битового потока |
hw status
| Параметры | Описание |
|---|---|
| ID | ID канала кодирования |
| hw_run | Текущий канал работает |
| enc_status | Состояние кодировщика: 0: ENC_STATUS_CFG_IN, 1: ENC_STATUS_CFG_DONE, 2: ENC_STATUS_START_IN, 3: ENC_STATUS_START_DONE, 4: ENC_STATUS_RUN_TASK_IN, 5: ENC_STATUS_RUN_TASK_DONE, 6: ENC_STATUS_INT_IN, 7: ENC_STATUS_INT_DONE, 8: ENC_STATUS_SLICE_INFO_IN, 9: ENC_STATUS_SLICE_INFO_DONE |
| pkt_fail_cnt | Число ошибок запроса пула пакетов кодировщиком |
| ring_fail_cnt | Число ошибок выделения буфера потока |
| cfg_fail_cnt | Число ошибок формирования конфигурации аппаратуры |
| start_fail_cnt | Число ошибок запуска аппаратного кодирования |
| pkt_full_cnt | Число кадров, отброшенных из-за превышения PACKET значения 100 |
hw param
| Параметры | Описание |
|---|---|
| ID | ID канала кодирования |
| qp_dlt_row_i | Максимальная амплитуда построчной коррекции QP для I-кадров |
| qp_dlt_row | Максимальная амплитуда построчной коррекции QP для P-кадров |
| qbias_en | Включение коррекции bias |
| qbias_i | Значение bias для I-блока |
| qbias_p | Значение bias для P-блока |
| flt_str_i | Сила фильтра для I-кадров |
| flt_str_p | Сила фильтра для P-кадров |
| thrd_i | Таблица порогов madi на уровне блоков для I-кадров |
| thrd_p | Таблица порогов madi на уровне блоков для P-кадров |
| step_i | Таблица поиска AQ по thrd_i для I-кадров |
| step_p | Таблица поиска AQ по thrd_p для P-кадров |
| qbias_arr | Конфигурация bias |
| aq_rnge_arr | Настройка диапазона ограничений AQ |
fine tunning param
| Параметры | Описание |
|---|---|
| ID | ID канала кодирования |
| scene_mode | Режим сцены |
| md_swth_en | Переключение движения/статики |
| deblur_str | Сила устранения размытия |
| atr_str | Сила подавления ореолов |
| atl_str | Сила подавления линий |
| lambda_idx | Индекс lambda для P-кадров |
| lambda_i_idx | Индекс lambda для I-кадров |
| atf_str | Сила подавления мерцания |
| static_frm_num | Порог числа кадров для определения неподвижности блока |
| madp16_th | Порог madp16 для неподвижности блока |
| skip16_wgt | Усиление смещения skip16 |
| skip32_wgt | Усиление смещения skip32 |
| lgt_chg_lvl | Уровень оптимизации для сцен с изменением освещения |
venc roi attr
| Параметры | Описание |
|---|---|
| ID | ID канала кодирования |
| roi | Индекс ROI |
| x | Начальная горизонтальная координата |
| y | Начальная вертикальная координата |
| w | Ширина ROI |
| h | Высота ROI |
| quality | QP макроблоков ROI |
| intra | Принудительное внутрикадровое кодирование макроблоков ROI |
| abs_qp | Включение абсолютного QP |
hw session infos
| Параметры | Описание |
|---|---|
| ID | ID канала кодирования |
| device | Имя устройства |
| hw_running | Состояние работы аппаратуры |
| online | Включение Wrapping (написание источника) |
| wrap_ovfl | Число переполнений Wrapping |
| bs_ovfl | Число переполнений буфера потока |
| wrap_src_mis | Число несоответствий источника Wrapping |
| enc_err_cnt | Число ошибок кодировщика |
| enc_err_irq | Значение регистра прерываний при ошибке кодировщика |
| enc_err_st | Значение регистра состояния при ошибке кодировщика |
bitstream buffer addr
| Параметры | Описание |
|---|---|
| top | Верхняя граница стека буфера потока |
| bot | Нижняя граница стека буфера потока |
| wr | Адрес записи буфера потока |
| rd | Адрес чтения буфера потока |
h264e chn attr
| Параметры | Описание |
|---|---|
| ID | ID канала кодирования |
| Width | Ширина в пикселях |
| Height | Высота в пикселях |
| Profile | Профиль канала кодирования: Base - baseline; Mp - main profile; Hp - high profile |
Syntax INFO1
| Параметры | Описание |
|---|---|
| ID | ID канала кодирования |
| Slcsplten | Используется ли разделение на срезы |
| SplitMode | Режим разделения срезов: 1 - по байтам; 2 - по макроблокам |
| Slcsize | Размер среза; смысл slice_size зависит от split_mode |
| IntraRefresh | Разрешено ли обновление I-макроблоков в P-кадре |
| RefreshMode | Режим обновления I-макроблоков: row - по строкам; column - по столбцам |
| RefreshNum | Число строк или столбцов I-макроблоков, обновляемых в каждом кадре |
Syntax INFO2
| Параметры | Описание |
|---|---|
| ID | ID канала кодирования |
| Profile | Профиль канала кодирования: Base - Baseline; MP - Main profile; HP - High profile |
| Cabac | Режим энтропийного кодирования: cavlc или cabac |
| Trans8 | Режим преобразования: по умолчанию только trans4x4; Y включает trans8x8 |
| ScalingMode | Режим списка масштабирования |
| Poc | Значение синтаксического элемента pic_order_cnt_type |
| Alpha | Значение синтаксического элемента slice_alpha_c0_offset_div2 |
| Beta | Значение синтаксического элемента slice_beta_offset_div2 |
h265e chn attr
| Параметры | Описание |
|---|---|
| ID | ID канала кодирования |
| Width | Ширина в пикселях |
| Height | Высота в пикселях |
| Profile | Профиль канала кодирования: main - основной профиль |
Syntax INFO1
| Параметры | Описание |
|---|---|
| ID | ID канала кодирования |
| Slcsplten | Используется ли разделение на срезы |
| SplitMode | Режим разделения срезов: 1 - по байтам; 2 - по макроблокам |
| Slcsize | Размер среза; смысл slice_size зависит от split_mode |
| IntraRefresh | Разрешено ли обновление I-макроблоков в P-кадре |
| RefreshMode | Режим обновления I-макроблоков: row - по строкам; column - по столбцам |
| RefreshNum | Число строк или столбцов I-макроблоков, обновляемых в каждом кадре |
Syntax INFO2
| Параметры | Описание |
|---|---|
| ID | ID канала кодирования |
| Dblken | Инвертированное значение slice_deblocking_filter_disabled_flag |
| Tc | Значение синтаксического элемента slice_tc_offset_div2 |
| Beta | Значение синтаксического элемента slice_beta_offset_div2 |
| Saoluma | Значение синтаксического элемента slice_sao_luma_flag |
| Saochroma | Значение синтаксического элемента slice_sao_chroma_flag |
| IntraSmoothing | Значение синтаксического элемента strong_intra_smoothing_enabled_flag |
| ScalingMode | Режим списка масштабирования |
| TmvpEn | Включение TMVP |
Trans Info
| Параметры | Описание |
|---|---|
| ID | ID канала кодирования |
| CbQpoffset | Значение синтаксического элемента pps_cb_qp_offset |
| CrQpoffset | Значение синтаксического элемента pps_cr_qp_offset |
jpege chn attr
| Параметры | Описание |
|---|---|
| ID | ID канала кодирования |
| width | Ширина изображения в пикселях |
| height | Высота изображения в пикселях |
| quant | Параметр квантования qp канала |
| qfactor | Используемый каналом qfactor |
| qfmax | Максимальный qfactor канала |
| qfmin | Минимальный qfactor канала |
RC base param1
| Параметр | Описание |
|---|---|
| ChnId | ID канала кодирования |
| Gop | Группа изображений кодирования (GOP) |
| StatTm | Период статистики управления битрейтом, секунды |
| ViFr | Частота кадров VI (видеовход) |
| TrgFr | Целевая частота кадров кодирования |
| RcMode | Режим управления битрейтом (cbr/fixqp/vbr/avbr/smart) |
| Br(kbps) | Битрейт в kbps |
| IQp | QP I-кадров, действует в режиме FixQp |
| PQp | QP P-кадров, действует в режиме FixQp |
RC base param2
| Параметр | Описание |
|---|---|
| ChnId | ID канала кодирования |
| MinQp | Минимальный QP P-кадров |
| MaxQp | Максимальный QP P-кадров |
| MinIQp | Минимальный QP I-кадров |
| MaxIQp | Максимальный QP I-кадров |
| EnableIdr | Включение IDR: Y - включено; N - выключено |
RC run comm param1
| Параметр | Описание |
|---|---|
| ChnId | ID канала кодирования |
| bLost | Отбрасывать ли кадры при превышении мгновенным битрейтом заданного порога |
| LostThr | Порог отбрасывания кадров |
| LostFrmstr | Статистика числа отброшенных кадров |
| EncGap | Интервал между кодируемыми кадрами |
RC run comm param2
| Параметр | Описание |
|---|---|
| ChnId | ID канала кодирования |
| SprFrmMod | Режим обработки слишком больших кадров |
| SprIFrm | Порог слишком большого I-кадра |
| SprPFrm | Порог слишком большого P-кадра |
| RCPriority | Приоритет управления битрейтом: bitrate - целевой битрейт; framebits - порог слишком большого кадра |
RC gop mode attr
| Параметр | Описание |
|---|---|
| ChnId | ID канала кодирования |
| GopMode | Тип gop_mode |
| IpQpDelta | Разность QP I- и P-кадров; в SmartP - разность QP фоновых Bg- и P-кадров. Диапазон: [-10, 30] |
| BgInterval | Интервал специальных P-кадров. Не превышает Gop |
| ViQpDelta | Разность QP виртуальных I- и P-кадров. Диапазон: [-10, 30] |
RC run vbr common param
| Параметр | Описание |
|---|---|
| ChnId | ID канала кодирования |
| ChgPs | Отношение битрейта начала коррекции QP в VBR к максимальному битрейту: bitrate/max_bitrate * 100 |
| MinIprop | Минимальное отношение битрейтов I/P. Диапазон: [1,100]; по умолчанию 1 |
| MaxIprop | Максимальное отношение битрейтов I/P. Диапазон: [MinIprop, 100]; по умолчанию 100 |
| MaxQp | Максимальный QP P-кадров. Диапазон: [0, 51]; по умолчанию 51 |
| MinQp | Минимальный QP P-кадров. Диапазон: [0, MaxQp]; по умолчанию 24 |
| MaxIQp | Максимальный QP I-кадров. Диапазон: [0, 51]; по умолчанию 51 |
| MinIQp | Минимальный QP I-кадров. Диапазон: [0, MaxIQp]; по умолчанию 24 |
| FrmMaxQp | Максимальный QP P-кадров на уровне кадра |
| FrmMinQp | Минимальный QP P-кадров на уровне кадра |
| FrmMaxIQp | Максимальный QP I-кадров на уровне кадра |
| FrmMinIQp | Минимальный QP I-кадров на уровне кадра |
| MaxReEncTimes | Число повторных кодирований кадра; 0 - без повторения. Диапазон: [0, 3]; по умолчанию 1 |
RC run cbr param
| Параметр | Описание |
|---|---|
| ChnId | ID канала кодирования |
| MinIprop | Минимальное отношение I/P. Диапазон: [1, 100] |
| MaxIprop | Максимальное отношение I/P. Диапазон: [MinIprop, 100] |
| MaxQp | Максимальный QP P-кадров для ограничения качества. Диапазон: [0, 51] |
| MinQp | Минимальный QP P-кадров для ограничения колебаний битрейта. Диапазон: [0, MaxQp] |
| MaxIQp | Максимальный QP I-кадров для управления минимальным числом бит I-кадра. Диапазон: [0, 51] |
| MinIQp | Минимальный QP I-кадров для управления максимальным числом бит I-кадра. Диапазон: [0, MaxIQp] |
| FrmMaxQp | Максимальный QP P-кадров на уровне кадра |
| FrmMinQp | Минимальный QP P-кадров на уровне кадра |
| FrmMaxIQp | Максимальный QP I-кадров на уровне кадра |
| FrmMinIQp | Минимальный QP I-кадров на уровне кадра |
| MaxReEncTimes | Число повторных кодирований кадра; 0 - без повторения. Диапазон: [0, 3] |
RC run avbr param
| Параметр | Описание |
|---|---|
| ChnId | ID канала кодирования |
| MaxStillQP | Максимальный QP неподвижной сцены |
| MotionSensi | Чувствительность к движению |
| MinPercent | Минимальный процент для неподвижной сцены |
RC HierarchicalQp INFO
| Параметр | Описание |
|---|---|
| ChnId | ID канала кодирования |
| bEnable | Включено ли многоуровневое QP |
| FrameNum[0] | Число кадров QP на уровне 1 |
| FrameNum[1] | Число кадров QP на уровне 2 |
| FrameNum[2] | Число кадров QP на уровне 3 |
| FrameNum[3] | Число кадров QP на уровне 4 |
| QpDelta[0] | QpDelta кадров уровня 1 |
| QpDelta[1] | QpDelta кадров уровня 2 |
| QpDelta[2] | QpDelta кадров уровня 3 |
| QpDelta[3] | QpDelta кадров уровня 4 |
RC debreath_effect info
| Параметр | Описание |
|---|---|
| ChnId | ID канала кодирования |
| bEnable | Включено ли подавление эффекта дыхания |
| Strength0 | Сила подавления эффекта дыхания 0 |
| DeBrthEfctCnt | Число применений подавления эффекта дыхания к изображению |
RC run CBR/VBR info1
| Параметр | Описание |
|---|---|
| ChnId | ID канала кодирования |
| InsBr(kbps) | Мгновенный битрейт, kbps |
| InsFr | Мгновенная частота кадров |
| WatL | Порог битрейта |
| CfgBt(kb) | Целевой размер предыдущего кадра, kb |
| RealBt(kb) | Фактический размер предыдущего кадра, kb |
| IPRatio | Отношение средних размеров I- и P-кадров |
| StartQp | Начальный QP |
| MinQp | Минимальный QP |
| MaxQp | Максимальный QP |
mpp_packet pool
| Параметр | Описание |
|---|---|
| unused_cnt | Число свободных пакетов |
| used_cnt | Число используемых пакетов |
| total_cnt | Общее число пакетов |
| max_cnt | Максимальное число пакетов |
mpp_buffer pool
| Параметр | Описание |
|---|---|
| unused_cnt | Число свободных буферов |
| used_cnt | Число используемых буферов |
| total_cnt | Общее число буферов |
| max_cnt | Максимальное число буферов |
mpp_frame pool
| Параметр | Описание |
|---|---|
| unused_cnt | Число свободных кадров |
| used_cnt | Число используемых кадров |
| total_cnt | Общее число кадров |
| max_cnt | Максимальное число кадров |
10. Соответствие venc_info и API rockit
venc_info содержит параметры кодировщика, выводимые ядром. Поддерживаются только RV1103B/RV1106B и RV1103/RV1106. Эта глава систематизирует ключевые настройки, влияющие на субъективное качество изображения и объективную степень сжатия.
| venc_info | API rockit | Поле API rockit | Примечание |
|---|---|---|---|
| qbias_en qbias_i qbias_p |
RK_MPI_VENC_SetH264Qbias RK_MPI_VENC_SetH265Qbias |
bEnable u32QbiasI u32QbiasP |
RV1103/RV1106 поддерживается; RV1103B/RV1106B не поддерживается |
| qbias_en qbias_arr[18] |
RK_MPI_VENC_SetH264Qbias2 RK_MPI_VENC_SetH265Qbias2 |
bEnable u32Qbias2[18] |
RV1103/RV1106 не поддерживается; обновлённая версия для RV1103B/RV1106B |
| StartQp MaxQp MinQp MaxIQp MinIQp IpQpDelta MaxReEncTimes FrmMaxQp FrmMinQp FrmMaxIQp FrmMinIQp md_switch_qp |
RK_MPI_VENC_SetRcParam | s32FirstFrameStartQp u32MaxQp u32MinQp u32MaxIQp u32MinIQp s32DeltIpQp s32MaxReEncodeTimes u32FrmMaxQp u32FrmMinQp u32FrmMaxIQp u32FrmMinIQp u32MotionStaticSwitchFrmQp |
Начальный QP, QP блоков, строк и кадров, число повторных кодирований |
| thrd_i[16] thrd_p[16] step_i[16] step_p[16] qp_dlt_row_i qp_dlt_row |
RK_MPI_VENC_SetRcParam2 | u32ThrdI[16] u32ThrdP[16] s32AqStepI[16] s32AqStepP[16] u32RowQpDelta u32RowIQpDelta |
Параметры AQ, построчная коррекция QP |
| aq_rnge_arr[10] | RK_MPI_VENC_SetRcParam3 | u32AqRange[10] | RV1103/RV1106 не поддерживается; обновлённая версия для RV1103B/RV1106B |
| scene_mode | RK_MPI_VENC_SetSceneMode | enSceneMode | Режим сцены |
| flt_str_i flt_str_p |
RK_MPI_VENC_SetFilter | u32StrengthI u32StrengthP |
Сила фильтра |
| md_swth_en | RK_MPI_VENC_EnableMotionStaticSwitch | bEnable | Включение крайне низкого битрейта для статичных сцен (переключение движения/статики) |
| deblur_str | RK_MPI_VENC_SetMotionDeblurStrength | u32Strength | Устранение шлейфов и размытия движения |
| atr_str | RK_MPI_VENC_SetAntiRing | u32AntiRing | Сила подавления ореолов |
| atl_str | RK_MPI_VENC_SetAntiLine | u32AntiLine | Сила подавления линий |
| atf_str | RK_MPI_VENC_SetAntiFlick | u32AntiFlick | Устранение дрожания/ползания шума (подавление мерцания) |
| lambda_i_idx lambda_idx |
RK_MPI_VENC_SetLambda | u32LambdaI u32Lambda |
Конфигурация lambda |
| static_frm_num madp16_th skip16_wgt skip32_wgt |
RK_MPI_VENC_SetStaticWeight | u32FrmNum u32Madp16Th u32Skip16Weight u32Skip32Weight |
Склонность к пропуску в неподвижной сцене |
| venc_info | API rockit | Поле API rockit | Примечание |
|---|---|---|---|
| lgt_chg_lvl | RK_MPI_VENC_SetLightChange | u32Level | RV1103/RV1106 не поддерживается; RV1103B/RV1106B поддерживается |
| DblkEn alpha beta |
RK_MPI_VENC_SetH264Dblk | disable_deblocking_filter_idc slice_alpha_c0_offset_div2 slice_beta_offset_div2 |
Деблокирующий фильтр H.264 |
| DblkEn Tc Beta |
RK_MPI_VENC_SetH265Dblk | slice_deblocking_filter_disabled_flag slice_tc_offset_div2 slice_beta_offset_div2 |
Деблокирующий фильтр H.265 |
| Saoluma Saochroma |
RK_MPI_VENC_SetH265Sao | slice_sao_luma_flag slice_sao_chroma_flag |
Параметры SAO H.265 |
| IntraSmoothing | RK_MPI_VENC_SetH265PredUnit | strong_intra_smoothing_enabled_flag | Сильная внутрикадровая фильтрация H.265 |
| TmvpEn | RK_MPI_VENC_EnableTmvp | bEnable | Переключатель TMVP H.265 |
| StatTm GopMode Gop |
RK_MPI_VENC_SetChnAttr | u32StatTime enGopMode u32Gop |
Период статистики управления битрейтом, режим GOP и длина GOP |
| ScalingMode CbQpOffset CrQpOffset |
RK_MPI_VENC_SetH265Trans | bScalingListEnabled cb_qp_offset cr_qp_offset |
Параметры квантования H.265 |
| trans8 ScalingMode CbQpOffset CrQpOffset |
RK_MPI_VENC_SetH264Trans | u32TransMode bScalingListValid chroma_qp_index_offset |
В H.264 CbQpOffset и CrQpOffset совместно используют chroma_qp_index_offset |
| RcMode MinBr(kbps) MaxBr(kbps) |
RK_MPI_VENC_SetChnAttr RK_MPI_VENC_EnableSvc |
enRcMode u32MinBitRate u32MaxBitRate |
Установить enRcMode в VBR, настроить u32MinBitRate и u32MaxBitRate, включить SVC для запуска режима smart |
| bEnable Strength0 |
RK_MPI_VENC_SetDeBreathEffect | bEnable s32Strength0 |
Параметры подавления эффекта дыхания |
| cu_dqp | RK_MPI_VENC_SetH265CuDqp | u32CuDqp | H.265 diff_cu_qp_delta_depth |
11. IVS
Параметры интеллектуального видеонаблюдения доступны следующей командой:
cat /proc/vcodec/ivs/ivs_info
ivs channel attr
| Параметр | Описание |
|---|---|
| ID | ID канала интеллектуального видеонаблюдения |
| width | Ширина канала |
| height | Высота канала |
| smear_en | Включение smear |
| weightp_en | Включение weightp |
| max_width | Максимальная ширина канала |
| max_height | Максимальная высота канала |
| md_en | Включение обнаружения движения |
| od_en | Включение обнаружения перекрытия |
ivs common cfg
| Параметр | Описание |
|---|---|
| ID | ID канала интеллектуального видеонаблюдения |
| fmt | Тип формата изображения |
| frm_acc_intval | Интервал накопления кадров |
| frm_acc_gop | GOP накопления кадров |
ivs md cfg
| Параметр | Описание |
|---|---|
| ID | ID канала интеллектуального видеонаблюдения |
| switch_sad | Режим SAD для движения: 0 - SAD до компенсации среднего; 1 - SAD с компенсацией среднего; 2 - минимум этих двух значений; 3 - максимум |
| thres_sad | Порог SAD движения для блока 4x4 |
| thres_move | Порог определения движения блока 8x8 |
| night_mode | Включение ночного режима |
| filter_sw | Включение фильтра летящего пуха |
| thres_dust_mv | Порог числа блоков с летящим пухом среди восьми блоков 8x8 вокруг текущего блока 8x8 |
| thres_dust_blk | Порог числа блоков с летящим пухом среди четырёх блоков 4x4 внутри текущего блока 8x8 |
| thres_dust_chng | Порог разности средней яркости текущего блока 8x8 и соответствующего блока предыдущего кадра |
ivs od cfg
| Параметр | Описание |
|---|---|
| ID | ID канала интеллектуального видеонаблюдения |
| thres_complex | Порог сложности при обнаружении перекрытия |
| thres_complex_cnt | Порог счётчика сложности при обнаружении перекрытия |
| thres_sad | Порог SAD |
12. VRGN
VRGN управляет RGN медиасреды. Текущая информация о RGN доступна следующей командой:
cat /dev/mpi/vrgn
| Поле | Описание | Примечания |
|---|---|---|
| module | Информация о модуле | Имя модуля |
| version | Информация о версии | Имя репозитория: commit: номер версии |
| build | Информация о сборке | Компилятор - дата компиляции |
| rgn list | Разделитель списка RGN | Далее приведена информация о RGN |
| handle | Дескриптор RGN | Идентифицирует RGN |
| type | Тип RGN | Тип RGN: OVERLAY, COVER, MOSAIC |
| width | Ширина области RGN | |
| heigth (EN: height) | Высота области RGN | |
| format | Формат области RGN | Действует для OVERLAY и COVER; -1 означает, что входной тип не поддерживается |
| buf_id | ID текущего буфера RGN | Действует для OVERLAY; для остальных типов -1 |
| refcnt | Счётчик использования буфера MPI | |
| channel_num | Число подключений RGN | Число каналов (модулей) RGN ATTACH |
| node_rgn list | Разделитель списка node_rgn | Далее приведена информация о NODE_RGN |
| id | Уникальный ID узла | Идентифицирует узел MPI |
| name | Имя устройства, создавшего узел | Несколько узлов могут иметь одинаковое имя |
| h | Дескриптор RGN | Идентифицирует RGN, аналог HANDLE |
| x | Координата x области RGN | Смещение X начальной позиции RGN |
| y | Координата y области RGN | Смещение Y начальной позиции RGN |
| h x y | Положение области RGN | Группа значений h, x и y, задающих положение RGN; всего 8 групп |
13. VRGA
VRGA управляет драйвером RGA в Rockit. Для просмотра текущего состояния RGA NODE выполните:
cat /dev/mpi/vrga
| Поле | Описание | Примечания |
|---|---|---|
| id | Глобально уникальный ID | Идентифицирует узел MPI, эквивалент HANDLE |
| name | Имя устройства, создавшего NODE | Несколько NODE могут иметь одинаковое имя |
| ctx | Управляющий дескриптор узла rga | Виртуальный адрес; можно сопоставить с LOG для поиска проблемного NODE |
| nid | Пользовательский ID Rockit | Пользовательский ID для управления NODE в Rockit |
| ref | Счётчик использования | +1 перед использованием, -1 после; при 0 освобождение |
| bypass | Флаг обхода | 1 означает, что узел RGA передаёт данные напрямую без обработки |
| csnt | Счётчик задания параметров CROP | Позиция входа в очередь параметров CROP |
| cgnt | Счётчик получения параметров CROP | Позиция выхода из очереди параметров CROP |
| ssnt | Счётчик задания параметров SCALL | Позиция входа в очередь параметров SCALL |
| sgnt | Счётчик получения параметров SCALL | Позиция выхода из очереди параметров SCALL |
| type | Тип задачи RGA | 0 - обычный; 1 - OSD |
| swidth | Выходная ширина | Фактическая ширина выходного изображения |
| sheight | Выходная высота | Фактическая высота выходного изображения |
| svwidth | Ширина выходного изображения в памяти | Ширина, занимаемая выходным изображением в памяти, для выравнивания |
| svheight | Высота выходного изображения в памяти | Высота, занимаемая выходным изображением в памяти, для выравнивания |
| sfmt | Формат выходного изображения | Подробнее: rk_comm_video.h |
| cenalbe | Флаг включения обрезки | 1 означает обрезку входного изображения |
| coordinate | Параметры обрезки в процентах | 1 - проценты; 0 - абсолютные координаты |
| cxpos | Координата X области обрезки | При coordinate = 1 - проценты; при coordinate = 0 - абсолютные координаты |
| cypos | Координата Y области обрезки | При coordinate = 1 - проценты; при coordinate = 0 - абсолютные координаты |
| cwidth | Ширина области обрезки | При coordinate = 1 - проценты; при coordinate = 0 - абсолютная ширина |
| cheight | Высота области обрезки | При coordinate = 1 - проценты; при coordinate = 0 - абсолютная высота |
| job | Задания текущего NODE | Перечень ID необработанных заданий текущего NODE |
Расхождения источников и проверка
- Оба источника имеют версию V2.28.0 и дату 2025-04-27. В китайском дополнительно есть
memtypeиnkid; они включены во все языки. Число страниц само по себе не определяет актуальность. - VSYS
table: в китайском размер равен частоте кадров, n сохраняет n кадров, 0 отбрасывает; в английском 0 сохраняет, 1 отбрасывает. В основном тексте используется китайская трактовка; противоречие требует проверки по SDK. isp_max_hопределён как высота входа, но оба источника говорят о «ширине после обрезки». Проверьте реализацию SDK и исходную диагностическую строку; размерность не исправлена молча.- В списке модулей ядра RV1126B сохранено
VALLC; сохранены такжеcenalbe,SCALLиRK_MPI_SYS_RelasePhyMemory. Китайскиеlast_runing,runing,heigthсоответствуют английскимlast_running,running,height; обе формы указаны у полей. - В обеих таблицах API
qp_dlt_row_iсоответствуетu32RowQpDelta, аqp_dlt_row-u32RowIQpDelta. Возможное противоречие смыслу I/P не исправлено перестановкой полей. - Китайские заголовки различают
mpp_packet poolиmpp_buffer pool; английский дважды используетmpp_buffer pool. Здесь приняты китайские заголовки, сохранены все три таблицы: packet, buffer и frame. - Английский текст добавляет для VRGN
h x y«всего 8 групп»; это сохранено во всех языках. Дляwcntкитайский указывает число кадров, английский - частоту; принято число кадров. Дляmin_sizeпринято китайское «минимальное свободное место для одного кадра», а не английское «последнее». - Английское Warp трактуется по китайскому как wrapping; идентификаторы не меняются. Сохранены уточнения о макроблоках ROI, компенсации среднего при SAD, крайне низком битрейте статичной сцены, устранении шлейфов и дрожания/ползания шума.
