| /* 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_ */ |