/* SPDX-License-Identifier: GPL-2.0 */ /* * Contains the virtual decoder logic. The functions here control the * tracing/TPG on a per-frame basis */ #ifndef _VISL_DEC_H_ #define _VISL_DEC_H_ #include "visl.h" struct visl_fwht_run { const struct v4l2_ctrl_fwht_params *params; }; struct visl_mpeg2_run { const struct v4l2_ctrl_mpeg2_sequence *seq; const struct v4l2_ctrl_mpeg2_picture *pic; const struct v4l2_ctrl_mpeg2_quantisation *quant; }; struct visl_vp8_run { const struct v4l2_ctrl_vp8_frame *frame; }; struct visl_vp9_run { const struct v4l2_ctrl_vp9_frame *frame; const struct v4l2_ctrl_vp9_compressed_hdr *probs; }; struct visl_h264_run { const struct v4l2_ctrl_h264_sps *sps; const struct v4l2_ctrl_h264_pps *pps; const struct v4l2_ctrl_h264_scaling_matrix *sm; const struct v4l2_ctrl_h264_slice_params *spram; const struct v4l2_ctrl_h264_decode_params *dpram; const struct v4l2_ctrl_h264_pred_weights *pwht; }; struct visl_hevc_run { const struct v4l2_ctrl_hevc_sps *sps; const struct v4l2_ctrl_hevc_pps *pps; const struct v4l2_ctrl_hevc_slice_params *spram; const struct v4l2_ctrl_hevc_scaling_matrix *sm; const struct v4l2_ctrl_hevc_decode_params *dpram; }; struct visl_run { struct vb2_v4l2_buffer *src; struct vb2_v4l2_buffer *dst; union { struct visl_fwht_run fwht; struct visl_mpeg2_run mpeg2; struct visl_vp8_run vp8; struct visl_vp9_run vp9; struct visl_h264_run h264; struct visl_hevc_run hevc; }; }; int visl_dec_start(struct visl_ctx *ctx); int visl_dec_stop(struct visl_ctx *ctx); int visl_job_ready(void *priv); void visl_device_run(void *priv); #endif /* _VISL_DEC_H_ */