Merge branch 'linux-4.12' of git://github.com/skeggsb/linux into drm-next
[sfrench/cifs-2.6.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           sub-sampling (occasionally also referred to as skipping) are
288           considered as scaling.
289
290     -  ..  row 28
291
292        ..  _MEDIA-ENT-F-PROC-VIDEO-STATISTICS:
293
294        -  ``MEDIA_ENT_F_PROC_VIDEO_STATISTICS``
295
296        -  Video statistics computation (histogram, 3A, ...). An entity
297           capable of statistics computation must have one sink pad and
298           one source pad. It computes statistics over the frames
299           received on its sink pad and outputs the statistics data on
300           its source pad.
301
302
303 ..  tabularcolumns:: |p{5.5cm}|p{12.0cm}|
304
305 .. _media-entity-flag:
306
307 .. flat-table:: Media entity flags
308     :header-rows:  0
309     :stub-columns: 0
310
311
312     -  .. row 1
313
314        ..  _MEDIA-ENT-FL-DEFAULT:
315
316        -  ``MEDIA_ENT_FL_DEFAULT``
317
318        -  Default entity for its type. Used to discover the default audio,
319           VBI and video devices, the default camera sensor, ...
320
321     -  .. row 2
322
323        ..  _MEDIA-ENT-FL-CONNECTOR:
324
325        -  ``MEDIA_ENT_FL_CONNECTOR``
326
327        -  The entity represents a data conector
328
329
330 ..  tabularcolumns:: |p{6.5cm}|p{6.0cm}|p{5.0cm}|
331
332 .. _media-intf-type:
333
334 .. flat-table:: Media interface types
335     :header-rows:  0
336     :stub-columns: 0
337
338
339     -  .. row 1
340
341        ..  _MEDIA-INTF-T-DVB-FE:
342
343        -  ``MEDIA_INTF_T_DVB_FE``
344
345        -  Device node interface for the Digital TV frontend
346
347        -  typically, /dev/dvb/adapter?/frontend?
348
349     -  .. row 2
350
351        ..  _MEDIA-INTF-T-DVB-DEMUX:
352
353        -  ``MEDIA_INTF_T_DVB_DEMUX``
354
355        -  Device node interface for the Digital TV demux
356
357        -  typically, /dev/dvb/adapter?/demux?
358
359     -  .. row 3
360
361        ..  _MEDIA-INTF-T-DVB-DVR:
362
363        -  ``MEDIA_INTF_T_DVB_DVR``
364
365        -  Device node interface for the Digital TV DVR
366
367        -  typically, /dev/dvb/adapter?/dvr?
368
369     -  .. row 4
370
371        ..  _MEDIA-INTF-T-DVB-CA:
372
373        -  ``MEDIA_INTF_T_DVB_CA``
374
375        -  Device node interface for the Digital TV Conditional Access
376
377        -  typically, /dev/dvb/adapter?/ca?
378
379     -  .. row 5
380
381        ..  _MEDIA-INTF-T-DVB-NET:
382
383        -  ``MEDIA_INTF_T_DVB_NET``
384
385        -  Device node interface for the Digital TV network control
386
387        -  typically, /dev/dvb/adapter?/net?
388
389     -  .. row 6
390
391        ..  _MEDIA-INTF-T-V4L-VIDEO:
392
393        -  ``MEDIA_INTF_T_V4L_VIDEO``
394
395        -  Device node interface for video (V4L)
396
397        -  typically, /dev/video?
398
399     -  .. row 7
400
401        ..  _MEDIA-INTF-T-V4L-VBI:
402
403        -  ``MEDIA_INTF_T_V4L_VBI``
404
405        -  Device node interface for VBI (V4L)
406
407        -  typically, /dev/vbi?
408
409     -  .. row 8
410
411        ..  _MEDIA-INTF-T-V4L-RADIO:
412
413        -  ``MEDIA_INTF_T_V4L_RADIO``
414
415        -  Device node interface for radio (V4L)
416
417        -  typically, /dev/radio?
418
419     -  .. row 9
420
421        ..  _MEDIA-INTF-T-V4L-SUBDEV:
422
423        -  ``MEDIA_INTF_T_V4L_SUBDEV``
424
425        -  Device node interface for a V4L subdevice
426
427        -  typically, /dev/v4l-subdev?
428
429     -  .. row 10
430
431        ..  _MEDIA-INTF-T-V4L-SWRADIO:
432
433        -  ``MEDIA_INTF_T_V4L_SWRADIO``
434
435        -  Device node interface for Software Defined Radio (V4L)
436
437        -  typically, /dev/swradio?
438
439     -  .. row 11
440
441        ..  _MEDIA-INTF-T-V4L-TOUCH:
442
443        -  ``MEDIA_INTF_T_V4L_TOUCH``
444
445        -  Device node interface for Touch device (V4L)
446
447        -  typically, /dev/v4l-touch?
448
449     -  .. row 12
450
451        ..  _MEDIA-INTF-T-ALSA-PCM-CAPTURE:
452
453        -  ``MEDIA_INTF_T_ALSA_PCM_CAPTURE``
454
455        -  Device node interface for ALSA PCM Capture
456
457        -  typically, /dev/snd/pcmC?D?c
458
459     -  .. row 13
460
461        ..  _MEDIA-INTF-T-ALSA-PCM-PLAYBACK:
462
463        -  ``MEDIA_INTF_T_ALSA_PCM_PLAYBACK``
464
465        -  Device node interface for ALSA PCM Playback
466
467        -  typically, /dev/snd/pcmC?D?p
468
469     -  .. row 14
470
471        ..  _MEDIA-INTF-T-ALSA-CONTROL:
472
473        -  ``MEDIA_INTF_T_ALSA_CONTROL``
474
475        -  Device node interface for ALSA Control
476
477        -  typically, /dev/snd/controlC?
478
479     -  .. row 15
480
481        ..  _MEDIA-INTF-T-ALSA-COMPRESS:
482
483        -  ``MEDIA_INTF_T_ALSA_COMPRESS``
484
485        -  Device node interface for ALSA Compress
486
487        -  typically, /dev/snd/compr?
488
489     -  .. row 16
490
491        ..  _MEDIA-INTF-T-ALSA-RAWMIDI:
492
493        -  ``MEDIA_INTF_T_ALSA_RAWMIDI``
494
495        -  Device node interface for ALSA Raw MIDI
496
497        -  typically, /dev/snd/midi?
498
499     -  .. row 17
500
501        ..  _MEDIA-INTF-T-ALSA-HWDEP:
502
503        -  ``MEDIA_INTF_T_ALSA_HWDEP``
504
505        -  Device node interface for ALSA Hardware Dependent
506
507        -  typically, /dev/snd/hwC?D?
508
509     -  .. row 18
510
511        ..  _MEDIA-INTF-T-ALSA-SEQUENCER:
512
513        -  ``MEDIA_INTF_T_ALSA_SEQUENCER``
514
515        -  Device node interface for ALSA Sequencer
516
517        -  typically, /dev/snd/seq
518
519     -  .. row 19
520
521        ..  _MEDIA-INTF-T-ALSA-TIMER:
522
523        -  ``MEDIA_INTF_T_ALSA_TIMER``
524
525        -  Device node interface for ALSA Timer
526
527        -  typically, /dev/snd/timer
528
529
530 .. tabularcolumns:: |p{5.5cm}|p{12.0cm}|
531
532 .. _media-pad-flag:
533
534 .. flat-table:: Media pad flags
535     :header-rows:  0
536     :stub-columns: 0
537
538
539     -  .. row 1
540
541        ..  _MEDIA-PAD-FL-SINK:
542
543        -  ``MEDIA_PAD_FL_SINK``
544
545        -  Input pad, relative to the entity. Input pads sink data and are
546           targets of links.
547
548     -  .. row 2
549
550        ..  _MEDIA-PAD-FL-SOURCE:
551
552        -  ``MEDIA_PAD_FL_SOURCE``
553
554        -  Output pad, relative to the entity. Output pads source data and
555           are origins of links.
556
557     -  .. row 3
558
559        ..  _MEDIA-PAD-FL-MUST-CONNECT:
560
561        -  ``MEDIA_PAD_FL_MUST_CONNECT``
562
563        -  If this flag is set and the pad is linked to any other pad, then
564           at least one of those links must be enabled for the entity to be
565           able to stream. There could be temporary reasons (e.g. device
566           configuration dependent) for the pad to need enabled links even
567           when this flag isn't set; the absence of the flag doesn't imply
568           there is none.
569
570
571 One and only one of ``MEDIA_PAD_FL_SINK`` and ``MEDIA_PAD_FL_SOURCE``
572 must be set for every pad.
573
574 .. tabularcolumns:: |p{5.5cm}|p{12.0cm}|
575
576 .. _media-link-flag:
577
578 .. flat-table:: Media link flags
579     :header-rows:  0
580     :stub-columns: 0
581
582
583     -  .. row 1
584
585        ..  _MEDIA-LNK-FL-ENABLED:
586
587        -  ``MEDIA_LNK_FL_ENABLED``
588
589        -  The link is enabled and can be used to transfer media data. When
590           two or more links target a sink pad, only one of them can be
591           enabled at a time.
592
593     -  .. row 2
594
595        ..  _MEDIA-LNK-FL-IMMUTABLE:
596
597        -  ``MEDIA_LNK_FL_IMMUTABLE``
598
599        -  The link enabled state can't be modified at runtime. An immutable
600           link is always enabled.
601
602     -  .. row 3
603
604        ..  _MEDIA-LNK-FL-DYNAMIC:
605
606        -  ``MEDIA_LNK_FL_DYNAMIC``
607
608        -  The link enabled state can be modified during streaming. This flag
609           is set by drivers and is read-only for applications.
610
611     -  .. row 4
612
613        ..  _MEDIA-LNK-FL-LINK-TYPE:
614
615        -  ``MEDIA_LNK_FL_LINK_TYPE``
616
617        -  This is a bitmask that defines the type of the link. Currently,
618           two types of links are supported:
619
620           .. _MEDIA-LNK-FL-DATA-LINK:
621
622           ``MEDIA_LNK_FL_DATA_LINK`` if the link is between two pads
623
624           .. _MEDIA-LNK-FL-INTERFACE-LINK:
625
626           ``MEDIA_LNK_FL_INTERFACE_LINK`` if the link is between an
627           interface and an entity