Rockchip · AI & Linux Hub

Экран и звук

Руководство по библиотеке Rockchip Rockit Runtime

Руководство по библиотеке Rockchip Rockit Runtime - V2.28.0: RRT, VALLOC, VLOG, VSYS, VENC, IVS, VRGN, VRGA

· ArmSoM Editorial · Rockchip source documentation · 32 мин чтения

Основа - предоставленные китайский и английский документы 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. Её структура показана ниже.

Руководство по библиотеке Rockchip Rockit Runtime - 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, крайне низком битрейте статичной сцены, устранении шлейфов и дрожания/ползания шума.

Другие статьи по теме → · Учебные маршруты →