Hello, Does anybody have success with hardware encoder CedarX from aodzip? I've compiled it in buildroot 2020.02.1 & linux-5.4.31
I see in logs when linux is booting:
[ 1.447975] sunxi-cedar 1c0e000.video-codec: sunxi cedar version 0.01alpha
[ 1.455128] sunxi-cedar 1c0e000.video-codec: cedar-ve the get irq is 23
when I try use it with ffmpeg with this command:
ffmpeg -f lavfi -i testsrc=duration=2:size=1280x720:rate=30 testsrc.h264 -y
I get:
# ffmpeg -f lavfi -i testsrc=duration=2:size=1280x720:rate=30 testsrc.h264 -y
ffmpeg version 4.2.2 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 8.4.0 (Buildroot 2020.02.1)
configuration: --enable-cross-compile --cross-prefix=/home/niyaz/licheepizero_linux_build_latest/buildroot_rootfs/buildroot-2020.02.1/output/host/bin/arm-buildroot-linux-uclibcgnueabihf- --sysroot=/home/niyaz/licheepizero_linux_build_latest/buildroot_rootfs/buildroot-2020.02.1/output/host/arm-buildroot-linux-uclibcgnueabihf/sysroot --host-cc=/usr/bin/gcc --arch=arm --target-os=linux --disable-stripping --pkg-config=/home/niyaz/licheepizero_linux_build_latest/buildroot_rootfs/buildroot-2020.02.1/output/host/bin/pkg-config --disable-static --enable-shared --prefix=/usr --enable-avfilter --disable-version3 --enable-logging --enable-optimizations --disable-extra-warnings --enable-avdevice --enable-avcodec --enable-avformat --enable-network --disable-gray --enable-swscale-alpha --disable-small --enable-dct --enable-fft --enable-mdct --enable-rdft --disable-crystalhd --disable-dxva2 --enable-runtime-cpudetect --disable-hardcoded-tables --disable-mipsdsp --disable-mipsdspr2 --disable-msa --enable-hwaccels --disable-cuda --disable-cuvid --disable-nvenc --disable-avisynth --disable-frei0r --disable-libopencore-amrnb --disable-libopencore-amrwb --disable-libdc1394 --disable-libgsm --disable-libilbc --disable-libvo-amrwbenc --disable-symver --disable-doc --enable-gpl --enable-nonfree --enable-ffmpeg --disable-ffplay --enable-avresample --disable-ffprobe --disable-postproc --enable-swscale --enable-indevs --disable-alsa --enable-outdevs --enable-pthreads --enable-zlib --disable-bzlib --disable-libfdk-aac --disable-libcdio --disable-gnutls --enable-openssl --disable-libdrm --disable-libopenh264 --disable-vaapi --disable-vdpau --disable-mmal --disable-omx --disable-omx-rpi --disable-libopencv --disable-libopus --disable-libvpx --disable-libass --disable-libbluray --disable-libmfx --disable-librtmp --disable-libmp3lame --disable-libmodplug --disable-libspeex --disable-libtheora --disable-libwavpack --enable-iconv --disable-libfreetype --disable-fontconfig --disable-libopenjpeg --disable-libx264 --disable-libx265 --disable-libdav1d --disable-x86asm --disable-mmx --disable-sse --disable-sse2 --disable-sse3 --disable-ssse3 --disable-sse4 --disable-sse42 --disable-avx --disable-avx2 --enable-armv6 --enable-vfp --enable-neon --disable-altivec --extra-libs=-latomic --enable-pic --cpu=cortex-a7 --enable-omx --enable-swscale --enable-swscale-alpha --enable-filter=scale
libavutil 56. 31.100 / 56. 31.100
libavcodec 58. 54.100 / 58. 54.100
libavformat 58. 29.100 / 58. 29.100
libavdevice 58. 8.100 / 58. 8.100
libavfilter 7. 57.100 / 7. 57.100
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 5.100 / 5. 5.100
libswresample 3. 5.100 / 3. 5.100
Input #0, lavfi, from 'testsrc=duration=2:size=1280x720:rate=30':
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Video: rawvideo (RGB[24] / 0x18424752), rgb24, 1280x720 [SAR 1:1 DAR 16:9], 30 tbr, 30 tbn, 30 tbc
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (h264_omx))
Press [q] to stop, [?] for help
[h264_omx @ 0x6d440] libOMX_Core.so not found
[h264_omx @ 0x6d440] libOmxCore.so not found
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
Conversion failed!
离线
1.Do you have these two libraries on your board?(libOMX_Core.so libOmxCore.so)
The two libraries have different names in buildroot 2020.02.1.
2.You can refer to this person's decoding operation.
https://whycan.com/t_5398.html
3.You can also add a codec to ffmpeg, you can refer to this.
https://blog.csdn.net/ddddfang/article/details/89330895
离线
@sprintf
Thank you for help, I succesfully run cedarx in linux 5.4, but I can encode 640x480 at 50fps max from ov5640 camera data - cpu load 100%. How many fps do you get ?
离线
@sprintf
Thank you for help, I succesfully run cedarx in linux 5.4, but I can encode 640x480 at 50fps max from ov5640 camera data - cpu load 100%. How many fps do you get ?
HI Mr @niyazfattahov
HAve you solved "data - cpu load 100%" problrm?
离线
HI Mr @niyazfattahov
HAve you solved "data - cpu load 100%" problrm?
hi
no, I didn't find solution.
I think it is related with memory transaction, all I found out is that function like copy_from_user() consuming cpu ~ 40% at least
离线
p3im4n 说:HI Mr @niyazfattahov
HAve you solved "data - cpu load 100%" problrm?
hi
no, I didn't find solution.
I think it is related with memory transaction, all I found out is that function like copy_from_user() consuming cpu ~ 40% at least
HI Mr @niyazfattahov
maybe this help
please let me know if it works for you
最近编辑记录 p3im4n (2021-12-02 16:37:56)
离线
That is strange... Do you know which part of the driver program is invoking frequently copy_to_user? I suppose using memory mapping would be a more efficent way to transfer data from the kernel to userspace, but maybe special circumtances in the driver doesn't allow that.
离线
That is strange... Do you know which part of the driver program is invoking frequently copy_to_user? I suppose using memory mapping would be a more efficent way to transfer data from the kernel to userspace, but maybe special circumtances in the driver doesn't allow that.
I don't remember exactly, but it is related with V4L2. I found it by using perf tool. I launched ffmpeg with perf command. It can record events and show cpu usage by various functions/libraries/programs. I dont have enugh skills to deal this problem
离线
That is strange... Do you know which part of the driver program is invoking frequently copy_to_user? I suppose using memory mapping would be a more efficent way to transfer data from the kernel to userspace, but maybe special circumtances in the driver doesn't allow that.
in my previous post I put a link about memory mapping instead use copy_to_user
最近编辑记录 p3im4n (2021-12-03 15:56:01)
离线
有趣的!
請舉例說明如何使用 VE 解碼原始 h264 流。
Funny!
Please give an example how to decode a raw h264 stream using VE.
离线