xref: /linux/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst (revision 778b8ebe5192e7a7f00563a7456517dfa63e1d90)
1.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
2.. c:namespace:: V4L
3
4.. _codec-controls:
5
6***********************
7Codec Control Reference
8***********************
9
10Below all controls within the Codec control class are described. First
11the generic controls, then controls specific for certain hardware.
12
13.. note::
14
15   These controls are applicable to all codecs and not just MPEG. The
16   defines are prefixed with V4L2_CID_MPEG/V4L2_MPEG as the controls
17   were originally made for MPEG codecs and later extended to cover all
18   encoding formats.
19
20
21Generic Codec Controls
22======================
23
24
25.. _mpeg-control-id:
26
27Codec Control IDs
28-----------------
29
30``V4L2_CID_CODEC_CLASS (class)``
31    The Codec class descriptor. Calling
32    :ref:`VIDIOC_QUERYCTRL` for this control will
33    return a description of this control class. This description can be
34    used as the caption of a Tab page in a GUI, for example.
35
36.. _v4l2-mpeg-stream-type:
37
38``V4L2_CID_MPEG_STREAM_TYPE``
39    (enum)
40
41enum v4l2_mpeg_stream_type -
42    The MPEG-1, -2 or -4 output stream type. One cannot assume anything
43    here. Each hardware MPEG encoder tends to support different subsets
44    of the available MPEG stream types. This control is specific to
45    multiplexed MPEG streams. The currently defined stream types are:
46
47
48
49.. flat-table::
50    :header-rows:  0
51    :stub-columns: 0
52
53    * - ``V4L2_MPEG_STREAM_TYPE_MPEG2_PS``
54      - MPEG-2 program stream
55    * - ``V4L2_MPEG_STREAM_TYPE_MPEG2_TS``
56      - MPEG-2 transport stream
57    * - ``V4L2_MPEG_STREAM_TYPE_MPEG1_SS``
58      - MPEG-1 system stream
59    * - ``V4L2_MPEG_STREAM_TYPE_MPEG2_DVD``
60      - MPEG-2 DVD-compatible stream
61    * - ``V4L2_MPEG_STREAM_TYPE_MPEG1_VCD``
62      - MPEG-1 VCD-compatible stream
63    * - ``V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD``
64      - MPEG-2 SVCD-compatible stream
65
66
67
68``V4L2_CID_MPEG_STREAM_PID_PMT (integer)``
69    Program Map Table Packet ID for the MPEG transport stream (default
70    16)
71
72``V4L2_CID_MPEG_STREAM_PID_AUDIO (integer)``
73    Audio Packet ID for the MPEG transport stream (default 256)
74
75``V4L2_CID_MPEG_STREAM_PID_VIDEO (integer)``
76    Video Packet ID for the MPEG transport stream (default 260)
77
78``V4L2_CID_MPEG_STREAM_PID_PCR (integer)``
79    Packet ID for the MPEG transport stream carrying PCR fields (default
80    259)
81
82``V4L2_CID_MPEG_STREAM_PES_ID_AUDIO (integer)``
83    Audio ID for MPEG PES
84
85``V4L2_CID_MPEG_STREAM_PES_ID_VIDEO (integer)``
86    Video ID for MPEG PES
87
88.. _v4l2-mpeg-stream-vbi-fmt:
89
90``V4L2_CID_MPEG_STREAM_VBI_FMT``
91    (enum)
92
93enum v4l2_mpeg_stream_vbi_fmt -
94    Some cards can embed VBI data (e. g. Closed Caption, Teletext) into
95    the MPEG stream. This control selects whether VBI data should be
96    embedded, and if so, what embedding method should be used. The list
97    of possible VBI formats depends on the driver. The currently defined
98    VBI format types are:
99
100
101
102.. tabularcolumns:: |p{6.6 cm}|p{10.9cm}|
103
104.. flat-table::
105    :header-rows:  0
106    :stub-columns: 0
107
108    * - ``V4L2_MPEG_STREAM_VBI_FMT_NONE``
109      - No VBI in the MPEG stream
110    * - ``V4L2_MPEG_STREAM_VBI_FMT_IVTV``
111      - VBI in private packets, IVTV format (documented in the kernel
112	sources in the file
113	``Documentation/userspace-api/media/drivers/cx2341x-uapi.rst``)
114
115
116
117.. _v4l2-mpeg-audio-sampling-freq:
118
119``V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ``
120    (enum)
121
122enum v4l2_mpeg_audio_sampling_freq -
123    MPEG Audio sampling frequency. Possible values are:
124
125
126
127.. flat-table::
128    :header-rows:  0
129    :stub-columns: 0
130
131    * - ``V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100``
132      - 44.1 kHz
133    * - ``V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000``
134      - 48 kHz
135    * - ``V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000``
136      - 32 kHz
137
138
139
140.. _v4l2-mpeg-audio-encoding:
141
142``V4L2_CID_MPEG_AUDIO_ENCODING``
143    (enum)
144
145enum v4l2_mpeg_audio_encoding -
146    MPEG Audio encoding. This control is specific to multiplexed MPEG
147    streams. Possible values are:
148
149
150
151.. flat-table::
152    :header-rows:  0
153    :stub-columns: 0
154
155    * - ``V4L2_MPEG_AUDIO_ENCODING_LAYER_1``
156      - MPEG-1/2 Layer I encoding
157    * - ``V4L2_MPEG_AUDIO_ENCODING_LAYER_2``
158      - MPEG-1/2 Layer II encoding
159    * - ``V4L2_MPEG_AUDIO_ENCODING_LAYER_3``
160      - MPEG-1/2 Layer III encoding
161    * - ``V4L2_MPEG_AUDIO_ENCODING_AAC``
162      - MPEG-2/4 AAC (Advanced Audio Coding)
163    * - ``V4L2_MPEG_AUDIO_ENCODING_AC3``
164      - AC-3 aka ATSC A/52 encoding
165
166
167
168.. _v4l2-mpeg-audio-l1-bitrate:
169
170``V4L2_CID_MPEG_AUDIO_L1_BITRATE``
171    (enum)
172
173enum v4l2_mpeg_audio_l1_bitrate -
174    MPEG-1/2 Layer I bitrate. Possible values are:
175
176
177
178.. flat-table::
179    :header-rows:  0
180    :stub-columns: 0
181
182    * - ``V4L2_MPEG_AUDIO_L1_BITRATE_32K``
183      - 32 kbit/s
184    * - ``V4L2_MPEG_AUDIO_L1_BITRATE_64K``
185      - 64 kbit/s
186    * - ``V4L2_MPEG_AUDIO_L1_BITRATE_96K``
187      - 96 kbit/s
188    * - ``V4L2_MPEG_AUDIO_L1_BITRATE_128K``
189      - 128 kbit/s
190    * - ``V4L2_MPEG_AUDIO_L1_BITRATE_160K``
191      - 160 kbit/s
192    * - ``V4L2_MPEG_AUDIO_L1_BITRATE_192K``
193      - 192 kbit/s
194    * - ``V4L2_MPEG_AUDIO_L1_BITRATE_224K``
195      - 224 kbit/s
196    * - ``V4L2_MPEG_AUDIO_L1_BITRATE_256K``
197      - 256 kbit/s
198    * - ``V4L2_MPEG_AUDIO_L1_BITRATE_288K``
199      - 288 kbit/s
200    * - ``V4L2_MPEG_AUDIO_L1_BITRATE_320K``
201      - 320 kbit/s
202    * - ``V4L2_MPEG_AUDIO_L1_BITRATE_352K``
203      - 352 kbit/s
204    * - ``V4L2_MPEG_AUDIO_L1_BITRATE_384K``
205      - 384 kbit/s
206    * - ``V4L2_MPEG_AUDIO_L1_BITRATE_416K``
207      - 416 kbit/s
208    * - ``V4L2_MPEG_AUDIO_L1_BITRATE_448K``
209      - 448 kbit/s
210
211
212
213.. _v4l2-mpeg-audio-l2-bitrate:
214
215``V4L2_CID_MPEG_AUDIO_L2_BITRATE``
216    (enum)
217
218enum v4l2_mpeg_audio_l2_bitrate -
219    MPEG-1/2 Layer II bitrate. Possible values are:
220
221
222
223.. flat-table::
224    :header-rows:  0
225    :stub-columns: 0
226
227    * - ``V4L2_MPEG_AUDIO_L2_BITRATE_32K``
228      - 32 kbit/s
229    * - ``V4L2_MPEG_AUDIO_L2_BITRATE_48K``
230      - 48 kbit/s
231    * - ``V4L2_MPEG_AUDIO_L2_BITRATE_56K``
232      - 56 kbit/s
233    * - ``V4L2_MPEG_AUDIO_L2_BITRATE_64K``
234      - 64 kbit/s
235    * - ``V4L2_MPEG_AUDIO_L2_BITRATE_80K``
236      - 80 kbit/s
237    * - ``V4L2_MPEG_AUDIO_L2_BITRATE_96K``
238      - 96 kbit/s
239    * - ``V4L2_MPEG_AUDIO_L2_BITRATE_112K``
240      - 112 kbit/s
241    * - ``V4L2_MPEG_AUDIO_L2_BITRATE_128K``
242      - 128 kbit/s
243    * - ``V4L2_MPEG_AUDIO_L2_BITRATE_160K``
244      - 160 kbit/s
245    * - ``V4L2_MPEG_AUDIO_L2_BITRATE_192K``
246      - 192 kbit/s
247    * - ``V4L2_MPEG_AUDIO_L2_BITRATE_224K``
248      - 224 kbit/s
249    * - ``V4L2_MPEG_AUDIO_L2_BITRATE_256K``
250      - 256 kbit/s
251    * - ``V4L2_MPEG_AUDIO_L2_BITRATE_320K``
252      - 320 kbit/s
253    * - ``V4L2_MPEG_AUDIO_L2_BITRATE_384K``
254      - 384 kbit/s
255
256
257
258.. _v4l2-mpeg-audio-l3-bitrate:
259
260``V4L2_CID_MPEG_AUDIO_L3_BITRATE``
261    (enum)
262
263enum v4l2_mpeg_audio_l3_bitrate -
264    MPEG-1/2 Layer III bitrate. Possible values are:
265
266
267
268.. flat-table::
269    :header-rows:  0
270    :stub-columns: 0
271
272    * - ``V4L2_MPEG_AUDIO_L3_BITRATE_32K``
273      - 32 kbit/s
274    * - ``V4L2_MPEG_AUDIO_L3_BITRATE_40K``
275      - 40 kbit/s
276    * - ``V4L2_MPEG_AUDIO_L3_BITRATE_48K``
277      - 48 kbit/s
278    * - ``V4L2_MPEG_AUDIO_L3_BITRATE_56K``
279      - 56 kbit/s
280    * - ``V4L2_MPEG_AUDIO_L3_BITRATE_64K``
281      - 64 kbit/s
282    * - ``V4L2_MPEG_AUDIO_L3_BITRATE_80K``
283      - 80 kbit/s
284    * - ``V4L2_MPEG_AUDIO_L3_BITRATE_96K``
285      - 96 kbit/s
286    * - ``V4L2_MPEG_AUDIO_L3_BITRATE_112K``
287      - 112 kbit/s
288    * - ``V4L2_MPEG_AUDIO_L3_BITRATE_128K``
289      - 128 kbit/s
290    * - ``V4L2_MPEG_AUDIO_L3_BITRATE_160K``
291      - 160 kbit/s
292    * - ``V4L2_MPEG_AUDIO_L3_BITRATE_192K``
293      - 192 kbit/s
294    * - ``V4L2_MPEG_AUDIO_L3_BITRATE_224K``
295      - 224 kbit/s
296    * - ``V4L2_MPEG_AUDIO_L3_BITRATE_256K``
297      - 256 kbit/s
298    * - ``V4L2_MPEG_AUDIO_L3_BITRATE_320K``
299      - 320 kbit/s
300
301
302
303``V4L2_CID_MPEG_AUDIO_AAC_BITRATE (integer)``
304    AAC bitrate in bits per second.
305
306.. _v4l2-mpeg-audio-ac3-bitrate:
307
308``V4L2_CID_MPEG_AUDIO_AC3_BITRATE``
309    (enum)
310
311enum v4l2_mpeg_audio_ac3_bitrate -
312    AC-3 bitrate. Possible values are:
313
314
315
316.. flat-table::
317    :header-rows:  0
318    :stub-columns: 0
319
320    * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_32K``
321      - 32 kbit/s
322    * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_40K``
323      - 40 kbit/s
324    * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_48K``
325      - 48 kbit/s
326    * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_56K``
327      - 56 kbit/s
328    * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_64K``
329      - 64 kbit/s
330    * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_80K``
331      - 80 kbit/s
332    * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_96K``
333      - 96 kbit/s
334    * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_112K``
335      - 112 kbit/s
336    * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_128K``
337      - 128 kbit/s
338    * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_160K``
339      - 160 kbit/s
340    * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_192K``
341      - 192 kbit/s
342    * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_224K``
343      - 224 kbit/s
344    * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_256K``
345      - 256 kbit/s
346    * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_320K``
347      - 320 kbit/s
348    * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_384K``
349      - 384 kbit/s
350    * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_448K``
351      - 448 kbit/s
352    * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_512K``
353      - 512 kbit/s
354    * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_576K``
355      - 576 kbit/s
356    * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_640K``
357      - 640 kbit/s
358
359
360
361.. _v4l2-mpeg-audio-mode:
362
363``V4L2_CID_MPEG_AUDIO_MODE``
364    (enum)
365
366enum v4l2_mpeg_audio_mode -
367    MPEG Audio mode. Possible values are:
368
369
370
371.. flat-table::
372    :header-rows:  0
373    :stub-columns: 0
374
375    * - ``V4L2_MPEG_AUDIO_MODE_STEREO``
376      - Stereo
377    * - ``V4L2_MPEG_AUDIO_MODE_JOINT_STEREO``
378      - Joint Stereo
379    * - ``V4L2_MPEG_AUDIO_MODE_DUAL``
380      - Bilingual
381    * - ``V4L2_MPEG_AUDIO_MODE_MONO``
382      - Mono
383
384
385
386.. _v4l2-mpeg-audio-mode-extension:
387
388``V4L2_CID_MPEG_AUDIO_MODE_EXTENSION``
389    (enum)
390
391enum v4l2_mpeg_audio_mode_extension -
392    Joint Stereo audio mode extension. In Layer I and II they indicate
393    which subbands are in intensity stereo. All other subbands are coded
394    in stereo. Layer III is not (yet) supported. Possible values are:
395
396.. tabularcolumns:: |p{9.1cm}|p{8.4cm}|
397
398.. flat-table::
399    :header-rows:  0
400    :stub-columns: 0
401
402    * - ``V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4``
403      - Subbands 4-31 in intensity stereo
404    * - ``V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_8``
405      - Subbands 8-31 in intensity stereo
406    * - ``V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_12``
407      - Subbands 12-31 in intensity stereo
408    * - ``V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16``
409      - Subbands 16-31 in intensity stereo
410
411
412
413.. _v4l2-mpeg-audio-emphasis:
414
415``V4L2_CID_MPEG_AUDIO_EMPHASIS``
416    (enum)
417
418enum v4l2_mpeg_audio_emphasis -
419    Audio Emphasis. Possible values are:
420
421
422
423.. flat-table::
424    :header-rows:  0
425    :stub-columns: 0
426
427    * - ``V4L2_MPEG_AUDIO_EMPHASIS_NONE``
428      - None
429    * - ``V4L2_MPEG_AUDIO_EMPHASIS_50_DIV_15_uS``
430      - 50/15 microsecond emphasis
431    * - ``V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17``
432      - CCITT J.17
433
434
435
436.. _v4l2-mpeg-audio-crc:
437
438``V4L2_CID_MPEG_AUDIO_CRC``
439    (enum)
440
441enum v4l2_mpeg_audio_crc -
442    CRC method. Possible values are:
443
444
445
446.. flat-table::
447    :header-rows:  0
448    :stub-columns: 0
449
450    * - ``V4L2_MPEG_AUDIO_CRC_NONE``
451      - None
452    * - ``V4L2_MPEG_AUDIO_CRC_CRC16``
453      - 16 bit parity check
454
455
456
457``V4L2_CID_MPEG_AUDIO_MUTE (boolean)``
458    Mutes the audio when capturing. This is not done by muting audio
459    hardware, which can still produce a slight hiss, but in the encoder
460    itself, guaranteeing a fixed and reproducible audio bitstream. 0 =
461    unmuted, 1 = muted.
462
463.. _v4l2-mpeg-audio-dec-playback:
464
465``V4L2_CID_MPEG_AUDIO_DEC_PLAYBACK``
466    (enum)
467
468enum v4l2_mpeg_audio_dec_playback -
469    Determines how monolingual audio should be played back. Possible
470    values are:
471
472
473
474.. tabularcolumns:: |p{9.8cm}|p{7.7cm}|
475
476.. flat-table::
477    :header-rows:  0
478    :stub-columns: 0
479
480    * - ``V4L2_MPEG_AUDIO_DEC_PLAYBACK_AUTO``
481      - Automatically determines the best playback mode.
482    * - ``V4L2_MPEG_AUDIO_DEC_PLAYBACK_STEREO``
483      - Stereo playback.
484    * - ``V4L2_MPEG_AUDIO_DEC_PLAYBACK_LEFT``
485      - Left channel playback.
486    * - ``V4L2_MPEG_AUDIO_DEC_PLAYBACK_RIGHT``
487      - Right channel playback.
488    * - ``V4L2_MPEG_AUDIO_DEC_PLAYBACK_MONO``
489      - Mono playback.
490    * - ``V4L2_MPEG_AUDIO_DEC_PLAYBACK_SWAPPED_STEREO``
491      - Stereo playback with swapped left and right channels.
492
493
494
495.. _v4l2-mpeg-audio-dec-multilingual-playback:
496
497``V4L2_CID_MPEG_AUDIO_DEC_MULTILINGUAL_PLAYBACK``
498    (enum)
499
500enum v4l2_mpeg_audio_dec_playback -
501    Determines how multilingual audio should be played back.
502
503.. _v4l2-mpeg-video-encoding:
504
505``V4L2_CID_MPEG_VIDEO_ENCODING``
506    (enum)
507
508enum v4l2_mpeg_video_encoding -
509    MPEG Video encoding method. This control is specific to multiplexed
510    MPEG streams. Possible values are:
511
512
513
514.. flat-table::
515    :header-rows:  0
516    :stub-columns: 0
517
518    * - ``V4L2_MPEG_VIDEO_ENCODING_MPEG_1``
519      - MPEG-1 Video encoding
520    * - ``V4L2_MPEG_VIDEO_ENCODING_MPEG_2``
521      - MPEG-2 Video encoding
522    * - ``V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC``
523      - MPEG-4 AVC (H.264) Video encoding
524
525
526
527.. _v4l2-mpeg-video-aspect:
528
529``V4L2_CID_MPEG_VIDEO_ASPECT``
530    (enum)
531
532enum v4l2_mpeg_video_aspect -
533    Video aspect. Possible values are:
534
535
536
537.. flat-table::
538    :header-rows:  0
539    :stub-columns: 0
540
541    * - ``V4L2_MPEG_VIDEO_ASPECT_1x1``
542    * - ``V4L2_MPEG_VIDEO_ASPECT_4x3``
543    * - ``V4L2_MPEG_VIDEO_ASPECT_16x9``
544    * - ``V4L2_MPEG_VIDEO_ASPECT_221x100``
545
546
547
548``V4L2_CID_MPEG_VIDEO_B_FRAMES (integer)``
549    Number of B-Frames (default 2)
550
551``V4L2_CID_MPEG_VIDEO_GOP_SIZE (integer)``
552    GOP size (default 12)
553
554``V4L2_CID_MPEG_VIDEO_GOP_CLOSURE (boolean)``
555    GOP closure (default 1)
556
557``V4L2_CID_MPEG_VIDEO_PULLDOWN (boolean)``
558    Enable 3:2 pulldown (default 0)
559
560.. _v4l2-mpeg-video-bitrate-mode:
561
562``V4L2_CID_MPEG_VIDEO_BITRATE_MODE``
563    (enum)
564
565enum v4l2_mpeg_video_bitrate_mode -
566    Video bitrate mode. Possible values are:
567
568
569
570.. flat-table::
571    :header-rows:  0
572    :stub-columns: 0
573
574    * - ``V4L2_MPEG_VIDEO_BITRATE_MODE_VBR``
575      - Variable bitrate
576    * - ``V4L2_MPEG_VIDEO_BITRATE_MODE_CBR``
577      - Constant bitrate
578    * - ``V4L2_MPEG_VIDEO_BITRATE_MODE_CQ``
579      - Constant quality
580
581
582
583``V4L2_CID_MPEG_VIDEO_BITRATE (integer)``
584    Average video bitrate in bits per second.
585
586``V4L2_CID_MPEG_VIDEO_BITRATE_PEAK (integer)``
587    Peak video bitrate in bits per second. Must be larger or equal to
588    the average video bitrate. It is ignored if the video bitrate mode
589    is set to constant bitrate.
590
591``V4L2_CID_MPEG_VIDEO_CONSTANT_QUALITY (integer)``
592    Constant quality level control. This control is applicable when
593    ``V4L2_CID_MPEG_VIDEO_BITRATE_MODE`` value is
594    ``V4L2_MPEG_VIDEO_BITRATE_MODE_CQ``. Valid range is 1 to 100
595    where 1 indicates lowest quality and 100 indicates highest quality.
596    Encoder will decide the appropriate quantization parameter and
597    bitrate to produce requested frame quality.
598
599
600``V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE (enum)``
601
602enum v4l2_mpeg_video_frame_skip_mode -
603    Indicates in what conditions the encoder should skip frames. If
604    encoding a frame would cause the encoded stream to be larger then a
605    chosen data limit then the frame will be skipped. Possible values
606    are:
607
608
609.. tabularcolumns:: |p{8.2cm}|p{9.3cm}|
610
611.. raw:: latex
612
613    \small
614
615.. flat-table::
616    :header-rows:  0
617    :stub-columns: 0
618
619    * - ``V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED``
620      - Frame skip mode is disabled.
621    * - ``V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_LEVEL_LIMIT``
622      - Frame skip mode enabled and buffer limit is set by the chosen
623        level and is defined by the standard.
624    * - ``V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT``
625      - Frame skip mode enabled and buffer limit is set by the
626        :ref:`VBV (MPEG1/2/4) <v4l2-mpeg-video-vbv-size>` or
627        :ref:`CPB (H264) buffer size <v4l2-mpeg-video-h264-cpb-size>` control.
628
629.. raw:: latex
630
631    \normalsize
632
633``V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION (integer)``
634    For every captured frame, skip this many subsequent frames (default
635    0).
636
637``V4L2_CID_MPEG_VIDEO_MUTE (boolean)``
638    "Mutes" the video to a fixed color when capturing. This is useful
639    for testing, to produce a fixed video bitstream. 0 = unmuted, 1 =
640    muted.
641
642``V4L2_CID_MPEG_VIDEO_MUTE_YUV (integer)``
643    Sets the "mute" color of the video. The supplied 32-bit integer is
644    interpreted as follows (bit 0 = least significant bit):
645
646
647
648.. flat-table::
649    :header-rows:  0
650    :stub-columns: 0
651
652    * - Bit 0:7
653      - V chrominance information
654    * - Bit 8:15
655      - U chrominance information
656    * - Bit 16:23
657      - Y luminance information
658    * - Bit 24:31
659      - Must be zero.
660
661
662
663.. _v4l2-mpeg-video-dec-pts:
664
665``V4L2_CID_MPEG_VIDEO_DEC_PTS (integer64)``
666    This read-only control returns the 33-bit video Presentation Time
667    Stamp as defined in ITU T-REC-H.222.0 and ISO/IEC 13818-1 of the
668    currently displayed frame. This is the same PTS as is used in
669    :ref:`VIDIOC_DECODER_CMD`.
670
671.. _v4l2-mpeg-video-dec-frame:
672
673``V4L2_CID_MPEG_VIDEO_DEC_FRAME (integer64)``
674    This read-only control returns the frame counter of the frame that
675    is currently displayed (decoded). This value is reset to 0 whenever
676    the decoder is started.
677
678``V4L2_CID_MPEG_VIDEO_DEC_CONCEAL_COLOR (integer64)``
679    This control sets the conceal color in YUV color space. It describes
680    the client preference of the error conceal color in case of an error
681    where the reference frame is missing. The decoder should fill the
682    reference buffer with the preferred color and use it for future
683    decoding. The control is using 16 bits per channel.
684    Applicable to decoders.
685
686.. flat-table::
687    :header-rows:  0
688    :stub-columns: 0
689
690    * -
691      - 8bit  format
692      - 10bit format
693      - 12bit format
694    * - Y luminance
695      - Bit 0:7
696      - Bit 0:9
697      - Bit 0:11
698    * - Cb chrominance
699      - Bit 16:23
700      - Bit 16:25
701      - Bit 16:27
702    * - Cr chrominance
703      - Bit 32:39
704      - Bit 32:41
705      - Bit 32:43
706    * - Must be zero
707      - Bit 48:63
708      - Bit 48:63
709      - Bit 48:63
710
711``V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE (boolean)``
712    If enabled the decoder expects to receive a single slice per buffer,
713    otherwise the decoder expects a single frame in per buffer.
714    Applicable to the decoder, all codecs.
715
716``V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY_ENABLE (boolean)``
717    If the display delay is enabled then the decoder is forced to return
718    a CAPTURE buffer (decoded frame) after processing a certain number
719    of OUTPUT buffers. The delay can be set through
720    ``V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY``. This
721    feature can be used for example for generating thumbnails of videos.
722    Applicable to the decoder.
723
724``V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY (integer)``
725    Display delay value for decoder. The decoder is forced to
726    return a decoded frame after the set 'display delay' number of
727    frames. If this number is low it may result in frames returned out
728    of display order, in addition the hardware may still be using the
729    returned buffer as a reference picture for subsequent frames.
730
731``V4L2_CID_MPEG_VIDEO_AU_DELIMITER (boolean)``
732    If enabled then, AUD (Access Unit Delimiter) NALUs will be generated.
733    That could be useful to find the start of a frame without having to
734    fully parse each NALU. Applicable to the H264 and HEVC encoders.
735
736``V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_ENABLE (boolean)``
737    Enable writing sample aspect ratio in the Video Usability
738    Information. Applicable to the H264 encoder.
739
740.. _v4l2-mpeg-video-h264-vui-sar-idc:
741
742``V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC``
743    (enum)
744
745enum v4l2_mpeg_video_h264_vui_sar_idc -
746    VUI sample aspect ratio indicator for H.264 encoding. The value is
747    defined in the table E-1 in the standard. Applicable to the H264
748    encoder.
749
750
751
752.. flat-table::
753    :header-rows:  0
754    :stub-columns: 0
755
756    * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_UNSPECIFIED``
757      - Unspecified
758    * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_1x1``
759      - 1x1
760    * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_12x11``
761      - 12x11
762    * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_10x11``
763      - 10x11
764    * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_16x11``
765      - 16x11
766    * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_40x33``
767      - 40x33
768    * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_24x11``
769      - 24x11
770    * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_20x11``
771      - 20x11
772    * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_32x11``
773      - 32x11
774    * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_80x33``
775      - 80x33
776    * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_18x11``
777      - 18x11
778    * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_15x11``
779      - 15x11
780    * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_64x33``
781      - 64x33
782    * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_160x99``
783      - 160x99
784    * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_4x3``
785      - 4x3
786    * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_3x2``
787      - 3x2
788    * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_2x1``
789      - 2x1
790    * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_EXTENDED``
791      - Extended SAR
792
793
794
795``V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_WIDTH (integer)``
796    Extended sample aspect ratio width for H.264 VUI encoding.
797    Applicable to the H264 encoder.
798
799``V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_HEIGHT (integer)``
800    Extended sample aspect ratio height for H.264 VUI encoding.
801    Applicable to the H264 encoder.
802
803.. _v4l2-mpeg-video-h264-level:
804
805``V4L2_CID_MPEG_VIDEO_H264_LEVEL``
806    (enum)
807
808enum v4l2_mpeg_video_h264_level -
809    The level information for the H264 video elementary stream.
810    Applicable to the H264 encoder. Possible values are:
811
812
813
814.. flat-table::
815    :header-rows:  0
816    :stub-columns: 0
817
818    * - ``V4L2_MPEG_VIDEO_H264_LEVEL_1_0``
819      - Level 1.0
820    * - ``V4L2_MPEG_VIDEO_H264_LEVEL_1B``
821      - Level 1B
822    * - ``V4L2_MPEG_VIDEO_H264_LEVEL_1_1``
823      - Level 1.1
824    * - ``V4L2_MPEG_VIDEO_H264_LEVEL_1_2``
825      - Level 1.2
826    * - ``V4L2_MPEG_VIDEO_H264_LEVEL_1_3``
827      - Level 1.3
828    * - ``V4L2_MPEG_VIDEO_H264_LEVEL_2_0``
829      - Level 2.0
830    * - ``V4L2_MPEG_VIDEO_H264_LEVEL_2_1``
831      - Level 2.1
832    * - ``V4L2_MPEG_VIDEO_H264_LEVEL_2_2``
833      - Level 2.2
834    * - ``V4L2_MPEG_VIDEO_H264_LEVEL_3_0``
835      - Level 3.0
836    * - ``V4L2_MPEG_VIDEO_H264_LEVEL_3_1``
837      - Level 3.1
838    * - ``V4L2_MPEG_VIDEO_H264_LEVEL_3_2``
839      - Level 3.2
840    * - ``V4L2_MPEG_VIDEO_H264_LEVEL_4_0``
841      - Level 4.0
842    * - ``V4L2_MPEG_VIDEO_H264_LEVEL_4_1``
843      - Level 4.1
844    * - ``V4L2_MPEG_VIDEO_H264_LEVEL_4_2``
845      - Level 4.2
846    * - ``V4L2_MPEG_VIDEO_H264_LEVEL_5_0``
847      - Level 5.0
848    * - ``V4L2_MPEG_VIDEO_H264_LEVEL_5_1``
849      - Level 5.1
850    * - ``V4L2_MPEG_VIDEO_H264_LEVEL_5_2``
851      - Level 5.2
852    * - ``V4L2_MPEG_VIDEO_H264_LEVEL_6_0``
853      - Level 6.0
854    * - ``V4L2_MPEG_VIDEO_H264_LEVEL_6_1``
855      - Level 6.1
856    * - ``V4L2_MPEG_VIDEO_H264_LEVEL_6_2``
857      - Level 6.2
858
859
860
861.. _v4l2-mpeg-video-mpeg2-level:
862
863``V4L2_CID_MPEG_VIDEO_MPEG2_LEVEL``
864    (enum)
865
866enum v4l2_mpeg_video_mpeg2_level -
867    The level information for the MPEG2 elementary stream. Applicable to
868    MPEG2 codecs. Possible values are:
869
870
871
872.. flat-table::
873    :header-rows:  0
874    :stub-columns: 0
875
876    * - ``V4L2_MPEG_VIDEO_MPEG2_LEVEL_LOW``
877      - Low Level (LL)
878    * - ``V4L2_MPEG_VIDEO_MPEG2_LEVEL_MAIN``
879      - Main Level (ML)
880    * - ``V4L2_MPEG_VIDEO_MPEG2_LEVEL_HIGH_1440``
881      - High-1440 Level (H-14)
882    * - ``V4L2_MPEG_VIDEO_MPEG2_LEVEL_HIGH``
883      - High Level (HL)
884
885
886
887.. _v4l2-mpeg-video-mpeg4-level:
888
889``V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL``
890    (enum)
891
892enum v4l2_mpeg_video_mpeg4_level -
893    The level information for the MPEG4 elementary stream. Applicable to
894    the MPEG4 encoder. Possible values are:
895
896
897
898.. flat-table::
899    :header-rows:  0
900    :stub-columns: 0
901
902    * - ``V4L2_MPEG_VIDEO_MPEG4_LEVEL_0``
903      - Level 0
904    * - ``V4L2_MPEG_VIDEO_MPEG4_LEVEL_0B``
905      - Level 0b
906    * - ``V4L2_MPEG_VIDEO_MPEG4_LEVEL_1``
907      - Level 1
908    * - ``V4L2_MPEG_VIDEO_MPEG4_LEVEL_2``
909      - Level 2
910    * - ``V4L2_MPEG_VIDEO_MPEG4_LEVEL_3``
911      - Level 3
912    * - ``V4L2_MPEG_VIDEO_MPEG4_LEVEL_3B``
913      - Level 3b
914    * - ``V4L2_MPEG_VIDEO_MPEG4_LEVEL_4``
915      - Level 4
916    * - ``V4L2_MPEG_VIDEO_MPEG4_LEVEL_5``
917      - Level 5
918
919
920
921.. _v4l2-mpeg-video-h264-profile:
922
923``V4L2_CID_MPEG_VIDEO_H264_PROFILE``
924    (enum)
925
926enum v4l2_mpeg_video_h264_profile -
927    The profile information for H264. Applicable to the H264 encoder.
928    Possible values are:
929
930.. raw:: latex
931
932    \small
933
934.. tabularcolumns:: |p{10.2cm}|p{7.3cm}|
935
936.. flat-table::
937    :header-rows:  0
938    :stub-columns: 0
939
940    * - ``V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE``
941      - Baseline profile
942    * - ``V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE``
943      - Constrained Baseline profile
944    * - ``V4L2_MPEG_VIDEO_H264_PROFILE_MAIN``
945      - Main profile
946    * - ``V4L2_MPEG_VIDEO_H264_PROFILE_EXTENDED``
947      - Extended profile
948    * - ``V4L2_MPEG_VIDEO_H264_PROFILE_HIGH``
949      - High profile
950    * - ``V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10``
951      - High 10 profile
952    * - ``V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422``
953      - High 422 profile
954    * - ``V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_PREDICTIVE``
955      - High 444 Predictive profile
956    * - ``V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10_INTRA``
957      - High 10 Intra profile
958    * - ``V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422_INTRA``
959      - High 422 Intra profile
960    * - ``V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_INTRA``
961      - High 444 Intra profile
962    * - ``V4L2_MPEG_VIDEO_H264_PROFILE_CAVLC_444_INTRA``
963      - CAVLC 444 Intra profile
964    * - ``V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_BASELINE``
965      - Scalable Baseline profile
966    * - ``V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH``
967      - Scalable High profile
968    * - ``V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH_INTRA``
969      - Scalable High Intra profile
970    * - ``V4L2_MPEG_VIDEO_H264_PROFILE_STEREO_HIGH``
971      - Stereo High profile
972    * - ``V4L2_MPEG_VIDEO_H264_PROFILE_MULTIVIEW_HIGH``
973      - Multiview High profile
974    * - ``V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH``
975      - Constrained High profile
976
977.. raw:: latex
978
979    \normalsize
980
981.. _v4l2-mpeg-video-mpeg2-profile:
982
983``V4L2_CID_MPEG_VIDEO_MPEG2_PROFILE``
984    (enum)
985
986enum v4l2_mpeg_video_mpeg2_profile -
987    The profile information for MPEG2. Applicable to MPEG2 codecs.
988    Possible values are:
989
990.. raw:: latex
991
992    \small
993
994.. tabularcolumns:: |p{10.2cm}|p{7.3cm}|
995
996.. flat-table::
997    :header-rows:  0
998    :stub-columns: 0
999
1000    * - ``V4L2_MPEG_VIDEO_MPEG2_PROFILE_SIMPLE``
1001      - Simple profile (SP)
1002    * - ``V4L2_MPEG_VIDEO_MPEG2_PROFILE_MAIN``
1003      - Main profile (MP)
1004    * - ``V4L2_MPEG_VIDEO_MPEG2_PROFILE_SNR_SCALABLE``
1005      - SNR Scalable profile (SNR)
1006    * - ``V4L2_MPEG_VIDEO_MPEG2_PROFILE_SPATIALLY_SCALABLE``
1007      - Spatially Scalable profile (Spt)
1008    * - ``V4L2_MPEG_VIDEO_MPEG2_PROFILE_HIGH``
1009      - High profile (HP)
1010    * - ``V4L2_MPEG_VIDEO_MPEG2_PROFILE_MULTIVIEW``
1011      - Multi-view profile (MVP)
1012
1013
1014.. raw:: latex
1015
1016    \normalsize
1017
1018.. _v4l2-mpeg-video-mpeg4-profile:
1019
1020``V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE``
1021    (enum)
1022
1023enum v4l2_mpeg_video_mpeg4_profile -
1024    The profile information for MPEG4. Applicable to the MPEG4 encoder.
1025    Possible values are:
1026
1027.. raw:: latex
1028
1029    \small
1030
1031.. tabularcolumns:: |p{11.8cm}|p{5.7cm}|
1032
1033.. flat-table::
1034    :header-rows:  0
1035    :stub-columns: 0
1036
1037    * - ``V4L2_MPEG_VIDEO_MPEG4_PROFILE_SIMPLE``
1038      - Simple profile
1039    * - ``V4L2_MPEG_VIDEO_MPEG4_PROFILE_ADVANCED_SIMPLE``
1040      - Advanced Simple profile
1041    * - ``V4L2_MPEG_VIDEO_MPEG4_PROFILE_CORE``
1042      - Core profile
1043    * - ``V4L2_MPEG_VIDEO_MPEG4_PROFILE_SIMPLE_SCALABLE``
1044      - Simple Scalable profile
1045    * - ``V4L2_MPEG_VIDEO_MPEG4_PROFILE_ADVANCED_CODING_EFFICIENCY``
1046      - Advanced Coding Efficiency profile
1047
1048.. raw:: latex
1049
1050    \normalsize
1051
1052``V4L2_CID_MPEG_VIDEO_MAX_REF_PIC (integer)``
1053    The maximum number of reference pictures used for encoding.
1054    Applicable to the encoder.
1055
1056.. _v4l2-mpeg-video-multi-slice-mode:
1057
1058``V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE``
1059    (enum)
1060
1061enum v4l2_mpeg_video_multi_slice_mode -
1062    Determines how the encoder should handle division of frame into
1063    slices. Applicable to the encoder. Possible values are:
1064
1065
1066
1067.. tabularcolumns:: |p{9.6cm}|p{7.9cm}|
1068
1069.. flat-table::
1070    :header-rows:  0
1071    :stub-columns: 0
1072
1073    * - ``V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE``
1074      - Single slice per frame.
1075    * - ``V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_MB``
1076      - Multiple slices with set maximum number of macroblocks per slice.
1077    * - ``V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_BYTES``
1078      - Multiple slice with set maximum size in bytes per slice.
1079
1080
1081
1082``V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_MB (integer)``
1083    The maximum number of macroblocks in a slice. Used when
1084    ``V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE`` is set to
1085    ``V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_MB``. Applicable to the
1086    encoder.
1087
1088``V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BYTES (integer)``
1089    The maximum size of a slice in bytes. Used when
1090    ``V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE`` is set to
1091    ``V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_BYTES``. Applicable to the
1092    encoder.
1093
1094.. _v4l2-mpeg-video-h264-loop-filter-mode:
1095
1096``V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE``
1097    (enum)
1098
1099enum v4l2_mpeg_video_h264_loop_filter_mode -
1100    Loop filter mode for H264 encoder. Possible values are:
1101
1102.. raw:: latex
1103
1104    \small
1105
1106.. tabularcolumns:: |p{13.5cm}|p{4.0cm}|
1107
1108.. flat-table::
1109    :header-rows:  0
1110    :stub-columns: 0
1111
1112    * - ``V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED``
1113      - Loop filter is enabled.
1114    * - ``V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED``
1115      - Loop filter is disabled.
1116    * - ``V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED_AT_SLICE_BOUNDARY``
1117      - Loop filter is disabled at the slice boundary.
1118
1119.. raw:: latex
1120
1121    \normalsize
1122
1123
1124``V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA (integer)``
1125    Loop filter alpha coefficient, defined in the H264 standard.
1126    This value corresponds to the slice_alpha_c0_offset_div2 slice header
1127    field, and should be in the range of -6 to +6, inclusive. The actual alpha
1128    offset FilterOffsetA is twice this value.
1129    Applicable to the H264 encoder.
1130
1131``V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA (integer)``
1132    Loop filter beta coefficient, defined in the H264 standard.
1133    This corresponds to the slice_beta_offset_div2 slice header field, and
1134    should be in the range of -6 to +6, inclusive. The actual beta offset
1135    FilterOffsetB is twice this value.
1136    Applicable to the H264 encoder.
1137
1138.. _v4l2-mpeg-video-h264-entropy-mode:
1139
1140``V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE``
1141    (enum)
1142
1143enum v4l2_mpeg_video_h264_entropy_mode -
1144    Entropy coding mode for H264 - CABAC/CAVALC. Applicable to the H264
1145    encoder. Possible values are:
1146
1147
1148.. tabularcolumns:: |p{9.0cm}|p{8.5cm}|
1149
1150
1151.. flat-table::
1152    :header-rows:  0
1153    :stub-columns: 0
1154
1155    * - ``V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC``
1156      - Use CAVLC entropy coding.
1157    * - ``V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC``
1158      - Use CABAC entropy coding.
1159
1160
1161
1162``V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM (boolean)``
1163    Enable 8X8 transform for H264. Applicable to the H264 encoder.
1164
1165``V4L2_CID_MPEG_VIDEO_H264_CONSTRAINED_INTRA_PREDICTION (boolean)``
1166    Enable constrained intra prediction for H264. Applicable to the H264
1167    encoder.
1168
1169``V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET (integer)``
1170    Specify the offset that should be added to the luma quantization
1171    parameter to determine the chroma quantization parameter. Applicable
1172    to the H264 encoder.
1173
1174``V4L2_CID_MPEG_VIDEO_CYCLIC_INTRA_REFRESH_MB (integer)``
1175    Cyclic intra macroblock refresh. This is the number of continuous
1176    macroblocks refreshed every frame. Each frame a successive set of
1177    macroblocks is refreshed until the cycle completes and starts from
1178    the top of the frame. Setting this control to zero means that
1179    macroblocks will not be refreshed.  Note that this control will not
1180    take effect when ``V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD`` control
1181    is set to non zero value.
1182    Applicable to H264, H263 and MPEG4 encoder.
1183
1184``V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE (enum)``
1185
1186enum v4l2_mpeg_video_intra_refresh_period_type -
1187    Sets the type of intra refresh. The period to refresh
1188    the whole frame is specified by V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD.
1189    Note that if this control is not present, then it is undefined what
1190    refresh type is used and it is up to the driver to decide.
1191    Applicable to H264 and HEVC encoders. Possible values are:
1192
1193.. tabularcolumns:: |p{9.6cm}|p{7.9cm}|
1194
1195.. flat-table::
1196    :header-rows:  0
1197    :stub-columns: 0
1198
1199    * - ``V4L2_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_RANDOM``
1200      - The whole frame is completely refreshed randomly
1201        after the specified period.
1202    * - ``V4L2_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_CYCLIC``
1203      - The whole frame MBs are completely refreshed in cyclic order
1204        after the specified period.
1205
1206``V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD (integer)``
1207    Intra macroblock refresh period. This sets the period to refresh
1208    the whole frame. In other words, this defines the number of frames
1209    for which the whole frame will be intra-refreshed.  An example:
1210    setting period to 1 means that the whole frame will be refreshed,
1211    setting period to 2 means that the half of macroblocks will be
1212    intra-refreshed on frameX and the other half of macroblocks
1213    will be refreshed in frameX + 1 and so on. Setting the period to
1214    zero means no period is specified.
1215    Note that if the client sets this control to non zero value the
1216    ``V4L2_CID_MPEG_VIDEO_CYCLIC_INTRA_REFRESH_MB`` control shall be
1217    ignored. Applicable to H264 and HEVC encoders.
1218
1219``V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE (boolean)``
1220    Frame level rate control enable. If this control is disabled then
1221    the quantization parameter for each frame type is constant and set
1222    with appropriate controls (e.g.
1223    ``V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP``). If frame rate control is
1224    enabled then quantization parameter is adjusted to meet the chosen
1225    bitrate. Minimum and maximum value for the quantization parameter
1226    can be set with appropriate controls (e.g.
1227    ``V4L2_CID_MPEG_VIDEO_H263_MIN_QP``). Applicable to encoders.
1228
1229``V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE (boolean)``
1230    Macroblock level rate control enable. Applicable to the MPEG4 and
1231    H264 encoders.
1232
1233``V4L2_CID_MPEG_VIDEO_MPEG4_QPEL (boolean)``
1234    Quarter pixel motion estimation for MPEG4. Applicable to the MPEG4
1235    encoder.
1236
1237``V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP (integer)``
1238    Quantization parameter for an I frame for H263. Valid range: from 1
1239    to 31.
1240
1241``V4L2_CID_MPEG_VIDEO_H263_MIN_QP (integer)``
1242    Minimum quantization parameter for H263. Valid range: from 1 to 31.
1243
1244``V4L2_CID_MPEG_VIDEO_H263_MAX_QP (integer)``
1245    Maximum quantization parameter for H263. Valid range: from 1 to 31.
1246
1247``V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP (integer)``
1248    Quantization parameter for an P frame for H263. Valid range: from 1
1249    to 31.
1250
1251``V4L2_CID_MPEG_VIDEO_H263_B_FRAME_QP (integer)``
1252    Quantization parameter for an B frame for H263. Valid range: from 1
1253    to 31.
1254
1255``V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP (integer)``
1256    Quantization parameter for an I frame for H264. Valid range: from 0
1257    to 51.
1258
1259``V4L2_CID_MPEG_VIDEO_H264_MIN_QP (integer)``
1260    Minimum quantization parameter for H264. Valid range: from 0 to 51.
1261
1262``V4L2_CID_MPEG_VIDEO_H264_MAX_QP (integer)``
1263    Maximum quantization parameter for H264. Valid range: from 0 to 51.
1264
1265``V4L2_CID_MPEG_VIDEO_H264_P_FRAME_QP (integer)``
1266    Quantization parameter for an P frame for H264. Valid range: from 0
1267    to 51.
1268
1269``V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP (integer)``
1270    Quantization parameter for an B frame for H264. Valid range: from 0
1271    to 51.
1272
1273``V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP (integer)``
1274    Minimum quantization parameter for the H264 I frame to limit I frame
1275    quality to a range. Valid range: from 0 to 51. If
1276    V4L2_CID_MPEG_VIDEO_H264_MIN_QP is also set, the quantization parameter
1277    should be chosen to meet both requirements.
1278
1279``V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP (integer)``
1280    Maximum quantization parameter for the H264 I frame to limit I frame
1281    quality to a range. Valid range: from 0 to 51. If
1282    V4L2_CID_MPEG_VIDEO_H264_MAX_QP is also set, the quantization parameter
1283    should be chosen to meet both requirements.
1284
1285``V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP (integer)``
1286    Minimum quantization parameter for the H264 P frame to limit P frame
1287    quality to a range. Valid range: from 0 to 51. If
1288    V4L2_CID_MPEG_VIDEO_H264_MIN_QP is also set, the quantization parameter
1289    should be chosen to meet both requirements.
1290
1291``V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP (integer)``
1292    Maximum quantization parameter for the H264 P frame to limit P frame
1293    quality to a range. Valid range: from 0 to 51. If
1294    V4L2_CID_MPEG_VIDEO_H264_MAX_QP is also set, the quantization parameter
1295    should be chosen to meet both requirements.
1296
1297``V4L2_CID_MPEG_VIDEO_H264_B_FRAME_MIN_QP (integer)``
1298    Minimum quantization parameter for the H264 B frame to limit B frame
1299    quality to a range. Valid range: from 0 to 51. If
1300    V4L2_CID_MPEG_VIDEO_H264_MIN_QP is also set, the quantization parameter
1301    should be chosen to meet both requirements.
1302
1303``V4L2_CID_MPEG_VIDEO_H264_B_FRAME_MAX_QP (integer)``
1304    Maximum quantization parameter for the H264 B frame to limit B frame
1305    quality to a range. Valid range: from 0 to 51. If
1306    V4L2_CID_MPEG_VIDEO_H264_MAX_QP is also set, the quantization parameter
1307    should be chosen to meet both requirements.
1308
1309``V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP (integer)``
1310    Quantization parameter for an I frame for MPEG4. Valid range: from 1
1311    to 31.
1312
1313``V4L2_CID_MPEG_VIDEO_MPEG4_MIN_QP (integer)``
1314    Minimum quantization parameter for MPEG4. Valid range: from 1 to 31.
1315
1316``V4L2_CID_MPEG_VIDEO_MPEG4_MAX_QP (integer)``
1317    Maximum quantization parameter for MPEG4. Valid range: from 1 to 31.
1318
1319``V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP (integer)``
1320    Quantization parameter for an P frame for MPEG4. Valid range: from 1
1321    to 31.
1322
1323``V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP (integer)``
1324    Quantization parameter for an B frame for MPEG4. Valid range: from 1
1325    to 31.
1326
1327.. _v4l2-mpeg-video-vbv-size:
1328
1329``V4L2_CID_MPEG_VIDEO_VBV_SIZE (integer)``
1330    The Video Buffer Verifier size in kilobytes, it is used as a
1331    limitation of frame skip. The VBV is defined in the standard as a
1332    mean to verify that the produced stream will be successfully
1333    decoded. The standard describes it as "Part of a hypothetical
1334    decoder that is conceptually connected to the output of the encoder.
1335    Its purpose is to provide a constraint on the variability of the
1336    data rate that an encoder or editing process may produce.".
1337    Applicable to the MPEG1, MPEG2, MPEG4 encoders.
1338
1339.. _v4l2-mpeg-video-vbv-delay:
1340
1341``V4L2_CID_MPEG_VIDEO_VBV_DELAY (integer)``
1342    Sets the initial delay in milliseconds for VBV buffer control.
1343
1344.. _v4l2-mpeg-video-hor-search-range:
1345
1346``V4L2_CID_MPEG_VIDEO_MV_H_SEARCH_RANGE (integer)``
1347    Horizontal search range defines maximum horizontal search area in
1348    pixels to search and match for the present Macroblock (MB) in the
1349    reference picture. This V4L2 control macro is used to set horizontal
1350    search range for motion estimation module in video encoder.
1351
1352.. _v4l2-mpeg-video-vert-search-range:
1353
1354``V4L2_CID_MPEG_VIDEO_MV_V_SEARCH_RANGE (integer)``
1355    Vertical search range defines maximum vertical search area in pixels
1356    to search and match for the present Macroblock (MB) in the reference
1357    picture. This V4L2 control macro is used to set vertical search
1358    range for motion estimation module in video encoder.
1359
1360.. _v4l2-mpeg-video-force-key-frame:
1361
1362``V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME (button)``
1363    Force a key frame for the next queued buffer. Applicable to
1364    encoders. This is a general, codec-agnostic keyframe control.
1365
1366.. _v4l2-mpeg-video-h264-cpb-size:
1367
1368``V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE (integer)``
1369    The Coded Picture Buffer size in kilobytes, it is used as a
1370    limitation of frame skip. The CPB is defined in the H264 standard as
1371    a mean to verify that the produced stream will be successfully
1372    decoded. Applicable to the H264 encoder.
1373
1374``V4L2_CID_MPEG_VIDEO_H264_I_PERIOD (integer)``
1375    Period between I-frames in the open GOP for H264. In case of an open
1376    GOP this is the period between two I-frames. The period between IDR
1377    (Instantaneous Decoding Refresh) frames is taken from the GOP_SIZE
1378    control. An IDR frame, which stands for Instantaneous Decoding
1379    Refresh is an I-frame after which no prior frames are referenced.
1380    This means that a stream can be restarted from an IDR frame without
1381    the need to store or decode any previous frames. Applicable to the
1382    H264 encoder.
1383
1384.. _v4l2-mpeg-video-header-mode:
1385
1386``V4L2_CID_MPEG_VIDEO_HEADER_MODE``
1387    (enum)
1388
1389enum v4l2_mpeg_video_header_mode -
1390    Determines whether the header is returned as the first buffer or is
1391    it returned together with the first frame. Applicable to encoders.
1392    Possible values are:
1393
1394.. raw:: latex
1395
1396    \small
1397
1398.. tabularcolumns:: |p{10.3cm}|p{7.2cm}|
1399
1400.. flat-table::
1401    :header-rows:  0
1402    :stub-columns: 0
1403
1404    * - ``V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE``
1405      - The stream header is returned separately in the first buffer.
1406    * - ``V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME``
1407      - The stream header is returned together with the first encoded
1408	frame.
1409
1410.. raw:: latex
1411
1412    \normalsize
1413
1414
1415``V4L2_CID_MPEG_VIDEO_REPEAT_SEQ_HEADER (boolean)``
1416    Repeat the video sequence headers. Repeating these headers makes
1417    random access to the video stream easier. Applicable to the MPEG1, 2
1418    and 4 encoder.
1419
1420``V4L2_CID_MPEG_VIDEO_DECODER_MPEG4_DEBLOCK_FILTER (boolean)``
1421    Enabled the deblocking post processing filter for MPEG4 decoder.
1422    Applicable to the MPEG4 decoder.
1423
1424``V4L2_CID_MPEG_VIDEO_MPEG4_VOP_TIME_RES (integer)``
1425    vop_time_increment_resolution value for MPEG4. Applicable to the
1426    MPEG4 encoder.
1427
1428``V4L2_CID_MPEG_VIDEO_MPEG4_VOP_TIME_INC (integer)``
1429    vop_time_increment value for MPEG4. Applicable to the MPEG4
1430    encoder.
1431
1432``V4L2_CID_MPEG_VIDEO_H264_SEI_FRAME_PACKING (boolean)``
1433    Enable generation of frame packing supplemental enhancement
1434    information in the encoded bitstream. The frame packing SEI message
1435    contains the arrangement of L and R planes for 3D viewing.
1436    Applicable to the H264 encoder.
1437
1438``V4L2_CID_MPEG_VIDEO_H264_SEI_FP_CURRENT_FRAME_0 (boolean)``
1439    Sets current frame as frame0 in frame packing SEI. Applicable to the
1440    H264 encoder.
1441
1442.. _v4l2-mpeg-video-h264-sei-fp-arrangement-type:
1443
1444``V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE``
1445    (enum)
1446
1447enum v4l2_mpeg_video_h264_sei_fp_arrangement_type -
1448    Frame packing arrangement type for H264 SEI. Applicable to the H264
1449    encoder. Possible values are:
1450
1451.. raw:: latex
1452
1453    \small
1454
1455.. tabularcolumns:: |p{12cm}|p{5.5cm}|
1456
1457.. flat-table::
1458    :header-rows:  0
1459    :stub-columns: 0
1460
1461    * - ``V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_CHEKERBOARD``
1462      - Pixels are alternatively from L and R.
1463    * - ``V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_COLUMN``
1464      - L and R are interlaced by column.
1465    * - ``V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_ROW``
1466      - L and R are interlaced by row.
1467    * - ``V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_SIDE_BY_SIDE``
1468      - L is on the left, R on the right.
1469    * - ``V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TOP_BOTTOM``
1470      - L is on top, R on bottom.
1471    * - ``V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TEMPORAL``
1472      - One view per frame.
1473
1474.. raw:: latex
1475
1476    \normalsize
1477
1478
1479
1480``V4L2_CID_MPEG_VIDEO_H264_FMO (boolean)``
1481    Enables flexible macroblock ordering in the encoded bitstream. It is
1482    a technique used for restructuring the ordering of macroblocks in
1483    pictures. Applicable to the H264 encoder.
1484
1485.. _v4l2-mpeg-video-h264-fmo-map-type:
1486
1487``V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE``
1488   (enum)
1489
1490enum v4l2_mpeg_video_h264_fmo_map_type -
1491    When using FMO, the map type divides the image in different scan
1492    patterns of macroblocks. Applicable to the H264 encoder. Possible
1493    values are:
1494
1495.. raw:: latex
1496
1497    \small
1498
1499.. tabularcolumns:: |p{12.5cm}|p{5.0cm}|
1500
1501.. flat-table::
1502    :header-rows:  0
1503    :stub-columns: 0
1504
1505    * - ``V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_INTERLEAVED_SLICES``
1506      - Slices are interleaved one after other with macroblocks in run
1507	length order.
1508    * - ``V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_SCATTERED_SLICES``
1509      - Scatters the macroblocks based on a mathematical function known to
1510	both encoder and decoder.
1511    * - ``V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_FOREGROUND_WITH_LEFT_OVER``
1512      - Macroblocks arranged in rectangular areas or regions of interest.
1513    * - ``V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_BOX_OUT``
1514      - Slice groups grow in a cyclic way from centre to outwards.
1515    * - ``V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_RASTER_SCAN``
1516      - Slice groups grow in raster scan pattern from left to right.
1517    * - ``V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_WIPE_SCAN``
1518      - Slice groups grow in wipe scan pattern from top to bottom.
1519    * - ``V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_EXPLICIT``
1520      - User defined map type.
1521
1522.. raw:: latex
1523
1524    \normalsize
1525
1526
1527
1528``V4L2_CID_MPEG_VIDEO_H264_FMO_SLICE_GROUP (integer)``
1529    Number of slice groups in FMO. Applicable to the H264 encoder.
1530
1531.. _v4l2-mpeg-video-h264-fmo-change-direction:
1532
1533``V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_DIRECTION``
1534    (enum)
1535
1536enum v4l2_mpeg_video_h264_fmo_change_dir -
1537    Specifies a direction of the slice group change for raster and wipe
1538    maps. Applicable to the H264 encoder. Possible values are:
1539
1540.. tabularcolumns:: |p{9.6cm}|p{7.9cm}|
1541
1542.. flat-table::
1543    :header-rows:  0
1544    :stub-columns: 0
1545
1546    * - ``V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_RIGHT``
1547      - Raster scan or wipe right.
1548    * - ``V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_LEFT``
1549      - Reverse raster scan or wipe left.
1550
1551
1552
1553``V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_RATE (integer)``
1554    Specifies the size of the first slice group for raster and wipe map.
1555    Applicable to the H264 encoder.
1556
1557``V4L2_CID_MPEG_VIDEO_H264_FMO_RUN_LENGTH (integer)``
1558    Specifies the number of consecutive macroblocks for the interleaved
1559    map. Applicable to the H264 encoder.
1560
1561``V4L2_CID_MPEG_VIDEO_H264_ASO (boolean)``
1562    Enables arbitrary slice ordering in encoded bitstream. Applicable to
1563    the H264 encoder.
1564
1565``V4L2_CID_MPEG_VIDEO_H264_ASO_SLICE_ORDER (integer)``
1566    Specifies the slice order in ASO. Applicable to the H264 encoder.
1567    The supplied 32-bit integer is interpreted as follows (bit 0 = least
1568    significant bit):
1569
1570
1571
1572.. flat-table::
1573    :header-rows:  0
1574    :stub-columns: 0
1575
1576    * - Bit 0:15
1577      - Slice ID
1578    * - Bit 16:32
1579      - Slice position or order
1580
1581
1582
1583``V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING (boolean)``
1584    Enables H264 hierarchical coding. Applicable to the H264 encoder.
1585
1586.. _v4l2-mpeg-video-h264-hierarchical-coding-type:
1587
1588``V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE``
1589    (enum)
1590
1591enum v4l2_mpeg_video_h264_hierarchical_coding_type -
1592    Specifies the hierarchical coding type. Applicable to the H264
1593    encoder. Possible values are:
1594
1595
1596
1597.. flat-table::
1598    :header-rows:  0
1599    :stub-columns: 0
1600
1601    * - ``V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B``
1602      - Hierarchical B coding.
1603    * - ``V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P``
1604      - Hierarchical P coding.
1605
1606
1607
1608``V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER (integer)``
1609    Specifies the number of hierarchical coding layers. Applicable to
1610    the H264 encoder.
1611
1612``V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP (integer)``
1613    Specifies a user defined QP for each layer. Applicable to the H264
1614    encoder. The supplied 32-bit integer is interpreted as follows (bit
1615    0 = least significant bit):
1616
1617
1618
1619.. flat-table::
1620    :header-rows:  0
1621    :stub-columns: 0
1622
1623    * - Bit 0:15
1624      - QP value
1625    * - Bit 16:32
1626      - Layer number
1627
1628``V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L0_BR (integer)``
1629    Indicates bit rate (bps) for hierarchical coding layer 0 for H264 encoder.
1630
1631``V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L1_BR (integer)``
1632    Indicates bit rate (bps) for hierarchical coding layer 1 for H264 encoder.
1633
1634``V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L2_BR (integer)``
1635    Indicates bit rate (bps) for hierarchical coding layer 2 for H264 encoder.
1636
1637``V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L3_BR (integer)``
1638    Indicates bit rate (bps) for hierarchical coding layer 3 for H264 encoder.
1639
1640``V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L4_BR (integer)``
1641    Indicates bit rate (bps) for hierarchical coding layer 4 for H264 encoder.
1642
1643``V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L5_BR (integer)``
1644    Indicates bit rate (bps) for hierarchical coding layer 5 for H264 encoder.
1645
1646``V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L6_BR (integer)``
1647    Indicates bit rate (bps) for hierarchical coding layer 6 for H264 encoder.
1648
1649``V4L2_CID_FWHT_I_FRAME_QP (integer)``
1650    Quantization parameter for an I frame for FWHT. Valid range: from 1
1651    to 31.
1652
1653``V4L2_CID_FWHT_P_FRAME_QP (integer)``
1654    Quantization parameter for a P frame for FWHT. Valid range: from 1
1655    to 31.
1656
1657``V4L2_CID_MPEG_VIDEO_AVERAGE_QP (integer)``
1658    This read-only control returns the average QP value of the currently
1659    encoded frame. The value applies to the last dequeued capture buffer
1660    (VIDIOC_DQBUF). Its valid range depends on the encoding format and parameters.
1661    For H264, its valid range is from 0 to 51.
1662    For HEVC, its valid range is from 0 to 51 for 8 bit and
1663    from 0 to 63 for 10 bit.
1664    For H263 and MPEG4, its valid range is from 1 to 31.
1665    For VP8, its valid range is from 0 to 127.
1666    For VP9, its valid range is from 0 to 255.
1667    If the codec's MIN_QP and MAX_QP are set, then the QP will meet both requirements.
1668    Codecs need to always use the specified range, rather then a HW custom range.
1669    Applicable to encoders
1670
1671.. raw:: latex
1672
1673    \normalsize
1674
1675
1676MFC 5.1 MPEG Controls
1677=====================
1678
1679The following MPEG class controls deal with MPEG decoding and encoding
1680settings that are specific to the Multi Format Codec 5.1 device present
1681in the S5P family of SoCs by Samsung.
1682
1683
1684.. _mfc51-control-id:
1685
1686MFC 5.1 Control IDs
1687-------------------
1688
1689``V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY_ENABLE (boolean)``
1690    If the display delay is enabled then the decoder is forced to return
1691    a CAPTURE buffer (decoded frame) after processing a certain number
1692    of OUTPUT buffers. The delay can be set through
1693    ``V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY``. This
1694    feature can be used for example for generating thumbnails of videos.
1695    Applicable to the H264 decoder.
1696
1697    .. note::
1698
1699       This control is deprecated. Use the standard
1700       ``V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY_ENABLE`` control instead.
1701
1702``V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY (integer)``
1703    Display delay value for H264 decoder. The decoder is forced to
1704    return a decoded frame after the set 'display delay' number of
1705    frames. If this number is low it may result in frames returned out
1706    of display order, in addition the hardware may still be using the
1707    returned buffer as a reference picture for subsequent frames.
1708
1709    .. note::
1710
1711       This control is deprecated. Use the standard
1712       ``V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY`` control instead.
1713
1714``V4L2_CID_MPEG_MFC51_VIDEO_H264_NUM_REF_PIC_FOR_P (integer)``
1715    The number of reference pictures used for encoding a P picture.
1716    Applicable to the H264 encoder.
1717
1718``V4L2_CID_MPEG_MFC51_VIDEO_PADDING (boolean)``
1719    Padding enable in the encoder - use a color instead of repeating
1720    border pixels. Applicable to encoders.
1721
1722``V4L2_CID_MPEG_MFC51_VIDEO_PADDING_YUV (integer)``
1723    Padding color in the encoder. Applicable to encoders. The supplied
1724    32-bit integer is interpreted as follows (bit 0 = least significant
1725    bit):
1726
1727
1728
1729.. flat-table::
1730    :header-rows:  0
1731    :stub-columns: 0
1732
1733    * - Bit 0:7
1734      - V chrominance information
1735    * - Bit 8:15
1736      - U chrominance information
1737    * - Bit 16:23
1738      - Y luminance information
1739    * - Bit 24:31
1740      - Must be zero.
1741
1742
1743
1744``V4L2_CID_MPEG_MFC51_VIDEO_RC_REACTION_COEFF (integer)``
1745    Reaction coefficient for MFC rate control. Applicable to encoders.
1746
1747    .. note::
1748
1749       #. Valid only when the frame level RC is enabled.
1750
1751       #. For tight CBR, this field must be small (ex. 2 ~ 10). For
1752	  VBR, this field must be large (ex. 100 ~ 1000).
1753
1754       #. It is not recommended to use the greater number than
1755	  FRAME_RATE * (10^9 / BIT_RATE).
1756
1757``V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_DARK (boolean)``
1758    Adaptive rate control for dark region. Valid only when H.264 and
1759    macroblock level RC is enabled
1760    (``V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE``). Applicable to the H264
1761    encoder.
1762
1763``V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_SMOOTH (boolean)``
1764    Adaptive rate control for smooth region. Valid only when H.264 and
1765    macroblock level RC is enabled
1766    (``V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE``). Applicable to the H264
1767    encoder.
1768
1769``V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_STATIC (boolean)``
1770    Adaptive rate control for static region. Valid only when H.264 and
1771    macroblock level RC is enabled
1772    (``V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE``). Applicable to the H264
1773    encoder.
1774
1775``V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_ACTIVITY (boolean)``
1776    Adaptive rate control for activity region. Valid only when H.264 and
1777    macroblock level RC is enabled
1778    (``V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE``). Applicable to the H264
1779    encoder.
1780
1781.. _v4l2-mpeg-mfc51-video-frame-skip-mode:
1782
1783``V4L2_CID_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE``
1784    (enum)
1785
1786    .. note::
1787
1788       This control is deprecated. Use the standard
1789       ``V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE`` control instead.
1790
1791enum v4l2_mpeg_mfc51_video_frame_skip_mode -
1792    Indicates in what conditions the encoder should skip frames. If
1793    encoding a frame would cause the encoded stream to be larger then a
1794    chosen data limit then the frame will be skipped. Possible values
1795    are:
1796
1797
1798.. tabularcolumns:: |p{9.4cm}|p{8.1cm}|
1799
1800.. raw:: latex
1801
1802    \small
1803
1804.. flat-table::
1805    :header-rows:  0
1806    :stub-columns: 0
1807
1808    * - ``V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_DISABLED``
1809      - Frame skip mode is disabled.
1810    * - ``V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_LEVEL_LIMIT``
1811      - Frame skip mode enabled and buffer limit is set by the chosen
1812	level and is defined by the standard.
1813    * - ``V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT``
1814      - Frame skip mode enabled and buffer limit is set by the VBV
1815	(MPEG1/2/4) or CPB (H264) buffer size control.
1816
1817.. raw:: latex
1818
1819    \normalsize
1820
1821``V4L2_CID_MPEG_MFC51_VIDEO_RC_FIXED_TARGET_BIT (integer)``
1822    Enable rate-control with fixed target bit. If this setting is
1823    enabled, then the rate control logic of the encoder will calculate
1824    the average bitrate for a GOP and keep it below or equal the set
1825    bitrate target. Otherwise the rate control logic calculates the
1826    overall average bitrate for the stream and keeps it below or equal
1827    to the set bitrate. In the first case the average bitrate for the
1828    whole stream will be smaller then the set bitrate. This is caused
1829    because the average is calculated for smaller number of frames, on
1830    the other hand enabling this setting will ensure that the stream
1831    will meet tight bandwidth constraints. Applicable to encoders.
1832
1833.. _v4l2-mpeg-mfc51-video-force-frame-type:
1834
1835``V4L2_CID_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE``
1836    (enum)
1837
1838enum v4l2_mpeg_mfc51_video_force_frame_type -
1839    Force a frame type for the next queued buffer. Applicable to
1840    encoders. Possible values are:
1841
1842.. tabularcolumns:: |p{9.9cm}|p{7.6cm}|
1843
1844.. flat-table::
1845    :header-rows:  0
1846    :stub-columns: 0
1847
1848    * - ``V4L2_MPEG_MFC51_FORCE_FRAME_TYPE_DISABLED``
1849      - Forcing a specific frame type disabled.
1850    * - ``V4L2_MPEG_MFC51_FORCE_FRAME_TYPE_I_FRAME``
1851      - Force an I-frame.
1852    * - ``V4L2_MPEG_MFC51_FORCE_FRAME_TYPE_NOT_CODED``
1853      - Force a non-coded frame.
1854
1855
1856CX2341x MPEG Controls
1857=====================
1858
1859The following MPEG class controls deal with MPEG encoding settings that
1860are specific to the Conexant CX23415 and CX23416 MPEG encoding chips.
1861
1862
1863.. _cx2341x-control-id:
1864
1865CX2341x Control IDs
1866-------------------
1867
1868.. _v4l2-mpeg-cx2341x-video-spatial-filter-mode:
1869
1870``V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE``
1871    (enum)
1872
1873enum v4l2_mpeg_cx2341x_video_spatial_filter_mode -
1874    Sets the Spatial Filter mode (default ``MANUAL``). Possible values
1875    are:
1876
1877
1878.. tabularcolumns:: |p{11.5cm}|p{6.0cm}|
1879
1880.. flat-table::
1881    :header-rows:  0
1882    :stub-columns: 0
1883
1884    * - ``V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_MANUAL``
1885      - Choose the filter manually
1886    * - ``V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_AUTO``
1887      - Choose the filter automatically
1888
1889
1890
1891``V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER (integer (0-15))``
1892    The setting for the Spatial Filter. 0 = off, 15 = maximum. (Default
1893    is 0.)
1894
1895.. _luma-spatial-filter-type:
1896
1897``V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE``
1898    (enum)
1899
1900enum v4l2_mpeg_cx2341x_video_luma_spatial_filter_type -
1901    Select the algorithm to use for the Luma Spatial Filter (default
1902    ``1D_HOR``). Possible values:
1903
1904.. tabularcolumns:: |p{13.1cm}|p{4.4cm}|
1905
1906.. raw:: latex
1907
1908    \footnotesize
1909
1910.. flat-table::
1911    :header-rows:  0
1912    :stub-columns: 0
1913
1914    * - ``V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_OFF``
1915      - No filter
1916    * - ``V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_HOR``
1917      - One-dimensional horizontal
1918    * - ``V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_VERT``
1919      - One-dimensional vertical
1920    * - ``V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_HV_SEPARABLE``
1921      - Two-dimensional separable
1922    * - ``V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE``
1923      - Two-dimensional symmetrical non-separable
1924
1925.. raw:: latex
1926
1927    \normalsize
1928
1929.. _chroma-spatial-filter-type:
1930
1931``V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE``
1932    (enum)
1933
1934enum v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type -
1935    Select the algorithm for the Chroma Spatial Filter (default
1936    ``1D_HOR``). Possible values are:
1937
1938.. raw:: latex
1939
1940    \footnotesize
1941
1942.. tabularcolumns:: |p{11.0cm}|p{6.5cm}|
1943
1944.. flat-table::
1945    :header-rows:  0
1946    :stub-columns: 0
1947
1948    * - ``V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_OFF``
1949      - No filter
1950    * - ``V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR``
1951      - One-dimensional horizontal
1952
1953.. raw:: latex
1954
1955    \normalsize
1956
1957.. _v4l2-mpeg-cx2341x-video-temporal-filter-mode:
1958
1959``V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE``
1960    (enum)
1961
1962enum v4l2_mpeg_cx2341x_video_temporal_filter_mode -
1963    Sets the Temporal Filter mode (default ``MANUAL``). Possible values
1964    are:
1965
1966.. raw:: latex
1967
1968    \footnotesize
1969
1970.. flat-table::
1971    :header-rows:  0
1972    :stub-columns: 0
1973
1974    * - ``V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL``
1975      - Choose the filter manually
1976    * - ``V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_AUTO``
1977      - Choose the filter automatically
1978
1979.. raw:: latex
1980
1981    \normalsize
1982
1983``V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER (integer (0-31))``
1984    The setting for the Temporal Filter. 0 = off, 31 = maximum. (Default
1985    is 8 for full-scale capturing and 0 for scaled capturing.)
1986
1987.. _v4l2-mpeg-cx2341x-video-median-filter-type:
1988
1989``V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE``
1990    (enum)
1991
1992enum v4l2_mpeg_cx2341x_video_median_filter_type -
1993    Median Filter Type (default ``OFF``). Possible values are:
1994
1995
1996.. raw:: latex
1997
1998    \small
1999
2000.. tabularcolumns:: |p{11.0cm}|p{6.5cm}|
2001
2002.. flat-table::
2003    :header-rows:  0
2004    :stub-columns: 0
2005
2006    * - ``V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF``
2007      - No filter
2008    * - ``V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR``
2009      - Horizontal filter
2010    * - ``V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_VERT``
2011      - Vertical filter
2012    * - ``V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR_VERT``
2013      - Horizontal and vertical filter
2014    * - ``V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_DIAG``
2015      - Diagonal filter
2016
2017.. raw:: latex
2018
2019    \normalsize
2020
2021``V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM (integer (0-255))``
2022    Threshold above which the luminance median filter is enabled
2023    (default 0)
2024
2025``V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP (integer (0-255))``
2026    Threshold below which the luminance median filter is enabled
2027    (default 255)
2028
2029``V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM (integer (0-255))``
2030    Threshold above which the chroma median filter is enabled (default
2031    0)
2032
2033``V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP (integer (0-255))``
2034    Threshold below which the chroma median filter is enabled (default
2035    255)
2036
2037``V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS (boolean)``
2038    The CX2341X MPEG encoder can insert one empty MPEG-2 PES packet into
2039    the stream between every four video frames. The packet size is 2048
2040    bytes, including the packet_start_code_prefix and stream_id
2041    fields. The stream_id is 0xBF (private stream 2). The payload
2042    consists of 0x00 bytes, to be filled in by the application. 0 = do
2043    not insert, 1 = insert packets.
2044
2045
2046VPX Control Reference
2047=====================
2048
2049The VPX controls include controls for encoding parameters of VPx video
2050codec.
2051
2052
2053.. _vpx-control-id:
2054
2055VPX Control IDs
2056---------------
2057
2058.. _v4l2-vpx-num-partitions:
2059
2060``V4L2_CID_MPEG_VIDEO_VPX_NUM_PARTITIONS``
2061    (enum)
2062
2063enum v4l2_vp8_num_partitions -
2064    The number of token partitions to use in VP8 encoder. Possible
2065    values are:
2066
2067
2068
2069.. flat-table::
2070    :header-rows:  0
2071    :stub-columns: 0
2072
2073    * - ``V4L2_CID_MPEG_VIDEO_VPX_1_PARTITION``
2074      - 1 coefficient partition
2075    * - ``V4L2_CID_MPEG_VIDEO_VPX_2_PARTITIONS``
2076      - 2 coefficient partitions
2077    * - ``V4L2_CID_MPEG_VIDEO_VPX_4_PARTITIONS``
2078      - 4 coefficient partitions
2079    * - ``V4L2_CID_MPEG_VIDEO_VPX_8_PARTITIONS``
2080      - 8 coefficient partitions
2081
2082
2083
2084``V4L2_CID_MPEG_VIDEO_VPX_IMD_DISABLE_4X4 (boolean)``
2085    Setting this prevents intra 4x4 mode in the intra mode decision.
2086
2087.. _v4l2-vpx-num-ref-frames:
2088
2089``V4L2_CID_MPEG_VIDEO_VPX_NUM_REF_FRAMES``
2090    (enum)
2091
2092enum v4l2_vp8_num_ref_frames -
2093    The number of reference pictures for encoding P frames. Possible
2094    values are:
2095
2096.. tabularcolumns:: |p{7.5cm}|p{7.5cm}|
2097
2098.. raw:: latex
2099
2100    \small
2101
2102.. flat-table::
2103    :header-rows:  0
2104    :stub-columns: 0
2105
2106    * - ``V4L2_CID_MPEG_VIDEO_VPX_1_REF_FRAME``
2107      - Last encoded frame will be searched
2108    * - ``V4L2_CID_MPEG_VIDEO_VPX_2_REF_FRAME``
2109      - Two frames will be searched among the last encoded frame, the
2110	golden frame and the alternate reference (altref) frame. The
2111	encoder implementation will decide which two are chosen.
2112    * - ``V4L2_CID_MPEG_VIDEO_VPX_3_REF_FRAME``
2113      - The last encoded frame, the golden frame and the altref frame will
2114	be searched.
2115
2116.. raw:: latex
2117
2118    \normalsize
2119
2120
2121
2122``V4L2_CID_MPEG_VIDEO_VPX_FILTER_LEVEL (integer)``
2123    Indicates the loop filter level. The adjustment of the loop filter
2124    level is done via a delta value against a baseline loop filter
2125    value.
2126
2127``V4L2_CID_MPEG_VIDEO_VPX_FILTER_SHARPNESS (integer)``
2128    This parameter affects the loop filter. Anything above zero weakens
2129    the deblocking effect on the loop filter.
2130
2131``V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD (integer)``
2132    Sets the refresh period for the golden frame. The period is defined
2133    in number of frames. For a value of 'n', every nth frame starting
2134    from the first key frame will be taken as a golden frame. For eg.
2135    for encoding sequence of 0, 1, 2, 3, 4, 5, 6, 7 where the golden
2136    frame refresh period is set as 4, the frames 0, 4, 8 etc will be
2137    taken as the golden frames as frame 0 is always a key frame.
2138
2139.. _v4l2-vpx-golden-frame-sel:
2140
2141``V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL``
2142    (enum)
2143
2144enum v4l2_vp8_golden_frame_sel -
2145    Selects the golden frame for encoding. Possible values are:
2146
2147.. raw:: latex
2148
2149    \scriptsize
2150
2151.. tabularcolumns:: |p{8.6cm}|p{8.9cm}|
2152
2153.. flat-table::
2154    :header-rows:  0
2155    :stub-columns: 0
2156
2157    * - ``V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_PREV``
2158      - Use the (n-2)th frame as a golden frame, current frame index being
2159	'n'.
2160    * - ``V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_REF_PERIOD``
2161      - Use the previous specific frame indicated by
2162	``V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD`` as a
2163	golden frame.
2164
2165.. raw:: latex
2166
2167    \normalsize
2168
2169
2170``V4L2_CID_MPEG_VIDEO_VPX_MIN_QP (integer)``
2171    Minimum quantization parameter for VP8.
2172
2173``V4L2_CID_MPEG_VIDEO_VPX_MAX_QP (integer)``
2174    Maximum quantization parameter for VP8.
2175
2176``V4L2_CID_MPEG_VIDEO_VPX_I_FRAME_QP (integer)``
2177    Quantization parameter for an I frame for VP8.
2178
2179``V4L2_CID_MPEG_VIDEO_VPX_P_FRAME_QP (integer)``
2180    Quantization parameter for a P frame for VP8.
2181
2182.. _v4l2-mpeg-video-vp8-profile:
2183
2184``V4L2_CID_MPEG_VIDEO_VP8_PROFILE``
2185    (enum)
2186
2187enum v4l2_mpeg_video_vp8_profile -
2188    This control allows selecting the profile for VP8 encoder.
2189    This is also used to enumerate supported profiles by VP8 encoder or decoder.
2190    Possible values are:
2191
2192.. flat-table::
2193    :header-rows:  0
2194    :stub-columns: 0
2195
2196    * - ``V4L2_MPEG_VIDEO_VP8_PROFILE_0``
2197      - Profile 0
2198    * - ``V4L2_MPEG_VIDEO_VP8_PROFILE_1``
2199      - Profile 1
2200    * - ``V4L2_MPEG_VIDEO_VP8_PROFILE_2``
2201      - Profile 2
2202    * - ``V4L2_MPEG_VIDEO_VP8_PROFILE_3``
2203      - Profile 3
2204
2205.. _v4l2-mpeg-video-vp9-profile:
2206
2207``V4L2_CID_MPEG_VIDEO_VP9_PROFILE``
2208    (enum)
2209
2210enum v4l2_mpeg_video_vp9_profile -
2211    This control allows selecting the profile for VP9 encoder.
2212    This is also used to enumerate supported profiles by VP9 encoder or decoder.
2213    Possible values are:
2214
2215.. flat-table::
2216    :header-rows:  0
2217    :stub-columns: 0
2218
2219    * - ``V4L2_MPEG_VIDEO_VP9_PROFILE_0``
2220      - Profile 0
2221    * - ``V4L2_MPEG_VIDEO_VP9_PROFILE_1``
2222      - Profile 1
2223    * - ``V4L2_MPEG_VIDEO_VP9_PROFILE_2``
2224      - Profile 2
2225    * - ``V4L2_MPEG_VIDEO_VP9_PROFILE_3``
2226      - Profile 3
2227
2228.. _v4l2-mpeg-video-vp9-level:
2229
2230``V4L2_CID_MPEG_VIDEO_VP9_LEVEL (enum)``
2231
2232enum v4l2_mpeg_video_vp9_level -
2233    This control allows selecting the level for VP9 encoder.
2234    This is also used to enumerate supported levels by VP9 encoder or decoder.
2235    More information can be found at
2236    `webmproject <https://www.webmproject.org/vp9/levels/>`__. Possible values are:
2237
2238.. flat-table::
2239    :header-rows:  0
2240    :stub-columns: 0
2241
2242    * - ``V4L2_MPEG_VIDEO_VP9_LEVEL_1_0``
2243      - Level 1
2244    * - ``V4L2_MPEG_VIDEO_VP9_LEVEL_1_1``
2245      - Level 1.1
2246    * - ``V4L2_MPEG_VIDEO_VP9_LEVEL_2_0``
2247      - Level 2
2248    * - ``V4L2_MPEG_VIDEO_VP9_LEVEL_2_1``
2249      - Level 2.1
2250    * - ``V4L2_MPEG_VIDEO_VP9_LEVEL_3_0``
2251      - Level 3
2252    * - ``V4L2_MPEG_VIDEO_VP9_LEVEL_3_1``
2253      - Level 3.1
2254    * - ``V4L2_MPEG_VIDEO_VP9_LEVEL_4_0``
2255      - Level 4
2256    * - ``V4L2_MPEG_VIDEO_VP9_LEVEL_4_1``
2257      - Level 4.1
2258    * - ``V4L2_MPEG_VIDEO_VP9_LEVEL_5_0``
2259      - Level 5
2260    * - ``V4L2_MPEG_VIDEO_VP9_LEVEL_5_1``
2261      - Level 5.1
2262    * - ``V4L2_MPEG_VIDEO_VP9_LEVEL_5_2``
2263      - Level 5.2
2264    * - ``V4L2_MPEG_VIDEO_VP9_LEVEL_6_0``
2265      - Level 6
2266    * - ``V4L2_MPEG_VIDEO_VP9_LEVEL_6_1``
2267      - Level 6.1
2268    * - ``V4L2_MPEG_VIDEO_VP9_LEVEL_6_2``
2269      - Level 6.2
2270
2271
2272High Efficiency Video Coding (HEVC/H.265) Control Reference
2273===========================================================
2274
2275The HEVC/H.265 controls include controls for encoding parameters of HEVC/H.265
2276video codec.
2277
2278
2279.. _hevc-control-id:
2280
2281HEVC/H.265 Control IDs
2282----------------------
2283
2284``V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP (integer)``
2285    Minimum quantization parameter for HEVC.
2286    Valid range: from 0 to 51 for 8 bit and from 0 to 63 for 10 bit.
2287
2288``V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP (integer)``
2289    Maximum quantization parameter for HEVC.
2290    Valid range: from 0 to 51 for 8 bit and from 0 to 63 for 10 bit.
2291
2292``V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_QP (integer)``
2293    Quantization parameter for an I frame for HEVC.
2294    Valid range: [V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP,
2295    V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP].
2296
2297``V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_QP (integer)``
2298    Quantization parameter for a P frame for HEVC.
2299    Valid range: [V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP,
2300    V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP].
2301
2302``V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_QP (integer)``
2303    Quantization parameter for a B frame for HEVC.
2304    Valid range: [V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP,
2305    V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP].
2306
2307``V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_MIN_QP (integer)``
2308    Minimum quantization parameter for the HEVC I frame to limit I frame
2309    quality to a range. Valid range: from 0 to 51 for 8 bit and from 0 to 63 for 10 bit.
2310    If V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP is also set, the quantization parameter
2311    should be chosen to meet both requirements.
2312
2313``V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_MAX_QP (integer)``
2314    Maximum quantization parameter for the HEVC I frame to limit I frame
2315    quality to a range. Valid range: from 0 to 51 for 8 bit and from 0 to 63 for 10 bit.
2316    If V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP is also set, the quantization parameter
2317    should be chosen to meet both requirements.
2318
2319``V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_MIN_QP (integer)``
2320    Minimum quantization parameter for the HEVC P frame to limit P frame
2321    quality to a range. Valid range: from 0 to 51 for 8 bit and from 0 to 63 for 10 bit.
2322    If V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP is also set, the quantization parameter
2323    should be chosen to meet both requirements.
2324
2325``V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_MAX_QP (integer)``
2326    Maximum quantization parameter for the HEVC P frame to limit P frame
2327    quality to a range. Valid range: from 0 to 51 for 8 bit and from 0 to 63 for 10 bit.
2328    If V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP is also set, the quantization parameter
2329    should be chosen to meet both requirements.
2330
2331``V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_MIN_QP (integer)``
2332    Minimum quantization parameter for the HEVC B frame to limit B frame
2333    quality to a range. Valid range: from 0 to 51 for 8 bit and from 0 to 63 for 10 bit.
2334    If V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP is also set, the quantization parameter
2335    should be chosen to meet both requirements.
2336
2337``V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_MAX_QP (integer)``
2338    Maximum quantization parameter for the HEVC B frame to limit B frame
2339    quality to a range. Valid range: from 0 to 51 for 8 bit and from 0 to 63 for 10 bit.
2340    If V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP is also set, the quantization parameter
2341    should be chosen to meet both requirements.
2342
2343``V4L2_CID_MPEG_VIDEO_HEVC_HIER_QP (boolean)``
2344    HIERARCHICAL_QP allows the host to specify the quantization parameter
2345    values for each temporal layer through HIERARCHICAL_QP_LAYER. This is
2346    valid only if HIERARCHICAL_CODING_LAYER is greater than 1. Setting the
2347    control value to 1 enables setting of the QP values for the layers.
2348
2349.. _v4l2-hevc-hier-coding-type:
2350
2351``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_TYPE``
2352    (enum)
2353
2354enum v4l2_mpeg_video_hevc_hier_coding_type -
2355    Selects the hierarchical coding type for encoding. Possible values are:
2356
2357.. raw:: latex
2358
2359    \footnotesize
2360
2361.. tabularcolumns:: |p{8.2cm}|p{9.3cm}|
2362
2363.. flat-table::
2364    :header-rows:  0
2365    :stub-columns: 0
2366
2367    * - ``V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_B``
2368      - Use the B frame for hierarchical coding.
2369    * - ``V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P``
2370      - Use the P frame for hierarchical coding.
2371
2372.. raw:: latex
2373
2374    \normalsize
2375
2376
2377``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER (integer)``
2378    Selects the hierarchical coding layer. In normal encoding
2379    (non-hierarchial coding), it should be zero. Possible values are [0, 6].
2380    0 indicates HIERARCHICAL CODING LAYER 0, 1 indicates HIERARCHICAL CODING
2381    LAYER 1 and so on.
2382
2383``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_QP (integer)``
2384    Indicates quantization parameter for hierarchical coding layer 0.
2385    Valid range: [V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP,
2386    V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP].
2387
2388``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_QP (integer)``
2389    Indicates quantization parameter for hierarchical coding layer 1.
2390    Valid range: [V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP,
2391    V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP].
2392
2393``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_QP (integer)``
2394    Indicates quantization parameter for hierarchical coding layer 2.
2395    Valid range: [V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP,
2396    V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP].
2397
2398``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_QP (integer)``
2399    Indicates quantization parameter for hierarchical coding layer 3.
2400    Valid range: [V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP,
2401    V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP].
2402
2403``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_QP (integer)``
2404    Indicates quantization parameter for hierarchical coding layer 4.
2405    Valid range: [V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP,
2406    V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP].
2407
2408``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_QP (integer)``
2409    Indicates quantization parameter for hierarchical coding layer 5.
2410    Valid range: [V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP,
2411    V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP].
2412
2413``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_QP (integer)``
2414    Indicates quantization parameter for hierarchical coding layer 6.
2415    Valid range: [V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP,
2416    V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP].
2417
2418.. _v4l2-hevc-profile:
2419
2420``V4L2_CID_MPEG_VIDEO_HEVC_PROFILE``
2421    (enum)
2422
2423enum v4l2_mpeg_video_hevc_profile -
2424    Select the desired profile for HEVC encoder.
2425
2426.. raw:: latex
2427
2428    \footnotesize
2429
2430.. tabularcolumns:: |p{9.0cm}|p{8.5cm}|
2431
2432.. flat-table::
2433    :header-rows:  0
2434    :stub-columns: 0
2435
2436    * - ``V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN``
2437      - Main profile.
2438    * - ``V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE``
2439      - Main still picture profile.
2440    * - ``V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10``
2441      - Main 10 profile.
2442
2443.. raw:: latex
2444
2445    \normalsize
2446
2447
2448.. _v4l2-hevc-level:
2449
2450``V4L2_CID_MPEG_VIDEO_HEVC_LEVEL``
2451    (enum)
2452
2453enum v4l2_mpeg_video_hevc_level -
2454    Selects the desired level for HEVC encoder.
2455
2456==================================	=========
2457``V4L2_MPEG_VIDEO_HEVC_LEVEL_1``	Level 1.0
2458``V4L2_MPEG_VIDEO_HEVC_LEVEL_2``	Level 2.0
2459``V4L2_MPEG_VIDEO_HEVC_LEVEL_2_1``	Level 2.1
2460``V4L2_MPEG_VIDEO_HEVC_LEVEL_3``	Level 3.0
2461``V4L2_MPEG_VIDEO_HEVC_LEVEL_3_1``	Level 3.1
2462``V4L2_MPEG_VIDEO_HEVC_LEVEL_4``	Level 4.0
2463``V4L2_MPEG_VIDEO_HEVC_LEVEL_4_1``	Level 4.1
2464``V4L2_MPEG_VIDEO_HEVC_LEVEL_5``	Level 5.0
2465``V4L2_MPEG_VIDEO_HEVC_LEVEL_5_1``	Level 5.1
2466``V4L2_MPEG_VIDEO_HEVC_LEVEL_5_2``	Level 5.2
2467``V4L2_MPEG_VIDEO_HEVC_LEVEL_6``	Level 6.0
2468``V4L2_MPEG_VIDEO_HEVC_LEVEL_6_1``	Level 6.1
2469``V4L2_MPEG_VIDEO_HEVC_LEVEL_6_2``	Level 6.2
2470==================================	=========
2471
2472``V4L2_CID_MPEG_VIDEO_HEVC_FRAME_RATE_RESOLUTION (integer)``
2473    Indicates the number of evenly spaced subintervals, called ticks, within
2474    one second. This is a 16 bit unsigned integer and has a maximum value up to
2475    0xffff and a minimum value of 1.
2476
2477.. _v4l2-hevc-tier:
2478
2479``V4L2_CID_MPEG_VIDEO_HEVC_TIER``
2480    (enum)
2481
2482enum v4l2_mpeg_video_hevc_tier -
2483    TIER_FLAG specifies tiers information of the HEVC encoded picture. Tier
2484    were made to deal with applications that differ in terms of maximum bit
2485    rate. Setting the flag to 0 selects HEVC tier as Main tier and setting
2486    this flag to 1 indicates High tier. High tier is for applications requiring
2487    high bit rates.
2488
2489==================================	==========
2490``V4L2_MPEG_VIDEO_HEVC_TIER_MAIN``	Main tier.
2491``V4L2_MPEG_VIDEO_HEVC_TIER_HIGH``	High tier.
2492==================================	==========
2493
2494
2495``V4L2_CID_MPEG_VIDEO_HEVC_MAX_PARTITION_DEPTH (integer)``
2496    Selects HEVC maximum coding unit depth.
2497
2498.. _v4l2-hevc-loop-filter-mode:
2499
2500``V4L2_CID_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE``
2501    (enum)
2502
2503enum v4l2_mpeg_video_hevc_loop_filter_mode -
2504    Loop filter mode for HEVC encoder. Possible values are:
2505
2506.. raw:: latex
2507
2508    \footnotesize
2509
2510.. tabularcolumns:: |p{12.1cm}|p{5.4cm}|
2511
2512.. flat-table::
2513    :header-rows:  0
2514    :stub-columns: 0
2515
2516    * - ``V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_DISABLED``
2517      - Loop filter is disabled.
2518    * - ``V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_ENABLED``
2519      - Loop filter is enabled.
2520    * - ``V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_DISABLED_AT_SLICE_BOUNDARY``
2521      - Loop filter is disabled at the slice boundary.
2522
2523.. raw:: latex
2524
2525    \normalsize
2526
2527
2528``V4L2_CID_MPEG_VIDEO_HEVC_LF_BETA_OFFSET_DIV2 (integer)``
2529    Selects HEVC loop filter beta offset. The valid range is [-6, +6].
2530
2531``V4L2_CID_MPEG_VIDEO_HEVC_LF_TC_OFFSET_DIV2 (integer)``
2532    Selects HEVC loop filter tc offset. The valid range is [-6, +6].
2533
2534.. _v4l2-hevc-refresh-type:
2535
2536``V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_TYPE``
2537    (enum)
2538
2539enum v4l2_mpeg_video_hevc_hier_refresh_type -
2540    Selects refresh type for HEVC encoder.
2541    Host has to specify the period into
2542    V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_PERIOD.
2543
2544.. raw:: latex
2545
2546    \footnotesize
2547
2548.. tabularcolumns:: |p{6.2cm}|p{11.3cm}|
2549
2550.. flat-table::
2551    :header-rows:  0
2552    :stub-columns: 0
2553
2554    * - ``V4L2_MPEG_VIDEO_HEVC_REFRESH_NONE``
2555      - Use the B frame for hierarchical coding.
2556    * - ``V4L2_MPEG_VIDEO_HEVC_REFRESH_CRA``
2557      - Use CRA (Clean Random Access Unit) picture encoding.
2558    * - ``V4L2_MPEG_VIDEO_HEVC_REFRESH_IDR``
2559      - Use IDR (Instantaneous Decoding Refresh) picture encoding.
2560
2561.. raw:: latex
2562
2563    \normalsize
2564
2565
2566``V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_PERIOD (integer)``
2567    Selects the refresh period for HEVC encoder.
2568    This specifies the number of I pictures between two CRA/IDR pictures.
2569    This is valid only if REFRESH_TYPE is not 0.
2570
2571``V4L2_CID_MPEG_VIDEO_HEVC_LOSSLESS_CU (boolean)``
2572    Indicates HEVC lossless encoding. Setting it to 0 disables lossless
2573    encoding. Setting it to 1 enables lossless encoding.
2574
2575``V4L2_CID_MPEG_VIDEO_HEVC_CONST_INTRA_PRED (boolean)``
2576    Indicates constant intra prediction for HEVC encoder. Specifies the
2577    constrained intra prediction in which intra largest coding unit (LCU)
2578    prediction is performed by using residual data and decoded samples of
2579    neighboring intra LCU only. Setting the value to 1 enables constant intra
2580    prediction and setting the value to 0 disables constant intra prediction.
2581
2582``V4L2_CID_MPEG_VIDEO_HEVC_WAVEFRONT (boolean)``
2583    Indicates wavefront parallel processing for HEVC encoder. Setting it to 0
2584    disables the feature and setting it to 1 enables the wavefront parallel
2585    processing.
2586
2587``V4L2_CID_MPEG_VIDEO_HEVC_GENERAL_PB (boolean)``
2588    Setting the value to 1 enables combination of P and B frame for HEVC
2589    encoder.
2590
2591``V4L2_CID_MPEG_VIDEO_HEVC_TEMPORAL_ID (boolean)``
2592    Indicates temporal identifier for HEVC encoder which is enabled by
2593    setting the value to 1.
2594
2595``V4L2_CID_MPEG_VIDEO_HEVC_STRONG_SMOOTHING (boolean)``
2596    Indicates bi-linear interpolation is conditionally used in the intra
2597    prediction filtering process in the CVS when set to 1. Indicates bi-linear
2598    interpolation is not used in the CVS when set to 0.
2599
2600``V4L2_CID_MPEG_VIDEO_HEVC_MAX_NUM_MERGE_MV_MINUS1 (integer)``
2601    Indicates maximum number of merge candidate motion vectors.
2602    Values are from 0 to 4.
2603
2604``V4L2_CID_MPEG_VIDEO_HEVC_TMV_PREDICTION (boolean)``
2605    Indicates temporal motion vector prediction for HEVC encoder. Setting it to
2606    1 enables the prediction. Setting it to 0 disables the prediction.
2607
2608``V4L2_CID_MPEG_VIDEO_HEVC_WITHOUT_STARTCODE (boolean)``
2609    Specifies if HEVC generates a stream with a size of the length field
2610    instead of start code pattern. The size of the length field is configurable
2611    through the V4L2_CID_MPEG_VIDEO_HEVC_SIZE_OF_LENGTH_FIELD control. Setting
2612    the value to 0 disables encoding without startcode pattern. Setting the
2613    value to 1 will enables encoding without startcode pattern.
2614
2615.. _v4l2-hevc-size-of-length-field:
2616
2617``V4L2_CID_MPEG_VIDEO_HEVC_SIZE_OF_LENGTH_FIELD``
2618(enum)
2619
2620enum v4l2_mpeg_video_hevc_size_of_length_field -
2621    Indicates the size of length field.
2622    This is valid when encoding WITHOUT_STARTCODE_ENABLE is enabled.
2623
2624.. raw:: latex
2625
2626    \footnotesize
2627
2628.. tabularcolumns:: |p{5.5cm}|p{12.0cm}|
2629
2630.. flat-table::
2631    :header-rows:  0
2632    :stub-columns: 0
2633
2634    * - ``V4L2_MPEG_VIDEO_HEVC_SIZE_0``
2635      - Generate start code pattern (Normal).
2636    * - ``V4L2_MPEG_VIDEO_HEVC_SIZE_1``
2637      - Generate size of length field instead of start code pattern and length is 1.
2638    * - ``V4L2_MPEG_VIDEO_HEVC_SIZE_2``
2639      - Generate size of length field instead of start code pattern and length is 2.
2640    * - ``V4L2_MPEG_VIDEO_HEVC_SIZE_4``
2641      - Generate size of length field instead of start code pattern and length is 4.
2642
2643.. raw:: latex
2644
2645    \normalsize
2646
2647``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_BR (integer)``
2648    Indicates bit rate for hierarchical coding layer 0 for HEVC encoder.
2649
2650``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_BR (integer)``
2651    Indicates bit rate for hierarchical coding layer 1 for HEVC encoder.
2652
2653``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_BR (integer)``
2654    Indicates bit rate for hierarchical coding layer 2 for HEVC encoder.
2655
2656``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_BR (integer)``
2657    Indicates bit rate for hierarchical coding layer 3 for HEVC encoder.
2658
2659``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_BR (integer)``
2660    Indicates bit rate for hierarchical coding layer 4 for HEVC encoder.
2661
2662``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_BR (integer)``
2663    Indicates bit rate for hierarchical coding layer 5 for HEVC encoder.
2664
2665``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_BR (integer)``
2666    Indicates bit rate for hierarchical coding layer 6 for HEVC encoder.
2667
2668``V4L2_CID_MPEG_VIDEO_REF_NUMBER_FOR_PFRAMES (integer)``
2669    Selects number of P reference pictures required for HEVC encoder.
2670    P-Frame can use 1 or 2 frames for reference.
2671
2672``V4L2_CID_MPEG_VIDEO_PREPEND_SPSPPS_TO_IDR (integer)``
2673    Indicates whether to generate SPS and PPS at every IDR. Setting it to 0
2674    disables generating SPS and PPS at every IDR. Setting it to one enables
2675    generating SPS and PPS at every IDR.
2676