您尚未登录。

楼主 #1 2020-10-06 22:57:31

逸俊晨晖
会员
注册时间: 2018-08-29
已发帖子: 151
积分: 137.5

V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

前置要求:
基于aodzip的cedar:
https://whycan.com/t_4219.html
完成以上操作后 要保证能在/dev目录下找到cedar_dev和ion


基本思路:
aodzip已经搞出了libcedar和openmax
全志的硬编解码库(即libcedarc\library\arm-linux-gnueabihf里面的库)可以操作设备/dev/cedar_dev
libcedar可以操作全志硬编解码库和设备/dev/ion
openmax是对libcedar的操作封装 用于作为ffmpeg和gstreamer的编解码器插件
全志已经对openmax操作libcedar做好了适配 我们可以用支持openmax插件的音视频编解码器进行硬件编解码
aodzip原贴里有人提到过可以使用gstreamer1.0进行验证 本贴就是通过gstreamer1.0的插件openmax调用cedar进行H264解码

注意:openmax可以作为ffmpeg的编码器插件 不能直接作为ffmpeg的解码器插件 有个例外 树莓派可用使用openmax作为ffmpeg的解码器插件 这个是特殊接口


gstremer适配:

buildroot:
因为全志的硬编解码库默认是用glibc编译的 所以要确定buildroot使用的c库是glibc
打开buildroot菜单

make menuconfig

检查
Toolchain->C library (glibc)

添加openmax组件
Target packages->Audio and video applications->bellagio

添加gstreamer组件
Target packages->Audio and video applications->gstreamer 1.x

同目录下

enable command-line parser
enable tracing subsystem
enable gst-debug trace support
enable plugin registry
install gst-launch & gst-inspect

添加gstreamer插件
同目录下

gst1-plugins-base
    videotestsrc
videoconvert
videorate

gst1-plugins-bayer2rgb-neon

gst1-plugins-good 
avi (*.avi video)
    videofilter

gst1-plugins-bad
    autoconvert
    videoparsers
    videosignal
    fbdev            对fb设备操作的支持 选择后才能输出在fb上
    fdk-aac

gst1-libav                    这个是ffmpeg的解码库 可以做个软解对比
gst-omx                这个是openmax的插件接口

选择好后保存编译

make

openmax接口修改:
此时编译好后gstreamer的openmax插件接口是不可以正常使用的
使用全志的openmax插件解码器进行解码时会出现gstreamer协商错误
这是因为全志在openmax插件上新定义了颜色空间 而gstreamer的openmax接口不知道 所以我们要让gstreamer的openmax接口知道
(在文件libcedarc\openmax\include\OMX_IVCommon.h中的OMX_COLOR_FORMATTYPE枚举型下可以看到全志扩展了两个类型)
(在文件libcedarc\openmax\vdec\inc\omx_vdec_config.h的宏定义#define COLOR_FORMAT_DEFAULT           OMX_COLOR_FormatYVU420Planar 可以知道解码默认输出YVU420即YV12)

在gstreamer的openmax接口添加全志的颜色空间定义:

进入目录

cd output/build/gst-omx-1.16.0/

修改文件

vim omx/gstomxvideo.c

在函数gst_omx_video_get_format_from_omx的switch下添加case

case OMX_COLOR_FormatYVU420Planar:
format = GST_VIDEO_FORMAT_YV12;
break;

保存退出
:wq

在当前目录下删掉buildroot对于gst-omx的编译构建标记

rm .stamp_built .stamp_configured .stamp_target_installed .stamp_staging_installed

回到buildroot目录下

cd ../../../

再次编译

make

此时 带gstream和openmax的文件系统构建完成
开机进行硬解码验证

gst-omx注册:

gstreamer使用openmax前要先进行注册

先备份一下注册文件

cp /etc/xdg/gstomx.conf /etc/xdg/gstomx.conf.bck

修改gst-omx插件注册文件

vi /etc/xdg/gstomx.conf

(注意使用vi时不要用方向键 不然可能会乱码 用hjkl键移动光标)

可以发现有两个omxh264dec 对这两个项 添加或者替换以下键值对

core-name=/usr/lib/libOmxCore.so
component-name=OMX.allwinner.video.decoder.avc
hacks=no-component-role;no-disable-outport
(最后这个no-disable-outport一定要加 不然无法解码)
此时注册gst-omx成功

最后一步!!!!!!
以下命令验证
使用gstreamer的插件openmax调用cedar硬解码

gst-launch-1.0 filesrc location=bad_apple.mp4 ! qtdemux ! h264parse ! omxh264dec ! autovideoconvert ! fbdevsink

命令简析
filesrc location=        要解码的文件
qtdemux             解容器 输出视频流
h264parse             流格式转换
omxh264dec         输入视频流 输出帧
autovideoconvert     帧格式转换
fbdevsink             显示在fb

使用ffmpeg的h264解码器进行软解 对比效果

gst-launch-1.0 filesrc location=bad_apple.mp4 ! qtdemux ! avdec_h264 ! autovideoconvert ! fbdevsink

验证平台:
硬件 荔枝派zero
linux 主线内核5.2荔枝派官方的
启动方式 TF卡
h264文件 bad_apple.mp4

其余的硬件编解码器可以用同样的方式使用
f1c100s也可以这样使用

至此 硬解码连接通用音视频解码器的最后一公里已经完成了 主要的多媒体功能已经步入正轨 标志着v3s和f1c100s可以摆脱方案商的奇怪sdk 使用主流的开发框架进行开发

最后感谢前人的努力 感谢aodzip 感谢挖坑网 感谢晕哥

离线

楼主 #2 2020-10-06 23:36:52

逸俊晨晖
会员
注册时间: 2018-08-29
已发帖子: 151
积分: 137.5

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

对比一下硬解和软解的命令
gst-launch-1.0 filesrc location=bad_apple.mp4 ! qtdemux ! h264parse ! omxh264dec ! autovideoconvert ! fbdevsink
gst-launch-1.0 filesrc location=bad_apple.mp4 ! qtdemux ! avdec_h264 ! autovideoconvert ! fbdevsink
硬解比软件多用了个gstreamer元件 h264parse
这是因为avdec_h264的sink(输入)视频流格式可以是avc和byte-stream 而omxh264dec的sink只能是byte-stream
而qtdemux的src(输出)的视频流格式是avc 所以 要用元件 h264parse  将avc转化为byte-stream 给omxh264dec 不然是无法解码的

最近编辑记录 逸俊晨晖 (2020-10-06 23:37:08)

离线

#3 2020-10-06 23:46:07

达克罗德
会员
注册时间: 2018-04-10
已发帖子: 1,057
积分: 1019.5

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

666,太厉害了!
如果要解码后和UI的layer合成叠加思路是怎么样的呢?

离线

楼主 #4 2020-10-06 23:56:31

逸俊晨晖
会员
注册时间: 2018-08-29
已发帖子: 151
积分: 137.5

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

硬解码输出帧格式
omxh264dec解出来的帧为yvu420(YV12)然后经过元件 autovideoconvert 转换为BGR格式给fbdev显示
那能不能直接让解码器直接输出BGR格式呢?全志硬解码api上是支持的
但是openmax修改输出格式还没试验成功 目前发现

1.在文件libcedarc\openmax\vdec\src\omx_vdec_aw_decoder_linux.c中
结构体成员eOutputPixelFormat被直接赋值帧格式常量 可能直接修改这个常量就可以输出其他格式

2.然后在文件libcedarc\openmax\vdec\inc\omx_vdec_config.h
的宏定义#define COLOR_FORMAT_DEFAULT                  OMX_COLOR_FormatYVU420Planar 修改后可以改变默认的omx认为的帧格式

这两处应该是很大关系的

离线

楼主 #5 2020-10-07 00:00:13

逸俊晨晖
会员
注册时间: 2018-08-29
已发帖子: 151
积分: 137.5

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

达克罗德 说:

666,太厉害了!
如果要解码后和UI的layer合成叠加思路是怎么样的呢?

这个之前在荔枝派linux群听人说过 要在坑卓里扒出de 有了de后可以分层输出图像 会出4个fb设备对应不同的层 而且fb设备除了可以显示rgb外 还可以直接显示yuv 还有硬件放缩 透明度 等功能

离线

#6 2020-10-07 01:17:22

aodzip
会员
注册时间: 2019-10-15
已发帖子: 127
积分: 132

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

图层叠加直接用libdrm就可以

离线

#7 2020-10-07 08:07:03

哇酷小二
管理员
注册时间: 2020-04-22
已发帖子: 2,707
积分: 1902

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过


感谢楼主爆炸性分享,帮楼主补发一个解码播放现场的视频。

离线

楼主 #8 2020-10-07 09:35:11

逸俊晨晖
会员
注册时间: 2018-08-29
已发帖子: 151
积分: 137.5

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

aodzip 说:

图层叠加直接用libdrm就可以

f1c100s的drm是可以直接用的
v3s的不能 驱动有问题 要去改

离线

#9 2020-10-07 09:42:58

湘楚浪子
会员
注册时间: 2019-12-22
已发帖子: 40
积分: 39.5

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

逸俊晨晖 说:
aodzip 说:

图层叠加直接用libdrm就可以

f1c100s的drm是可以直接用的
v3s的不能 驱动有问题 要去改

真是太6了,方便发一个固件吗?刚好有吃灰的荔枝派,我也试一试

离线

楼主 #10 2020-10-07 14:11:33

逸俊晨晖
会员
注册时间: 2018-08-29
已发帖子: 151
积分: 137.5

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

镜像和使用方法
gst-omx硬解码镜像.zip

离线

#11 2020-10-07 15:23:22

九重天
会员
注册时间: 2020-10-06
已发帖子: 20
积分: 12.5

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

逸俊晨晖 说:

镜像和使用方法
gst-omx硬解码镜像.zip

亲测可用,感谢楼主,让我慢慢消化再请教。

离线

#12 2020-10-07 21:35:36

god
会员
注册时间: 2019-10-04
已发帖子: 10
积分: 10

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

超级赞,全志的坑被一群牛人都快填满了!

离线

#13 2020-10-09 23:08:38

达克罗德
会员
注册时间: 2018-04-10
已发帖子: 1,057
积分: 1019.5

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

逸俊晨晖 说:
aodzip 说:

图层叠加直接用libdrm就可以

f1c100s的drm是可以直接用的
v3s的不能 驱动有问题 要去改

drm支持硬件叠加?以前玩过简单的drm,还不知道有这个功能

离线

楼主 #14 2020-10-10 10:18:20

逸俊晨晖
会员
注册时间: 2018-08-29
已发帖子: 151
积分: 137.5

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

达克罗德 说:
逸俊晨晖 说:
aodzip 说:

图层叠加直接用libdrm就可以

f1c100s的drm是可以直接用的
v3s的不能 驱动有问题 要去改

drm支持硬件叠加?以前玩过简单的drm,还不知道有这个功能

可以硬件叠加层 还能硬件层混色 直接操作libdrm就行
目前发现f1c100s主线操作libdrm混色时 背景层透明度一定要为满 不然背景层前景层都不显示 也就是说libdrm还是有一定的问题
v3s主线操作libdrm就直接不能显示

离线

#15 2020-10-12 10:00:56

zhuyang220
会员
注册时间: 2020-05-25
已发帖子: 1
积分: 1

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

请教下v3s或者f1c100s上 有没有h264硬件编码的能力?

离线

楼主 #16 2020-10-12 22:36:11

逸俊晨晖
会员
注册时间: 2018-08-29
已发帖子: 151
积分: 137.5

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

zhuyang220 说:

请教下v3s或者f1c100s上 有没有h264硬件编码的能力?

有的

离线

#17 2020-10-14 20:08:34

f1c100_
会员
注册时间: 2020-09-22
已发帖子: 32
积分: 25.5

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

我用f1c100s试了下出现这个错误:
Setting pipeline to PAUSED ...
ERROR: Pipeline doesn't want to pause.
ERROR: from element /GstPipeline:pipeline0/GstOMXH264Dec-omxh264dec:omxh264dec-omxh264dec0: Could not initialize supporting library.
Additional debug info:
gstvideodecoder.c(2530): gst_video_decoder_change_state (): /GstPipeline:pipeline0/GstOMXH264Dec-omxh264dec:omxh264dec-omxh264dec0:
Failed to open decoder
Setting pipeline to NULL ...
Freeing pipeline

我在builroot没有看到gst1-plugins-bayer2rgb-neon这个选项,跟这个有关系吗

离线

#18 2020-10-15 16:38:29

luoguojian6
会员
注册时间: 2019-12-13
已发帖子: 3
积分: 3

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

好东西,F1C100s看规格书只有JPG编码而已

离线

楼主 #19 2020-10-15 23:12:09

逸俊晨晖
会员
注册时间: 2018-08-29
已发帖子: 151
积分: 137.5

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

f1c100_ 说:

我用f1c100s试了下出现这个错误:
Setting pipeline to PAUSED ...
ERROR: Pipeline doesn't want to pause.
ERROR: from element /GstPipeline:pipeline0/GstOMXH264Dec-omxh264dec:omxh264dec-omxh264dec0: Could not initialize supporting library.
Additional debug info:
gstvideodecoder.c(2530): gst_video_decoder_change_state (): /GstPipeline:pipeline0/GstOMXH264Dec-omxh264dec:omxh264dec-omxh264dec0:
Failed to open decoder
Setting pipeline to NULL ...
Freeing pipeline

我在builroot没有看到gst1-plugins-bayer2rgb-neon这个选项,跟这个有关系吗

你这个是gst-omx注册失败的问题 把我发文件里的那个注册文件替换你原来的文件

离线

楼主 #20 2020-10-15 23:14:34

逸俊晨晖
会员
注册时间: 2018-08-29
已发帖子: 151
积分: 137.5

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

luoguojian6 说:

好东西,F1C100s看规格书只有JPG编码而已

你这找资料能力和阅读能力要提升

离线

#21 2020-10-16 02:07:57

f1c100_
会员
注册时间: 2020-09-22
已发帖子: 32
积分: 25.5

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

能调用了,但是报了一堆貌似内存不足的警告,根据aodzip的教程增加了那两个内存,开启swap分区还是不行,估计f1c100s内存太小了吧

离线

#22 2020-10-16 06:28:12

孤星泪
会员
注册时间: 2020-03-18
已发帖子: 232
积分: 228

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

f1c100_ 说:

能调用了,但是报了一堆貌似内存不足的警告,根据aodzip的教程增加了那两个内存,开启swap分区还是不行,估计f1c100s内存太小了吧

那可以用widora的tiny200开发板,64M ddr

离线

#23 2020-10-16 20:05:47

luoguojian6
会员
注册时间: 2019-12-13
已发帖子: 3
积分: 3

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

逸俊晨晖 说:
luoguojian6 说:

好东西,F1C100s看规格书只有JPG编码而已

你这找资料能力和阅读能力要提升

还能编码其它视频格式吗?不就MJPEG和JPEG而已吗?
•H.264 1280x720@30fps decoding
•MPEG1/2/4 1280x720@30fps decoding
•MJPEG 1280x720@30fps encoding
•JPEG encode size up to 8192x8192

离线

#24 2020-10-16 21:36:50

whyabc666
封禁
注册时间: 2019-12-12
已发帖子: 378
积分: 365

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

arm9搞出视频720p编解码的爆破方案,海思Hi2518,3516的替代品!

离线

#25 2020-10-28 11:50:30

tianjjff
会员
注册时间: 2018-12-24
已发帖子: 115
积分: 63

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

逸俊晨晖 说:

前置要求:
基于aodzip的cedar:
.....

楼主,请问下,添加case OMX_COLOR_FormatYVU420Planar:的时候,重新编译提示OMX_COLOR_FormatYVU420Planar没有定义,要怎么操作?

离线

#26 2020-10-28 17:24:59

tianjjff
会员
注册时间: 2018-12-24
已发帖子: 115
积分: 63

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

我直接在sysroot目录里OMX_IVCommon.h增加了这个OMX_COLOR_FormatYVU420Planar,可以编译通过了,不知道这样行不行

离线

楼主 #27 2020-10-29 00:30:41

逸俊晨晖
会员
注册时间: 2018-08-29
已发帖子: 151
积分: 137.5

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

tianjjff 说:

我直接在sysroot目录里OMX_IVCommon.h增加了这个OMX_COLOR_FormatYVU420Planar,可以编译通过了,不知道这样行不行

这个东西是定义在全志提供的omx接口里的 你看看你的buildroot是不是没正确添加libcedar

离线

楼主 #28 2020-10-29 00:36:20

逸俊晨晖
会员
注册时间: 2018-08-29
已发帖子: 151
积分: 137.5

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

不要引用整个一楼 帖子拉长了不好阅读

离线

#29 2020-10-29 09:57:08

tianjjff
会员
注册时间: 2018-12-24
已发帖子: 115
积分: 63

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

逸俊晨晖 说:

不要引用整个一楼 帖子拉长了不好阅读

好的;
那样搞运行一半就卡住了,估计得make clean重头来

离线

#30 2020-11-04 23:22:33

hanzixi_angel
会员
注册时间: 2020-09-21
已发帖子: 51
积分: 42.5

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

tianjjff 说:
逸俊晨晖 说:

前置要求:
基于aodzip的cedar:
.....

楼主,请问下,添加case OMX_COLOR_FormatYVU420Planar:的时候,重新编译提示OMX_COLOR_FormatYVU420Planar没有定义,要怎么操作?


缺少定义的你解决了吗   怎么解决的  我这也遇到了相同的问题  亲赐教吗  谢谢

离线

#31 2020-11-04 23:25:58

hanzixi_angel
会员
注册时间: 2020-09-21
已发帖子: 51
积分: 42.5

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

逸俊晨晖 说:
tianjjff 说:

我直接在sysroot目录里OMX_IVCommon.h增加了这个OMX_COLOR_FormatYVU420Planar,可以编译通过了,不知道这样行不行

这个东西是定义在全志提供的omx接口里的 你看看你的buildroot是不是没正确添加libcedar


大佬  我也遇到同样缺少定义的问题  请问这个定义在哪  望指教  谢谢

离线

#32 2020-11-05 00:34:38

hanzixi_angel
会员
注册时间: 2020-09-21
已发帖子: 51
积分: 42.5

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

# gst-launch-1.0 filesrc location=bad_apple.mp4 ! qtdemux ! h264parse ! omxh264d
ec ! autovideoconvert ! fbdevsink
WARNING: erroneous pipeline: no element "omxh264dec"

报错 no element "omxh264dec"   无法播放视频   软解是可以播放的   
查看/usr/lib目录并没有/usr/lib/libOmxCore.so这个文件   请问这个文件是如何生成的   是buildroot编译生成的吗

离线

楼主 #33 2020-11-05 01:00:25

逸俊晨晖
会员
注册时间: 2018-08-29
已发帖子: 151
积分: 137.5

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

hanzixi_angel 说:

# gst-launch-1.0 filesrc location=bad_apple.mp4 ! qtdemux ! h264parse ! omxh264d
ec ! autovideoconvert ! fbdevsink
WARNING: erroneous pipeline: no element "omxh264dec"

报错 no element "omxh264dec"   无法播放视频   软解是可以播放的   
查看/usr/lib目录并没有/usr/lib/libOmxCore.so这个文件   请问这个文件是如何生成的   是buildroot编译生成的吗

libcedarc\openmax\omxcore\Makefile.am说明此路径产生libOmxCore.so 没有就说明前置贴没配好 就是帖子顶部那个链接

离线

#34 2020-11-08 23:59:29

whyabc666
封禁
注册时间: 2019-12-12
已发帖子: 378
积分: 365

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

逸俊晨晖 说:

对比一下硬解和软解的命令
gst-launch-1.0 filesrc location=bad_apple.mp4 ! qtdemux ! h264parse ! omxh264dec ! autovideoconvert ! fbdevsink
gst-launch-1.0 filesrc location=bad_apple.mp4 ! qtdemux ! avdec_h264 ! autovideoconvert ! fbdevsink
硬解比软件多用了个gstreamer元件 h264parse
这是因为avdec_h264的sink(输入)视频流格式可以是avc和byte-stream 而omxh264dec的sink只能是byte-stream
而qtdemux的src(输出)的视频流格式是avc 所以 要用元件 h264parse  将avc转化为byte-stream 给omxh264dec 不然是无法解码的

硬解比软件多用了个gstreamer元件 h264parse
root@abc-ThinkPad-X200:/home/abc# gst-launch-1.0 filesrc location=/home/abc/stream_chn0.h264 ! avdec_h264 ! ximagesink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Caught SIGSEGV
#0  0xb7748cb0 in ?? ()
Spinning.  Please run 'gdb gst-launch-1.0 7599' to continue debugging, Ctrl-C to quit, or Ctrl-\ to dump core.

离线

#35 2020-11-23 02:45:45

avb
会员
注册时间: 2020-02-22
已发帖子: 2
积分: 2

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

tried but without success

gst-launch-1.0 filesrc location=/storage/bad_apple.mp4 ! qtdemux ! h264parse !
 omxh264dec ! autovideoconvert ! fbdevsink
Setting pipeline to PAUSED ...
debug  : cedarc <AwOmxComponentInit:26>:OMXCORE: aw_omx_component_init 133b30

debug  : omx_vdec <__AwOmxVdecInit:1059>:++++++++++++++++++++++omx begin++++++++++++++++++
debug  : omx_vdec <__AwOmxVdecInit:1060>:name = OMX.allwinner.video.decoder.avc
debug  : omx_vdec_aw <OmxDecoderCreate:924>:kay: ** 0.
debug  : cedarc <CdcMessageQueueCreate:47>:nMessageSize = 20
debug  : cedarc <AwOmxComponentSetCallbacks:309>:OMXCORE: aw_omx_component_set_callbacks 133b30, b66d3500 , f00c0

debug  : omx_vdec <__AwOmxVdecSetCallbacks:1812>:===== vdec set callbacks
Pipeline is PREROLLING ...
debug  : omx_vdec <AwOmxVdecPortSetDefinitioin:190>:port:<<<<<<<<in,nBufferCountActual = 2, mBufferCntActual = 2
debug  : omx_vdec <AwOmxVdecPortSetDefinitioin:190>:port:<<<<<<<<in,nBufferCountActual = 2, mBufferCntActual = 2
error  : omx_vdec <AwOmxVdecPortGetFormat:288>:erro: pParamData->nIndex > m_sPortFormatType.nIndex
**
ERROR:gstomxvideodec.c:2120:gst_omx_video_dec_negotiate: assertion failed: (l != NULL)
Bail out! ERROR:gstomxvideodec.c:2120:gst_omx_video_dec_negotiate: assertion failed: (l != NULL)
Aborted
#

linux 5.2.1 (also  5.4.35 mentioned by aodzip)
libcedarc & gst-omx-1.16.2
on v3s

最近编辑记录 avb (2020-11-23 02:47:34)

离线

#36 2020-11-26 19:52:55

QinChi
会员
注册时间: 2020-09-02
已发帖子: 1
积分: 1

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

# gst-launch-1.0 filesrc location=bad_apple.mp4 ! qtdemux ! h264parse ! omxh264d
ec ! autovideoconvert ! fbdevsink
Setting pipeline to PAUSED ...
OMX-Cannot open OpenMAX registry file /root/.omxregister
OMX-A Component loader constructor fails. Exiting
ERROR: Pipeline doesn't want to pause.
ERROR: from element /GstPipeline:pipeline0/GstOMXH264Dec-omxh264dec:omxh264dec-omxh264dec0: Could not initialize supporting library.
Additional debug info:
../gst-libs/gst/video/gstvideodecoder.c(2517): gst_video_decoder_change_state (): /GstPipeline:pipeline0/GstOMXH264Dec-omxh264dec:omxh264dec-omxh264dec0:
Failed to open decoder
Setting pipeline to NULL ...
Freeing pipeline ...

#

linux 5.4.77
libcedarc & gst-omx-1.16.2
on widora-r3
始终都无法走到下一步,按照步骤做不下去了

离线

楼主 #37 2020-11-26 22:23:21

逸俊晨晖
会员
注册时间: 2018-08-29
已发帖子: 151
积分: 137.5

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

40楼
看gstreamer相关资料

41楼
gst-omx认不出全志在openmax自己定义的颜色空间
看一楼的openmax接口修改部分
一种可能是没按照我说的添加颜色空间 另一种可能是添加了 但是buildroot编译标记没清理好导致改的没编译

42楼
gst对omx注册失败
看一楼的gst-omx注册部分

离线

#38 2020-11-27 15:49:34

wupaul2001
会员
注册时间: 2019-09-30
已发帖子: 243
积分: 241

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

逸俊晨晖 说:

40楼
看gstreamer相关资料

41楼
gst-omx认不出全志在openmax自己定义的颜色空间
看一楼的openmax接口修改部分
一种可能是没按照我说的添加颜色空间 另一种可能是添加了 但是buildroot编译标记没清理好导致改的没编译

42楼
gst对omx注册失败
看一楼的gst-omx注册部分


你在説我踩DE的坑吗?我已经完全填好了,只是还没有共享上来。F1C那个不能半透的BUG,在V3s上也有,我已经填好

离线

#39 2020-12-09 10:36:43

无情一刀
会员
注册时间: 2018-09-04
已发帖子: 691
积分: 691

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

逸俊晨晖 说:

对比一下硬解和软解的命令
gst-launch-1.0 filesrc location=bad_apple.mp4 ! qtdemux ! h264parse ! omxh264dec ! autovideoconvert ! fbdevsink
gst-launch-1.0 filesrc location=bad_apple.mp4 ! qtdemux ! avdec_h264 ! autovideoconvert ! fbdevsink
硬解比软件多用了个gstreamer元件 h264parse
这是因为avdec_h264的sink(输入)视频流格式可以是avc和byte-stream 而omxh264dec的sink只能是byte-stream
而qtdemux的src(输出)的视频流格式是avc 所以 要用元件 h264parse  将avc转化为byte-stream 给omxh264dec 不然是无法解码的

我这里使用软解提示我没有avdec_h264现在没有播放成功是

离线

#40 2020-12-09 12:02:11

油董
会员
注册时间: 2020-12-04
已发帖子: 2
积分: 2

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

膜拜大佬,可以愉快地使用编解码库了

离线

#41 2020-12-12 07:59:03

已完成。成。成。
会员
注册时间: 2019-11-02
已发帖子: 18
积分: 18

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

# gst-launch-1.0 filesrc location=/testfile/bad_apple.mp4 ! qtdemux ! h264parse
! omxh264dec ! autovideoconvert ! fbdevsink
Setting pipeline to PAUSED ...
ERROR: Pipeline doesn't want to pause.
ERROR: from element /GstPipeline:pipeline0/GstOMXH264Dec-omxh264dec:omxh264dec-omxh264dec0: Could not initialize supporting library.
Additional debug info:
../gst-libs/gst/video/gstvideodecoder.c(2517): gst_video_decoder_change_state (): /GstPipeline:pipeline0/GstOMXH264Dec-omxh264dec:omxh264dec-omxh264dec0:
Failed to open decoder
Setting pipeline to NULL ...
Freeing pipeline ...

在Widora mangopi R3的板子上基于aodzip大佬的buildroot修改,配置文件来自gst-omx.zip无修改依然无法使用

离线

#42 2020-12-16 22:43:01

yuanhao0230
会员
注册时间: 2020-12-16
已发帖子: 15
积分: 15

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

逸俊晨晖 说:

镜像和使用方法
gst-omx硬解码镜像.zip

大神,可否帮忙生成一个f1v100s+800*480的镜像,感激不尽啊……

离线

#43 2020-12-17 21:53:32

b7376811
会员
注册时间: 2019-09-12
已发帖子: 27
积分: 27

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

谢谢大佬分享,在荔枝派zero上移植成功

离线

#44 2020-12-19 10:19:21

流氓兔
会员
注册时间: 2020-02-01
已发帖子: 121
积分: 109.5

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

已完成。成。成。 说:

# gst-launch-1.0 filesrc location=/testfile/bad_apple.mp4 ! qtdemux ! h264parse
! omxh264dec ! autovideoconvert ! fbdevsink
Setting pipeline to PAUSED ...
ERROR: Pipeline doesn't want to pause.
ERROR: from element /GstPipeline:pipeline0/GstOMXH264Dec-omxh264dec:omxh264dec-omxh264dec0: Could not initialize supporting library.
Additional debug info:
../gst-libs/gst/video/gstvideodecoder.c(2517): gst_video_decoder_change_state (): /GstPipeline:pipeline0/GstOMXH264Dec-omxh264dec:omxh264dec-omxh264dec0:
Failed to open decoder
Setting pipeline to NULL ...
Freeing pipeline ...

在Widora mangopi R3的板子上基于aodzip大佬的buildroot修改,配置文件来自gst-omx.zip无修改依然无法使用

# gst-launch-1.0 filesrc location=97.mp4 ! qtdemux ! h264parse ! omxh264dec ! au
tovideoconvert ! fbdevsink
Setting pipeline to PAUSED ...
OMX-Cannot open OpenMAX registry file //.omxregister
OMX-A Component loader constructor fails. Exiting
ERROR: Pipeline doesn't want to pause.
ERROR: from element /GstPipeline:pipeline0/GstOMXH264Dec-omxh264dec:omxh264dec-omxh264dec0: Could not initialize supporting library.
Additional debug info:
../gst-libs/gst/video/gstvideodecoder.c(2517): gst_video_decoder_change_state (): /GstPipeline:pipeline0/GstOMXH264Dec-omxh264dec:omxh264dec-omxh264dec0:
Failed to open decoder
Setting pipeline to NULL ...
Freeing pipeline ...
#
#

我的 widora tiny200 r3 也是一样的问题, 都是64M DRAM, 肯定不是内存不够的原因,这是为什么呢?
软件也是可以跑的, 只是很慢很慢。

离线

#45 2020-12-19 10:57:30

流氓兔
会员
注册时间: 2020-02-01
已发帖子: 121
积分: 109.5

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

yuanhao0230 说:
逸俊晨晖 说:

镜像和使用方法
gst-omx硬解码镜像.zip

大神,可否帮忙生成一个f1v100s+800*480的镜像,感激不尽啊……

2020-12-19_105626.png

我的荔枝派视频解码时候, cpu占用率100%, 这样正常吗?

离线

#46 2020-12-31 17:04:29

秦皇岛岛主
会员
注册时间: 2020-05-22
已发帖子: 55
积分: 44

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

标记

离线

楼主 #47 2021-01-07 23:44:39

逸俊晨晖
会员
注册时间: 2018-08-29
已发帖子: 151
积分: 137.5

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

用歪朵拉的老法师们 看这个帖子
https://whycan.com/t_5824.html

离线

楼主 #48 2021-01-07 23:48:12

逸俊晨晖
会员
注册时间: 2018-08-29
已发帖子: 151
积分: 137.5

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

流氓兔 说:
yuanhao0230 说:
逸俊晨晖 说:

镜像和使用方法
gst-omx硬解码镜像.zip

大神,可否帮忙生成一个f1v100s+800*480的镜像,感激不尽啊……

https://whycan.com/files/members/3078/2020-12-19_105626.png

我的荔枝派视频解码时候, cpu占用率100%, 这样正常吗?

硬解出来的YV12要经过软件转换成RGB再显示在屏幕上 估计是这里占了CPU 把DE用起来就会占这么多了

离线

#49 2021-01-13 10:18:40

R1CHIE
会员
注册时间: 2020-11-12
已发帖子: 2
积分: 2

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

大佬你好,请问你用的buildroot是哪个版本的?2017.08是没有gst1-plugins-bayer2rgb-neon这个选项的。

离线

楼主 #50 2021-01-15 01:40:21

逸俊晨晖
会员
注册时间: 2018-08-29
已发帖子: 151
积分: 137.5

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

R1CHIE 说:

大佬你好,请问你用的buildroot是哪个版本的?2017.08是没有gst1-plugins-bayer2rgb-neon这个选项的。

buildroot-2019.08 没有的话去掉看看行不行

离线

#51 2021-02-05 14:09:18

shaoxi2010
会员
注册时间: 2019-06-13
已发帖子: 254
积分: 217

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

大佬,同样的思路我在R818上试了下,有个段错误啊有没有什么思路

# gst-launch-1.0 filesrc location=2.mp4 ! qtdemux ! h264parse ! omxh264dec ! aut
ovideoconvert ! fbdevsink
Setting pipeline to PAUSED ...
debug  : cedarc <AwOmxComponentInit:38>:OMXCORE: aw_omx_component_init 27d7f5e0

debug  : omx_vdec <__AwOmxVdecInit:1139>:++++++++++++++++++++++omx begin++++++++++++++++++
debug  : omx_vdec <__AwOmxVdecInit:1140>:name = OMX.allwinner.video.decoder.avc
debug  : cedarc <CdcMessageQueueCreate:51>:nMessageSize = 40
debug  : cedarc <AwOmxComponentSetCallbacks:331>:OMXCORE: aw_omx_component_set_callbacks 27d7f5e0, 9b650958 , 27e2b
3b0

debug  : omx_vdec <__AwOmxVdecSetCallbacks:1890>:===== vdec set callbacks
Pipeline is PREROLLING ...
debug  : omx_vdec <AwOmxVdecPortSetDefinitioin:191>:port:<<<<<<<<in,nBufferCountActual = 2, mBufferCntActual = 2
debug  : omx_vdec <AwOmxVdecPortSetDefinitioin:191>:port:<<<<<<<<in,nBufferCountActual = 2, mBufferCntActual = 2
error  : omx_vdec <AwOmxVdecPortGetFormat:280>:erro: pParamData->nIndex > m_sPortFormatType.nIndex
debug  : omx_vdec <controlSetState:419>:current state:OMX_StateLoaded, target state:OMX_StateIdle
debug  : omx_vdec <doStateWaitforResources2Idle:629>:bEnabled[1],[1],bPopulated[0],[0]
debug  : omx_vdec <AwOmxVdecPortAddBuffer:390>:<<<<<<<<in port add buffer: 0x7f99135010
debug  : omx_vdec <AwOmxVdecPortAddBuffer:390>:<<<<<<<<in port add buffer: 0x7f98b34010
Caught SIGSEGV
debug  : omx_vdec <doStateWaitforResources2Idle:629>:bEnabled[1],[1],bPopulated[1],[0]
exec gdb failed: No such file or directory
debug  : omx_vdec <doStateWaitforResources2Idle:629>:bEnabled[1],[1],bPopulated[1],[0]
Spinning.  Please run 'gdb gst-launch-1.0 1101' to continue debugging, Ctrl-C to quit, or Ctrl-\ to dump core.
debug  : omx_vdec <doStateWaitforResources2Idle:629>:bEnabled[1],[1],bPopulated[1],[0]
....
debug  : omx_vdec <doStateWaitforResources2Idle:629>:bEnabled[1],[1],bPopulated[1],[0]
warning: omx_vdec <doStateWaitforResources2Idle:644>:Idle transition failed

warning: omx_vdec <controlSetState:449>:Transit current state:OMX_StateLoaded --> target state:OMX_StateIdle --Fail
ed!

离线

#52 2021-04-29 17:19:26

554968413
会员
注册时间: 2021-04-28
已发帖子: 1
积分: 0.5

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

该评论内容与本帖子无关,鼓励各位坑友积极发言讨论与帖子有关的内容!

离线

  • 不通过:与技术无关

#53 2021-09-14 14:48:52

niyazfattahov
会员
注册时间: 2021-06-23
已发帖子: 19
积分: 13

Re: V3s使用gstreamer的插件openmax调用cedar硬解码,荔枝派zero测试通过

can I encode video from  camera using gst-launch?

I add this

[omxh264enc]
type-name=GstOMXH264Enc
core-name=/usr/lib/libOmxCore.so
component-name=OMX.allwinner.video.encoder.avc
rank=0
in-port-index=0
out-port-index=1
When I run
gst-launch-1.0 -vvv v4l2src device=/dev/video0 num-buffers=1000 ! 'video/x-raw, width=640, height=480, format=(string)I420' ! omx264enc ! avimux ! filesink location=videotestsrc.avi

WARNING: erroneous pipeline: no element "omx264enc"


with ffmpeg I can encode max 640x480 at ~ 53fps with cedarx codec and libcedarc from aodzip and get 100% cpu load

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn