162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Contains the virtual decoder logic. The functions here control the 462306a36Sopenharmony_ci * tracing/TPG on a per-frame basis 562306a36Sopenharmony_ci */ 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#ifndef _VISL_DEC_H_ 862306a36Sopenharmony_ci#define _VISL_DEC_H_ 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#include "visl.h" 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_cistruct visl_fwht_run { 1362306a36Sopenharmony_ci const struct v4l2_ctrl_fwht_params *params; 1462306a36Sopenharmony_ci}; 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_cistruct visl_mpeg2_run { 1762306a36Sopenharmony_ci const struct v4l2_ctrl_mpeg2_sequence *seq; 1862306a36Sopenharmony_ci const struct v4l2_ctrl_mpeg2_picture *pic; 1962306a36Sopenharmony_ci const struct v4l2_ctrl_mpeg2_quantisation *quant; 2062306a36Sopenharmony_ci}; 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_cistruct visl_vp8_run { 2362306a36Sopenharmony_ci const struct v4l2_ctrl_vp8_frame *frame; 2462306a36Sopenharmony_ci}; 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_cistruct visl_vp9_run { 2762306a36Sopenharmony_ci const struct v4l2_ctrl_vp9_frame *frame; 2862306a36Sopenharmony_ci const struct v4l2_ctrl_vp9_compressed_hdr *probs; 2962306a36Sopenharmony_ci}; 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_cistruct visl_h264_run { 3262306a36Sopenharmony_ci const struct v4l2_ctrl_h264_sps *sps; 3362306a36Sopenharmony_ci const struct v4l2_ctrl_h264_pps *pps; 3462306a36Sopenharmony_ci const struct v4l2_ctrl_h264_scaling_matrix *sm; 3562306a36Sopenharmony_ci const struct v4l2_ctrl_h264_slice_params *spram; 3662306a36Sopenharmony_ci const struct v4l2_ctrl_h264_decode_params *dpram; 3762306a36Sopenharmony_ci const struct v4l2_ctrl_h264_pred_weights *pwht; 3862306a36Sopenharmony_ci}; 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_cistruct visl_hevc_run { 4162306a36Sopenharmony_ci const struct v4l2_ctrl_hevc_sps *sps; 4262306a36Sopenharmony_ci const struct v4l2_ctrl_hevc_pps *pps; 4362306a36Sopenharmony_ci const struct v4l2_ctrl_hevc_slice_params *spram; 4462306a36Sopenharmony_ci const struct v4l2_ctrl_hevc_scaling_matrix *sm; 4562306a36Sopenharmony_ci const struct v4l2_ctrl_hevc_decode_params *dpram; 4662306a36Sopenharmony_ci}; 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_cistruct visl_run { 4962306a36Sopenharmony_ci struct vb2_v4l2_buffer *src; 5062306a36Sopenharmony_ci struct vb2_v4l2_buffer *dst; 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ci union { 5362306a36Sopenharmony_ci struct visl_fwht_run fwht; 5462306a36Sopenharmony_ci struct visl_mpeg2_run mpeg2; 5562306a36Sopenharmony_ci struct visl_vp8_run vp8; 5662306a36Sopenharmony_ci struct visl_vp9_run vp9; 5762306a36Sopenharmony_ci struct visl_h264_run h264; 5862306a36Sopenharmony_ci struct visl_hevc_run hevc; 5962306a36Sopenharmony_ci }; 6062306a36Sopenharmony_ci}; 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ciint visl_dec_start(struct visl_ctx *ctx); 6362306a36Sopenharmony_ciint visl_dec_stop(struct visl_ctx *ctx); 6462306a36Sopenharmony_ciint visl_job_ready(void *priv); 6562306a36Sopenharmony_civoid visl_device_run(void *priv); 6662306a36Sopenharmony_ci 6762306a36Sopenharmony_ci#endif /* _VISL_DEC_H_ */ 68