瑞芯微开发笔记 · MPP 篇(一)MPP术语表

图片[1]-瑞芯微开发笔记 · MPP 篇(一)MPP术语表-天煜博客

视频编解码基础

缩写全称含义
AVCAdvanced Video CodingH.264 标准的另一名字。MPP_VIDEO_CodingAVC = 7
AV1AOMedia Video 1开源新一代编码器,MPP_VIDEO_CodingAV1
AVS / AVS2Audio Video Standard中国国标编码器
B 帧Bidirectional双向预测帧,可参考前后两帧。压缩率高、延迟大
CABACContext-Adaptive Binary Arithmetic Coding算术熵编码,比 CAVLC 压缩率高约 10% 但 CPU 重
CAVLCContext-Adaptive Variable-Length Coding变长熵编码,比 CABAC 简单
CBRConstant Bit Rate恒定码率。MPP_ENC_RC_MODE_CBR = 1
CTB / CTUCoding Tree Block / UnitH.265 的”宏块”概念,最大 64×64
DPBDecoded Picture Buffer解码图片缓冲区,存放参考帧
EOSEnd of Stream流结束标志,packet/frame 都有
FBCFrame Buffer Compression帧缓冲压缩(无损压缩中间帧节省 DDR 带宽)
FIXQPFixed QP固定 QP 模式,码率不可控但质量可控
GOPGroup of Pictures关键帧间隔。一个 GOP = 一个 IDR + 后续 P/B 帧
HEVCHigh Efficiency Video CodingH.265 标准的另一名字。MPP_VIDEO_CodingHEVC = 16777220
I 帧Intra关键帧,独立解码
IDRInstantaneous Decoder Refresh一种特殊 I 帧,刷新 DPB,从此后的帧不能参考它之前的
JPEG / MJPEGJoint Photographic Experts Group / Motion JPEGJPEG 静图 / 一帧一图的视频。MPP_VIDEO_CodingMJPEG = 11
LTRLong-Term Reference长期参考帧,跨 GOP 保留作参考
NALNetwork Abstraction LayerH.264/H.265 码流的最小单元,每段以 00 00 00 01 起始
P 帧Predictive单向预测帧,参考前面的帧
POCPicture Order CountH.264/H.265 中标识帧显示顺序的编号
PPSPicture Parameter Set图片参数集,每帧引用一个,含 QP 等图片级配置
PSNRPeak Signal-to-Noise Ratio峰值信噪比,dB,越高越像原图(>40 几乎无损,30 一般,<25 明显失真)
QPQuantization Parameter量化参数。H.264/H.265 范围 0-51;VP8 范围 0-127
RCRate Control码率控制
ROIRegion of Interest兴趣区域,可对该区域强制不同 QP
SAOSample Adaptive OffsetH.265 后处理滤波
SEISupplemental Enhancement Information补充增强信息,可装用户数据(H.264/H.265)
slice一帧的一部分。一帧可分多 slice(独立解码)
SPSSequence Parameter Set序列参数集,含分辨率、profile/level 等
SSIMStructural Similarity结构相似度,0-1,>0.95 几乎无损
SVCScalable Video Coding分层编码(时间/空间/质量)
TMVPTemporal Motion Vector PredictionH.265 时域运动矢量预测
VBRVariable Bit Rate可变码率。MPP_ENC_RC_MODE_VBR = 0
VP8 / VP9Google 编码器MPP_VIDEO_CodingVP8 = 10, VP9 = 12

YUV / RGB 格式

简称含义
NV12YUV420 SemiPlanar,Y + 交错 UV。最常用
NV21YUV420 SemiPlanar,Y + 交错 VU
I420 / YV12YUV420 Planar,Y/U/V 三平面
YUYV / YUY2YUV422 packed
UYVYYUV422 packed
YUV400仅 Y(灰度)
AFBCARM Frame Buffer Compression
stride缓冲区每行实际字节数(含对齐 padding),≥ width
slice height / ver_stride缓冲区行数,≥ height

MPP 数据结构

类型含义
MppCtx编/解码器实例的不透明句柄
MppApi函数指针表(mpi->...
MppPacket压缩域字节包
MppFrame像素域帧
MppBufferDMA 友好内存块
MppBufferGroupbuffer 池
MppMeta挂在 packet/frame 上的键值对
MppTaskadvanced 模式的工作单元
MppDecCfg解码配置对象
MppEncCfg编码配置对象
MppParamvoid *,control 接口的通用参数
MppCodingType编码类型枚举
MppFrameFormat像素格式枚举
MppCtxTypeMPP_CTX_DEC / MPP_CTX_ENC
MppPollType阻塞模式枚举(BLOCK / NON_BLOCK / 毫秒数)
MPP_RETMPP 错误码枚举
MPP_OK0
MPP_NOK-1
MPP_ERR_TIMEOUT-22,poll/get 队列空时返回

MPP 控制码(control 接口)

code用途
MPP_DEC_GET_CFG取解码默认配置
MPP_DEC_SET_CFG应用解码配置
MPP_DEC_SET_FRAME_INFO告知解码器目标输出格式(FBC/Tile)
MPP_DEC_SET_EXT_BUF_GROUP给解码器外部 buffer 池
MPP_DEC_SET_INFO_CHANGE_READYinfo_change 后告诉解码器”准备好了”
MPP_DEC_SET_OUTPUT_FORMAT设解码输出 pixel format(仅 JPEG)
MPP_DEC_SET_PARSER_SPLIT_MODE老式 split_parse 接口(新代码用 cfg)
MPP_DEC_SET_PARSER_FAST_MODE快速解码(牺牲精度)
MPP_ENC_GET_CFG取编码默认配置
MPP_ENC_SET_CFG应用编码配置
MPP_ENC_GET_HDR_SYNC取 SPS/PPS 头
MPP_ENC_SET_OSD_PLT_CFG设 OSD 调色板
MPP_ENC_SET_SEI_CFG设 SEI 模式
MPP_ENC_SET_JPEG_ROI_CFG设 JPEG ROI(kmpp)
MPP_SET_INPUT_TIMEOUT设 put 阻塞模式
MPP_SET_OUTPUT_TIMEOUT设 get 阻塞模式
MPP_SET_DISABLE_THREAD禁用 MPP 内部线程(mpi_dec_nt_test 用)
MPP_SET_VENC_INIT_KCFGKMPP 编码初始化

meta KEY

key含义
KEY_INPUT_PACKET输入端 packet
KEY_OUTPUT_FRAME输出端 frame(解码 advanced)
KEY_INPUT_FRAME输入端 frame(编码)
KEY_OUTPUT_PACKET输出端 packet(编码)
KEY_TEMPORAL_IDSVC 时域层 ID
KEY_LONG_REF_IDXLTR 索引
KEY_ENC_AVERAGE_QP编码后平均 QP
KEY_ENC_BPS_RT实时码率
KEY_ENC_SSE残差平方和(用于算 PSNR)
KEY_ENC_USE_LTR是否用了 LTR
KEY_OSD_DATAOSD 数据(老接口)
KEY_OSD_DATA3OSD 数据(RV1126B 新接口)
KEY_MOTION_INFO编码副产物:运动信息
KEY_USER_DATASEI 用户数据
KEY_USER_DATAS多组 SEI 用户数据
KEY_JPEG_ROI_DATAJPEG ROI(meta 接口)

测试程序文件名

缩写全称
mpiMPP Interface(rk_mpi.h API)
decdecoder
encencoder
mtmulti-thread(输入输出线程,1 个实例)
ntno-thread(关闭 MPP 内部线程,调用者一步走 decode()
multimulti-instance(多路并发,N 个实例)
rcrate control
rc2RC 测试 v2(v1 已废弃)
sltself-test(CRC 自检)
vpu_api老 libvpu API(向后兼容)

命令行参数(常用)

参数含义
-i <file>输入文件
-o <file>输出文件
-w <int>
-h <int>
-hstride <int>输入行 stride
-vstride <int>输入纵 stride
-t <int>编码类型
-t_src <int>源解码类型(mpi_rc2_test)
-f <int>像素格式
-rc <int>RC 模式
-bps <int>目标码率
-fps <int>帧率
-gop <int>GOP 长度
-qp <int>FIXQP 模式的 QP
-n <int>帧数限制
-loop <int>文件循环次数
-nthreads <int>实例数
-bm <int>buffer mode(0/1/2)
-cfg <json>加载 JSON 配置
-osd启用 OSD 测试
-roi启用 ROI 测试
-psnr <0/1>mpi_rc2_test 算 PSNR
-ssim <0/1>mpi_rc2_test 算 SSIM
-slt <file>输出 CRC(mpi_dec_test)
-quiet安静模式
-help帮助

代码风格缩写

含义
RK_S8 / S16 / S32 / S64int8/16/32/64
RK_U8 / U16 / U32 / U64uint8/16/32/64
RK_FLOATfloat
MPP_ALIGN(x, n)把 x 向上对齐到 n 的倍数
MPP_FREE(p)安全 free(设 NULL)
mpp_calloc(T, n)类型安全 calloc
mpp_realloc(p, T, n)类型安全 realloc
mpp_log(...)标准日志(带 MODULE_TAG 前缀)
mpp_err(...)错误日志
mpp_log_q(quiet, ...)quiet 模式静默
mpp_assert(cond)断言
MPP_SHAREDcmake 变量,shared lib target

芯片型号常量

芯片
ROCKCHIP_SOC_RV1126BRV1126B
ROCKCHIP_SOC_RK3588RK3588
mpp_get_soc_type()运行时查

“兼容标志”含义(mpp_compat_show 输出)

ID含义
0increase decoder fbc buffer size(FBC 解码 buffer 大小调整)
1support encoder async input mode(编码器异步输入)
其它osal/mpp_compat.c 中的字符串表

环境变量

作用
MPP_VERBOSE增加日志详细度
MPP_LOG_LEVEL日志级别(debug/info/…)
MPP_SYSLOG_NAME走 syslog 时的 tag
MPP_BUF_DBGbuffer 调试日志
mpp_show_historympp_info_test 打历史 commit
dbrh_en / dbrh_smpi_rc2_test debreath
fbc_dec_enmpi_rc2_test 解码 FBC
fast_enmpi_rc2_test 解码 fast mode
LD_LIBRARY_PATH库搜索路径(标准 Linux)
© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容