1 .. -*- coding: utf-8; mode: rst -*-
3 .. _media-controller-types:
5 Types and flags used to represent the media graph elements
6 ==========================================================
8 .. tabularcolumns:: |p{8.2cm}|p{10.3cm}|
10 .. _media-entity-functions:
11 .. _MEDIA-ENT-F-UNKNOWN:
12 .. _MEDIA-ENT-F-V4L2-SUBDEV-UNKNOWN:
13 .. _MEDIA-ENT-F-IO-V4L:
14 .. _MEDIA-ENT-F-IO-VBI:
15 .. _MEDIA-ENT-F-IO-SWRADIO:
16 .. _MEDIA-ENT-F-IO-DTV:
17 .. _MEDIA-ENT-F-DTV-DEMOD:
18 .. _MEDIA-ENT-F-TS-DEMUX:
19 .. _MEDIA-ENT-F-DTV-CA:
20 .. _MEDIA-ENT-F-DTV-NET-DECAP:
21 .. _MEDIA-ENT-F-CONN-RF:
22 .. _MEDIA-ENT-F-CONN-SVIDEO:
23 .. _MEDIA-ENT-F-CONN-COMPOSITE:
24 .. _MEDIA-ENT-F-CAM-SENSOR:
25 .. _MEDIA-ENT-F-FLASH:
27 .. _MEDIA-ENT-F-ATV-DECODER:
28 .. _MEDIA-ENT-F-TUNER:
29 .. _MEDIA-ENT-F-IF-VID-DECODER:
30 .. _MEDIA-ENT-F-IF-AUD-DECODER:
31 .. _MEDIA-ENT-F-AUDIO-CAPTURE:
32 .. _MEDIA-ENT-F-AUDIO-PLAYBACK:
33 .. _MEDIA-ENT-F-AUDIO-MIXER:
34 .. _MEDIA-ENT-F-PROC-VIDEO-COMPOSER:
35 .. _MEDIA-ENT-F-PROC-VIDEO-PIXEL-FORMATTER:
36 .. _MEDIA-ENT-F-PROC-VIDEO-PIXEL-ENC-CONV:
37 .. _MEDIA-ENT-F-PROC-VIDEO-LUT:
38 .. _MEDIA-ENT-F-PROC-VIDEO-SCALER:
39 .. _MEDIA-ENT-F-PROC-VIDEO-STATISTICS:
40 .. _MEDIA-ENT-F-PROC-VIDEO-ENCODER:
41 .. _MEDIA-ENT-F-PROC-VIDEO-DECODER:
42 .. _MEDIA-ENT-F-VID-MUX:
43 .. _MEDIA-ENT-F-VID-IF-BRIDGE:
44 .. _MEDIA-ENT-F-DV-DECODER:
45 .. _MEDIA-ENT-F-DV-ENCODER:
47 .. cssclass:: longtable
49 .. flat-table:: Media entity functions
53 * - ``MEDIA_ENT_F_UNKNOWN`` and
54 ``MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN``
55 - Unknown entity. That generally indicates that a driver didn't
56 initialize properly the entity, which is a Kernel bug
58 * - ``MEDIA_ENT_F_IO_V4L``
59 - Data streaming input and/or output entity.
61 * - ``MEDIA_ENT_F_IO_VBI``
62 - V4L VBI streaming input or output entity
64 * - ``MEDIA_ENT_F_IO_SWRADIO``
65 - V4L Software Digital Radio (SDR) streaming input or output entity
67 * - ``MEDIA_ENT_F_IO_DTV``
68 - DVB Digital TV streaming input or output entity
70 * - ``MEDIA_ENT_F_DTV_DEMOD``
71 - Digital TV demodulator entity.
73 * - ``MEDIA_ENT_F_TS_DEMUX``
74 - MPEG Transport stream demux entity. Could be implemented on
75 hardware or in Kernelspace by the Linux DVB subsystem.
77 * - ``MEDIA_ENT_F_DTV_CA``
78 - Digital TV Conditional Access module (CAM) entity
80 * - ``MEDIA_ENT_F_DTV_NET_DECAP``
81 - Digital TV network ULE/MLE desencapsulation entity. Could be
82 implemented on hardware or in Kernelspace
84 * - ``MEDIA_ENT_F_CONN_RF``
85 - Connector for a Radio Frequency (RF) signal.
87 * - ``MEDIA_ENT_F_CONN_SVIDEO``
88 - Connector for a S-Video signal.
90 * - ``MEDIA_ENT_F_CONN_COMPOSITE``
91 - Connector for a RGB composite signal.
93 * - ``MEDIA_ENT_F_CAM_SENSOR``
94 - Camera video sensor entity.
96 * - ``MEDIA_ENT_F_FLASH``
97 - Flash controller entity.
99 * - ``MEDIA_ENT_F_LENS``
100 - Lens controller entity.
102 * - ``MEDIA_ENT_F_ATV_DECODER``
103 - Analog video decoder, the basic function of the video decoder is
104 to accept analogue video from a wide variety of sources such as
105 broadcast, DVD players, cameras and video cassette recorders, in
106 either NTSC, PAL, SECAM or HD format, separating the stream into
107 its component parts, luminance and chrominance, and output it in
108 some digital video standard, with appropriate timing signals.
110 * - ``MEDIA_ENT_F_TUNER``
111 - Digital TV, analog TV, radio and/or software radio tuner, with
112 consists on a PLL tuning stage that converts radio frequency (RF)
113 signal into an Intermediate Frequency (IF). Modern tuners have
114 internally IF-PLL decoders for audio and video, but older models
115 have those stages implemented on separate entities.
117 * - ``MEDIA_ENT_F_IF_VID_DECODER``
118 - IF-PLL video decoder. It receives the IF from a PLL and decodes
119 the analog TV video signal. This is commonly found on some very
120 old analog tuners, like Philips MK3 designs. They all contain a
121 tda9887 (or some software compatible similar chip, like tda9885).
122 Those devices use a different I2C address than the tuner PLL.
124 * - ``MEDIA_ENT_F_IF_AUD_DECODER``
125 - IF-PLL sound decoder. It receives the IF from a PLL and decodes
126 the analog TV audio signal. This is commonly found on some very
127 old analog hardware, like Micronas msp3400, Philips tda9840,
128 tda985x, etc. Those devices use a different I2C address than the
129 tuner PLL and should be controlled together with the IF-PLL video
132 * - ``MEDIA_ENT_F_AUDIO_CAPTURE``
133 - Audio Capture Function Entity.
135 * - ``MEDIA_ENT_F_AUDIO_PLAYBACK``
136 - Audio Playback Function Entity.
138 * - ``MEDIA_ENT_F_AUDIO_MIXER``
139 - Audio Mixer Function Entity.
141 * - ``MEDIA_ENT_F_PROC_VIDEO_COMPOSER``
142 - Video composer (blender). An entity capable of video
143 composing must have at least two sink pads and one source
144 pad, and composes input video frames onto output video
145 frames. Composition can be performed using alpha blending,
146 color keying, raster operations (ROP), stitching or any other
149 * - ``MEDIA_ENT_F_PROC_VIDEO_PIXEL_FORMATTER``
150 - Video pixel formatter. An entity capable of pixel formatting
151 must have at least one sink pad and one source pad. Read
152 pixel formatters read pixels from memory and perform a subset
153 of unpacking, cropping, color keying, alpha multiplication
154 and pixel encoding conversion. Write pixel formatters perform
155 a subset of dithering, pixel encoding conversion and packing
156 and write pixels to memory.
158 * - ``MEDIA_ENT_F_PROC_VIDEO_PIXEL_ENC_CONV``
159 - Video pixel encoding converter. An entity capable of pixel
160 enconding conversion must have at least one sink pad and one
161 source pad, and convert the encoding of pixels received on
162 its sink pad(s) to a different encoding output on its source
163 pad(s). Pixel encoding conversion includes but isn't limited
164 to RGB to/from HSV, RGB to/from YUV and CFA (Bayer) to RGB
167 * - ``MEDIA_ENT_F_PROC_VIDEO_LUT``
168 - Video look-up table. An entity capable of video lookup table
169 processing must have one sink pad and one source pad. It uses
170 the values of the pixels received on its sink pad to look up
171 entries in internal tables and output them on its source pad.
172 The lookup processing can be performed on all components
173 separately or combine them for multi-dimensional table
176 * - ``MEDIA_ENT_F_PROC_VIDEO_SCALER``
177 - Video scaler. An entity capable of video scaling must have
178 at least one sink pad and one source pad, and scale the
179 video frame(s) received on its sink pad(s) to a different
180 resolution output on its source pad(s). The range of
181 supported scaling ratios is entity-specific and can differ
182 between the horizontal and vertical directions (in particular
183 scaling can be supported in one direction only). Binning and
184 sub-sampling (occasionally also referred to as skipping) are
185 considered as scaling.
187 * - ``MEDIA_ENT_F_PROC_VIDEO_STATISTICS``
188 - Video statistics computation (histogram, 3A, etc.). An entity
189 capable of statistics computation must have one sink pad and
190 one source pad. It computes statistics over the frames
191 received on its sink pad and outputs the statistics data on
194 * - ``MEDIA_ENT_F_PROC_VIDEO_ENCODER``
195 - Video (MPEG, HEVC, VPx, etc.) encoder. An entity capable of
196 compressing video frames. Must have one sink pad and at least
199 * - ``MEDIA_ENT_F_PROC_VIDEO_DECODER``
200 - Video (MPEG, HEVC, VPx, etc.) decoder. An entity capable of
201 decompressing a compressed video stream into uncompressed video
202 frames. Must have one sink pad and at least one source pad.
204 * - ``MEDIA_ENT_F_VID_MUX``
205 - Video multiplexer. An entity capable of multiplexing must have at
206 least two sink pads and one source pad, and must pass the video
207 frame(s) received from the active sink pad to the source pad.
209 * - ``MEDIA_ENT_F_VID_IF_BRIDGE``
210 - Video interface bridge. A video interface bridge entity must have at
211 least one sink pad and at least one source pad. It receives video
212 frames on its sink pad from an input video bus of one type (HDMI, eDP,
213 MIPI CSI-2, etc.), and outputs them on its source pad to an output
214 video bus of another type (eDP, MIPI CSI-2, parallel, etc.).
216 * - ``MEDIA_ENT_F_DV_DECODER``
217 - Digital video decoder. The basic function of the video decoder is
218 to accept digital video from a wide variety of sources
219 and output it in some digital video standard, with appropriate
222 * - ``MEDIA_ENT_F_DV_ENCODER``
223 - Digital video encoder. The basic function of the video encoder is
224 to accept digital video from some digital video standard with
225 appropriate timing signals (usually a parallel video bus with sync
226 signals) and output this to a digital video output connector such
227 as HDMI or DisplayPort.
229 .. tabularcolumns:: |p{5.5cm}|p{12.0cm}|
231 .. _media-entity-flag:
232 .. _MEDIA-ENT-FL-DEFAULT:
233 .. _MEDIA-ENT-FL-CONNECTOR:
235 .. flat-table:: Media entity flags
239 * - ``MEDIA_ENT_FL_DEFAULT``
240 - Default entity for its type. Used to discover the default audio,
241 VBI and video devices, the default camera sensor, etc.
243 * - ``MEDIA_ENT_FL_CONNECTOR``
244 - The entity represents a connector.
247 .. tabularcolumns:: |p{6.5cm}|p{6.0cm}|p{5.0cm}|
250 .. _MEDIA-INTF-T-DVB-FE:
251 .. _MEDIA-INTF-T-DVB-DEMUX:
252 .. _MEDIA-INTF-T-DVB-DVR:
253 .. _MEDIA-INTF-T-DVB-CA:
254 .. _MEDIA-INTF-T-DVB-NET:
255 .. _MEDIA-INTF-T-V4L-VIDEO:
256 .. _MEDIA-INTF-T-V4L-VBI:
257 .. _MEDIA-INTF-T-V4L-RADIO:
258 .. _MEDIA-INTF-T-V4L-SUBDEV:
259 .. _MEDIA-INTF-T-V4L-SWRADIO:
260 .. _MEDIA-INTF-T-V4L-TOUCH:
261 .. _MEDIA-INTF-T-ALSA-PCM-CAPTURE:
262 .. _MEDIA-INTF-T-ALSA-PCM-PLAYBACK:
263 .. _MEDIA-INTF-T-ALSA-CONTROL:
264 .. _MEDIA-INTF-T-ALSA-COMPRESS:
265 .. _MEDIA-INTF-T-ALSA-RAWMIDI:
266 .. _MEDIA-INTF-T-ALSA-HWDEP:
267 .. _MEDIA-INTF-T-ALSA-SEQUENCER:
268 .. _MEDIA-INTF-T-ALSA-TIMER:
270 .. flat-table:: Media interface types
274 * - ``MEDIA_INTF_T_DVB_FE``
275 - Device node interface for the Digital TV frontend
276 - typically, /dev/dvb/adapter?/frontend?
278 * - ``MEDIA_INTF_T_DVB_DEMUX``
279 - Device node interface for the Digital TV demux
280 - typically, /dev/dvb/adapter?/demux?
282 * - ``MEDIA_INTF_T_DVB_DVR``
283 - Device node interface for the Digital TV DVR
284 - typically, /dev/dvb/adapter?/dvr?
286 * - ``MEDIA_INTF_T_DVB_CA``
287 - Device node interface for the Digital TV Conditional Access
288 - typically, /dev/dvb/adapter?/ca?
290 * - ``MEDIA_INTF_T_DVB_NET``
291 - Device node interface for the Digital TV network control
292 - typically, /dev/dvb/adapter?/net?
294 * - ``MEDIA_INTF_T_V4L_VIDEO``
295 - Device node interface for video (V4L)
296 - typically, /dev/video?
298 * - ``MEDIA_INTF_T_V4L_VBI``
299 - Device node interface for VBI (V4L)
300 - typically, /dev/vbi?
302 * - ``MEDIA_INTF_T_V4L_RADIO``
303 - Device node interface for radio (V4L)
304 - typically, /dev/radio?
306 * - ``MEDIA_INTF_T_V4L_SUBDEV``
307 - Device node interface for a V4L subdevice
308 - typically, /dev/v4l-subdev?
310 * - ``MEDIA_INTF_T_V4L_SWRADIO``
311 - Device node interface for Software Defined Radio (V4L)
312 - typically, /dev/swradio?
314 * - ``MEDIA_INTF_T_V4L_TOUCH``
315 - Device node interface for Touch device (V4L)
316 - typically, /dev/v4l-touch?
318 * - ``MEDIA_INTF_T_ALSA_PCM_CAPTURE``
319 - Device node interface for ALSA PCM Capture
320 - typically, /dev/snd/pcmC?D?c
322 * - ``MEDIA_INTF_T_ALSA_PCM_PLAYBACK``
323 - Device node interface for ALSA PCM Playback
324 - typically, /dev/snd/pcmC?D?p
326 * - ``MEDIA_INTF_T_ALSA_CONTROL``
327 - Device node interface for ALSA Control
328 - typically, /dev/snd/controlC?
330 * - ``MEDIA_INTF_T_ALSA_COMPRESS``
331 - Device node interface for ALSA Compress
332 - typically, /dev/snd/compr?
334 * - ``MEDIA_INTF_T_ALSA_RAWMIDI``
335 - Device node interface for ALSA Raw MIDI
336 - typically, /dev/snd/midi?
338 * - ``MEDIA_INTF_T_ALSA_HWDEP``
339 - Device node interface for ALSA Hardware Dependent
340 - typically, /dev/snd/hwC?D?
342 * - ``MEDIA_INTF_T_ALSA_SEQUENCER``
343 - Device node interface for ALSA Sequencer
344 - typically, /dev/snd/seq
346 * - ``MEDIA_INTF_T_ALSA_TIMER``
347 - Device node interface for ALSA Timer
348 - typically, /dev/snd/timer
351 .. tabularcolumns:: |p{5.5cm}|p{12.0cm}|
354 .. _MEDIA-PAD-FL-SINK:
355 .. _MEDIA-PAD-FL-SOURCE:
356 .. _MEDIA-PAD-FL-MUST-CONNECT:
358 .. flat-table:: Media pad flags
362 * - ``MEDIA_PAD_FL_SINK``
363 - Input pad, relative to the entity. Input pads sink data and are
366 * - ``MEDIA_PAD_FL_SOURCE``
367 - Output pad, relative to the entity. Output pads source data and
368 are origins of links.
370 * - ``MEDIA_PAD_FL_MUST_CONNECT``
371 - If this flag is set and the pad is linked to any other pad, then
372 at least one of those links must be enabled for the entity to be
373 able to stream. There could be temporary reasons (e.g. device
374 configuration dependent) for the pad to need enabled links even
375 when this flag isn't set; the absence of the flag doesn't imply
379 One and only one of ``MEDIA_PAD_FL_SINK`` and ``MEDIA_PAD_FL_SOURCE``
380 must be set for every pad.
382 .. tabularcolumns:: |p{5.5cm}|p{12.0cm}|
385 .. _MEDIA-LNK-FL-ENABLED:
386 .. _MEDIA-LNK-FL-IMMUTABLE:
387 .. _MEDIA-LNK-FL-DYNAMIC:
388 .. _MEDIA-LNK-FL-LINK-TYPE:
390 .. flat-table:: Media link flags
394 * - ``MEDIA_LNK_FL_ENABLED``
395 - The link is enabled and can be used to transfer media data. When
396 two or more links target a sink pad, only one of them can be
399 * - ``MEDIA_LNK_FL_IMMUTABLE``
400 - The link enabled state can't be modified at runtime. An immutable
401 link is always enabled.
403 * - ``MEDIA_LNK_FL_DYNAMIC``
404 - The link enabled state can be modified during streaming. This flag
405 is set by drivers and is read-only for applications.
407 * - ``MEDIA_LNK_FL_LINK_TYPE``
408 - This is a bitmask that defines the type of the link. Currently,
409 two types of links are supported:
411 .. _MEDIA-LNK-FL-DATA-LINK:
413 ``MEDIA_LNK_FL_DATA_LINK`` if the link is between two pads
415 .. _MEDIA-LNK-FL-INTERFACE-LINK:
417 ``MEDIA_LNK_FL_INTERFACE_LINK`` if the link is between an
418 interface and an entity