[RFC,0/6] VP8 H1 stateless encoding

Message ID 20231004103720.3540436-1-hugues.fruchet@foss.st.com
Headers
Series VP8 H1 stateless encoding |

Message

Hugues Fruchet Oct. 4, 2023, 10:37 a.m. UTC
  Hi all,

Here is an RFC to support VP8 encoding using Hantro H1 hardware
of STM32MP25 SoCs (Verisilicon VC8000NanoE IP).
This work is derived from work done to support Rockchip RK3399
VPU2 in RFC [1] with a reshuffling of registers to match H1
register set.

This has been tested on STM32MP257F-EV1 evaluation board using
GStreamer userspace [2]:
gst-launch-1.0 videotestsrc num-buffers=500 ! video/x-raw,width=640,height=480 \
! v4l2slvp8enc ! queue ! matroskamux ! filesink location=test_vp8.mkv

For the sake of simplicity I have embedded here the RFC [1] before the
changes related to this exact RFC, all rebased on v6.6 + STM32MP25
hardware codecs support [3].

[1] https://lwn.net/ml/linux-media/20230309125651.23911-1-andrzej.p@collabora.com/
[2] https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3736
[3] https://patchwork.kernel.org/project/linux-media/list/?series=789861

Best regards,
Hugues.


Andrzej Pietrasiewicz (2):
  media: uapi: Add VP8 stateless encoder controls
  media: hantro: add VP8 encode support for Rockchip RK3399 VPU2

Hugues Fruchet (4):
  media: hantro: add h1 vp8 encode support
  media: hantro: add VP8 encode support for STM32MP25 VENC
  media: hantro: h1: NV12 single-plane support
  media: hantro: add NV12 single-plane support for STM32MP25 VENC

 drivers/media/platform/verisilicon/Makefile   |    3 +
 drivers/media/platform/verisilicon/hantro.h   |   10 +
 .../platform/verisilicon/hantro_boolenc.c     |   69 +
 .../platform/verisilicon/hantro_boolenc.h     |   21 +
 .../media/platform/verisilicon/hantro_drv.c   |   15 +-
 .../platform/verisilicon/hantro_h1_jpeg_enc.c |   42 +-
 .../platform/verisilicon/hantro_h1_regs.h     |   71 +-
 .../platform/verisilicon/hantro_h1_vp8_enc.c  | 1589 +++++++++++++++++
 .../media/platform/verisilicon/hantro_hw.h    |   93 +
 .../media/platform/verisilicon/hantro_v4l2.c  |    5 +-
 .../media/platform/verisilicon/hantro_vp8.c   |  118 ++
 .../verisilicon/rockchip_vpu2_hw_vp8_enc.c    | 1574 ++++++++++++++++
 .../platform/verisilicon/rockchip_vpu2_regs.h |    1 +
 .../platform/verisilicon/rockchip_vpu_hw.c    |   23 +-
 .../platform/verisilicon/stm32mp25_venc_hw.c  |   35 +-
 drivers/media/v4l2-core/v4l2-ctrls-core.c     |   13 +
 drivers/media/v4l2-core/v4l2-ctrls-defs.c     |    5 +
 include/media/v4l2-ctrls.h                    |    2 +
 include/uapi/linux/v4l2-controls.h            |   91 +
 include/uapi/linux/videodev2.h                |    3 +
 20 files changed, 3755 insertions(+), 28 deletions(-)
 create mode 100644 drivers/media/platform/verisilicon/hantro_boolenc.c
 create mode 100644 drivers/media/platform/verisilicon/hantro_boolenc.h
 create mode 100644 drivers/media/platform/verisilicon/hantro_h1_vp8_enc.c
 create mode 100644 drivers/media/platform/verisilicon/rockchip_vpu2_hw_vp8_enc.c
  

Comments

Conor Dooley Oct. 5, 2023, 10:59 a.m. UTC | #1
On Wed, Oct 04, 2023 at 12:37:14PM +0200, Hugues Fruchet wrote:
> Hi all,
> 
> Here is an RFC to support VP8 encoding using Hantro H1 hardware
> of STM32MP25 SoCs (Verisilicon VC8000NanoE IP).
> This work is derived from work done to support Rockchip RK3399
> VPU2 in RFC [1] with a reshuffling of registers to match H1
> register set.
> 
> This has been tested on STM32MP257F-EV1 evaluation board using
> GStreamer userspace [2]:
> gst-launch-1.0 videotestsrc num-buffers=500 ! video/x-raw,width=640,height=480 \
> ! v4l2slvp8enc ! queue ! matroskamux ! filesink location=test_vp8.mkv
> 
> For the sake of simplicity I have embedded here the RFC [1] before the
> changes related to this exact RFC, all rebased on v6.6 + STM32MP25
> hardware codecs support [3].

I don't see any bindings etc here, what is it that you think I would
care about looking at in this RFC series?

Thanks,
Conor.

> 
> [1] https://lwn.net/ml/linux-media/20230309125651.23911-1-andrzej.p@collabora.com/
> [2] https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3736
> [3] https://patchwork.kernel.org/project/linux-media/list/?series=789861
> 
> Best regards,
> Hugues.
> 
> 
> Andrzej Pietrasiewicz (2):
>   media: uapi: Add VP8 stateless encoder controls
>   media: hantro: add VP8 encode support for Rockchip RK3399 VPU2
> 
> Hugues Fruchet (4):
>   media: hantro: add h1 vp8 encode support
>   media: hantro: add VP8 encode support for STM32MP25 VENC
>   media: hantro: h1: NV12 single-plane support
>   media: hantro: add NV12 single-plane support for STM32MP25 VENC
> 
>  drivers/media/platform/verisilicon/Makefile   |    3 +
>  drivers/media/platform/verisilicon/hantro.h   |   10 +
>  .../platform/verisilicon/hantro_boolenc.c     |   69 +
>  .../platform/verisilicon/hantro_boolenc.h     |   21 +
>  .../media/platform/verisilicon/hantro_drv.c   |   15 +-
>  .../platform/verisilicon/hantro_h1_jpeg_enc.c |   42 +-
>  .../platform/verisilicon/hantro_h1_regs.h     |   71 +-
>  .../platform/verisilicon/hantro_h1_vp8_enc.c  | 1589 +++++++++++++++++
>  .../media/platform/verisilicon/hantro_hw.h    |   93 +
>  .../media/platform/verisilicon/hantro_v4l2.c  |    5 +-
>  .../media/platform/verisilicon/hantro_vp8.c   |  118 ++
>  .../verisilicon/rockchip_vpu2_hw_vp8_enc.c    | 1574 ++++++++++++++++
>  .../platform/verisilicon/rockchip_vpu2_regs.h |    1 +
>  .../platform/verisilicon/rockchip_vpu_hw.c    |   23 +-
>  .../platform/verisilicon/stm32mp25_venc_hw.c  |   35 +-
>  drivers/media/v4l2-core/v4l2-ctrls-core.c     |   13 +
>  drivers/media/v4l2-core/v4l2-ctrls-defs.c     |    5 +
>  include/media/v4l2-ctrls.h                    |    2 +
>  include/uapi/linux/v4l2-controls.h            |   91 +
>  include/uapi/linux/videodev2.h                |    3 +
>  20 files changed, 3755 insertions(+), 28 deletions(-)
>  create mode 100644 drivers/media/platform/verisilicon/hantro_boolenc.c
>  create mode 100644 drivers/media/platform/verisilicon/hantro_boolenc.h
>  create mode 100644 drivers/media/platform/verisilicon/hantro_h1_vp8_enc.c
>  create mode 100644 drivers/media/platform/verisilicon/rockchip_vpu2_hw_vp8_enc.c
> 
> -- 
> 2.25.1
>
  
Hugues Fruchet Oct. 5, 2023, 11:46 a.m. UTC | #2
Hi Conor,

My fault, mistake on "to" when sending mail, please ignore this serie 
there are no bindings/DT in it.
Sorry for disturbance.

Best regards,
Hugues.

On 10/5/23 12:59, Conor Dooley wrote:
> On Wed, Oct 04, 2023 at 12:37:14PM +0200, Hugues Fruchet wrote:
>> Hi all,
>>
>> Here is an RFC to support VP8 encoding using Hantro H1 hardware
>> of STM32MP25 SoCs (Verisilicon VC8000NanoE IP).
>> This work is derived from work done to support Rockchip RK3399
>> VPU2 in RFC [1] with a reshuffling of registers to match H1
>> register set.
>>
>> This has been tested on STM32MP257F-EV1 evaluation board using
>> GStreamer userspace [2]:
>> gst-launch-1.0 videotestsrc num-buffers=500 ! video/x-raw,width=640,height=480 \
>> ! v4l2slvp8enc ! queue ! matroskamux ! filesink location=test_vp8.mkv
>>
>> For the sake of simplicity I have embedded here the RFC [1] before the
>> changes related to this exact RFC, all rebased on v6.6 + STM32MP25
>> hardware codecs support [3].
> 
> I don't see any bindings etc here, what is it that you think I would
> care about looking at in this RFC series?
> 
> Thanks,
> Conor.
> 
>>
>> [1] https://lwn.net/ml/linux-media/20230309125651.23911-1-andrzej.p@collabora.com/
>> [2] https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3736
>> [3] https://patchwork.kernel.org/project/linux-media/list/?series=789861
>>
>> Best regards,
>> Hugues.
>>
>>
>> Andrzej Pietrasiewicz (2):
>>    media: uapi: Add VP8 stateless encoder controls
>>    media: hantro: add VP8 encode support for Rockchip RK3399 VPU2
>>
>> Hugues Fruchet (4):
>>    media: hantro: add h1 vp8 encode support
>>    media: hantro: add VP8 encode support for STM32MP25 VENC
>>    media: hantro: h1: NV12 single-plane support
>>    media: hantro: add NV12 single-plane support for STM32MP25 VENC
>>
>>   drivers/media/platform/verisilicon/Makefile   |    3 +
>>   drivers/media/platform/verisilicon/hantro.h   |   10 +
>>   .../platform/verisilicon/hantro_boolenc.c     |   69 +
>>   .../platform/verisilicon/hantro_boolenc.h     |   21 +
>>   .../media/platform/verisilicon/hantro_drv.c   |   15 +-
>>   .../platform/verisilicon/hantro_h1_jpeg_enc.c |   42 +-
>>   .../platform/verisilicon/hantro_h1_regs.h     |   71 +-
>>   .../platform/verisilicon/hantro_h1_vp8_enc.c  | 1589 +++++++++++++++++
>>   .../media/platform/verisilicon/hantro_hw.h    |   93 +
>>   .../media/platform/verisilicon/hantro_v4l2.c  |    5 +-
>>   .../media/platform/verisilicon/hantro_vp8.c   |  118 ++
>>   .../verisilicon/rockchip_vpu2_hw_vp8_enc.c    | 1574 ++++++++++++++++
>>   .../platform/verisilicon/rockchip_vpu2_regs.h |    1 +
>>   .../platform/verisilicon/rockchip_vpu_hw.c    |   23 +-
>>   .../platform/verisilicon/stm32mp25_venc_hw.c  |   35 +-
>>   drivers/media/v4l2-core/v4l2-ctrls-core.c     |   13 +
>>   drivers/media/v4l2-core/v4l2-ctrls-defs.c     |    5 +
>>   include/media/v4l2-ctrls.h                    |    2 +
>>   include/uapi/linux/v4l2-controls.h            |   91 +
>>   include/uapi/linux/videodev2.h                |    3 +
>>   20 files changed, 3755 insertions(+), 28 deletions(-)
>>   create mode 100644 drivers/media/platform/verisilicon/hantro_boolenc.c
>>   create mode 100644 drivers/media/platform/verisilicon/hantro_boolenc.h
>>   create mode 100644 drivers/media/platform/verisilicon/hantro_h1_vp8_enc.c
>>   create mode 100644 drivers/media/platform/verisilicon/rockchip_vpu2_hw_vp8_enc.c
>>
>> -- 
>> 2.25.1
>>