全志 H3 硬件编解码库
一、需求来源
公司硬件产品使用了 NanoPi NEO Core 这样一款基于全志 H3 的核心板。由于项目中涉及到视频直播、视频录制,且要求添加 OSD 文字信息,故需要视频编解码操作。而使用软件解码仅能满足 1280×720@25fps 解码性能,且解码时间随图像复杂度波动,再使用软件编码就跑不动 25 帧了,只能寻求视频硬件编解码解决方案。
二、调试经历
1. 内核移植及 Ubuntu Core 移植
由于友善之臂为 NanoPi NEO Core 提供的为 Linux 4.X 的内核并不支持硬件编解码,遂从原厂 BSP 并参考官方文档及友善之臂提供的硬件资料移植了 3.4.39 内核。
移植原厂 BSP 的根本原因主要是需要内核驱动支持: /dev/ion 、 /dev/cedar_dev
在调试过程中发现提供的编解码库会引起应用程序段错误,最终确认是 gcc 库版本不兼容导致。
重新移植最新 Ubuntu Core 18.04 并使用 gcc 4.9 版本工具链后解决了该问题。
2、编解码库调试
尝试了不同的编解码库,建立了多个工程进行调试(多得自己已经记不清哪些版本 ,一张图足以说明问题)。
三、解决方案
全志 H3 硬件编解码库代码仓库地址:
https://github.com/FREEWING-JP/OrangePi_CedarX
https://github.com/FREEWING-JP/OrangePi_CedarX
实测支持 4×720P@30fps MJPEG 解码(解复用), 1×1080P@60fps MJPEG/H264 解码。
实测支持 1×1080P@30fps MJPEG/H264 编码,多路低分辨率编码未测试验证。
实测解码输出支持指定图像格式: YV12 、 NV21 、全志定义的 MB32_420 格式,并支持图像缩放。
实测编码输入支持图像格式: YUV420P 、 YUYV422 (部分未测试或未记录)。
编码例程请参考项目目录 /cedarx/demo/demoVencoder/EncoderTest.c
解码例程请参考项目目录 /cedarx/demo/demoVdecoder/demoVdecoder.c
同编同解例程请参考项目目录 /cedarx/demo/demoVencVdec/EncoderDecoderTest.c
四、作品秀
早期单摄像头版本画面。
改进后三摄像头合成画面。
欢迎有河道水质监测及排污口扫描需求的客户来我司参观、交流,寻求合作。
有相关嵌入式软件开发项目亦可联系本人外包。
《漆黑林地与着魔时日:民俗恐怖电影史》记录片高清在线免费观看:https://www.jgz518.com/xingkong/22375.html
你的文章让我感受到了不一样的风景,谢谢分享。 https://www.4006400989.com/qyvideo/27037.html
《七省拳王》动作片高清在线免费观看:https://www.jgz518.com/xingkong/93237.html
《端午奇妙游2024》大陆综艺高清在线免费观看:https://www.jgz518.com/xingkong/126310.html
《我独自李食堂》日韩综艺高清在线免费观看:https://www.jgz518.com/xingkong/124683.html
你的文章充满了智慧,让人敬佩。 http://www.55baobei.com/8CHljKKPVU.html
你的文章让我感受到了正能量,非常棒! http://www.55baobei.com/OVhwULdnuw.html
你的文章让我学到了很多技能,非常实用。 https://www.yonboz.com/video/82301.html
《钢铁意志》剧情片高清在线免费观看:https://www.jgz518.com/xingkong/1371.html
你的文章让我感受到了艺术的魅力,谢谢! https://www.4006400989.com/qyvideo/18357.html
《人情纸风船》剧情片高清在线免费观看:https://www.jgz518.com/xingkong/4173.html
《警贼兄弟》动作片高清在线免费观看:https://www.jgz518.com/xingkong/57182.html
文章的确不错啊https://www.cscnn.com/
怎么收藏这篇文章?
请问测试
1×1080P@60fps MJPEG/H264 解码,
1×1080P@30fps MJPEG/H264 编码,
是同时进行的吗?
你好,我尝试在orangepipc上编译,提供的库使用jpeg的demo时libaw_mp3dec.so,libaw_wavdec.so,libaw_oggdec.so出现undefined sysmbol:__aeabi_idiv,想问下external的源码有吗,自己编译下
音视开发同道中人欢迎加qq群 27810038 一起交流
斌哥,求编译后的硬件编码库,自己编译不过啊,依赖都安装不上。
移植后报错如下,出错的地方在库里没有源码,不知道如何下手了
# ./vencoderdemo -i ./robotica_420.yuv -o robotica_420.264 -n 1 0f 0
debug : ionAlloc : *** get __GetIonMemOpsS ***
debug : ionAlloc : begin ion_alloc_open
verbose: ionAlloc : pid: 1938, g_alloc_context = 0x12b6428
error : cedarc : check (gVeParam.ic_version) failed:You should know ic version!
vencoderdemo: ve.c:83: initVELocks: Assertion `0' failed.
Aborted
搞定了吗?
H616能用这个解码库吗?网上找不到相应地库,我尝试编译报了连接库的错误/usr/bin/ld: cannot find -lcdc_vdecoder
你好我用Orangp one H3 的核是用Cedarx 硬件编码 error : ionAlloc : ION_IOC_SUNXI_FLUSH_RANGE failed
内存同步出错,导致画面有绿色段横杆 大神可以指导一下吗? 可以外包合作!!
这个问题解决了吗,整了两天了还是这个问题,一点进展没有,如果解决了能给说一下嘛
兄弟你的硬件编码可以吗?
编码可以了
大师怎么解决的?“error : ionAlloc : ION_IOC_SUNXI_FLUSH_RANGE failed”
这个问题解决了吗?
你解决了吗
邮箱1109772809@qq.com
问下楼主,你测试过1080x1920分辨率下,一帧编码耗时多少?我测试下来光是编码耗时在12ms左右。
你好在吗?
email吧:cheng_wei10613@163.com
become 大牛,我也在弄H3的硬件编码,希望得到大神的指点,有偿!麻烦给下联系方式~十分感谢~
用的ov5640摄像头不支持直接输出yuv420sp或yuv420
你好,become 大神有联系方式吗,希望加一下你!谢谢
摄像头配置成NV12采集,编码配置为YUV420SP即可。
我直接用yuyv模式设置的c分量为零就好了
yuyv422格式编码,输入buffer y和c分量是柔在一起的这个怎么传参呢?
CdcMemOpen 是定义在什么地方呢? 是内核3.4版本独有的吗?我的是全志的3.10 。已经有现成的驱动节点 /dev/ion 和/dev/cedar_dev 。到
还是交叉编译的差异。使用的全志SDK中提供的 arm-buildroot-linux-gnueabihf-gcc 。
希望得到你的帮助。
您好,我遇到一个问题运行jpegdemo 是没有问题的 运行其他例子就会包这个错误error : ionAlloc : ION_IOC_ALLOC error
error : cedarc : pSbmBuf == NULL.
error : cedarc : h264Context->pBSMamager == NULL
error : cedarc : BitStreamManager == NULL.
error : cedarc : BitStreamManager == NULL.
求教下是否可以在H5上做呢
求教下老板,用了硬编码,芯片发热量是否有降低?相对于用x264库来做的话
硬件编解码产热也比较大。我没做过测试,这个应该和编解码的分辨率,图像复杂度都相关的,也不能一概而论。
你好,参考博主帖子,实现了硬件编解码,但是想请问下多图层显示怎么实现的啊,谢谢!
整这个整了好几天,可是一解码就提示ION IOC SUNXI FLUSH RANGE failed,你的出现这个情况了吗?
您好,请教一下,我在运行jpegdemo的时候会提示open /dev/ion failed 和 /dev/cedar_dev failed. 请问是什么原因呢。我用的是nano pi 给的交叉编译工具(arm-linux-gnueabihf),用的libcedarx是gnueabihf_3.10,谢谢
确认一下/dev/ion和/dev/cedar_dev设备节点是否存在,如果不存在则说明使用的内核里面没有开启/集成ion和cedar驱动,可以使用官方的BSP内核。
有偿求源码
测试过V3s、R11、F1c200s、T7,linux下支持硬件编解码。需要联系我,webb_2002@163.com
如下
error : cedarc : format '101' support!
error : cedarc : unsupported format MJPEG
error : cedarc : create video engine fail.
在main函数中 代码 pVideo = CreateVideoDecoder(); 之前加上 AddVDPlugin(); 如下:
AddVDPlugin();
pVideo = CreateVideoDecoder();
实测还是会出现以上错误,请问是怎么回事呢
确认一下你的库(libcdc_vd_xxx.so的那些库)有没有加到系统目录。调用AddVDPlugin();时会看到加载解码库的信息。将库文件拷贝到/usr/local/lib/cedarx目录下面。
在/etc/ld.so.conf.d目录下面创建cedarx.conf文件,里面写入内容为你的库路径,即/usr/local/lib/cedarx。然后再运行ldconfig命令。
你好,我的H3平台,移植后,运行jpegdemo,出现以下错误,帮忙分析下,谢谢!
debug : ionAlloc : *** get __GetIonMemOpsS ***
debug : ionAlloc : begin ion_alloc_open
verbose: ionAlloc : pid: 738, g_alloc_context = 0x25010
debug : cedarc :
>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Cedar Codec