Re: [PATCH v7 0/6] staging: media: wave5: add wave5 codec driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Nas,

On 25/04/2022 12:16, Nas Chung wrote:
> The wave5 codec is a stateful encoder/decoder.
> It is found on the J721S2 SoC, JH7100 SoC, ssd202d SoC. Etc..
> But current test report is based on J721S2 SoC.
> 
> The driver currently supports V4L2_PIX_FMT_HEVC, V4L2_PIX_FMT_H264.
> 
> This driver has so far been tested on J721S2 EVM board and pre-silicon FPGA.
> 
> Testing on J721S2 EVM board shows it working fine both decoder and encoder.
> The driver is successfully working with gstreamer v4l2 good-plugin without any modification.
> 
> Testing on FPGA also shows it working fine, though the FPGA uses polled interrupts and copied buffers between the host and it's on board RAM.
> 
> The wave5 driver will be updated to support various EXT_CTRL encoder interface.

Please note that for some unknown reason neither v6 nor v7 ever reached the
linux-media mailinglist. Can you try to repost, this time just to the mailinglist
and with a CC to me?

I have seen this problem before but it was never clear why linux-media would
reject it. If you have an alternative email address you can email from, then
you can try that as well.

> 
> v4l2-compliance tests from J721S2:
> 
> # v4l2-compliance -d0
> v4l2-compliance SHA: not available, 64 bits

You must compile v4l2-compliance from the v4l-utils git repo. You can tell because
the SHA will be shown. That way I can be certain you tested with the latest
v4l2-compliance.

> 
> Compliance test for vpu-dec device /dev/video0:
> 
> Driver Info:
>         Driver name      : vpu-dec
>         Card type        : vpu-dec
>         Bus info         : platform:vpu-dec
>         Driver version   : 5.10.100

5.10 is really quite old, is it possible to test with a newer kernel?

Regards,

	Hans

>         Capabilities     : 0x84204000
>                 Video Memory-to-Memory Multiplanar
>                 Streaming
>                 Extended Pix Format
>                 Device Capabilities
>         Device Caps      : 0x04204000
>                 Video Memory-to-Memory Multiplanar
>                 Streaming
>                 Extended Pix Format
>         Detected Stateful Decoder
> 
> Required ioctls:
>         test VIDIOC_QUERYCAP: OK
> 
> Allow for multiple opens:
>         test second /dev/video0 open: OK
>         test VIDIOC_QUERYCAP: OK
>         test VIDIOC_G/S_PRIORITY: OK
>         test for unlimited opens: OK
> 
> Debug ioctls:
>         test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
>         test VIDIOC_LOG_STATUS: OK (Not Supported)
> 
> Input ioctls:
>         test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
>         test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>         test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
>         test VIDIOC_ENUMAUDIO: OK (Not Supported)
>         test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
>         test VIDIOC_G/S_AUDIO: OK (Not Supported)
>         Inputs: 0 Audio Inputs: 0 Tuners: 0
> 
> Output ioctls:
>         test VIDIOC_G/S_MODULATOR: OK (Not Supported)
>         test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>         test VIDIOC_ENUMAUDOUT: OK (Not Supported)
>         test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
>         test VIDIOC_G/S_AUDOUT: OK (Not Supported)
>         Outputs: 0 Audio Outputs: 0 Modulators: 0
> 
> Input/Output configuration ioctls:
>         test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
>         test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
>         test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
>         test VIDIOC_G/S_EDID: OK (Not Supported)
> 
> Control ioctls:
>         test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK
>         test VIDIOC_QUERYCTRL: OK
>         test VIDIOC_G/S_CTRL: OK
>         test VIDIOC_G/S/TRY_EXT_CTRLS: OK
>         test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK
>         test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
>         Standard Controls: 2 Private Controls: 1
> 
> Format ioctls:
>         test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
>         test VIDIOC_G/S_PARM: OK (Not Supported)
>         test VIDIOC_G_FBUF: OK (Not Supported)
>         test VIDIOC_G_FMT: OK
>         test VIDIOC_TRY_FMT: OK
>         test VIDIOC_S_FMT: OK
>         test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
>         test Cropping: OK (Not Supported)
>         test Composing: OK
>         test Scaling: OK
> 
> Codec ioctls:
>         test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
>         test VIDIOC_G_ENC_INDEX: OK (Not Supported)
>         test VIDIOC_(TRY_)DECODER_CMD: OK
> 
> Buffer ioctls:
>         test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
>         test VIDIOC_EXPBUF: OK
>         test Requests: OK (Not Supported)
> 
> Total for vpu-dec device /dev/video0: 44, Succeeded: 44, Failed: 0, Warnings: 0
> 
> # v4l2-compliance -d1
> v4l2-compliance SHA: not available, 64 bits
> 
> Compliance test for vpu-enc device /dev/video1:
> 
> Driver Info:
>         Driver name      : vpu-enc
>         Card type        : vpu-enc
>         Bus info         : platform:vpu-enc
>         Driver version   : 5.10.100
>         Capabilities     : 0x84204000
>                 Video Memory-to-Memory Multiplanar
>                 Streaming
>                 Extended Pix Format
>                 Device Capabilities
>         Device Caps      : 0x04204000
>                 Video Memory-to-Memory Multiplanar
>                 Streaming
>                 Extended Pix Format
>         Detected Stateful Encoder
> 
> Required ioctls:
>         test VIDIOC_QUERYCAP: OK
> 
> Allow for multiple opens:
>         test second /dev/video1 open: OK
>         test VIDIOC_QUERYCAP: OK
>         test VIDIOC_G/S_PRIORITY: OK
>         test for unlimited opens: OK
> 
> Debug ioctls:
>         test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
>         test VIDIOC_LOG_STATUS: OK (Not Supported)
> 
> Input ioctls:
>         test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
>         test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>         test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
>         test VIDIOC_ENUMAUDIO: OK (Not Supported)
>         test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
>         test VIDIOC_G/S_AUDIO: OK (Not Supported)
>         Inputs: 0 Audio Inputs: 0 Tuners: 0
> 
> Output ioctls:
>         test VIDIOC_G/S_MODULATOR: OK (Not Supported)
>         test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>         test VIDIOC_ENUMAUDOUT: OK (Not Supported)
>         test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
>         test VIDIOC_G/S_AUDOUT: OK (Not Supported)
>         Outputs: 0 Audio Outputs: 0 Modulators: 0
> 
> Input/Output configuration ioctls:
>         test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
>         test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
>         test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
>         test VIDIOC_G/S_EDID: OK (Not Supported)
> 
> Control ioctls:
>         test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK
>         test VIDIOC_QUERYCTRL: OK
>         test VIDIOC_G/S_CTRL: OK
>         test VIDIOC_G/S/TRY_EXT_CTRLS: OK
>         test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK
>         test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
>         Standard Controls: 15 Private Controls: 0
> 
> Format ioctls:
>         test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
>                 warn: ../../../v4l-utils-1.18.1/utils/v4l2-compliance/v4l2-test-formats.cpp(1320): S_PARM is supported for buftype 2, but not for ENUM_FRAMEINTERVALS
>                 warn: ../../../v4l-utils-1.18.1/utils/v4l2-compliance/v4l2-test-formats.cpp(1320): S_PARM is supported for buftype 10, but not for ENUM_FRAMEINTERVALS
>         test VIDIOC_G/S_PARM: OK
>         test VIDIOC_G_FBUF: OK (Not Supported)
>         test VIDIOC_G_FMT: OK
>         test VIDIOC_TRY_FMT: OK
>         test VIDIOC_S_FMT: OK
>         test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
>         test Cropping: OK
>         test Composing: OK (Not Supported)
>         test Scaling: OK
> 
> Codec ioctls:
>         test VIDIOC_(TRY_)ENCODER_CMD: OK
>         test VIDIOC_G_ENC_INDEX: OK (Not Supported)
>         test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
> 
> Buffer ioctls:
>         test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
>         test VIDIOC_EXPBUF: OK
>         test Requests: OK (Not Supported)
> 
> Total for vpu-enc device /dev/video1: 44, Succeeded: 44, Failed: 0, Warnings: 2
> 
> changes since v6:
> 
> * update TODO file
> * get sram info from device tree
> 
> changes since v5:
> 
> * support NV12/NV21 pixelformat for encoder and decoder
> * handle adnormal exit and EOS
> 
> changes since v4:
> 
> * refactor functions in wave5-hw and fix bug reported by Daniel Palmer
> * rename functions and variables to better names
> * change variable types such as replacing s32 with u32 and int with bool as appropriate
> 
> changes since v3:
> 
> * Fixing all issues commented by Dan Carpenter
> * Change file names to have wave5- prefix
> * In wave5_vpu_probe, enable the clocks before reading registers, as commented from Daniel Palmer
> * Add more to the TODO list,
> 
> changes since v2:
> 
> Main fixes includes:
> * change the yaml and dirver code to support up to 4 clks (instead of one)
> * fix Kconfig format
> * remove unneeded cast,
> * change var types
> * change var names, func names
> * checkpatch fixes
> 
> changes since v1:
> 
> Fix chanes due to comments from Ezequiel and Dan Carpenter. Main fixes inclueds:
> * move all files to one dir 'wave5'
> * replace private error codes with standart error codes
> * fix extra spaces
> * various checkpatch fixes
> * replace private 'DPRINTK' macro with standart 'dev_err/dbg ..'
> * fix error handling
> * add more possible fixes to the TODO file
> 
> 
> Dafna Hirschfeld (1):
>   staging: media: wave5: Add the vdi layer
> 
> Nas Chung (3):
>   staging: media: wave5: Add vpuapi layer
>   staging: media: wave5: Add the v4l2 layer
>   staging: media: wave5: Add TODO file
> 
> Robert Beckett (2):
>   dt-bindings: media: staging: wave5: add yaml devicetree bindings
>   media: wave5: Add wave5 driver to maintainers file
> 
>  .../bindings/staging/media/cnm,wave.yaml      |   73 +
>  MAINTAINERS                                   |    9 +
>  drivers/staging/media/Kconfig                 |    2 +
>  drivers/staging/media/Makefile                |    1 +
>  drivers/staging/media/wave5/Kconfig           |   12 +
>  drivers/staging/media/wave5/Makefile          |   10 +
>  drivers/staging/media/wave5/TODO              |   34 +
>  drivers/staging/media/wave5/wave5-hw.c        | 3405 +++++++++++++++++
>  drivers/staging/media/wave5/wave5-regdefine.h |  655 ++++
>  drivers/staging/media/wave5/wave5-vdi.c       |  260 ++
>  drivers/staging/media/wave5/wave5-vdi.h       |   81 +
>  drivers/staging/media/wave5/wave5-vpu-dec.c   | 1385 +++++++
>  drivers/staging/media/wave5/wave5-vpu-enc.c   | 1532 ++++++++
>  drivers/staging/media/wave5/wave5-vpu.c       |  381 ++
>  drivers/staging/media/wave5/wave5-vpu.h       |   73 +
>  drivers/staging/media/wave5/wave5-vpuapi.c    | 1049 +++++
>  drivers/staging/media/wave5/wave5-vpuapi.h    | 1144 ++++++
>  drivers/staging/media/wave5/wave5-vpuconfig.h |   91 +
>  drivers/staging/media/wave5/wave5-vpuerror.h  |  455 +++
>  drivers/staging/media/wave5/wave5.h           |   82 +
>  20 files changed, 10734 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/staging/media/cnm,wave.yaml
>  create mode 100644 drivers/staging/media/wave5/Kconfig
>  create mode 100644 drivers/staging/media/wave5/Makefile
>  create mode 100644 drivers/staging/media/wave5/TODO
>  create mode 100644 drivers/staging/media/wave5/wave5-hw.c
>  create mode 100644 drivers/staging/media/wave5/wave5-regdefine.h
>  create mode 100644 drivers/staging/media/wave5/wave5-vdi.c
>  create mode 100644 drivers/staging/media/wave5/wave5-vdi.h
>  create mode 100644 drivers/staging/media/wave5/wave5-vpu-dec.c
>  create mode 100644 drivers/staging/media/wave5/wave5-vpu-enc.c
>  create mode 100644 drivers/staging/media/wave5/wave5-vpu.c
>  create mode 100644 drivers/staging/media/wave5/wave5-vpu.h
>  create mode 100644 drivers/staging/media/wave5/wave5-vpuapi.c
>  create mode 100644 drivers/staging/media/wave5/wave5-vpuapi.h
>  create mode 100644 drivers/staging/media/wave5/wave5-vpuconfig.h
>  create mode 100644 drivers/staging/media/wave5/wave5-vpuerror.h
>  create mode 100644 drivers/staging/media/wave5/wave5.h
> 




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux