Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid
[cascardo/linux.git] / Documentation / media / uapi / mediactl / media-types.rst
1 .. -*- coding: utf-8; mode: rst -*-
2
3 .. _media-controller-types:
4
5 Types and flags used to represent the media graph elements
6 ==========================================================
7
8 ..  tabularcolumns:: |p{8.0cm}|p{10.5cm}|
9
10 .. _media-entity-type:
11
12 .. cssclass:: longtable
13
14 .. flat-table:: Media entity types
15     :header-rows:  0
16     :stub-columns: 0
17
18
19     -  .. row 1
20
21        .. _MEDIA-ENT-F-UNKNOWN:
22        .. _MEDIA-ENT-F-V4L2-SUBDEV-UNKNOWN:
23
24        -  ``MEDIA_ENT_F_UNKNOWN`` and
25
26           ``MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN``
27
28        -  Unknown entity. That generally indicates that a driver didn't
29           initialize properly the entity, with is a Kernel bug
30
31     -  .. row 2
32
33        ..  _MEDIA-ENT-F-IO-V4L:
34
35        -  ``MEDIA_ENT_F_IO_V4L``
36
37        -  Data streaming input and/or output entity.
38
39     -  .. row 3
40
41        ..  _MEDIA-ENT-F-IO-VBI:
42
43        -  ``MEDIA_ENT_F_IO_VBI``
44
45        -  V4L VBI streaming input or output entity
46
47     -  .. row 4
48
49        ..  _MEDIA-ENT-F-IO-SWRADIO:
50
51        -  ``MEDIA_ENT_F_IO_SWRADIO``
52
53        -  V4L Software Digital Radio (SDR) streaming input or output entity
54
55     -  .. row 5
56
57        ..  _MEDIA-ENT-F-IO-DTV:
58
59        -  ``MEDIA_ENT_F_IO_DTV``
60
61        -  DVB Digital TV streaming input or output entity
62
63     -  .. row 6
64
65        ..  _MEDIA-ENT-F-DTV-DEMOD:
66
67        -  ``MEDIA_ENT_F_DTV_DEMOD``
68
69        -  Digital TV demodulator entity.
70
71     -  .. row 7
72
73        ..  _MEDIA-ENT-F-TS-DEMUX:
74
75        -  ``MEDIA_ENT_F_TS_DEMUX``
76
77        -  MPEG Transport stream demux entity. Could be implemented on
78           hardware or in Kernelspace by the Linux DVB subsystem.
79
80     -  .. row 8
81
82        ..  _MEDIA-ENT-F-DTV-CA:
83
84        -  ``MEDIA_ENT_F_DTV_CA``
85
86        -  Digital TV Conditional Access module (CAM) entity
87
88     -  .. row 9
89
90        ..  _MEDIA-ENT-F-DTV-NET-DECAP:
91
92        -  ``MEDIA_ENT_F_DTV_NET_DECAP``
93
94        -  Digital TV network ULE/MLE desencapsulation entity. Could be
95           implemented on hardware or in Kernelspace
96
97     -  .. row 10
98
99        ..  _MEDIA-ENT-F-CONN-RF:
100
101        -  ``MEDIA_ENT_F_CONN_RF``
102
103        -  Connector for a Radio Frequency (RF) signal.
104
105     -  .. row 11
106
107        ..  _MEDIA-ENT-F-CONN-SVIDEO:
108
109        -  ``MEDIA_ENT_F_CONN_SVIDEO``
110
111        -  Connector for a S-Video signal.
112
113     -  .. row 12
114
115        ..  _MEDIA-ENT-F-CONN-COMPOSITE:
116
117        -  ``MEDIA_ENT_F_CONN_COMPOSITE``
118
119        -  Connector for a RGB composite signal.
120
121     -  .. row 13
122
123        ..  _MEDIA-ENT-F-CAM-SENSOR:
124
125        -  ``MEDIA_ENT_F_CAM_SENSOR``
126
127        -  Camera video sensor entity.
128
129     -  .. row 14
130
131        ..  _MEDIA-ENT-F-FLASH:
132
133        -  ``MEDIA_ENT_F_FLASH``
134
135        -  Flash controller entity.
136
137     -  .. row 15
138
139        ..  _MEDIA-ENT-F-LENS:
140
141        -  ``MEDIA_ENT_F_LENS``
142
143        -  Lens controller entity.
144
145     -  .. row 16
146
147        ..  _MEDIA-ENT-F-ATV-DECODER:
148
149        -  ``MEDIA_ENT_F_ATV_DECODER``
150
151        -  Analog video decoder, the basic function of the video decoder is
152           to accept analogue video from a wide variety of sources such as
153           broadcast, DVD players, cameras and video cassette recorders, in
154           either NTSC, PAL, SECAM or HD format, separating the stream into
155           its component parts, luminance and chrominance, and output it in
156           some digital video standard, with appropriate timing signals.
157
158     -  .. row 17
159
160        ..  _MEDIA-ENT-F-TUNER:
161
162        -  ``MEDIA_ENT_F_TUNER``
163
164        -  Digital TV, analog TV, radio and/or software radio tuner, with
165           consists on a PLL tuning stage that converts radio frequency (RF)
166           signal into an Intermediate Frequency (IF). Modern tuners have
167           internally IF-PLL decoders for audio and video, but older models
168           have those stages implemented on separate entities.
169
170     -  .. row 18
171
172        ..  _MEDIA-ENT-F-IF-VID-DECODER:
173
174        -  ``MEDIA_ENT_F_IF_VID_DECODER``
175
176        -  IF-PLL video decoder. It receives the IF from a PLL and decodes
177           the analog TV video signal. This is commonly found on some very
178           old analog tuners, like Philips MK3 designs. They all contain a
179           tda9887 (or some software compatible similar chip, like tda9885).
180           Those devices use a different I2C address than the tuner PLL.
181
182     -  .. row 19
183
184        ..  _MEDIA-ENT-F-IF-AUD-DECODER:
185
186        -  ``MEDIA_ENT_F_IF_AUD_DECODER``
187
188        -  IF-PLL sound decoder. It receives the IF from a PLL and decodes
189           the analog TV audio signal. This is commonly found on some very
190           old analog hardware, like Micronas msp3400, Philips tda9840,
191           tda985x, etc. Those devices use a different I2C address than the
192           tuner PLL and should be controlled together with the IF-PLL video
193           decoder.
194
195     -  .. row 20
196
197        ..  _MEDIA-ENT-F-AUDIO-CAPTURE:
198
199        -  ``MEDIA_ENT_F_AUDIO_CAPTURE``
200
201        -  Audio Capture Function Entity.
202
203     -  .. row 21
204
205        ..  _MEDIA-ENT-F-AUDIO-PLAYBACK:
206
207        -  ``MEDIA_ENT_F_AUDIO_PLAYBACK``
208
209        -  Audio Playback Function Entity.
210
211     -  .. row 22
212
213        ..  _MEDIA-ENT-F-AUDIO-MIXER:
214
215        -  ``MEDIA_ENT_F_AUDIO_MIXER``
216
217        -  Audio Mixer Function Entity.
218
219     -  .. row 23
220
221        ..  _MEDIA-ENT-F-PROC-VIDEO-COMPOSER:
222
223        -  ``MEDIA_ENT_F_PROC_VIDEO_COMPOSER``
224
225        -  Video composer (blender). An entity capable of video
226           composing must have at least two sink pads and one source
227           pad, and composes input video frames onto output video
228           frames. Composition can be performed using alpha blending,
229           color keying, raster operations (ROP), stitching or any other
230           means.
231
232     -  ..  row 24
233
234        ..  _MEDIA-ENT-F-PROC-VIDEO-PIXEL-FORMATTER:
235
236        -  ``MEDIA_ENT_F_PROC_VIDEO_PIXEL_FORMATTER``
237
238        -  Video pixel formatter. An entity capable of pixel formatting
239           must have at least one sink pad and one source pad. Read
240           pixel formatters read pixels from memory and perform a subset
241           of unpacking, cropping, color keying, alpha multiplication
242           and pixel encoding conversion. Write pixel formatters perform
243           a subset of dithering, pixel encoding conversion and packing
244           and write pixels to memory.
245
246     -  ..  row 25
247
248        ..  _MEDIA-ENT-F-PROC-VIDEO-PIXEL-ENC-CONV:
249
250        -  ``MEDIA_ENT_F_PROC_VIDEO_PIXEL_ENC_CONV``
251
252        -  Video pixel encoding converter. An entity capable of pixel
253           enconding conversion must have at least one sink pad and one
254           source pad, and convert the encoding of pixels received on
255           its sink pad(s) to a different encoding output on its source
256           pad(s). Pixel encoding conversion includes but isn't limited
257           to RGB to/from HSV, RGB to/from YUV and CFA (Bayer) to RGB
258           conversions.
259
260     -  ..  row 26
261
262        ..  _MEDIA-ENT-F-PROC-VIDEO-LUT:
263
264        -  ``MEDIA_ENT_F_PROC_VIDEO_LUT``
265
266        -  Video look-up table. An entity capable of video lookup table
267           processing must have one sink pad and one source pad. It uses
268           the values of the pixels received on its sink pad to look up
269           entries in internal tables and output them on its source pad.
270           The lookup processing can be performed on all components
271           separately or combine them for multi-dimensional table
272           lookups.
273
274     -  ..  row 27
275
276        ..  _MEDIA-ENT-F-PROC-VIDEO-SCALER:
277
278        -  ``MEDIA_ENT_F_PROC_VIDEO_SCALER``
279
280        -  Video scaler. An entity capable of video scaling must have
281           at least one sink pad and one source pad, and scale the
282           video frame(s) received on its sink pad(s) to a different
283           resolution output on its source pad(s). The range of
284           supported scaling ratios is entity-specific and can differ
285           between the horizontal and vertical directions (in particular
286           scaling can be supported in one direction only). Binning and
287           skipping are considered as scaling.
288
289     -  ..  row 28
290
291        ..  _MEDIA-ENT-F-PROC-VIDEO-STATISTICS:
292
293        -  ``MEDIA_ENT_F_PROC_VIDEO_STATISTICS``
294
295        -  Video statistics computation (histogram, 3A, ...). An entity
296           capable of statistics computation must have one sink pad and
297           one source pad. It computes statistics over the frames
298           received on its sink pad and outputs the statistics data on
299           its source pad.
300
301
302 ..  tabularcolumns:: |p{5.5cm}|p{12.0cm}|
303
304 .. _media-entity-flag:
305
306 .. flat-table:: Media entity flags
307     :header-rows:  0
308     :stub-columns: 0
309
310
311     -  .. row 1
312
313        ..  _MEDIA-ENT-FL-DEFAULT:
314
315        -  ``MEDIA_ENT_FL_DEFAULT``
316
317        -  Default entity for its type. Used to discover the default audio,
318           VBI and video devices, the default camera sensor, ...
319
320     -  .. row 2
321
322        ..  _MEDIA-ENT-FL-CONNECTOR:
323
324        -  ``MEDIA_ENT_FL_CONNECTOR``
325
326        -  The entity represents a data conector
327
328
329 ..  tabularcolumns:: |p{6.5cm}|p{6.0cm}|p{5.0cm}|
330
331 .. _media-intf-type:
332
333 .. flat-table:: Media interface types
334     :header-rows:  0
335     :stub-columns: 0
336
337
338     -  .. row 1
339
340        ..  _MEDIA-INTF-T-DVB-FE:
341
342        -  ``MEDIA_INTF_T_DVB_FE``
343
344        -  Device node interface for the Digital TV frontend
345
346        -  typically, /dev/dvb/adapter?/frontend?
347
348     -  .. row 2
349
350        ..  _MEDIA-INTF-T-DVB-DEMUX:
351
352        -  ``MEDIA_INTF_T_DVB_DEMUX``
353
354        -  Device node interface for the Digital TV demux
355
356        -  typically, /dev/dvb/adapter?/demux?
357
358     -  .. row 3
359
360        ..  _MEDIA-INTF-T-DVB-DVR:
361
362        -  ``MEDIA_INTF_T_DVB_DVR``
363
364        -  Device node interface for the Digital TV DVR
365
366        -  typically, /dev/dvb/adapter?/dvr?
367
368     -  .. row 4
369
370        ..  _MEDIA-INTF-T-DVB-CA:
371
372        -  ``MEDIA_INTF_T_DVB_CA``
373
374        -  Device node interface for the Digital TV Conditional Access
375
376        -  typically, /dev/dvb/adapter?/ca?
377
378     -  .. row 5
379
380        ..  _MEDIA-INTF-T-DVB-NET:
381
382        -  ``MEDIA_INTF_T_DVB_NET``
383
384        -  Device node interface for the Digital TV network control
385
386        -  typically, /dev/dvb/adapter?/net?
387
388     -  .. row 6
389
390        ..  _MEDIA-INTF-T-V4L-VIDEO:
391
392        -  ``MEDIA_INTF_T_V4L_VIDEO``
393
394        -  Device node interface for video (V4L)
395
396        -  typically, /dev/video?
397
398     -  .. row 7
399
400        ..  _MEDIA-INTF-T-V4L-VBI:
401
402        -  ``MEDIA_INTF_T_V4L_VBI``
403
404        -  Device node interface for VBI (V4L)
405
406        -  typically, /dev/vbi?
407
408     -  .. row 8
409
410        ..  _MEDIA-INTF-T-V4L-RADIO:
411
412        -  ``MEDIA_INTF_T_V4L_RADIO``
413
414        -  Device node interface for radio (V4L)
415
416        -  typically, /dev/radio?
417
418     -  .. row 9
419
420        ..  _MEDIA-INTF-T-V4L-SUBDEV:
421
422        -  ``MEDIA_INTF_T_V4L_SUBDEV``
423
424        -  Device node interface for a V4L subdevice
425
426        -  typically, /dev/v4l-subdev?
427
428     -  .. row 10
429
430        ..  _MEDIA-INTF-T-V4L-SWRADIO:
431
432        -  ``MEDIA_INTF_T_V4L_SWRADIO``
433
434        -  Device node interface for Software Defined Radio (V4L)
435
436        -  typically, /dev/swradio?
437
438     -  .. row 11
439
440        ..  _MEDIA-INTF-T-V4L-TOUCH:
441
442        -  ``MEDIA_INTF_T_V4L_TOUCH``
443
444        -  Device node interface for Touch device (V4L)
445
446        -  typically, /dev/v4l-touch?
447
448     -  .. row 12
449
450        ..  _MEDIA-INTF-T-ALSA-PCM-CAPTURE:
451
452        -  ``MEDIA_INTF_T_ALSA_PCM_CAPTURE``
453
454        -  Device node interface for ALSA PCM Capture
455
456        -  typically, /dev/snd/pcmC?D?c
457
458     -  .. row 13
459
460        ..  _MEDIA-INTF-T-ALSA-PCM-PLAYBACK:
461
462        -  ``MEDIA_INTF_T_ALSA_PCM_PLAYBACK``
463
464        -  Device node interface for ALSA PCM Playback
465
466        -  typically, /dev/snd/pcmC?D?p
467
468     -  .. row 14
469
470        ..  _MEDIA-INTF-T-ALSA-CONTROL:
471
472        -  ``MEDIA_INTF_T_ALSA_CONTROL``
473
474        -  Device node interface for ALSA Control
475
476        -  typically, /dev/snd/controlC?
477
478     -  .. row 15
479
480        ..  _MEDIA-INTF-T-ALSA-COMPRESS:
481
482        -  ``MEDIA_INTF_T_ALSA_COMPRESS``
483
484        -  Device node interface for ALSA Compress
485
486        -  typically, /dev/snd/compr?
487
488     -  .. row 16
489
490        ..  _MEDIA-INTF-T-ALSA-RAWMIDI:
491
492        -  ``MEDIA_INTF_T_ALSA_RAWMIDI``
493
494        -  Device node interface for ALSA Raw MIDI
495
496        -  typically, /dev/snd/midi?
497
498     -  .. row 17
499
500        ..  _MEDIA-INTF-T-ALSA-HWDEP:
501
502        -  ``MEDIA_INTF_T_ALSA_HWDEP``
503
504        -  Device node interface for ALSA Hardware Dependent
505
506        -  typically, /dev/snd/hwC?D?
507
508     -  .. row 18
509
510        ..  _MEDIA-INTF-T-ALSA-SEQUENCER:
511
512        -  ``MEDIA_INTF_T_ALSA_SEQUENCER``
513
514        -  Device node interface for ALSA Sequencer
515
516        -  typically, /dev/snd/seq
517
518     -  .. row 19
519
520        ..  _MEDIA-INTF-T-ALSA-TIMER:
521
522        -  ``MEDIA_INTF_T_ALSA_TIMER``
523
524        -  Device node interface for ALSA Timer
525
526        -  typically, /dev/snd/timer
527
528
529 .. tabularcolumns:: |p{5.5cm}|p{12.0cm}|
530
531 .. _media-pad-flag:
532
533 .. flat-table:: Media pad flags
534     :header-rows:  0
535     :stub-columns: 0
536
537
538     -  .. row 1
539
540        ..  _MEDIA-PAD-FL-SINK:
541
542        -  ``MEDIA_PAD_FL_SINK``
543
544        -  Input pad, relative to the entity. Input pads sink data and are
545           targets of links.
546
547     -  .. row 2
548
549        ..  _MEDIA-PAD-FL-SOURCE:
550
551        -  ``MEDIA_PAD_FL_SOURCE``
552
553        -  Output pad, relative to the entity. Output pads source data and
554           are origins of links.
555
556     -  .. row 3
557
558        ..  _MEDIA-PAD-FL-MUST-CONNECT:
559
560        -  ``MEDIA_PAD_FL_MUST_CONNECT``
561
562        -  If this flag is set and the pad is linked to any other pad, then
563           at least one of those links must be enabled for the entity to be
564           able to stream. There could be temporary reasons (e.g. device
565           configuration dependent) for the pad to need enabled links even
566           when this flag isn't set; the absence of the flag doesn't imply
567           there is none.
568
569
570 One and only one of ``MEDIA_PAD_FL_SINK`` and ``MEDIA_PAD_FL_SOURCE``
571 must be set for every pad.
572
573 .. tabularcolumns:: |p{5.5cm}|p{12.0cm}|
574
575 .. _media-link-flag:
576
577 .. flat-table:: Media link flags
578     :header-rows:  0
579     :stub-columns: 0
580
581
582     -  .. row 1
583
584        ..  _MEDIA-LNK-FL-ENABLED:
585
586        -  ``MEDIA_LNK_FL_ENABLED``
587
588        -  The link is enabled and can be used to transfer media data. When
589           two or more links target a sink pad, only one of them can be
590           enabled at a time.
591
592     -  .. row 2
593
594        ..  _MEDIA-LNK-FL-IMMUTABLE:
595
596        -  ``MEDIA_LNK_FL_IMMUTABLE``
597
598        -  The link enabled state can't be modified at runtime. An immutable
599           link is always enabled.
600
601     -  .. row 3
602
603        ..  _MEDIA-LNK-FL-DYNAMIC:
604
605        -  ``MEDIA_LNK_FL_DYNAMIC``
606
607        -  The link enabled state can be modified during streaming. This flag
608           is set by drivers and is read-only for applications.
609
610     -  .. row 4
611
612        ..  _MEDIA-LNK-FL-LINK-TYPE:
613
614        -  ``MEDIA_LNK_FL_LINK_TYPE``
615
616        -  This is a bitmask that defines the type of the link. Currently,
617           two types of links are supported:
618
619           .. _MEDIA-LNK-FL-DATA-LINK:
620
621           ``MEDIA_LNK_FL_DATA_LINK`` if the link is between two pads
622
623           .. _MEDIA-LNK-FL-INTERFACE-LINK:
624
625           ``MEDIA_LNK_FL_INTERFACE_LINK`` if the link is between an
626           interface and an entity