您尚未登录。

楼主 #1 2020-10-14 01:51:21

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

f1c100s成功运行jpeg硬解码demo,但输出还是有问题

嵌入式小白一个,跑这个demo搞了好久,搞了两天终于跑起demo,主要是编译链的问题搞了好久
使用主线5.2,按照这个教程成功安装了cedar,dev出现了cedar和ion设备
https://github.com/aodzip/cedar/

编译链要用这个:
https://pan.baidu.com/s/1-WXlwxLoQNzKGDdIJ5JDpw
测试了几个编译链都不行,各种问题,用上面的就可以,buildroot根文件系统也要统一用这个

下载这个解码库,里面有f1c200s的配置,所以应该是可以用的
https://github.com/EmperG/lindenis-v536-package
主要看里面的
tina_multimedia和tina_multimedia_demo两个文件夹

进入libcedarc按照里面的说明文件编译,平台选arm-none-linux-gnueabi,注意编译的时候统一编译链,configure和make都带上CC=/...你的编译链路径

进入tina_multimedia/jpegdecode,继续make,注意带编译链路径

进入tina_multimedia_demo/jpegdecodedemo,makefile文件可以借鉴一下改成我这个:

Target = demo
SourceIncludePath := -I/tina_multimedia/jpegdecode -I/tina_multimedia/libcedarc/include -L/tina_multimedia/jpegdecode -L/output/libcedarc/lib -L/tina_multimedia/libcedarc/library/arm-none-linux-gnueabi

CompileFlags = $(CFLAGS) $(SourceIncludePath)

LoadFlags +=  -ljpegdecode  -lvdecoder -lVE \
        -lMemAdapter -lcdc_base -ldl

CC=/opt/arm-2014.05/bin/arm-none-linux-gnueabi-gcc
LDFLAGS= -Wl,-rpath-link /tina_multimedia/libcedarc/library/arm-none-linux-gnueabi
$(Target): jpegdecodedemo.c 
    $(CC) -o $@ $^ $(CompileFlags) $(LDFLAGS) $(LoadFlags)

路径名字对应改就行,很好看懂,其中/output/libcedarc/lib路径是编译tina_multimedia时的输出路径

然后make就有程序生成了,用arm-none-linux-gnueabi-readelf命令看一下依赖库,把对应的库拷到板子的/lib文件夹,如libvideoengine.so这些可能没显示,但是运行出错会提示缺什么的,缺就都拷进去就行了

这是运行效果:

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> tina_multimedia <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
tag   : tina3.5
branch: tina-dev
date  : Mon Jul 15 19:04:59 2019 +0800
Change-Id: I5f6c8a88d7b387a312b7744797a0d5f8ab07ee7a
-------------------------------------------------------------------------------
debug  : ionAlloc <__GetIonMemOpsS:985>:*** get __GetIonMemOpsS ***
debug  : ionAlloc <ion_alloc_open:134>:begin ion_alloc_open

debug  : cedarc <VeSetSpeed:1559>: *** set ve freq to 300 Mhz ***
debug  : cedarc <VeInitialize:1198>: ve init ok

debug  : ionAlloc <ion_alloc_open:175>:** phy offset = 40000000
debug  : cedarc <VeRelease:1253>: ve release ok

DEBUG : jpegdecode <JpegDecoderCreate:406>: AddVDPlugin first
warning: cedarc <AddVDPlugin:1538>: 1117 get local path: /lib/
warning: cedarc <AddVDPlugin:1548>:  1117 load so: /lib/libawh265.so
debug  : cedarc <AddVDPluginSingle:1501>: vdecoder open lib: /lib/libawh265.so
warning: cedarc <VDecoderRegister:127>: register codec: '116:h265' success.
warning: cedarc <AddVDPlugin:1548>:  1117 load so: /lib/libawmpeg4h263.so
debug  : cedarc <AddVDPluginSingle:1501>: vdecoder open lib: /lib/libawmpeg4h263.so
warning: cedarc <VDecoderRegister:127>: register codec: '104:mpeg4H263' success.
warning: cedarc <VDecoderRegister:127>: register codec: '10b:mpeg4H263' success.
warning: cedarc <VDecoderRegister:127>: register codec: '10d:mpeg4H263' success.
warning: cedarc <AddVDPlugin:1548>:  1117 load so: /lib/libawavs.so
debug  : cedarc <AddVDPluginSingle:1501>: vdecoder open lib: /lib/libawavs.so
warning: cedarc <VDecoderRegister:127>: register codec: '117:avs' success.
warning: cedarc <AddVDPlugin:1548>:  1117 load so: /lib/libawmjpeg.so
debug  : cedarc <AddVDPluginSingle:1501>: vdecoder open lib: /lib/libawmjpeg.so
warning: cedarc <VDecoderRegister:127>: register codec: '101:mjpeg' success.
warning: cedarc <AddVDPlugin:1548>:  1117 load so: /lib/libawmpeg4normal.so
debug  : cedarc <AddVDPluginSingle:1501>: vdecoder open lib: /lib/libawmpeg4normal.so
warning: cedarc <VDecoderRegister:127>: register codec: '10a:mpeg4Normal' success.
warning: cedarc <VDecoderRegister:127>: register codec: '10c:mpeg4Normal' success.
warning: cedarc <VDecoderRegister:127>: register codec: '108:mpeg4Normal' success.
warning: cedarc <VDecoderRegister:127>: register codec: '109:mpeg4Normal' success.
warning: cedarc <AddVDPlugin:1548>:  1117 load so: /lib/libawmjpegplus.so
debug  : cedarc <AddVDPluginSingle:1501>: vdecoder open lib: /lib/libawmjpegplus.so
warning: cedarc <VDecoderRegister:127>: register codec: '101:mjpegplus' success.
warning: cedarc <AddVDPlugin:1548>:  1117 load so: /lib/libawh264.so
debug  : cedarc <AddVDPluginSingle:1501>: vdecoder open lib: /lib/libawh264.so
warning: cedarc <VDecoderRegister:127>: register codec: '115:h264' success.
warning: cedarc <AddVDPlugin:1548>:  1117 load so: /lib/libawvp9Hw.so
debug  : cedarc <AddVDPluginSingle:1501>: vdecoder open lib: /lib/libawvp9Hw.so
warning: cedarc <VDecoderRegister:127>: register codec: '113:Vp9Hw' success.
warning: cedarc <AddVDPlugin:1548>:  1117 load so: /lib/libawwmv3.so
debug  : cedarc <AddVDPluginSingle:1501>: vdecoder open lib: /lib/libawwmv3.so
warning: cedarc <VDecoderRegister:127>: register codec: '110:vc1' success.
warning: cedarc <AddVDPlugin:1548>:  1117 load so: /lib/libawmpeg4dx.so
debug  : cedarc <AddVDPluginSingle:1501>: vdecoder open lib: /lib/libawmpeg4dx.so
warning: cedarc <VDecoderRegister:127>: register codec: '105:mpeg4dx' success.
warning: cedarc <VDecoderRegister:127>: register codec: '106:mpeg4dx' success.
warning: cedarc <VDecoderRegister:127>: register codec: '107:mpeg4dx' success.
warning: cedarc <VDecoderRegister:127>: register codec: '10e:mpeg4dx' success.
warning: cedarc <VDecoderRegister:127>: register codec: '10f:mpeg4dx' success.
warning: cedarc <AddVDPlugin:1548>:  1117 load so: /lib/libawmpeg4vp6.so
debug  : cedarc <AddVDPluginSingle:1501>: vdecoder open lib: /lib/libawmpeg4vp6.so
warning: cedarc <VDecoderRegister:127>: register codec: '111:Mpeg4Vp6' success.
warning: cedarc <AddVDPlugin:1548>:  1117 load so: /lib/libawmpeg2.so
debug  : cedarc <AddVDPluginSingle:1501>: vdecoder open lib: /lib/libawmpeg2.so
warning: cedarc <VDecoderRegister:127>: register codec: '102:mpeg2' success.
warning: cedarc <VDecoderRegister:127>: register codec: '103:mpeg2' success.
warning: cedarc <AddVDPlugin:1548>:  1117 load so: /lib/libawvp8.so
debug  : cedarc <AddVDPluginSingle:1501>: vdecoder open lib: /lib/libawvp8.so
warning: cedarc <VDecoderRegister:127>: register codec: '112:vp8' success.
warning: cedarc <AddVDPlugin:1548>:  1117 load so: /lib/libawmpeg4base.so
warning: cedarc <AddVDPluginSingle:1498>: Invalid plugin, CedarPluginVDInit not found.
srcBuf = 0x1a7e8,srcBufLen = 25676
JpegDecoderSetDataSource end
debug  : cedarc <LogVersionInfo:40>:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Cedar Codec <<<<<<<<<<<<<<<<<<<<<<<<<<<<
tag   : CedarC-v1.1.9
branch: master
commit: 1951abe1456450ea48bfd446e801861a1354e93c
date  : Wed May 30 18:59:36 2018 +0800
author: jenkins8080
patch :
----------------------------------------------------------------------

debug  : cedarc <CreateVideoDecoder:215>:CreateVideoDecoder ****
debug  : cedarc <InitializeVideoDecoder:344>:*** pVconfig->nVeFreq = 0
debug  : ionAlloc <__GetIonMemOpsS:985>:*** get __GetIonMemOpsS ***
debug  : ionAlloc <ion_alloc_open:134>:begin ion_alloc_open

warning: cedarc <InitializeVideoDecoder:422>:warning: the nDecodeSmoothFrameBufferNum is 0
warning: cedarc <InitializeVideoDecoder:428>:warning: the nDeInterlaceHoldingFrameBufferNum is 0
warning: cedarc <InitializeVideoDecoder:434>:warning: the nDisplayHoldingFrameBufferNum is 0
debug  : cedarc <DecideStreamBufferSize:1897>:nBufferSize=2097152
debug  : cedarc <VeSetSpeed:1559>: *** set ve freq to 300 Mhz ***
debug  : cedarc <VeInitialize:1198>: ve init ok

debug  : cedarc <VideoEngineCreate:388>: *** pEngine->nIcVeVersion = 1663, decIpVersion = 0
debug  : cedarc <CreateSpecificDecoder:1209>: Create decoder '101:mjpeg'
debug  : cedarc <VideoEngineCreate:481>: **************eCtlAfcbMode = 0
debug  : cedarc <GetSbmInterface:1705>:*********GetSbmInterface, nType=0

debug  : cedarc <GetSbmInterfaceStream:732>:******* sbm-type: Stream*******
DEBUG : jpegdecode <JpegDecoderGetFrame:616>: Request Video Stream Buffer ok
DEBUG : jpegdecode <JpegDecoderGetFrame:636>: Copy Video Stream Data ok!
DEBUG : jpegdecode <JpegDecoderGetFrame:652>: Submit Video Stream Data ok!
debug  : fbm.c <FbmCreateBuffer:133>:FbmCreate, total fbm number: 2, decoder needed: 2,  nWidth=200, nHeight=200 nAlignStride = 0
debug  : fbm.c <FbmCreateBuffer:226>:** call allocate pic buf, i = 0, maxNum = 2
debug  : fbm.c <FbmCreateBuffer:379>:*** finish fbmCreateBuffer
decode time = 4194 us
DEBUG : jpegdecode <JpegDecoderGetFrame:680>: decoder one pic...
DEBUG : jpegdecode <JpegDecoderGetFrame:681>: pic nWidth is 224,nHeight is 224
DEBUG : jpegdecode <JpegDecoderGetFrame:682>: videoPicture->nWidth = 224,videoPicture->nHeight = 224,videoPicture->nLineStride = 224
DEBUG : jpegdecode <JpegDecoderGetFrame:684>: videoPicture->nTopOffset = 0,videoPicture->nLeftOffset = 0,videoPicture->nBottomOffset = 200,videoPicture->nRightOffset = 200
DEBUG : jpegdecode <JpegDecoderGetFrame:704>: ready flush YUV cache
ready save yuvDEBUG : jpegdecode <saveYuvPic:184>: acturalWidth = 200,height = 200
DEBUG : jpegdecode <saveYuvPic:225>: save yuv data successfully,path = /root/yuv200_200_nv21.dat
DEBUG : jpegdecode <JpegDecoderGetFrame:774>: free jpeg data
JpegDecoderGetFrame successfully,imgFrame->mWidth = 224,imgFrame->mHeight = 224,imgFrame->mYuvData = 0x3cc40,imgFrame->mYuvSize = 60000
imgFrame->mRGB565Data = (nil),imgFrame->mRGB565Size = 0
debug  : cedarc <VeRelease:1253>: ve release ok

最近编辑记录 f1c100_ (2020-10-14 02:00:20)

离线

楼主 #2 2020-10-14 01:57:57

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

Re: f1c100s成功运行jpeg硬解码demo,但输出还是有问题

然后问题来了,输出rgb565图片,图片是杂乱的,看源码解码的时候是先输出YUV格式,然后再转为RGB的,猜想是否是转换问题,于是直接输出yv12,写了个程序提取前面的Y分量生成灰度图,这张是输入
FluxBB bbcode 测试
这张是提取的灰度图
FluxBB bbcode 测试
很明显是转码出现了错误,我卡住了,等大神继续搞一下

离线

楼主 #3 2020-10-14 02:06:04

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

Re: f1c100s成功运行jpeg硬解码demo,但输出还是有问题

我其中测试了一幅图,生成后提取Y分量灰度图是这样的
FluxBB bbcode 测试
和原图已经很接近了,就是多了那些黑色的竖纹,没有竖纹的话就和原图一样了,所以我感觉还是能抢救以下的

离线

#4 2020-10-14 08:41:41

sprintf
会员
注册时间: 2020-09-11
已发帖子: 50
积分: 45

Re: f1c100s成功运行jpeg硬解码demo,但输出还是有问题

这个100s有没有硬件编码的?

离线

楼主 #5 2020-10-14 19:30:48

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

Re: f1c100s成功运行jpeg硬解码demo,但输出还是有问题

sprintf 说:

这个100s有没有硬件编码的?

肯定带硬解码器的

离线

#6 2020-10-15 11:55:05

vip888888
会员
注册时间: 2020-07-16
已发帖子: 141
积分: 138

Re: f1c100s成功运行jpeg硬解码demo,但输出还是有问题

f1c100_ 说:
sprintf 说:

这个100s有没有硬件编码的?

肯定带硬解码器的

看全志官网介绍好像只有mjpeg编码,解码的话多了h.264的。

离线

楼主 #7 2020-10-15 13:21:36

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

Re: f1c100s成功运行jpeg硬解码demo,但输出还是有问题

vip888888 说:
f1c100_ 说:
sprintf 说:

这个100s有没有硬件编码的?

肯定带硬解码器的

看全志官网介绍好像只有mjpeg编码,解码的话多了h.264的。

淘宝上卖的代码有jpeg硬解码的

离线

楼主 #8 2020-10-18 22:36:18

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

Re: f1c100s成功运行jpeg硬解码demo,但输出还是有问题

自己来填完这个坑吧。
后面又继续跑了.264硬解,还是有这个问题,首先硬解是肯定能用的,那估计就是哪里的转换格式出问题了。
找了一番源码目录,看到xplayer下有个配置文件:vd_output_fmt = mb32,感觉格式问题八九不离十了。
仔细阅读了源码,videodecoder的格式是由vconfig中的eOutputPixelFormat控制的,有以下格式可选:
FluxBB bbcode 测试
但是很可惜,我测试了下,f1c100/200不管怎么设置都没用,只能使用yuv_mb32,mb32是个什么鬼格式?谷歌翻箱倒柜找到全志文档:
FluxBB bbcode 测试
简单的说就是以tile为单位进行扫描,一般一个tile为32x32,知道原理就好办了,修改下转换,这是结果:
源图:
FluxBB bbcode 测试
转换后:
FluxBB bbcode 测试

bingo,成功转换,但是能看到有不小的色差,这应该是yuv->rgb的转换公式问题,后面修改下校正就行了,关键的问题已经解决了
.264视频的硬解应该也要这样搞

离线

#9 2020-10-18 22:46:26

哦豁哦豁
会员
注册时间: 2020-01-17
已发帖子: 79
积分: 79

Re: f1c100s成功运行jpeg硬解码demo,但输出还是有问题

楼主真是一个神奇的存在, 膜拜大神.

请问可以提供一个荔枝派nano或者widora tiny200的固件吗?

离线

楼主 #10 2020-10-18 23:54:56

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

Re: f1c100s成功运行jpeg硬解码demo,但输出还是有问题

哦豁哦豁 说:

楼主真是一个神奇的存在, 膜拜大神.

请问可以提供一个荔枝派nano或者widora tiny200的固件吗?

DD了个nano的TF固件出来
https://whycan.com/files/members/5219/nano-tf.rar

root目录下执行./demo jpg文件就行了
例如:
./demo ./123.jpg

离线

#11 2020-10-19 08:46:34

哦豁哦豁
会员
注册时间: 2020-01-17
已发帖子: 79
积分: 79

Re: f1c100s成功运行jpeg硬解码demo,但输出还是有问题

f1c100_ 说:
哦豁哦豁 说:

楼主真是一个神奇的存在, 膜拜大神.

请问可以提供一个荔枝派nano或者widora tiny200的固件吗?

DD了个nano的TF固件出来
https://whycan.com/files/members/5219/nano-tf.rar

root目录下执行./demo jpg文件就行了
例如:
./demo ./123.jpg

感谢大佬分享, 请问是用哪组串口呢?我用widora tiny200测试了一下,发现串口没有输出呢。

离线

#12 2020-10-19 10:30:05

nonzhe
会员
注册时间: 2020-09-30
已发帖子: 2
积分: 2

Re: f1c100s成功运行jpeg硬解码demo,但输出还是有问题

嘴巴里塞个棒棒很让人想歪了。

离线

楼主 #13 2020-10-19 11:43:51

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

Re: f1c100s成功运行jpeg硬解码demo,但输出还是有问题

哦豁哦豁 说:
f1c100_ 说:
哦豁哦豁 说:

楼主真是一个神奇的存在, 膜拜大神.

请问可以提供一个荔枝派nano或者widora tiny200的固件吗?

DD了个nano的TF固件出来
https://whycan.com/files/members/5219/nano-tf.rar

root目录下执行./demo jpg文件就行了
例如:
./demo ./123.jpg

感谢大佬分享, 请问是用哪组串口呢?我用widora tiny200测试了一下,发现串口没有输出呢。

好像nano默认的0串口输出,tiny200是1串口

离线

#14 2020-10-19 19:09:42

dgtg
会员
注册时间: 2017-11-08
已发帖子: 254
积分: 213.5

Re: f1c100s成功运行jpeg硬解码demo,但输出还是有问题

楼主厉害!大神!
感谢分享!

离线

#15 2020-10-26 13:38:36

zhouyu2019
会员
注册时间: 2019-11-07
已发帖子: 42
积分: 42

Re: f1c100s成功运行jpeg硬解码demo,但输出还是有问题

我也是在这个地方卡了很久,后来才知道yuv_mb32这种格式,其实f1c100s的 display engine 就支持yuv_mb32视频图层,不需要软件去转换。

离线

#16 2020-10-26 14:51:55

vip888888
会员
注册时间: 2020-07-16
已发帖子: 141
积分: 138

Re: f1c100s成功运行jpeg硬解码demo,但输出还是有问题

zhouyu2019 说:

我也是在这个地方卡了很久,后来才知道yuv_mb32这种格式,其实f1c100s的 display engine 就支持yuv_mb32视频图层,不需要软件去转换。

有display engine跑通的例子么?我看1c200s手册上可以配置layer层输入是YUV然后显示到LCD上的,但是没配置成功。

离线

楼主 #17 2020-10-27 05:54:53

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

Re: f1c100s成功运行jpeg硬解码demo,但输出还是有问题

zhouyu2019 说:

我也是在这个地方卡了很久,后来才知道yuv_mb32这种格式,其实f1c100s的 display engine 就支持yuv_mb32视频图层,不需要软件去转换。

大佬有跑通吗,我也在研究yuv,看源码diplay engine调用了/dev/disp设备,不知道这个怎么搞出来就卡住了。还有另外一种是通过libdrm来显示yuv,但是我用yuv初始化drm后屏幕就只显示彩色乱码,写内存也显示没变化了。

离线

#18 2020-11-03 06:11:07

TivonLiu
会员
注册时间: 2019-12-27
已发帖子: 46
积分: 36

Re: f1c100s成功运行jpeg硬解码demo,但输出还是有问题

感谢分享,这个可以研究一下

离线

#19 2020-11-03 13:44:12

zhouyu2019
会员
注册时间: 2019-11-07
已发帖子: 42
积分: 42

Re: f1c100s成功运行jpeg硬解码demo,但输出还是有问题

vip888888 说:
zhouyu2019 说:

我也是在这个地方卡了很久,后来才知道yuv_mb32这种格式,其实f1c100s的 display engine 就支持yuv_mb32视频图层,不需要软件去转换。

有display engine跑通的例子么?我看1c200s手册上可以配置layer层输入是YUV然后显示到LCD上的,但是没配置成功。

按道理drm是直接能用的,只是我嫌不够灵活,于是我自己根据数据手册去写display-engine的驱动,但也很不容易,最后还是参考了tina里面的驱动才跑通的。根据我调试的结果,直接用de-be的YUV图层是可以正常使用的,但是不支持YUV420_MB32的格式。如果要支持YUV420_MB32,还是得用de-fe,而de-fe的用法要比de-be复杂很多。

离线

#20 2020-11-05 17:34:18

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

Re: f1c100s成功运行jpeg硬解码demo,但输出还是有问题

大佬,参考一下

离线

#21 2021-01-13 08:06:35

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

Re: f1c100s成功运行jpeg硬解码demo,但输出还是有问题

F1C200s主线gstreamer使用openmax调用cedar硬解码
http://whycan.com/t_5824.html
(出处:哇酷开发者社区【全志 V3S/F1C100s/X3】)



和这个帖子配合一起看,更有参考意义,感谢楼主!

离线

#22 2021-05-28 10:54:41

995pc
会员
注册时间: 2020-05-30
已发帖子: 54
积分: 3

Re: f1c100s成功运行jpeg硬解码demo,但输出还是有问题

@f1c100_
请教大神,使用的显示屏是16位还是18位的

离线

#24 2022-08-25 15:44:31

a358288629
会员
注册时间: 2022-08-21
已发帖子: 4
积分: 1

Re: f1c100s成功运行jpeg硬解码demo,但输出还是有问题

请教大神,显示屏是用的什么接口呢

离线

#26 2024-04-11 11:17:58

视觉℡
会员
注册时间: 2019-01-29
已发帖子: 36
积分: 18
个人网站

Re: f1c100s成功运行jpeg硬解码demo,但输出还是有问题

@f1c100_
颜色校正怎么做的?





离线

页脚

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

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