[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <540d98ea-114c-43bc-94c0-e944b5613d74@amlogic.com>
Date: Tue, 28 Oct 2025 19:47:40 +0800
From: Zhentao Guo <zhentao.guo@...ogic.com>
To: Neil Armstrong <neil.armstrong@...aro.org>,
Mauro Carvalho Chehab <mchehab@...nel.org>, Rob Herring <robh@...nel.org>,
Krzysztof Kozlowski <krzk+dt@...nel.org>, Conor Dooley
<conor+dt@...nel.org>, Kevin Hilman <khilman@...libre.com>,
Jerome Brunet <jbrunet@...libre.com>,
Martin Blumenstingl <martin.blumenstingl@...glemail.com>
Cc: linux-media@...r.kernel.org, devicetree@...r.kernel.org,
linux-kernel@...r.kernel.org, linux-arm-kernel@...ts.infradead.org,
linux-amlogic@...ts.infradead.org
Subject: Re: [PATCH 0/3] Add Amlogic stateless H.264 video decoder for S4
在 2025/10/28 18:50, Neil Armstrong 写道:
> [ EXTERNAL EMAIL ]
>
> Hi,
>
> On 10/27/25 06:42, Zhentao Guo via B4 Relay wrote:
>> Introduce initial driver support for Amlogic's new video acceleration
>> hardware architecture, designed for video stream decoding.
>>
>> Compared to the current Amlogic video decoder hardware architecture,
>> this new implementation eliminates the Esparser hardware component,
>> enabling direct vb2 buffer input. The driver is designed to support
>> the V4L2 M2M stateless decoder API. The initial phase includes support
>> for H.264 decoding on Amlogic S805X2 platform.
>>
>> The driver is capable of:
>> - Supporting stateless H.264 decoding up to a resolution 1920x1088(on
>> the S805X2 platform).
>> - Supporting I/P/B frame handling.
>> - Supporting vb2 mmap and dma-buf modes.
>> - Supporting frame-based decode mode. (Note that some H.264
>> bitstreams require
>> DPB reordering to generate reference lists, the stateless decoder
>> driver
>> cannot access reordered reference lists in this mode, requiring
>> the driver
>> to perform reference list reordering itself)
>> - Supporting NV12/NV21 output.
>> - Supporting Annex B start codes.
>
> Thanks for the initial drop, it's very nice !
>
> First of all, this still requires some work so it would be better if you
> used the RFC tag until all issues are sorted out.
>
Thanks for the reminder, I will add the RFC tag from the next patch
version.
> You didn't tell anything about the firmware, did you build a specific
> version
> of the firmware to handle the stateless and bypass ESPARSER ?
> Will this technique work with the released firmwares of GXL/G12/SM1 ?
For the firmware, we need to build a specific version for stateless decoder
driver. The ESPARSER is fully dropped. As I mentioned, this technique needs
specific firmware so it would not work with the released firmware of the
older
SOCs. We plan to submit the new firmware to the linux-firmware repo. I will
share the commit once the upload is completed.
>
> Will you support the compressed format and 10bit with this ?
No, the compressed format and 10bit are not supported.
>
>>
>> This driver is tested with Gstreamer.
>> Example:
>> gst-launch-1.0 filesrc
>> location=/tmp/video_640x360_mp4_hevc_450kbps_no_b.mp4 !
>> parsebin ! v4l2slh264dec ! filesink location=/tmp/output.yuv
>>
>> The driver passes v4l2 compliance test, test reports :
>> v4l2-compliance 1.30.1, 64 bits, 64-bit time_t
>>
>> Compliance test for aml-vdec-drv device /dev/video0:
>>
>> Driver Info:
>> Driver name : aml-vdec-drv
>> Card type : platform:aml-vdec-drv
>> Bus info : platform:fe320000.video-codec
>> Driver version : 6.16.0
>> 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 Stateless Decoder
>> Media Driver Info:
>> Driver name : aml-vdec-drv
>> Model : aml-vdec-drv
>> Serial :
>> Bus info : platform:fe320000.video-codec
>> Media version : 6.16.0
>> Hardware revision: 0x00000000 (0)
>> Driver version : 6.16.0
>> Interface Info:
>> ID : 0x0300000c
>> Type : V4L Video
>> Entity Info:
>> ID : 0x00000001 (1)
>> Name : aml_dev_drv-source
>> Function : V4L2 I/O
>> Pad 0x01000002 : 0: Source
>> Link 0x02000008: to remote pad 0x1000004 of entity
>> 'aml_dev_drv-proc' (Video Decoder): Data, Enabled, Immutable
>>
>> Required ioctls:
>> test MC information (see 'Media Driver Info' above): OK
>> test VIDIOC_QUERYCAP: OK
>> test invalid ioctls: 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: 6 Private Controls: 0
>> Standard Compound Controls: 4 Private Compound Controls: 0
>>
>> 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 (Not Supported)
>> test Scaling: OK (Not Supported)
>>
>> 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 CREATE_BUFS maximum buffers: OK
>> test VIDIOC_REMOVE_BUFS: OK
>> test VIDIOC_EXPBUF: OK
>> test Requests: OK
>> test blocking wait: OK
>
> Please also enable the streaming tests.
Yes, we did some streaming tests with Gstreamer, fluster test and bug
fix is also in progress.
>>
>> Total for aml-vdec-drv device /dev/video0: 49, Succeeded: 49, Failed:
>> 0, Warnings: 0
>>
>> Some Fluster test cases are still failing. We will publish the final
>> results
>> once all these Fluster test failures have been resolved.
>
> As Christian reported, please add the flutter results aswell.
Thanks. We have now tested the JVT-AVC_V1.
Result:
Ran 54/135 tests successfully
- 52 test vectors failed due to interlaced or mbaff clips: The Amlogic
stateless
decoder driver only support bitstreams with frame_mbs_only_flags == 1.
Test Vectors:
cabac_mot_fld0_full
cabac_mot_mbaff0_full
cabac_mot_picaff0_full
CABREF3_Sand_D
CAFI1_SVA_C
CAMA1_Sony_C
CAMA1_TOSHIBA_B
cama1_vtc_c
cama2_vtc_b
CAMA3_Sand_E
cama3_vtc_b
CAMACI3_Sony_C
CAMANL1_TOSHIBA_B
CAMANL2_TOSHIBA_B
CAMANL3_Sand_E
CAMASL3_Sony_B
CAMP_MOT_MBAFF_L30
CAMP_MOT_MBAFF_L31
CANLMA2_Sony_C
CANLMA3_Sony_C
CAPA1_TOSHIBA_B
CAPAMA3_Sand_F
cavlc_mot_fld0_full_B
cavlc_mot_mbaff0_full_B
cavlc_mot_picaff0_full_B
CVCANLMA2_Sony_C
CVFI1_Sony_D
CVFI1_SVA_C
CVFI2_Sony_H
CVFI2_SVA_C
CVMA1_Sony_D
CVMA1_TOSHIBA_B
CVMANL1_TOSHIBA_B
CVMANL2_TOSHIBA_B
CVMAPAQP3_Sony_E
CVMAQP2_Sony_G
CVMAQP3_Sony_D
CVMP_MOT_FLD_L30_B
CVNLFI1_Sony_C
CVNLFI2_Sony_H
CVPA1_TOSHIBA_B
FI1_Sony_E
MR6_BT_B
MR7_BT_B
MR8_BT_B
MR9_BT_B
Sharp_MP_Field_1_B
Sharp_MP_Field_2_B
Sharp_MP_Field_3_B
Sharp_MP_PAFF_1r2
Sharp_MP_PAFF_2r
CVMP_MOT_FRM_L31_B
- 3 test vectors failed due to unsupported bitstream.
num_slice_group_minus1 greater than zero is not supported by the
hardware.
Test Vectors:
FM1_BT_B
FM1_FT_E
FM2_SVA_C
- 2 test vectors failed because SP_SLICE type is not supported by the
hardware.
Test Vectors:
SP1_BT_A
sp2_bt_b
We are working with the remain failures, we think that these fail cases
must be resolved.
I'll add the fluster result to the cover-letter from the next patch version.
>
> Neil
>
>>
>> Signed-off-by: Zhentao Guo <zhentao.guo@...ogic.com>
>> ---
>> Zhentao Guo (3):
>> dt-bindings: vdec: Add binding document of Amlogic decoder
>> accelerator
>> dts: decoder: Support V4L2 stateless decoder dt node for S4
>> decoder: Add V4L2 stateless H.264 decoder driver
>>
>> .../bindings/media/amlogic,vcodec-dec.yaml | 96 ++
>> MAINTAINERS | 7 +
>> arch/arm64/boot/dts/amlogic/meson-s4.dtsi | 24 +
>> drivers/media/platform/amlogic/Kconfig | 2 +
>> drivers/media/platform/amlogic/Makefile | 1 +
>> drivers/media/platform/amlogic/vdec/Kconfig | 15 +
>> drivers/media/platform/amlogic/vdec/Makefile | 4 +
>> drivers/media/platform/amlogic/vdec/aml_vdec.c | 759 +++++++++
>> drivers/media/platform/amlogic/vdec/aml_vdec.h | 31 +
>> .../platform/amlogic/vdec/aml_vdec_canvas_utils.c | 154 ++
>> .../platform/amlogic/vdec/aml_vdec_canvas_utils.h | 22 +
>> drivers/media/platform/amlogic/vdec/aml_vdec_drv.c | 263 +++
>> drivers/media/platform/amlogic/vdec/aml_vdec_drv.h | 194 +++
>> drivers/media/platform/amlogic/vdec/aml_vdec_hw.c | 652 +++++++
>> drivers/media/platform/amlogic/vdec/aml_vdec_hw.h | 182 ++
>> .../platform/amlogic/vdec/aml_vdec_platform.c | 37 +
>> .../platform/amlogic/vdec/aml_vdec_platform.h | 62 +
>> drivers/media/platform/amlogic/vdec/h264.c | 1790
>> ++++++++++++++++++++
>> drivers/media/platform/amlogic/vdec/h264.h | 300 ++++
>> drivers/media/platform/amlogic/vdec/reg_defines.h | 175 ++
>> 20 files changed, 4770 insertions(+)
>> ---
>> base-commit: 72fb0170ef1f45addf726319c52a0562b6913707
>> change-id: 20251027-b4-s4-vdec-upstream-0603c1a4c84a
>>
>> Best regards,
>
Thank you
Zhentao
Powered by blists - more mailing lists