Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * Contains the virtual decoder logic. The functions here control the
4 * tracing/TPG on a per-frame basis
5 */
6
7#ifndef _VISL_DEC_H_
8#define _VISL_DEC_H_
9
10#include "linux/v4l2-controls.h"
11#include "visl.h"
12
13struct visl_fwht_run {
14 const struct v4l2_ctrl_fwht_params *params;
15};
16
17struct visl_mpeg2_run {
18 const struct v4l2_ctrl_mpeg2_sequence *seq;
19 const struct v4l2_ctrl_mpeg2_picture *pic;
20 const struct v4l2_ctrl_mpeg2_quantisation *quant;
21};
22
23struct visl_vp8_run {
24 const struct v4l2_ctrl_vp8_frame *frame;
25};
26
27struct visl_vp9_run {
28 const struct v4l2_ctrl_vp9_frame *frame;
29 const struct v4l2_ctrl_vp9_compressed_hdr *probs;
30};
31
32struct visl_h264_run {
33 const struct v4l2_ctrl_h264_sps *sps;
34 const struct v4l2_ctrl_h264_pps *pps;
35 const struct v4l2_ctrl_h264_scaling_matrix *sm;
36 const struct v4l2_ctrl_h264_slice_params *spram;
37 const struct v4l2_ctrl_h264_decode_params *dpram;
38 const struct v4l2_ctrl_h264_pred_weights *pwht;
39};
40
41struct visl_hevc_run {
42 const struct v4l2_ctrl_hevc_sps *sps;
43 const struct v4l2_ctrl_hevc_pps *pps;
44 const struct v4l2_ctrl_hevc_slice_params *spram;
45 const struct v4l2_ctrl_hevc_scaling_matrix *sm;
46 const struct v4l2_ctrl_hevc_decode_params *dpram;
47 const struct v4l2_ctrl_hevc_ext_sps_lt_rps *rps_lt;
48 const struct v4l2_ctrl_hevc_ext_sps_st_rps *rps_st;
49};
50
51struct visl_av1_run {
52 const struct v4l2_ctrl_av1_sequence *seq;
53 const struct v4l2_ctrl_av1_frame *frame;
54 const struct v4l2_ctrl_av1_tile_group_entry *tge;
55 const struct v4l2_ctrl_av1_film_grain *grain;
56};
57
58struct visl_run {
59 struct vb2_v4l2_buffer *src;
60 struct vb2_v4l2_buffer *dst;
61
62 union {
63 struct visl_fwht_run fwht;
64 struct visl_mpeg2_run mpeg2;
65 struct visl_vp8_run vp8;
66 struct visl_vp9_run vp9;
67 struct visl_h264_run h264;
68 struct visl_hevc_run hevc;
69 struct visl_av1_run av1;
70 };
71};
72
73int visl_dec_start(struct visl_ctx *ctx);
74int visl_dec_stop(struct visl_ctx *ctx);
75int visl_job_ready(void *priv);
76void visl_device_run(void *priv);
77
78#endif /* _VISL_DEC_H_ */