media: verisilicon: Add AV1 decoder mode and controls
authorBenjamin Gaignard <benjamin.gaignard@collabora.com>
Wed, 3 May 2023 08:34:31 +0000 (09:34 +0100)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Fri, 9 Jun 2023 15:15:15 +0000 (16:15 +0100)
Add AV1 decoder as new decoder mode to Hantro driver.
Register needed AV1 controls for the decoder.

Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com>
Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
drivers/media/platform/verisilicon/hantro.h
drivers/media/platform/verisilicon/hantro_drv.c

index 2989ebc631cc06b798e61bc606764254ba142a54..61480825b856e77c3f8463b76490b2e0f5c5e0fc 100644 (file)
@@ -38,6 +38,7 @@ struct hantro_postproc_ops;
 #define HANTRO_H264_DECODER    BIT(18)
 #define HANTRO_HEVC_DECODER    BIT(19)
 #define HANTRO_VP9_DECODER     BIT(20)
+#define HANTRO_AV1_DECODER     BIT(21)
 #define HANTRO_DECODERS                0xffff0000
 
 /**
@@ -111,6 +112,7 @@ struct hantro_variant {
  * @HANTRO_MODE_VP8_DEC: VP8 decoder.
  * @HANTRO_MODE_HEVC_DEC: HEVC decoder.
  * @HANTRO_MODE_VP9_DEC: VP9 decoder.
+ * @HANTRO_MODE_AV1_DEC: AV1 decoder
  */
 enum hantro_codec_mode {
        HANTRO_MODE_NONE = -1,
@@ -120,6 +122,7 @@ enum hantro_codec_mode {
        HANTRO_MODE_VP8_DEC,
        HANTRO_MODE_HEVC_DEC,
        HANTRO_MODE_VP9_DEC,
+       HANTRO_MODE_AV1_DEC,
 };
 
 /*
index 09c74a573ddb50e72e826b982eb167fd1b963fc6..8f6021e3953c90b2f87a971c7a57d1d1e43782af 100644 (file)
@@ -525,6 +525,27 @@ static const struct hantro_ctrl controls[] = {
                .cfg = {
                        .id = V4L2_CID_STATELESS_VP9_COMPRESSED_HDR,
                },
+       }, {
+               .codec = HANTRO_AV1_DECODER,
+               .cfg = {
+                       .id = V4L2_CID_STATELESS_AV1_FRAME,
+               },
+       }, {
+               .codec = HANTRO_AV1_DECODER,
+               .cfg = {
+                       .id = V4L2_CID_STATELESS_AV1_TILE_GROUP_ENTRY,
+                       .dims = { V4L2_AV1_MAX_TILE_COUNT },
+               },
+       }, {
+               .codec = HANTRO_AV1_DECODER,
+               .cfg = {
+                       .id = V4L2_CID_STATELESS_AV1_SEQUENCE,
+               },
+       }, {
+               .codec = HANTRO_AV1_DECODER,
+               .cfg = {
+                       .id = V4L2_CID_STATELESS_AV1_FILM_GRAIN,
+               },
        },
 };