RK3588上运行MPP
在github拉取MPP源码编译。运行测试例子的时候没有人格的信息打印出来,本人在RV1126上运行是有信息打印的。请问有人遇到过这种情况嘛?
我使用的是ROC-RK3588S-PC。但是编码视频(mpi_enc_test)还是可以的,可以正常播放。就是没有相关信息打印 现在打印使用了 os_syslog 接口, 输出在 /var/log/syslog 我也发现了这个问题:
1、用官网上面 的固件默认目录 /usr/lib/aarch64-linux-gnu/ 库目录;
或者 apt install librockchip-mpp-dev 上面安装后更新的都能有信息打印 ;
2、而用源代码编译出来的库,信息打印全无;
已经找到解决办法了,
在用TortoiseGit 查找syslog 可以发现,在3月19日有变更a225238d0c2282c53c0914073acc8222c6cb287c
在osal/linux/os_log.cpp
中的函数 os_log(const char* tag, const char* msg, va_list list)
vsyslog(LOG_INFO, line, list);下面
中加入
vfprintf(stdout, line, list);
函数 void os_err(const char* tag, const char* msg, va_list list)
vsyslog(LOG_ERR, line, list);
下面加入:
vfprintf(stderr, line, list);
问题得以解决,即在 终端中有打印,也在 /var/log/syslog
有打印;
lozenyin 发表于 2022-5-5 15:32
我使用的是ROC-RK3588S-PC。但是编码视频(mpi_enc_test)还是可以的,可以正常播放。就是没有相关信息打印
你好,你使用的是什么固件,版本多少,我使用的固件无法进行解码 使用固件 ITX-3588J_Ubuntu20.04-Gnome-r211_v0.1.0a_220424.img
最新的 mpp 为 :
https://github.com/HermanChen/mpp.git
在osal/linux/os_log.cpp
中的函数 os_log(const char* tag, const char* msg, va_list list)
vsyslog(LOG_INFO, line, list);下面
中加入
vfprintf(stdout, line, list);
函数 void os_err(const char* tag, const char* msg, va_list list)
vsyslog(LOG_ERR, line, list);
下面加入:
vfprintf(stderr, line, list);
问题得以解决,即在 终端中有打印,也在 /var/log/syslog
有打印。
去掉 -d 0 -x 0
sudo ./mpi_dec_test-i Tennis1080p.h264-o 1080P_n.yuv -w1920 -h 1080 -t 7
或者用
sudo ./mpi_dec_mt_test-i Tennis1080p.h264-o 1080P_n.yuv -w1920 -h 1080 -t 7
我这边用
sudo ./mpi_dec_mt_test-i Tennis1080p.h264-w1920 -h 1080 -t 7 -s 32
只解码不写 yuv文件 ,可以解码 32 路;
Ziven_zhou 发表于 2022-5-11 11:45
已经找到解决办法了,
在用TortoiseGit 查找syslog 可以发现,在3月19日有变更a225238d0c2282c53c0914073a ...
{:4_123:}我遇到了同样的问题,按照你的方法解决了打印问题,大赞! Ziven_zhou 发表于 2022-5-11 11:45
已经找到解决办法了,
在用TortoiseGit 查找syslog 可以发现,在3月19日有变更a225238d0c2282c53c0914073a ...
这样添加编译rk3588可以正常打印,但在ubuntu18.04编译 x86_64会出现段错误,原因是 sysLog 和vfprintf都使用了 args,解决方法是提前对 args进行一次拷贝,参考:https://bbs.csdn.net/topics/390841785
void os_log_info(const char* tag, const char* msg, va_list list)
{
va_list vList;
va_copy(vList, list); //拷贝一份到 vList
char line = {0};
snprintf(line, sizeof(line) - 1, "%s: %s", tag, msg);
vsyslog(LOG_INFO, line, list); //使用 list进行打印
vfprintf(stdout, line, vList); //使用 vlist进行打印
}
页:
[1]