Message ID | 20230220104849.398203-7-benjamin.gaignard@collabora.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | media: verisilicon: HEVC: fix 10bits handling | expand |
On Mon, Feb 20 2023 at 11:48:49 AM +0100, Benjamin Gaignard <benjamin.gaignard@collabora.com> wrote: > When decoding a 10bits bitstreams VP9 driver should only expose > 10bits pixel formats. > To fulfill this requirement it is needed to call > hantro_reset_raw_fmt() > when bit depth change and to correctly set match_depth in pixel > formats > enumeration. > > Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com> Reviewed-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar> > --- > version 9: > - Fix brackets > > drivers/media/platform/verisilicon/hantro_drv.c | 11 ++++++++--- > 1 file changed, 8 insertions(+), 3 deletions(-) > > diff --git a/drivers/media/platform/verisilicon/hantro_drv.c > b/drivers/media/platform/verisilicon/hantro_drv.c > index 7d452f1afaae..d20e62c025ae 100644 > --- a/drivers/media/platform/verisilicon/hantro_drv.c > +++ b/drivers/media/platform/verisilicon/hantro_drv.c > @@ -307,9 +307,14 @@ static int hantro_vp9_s_ctrl(struct v4l2_ctrl > *ctrl) > struct hantro_ctx, ctrl_handler); > > switch (ctrl->id) { > - case V4L2_CID_STATELESS_VP9_FRAME: > - ctx->bit_depth = ctrl->p_new.p_vp9_frame->bit_depth; > - break; > + case V4L2_CID_STATELESS_VP9_FRAME: { > + int bit_depth = ctrl->p_new.p_vp9_frame->bit_depth; > + > + if (ctx->bit_depth == bit_depth) > + return 0; > + > + return hantro_reset_raw_fmt(ctx, bit_depth); > + } > default: > return -EINVAL; > } > -- > 2.34.1 >
diff --git a/drivers/media/platform/verisilicon/hantro_drv.c b/drivers/media/platform/verisilicon/hantro_drv.c index 7d452f1afaae..d20e62c025ae 100644 --- a/drivers/media/platform/verisilicon/hantro_drv.c +++ b/drivers/media/platform/verisilicon/hantro_drv.c @@ -307,9 +307,14 @@ static int hantro_vp9_s_ctrl(struct v4l2_ctrl *ctrl) struct hantro_ctx, ctrl_handler); switch (ctrl->id) { - case V4L2_CID_STATELESS_VP9_FRAME: - ctx->bit_depth = ctrl->p_new.p_vp9_frame->bit_depth; - break; + case V4L2_CID_STATELESS_VP9_FRAME: { + int bit_depth = ctrl->p_new.p_vp9_frame->bit_depth; + + if (ctx->bit_depth == bit_depth) + return 0; + + return hantro_reset_raw_fmt(ctx, bit_depth); + } default: return -EINVAL; }
When decoding a 10bits bitstreams VP9 driver should only expose 10bits pixel formats. To fulfill this requirement it is needed to call hantro_reset_raw_fmt() when bit depth change and to correctly set match_depth in pixel formats enumeration. Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com> --- version 9: - Fix brackets drivers/media/platform/verisilicon/hantro_drv.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-)