[v8,0/6] media: verisilicon: HEVC: fix 10bits handling

Message ID 20230203091622.127279-1-benjamin.gaignard@collabora.com
Headers
Series media: verisilicon: HEVC: fix 10bits handling |

Message

Benjamin Gaignard Feb. 3, 2023, 9:16 a.m. UTC
  When decoding a 10bits bitstreams HEVC driver should only expose 10bits pixel formats.
To fulfill this requirement it is needed to call hantro_reset_raw_fmt()
and to only change driver internal state in case of success.

Fluster score for HEVC (140/147) doesn't change after this series.
Fluster score for VP9 is 146/303.

version 8:
- Correct patch 4.
- Add a patch for VP9.

version 7:
- Remove unused ctx variable in hantro_try_ctrl().
- Change HANTRO_DEFAULT_BIT_DEPTH value to 8.
- Simplify hantro_check_depth_match logic.
- Keep ctx->bit_depth as integer value because it is use
  to compute buffers size for hevc.

version 6:
- Split the patches in multiple sub-patches.
- Rework hantro_reset_encoded_fmt() usage.

version 5:
- Add Nicolas's review tags
- Add Fixes tags

version 4:
- Split the change in 2 patches.
- Change hantro_check_depth_match() prototype to avoid using
  ctx->bit_depth
- Return the result of hantro_reset_raw_fmt() to the caller.
- Only set ctx->bit_depth when hantro_reset_raw_fmt() returns is ok.

Benjamin Gaignard (6):
  media: verisilicon: Do not set context src/dst formats in reset
    functions
  media: verisilicon: Do not use ctx fields as format storage when
    resetting
  media: verisilicon: Do not set ctx->bit_depth in hantro_try_ctrl()
  media: verisilicon: Do not change context bit depth before validating
    the format
  media: verisilicon: HEVC: Only propose 10 bits compatible pixels
    formats
  media: verisilicon: VP9: Only propose 10 bits compatible pixels
    formats

 .../media/platform/verisilicon/hantro_drv.c   | 49 +++++++---
 .../platform/verisilicon/hantro_postproc.c    |  2 +-
 .../media/platform/verisilicon/hantro_v4l2.c  | 90 +++++++++----------
 .../media/platform/verisilicon/hantro_v4l2.h  |  3 +-
 .../media/platform/verisilicon/imx8m_vpu_hw.c |  2 +
 5 files changed, 86 insertions(+), 60 deletions(-)
  

Comments

Ezequiel Garcia Feb. 18, 2023, 12:54 p.m. UTC | #1
Hi Benjamin,

We are almost there, just some minor comments.

On Fri, Feb 3 2023 at 10:16:16 AM +0100, Benjamin Gaignard 
<benjamin.gaignard@collabora.com> wrote:
> When decoding a 10bits bitstreams HEVC driver should only expose 
> 10bits pixel formats.
> To fulfill this requirement it is needed to call 
> hantro_reset_raw_fmt()
> and to only change driver internal state in case of success.
> 
> Fluster score for HEVC (140/147) doesn't change after this series.
> Fluster score for VP9 is 146/303.
> 

Given the series is changing the format negotation which affects
all codecs, can you test MPEG-2, VP8, H.264 and JPEG encoding?

Can you also run v4l2-compliance on all the /dev/videoX devices?

(Adding Robert Mader, who recently helped test the JPEG encoder).

Thanks,
Ezequiel

> version 8:
> - Correct patch 4.
> - Add a patch for VP9.
> 
> version 7:
> - Remove unused ctx variable in hantro_try_ctrl().
> - Change HANTRO_DEFAULT_BIT_DEPTH value to 8.
> - Simplify hantro_check_depth_match logic.
> - Keep ctx->bit_depth as integer value because it is use
>   to compute buffers size for hevc.
> 
> version 6:
> - Split the patches in multiple sub-patches.
> - Rework hantro_reset_encoded_fmt() usage.
> 
> version 5:
> - Add Nicolas's review tags
> - Add Fixes tags
> 
> version 4:
> - Split the change in 2 patches.
> - Change hantro_check_depth_match() prototype to avoid using
>   ctx->bit_depth
> - Return the result of hantro_reset_raw_fmt() to the caller.
> - Only set ctx->bit_depth when hantro_reset_raw_fmt() returns is ok.
> 
> Benjamin Gaignard (6):
>   media: verisilicon: Do not set context src/dst formats in reset
>     functions
>   media: verisilicon: Do not use ctx fields as format storage when
>     resetting
>   media: verisilicon: Do not set ctx->bit_depth in hantro_try_ctrl()
>   media: verisilicon: Do not change context bit depth before 
> validating
>     the format
>   media: verisilicon: HEVC: Only propose 10 bits compatible pixels
>     formats
>   media: verisilicon: VP9: Only propose 10 bits compatible pixels
>     formats
> 
>  .../media/platform/verisilicon/hantro_drv.c   | 49 +++++++---
>  .../platform/verisilicon/hantro_postproc.c    |  2 +-
>  .../media/platform/verisilicon/hantro_v4l2.c  | 90 
> +++++++++----------
>  .../media/platform/verisilicon/hantro_v4l2.h  |  3 +-
>  .../media/platform/verisilicon/imx8m_vpu_hw.c |  2 +
>  5 files changed, 86 insertions(+), 60 deletions(-)
> 
> --
> 2.34.1
>