Firefly开源社区

打印 上一主题 下一主题

[Linux] rk3399 ubuntu下硬解码代码分享和问题求助

132

积分

0

威望

0

贡献

技术小白

积分
132

rk3399 ubuntu下硬解码代码分享和问题求助

发表于 2018-4-10 17:13:42      浏览:23414 | 回复:16        打印     [复制链接] 楼主
首先说一下我的环境:
固件是Firefly-RK3399_xubuntu1604_201711301130.img
然后在github上下载rockchip_mpp,并编译安装到/usr。
例子代码在https://github.com/darkise/mpp_rtsp_player,目前进度是程序可运行,硬解码没有问题,但是显示却出现大问题,显示过程的FPS一直都是25以下,而解码的FPS是超过25——我的测试的视频源的FPS就是25,因此我只能丢帧,初步测试4万帧丢帧就达到6000帧。求帮忙!
另:如果我不使用多线程显示过程的FPS会更低,甚至15都不到。
回复

使用道具 举报

132

积分

0

威望

0

贡献

技术小白

积分
132
发表于 2018-4-11 11:59:35      沙发
一只大犀牛 发表于 2018-4-11 11:03
rockchip_mpp编译不需要什么特殊处理吧?
mpp_rtsp_player里makefile的-I../../mpp_rtsp,哪里来的?
还 ...

首先谢谢你的回复。-I../../mpp_rtsp其实就是代码当前路径,之前编译是在该目录下建立了一个build目录来编译的,后来删除了直接在代码目录下编译,忘了改Makefile,你吧-I../../mpp_rtsp改为-I.就好了
X11/Xlib.h是X11开发库带的,请参考
  1. A quick search using...

  2. apt search Xlib.h
  3. Turns up the package libx11-dev but you shouldn't need this for pure OpenGL programming. What tutorial are you using?

  4. You can add Xlib.h to your system by running the following...

  5. sudo apt install libx11-dev
复制代码
回复

使用道具 举报

132

积分

0

威望

0

贡献

技术小白

积分
132
发表于 2018-4-11 12:04:30      板凳
一只大犀牛 发表于 2018-4-11 11:03
rockchip_mpp编译不需要什么特殊处理吧?
mpp_rtsp_player里makefile的-I../../mpp_rtsp,哪里来的?
还 ...

另外:我安装rockchip_mpp前,安装了libdrm-rockchip的。这个也是在github上可以找到。
编译安装时我只额外设定了安装路径(其默认路径是/usr/local,我改为/usr),别的都是使用默认值。
回复

使用道具 举报

132

积分

0

威望

0

贡献

技术小白

积分
132
发表于 2018-4-11 17:45:38      地板
一只大犀牛 发表于 2018-4-11 15:31
多谢解答。在麻烦问一下,我之前的mpp的so是装在/usr/local上的,在Makefile加了路径-L/usr/local/lib也 ...

RTSP协议是我自己实现的,都在代码里,还没有加入认证功能,等有空了我会加的,至少这两个月内都不可能有空了。
关于目录问题,应该是要设置LD_LIBRARY_PATH的环境变量吧,就是因为各种麻烦,我才把它装到/usr/lib下的。
回复

使用道具 举报

132

积分

0

威望

0

贡献

技术小白

积分
132
发表于 2018-4-11 17:48:39      5#
薛定谔的猫 发表于 2018-4-11 14:04
gcc -c -pipe -O2 -Wall -W -fPIC -DDEBUG=1 -I. -I/usr/lib/aarch64-linux-gnu/qt5/mkspecs/linux-g++ -o  ...

需要安装rockchip_mpp库,这个是rockchip提供的,在github上可以下载源代码,建议在安装mpp库前,先安装libdrm-rockchip,这个也是rockchip提供的在github有源代码。
mpp是rockchip包装的解码库接口,drm是一个内存管理库。
回复

使用道具 举报

132

积分

0

威望

0

贡献

技术小白

积分
132
发表于 2018-4-13 09:29:19      6#
一只大犀牛 发表于 2018-4-12 23:18
我现在没装drm,可以使用test下面的demo,mpi_enc_test和mpi_dec_test都没问题,但是vpu那个就不行,提示 ...

vpu我也找了很久,只找到了32位的so,没有源代码,如果你想用就得给3399编译一个32位的环境了,个人不建议。
显示应该不是X11的问题,我加了一些测试信息,使用opengl刷新一个帧实际上耗时从来没有超过30ms的,一般都是25ms以下,安装这个速度应该是可以达到40fps的,更奇怪的是我在显示的主线程中加了一下打印输出fps倒是变好了,所以个人认为应该是系统线程调度问题。
回复

使用道具 举报

132

积分

0

威望

0

贡献

技术小白

积分
132
发表于 2018-4-17 15:53:52      7#
一只大犀牛 发表于 2018-4-13 14:30
我用的这个例子https://github.com/WainDing/mpp_linux_cpp
解码显示1080P可以达到47帧:decode frames  ...

感谢分享!
rockchip_mpp编译出来的那个rockchip_vpu实际上是使用dlopen的主,我提到的32位的库就是dlopen的对象,那个没用。
我把代码改了,使用pthread_cond_wait/pthread_cond_signal就可以了,就是线程调度问题,单纯使用while(1)消耗太大反而得不到及时响应。修改后代码还没来得及整理上传,只能等周末了,到时随便再看看你提到的那份代码。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表