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