Hello everyone!
I tried to enable cedrus264 encoder/decoder on my old OrangePI Lite 2 (revision 1 if I am right).
I used stulluk's repository as the base to patch the last FFMpeg revision and to add cedrus264 encoder using the new FFMpeg API. The result is built and tested. Unfortunately, I have had no success: the encoder says:
ffmpeg -f video4linux2 -input_format mjpeg -video_size 1280x720 -i /dev/video1 -c:v cedrus264 -pix_fmt nv12 -f mp4 video.mp4
ffmpeg version N-103904-gb2538ce578 Copyright (c) 2000-2021 the FFmpeg developers
built with clang version 12.0.1 (https://github.com/llvm/llvm-project.git fed41342a82f5a3a9201819a82bf7a48313e296b)
configuration: --enable-gpl --enable-nonfree --enable-shared --enable-frei0r --enable-gcrypt --enable-gmp --enable-gnutls --enable-ladspa --enable-libass --enable-libcaca --enable-libdc1394 --enable-libfdk-aac --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libmp3lame --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-librtmp --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-opengl --enable-libdrm --enable-vdpau --enable-version3 --enable-libspeex --enable-libxvid --enable-libvpx --prefix=/util/ffmpeg --extra-cflags='-O3 -mllvm -polly -I/util/include -I/util/ffmpeg/include' --extra-ldflags='-L/util/lib -L/util/ffmpeg/lib' --enable-encoder=cedrus264 --cc=clang --cxx=clang++
libavutil 57. 7.100 / 57. 7.100
libavcodec 59. 9.101 / 59. 9.101
libavformat 59. 5.100 / 59. 5.100
libavdevice 59. 0.101 / 59. 0.101
libavfilter 8. 10.100 / 8. 10.100
libswscale 6. 1.100 / 6. 1.100
libswresample 4. 0.100 / 4. 0.100
libpostproc 56. 0.100 / 56. 0.100
Input #0, video4linux2,v4l2, from '/dev/video1':
Duration: N/A, start: 17593.181597, bitrate: N/A
Stream #0:0: Video: mjpeg (Baseline), yuvj420p(pc, bt470bg/unknown/unknown), 1280x720 [SAR 1:1 DAR 16:9], 30 fps, 30 tbr, 1000k tbn
Stream mapping:
Stream #0:0 -> #0:0 (mjpeg (native) -> h264 (cedrus264))
Press [q] to stop, [?] for help
[swscaler @ 0x17450b90] [swscaler @ 0x1745e680] deprecated pixel format used, make sure you did set range correctly
[swscaler @ 0x17450b90] [swscaler @ 0x17496ea0] deprecated pixel format used, make sure you did set range correctly
[swscaler @ 0x17450b90] [swscaler @ 0x174ce7f0] deprecated pixel format used, make sure you did set range correctly
[swscaler @ 0x17450b90] [swscaler @ 0x17506140] deprecated pixel format used, make sure you did set range correctly
[swscaler @ 0x17450b90] [swscaler @ 0x1753da90] deprecated pixel format used, make sure you did set range correctly
[cedrus264 @ 0x17440360] VE Open error.
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
It seems the encoder is not enabled in the Armbian kernel 5.10.60-sunxi64 because the device descriptor is not available.
However, I will be glad to see the code reviews, test results and any other feedback. Sorry, but I am not so familiar with FFMpeg API to send pull requests.
Please visit the FFMPEG fork repository here, the default branch is cedrus264:
https://github.com/twdragon/FFmpeg