| Author | Tokens | Token Proportion | Commits | Commit Proportion |
|---|---|---|---|---|
| 337 | 69.77% | 2 | 40.00% | |
| 99 | 20.50% | 1 | 20.00% | |
| 43 | 8.90% | 1 | 20.00% | |
| 4 | 0.83% | 1 | 20.00% | |
| Total | 483 | 5 |
| Author | Tokens | Token Proportion | Commits | Commit Proportion |
|---|---|---|---|---|
| Detlev Casanova | 337 | 69.77% | 2 | 40.00% |
| Jonas Karlman | 99 | 20.50% | 1 | 20.00% |
| Boris Brezillon | 43 | 8.90% | 1 | 20.00% |
| Nicolas Dufresne | 4 | 0.83% | 1 | 20.00% |
| Total | 483 | 5 |
/* SPDX-License-Identifier: GPL-2.0 */ /* * Rockchip video decoder hevc common functions * * Copyright (C) 2025 Collabora, Ltd. * Detlev Casanova <detlev.casanova@collabora.com> * * Copyright (C) 2023 Collabora, Ltd. * Sebastian Fricke <sebastian.fricke@collabora.com> * * Copyright (C) 2019 Collabora, Ltd. * Boris Brezillon <boris.brezillon@collabora.com> * * Copyright (C) 2016 Rockchip Electronics Co., Ltd. * Jeffy Chen <jeffy.chen@rock-chips.com> */ #include <media/v4l2-mem2mem.h> #include <linux/types.h> #include "rkvdec.h" struct rkvdec_rps_refs { u16 lt_ref_pic_poc_lsb; u16 used_by_curr_pic_lt_flag : 1; u16 reserved : 15; } __packed; struct rkvdec_rps_short_term_ref_set { u32 num_negative : 4; u32 num_positive : 4; u32 delta_poc0 : 16; u32 used_flag0 : 1; u32 delta_poc1 : 16; u32 used_flag1 : 1; u32 delta_poc2 : 16; u32 used_flag2 : 1; u32 delta_poc3 : 16; u32 used_flag3 : 1; u32 delta_poc4 : 16; u32 used_flag4 : 1; u32 delta_poc5 : 16; u32 used_flag5 : 1; u32 delta_poc6 : 16; u32 used_flag6 : 1; u32 delta_poc7 : 16; u32 used_flag7 : 1; u32 delta_poc8 : 16; u32 used_flag8 : 1; u32 delta_poc9 : 16; u32 used_flag9 : 1; u32 delta_poc10 : 16; u32 used_flag10 : 1; u32 delta_poc11 : 16; u32 used_flag11 : 1; u32 delta_poc12 : 16; u32 used_flag12 : 1; u32 delta_poc13 : 16; u32 used_flag13 : 1; u32 delta_poc14 : 16; u32 used_flag14 : 1; u32 reserved_bits : 25; u32 reserved[3]; } __packed; struct rkvdec_rps { struct rkvdec_rps_refs refs[32]; struct rkvdec_rps_short_term_ref_set short_term_ref_sets[64]; } __packed; struct rkvdec_hevc_run { struct rkvdec_run base; const struct v4l2_ctrl_hevc_slice_params *slices_params; const struct v4l2_ctrl_hevc_decode_params *decode_params; const struct v4l2_ctrl_hevc_sps *sps; const struct v4l2_ctrl_hevc_pps *pps; const struct v4l2_ctrl_hevc_scaling_matrix *scaling_matrix; const struct v4l2_ctrl_hevc_ext_sps_st_rps *ext_sps_st_rps; const struct v4l2_ctrl_hevc_ext_sps_lt_rps *ext_sps_lt_rps; int num_slices; }; struct scaling_factor { u8 scalingfactor0[1248]; u8 scalingfactor1[96]; /*4X4 TU Rotate, total 16X4*/ u8 scalingdc[12]; /*N1005 Vienna Meeting*/ u8 reserved[4]; /*16Bytes align*/ }; void compute_tiles_uniform(struct rkvdec_hevc_run *run, u16 log2_min_cb_size, u16 width, u16 height, s32 pic_in_cts_width, s32 pic_in_cts_height, u16 *column_width, u16 *row_height); void compute_tiles_non_uniform(struct rkvdec_hevc_run *run, u16 log2_min_cb_size, u16 width, u16 height, s32 pic_in_cts_width, s32 pic_in_cts_height, u16 *column_width, u16 *row_height); void rkvdec_hevc_assemble_hw_rps(struct rkvdec_hevc_run *run, struct rkvdec_rps *rps, struct v4l2_ctrl_hevc_ext_sps_st_rps *st_cache); void rkvdec_hevc_assemble_hw_scaling_list(struct rkvdec_ctx *ctx, struct rkvdec_hevc_run *run, struct scaling_factor *scaling_factor, struct v4l2_ctrl_hevc_scaling_matrix *cache); struct vb2_buffer *get_ref_buf(struct rkvdec_ctx *ctx, struct rkvdec_hevc_run *run, unsigned int dpb_idx); int rkvdec_hevc_adjust_fmt(struct rkvdec_ctx *ctx, struct v4l2_format *f); enum rkvdec_image_fmt rkvdec_hevc_get_image_fmt(struct rkvdec_ctx *ctx, struct v4l2_ctrl *ctrl); void rkvdec_hevc_run_preamble(struct rkvdec_ctx *ctx, struct rkvdec_hevc_run *run);