비디오 하드웨어 디코더 장치 문의드립니다

안녕하세요.

전파협회 과정 1팀입니다.

현재 Telechips TCC8050 기반 보드에서 GStreamer를 사용한 RTSP H.264 스트림 디코딩을 구현 중입니다.

소프트웨어 디코더(avdec_h264, libav)를 사용한 결과 CPU 점유율이 너무 높아 실시간 처리가 어렵기 때문에, 하드웨어 VPU 기반 H.264 디코더를 사용하고자 합니다.

현재 확인된 사항 :

  1. V4L2 기반 디코더를 BSP에서 확인
    • v4l2-core 일부 소스 존재

    • 그러나 tcc의 디코더 드라이버(v4l2 mem-to-mem) 는 보이지 않음

    1. GStreamer-OMX 레시피를 통해 omx 관련 플러그인으로 시도했지만,
    • 하드웨어 디코더용 드라이버가 없어 연동 불가

그런데 linux-telechips 5.4.159 기준:

drivers/media/platform 경로에 Telechips용 VPU 디코더 드라이버 소스가 존재하지 않으며

menuconfig에서는 vicodec 테스트용 드라이버와 일부 타 SoC용 mem-to-mem 항목만 보일 뿐, /dev/video10 장치를 디코더 기능으로 활성화할 수 있는 관련 설정 항목은 존재하지 않습니다.
Kconfig 파일에서 해당 항목이 누락된 것이 아닌지 확인해보았지만, 관련 드라이버 디렉토리 자체가 존재하지 않는 것으로 보입니다.

그래서 /dev/videoX 디바이스 중 V4L2 M2M 디코더가 생성이 어려운 상황입니다(output 기능으로만 있음)

root@telechips-tcc8050-main:~# v4l2-ctl --list-devices
11980000.dwc_otg (gadget):
        /dev/video0

vicodec (platform:vicodec):
        /dev/video1
        /dev/video2
        /dev/video3

Telechips video output (vout:0):
        /dev/video10

root@telechips-tcc8050-main:~#

현재 /drivers/media/platform에는 VPU관련하여 tcc 텔레칩스관련 코드가 보이지 않습니다.

iamyeju@DESKTOP-NGNQNNT:~/topst/build-main/tmp/work/tcc8050_main-telechips-linux/linux-telechips/5.4.159-r0/git/drivers/media/platform$ ls
Kconfig         cros-ec-cec        marvell-ccic   omap3isp      renesas-ceu.c  sh_veu.c       tccvout       vimc
Makefile        davinci            meson          pxa_camera.c  rockchip       sh_vou.c       tegra-cec     vivid
am437x          exynos-gsc         mtk-jpeg       qcom          s3c-camif      sti            ti-vpe        vsp1
aspeed-video.c  exynos4-is         mtk-mdp        rcar-fcp.c    s5p-cec        stm32          via-camera.c  xilinx
atmel           fsl-viu.c          mtk-vcodec     rcar-vin      s5p-g2d        sunxi          via-camera.h
cadence         imx-pxp.c          mtk-vpu        rcar_drif.c   s5p-jpeg       tcc-isp        vicodec
cec-gpio        imx-pxp.h          mx2_emmaprp.c  rcar_fdp1.c   s5p-mfc        tcc-mipi-csi2  video-mux.c
coda            m2m-deinterlace.c  omap           rcar_jpu.c    seco-cec       tccvin2        vim2m.c

vicodec (소프트웨어 가상 디코더)와 tcc-vout-video (출력 디바이스)만 존재합니다

이에 다음 과 같이 문의드립니다.

  1. TCC8050용 H.264 VPU 하드웨어 디코더 드라이버 소스 코드가 별도로 제공되는것인지

    mtk-vpu.c 는 있는데 tcc-vpu.c가 따로 있을것이라 예상했지만 없습니다. 이렇게 사용하는 것이 아닌지요?
    dts, dtsi 장치 트리 파일에 vpu 관련하여서도 보이지 않습니다.

  2. GStreamer에서 사용할 수 있는 v4l2h264dec 등의 플러그인 또는 다른 사용 가이드가 있는지 여쭤봅니다.

+추가

iamyeju@DESKTOP-NGNQNNT:~/topst/yocto/meta-topst/recipes-kernel/linux$ grep -i vpu linux-telechips_5.4.bbappend
RDEPENDS_kernel-modules_remove = "kernel-modules-vpu"
    echo "# CONFIG_TCC_VPU_DRV is not set"                          >> ${WORKDIR}/defconfig
iamyeju@DESKTOP-NGNQNNT:~/topst/yocto/meta-topst/recipes-kernel/linux$

안녕하세요. TOPST 입니다.

말씀하신대로 현재 v4l2 h264 encoder/decoder vpu 를 제공하고 있지 않습니다.

그러나, 현재 준비 중에 있으며 h.265 encoder/decoder 부터 순차적으로 Release 예정에 있습니다.

h.265는 2주 정도 일정으로 릴리즈 될 예정이고,

h.264도 뒤를 이어 내부 검토를 걸쳐 릴리즈 될 예정입니다.

모두 gstreamer plugin을 통해 사용하실 수 있습니다.

조금만 기다려주세요.

고맙습니다.

네 알겠습니다.

그렇다면 최대한 소프트웨어 디코더 최적화로 일단 해봐야할 것 같습니다.

답변 감사합니다!