lkml.org 
[lkml]   [2021]   [Feb]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH v1 02/18] media: hantro: Define HEVC codec profiles and supported features
    From
    Date
    Hello Benjamin,

    Thanks a lot for the patch.

    On Wed, 2021-02-17 at 09:02 +0100, Benjamin Gaignard wrote:
    > Define which HEVC profiles (up to level 5.1) and features
    > (no scaling, no 10 bits) are supported by the driver.
    >
    > Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com>
    > Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com>
    > Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com>
    > ---
    >  drivers/staging/media/hantro/hantro.h     |  2 +
    >  drivers/staging/media/hantro/hantro_drv.c | 63 +++++++++++++++++++++++
    >  2 files changed, 65 insertions(+)
    >
    > diff --git a/drivers/staging/media/hantro/hantro.h b/drivers/staging/media/hantro/hantro.h
    > index 65f9f7ea7dcf..bde65231f22f 100644
    > --- a/drivers/staging/media/hantro/hantro.h
    > +++ b/drivers/staging/media/hantro/hantro.h
    > @@ -99,6 +99,7 @@ struct hantro_variant {
    >   * @HANTRO_MODE_H264_DEC: H264 decoder.
    >   * @HANTRO_MODE_MPEG2_DEC: MPEG-2 decoder.
    >   * @HANTRO_MODE_VP8_DEC: VP8 decoder.
    > + * @HANTRO_MODE_HEVC_DEC: HEVC decoder.
    >   */
    >  enum hantro_codec_mode {
    >         HANTRO_MODE_NONE = -1,
    > @@ -106,6 +107,7 @@ enum hantro_codec_mode {
    >         HANTRO_MODE_H264_DEC,
    >         HANTRO_MODE_MPEG2_DEC,
    >         HANTRO_MODE_VP8_DEC,
    > +       HANTRO_MODE_HEVC_DEC,
    >  };
    >  
    >  /*
    > diff --git a/drivers/staging/media/hantro/hantro_drv.c b/drivers/staging/media/hantro/hantro_drv.c
    > index e5f200e64993..0d58209fc55c 100644
    > --- a/drivers/staging/media/hantro/hantro_drv.c
    > +++ b/drivers/staging/media/hantro/hantro_drv.c
    > @@ -243,6 +243,18 @@ static int hantro_try_ctrl(struct v4l2_ctrl *ctrl)
    >                 if (sps->bit_depth_luma_minus8 != 0)
    >                         /* Only 8-bit is supported */
    >                         return -EINVAL;
    > +       } else if (ctrl->id == V4L2_CID_MPEG_VIDEO_HEVC_SPS) {
    > +               const struct v4l2_ctrl_hevc_sps *sps = ctrl->p_new.p_hevc_sps;
    > +
    > +               if (sps->bit_depth_luma_minus8 != sps->bit_depth_chroma_minus8)
    > +                       /* Luma and chroma bit depth mismatch */
    > +                       return -EINVAL;
    > +               if (sps->bit_depth_luma_minus8 != 0)
    > +                       /* Only 8-bit is supported */
    > +                       return -EINVAL;
    > +               if (sps->flags & V4L2_HEVC_SPS_FLAG_SCALING_LIST_ENABLED)

    Note that you are rejecting scaling lists here, butx you are adding the
    SCALING_MATRIX control, and there's some support in patch 13/18
    (see prepare_scaling_list_buffer).

    Either drop all the scaling list support for now (and its extra controls)
    or allow it properly (and make sure it's working as expected).

    Thanks,
    Ezequiel

    > +                       /* No scaling support */
    > +                       return -EINVAL;
    >         }
    >         return 0;
    >  }
    > @@ -349,6 +361,57 @@ static const struct hantro_ctrl controls[] = {
    >                         .def = V4L2_MPEG_VIDEO_H264_PROFILE_MAIN,
    >                 }
    >         }, {
    > +               .codec = HANTRO_HEVC_DECODER,
    > +               .cfg = {
    > +                       .id = V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE,
    > +                       .min = V4L2_MPEG_VIDEO_HEVC_DECODE_MODE_FRAME_BASED,
    > +                       .max = V4L2_MPEG_VIDEO_HEVC_DECODE_MODE_FRAME_BASED,
    > +                       .def = V4L2_MPEG_VIDEO_HEVC_DECODE_MODE_FRAME_BASED,
    > +               },
    > +       }, {
    > +               .codec = HANTRO_HEVC_DECODER,
    > +               .cfg = {
    > +                       .id = V4L2_CID_MPEG_VIDEO_HEVC_START_CODE,
    > +                       .min = V4L2_MPEG_VIDEO_HEVC_START_CODE_ANNEX_B,
    > +                       .max = V4L2_MPEG_VIDEO_HEVC_START_CODE_ANNEX_B,
    > +                       .def = V4L2_MPEG_VIDEO_HEVC_START_CODE_ANNEX_B,
    > +               },
    > +       }, {
    > +               .codec = HANTRO_HEVC_DECODER,
    > +               .cfg = {
    > +                       .id = V4L2_CID_MPEG_VIDEO_HEVC_PROFILE,
    > +                       .min = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN,
    > +                       .max = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10,
    > +                       .def = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN,
    > +               },
    > +       }, {
    > +               .codec = HANTRO_HEVC_DECODER,
    > +               .cfg = {
    > +                       .id = V4L2_CID_MPEG_VIDEO_HEVC_LEVEL,
    > +                       .min = V4L2_MPEG_VIDEO_HEVC_LEVEL_1,
    > +                       .max = V4L2_MPEG_VIDEO_HEVC_LEVEL_5_1,
    > +               },
    > +       }, {
    > +               .codec = HANTRO_HEVC_DECODER,
    > +               .cfg = {
    > +                       .id = V4L2_CID_MPEG_VIDEO_HEVC_SPS,
    > +                       .ops = &hantro_ctrl_ops,
    > +               },
    > +       }, {
    > +               .codec = HANTRO_HEVC_DECODER,
    > +               .cfg = {
    > +                       .id = V4L2_CID_MPEG_VIDEO_HEVC_PPS,
    > +               },
    > +       }, {
    > +               .codec = HANTRO_HEVC_DECODER,
    > +               .cfg = {
    > +                       .id = V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX,
    > +               },
    > +       }, {
    > +               .codec = HANTRO_HEVC_DECODER,
    > +               .cfg = {
    > +                       .id = V4L2_CID_MPEG_VIDEO_HEVC_DECODE_PARAMS,
    > +               },
    >         },
    >  };
    >  


    \
     
     \ /
      Last update: 2021-02-17 20:32    [W:7.105 / U:0.068 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site