ArmSoM-RK3588编解码之mpp解码demo解析:mpi_dec_test
1. 简介
-
[RK3588从入门到精通] 专栏总目录
-
mpi_dec_test 是rockchip官方解码 demo
-
本篇文章进行mpi_dec_test 的代码解析,解码流程解析
2. 环境介绍
-
硬件环境:
ArmSoM-W3 RK3588开发板 -
软件版本:
OS:ArmSoM-W3 Debian11
3. mpp解码流程解析

- mpp_create :获取 MppCtx 实例以及 MppApi 结构体
- mpp_init: 初始化MppCtx 的编解码类型与格式
- mpi->control:通过相应的命令来配置解码参数
- decode_put_packet:输入码流:编码数据 MppPacke,例如264、265数据
- decode_get_frame: 获取解码的数据存放到MppFrame,例如YUV、RGB数据
- mpi->reset:使解码器恢复为正常初始化后的状态。
- mpp_destroy:释放申请的内存空间,做销毁善后工作
4. 重要函数解析
mpp_init函数:初始化MppCtx 的编解码类型与格式
mpp_init函数原型:
MPP_RET mpp_init(MppCtx ctx, MppCtxType type, MppCodingType coding)
mpp_init函数调用实例:
ret = mpp_init(ctx, MPP_CTX_DEC, MppCodingType::MPP_VIDEO_CodingAVC);
if (ret){mpp_err("mpp_init failed ret %d\n", ret);goto MPP_TEST_OUT;}
mpp_init函数参数解析:
-
MppCtxType 参数:初始化编码还是解码
MPP_CTX_DEC : 解码 MPP_CTX_ENC : 编码 -
MppCodingType 参数:编解码的格式
MPP_VIDEO_CodingAVC : H.264 MPP_VIDEO_CodingHEVC: H.265 MPP_VIDEO_CodingVP8 : VP8 MPP_VIDEO_CodingVP9 : VP9 MPP_VIDEO_CodingMJPEG : MJPEG
5. mpi_dec_test 流程解析
mpi_dec_test 解码命令举例:
sudo mpi_dec_test -i /oem/200frames_count.h264 -t 7 -n 200 -o /oem/decode.yuv -w 1920 -h 1080
mpi_dec_test 流程解析:
main( ) ---> dec_decode( ) ---> thread_decode( ) ---> dec_simple( ) ---> mpp_destroy( )
- main函数根据传进来的参数(参数char **argv 对应命令中的 -i /oem/200frames_count.h264 -t 7 -n 200 -o /oem/decode.yuv -w 1920 -h 1080)对参数进行解析保存到 MpiDecTestCmd * cmd 结构体中
- dec_decode(cmd) 函数是封装好的解码函数,传入 MpiDecTestCmd * cmd 结构体即可完成解码
- dec_decode 函数执行了一些MPP的初始化操作:mpp_create() mpp_init() ,mpp_dec_cfg_init() , mpi->control。初始化之后创建解码线程: thread_decode 进行解码。
- 解码线程: thread_decode 线程根据 cmd->simple 变量判断是使用 dec_simple 解码还是 dec_advanced 解码
- 解码完最后一帧之后执行 pthread_join() 函数等待解码线程: thread_decode 结束后做线程释放工作
- 线程释放完毕之后执行reset复位操作:mpi->reset(ctx)把解码器恢复为正常初始化后的状态。
- 解码器复位之后通过mpp_destroy()释放申请的内存空间,进行一些销毁操作防止内存泄漏。
6. mpi_dec_test使用实例
终端执行解码命令:
sudo mpi_dec_test -i /oem/200frames_count.h264 -t 7 -n 200 -o /oem/decode.yuv -w 1920 -h 1080
- 其中,-t 7 表示是输入 H.264 码流,-i 表示输入文件,-n 200 表示解码 200 帧 -w 图像宽度 -h 图像高度
解码输出如下:
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_utils: input file /oem/200frames_count.h264 size 87402
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_utils: cmd parse result:
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_utils: input file name: /oem/200frames_count.h264
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_utils: output file name: /oem/decode.yuv
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_utils: width : 1920
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_utils: height : 1080
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_utils: type : 7
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_utils: max frames : 200
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: mpi_dec_test start
Oct 18 12:26:06 linaro-alip mpp[2150]: mpp_info: mpp version: 8a54ab8d author: xueman.ruan 2023-06-16 [h264d]: fix the derivation of mbaff.
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 mpi_dec_test decoder test start w 1920 h 1080 type 7
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode_get_frame get info changed found
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decoder require buffer w:h [640:480] stride [640:480] buf_size 614400
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 0
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 1
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 2
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 3
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 4
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 5
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 6
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 7
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 8
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 9
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 10
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 11
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 12
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 13
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 14
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 15
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 16
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 17
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 18
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 19
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 20
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 21
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 22
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 23
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 24
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 25
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 26
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 27
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 28
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 29
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 30
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 31
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 32
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 33
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 34
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 35
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 36
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 37
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 38
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 39
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 40
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 41
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 42
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 43
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 44
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 45
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 46
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 47
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 48
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 49
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 50
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 51
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 52
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 53
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 54
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 55
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 56
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 57
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 58
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 59
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 60
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 61
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 62
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 63
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 64
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 65
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 66
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 67
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 68
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 69
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 70
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 71
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 72
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 73
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 74
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 75
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 76
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 77
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 78
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 79
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 80
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 81
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 82
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 83
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 84
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 85
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 86
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 87
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 88
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 89
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 90
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 91
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 92
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 93
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 94
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 95
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 96
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 97
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 98
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 99
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 100
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 101
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 102
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 103
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 104
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 105
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 106
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 107
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 108
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 109
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 110
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 111
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 112
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 113
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 114
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 115
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 116
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 117
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 118
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 119
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 120
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 121
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 122
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 123
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 124
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 125
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 126
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 127
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 128
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 129
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 130
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 131
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 132
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 133
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 134
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 135
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 136
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 137
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 138
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 139
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 140
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 141
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 142
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 143
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 144
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 145
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 146
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 147
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 148
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 149
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 150
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 151
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 152
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 153
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 154
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 155
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 156
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 157
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 158
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 159
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 160
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 161
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 162
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 163
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 164
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 165
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 166
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 167
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 168
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 169
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 170
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 171
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 172
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 173
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 174
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 175
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 176
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 177
Oct 18 12:26:06 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 178
Oct 18 12:26:07 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 179
Oct 18 12:26:07 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 180
Oct 18 12:26:07 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 181
Oct 18 12:26:07 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 182
Oct 18 12:26:07 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 183
Oct 18 12:26:07 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 184
Oct 18 12:26:07 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 185
Oct 18 12:26:07 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 186
Oct 18 12:26:07 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 187
Oct 18 12:26:07 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 188
Oct 18 12:26:07 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 189
Oct 18 12:26:07 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 190
Oct 18 12:26:07 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 191
Oct 18 12:26:07 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 192
Oct 18 12:26:07 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 193
Oct 18 12:26:07 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 194
Oct 18 12:26:07 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 195
Oct 18 12:26:07 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 loop again
Oct 18 12:26:07 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 196
Oct 18 12:26:07 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 197
Oct 18 12:26:07 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 198
Oct 18 12:26:07 linaro-alip mpp[2150]: mpi_dec_test: 0x55aceed120 decode get frame 199
Oct 18 12:26:07 linaro-alip mpp[2150]: mpi_dec_test: decode 200 frames time 328 ms delay 2 ms fps 609.30
Oct 18 12:26:07 linaro-alip mpp[2150]: mpi_dec_test: test success max memory 5.86 MB相关文章:
ArmSoM-RK3588编解码之mpp解码demo解析:mpi_dec_test
1. 简介 [RK3588从入门到精通] 专栏总目录 mpi_dec_test 是rockchip官方解码 demo 本篇文章进行mpi_dec_test 的代码解析,解码流程解析 2. 环境介绍 硬件环境: ArmSoM-W3 RK3588开发板 软件版本: OS:ArmSoM-W3 Debian11 3.…...
v-for列表渲染
一、v-for迭代数组 <li v-for"(e,index) in emp" :key"e.id">编号{{index1}} 名字{{e.name}} 年龄{{e.age}} </li> e 是循环数组中的每个元素的别名index 是当前循环的下表,从0开始:key 的作用: 是为了给 Vue 一个提示…...
【引流技术】最新头条全自动引流脚本,解放双手自动引流【引流脚本+技术教程】
软件功能: 评论点赞 适用于自己做头条号,去别人评论区截留,点赞,别人会收到提醒,达到回访效果 文章/视频评论 可以自己发布引流文章或视频,引导进你主页或者私信你,达到引流效果 设备需求: 安卓手机8.1及以上系统 文章分享者:Linxiaoyu…...
智能PDU的“智能”体现在哪些方面?
智能PDU是一种用于管理和监控数据中心或其他设施中的电源分配设备,通过引入以太网络、语音服务等新颖的通讯手段,增加了传统机柜PDU插座所不能提供的智能管理控制模块和控制芯片,同时兼具电源分配和管理功能。智能PDU是当今现代化IDC数据中心…...
Flutter和SwiftUI比较
0.语言 SwiftUI 毫无疑问是Swift语言编写, 在2019年正式推出,目前最新是Swift 5.9 (2023年9月),由Apple公司维护和发行; 该编程语言发明人已离职Apple。 语言官网:https://developer.apple.com/swift/ 最好用Xcode编…...
使用ngrok内网穿透后,调用相关接口报ERR_NGROK_6024 异常
header增加:ngrok-skip-browser-warning:69420即可。如下图:...
举个栗子!Alteryx 技巧(6):从 API 中提取数据
你听说过从 API 中提取数据吗?API 是指应用编程接口,是计算机之间或计算机程序之间的连接,它是一种软件接口,让不同的软件进行信息共享。对于很多数据分析师来说,他们常常需要从 API 中提取数据,那么如何快…...
算法、语言混编、分布式锁与分布式ID、IO模型
一、算法初识 数据结构和算法是程序的基石。我们使用的所有数据类型就是一种数据结构(数据的组织形式),写的程序逻辑就是算法。 算法是指用来操作数据、解决程序问题的一组方法。 对于同一个问题,使用不同的算法,也…...
代码随想录 Day26 贪心 01 全集 LeetCode455 分发饼干 LeetCodeT346摆动序列 LeetCdoe T53 最大子数组和
前言:贪心无套路 本质: 局部最优去推导全局最优 两个极端 贪心算法的难度一般要么特别简单,要么特别困难,所以我们只能多见识多做题,记住无需数学证明,因为两道贪心基本上毫无关系,我们只需要去思考局部最优即可 贪心的小例子 比如有一堆钞票,你可以拿走十张&#x…...
【前端vue面试】TypeScript
目录 快速入门0、TypeScript简介1、TypeScript 开发环境搭建2、基本类型3、编译选项4、webpack5、Babel面向对象1、类(class)2、面向对象的特点3、接口(Interface)4、泛型(Generic)快速入门 0、TypeScript简介 TypeScript是JavaScript的超集。它对JS进行了扩展,向JS中引…...
vue-next-admin框架的认识
最近利用这个框架二开了一个后台管理系统,这里简单介绍一下,后续会进行框架的修改等文章 1:介绍 Vue-next-admin是一个基于Vue3和Element-Plus的后台管理系统框架。它提供了一套完整的、易于扩展的后台管理界面解决方案,可用于快…...
【2024秋招】2023-9-14 最右线下后端开发二面
1 OS 1.1 讲讲什么是虚拟内存,怎么实现的 虚拟内存是一种存储器管理能力,它使得一个应用程序似乎有更多的物理内存(RAM)可用,而实际上,系统使用了一部分硬盘空间来模拟额外的 RAM。通过使用虚拟内存&…...
LeetCode 2678. 老人的数目
【LetMeFly】2678.老人的数目 力扣题目链接:https://leetcode.cn/problems/number-of-senior-citizens/ 给你一个下标从 0 开始的字符串 details 。details 中每个元素都是一位乘客的信息,信息用长度为 15 的字符串表示,表示方式如下&#…...
java--三元运算符、运算符的优先级
1.三元运算符介绍 1.格式:条件表达式?值1:值2; 2.执行流程:首先计算关系表达式的值,如果值为true,返回值1,如果为false,返回值2 2.运算符优先级 1.在表达式中…...
在推荐系统中,BPRloss、Embloss、CrossEntropyloss是怎么计算的,代表的意义是什么
一、BPRloss(Bayesian Personalized Ranking loss)是一种用于推荐系统中的损失函数,用于衡量预测的排序与真实的用户行为排序之间的差异。BPRloss的计算过程如下: 输入:BPRloss的输入包括用户u、物品i和物品jÿ…...
【Python语言速回顾】——异常文件操作
目录 一、异常 1、检测异常try语句 2、抛出异常 3、异常处理流程 二、文件操作 1、打开文件 ①文件模式acess_mode ②文件缓冲区 2、基本的文件方法 ①读和写、关闭文件 ②读取行 ③文件重命名 ④删除文件(系统中已存在的文件) 3、基本的目…...
SAP POorPI RFC接口字段调整后需要的操作-针对SP24及以后的PO系统
文章目录 问题描述解决办法 问题描述 在SAP系统的RFC接口结构中添加了字段,RFC也重新引用到了PO系统,Cache和CommunicationChannel都刷新或启停了,但是新增的字段在调用接口的时候数据进不到SAP系统,SAP系统内的值也出不来。经过…...
【ArcGIS模型构建器】03:多个shp批量按属性分割(多个县区批量提取乡镇)
文章目录 一、数据预览二、模型构建三、保存模型一、数据预览 加载实验数据: 本试验实现将两个县区的数据分割为乡镇数据。 二、模型构建 1. 添加数据文件夹 将县区数据所在的根目录文件夹拖进模型。 2. 添加要素类迭代器 插入→迭代器→要素类。 用连接工具,将数据文件…...
JavaScript中JSON和Bom对象模型
JSON JSON是一种轻量级的数据交换格式 简洁和清晰的层次结构使得JSON成为理想的数据交换语言 易于人们解析和生成,并有效的提升网络传输效率 javaScript一切皆为对象,任何js支持的对象都可以使用JSON来表示 格式: 对象都用[] 数组都用{}…...
Ubuntu下载、安装QGIS软件的方法
本文介绍在Linux操作系统Ubuntu版本中,通过命令行的方式,配置QGIS软件的方法。 在Ubuntu等Linux系统中,可以对空间信息加以可视化的遥感、GIS软件很少,比如ArcGIS下属的ArcMap就没有对应的Linux版本(虽然有ArcGIS Serv…...
第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
