summaryrefslogtreecommitdiff
path: root/vapi/linux-media.vapi
blob: 66f3add5e6e3bdcfd25aaaa45038febef6d2f06f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
/* linux-media.vapi
 *
 * Copyright (C) 2021-2022 Nikola Hadžić
 *
 * This library is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 * Author:
 *  Nikola Hadžić <nikola.hadzic.000@protonmail.com>
 */

[CCode (cheader_filename = "linux/media.h", cprefix = "", lower_case_cprefix = "")]
namespace MediaController
{
	[CCode (cprefix = "MEDIA_ENT_")]
	public uint32 ID_FLAG_NEXT;

	[CCode (cname = "uint32", cprefix = "MEDIA_ENT_F_", has_type_id = false)]
	public enum EntityFunction
	{
		UNKNOWN,
		V4L2_SUBDEV_UNKNOWN,
		IO_V4L,
		IO_VBI,
		IO_SWRADIO,
		IO_DTV,
		DTV_DEMOD,
		TS_DEMUX,
		DTV_CA,
		DTV_NET_DECAP,
		CAM_SENSOR,
		FLASH,
		LENS,
		ATV_DECODER,
		TUNER,
		IF_VID_DECODER,
		IF_AUD_DECODER,
		AUDIO_CAPTURE,
		AUDIO_PLAYBACK,
		AUDIO_MIXER,
		PROC_VIDEO_COMPOSER,
		PROC_VIDEO_PIXEL_FORMATTER,
		PROC_VIDEO_PIXEL_ENC_CONV,
		PROC_VIDEO_LUT,
		PROC_VIDEO_SCALER,
		PROC_VIDEO_STATISTICS,
		PROC_VIDEO_ENCODER,
		PROC_VIDEO_DECODER,
		PROC_VIDEO_ISP,
		VID_MUX,
		VID_IF_BRIDGE,
		DV_DECODER,
		DV_ENCODER
	}

	[Flags]
	[CCode (cname = "uint32", cprefix = "MEDIA_ENT_FL_", has_type_id = false)]
	public enum EntityFlag
	{
		DEFAULT,
		CONNECTOR
	}

	[CCode (cname = "uint32", cprefix = "MEDIA_INTF_T_", has_type_id = false)]
	public enum InterfaceType
	{
		DVB_FE,
		DVB_DEMUX,
		DVB_DVR,
		DVB_CA,
		DVB_NET,
		V4L_VIDEO,
		V4L_VBI,
		V4L_RADIO,
		V4L_SUBDEV,
		V4L_SWRADIO,
		V4L_TOUCH,
		ALSA_PCM_CAPTURE,
		ALSA_PCM_PLAYBACK,
		ALSA_CONTROL,
		ALSA_COMPRESS,
		ALSA_RAWMIDI,
		ALSA_HWDEP,
		ALSA_SEQUENCER,
		ALSA_TIMER
	}

	[Flags]
	[CCode (cname = "uint32", cprefix = "MEDIA_PAD_FL_", has_type_id = false)]
	public enum PadFlag
	{
		SINK,
		SOURCE,
		MUST_CONNECT
	}

	[Flags]
	[CCode (cname = "uint32", cprefix = "MEDIA_LNK_FL_", has_type_id = false)]
	public enum LinkFlag
	{
		ENABLED,
		IMMUTABLE,
		DYNAMIC,
		LINK_TYPE,
		DATA_LINK,
		INTERFACE_LINK
	}

	[CCode (cname = "int", cprefix = "MEDIA_IOC_", has_type_id = false)]
	public enum IOC
	{
		DEVICE_INFO,
		G_TOPOLOGY,
		ENUM_ENTITIES,
		ENUM_LINKS,
		SETUP_LINK,
		REQUEST_ALLOC
	}

	[CCode (cname = "int", cprefix = "MEDIA_REQUEST_IOC_", has_type_id = false)]
	public enum RequestIOC
	{
		QUEUE,
		REINIT
	}

	[SimpleType]
	[CCode (cname = "struct media_device_info", has_type_id = false)]
	public struct DeviceInfo
	{
		public unowned string driver;
		public unowned string model;
		public unowned string serial;
		public unowned string bus_info;
		public uint32 media_version;
		public uint32 hw_revision;
		public uint32 driver_version;
	}

	[SimpleType]
	[CCode (cname = "struct media_v2_topology", has_type_id = false)]
	public struct V2_Topology
	{
		public uint64 topology_version;
		public uint32 num_entities;
		public uint64 ptr_entities;
		public uint32 num_interfaces;
		public uint64 ptr_interfaces;
		public uint32 num_pads;
		public uint64 ptr_pads;
		public uint32 num_links;
		public uint64 ptr_links;
	}

	[SimpleType]
	[CCode (cname = "struct media_v2_entity", has_type_id = false)]
	public struct V2_Entity
	{
		public uint32 id;
		public unowned string name;
		public uint32 function;
		public uint32 flags;
	}

	[SimpleType]
	[CCode (cname = "struct media_v2_intf_devnode", has_type_id = false)]
	public struct V2_IntfDevnode
	{
		public uint32 major;
		public uint32 minor;
	}

	[SimpleType]
	[CCode (cname = "struct media_v2_interface", has_type_id = false)]
	public struct V2_Interface
	{
		public uint32 id;
		public uint32 intf_type;
		public uint32 flags;
		public V2_IntfDevnode devnode;
	}

	[SimpleType]
	[CCode (cname = "struct media_v2_pad", has_type_id = false)]
	public struct V2_Pad
	{
		public uint32 id;
		public uint32 entity_id;
		public uint32 flags;
		public uint32 index;
	}

	[SimpleType]
	[CCode (cname = "struct media_v2_link", has_type_id = false)]
	public struct V2_Link
	{
		public uint32 id;
		public uint32 source_id;
		public uint32 sink_id;
		public uint32 flags;
	}

	[SimpleType]
	[CCode (cname = "struct media_entity_desc", has_type_id = false)]
	public struct EntityDesc
	{
		public uint32 id;
		public unowned string name;
		public uint32 type;
		public uint32 revision;
		public uint32 flags;
		public uint32 group_id;
		public uint16 pads;
		public uint16 links;

		[CCode (cname = "dev.major")]
		public uint32 dev_major;
		[CCode (cname = "dev.minor")]
		public uint32 dev_minor;

		[CCode (cname = "alsa.card")]
		public uint32 alsa_card;
		[CCode (cname = "alsa.device")]
		public uint32 alsa_device;
		[CCode (cname = "alsa.subdevice")]
		public uint32 alsa_subdevice;

		[CCode (cname = "v4l.major")]
		public uint32 v4l_major;
		[CCode (cname = "v4l.minor")]
		public uint32 v4l_minor;

		[CCode (cname = "fb.major")]
		public uint32 fb_major;
		[CCode (cname = "fb.minor")]
		public uint32 fb_minor;

		public int dvb;
	}

	[SimpleType]
	[CCode (cname = "struct media_pad_desc", has_type_id = false)]
	public struct PadDesc
	{
		public uint32 entity;
		public uint16 index;
		public uint32 flags;
	}

	[SimpleType]
	[CCode (cname = "struct media_link_desc", has_type_id = false)]
	public struct LinkDesc
	{
		public PadDesc source;
		public PadDesc sink;
		public uint32 flags;
	}

	[SimpleType]
	[CCode (cname = "struct media_links_enum", has_type_id = false)]
	public struct LinksEnum
	{
		public uint32 entity;
		public PadDesc *pads;
		public LinkDesc *links;
	}
}