From: Jonas Karlman <jonas@kwiboo.se>
To: Nicolas Dufresne <nicolas.dufresne@collabora.com>,
Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>,
Mauro Carvalho Chehab <mchehab@kernel.org>,
Hans Verkuil <hverkuil-cisco@xs4all.nl>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>
Cc: Alex Bee <knaerzche@gmail.com>,
Benjamin Gaignard <benjamin.gaignard@collabora.com>,
Sebastian Fricke <sebastian.fricke@collabora.com>,
Christopher Obbard <chris.obbard@collabora.com>,
linux-media@vger.kernel.org, linux-rockchip@lists.infradead.org,
linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v4 11/11] media: rkvdec: h264: Support High 10 and 4:2:2 profiles
Date: Thu, 9 Nov 2023 19:25:00 +0100 [thread overview]
Message-ID: <cf43fbef-ba37-4ca5-a45c-36d657b11141@kwiboo.se> (raw)
In-Reply-To: <cef435872095e95e132eb9902040fa5af22c685f.camel@collabora.com>
On 2023-11-08 03:20, Nicolas Dufresne wrote:
> Le dimanche 05 novembre 2023 à 16:55 +0000, Jonas Karlman a écrit :
>> Add support and enable decoding of H264 High 10 and 4:2:2 profiles.
>>
>> Decoded CAPTURE buffer width is aligned to 64 pixels to accommodate HW
>> requirement of 10-bit format buffers, fixes decoding of:
>>
>> - Hi422FR13_SONY_A
>> - Hi422FR14_SONY_A
>> - Hi422FR15_SONY_A
>> - Hi422FR6_SONY_A
>> - Hi422FR7_SONY_A
>> - Hi422FR8_SONY_A
>> - Hi422FR9_SONY_A
>> - Hi422FREXT18_SONY_A
>>
>> The get_image_fmt() ops is implemented to select an image format
>> required for the provided SPS control.
>>
>> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
>> ---
>> v4:
>> - Change to use get_image_fmt() ops
>>
>> v3:
>> - Add get_fmt_opaque ops, the expected pixelformat is used as opaque
>> - Add new valid_fmt ops that validate pixelformat matches opaque
>> - Update H264_PROFILE control max value
>>
>> drivers/staging/media/rkvdec/rkvdec-h264.c | 37 ++++++++++++++++------
>> drivers/staging/media/rkvdec/rkvdec.c | 33 +++++++++++++++----
>> drivers/staging/media/rkvdec/rkvdec.h | 3 ++
>> 3 files changed, 57 insertions(+), 16 deletions(-)
>>
>> diff --git a/drivers/staging/media/rkvdec/rkvdec-h264.c b/drivers/staging/media/rkvdec/rkvdec-h264.c
>> index 815d5359ddd5..baac6d012ddd 100644
>> --- a/drivers/staging/media/rkvdec/rkvdec-h264.c
>> +++ b/drivers/staging/media/rkvdec/rkvdec-h264.c
>> @@ -1027,24 +1027,42 @@ static int rkvdec_h264_adjust_fmt(struct rkvdec_ctx *ctx,
>> return 0;
>> }
>>
>> +static enum rkvdec_image_fmt rkvdec_h264_get_image_fmt(struct rkvdec_ctx *ctx,
>> + struct v4l2_ctrl *ctrl)
>> +{
>> + const struct v4l2_ctrl_h264_sps *sps = ctrl->p_new.p_h264_sps;
>> +
>> + if (ctrl->id != V4L2_CID_STATELESS_H264_SPS)
>> + return RKVDEC_IMG_FMT_ANY;
>> +
>> + if (sps->bit_depth_luma_minus8 == 0) {
>> + if (sps->chroma_format_idc == 2)
>> + return RKVDEC_IMG_FMT_422_8BIT;
>> + else
>> + return RKVDEC_IMG_FMT_420_8BIT;
>> + } else if (sps->bit_depth_luma_minus8 == 2) {
>> + if (sps->chroma_format_idc == 2)
>> + return RKVDEC_IMG_FMT_422_10BIT;
>> + else
>> + return RKVDEC_IMG_FMT_420_10BIT;
>> + }
>> +
>> + return RKVDEC_IMG_FMT_ANY;
>> +}
>> +
>> static int rkvdec_h264_validate_sps(struct rkvdec_ctx *ctx,
>> const struct v4l2_ctrl_h264_sps *sps)
>> {
>> unsigned int width, height;
>>
>> - /*
>> - * TODO: The hardware supports 10-bit and 4:2:2 profiles,
>> - * but it's currently broken in the driver.
>> - * Reject them for now, until it's fixed.
>> - */
>> - if (sps->chroma_format_idc > 1)
>> - /* Only 4:0:0 and 4:2:0 are supported */
>> + if (sps->chroma_format_idc > 2)
>> + /* Only 4:0:0, 4:2:0 and 4:2:2 are supported */
>> return -EINVAL;
>> 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 */
>> + if (sps->bit_depth_luma_minus8 != 0 && sps->bit_depth_luma_minus8 != 2)
>> + /* Only 8-bit and 10-bit is supported */
>> return -EINVAL;
>>
>> width = (sps->pic_width_in_mbs_minus1 + 1) * 16;
>> @@ -1175,4 +1193,5 @@ const struct rkvdec_coded_fmt_ops rkvdec_h264_fmt_ops = {
>> .stop = rkvdec_h264_stop,
>> .run = rkvdec_h264_run,
>> .try_ctrl = rkvdec_h264_try_ctrl,
>> + .get_image_fmt = rkvdec_h264_get_image_fmt,
>> };
>> diff --git a/drivers/staging/media/rkvdec/rkvdec.c b/drivers/staging/media/rkvdec/rkvdec.c
>> index 225aa1f0ac48..eb59605ccf28 100644
>> --- a/drivers/staging/media/rkvdec/rkvdec.c
>> +++ b/drivers/staging/media/rkvdec/rkvdec.c
>> @@ -73,7 +73,7 @@ static void rkvdec_fill_decoded_pixfmt(struct rkvdec_ctx *ctx,
>> struct v4l2_pix_format_mplane *pix_mp)
>> {
>> v4l2_fill_pixfmt_mp(pix_mp, pix_mp->pixelformat,
>> - pix_mp->width, pix_mp->height);
>> + ALIGN(pix_mp->width, 64), pix_mp->height);
>
> If you align regardless if its 8/10bit (which I don't really mind, it
> does not cost much and helps if you have a Mali GPU), please do in
> rkvdec_coded_fmts[].frmsize.step_width.
>
> Otherwise you'll endup creating a config per bit depth, and probably
> won't need any of the rk format stuff, since you could just update the
> config, and enumerate from there. I don't mind your method though, but
> lets not hardcode alignment where it shouldn't be.
Agree, will change to use step_width/min_width = 64 in v5, not sure why
I changed from using step_width in v2 to begin with:
"
Changes in v2:
- Only align decoded buffer instead of using frmsize step_width
"
https://lore.kernel.org/linux-media/20200706215430.22859-12-jonas@kwiboo.se/
>
>> pix_mp->plane_fmt[0].sizeimage += 128 *
>> DIV_ROUND_UP(pix_mp->width, 16) *
>> DIV_ROUND_UP(pix_mp->height, 16);
>> @@ -193,7 +193,7 @@ static const struct rkvdec_ctrl_desc rkvdec_h264_ctrl_descs[] = {
>> {
>> .cfg.id = V4L2_CID_MPEG_VIDEO_H264_PROFILE,
>> .cfg.min = V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE,
>
> Do we want to keep this small lie ? Baseline is not supported as we
> don't support FMO and ASO. That being said, in framework like
> GStreamer, we try to decode anyway, cause we know we don't have a
> software fallback anyway.
Found a note to change this to H264_PROFILE_CONSTRAINED_BASELINE from
the old v2 series. Will include such change in v5.
https://patchwork.linuxtv.org/project/linux-media/patch/20200706215430.22859-13-jonas@kwiboo.se/#119406
>
>> - .cfg.max = V4L2_MPEG_VIDEO_H264_PROFILE_HIGH,
>> + .cfg.max = V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422,
>
> Should include V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10_INTRA and
> V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422_INTRA too ....
>
>> .cfg.menu_skip_mask =
>> BIT(V4L2_MPEG_VIDEO_H264_PROFILE_EXTENDED),
>
> Which requires substracting
> V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_PREDICTIVE too.
Will update in v5, thanks.
Regards,
Jonas
>
>> .cfg.def = V4L2_MPEG_VIDEO_H264_PROFILE_MAIN,
>> @@ -210,11 +210,23 @@ static const struct rkvdec_ctrls rkvdec_h264_ctrls = {
>> .num_ctrls = ARRAY_SIZE(rkvdec_h264_ctrl_descs),
>> };
>>
>> -static const struct rkvdec_decoded_fmt_desc rkvdec_h264_vp9_decoded_fmts[] = {
>> +static const struct rkvdec_decoded_fmt_desc rkvdec_h264_decoded_fmts[] = {
>> {
>> .fourcc = V4L2_PIX_FMT_NV12,
>> .image_fmt = RKVDEC_IMG_FMT_420_8BIT,
>> },
>> + {
>> + .fourcc = V4L2_PIX_FMT_NV15,
>> + .image_fmt = RKVDEC_IMG_FMT_420_10BIT,
>> + },
>> + {
>> + .fourcc = V4L2_PIX_FMT_NV16,
>> + .image_fmt = RKVDEC_IMG_FMT_422_8BIT,
>> + },
>> + {
>> + .fourcc = V4L2_PIX_FMT_NV20,
>> + .image_fmt = RKVDEC_IMG_FMT_422_10BIT,
>> + },
>> };
>>
>> static const struct rkvdec_ctrl_desc rkvdec_vp9_ctrl_descs[] = {
>> @@ -237,6 +249,13 @@ static const struct rkvdec_ctrls rkvdec_vp9_ctrls = {
>> .num_ctrls = ARRAY_SIZE(rkvdec_vp9_ctrl_descs),
>> };
>>
>> +static const struct rkvdec_decoded_fmt_desc rkvdec_vp9_decoded_fmts[] = {
>> + {
>> + .fourcc = V4L2_PIX_FMT_NV12,
>> + .image_fmt = RKVDEC_IMG_FMT_420_8BIT,
>> + },
>> +};
>> +
>> static const struct rkvdec_coded_fmt_desc rkvdec_coded_fmts[] = {
>> {
>> .fourcc = V4L2_PIX_FMT_H264_SLICE,
>> @@ -250,8 +269,8 @@ static const struct rkvdec_coded_fmt_desc rkvdec_coded_fmts[] = {
>> },
>> .ctrls = &rkvdec_h264_ctrls,
>> .ops = &rkvdec_h264_fmt_ops,
>> - .num_decoded_fmts = ARRAY_SIZE(rkvdec_h264_vp9_decoded_fmts),
>> - .decoded_fmts = rkvdec_h264_vp9_decoded_fmts,
>> + .num_decoded_fmts = ARRAY_SIZE(rkvdec_h264_decoded_fmts),
>> + .decoded_fmts = rkvdec_h264_decoded_fmts,
>> .subsystem_flags = VB2_V4L2_FL_SUPPORTS_M2M_HOLD_CAPTURE_BUF,
>> },
>> {
>> @@ -266,8 +285,8 @@ static const struct rkvdec_coded_fmt_desc rkvdec_coded_fmts[] = {
>> },
>> .ctrls = &rkvdec_vp9_ctrls,
>> .ops = &rkvdec_vp9_fmt_ops,
>> - .num_decoded_fmts = ARRAY_SIZE(rkvdec_h264_vp9_decoded_fmts),
>> - .decoded_fmts = rkvdec_h264_vp9_decoded_fmts,
>> + .num_decoded_fmts = ARRAY_SIZE(rkvdec_vp9_decoded_fmts),
>> + .decoded_fmts = rkvdec_vp9_decoded_fmts,
>> }
>> };
>>
>> diff --git a/drivers/staging/media/rkvdec/rkvdec.h b/drivers/staging/media/rkvdec/rkvdec.h
>> index e466a2753ccf..9a9f4fced7a1 100644
>> --- a/drivers/staging/media/rkvdec/rkvdec.h
>> +++ b/drivers/staging/media/rkvdec/rkvdec.h
>> @@ -80,6 +80,9 @@ struct rkvdec_coded_fmt_ops {
>> enum rkvdec_image_fmt {
>> RKVDEC_IMG_FMT_ANY = 0,
>> RKVDEC_IMG_FMT_420_8BIT,
>> + RKVDEC_IMG_FMT_420_10BIT,
>> + RKVDEC_IMG_FMT_422_8BIT,
>> + RKVDEC_IMG_FMT_422_10BIT,
>> };
>>
>> struct rkvdec_decoded_fmt_desc {
>
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
WARNING: multiple messages have this Message-ID (diff)
From: Jonas Karlman <jonas@kwiboo.se>
To: Nicolas Dufresne <nicolas.dufresne@collabora.com>,
Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>,
Mauro Carvalho Chehab <mchehab@kernel.org>,
Hans Verkuil <hverkuil-cisco@xs4all.nl>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>
Cc: Alex Bee <knaerzche@gmail.com>,
Benjamin Gaignard <benjamin.gaignard@collabora.com>,
Sebastian Fricke <sebastian.fricke@collabora.com>,
Christopher Obbard <chris.obbard@collabora.com>,
linux-media@vger.kernel.org, linux-rockchip@lists.infradead.org,
linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v4 11/11] media: rkvdec: h264: Support High 10 and 4:2:2 profiles
Date: Thu, 9 Nov 2023 19:25:00 +0100 [thread overview]
Message-ID: <cf43fbef-ba37-4ca5-a45c-36d657b11141@kwiboo.se> (raw)
In-Reply-To: <cef435872095e95e132eb9902040fa5af22c685f.camel@collabora.com>
On 2023-11-08 03:20, Nicolas Dufresne wrote:
> Le dimanche 05 novembre 2023 à 16:55 +0000, Jonas Karlman a écrit :
>> Add support and enable decoding of H264 High 10 and 4:2:2 profiles.
>>
>> Decoded CAPTURE buffer width is aligned to 64 pixels to accommodate HW
>> requirement of 10-bit format buffers, fixes decoding of:
>>
>> - Hi422FR13_SONY_A
>> - Hi422FR14_SONY_A
>> - Hi422FR15_SONY_A
>> - Hi422FR6_SONY_A
>> - Hi422FR7_SONY_A
>> - Hi422FR8_SONY_A
>> - Hi422FR9_SONY_A
>> - Hi422FREXT18_SONY_A
>>
>> The get_image_fmt() ops is implemented to select an image format
>> required for the provided SPS control.
>>
>> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
>> ---
>> v4:
>> - Change to use get_image_fmt() ops
>>
>> v3:
>> - Add get_fmt_opaque ops, the expected pixelformat is used as opaque
>> - Add new valid_fmt ops that validate pixelformat matches opaque
>> - Update H264_PROFILE control max value
>>
>> drivers/staging/media/rkvdec/rkvdec-h264.c | 37 ++++++++++++++++------
>> drivers/staging/media/rkvdec/rkvdec.c | 33 +++++++++++++++----
>> drivers/staging/media/rkvdec/rkvdec.h | 3 ++
>> 3 files changed, 57 insertions(+), 16 deletions(-)
>>
>> diff --git a/drivers/staging/media/rkvdec/rkvdec-h264.c b/drivers/staging/media/rkvdec/rkvdec-h264.c
>> index 815d5359ddd5..baac6d012ddd 100644
>> --- a/drivers/staging/media/rkvdec/rkvdec-h264.c
>> +++ b/drivers/staging/media/rkvdec/rkvdec-h264.c
>> @@ -1027,24 +1027,42 @@ static int rkvdec_h264_adjust_fmt(struct rkvdec_ctx *ctx,
>> return 0;
>> }
>>
>> +static enum rkvdec_image_fmt rkvdec_h264_get_image_fmt(struct rkvdec_ctx *ctx,
>> + struct v4l2_ctrl *ctrl)
>> +{
>> + const struct v4l2_ctrl_h264_sps *sps = ctrl->p_new.p_h264_sps;
>> +
>> + if (ctrl->id != V4L2_CID_STATELESS_H264_SPS)
>> + return RKVDEC_IMG_FMT_ANY;
>> +
>> + if (sps->bit_depth_luma_minus8 == 0) {
>> + if (sps->chroma_format_idc == 2)
>> + return RKVDEC_IMG_FMT_422_8BIT;
>> + else
>> + return RKVDEC_IMG_FMT_420_8BIT;
>> + } else if (sps->bit_depth_luma_minus8 == 2) {
>> + if (sps->chroma_format_idc == 2)
>> + return RKVDEC_IMG_FMT_422_10BIT;
>> + else
>> + return RKVDEC_IMG_FMT_420_10BIT;
>> + }
>> +
>> + return RKVDEC_IMG_FMT_ANY;
>> +}
>> +
>> static int rkvdec_h264_validate_sps(struct rkvdec_ctx *ctx,
>> const struct v4l2_ctrl_h264_sps *sps)
>> {
>> unsigned int width, height;
>>
>> - /*
>> - * TODO: The hardware supports 10-bit and 4:2:2 profiles,
>> - * but it's currently broken in the driver.
>> - * Reject them for now, until it's fixed.
>> - */
>> - if (sps->chroma_format_idc > 1)
>> - /* Only 4:0:0 and 4:2:0 are supported */
>> + if (sps->chroma_format_idc > 2)
>> + /* Only 4:0:0, 4:2:0 and 4:2:2 are supported */
>> return -EINVAL;
>> 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 */
>> + if (sps->bit_depth_luma_minus8 != 0 && sps->bit_depth_luma_minus8 != 2)
>> + /* Only 8-bit and 10-bit is supported */
>> return -EINVAL;
>>
>> width = (sps->pic_width_in_mbs_minus1 + 1) * 16;
>> @@ -1175,4 +1193,5 @@ const struct rkvdec_coded_fmt_ops rkvdec_h264_fmt_ops = {
>> .stop = rkvdec_h264_stop,
>> .run = rkvdec_h264_run,
>> .try_ctrl = rkvdec_h264_try_ctrl,
>> + .get_image_fmt = rkvdec_h264_get_image_fmt,
>> };
>> diff --git a/drivers/staging/media/rkvdec/rkvdec.c b/drivers/staging/media/rkvdec/rkvdec.c
>> index 225aa1f0ac48..eb59605ccf28 100644
>> --- a/drivers/staging/media/rkvdec/rkvdec.c
>> +++ b/drivers/staging/media/rkvdec/rkvdec.c
>> @@ -73,7 +73,7 @@ static void rkvdec_fill_decoded_pixfmt(struct rkvdec_ctx *ctx,
>> struct v4l2_pix_format_mplane *pix_mp)
>> {
>> v4l2_fill_pixfmt_mp(pix_mp, pix_mp->pixelformat,
>> - pix_mp->width, pix_mp->height);
>> + ALIGN(pix_mp->width, 64), pix_mp->height);
>
> If you align regardless if its 8/10bit (which I don't really mind, it
> does not cost much and helps if you have a Mali GPU), please do in
> rkvdec_coded_fmts[].frmsize.step_width.
>
> Otherwise you'll endup creating a config per bit depth, and probably
> won't need any of the rk format stuff, since you could just update the
> config, and enumerate from there. I don't mind your method though, but
> lets not hardcode alignment where it shouldn't be.
Agree, will change to use step_width/min_width = 64 in v5, not sure why
I changed from using step_width in v2 to begin with:
"
Changes in v2:
- Only align decoded buffer instead of using frmsize step_width
"
https://lore.kernel.org/linux-media/20200706215430.22859-12-jonas@kwiboo.se/
>
>> pix_mp->plane_fmt[0].sizeimage += 128 *
>> DIV_ROUND_UP(pix_mp->width, 16) *
>> DIV_ROUND_UP(pix_mp->height, 16);
>> @@ -193,7 +193,7 @@ static const struct rkvdec_ctrl_desc rkvdec_h264_ctrl_descs[] = {
>> {
>> .cfg.id = V4L2_CID_MPEG_VIDEO_H264_PROFILE,
>> .cfg.min = V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE,
>
> Do we want to keep this small lie ? Baseline is not supported as we
> don't support FMO and ASO. That being said, in framework like
> GStreamer, we try to decode anyway, cause we know we don't have a
> software fallback anyway.
Found a note to change this to H264_PROFILE_CONSTRAINED_BASELINE from
the old v2 series. Will include such change in v5.
https://patchwork.linuxtv.org/project/linux-media/patch/20200706215430.22859-13-jonas@kwiboo.se/#119406
>
>> - .cfg.max = V4L2_MPEG_VIDEO_H264_PROFILE_HIGH,
>> + .cfg.max = V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422,
>
> Should include V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10_INTRA and
> V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422_INTRA too ....
>
>> .cfg.menu_skip_mask =
>> BIT(V4L2_MPEG_VIDEO_H264_PROFILE_EXTENDED),
>
> Which requires substracting
> V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_PREDICTIVE too.
Will update in v5, thanks.
Regards,
Jonas
>
>> .cfg.def = V4L2_MPEG_VIDEO_H264_PROFILE_MAIN,
>> @@ -210,11 +210,23 @@ static const struct rkvdec_ctrls rkvdec_h264_ctrls = {
>> .num_ctrls = ARRAY_SIZE(rkvdec_h264_ctrl_descs),
>> };
>>
>> -static const struct rkvdec_decoded_fmt_desc rkvdec_h264_vp9_decoded_fmts[] = {
>> +static const struct rkvdec_decoded_fmt_desc rkvdec_h264_decoded_fmts[] = {
>> {
>> .fourcc = V4L2_PIX_FMT_NV12,
>> .image_fmt = RKVDEC_IMG_FMT_420_8BIT,
>> },
>> + {
>> + .fourcc = V4L2_PIX_FMT_NV15,
>> + .image_fmt = RKVDEC_IMG_FMT_420_10BIT,
>> + },
>> + {
>> + .fourcc = V4L2_PIX_FMT_NV16,
>> + .image_fmt = RKVDEC_IMG_FMT_422_8BIT,
>> + },
>> + {
>> + .fourcc = V4L2_PIX_FMT_NV20,
>> + .image_fmt = RKVDEC_IMG_FMT_422_10BIT,
>> + },
>> };
>>
>> static const struct rkvdec_ctrl_desc rkvdec_vp9_ctrl_descs[] = {
>> @@ -237,6 +249,13 @@ static const struct rkvdec_ctrls rkvdec_vp9_ctrls = {
>> .num_ctrls = ARRAY_SIZE(rkvdec_vp9_ctrl_descs),
>> };
>>
>> +static const struct rkvdec_decoded_fmt_desc rkvdec_vp9_decoded_fmts[] = {
>> + {
>> + .fourcc = V4L2_PIX_FMT_NV12,
>> + .image_fmt = RKVDEC_IMG_FMT_420_8BIT,
>> + },
>> +};
>> +
>> static const struct rkvdec_coded_fmt_desc rkvdec_coded_fmts[] = {
>> {
>> .fourcc = V4L2_PIX_FMT_H264_SLICE,
>> @@ -250,8 +269,8 @@ static const struct rkvdec_coded_fmt_desc rkvdec_coded_fmts[] = {
>> },
>> .ctrls = &rkvdec_h264_ctrls,
>> .ops = &rkvdec_h264_fmt_ops,
>> - .num_decoded_fmts = ARRAY_SIZE(rkvdec_h264_vp9_decoded_fmts),
>> - .decoded_fmts = rkvdec_h264_vp9_decoded_fmts,
>> + .num_decoded_fmts = ARRAY_SIZE(rkvdec_h264_decoded_fmts),
>> + .decoded_fmts = rkvdec_h264_decoded_fmts,
>> .subsystem_flags = VB2_V4L2_FL_SUPPORTS_M2M_HOLD_CAPTURE_BUF,
>> },
>> {
>> @@ -266,8 +285,8 @@ static const struct rkvdec_coded_fmt_desc rkvdec_coded_fmts[] = {
>> },
>> .ctrls = &rkvdec_vp9_ctrls,
>> .ops = &rkvdec_vp9_fmt_ops,
>> - .num_decoded_fmts = ARRAY_SIZE(rkvdec_h264_vp9_decoded_fmts),
>> - .decoded_fmts = rkvdec_h264_vp9_decoded_fmts,
>> + .num_decoded_fmts = ARRAY_SIZE(rkvdec_vp9_decoded_fmts),
>> + .decoded_fmts = rkvdec_vp9_decoded_fmts,
>> }
>> };
>>
>> diff --git a/drivers/staging/media/rkvdec/rkvdec.h b/drivers/staging/media/rkvdec/rkvdec.h
>> index e466a2753ccf..9a9f4fced7a1 100644
>> --- a/drivers/staging/media/rkvdec/rkvdec.h
>> +++ b/drivers/staging/media/rkvdec/rkvdec.h
>> @@ -80,6 +80,9 @@ struct rkvdec_coded_fmt_ops {
>> enum rkvdec_image_fmt {
>> RKVDEC_IMG_FMT_ANY = 0,
>> RKVDEC_IMG_FMT_420_8BIT,
>> + RKVDEC_IMG_FMT_420_10BIT,
>> + RKVDEC_IMG_FMT_422_8BIT,
>> + RKVDEC_IMG_FMT_422_10BIT,
>> };
>>
>> struct rkvdec_decoded_fmt_desc {
>
next prev parent reply other threads:[~2023-11-09 18:25 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-05 16:54 [PATCH v4 00/11] media: rkvdec: Add H.264 High 10 and 4:2:2 profile support Jonas Karlman
2023-11-05 16:54 ` Jonas Karlman
2023-11-05 16:55 ` [PATCH v4 01/11] media: v4l2-common: Add helpers to calculate bytesperline and sizeimage Jonas Karlman
2023-11-05 16:55 ` Jonas Karlman
2023-11-08 2:45 ` Nicolas Dufresne
2023-11-08 2:45 ` Nicolas Dufresne
2023-11-09 22:42 ` Jonas Karlman
2023-11-09 22:42 ` Jonas Karlman
2023-11-05 16:55 ` [PATCH v4 02/11] media: v4l2: Add NV15 and NV20 pixel formats Jonas Karlman
2023-11-05 16:55 ` Jonas Karlman
2023-11-08 2:52 ` Nicolas Dufresne
2023-11-08 2:52 ` Nicolas Dufresne
2023-11-09 22:47 ` Jonas Karlman
2023-11-09 22:47 ` Jonas Karlman
2023-11-05 16:55 ` [PATCH v4 03/11] media: rkvdec: h264: Use bytesperline and buffer height as virstride Jonas Karlman
2023-11-05 16:55 ` Jonas Karlman
2023-11-07 21:45 ` Nicolas Dufresne
2023-11-07 21:45 ` Nicolas Dufresne
2023-11-05 16:55 ` [PATCH v4 04/11] media: rkvdec: h264: Don't hardcode SPS/PPS parameters Jonas Karlman
2023-11-05 16:55 ` Jonas Karlman
2023-11-07 21:47 ` Nicolas Dufresne
2023-11-07 21:47 ` Nicolas Dufresne
2023-11-05 16:55 ` [PATCH v4 05/11] media: rkvdec: h264: Remove SPS validation at streaming start Jonas Karlman
2023-11-05 16:55 ` Jonas Karlman
2023-11-07 22:01 ` Nicolas Dufresne
2023-11-07 22:01 ` Nicolas Dufresne
2023-11-07 22:56 ` Jonas Karlman
2023-11-07 22:56 ` Jonas Karlman
2023-11-08 2:39 ` Nicolas Dufresne
2023-11-08 2:39 ` Nicolas Dufresne
2023-11-09 18:07 ` Jonas Karlman
2023-11-09 18:07 ` Jonas Karlman
2023-11-05 16:55 ` [PATCH v4 06/11] media: rkvdec: Extract rkvdec_fill_decoded_pixfmt into helper Jonas Karlman
2023-11-05 16:55 ` Jonas Karlman
2023-11-07 22:04 ` Nicolas Dufresne
2023-11-07 22:04 ` Nicolas Dufresne
2023-11-05 16:55 ` [PATCH v4 07/11] media: rkvdec: Move rkvdec_reset_decoded_fmt helper Jonas Karlman
2023-11-05 16:55 ` Jonas Karlman
2023-11-08 1:42 ` Nicolas Dufresne
2023-11-08 1:42 ` Nicolas Dufresne
2023-11-05 16:55 ` [PATCH v4 08/11] media: rkvdec: Extract decoded format enumeration into helper Jonas Karlman
2023-11-05 16:55 ` Jonas Karlman
2023-11-08 1:50 ` Nicolas Dufresne
2023-11-08 1:50 ` Nicolas Dufresne
2023-11-05 16:55 ` [PATCH v4 09/11] media: rkvdec: Add image format concept Jonas Karlman
2023-11-05 16:55 ` Jonas Karlman
2023-11-05 16:55 ` [PATCH v4 10/11] media: rkvdec: Add get_image_fmt ops Jonas Karlman
2023-11-05 16:55 ` Jonas Karlman
2023-11-05 16:55 ` [PATCH v4 11/11] media: rkvdec: h264: Support High 10 and 4:2:2 profiles Jonas Karlman
2023-11-05 16:55 ` Jonas Karlman
2023-11-08 2:20 ` Nicolas Dufresne
2023-11-08 2:20 ` Nicolas Dufresne
2023-11-09 18:25 ` Jonas Karlman [this message]
2023-11-09 18:25 ` Jonas Karlman
2023-11-07 21:43 ` [PATCH v4 00/11] media: rkvdec: Add H.264 High 10 and 4:2:2 profile support Nicolas Dufresne
2023-11-07 21:43 ` Nicolas Dufresne
2023-11-09 17:51 ` Jonas Karlman
2023-11-09 17:51 ` Jonas Karlman
2024-01-08 9:54 ` Christopher Obbard
2024-01-08 9:54 ` Christopher Obbard
2024-06-16 9:47 ` Diederik de Haas
2024-06-16 9:47 ` Diederik de Haas
2024-06-17 13:43 ` Nicolas Dufresne
2024-06-17 13:43 ` Nicolas Dufresne
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cf43fbef-ba37-4ca5-a45c-36d657b11141@kwiboo.se \
--to=jonas@kwiboo.se \
--cc=benjamin.gaignard@collabora.com \
--cc=chris.obbard@collabora.com \
--cc=ezequiel@vanguardiasur.com.ar \
--cc=gregkh@linuxfoundation.org \
--cc=hverkuil-cisco@xs4all.nl \
--cc=knaerzche@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=linux-staging@lists.linux.dev \
--cc=mchehab@kernel.org \
--cc=nicolas.dufresne@collabora.com \
--cc=sebastian.fricke@collabora.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.