milord Posted March 14, 2021 Posted March 14, 2021 Hello, I have recently tried a more recent kernel 5.10.x for my HummingBoard with imx6 solo. After playing with GPU/OpenGL acceleration I have noticed that there is no H.264/MJPEG Video acceleration present in the kernel. The video codec Chips&Media 960 driver module (kernel option VIDEO_CODA) is simply not build in. Why is that? Can it be enabled by default for future IMX6 builds? Thanks for your support!!
Igor Posted March 15, 2021 Posted March 15, 2021 Someone has to research if this is possible and enable here: https://github.com/armbian/build/blob/master/config/kernel/linux-imx6-current.config
milord Posted March 15, 2021 Author Posted March 15, 2021 Hi Igor, I reckon this "someone" could be me? I have build cubox kernel with the below diff on the "linux-imx6-current.config" and it apparently works. +CONFIG_MEDIA_PLATFORM_SUPPORT=y +CONFIG_V4L2_JPEG_HELPER=m +CONFIG_V4L_MEM2MEM_DRIVERS=y +CONFIG_VIDEO_CODA=m +CONFIG_VIDEO_IMX_VDOA=m 1. Kernel boots and is detecting the codec [ 29.911784] coda 2040000.vpu: Direct firmware load for vpu_fw_imx6d.bin failed with error -2 [ 29.961350] coda 2040000.vpu: Using fallback firmware vpu/vpu_fw_imx6d.bin [ 29.964619] coda 2040000.vpu: Firmware code revision: 46063 [ 29.964636] coda 2040000.vpu: Initialized CODA960. [ 29.964645] coda 2040000.vpu: Firmware version: 3.1.1 [ 29.969814] coda 2040000.vpu: encoder registered as video0 [ 29.970090] coda 2040000.vpu: decoder registered as video1 [ 29.970348] coda 2040000.vpu: encoder registered as video2 [ 29.970715] coda 2040000.vpu: decoder registered as video3 2. v4l2-ctl reports the devices as being CODA960 CODA960 (platform:coda): /dev/video0 /dev/video1 /dev/video2 /dev/video3 imx-capture (platform:ipu1_csi0): /dev/video4 imx-capture (platform:ipu1_csi1): /dev/video7 imx-capture (platform:ipu1_ic_prpenc): /dev/video5 imx-capture (platform:ipu1_ic_prpvf): /dev/video6 3. GStreamer has plugins for V4L2 video decoder, so finally lets give it a try with some h.264... gst-launch-1.0 filesrc location=Big_Buck_Bunny_720_10s_30MB.mp4 ! qtdemux name=demux demux.video_0 ! queue ! h264parse ! v4l2h264dec ! kmssink The video is ok, cat /proc/interrupts shows activity on the VPU, and the CPU load is low (5%-10% on i.mx.6 SOLO!), so the video acceleration is there!. Igor, can you take it from here and integrate it or should I dare and make a PR for this?
milord Posted March 17, 2021 Author Posted March 17, 2021 Got it, here : https://github.com/armbian/build/pull/2723 1
Recommended Posts