mirror of
https://github.com/torvalds/linux.git
synced 2026-09-13 15:40:03 +02:00
media: hevc: add bounded tile-count helpers
The stateless HEVC decoders compute the number of tile columns and rows
from num_tile_columns_minus1 / num_tile_rows_minus1 and clamp it to the
column_width_minus1[] / row_height_minus1[] capacity before using it as a
loop bound. Add shared helpers in a new <media/v4l2-hevc.h> so the rkvdec
and hantro drivers do not each open-code the min_t() clamp.
Signed-off-by: Michael Bommarito <michael.bommarito@gmail.com>
Assisted-by: Claude:claude-opus-4-8
Fixes: 256fa39208 ("media: v4l: Add definitions for HEVC stateless decoding")
Cc: stable@vger.kernel.org
Reviewed-by: Benjamin Gaignard <benjamin.gaignard@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
This commit is contained in:
parent
439058ced6
commit
592dd4f844
41
include/media/v4l2-hevc.h
Normal file
41
include/media/v4l2-hevc.h
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
/*
|
||||
* Helper functions for HEVC stateless codecs.
|
||||
*/
|
||||
|
||||
#ifndef _MEDIA_V4L2_HEVC_H
|
||||
#define _MEDIA_V4L2_HEVC_H
|
||||
|
||||
#include <linux/minmax.h>
|
||||
#include <media/v4l2-ctrls.h>
|
||||
|
||||
/**
|
||||
* v4l2_hevc_pps_num_tile_columns - number of HEVC tile columns, bounded
|
||||
* @pps: the V4L2 HEVC PPS control
|
||||
*
|
||||
* Return the number of tile columns (num_tile_columns_minus1 + 1) clamped to
|
||||
* the capacity of column_width_minus1[]. The control validation already
|
||||
* rejects out-of-range counts; this keeps the consuming drivers bounded too.
|
||||
*/
|
||||
static inline unsigned int
|
||||
v4l2_hevc_pps_num_tile_columns(const struct v4l2_ctrl_hevc_pps *pps)
|
||||
{
|
||||
return min_t(unsigned int, pps->num_tile_columns_minus1 + 1,
|
||||
ARRAY_SIZE(pps->column_width_minus1));
|
||||
}
|
||||
|
||||
/**
|
||||
* v4l2_hevc_pps_num_tile_rows - number of HEVC tile rows, bounded
|
||||
* @pps: the V4L2 HEVC PPS control
|
||||
*
|
||||
* Return the number of tile rows (num_tile_rows_minus1 + 1) clamped to the
|
||||
* capacity of row_height_minus1[].
|
||||
*/
|
||||
static inline unsigned int
|
||||
v4l2_hevc_pps_num_tile_rows(const struct v4l2_ctrl_hevc_pps *pps)
|
||||
{
|
||||
return min_t(unsigned int, pps->num_tile_rows_minus1 + 1,
|
||||
ARRAY_SIZE(pps->row_height_minus1));
|
||||
}
|
||||
|
||||
#endif /* _MEDIA_V4L2_HEVC_H */
|
||||
Loading…
Reference in New Issue
Block a user