xref: /linux/Documentation/userspace-api/media/dvb/legacy_dvb_video.rst (revision 79790b6818e96c58fe2bffee1b418c16e64e7b80)
1.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later OR GPL-2.0
2
3.. c:namespace:: dtv.legacy.video
4
5.. _dvb_video:
6
7================
8DVB Video Device
9================
10
11.. attention:: Do **not** use in new drivers!
12             See: :ref:`legacy_dvb_decoder_notes`
13
14The DVB video device controls the MPEG2 video decoder of the DVB
15hardware. It can be accessed through ``/dev/dvb/adapter0/video0``. Data
16types and ioctl definitions can be accessed by including
17``linux/dvb/video.h`` in your application.
18
19Note that the DVB video device only controls decoding of the MPEG video
20stream, not its presentation on the TV or computer screen. On PCs this
21is typically handled by an associated video4linux device, e.g.
22``/dev/video``, which allows scaling and defining output windows.
23
24Most DVB cards don’t have their own MPEG decoder, which results in the
25omission of the audio and video device as well as the video4linux
26device.
27
28These ioctls were also used by V4L2 to control MPEG decoders implemented
29in V4L2. The use of these ioctls for that purpose has been made obsolete
30and proper V4L2 ioctls or controls have been created to replace that
31functionality. Use :ref:`V4L2 ioctls<video>` for new drivers!
32
33
34Video Data Types
35================
36
37
38
39video_format_t
40--------------
41
42Synopsis
43~~~~~~~~
44
45.. code-block:: c
46
47    typedef enum {
48	VIDEO_FORMAT_4_3,
49	VIDEO_FORMAT_16_9,
50	VIDEO_FORMAT_221_1
51    } video_format_t;
52
53Constants
54~~~~~~~~~
55
56.. flat-table::
57    :header-rows:  0
58    :stub-columns: 0
59
60    -  ..
61
62       -  ``VIDEO_FORMAT_4_3``
63
64       -  Select 4:3 format.
65
66    -  ..
67
68       -  ``VIDEO_FORMAT_16_9``
69
70       -  Select 16:9 format.
71
72    -  ..
73
74       -  ``VIDEO_FORMAT_221_1``
75
76       -  Select 2.21:1 format.
77
78Description
79~~~~~~~~~~~
80
81The ``video_format_t`` data type
82is used in the `VIDEO_SET_FORMAT`_ function to tell the driver which
83aspect ratio the output hardware (e.g. TV) has. It is also used in the
84data structures `video_status`_ returned by `VIDEO_GET_STATUS`_
85and `video_event`_ returned by `VIDEO_GET_EVENT`_ which report
86about the display format of the current video stream.
87
88
89-----
90
91
92video_displayformat_t
93---------------------
94
95Synopsis
96~~~~~~~~
97
98.. code-block:: c
99
100    typedef enum {
101	VIDEO_PAN_SCAN,
102	VIDEO_LETTER_BOX,
103	VIDEO_CENTER_CUT_OUT
104    } video_displayformat_t;
105
106Constants
107~~~~~~~~~
108
109.. flat-table::
110    :header-rows:  0
111    :stub-columns: 0
112
113    -  ..
114
115       -  ``VIDEO_PAN_SCAN``
116
117       -  Use pan and scan format.
118
119    -  ..
120
121       -  ``VIDEO_LETTER_BOX``
122
123       -  Use letterbox format.
124
125    -  ..
126
127       -  ``VIDEO_CENTER_CUT_OUT``
128
129       -  Use center cut out format.
130
131Description
132~~~~~~~~~~~
133
134In case the display format of the video stream and of the display
135hardware differ the application has to specify how to handle the
136cropping of the picture. This can be done using the
137`VIDEO_SET_DISPLAY_FORMAT`_ call which accepts this enum as argument.
138
139
140-----
141
142
143video_size_t
144------------
145
146Synopsis
147~~~~~~~~
148
149.. code-block:: c
150
151    typedef struct {
152	int w;
153	int h;
154	video_format_t aspect_ratio;
155    } video_size_t;
156
157Variables
158~~~~~~~~~
159
160.. flat-table::
161    :header-rows:  0
162    :stub-columns: 0
163
164    -  ..
165
166       -  ``int w``
167
168       -  Video width in pixels.
169
170    -  ..
171
172       -  ``int h``
173
174       -  Video height in pixels.
175
176    -  ..
177
178       -  `video_format_t`_ ``aspect_ratio``
179
180       -  Aspect ratio.
181
182Description
183~~~~~~~~~~~
184
185Used in the struct `video_event`_. It stores the resolution and
186aspect ratio of the video.
187
188
189-----
190
191
192video_stream_source_t
193---------------------
194
195Synopsis
196~~~~~~~~
197
198.. code-block:: c
199
200    typedef enum {
201	VIDEO_SOURCE_DEMUX,
202	VIDEO_SOURCE_MEMORY
203    } video_stream_source_t;
204
205Constants
206~~~~~~~~~
207
208.. flat-table::
209    :header-rows:  0
210    :stub-columns: 0
211
212    -  ..
213
214       -  ``VIDEO_SOURCE_DEMUX``
215
216       -  :cspan:`1` Select the demux as the main source.
217
218    -  ..
219
220       -  ``VIDEO_SOURCE_MEMORY``
221
222       -  If this source is selected, the stream
223          comes from the user through the write
224          system call.
225
226Description
227~~~~~~~~~~~
228
229The video stream source is set through the `VIDEO_SELECT_SOURCE`_ call
230and can take the following values, depending on whether we are replaying
231from an internal (demuxer) or external (user write) source.
232VIDEO_SOURCE_DEMUX selects the demultiplexer (fed either by the
233frontend or the DVR device) as the source of the video stream. If
234VIDEO_SOURCE_MEMORY is selected the stream comes from the application
235through the `write()`_ system call.
236
237
238-----
239
240
241video_play_state_t
242------------------
243
244Synopsis
245~~~~~~~~
246
247.. code-block:: c
248
249    typedef enum {
250	VIDEO_STOPPED,
251	VIDEO_PLAYING,
252	VIDEO_FREEZED
253    } video_play_state_t;
254
255Constants
256~~~~~~~~~
257
258.. flat-table::
259    :header-rows:  0
260    :stub-columns: 0
261
262    -  ..
263
264       -  ``VIDEO_STOPPED``
265
266       -  Video is stopped.
267
268    -  ..
269
270       -  ``VIDEO_PLAYING``
271
272       -  Video is currently playing.
273
274    -  ..
275
276       -  ``VIDEO_FREEZED``
277
278       -  Video is frozen.
279
280Description
281~~~~~~~~~~~
282
283This values can be returned by the `VIDEO_GET_STATUS`_ call
284representing the state of video playback.
285
286
287-----
288
289
290struct video_command
291--------------------
292
293Synopsis
294~~~~~~~~
295
296.. code-block:: c
297
298    struct video_command {
299	__u32 cmd;
300	__u32 flags;
301	union {
302	    struct {
303		__u64 pts;
304	    } stop;
305
306	    struct {
307		__s32 speed;
308		__u32 format;
309	    } play;
310
311	    struct {
312		__u32 data[16];
313	    } raw;
314	};
315    };
316
317
318Variables
319~~~~~~~~~
320
321.. flat-table::
322    :header-rows:  0
323    :stub-columns: 0
324
325    -  ..
326
327       -  ``__u32 cmd``
328
329       -  `Decoder command`_
330
331    -  ..
332
333       -  ``__u32 flags``
334
335       -  Flags for the `Decoder command`_.
336
337    -  ..
338
339       -  ``struct stop``
340
341       -  ``__u64 pts``
342
343       -  MPEG PTS
344
345    -  ..
346
347       -  :rspan:`5` ``stuct play``
348
349       -  :rspan:`4` ``__s32 speed``
350
351       -   0 or 1000 specifies normal speed,
352
353    -  ..
354
355       -   1:  specifies forward single stepping,
356
357    -  ..
358
359       -   -1: specifies backward single stepping,
360
361    -  ..
362
363       -   >1: playback at speed / 1000 of the normal speed
364
365    -  ..
366
367       -   <-1: reverse playback at ( -speed / 1000 ) of the normal speed.
368
369    -  ..
370
371       -  ``__u32 format``
372
373       -  `Play input formats`_
374
375    -  ..
376
377       -  ``__u32 data[16]``
378
379       -  Reserved
380
381Description
382~~~~~~~~~~~
383
384The structure must be zeroed before use by the application. This ensures
385it can be extended safely in the future.
386
387
388-----
389
390
391Predefined decoder commands and flags
392-------------------------------------
393
394Synopsis
395~~~~~~~~
396
397.. code-block:: c
398
399    #define VIDEO_CMD_PLAY                      (0)
400    #define VIDEO_CMD_STOP                      (1)
401    #define VIDEO_CMD_FREEZE                    (2)
402    #define VIDEO_CMD_CONTINUE                  (3)
403
404    #define VIDEO_CMD_FREEZE_TO_BLACK      (1 << 0)
405
406    #define VIDEO_CMD_STOP_TO_BLACK        (1 << 0)
407    #define VIDEO_CMD_STOP_IMMEDIATELY     (1 << 1)
408
409    #define VIDEO_PLAY_FMT_NONE                 (0)
410    #define VIDEO_PLAY_FMT_GOP                  (1)
411
412    #define VIDEO_VSYNC_FIELD_UNKNOWN           (0)
413    #define VIDEO_VSYNC_FIELD_ODD               (1)
414    #define VIDEO_VSYNC_FIELD_EVEN              (2)
415    #define VIDEO_VSYNC_FIELD_PROGRESSIVE       (3)
416
417Constants
418~~~~~~~~~
419
420.. flat-table::
421    :header-rows:  0
422    :stub-columns: 0
423
424    -  ..
425
426       -  :rspan:`3` _`Decoder command`
427
428       -  ``VIDEO_CMD_PLAY``
429
430       -  Start playback.
431
432    -  ..
433
434       -  ``VIDEO_CMD_STOP``
435
436       -  Stop playback.
437
438    -  ..
439
440       -  ``VIDEO_CMD_FREEZE``
441
442       -  Freeze playback.
443
444    -  ..
445
446       -  ``VIDEO_CMD_CONTINUE``
447
448       -  Continue playback after freeze.
449
450    -  ..
451
452       -  Flags for ``VIDEO_CMD_FREEZE``
453
454       -  ``VIDEO_CMD_FREEZE_TO_BLACK``
455
456       -  Show black picture on freeze.
457
458    -  ..
459
460       -  :rspan:`1` Flags for ``VIDEO_CMD_STOP``
461
462       -  ``VIDEO_CMD_STOP_TO_BLACK``
463
464       -  Show black picture on stop.
465
466    -  ..
467
468       -  ``VIDEO_CMD_STOP_IMMEDIATELY``
469
470       -  Stop immediately, without emptying buffers.
471
472    -  ..
473
474       -  :rspan:`1` _`Play input formats`
475
476       -  ``VIDEO_PLAY_FMT_NONE``
477
478       -  The decoder has no special format requirements
479
480    -  ..
481
482       -  ``VIDEO_PLAY_FMT_GOP``
483
484       -  The decoder requires full GOPs
485
486    -  ..
487
488       -  :rspan:`3` Field order
489
490       -  ``VIDEO_VSYNC_FIELD_UNKNOWN``
491
492       -  FIELD_UNKNOWN can be used if the hardware does not know
493          whether the Vsync is for an odd, even or progressive
494          (i.e. non-interlaced) field.
495
496    -  ..
497
498       -  ``VIDEO_VSYNC_FIELD_ODD``
499
500       -  Vsync is for an odd field.
501
502    -  ..
503
504       -  ``VIDEO_VSYNC_FIELD_EVEN``
505
506       -  Vsync is for an even field.
507
508    -  ..
509
510       -  ``VIDEO_VSYNC_FIELD_PROGRESSIVE``
511
512       -  progressive (i.e. non-interlaced)
513
514
515-----
516
517
518video_event
519-----------
520
521Synopsis
522~~~~~~~~
523
524.. code-block:: c
525
526    struct video_event {
527	__s32 type;
528    #define VIDEO_EVENT_SIZE_CHANGED        1
529    #define VIDEO_EVENT_FRAME_RATE_CHANGED  2
530    #define VIDEO_EVENT_DECODER_STOPPED     3
531    #define VIDEO_EVENT_VSYNC               4
532	long timestamp;
533	union {
534	    video_size_t size;
535	    unsigned int frame_rate;
536	    unsigned char vsync_field;
537	} u;
538    };
539
540Variables
541~~~~~~~~~
542
543.. flat-table::
544    :header-rows:  0
545    :stub-columns: 0
546
547    -  ..
548
549       -  :rspan:`4` ``__s32 type``
550
551       -  :cspan:`1` Event type.
552
553    -  ..
554
555       -  ``VIDEO_EVENT_SIZE_CHANGED``
556
557       -  Size changed.
558
559    -  ..
560
561       -  ``VIDEO_EVENT_FRAME_RATE_CHANGED``
562
563       -  Framerate changed.
564
565    -  ..
566
567       -  ``VIDEO_EVENT_DECODER_STOPPED``
568
569       -  Decoder stopped.
570
571    -  ..
572
573       -  ``VIDEO_EVENT_VSYNC``
574
575       -  Vsync occurred.
576
577    -  ..
578
579       -  ``long timestamp``
580
581       -  :cspan:`1` MPEG PTS at occurrence.
582
583    -  ..
584
585       -  :rspan:`2` ``union u``
586
587       -  `video_size_t`_ size
588
589       -  Resolution and aspect ratio of the video.
590
591    -  ..
592
593       -  ``unsigned int frame_rate``
594
595       -  in frames per 1000sec
596
597    -  ..
598
599       -  ``unsigned char vsync_field``
600
601       -  | unknown / odd / even / progressive
602          | See: `Predefined decoder commands and flags`_
603
604Description
605~~~~~~~~~~~
606
607This is the structure of a video event as it is returned by the
608`VIDEO_GET_EVENT`_ call. See there for more details.
609
610
611-----
612
613
614video_status
615------------
616
617Synopsis
618~~~~~~~~
619
620The `VIDEO_GET_STATUS`_ call returns the following structure informing
621about various states of the playback operation.
622
623.. code-block:: c
624
625    struct video_status {
626	int                    video_blank;
627	video_play_state_t     play_state;
628	video_stream_source_t  stream_source;
629	video_format_t         video_format;
630	video_displayformat_t  display_format;
631    };
632
633Variables
634~~~~~~~~~
635
636.. flat-table::
637    :header-rows:  0
638    :stub-columns: 0
639
640    -  ..
641
642       -  :rspan:`2` ``int video_blank``
643
644       -  :cspan:`1` Show blank video on freeze?
645
646    -  ..
647
648       -  TRUE  ( != 0 )
649
650       -  Blank screen when freeze.
651
652    -  ..
653
654       -  FALSE ( == 0 )
655
656       -  Show last decoded frame.
657
658    -  ..
659
660       -  `video_play_state_t`_ ``play_state``
661
662       -  Current state of playback.
663
664    -  ..
665
666       -  `video_stream_source_t`_ ``stream_source``
667
668       -  Current source (demux/memory).
669
670    -  ..
671
672       -  `video_format_t`_ ``video_format``
673
674       -  Current aspect ratio of stream.
675
676    -  ..
677
678       -  `video_displayformat_t`_ ``display_format``
679
680       -  Applied cropping mode.
681
682Description
683~~~~~~~~~~~
684
685If ``video_blank`` is set ``TRUE`` video will be blanked out if the
686channel is changed or if playback is stopped. Otherwise, the last picture
687will be displayed. ``play_state`` indicates if the video is currently
688frozen, stopped, or being played back. The ``stream_source`` corresponds
689to the selected source for the video stream. It can come either from the
690demultiplexer or from memory. The ``video_format`` indicates the aspect
691ratio (one of 4:3 or 16:9) of the currently played video stream.
692Finally, ``display_format`` corresponds to the applied cropping mode in
693case the source video format is not the same as the format of the output
694device.
695
696
697-----
698
699
700video_still_picture
701-------------------
702
703Synopsis
704~~~~~~~~
705
706.. code-block:: c
707
708    struct video_still_picture {
709    char *iFrame;
710    int32_t size;
711    };
712
713Variables
714~~~~~~~~~
715
716.. flat-table::
717    :header-rows:  0
718    :stub-columns: 0
719
720    -  ..
721
722       -  ``char *iFrame``
723
724       -  Pointer to a single iframe in memory.
725
726    -  ..
727
728       -  ``int32_t size``
729
730       -  Size of the iframe.
731
732
733Description
734~~~~~~~~~~~
735
736An I-frame displayed via the `VIDEO_STILLPICTURE`_ call is passed on
737within this structure.
738
739
740-----
741
742
743video capabilities
744------------------
745
746Synopsis
747~~~~~~~~
748
749.. code-block:: c
750
751    #define VIDEO_CAP_MPEG1   1
752    #define VIDEO_CAP_MPEG2   2
753    #define VIDEO_CAP_SYS     4
754    #define VIDEO_CAP_PROG    8
755
756Constants
757~~~~~~~~~
758Bit definitions for capabilities:
759
760.. flat-table::
761    :header-rows:  0
762    :stub-columns: 0
763
764    -  ..
765
766       -  ``VIDEO_CAP_MPEG1``
767
768       -  :cspan:`1` The hardware can decode MPEG1.
769
770    -  ..
771
772       -  ``VIDEO_CAP_MPEG2``
773
774       -  The hardware can decode MPEG2.
775
776    -  ..
777
778       -  ``VIDEO_CAP_SYS``
779
780       -  The video device accepts system stream.
781
782          You still have to open the video and the audio device
783          but only send the stream to the video device.
784
785    -  ..
786
787       -  ``VIDEO_CAP_PROG``
788
789       -  The video device accepts program stream.
790
791          You still have to open the video and the audio device
792          but only send the stream to the video device.
793
794Description
795~~~~~~~~~~~
796
797A call to `VIDEO_GET_CAPABILITIES`_ returns an unsigned integer with the
798following bits set according to the hardware's capabilities.
799
800
801-----
802
803
804Video Function Calls
805====================
806
807
808VIDEO_STOP
809----------
810
811Synopsis
812~~~~~~~~
813
814.. c:macro:: VIDEO_STOP
815
816.. code-block:: c
817
818	int ioctl(fd, VIDEO_STOP, int mode)
819
820Arguments
821~~~~~~~~~
822
823.. flat-table::
824    :header-rows:  0
825    :stub-columns: 0
826
827    -  ..
828
829       -  ``int fd``
830
831       -  :cspan:`1` File descriptor returned by a previous call
832          to `open()`_.
833
834    -  ..
835
836       -  ``int request``
837
838       -  :cspan:`1` Equals ``VIDEO_STOP`` for this command.
839
840    -  ..
841
842       -  :rspan:`2` ``int mode``
843
844       -  :cspan:`1` Indicates how the screen shall be handled.
845
846    -  ..
847
848       -  TRUE  ( != 0 )
849
850       -  Blank screen when stop.
851
852    -  ..
853
854       -  FALSE ( == 0 )
855
856       -  Show last decoded frame.
857
858Description
859~~~~~~~~~~~
860
861.. attention:: Do **not** use in new drivers!
862             See: :ref:`legacy_dvb_decoder_notes`
863
864This ioctl is for Digital TV devices only. To control a V4L2 decoder use
865the V4L2 :ref:`VIDIOC_DECODER_CMD` instead.
866
867This ioctl call asks the Video Device to stop playing the current
868stream. Depending on the input parameter, the screen can be blanked out
869or displaying the last decoded frame.
870
871Return Value
872~~~~~~~~~~~~
873
874On success 0 is returned, on error -1 and the ``errno`` variable is set
875appropriately. The generic error codes are described at the
876:ref:`Generic Error Codes <gen-errors>` chapter.
877
878
879-----
880
881
882VIDEO_PLAY
883----------
884
885Synopsis
886~~~~~~~~
887
888.. c:macro:: VIDEO_PLAY
889
890.. code-block:: c
891
892	int ioctl(fd, VIDEO_PLAY)
893
894Arguments
895~~~~~~~~~
896
897.. flat-table::
898    :header-rows:  0
899    :stub-columns: 0
900
901    -  ..
902
903       -  ``int fd``
904
905       -  :cspan:`1` File descriptor returned by a previous call
906          to `open()`_.
907
908    -  ..
909
910       -  ``int request``
911
912       -  Equals ``VIDEO_PLAY`` for this command.
913
914Description
915~~~~~~~~~~~
916
917.. attention:: Do **not** use in new drivers!
918             See: :ref:`legacy_dvb_decoder_notes`
919
920This ioctl is for Digital TV devices only. To control a V4L2 decoder use
921the V4L2 :ref:`VIDIOC_DECODER_CMD` instead.
922
923This ioctl call asks the Video Device to start playing a video stream
924from the selected source.
925
926Return Value
927~~~~~~~~~~~~
928
929On success 0 is returned, on error -1 and the ``errno`` variable is set
930appropriately. The generic error codes are described at the
931:ref:`Generic Error Codes <gen-errors>` chapter.
932
933
934-----
935
936
937VIDEO_FREEZE
938------------
939
940Synopsis
941~~~~~~~~
942
943.. c:macro:: VIDEO_FREEZE
944
945.. code-block:: c
946
947	int ioctl(fd, VIDEO_FREEZE)
948
949Arguments
950~~~~~~~~~
951
952.. flat-table::
953    :header-rows:  0
954    :stub-columns: 0
955
956    -  ..
957
958       -  ``int fd``
959
960       -  :cspan:`1` File descriptor returned by a previous call
961          to `open()`_.
962
963    -  ..
964
965       -  ``int request``
966
967       -  Equals ``VIDEO_FREEZE`` for this command.
968
969Description
970~~~~~~~~~~~
971
972.. attention:: Do **not** use in new drivers!
973             See: :ref:`legacy_dvb_decoder_notes`
974
975This ioctl is for Digital TV devices only. To control a V4L2 decoder use
976the V4L2 :ref:`VIDIOC_DECODER_CMD` instead.
977
978This ioctl call suspends the live video stream being played, if
979VIDEO_SOURCE_DEMUX is selected. Decoding and playing are frozen.
980It is then possible to restart the decoding and playing process of the
981video stream using the `VIDEO_CONTINUE`_ command.
982If VIDEO_SOURCE_MEMORY is selected in the ioctl call
983`VIDEO_SELECT_SOURCE`_, the Digital TV subsystem will not decode any more
984data until the ioctl call `VIDEO_CONTINUE`_ or `VIDEO_PLAY`_ is performed.
985
986Return Value
987~~~~~~~~~~~~
988
989On success 0 is returned, on error -1 and the ``errno`` variable is set
990appropriately. The generic error codes are described at the
991:ref:`Generic Error Codes <gen-errors>` chapter.
992
993
994-----
995
996
997VIDEO_CONTINUE
998--------------
999
1000Synopsis
1001~~~~~~~~
1002
1003.. c:macro:: VIDEO_CONTINUE
1004
1005.. code-block:: c
1006
1007	int ioctl(fd, VIDEO_CONTINUE)
1008
1009Arguments
1010~~~~~~~~~
1011
1012.. flat-table::
1013    :header-rows:  0
1014    :stub-columns: 0
1015
1016    -  ..
1017
1018       -  ``int fd``
1019
1020       -  :cspan:`1` File descriptor returned by a previous call
1021          to `open()`_.
1022
1023    -  ..
1024
1025       -  ``int request``
1026
1027       -  Equals ``VIDEO_CONTINUE`` for this command.
1028
1029Description
1030~~~~~~~~~~~
1031
1032.. attention:: Do **not** use in new drivers!
1033             See: :ref:`legacy_dvb_decoder_notes`
1034
1035This ioctl is for Digital TV devices only. To control a V4L2 decoder use
1036the V4L2 :ref:`VIDIOC_DECODER_CMD` instead.
1037
1038This ioctl call restarts decoding and playing processes of the video
1039stream which was played before a call to `VIDEO_FREEZE`_ was made.
1040
1041Return Value
1042~~~~~~~~~~~~
1043
1044On success 0 is returned, on error -1 and the ``errno`` variable is set
1045appropriately. The generic error codes are described at the
1046:ref:`Generic Error Codes <gen-errors>` chapter.
1047
1048
1049-----
1050
1051
1052VIDEO_SELECT_SOURCE
1053-------------------
1054
1055Synopsis
1056~~~~~~~~
1057
1058.. c:macro:: VIDEO_SELECT_SOURCE
1059
1060.. code-block:: c
1061
1062	int ioctl(fd, VIDEO_SELECT_SOURCE, video_stream_source_t source)
1063
1064Arguments
1065~~~~~~~~~
1066
1067.. flat-table::
1068    :header-rows:  0
1069    :stub-columns: 0
1070
1071    -  ..
1072
1073       -  ``int fd``
1074
1075       -  :cspan:`1` File descriptor returned by a previous call
1076          to `open()`_.
1077
1078    -  ..
1079
1080       -  ``int request``
1081
1082       -  Equals ``VIDEO_SELECT_SOURCE`` for this command.
1083
1084    -  ..
1085
1086       -  `video_stream_source_t`_ ``source``
1087
1088       -  Indicates which source shall be used for the Video stream.
1089
1090Description
1091~~~~~~~~~~~
1092
1093.. attention:: Do **not** use in new drivers!
1094             See: :ref:`legacy_dvb_decoder_notes`
1095
1096This ioctl is for Digital TV devices only. This ioctl was also supported
1097by the V4L2 ivtv driver, but that has been replaced by the ivtv-specific
1098``IVTV_IOC_PASSTHROUGH_MODE`` ioctl.
1099
1100This ioctl call informs the video device which source shall be used for
1101the input data. The possible sources are demux or memory. If memory is
1102selected, the data is fed to the video device through the write command
1103using the struct `video_stream_source_t`_. If demux is selected, the data
1104is directly transferred from the onboard demux-device to the decoder.
1105
1106The data fed to the decoder is also controlled by the PID-filter.
1107Output selection: :c:type:`dmx_output` ``DMX_OUT_DECODER``.
1108
1109
1110Return Value
1111~~~~~~~~~~~~
1112
1113On success 0 is returned, on error -1 and the ``errno`` variable is set
1114appropriately. The generic error codes are described at the
1115:ref:`Generic Error Codes <gen-errors>` chapter.
1116
1117
1118-----
1119
1120
1121VIDEO_SET_BLANK
1122---------------
1123
1124Synopsis
1125~~~~~~~~
1126
1127.. c:macro:: VIDEO_SET_BLANK
1128
1129.. code-block:: c
1130
1131	int ioctl(fd, VIDEO_SET_BLANK, int mode)
1132
1133Arguments
1134~~~~~~~~~
1135
1136.. flat-table::
1137    :header-rows:  0
1138    :stub-columns: 0
1139
1140    -  ..
1141
1142       -  ``int fd``
1143
1144       -  :cspan:`1` File descriptor returned by a previous call
1145          to `open()`_.
1146
1147    -  ..
1148
1149       -  ``int request``
1150
1151       -  :cspan:`1` Equals ``VIDEO_SET_BLANK`` for this command.
1152
1153    -  ..
1154
1155       -  :rspan:`2` ``int mode``
1156
1157       -  :cspan:`1` Indicates if the screen shall be blanked.
1158
1159    -  ..
1160
1161       -  TRUE  ( != 0 )
1162
1163       -  Blank screen when stop.
1164
1165    -  ..
1166
1167       -  FALSE ( == 0 )
1168
1169       -  Show last decoded frame.
1170
1171Description
1172~~~~~~~~~~~
1173
1174.. attention:: Do **not** use in new drivers!
1175             See: :ref:`legacy_dvb_decoder_notes`
1176
1177This ioctl call asks the Video Device to blank out the picture.
1178
1179Return Value
1180~~~~~~~~~~~~
1181
1182On success 0 is returned, on error -1 and the ``errno`` variable is set
1183appropriately. The generic error codes are described at the
1184:ref:`Generic Error Codes <gen-errors>` chapter.
1185
1186
1187-----
1188
1189
1190VIDEO_GET_STATUS
1191----------------
1192
1193Synopsis
1194~~~~~~~~
1195
1196.. c:macro:: VIDEO_GET_STATUS
1197
1198.. code-block:: c
1199
1200	int ioctl(fd, int request = VIDEO_GET_STATUS,
1201	struct video_status *status)
1202
1203Arguments
1204~~~~~~~~~
1205
1206.. flat-table::
1207    :header-rows:  0
1208    :stub-columns: 0
1209
1210    -  ..
1211
1212       -  ``int fd``
1213
1214       -  :cspan:`1` File descriptor returned by a previous call
1215          to `open()`_.
1216
1217    -  ..
1218
1219       -  ``int request``
1220
1221       -  Equals ``VIDEO_GET_STATUS`` for this command.
1222
1223    -  ..
1224
1225       -  ``struct`` `video_status`_ ``*status``
1226
1227       -  Returns the current status of the Video Device.
1228
1229Description
1230~~~~~~~~~~~
1231
1232.. attention:: Do **not** use in new drivers!
1233             See: :ref:`legacy_dvb_decoder_notes`
1234
1235This ioctl call asks the Video Device to return the current status of
1236the device.
1237
1238Return Value
1239~~~~~~~~~~~~
1240
1241On success 0 is returned, on error -1 and the ``errno`` variable is set
1242appropriately. The generic error codes are described at the
1243:ref:`Generic Error Codes <gen-errors>` chapter.
1244
1245
1246-----
1247
1248
1249VIDEO_GET_EVENT
1250---------------
1251
1252Synopsis
1253~~~~~~~~
1254
1255.. c:macro:: VIDEO_GET_EVENT
1256
1257.. code-block:: c
1258
1259	int ioctl(fd, int request = VIDEO_GET_EVENT,
1260	struct video_event *ev)
1261
1262Arguments
1263~~~~~~~~~
1264
1265.. flat-table::
1266    :header-rows:  0
1267    :stub-columns: 0
1268
1269    -  ..
1270
1271       -  ``int fd``
1272
1273       -  :cspan:`1` File descriptor returned by a previous call
1274          to `open()`_.
1275
1276    -  ..
1277
1278       -  ``int request``
1279
1280       -  Equals ``VIDEO_GET_EVENT`` for this command.
1281
1282    -  ..
1283
1284       -  ``struct`` `video_event`_ ``*ev``
1285
1286       -  Points to the location where the event, if any, is to be stored.
1287
1288Description
1289~~~~~~~~~~~
1290
1291.. attention:: Do **not** use in new drivers!
1292             See: :ref:`legacy_dvb_decoder_notes`
1293
1294This ioctl is for DVB devices only. To get events from a V4L2 decoder
1295use the V4L2 :ref:`VIDIOC_DQEVENT` ioctl instead.
1296
1297This ioctl call returns an event of type `video_event`_ if available. A
1298certain number of the latest events will be cued and returned in order of
1299occurrence. Older events may be discarded if not fetched in time. If
1300an event is not available, the behavior depends on whether the device is
1301in blocking or non-blocking mode. In the latter case, the call fails
1302immediately with errno set to ``EWOULDBLOCK``. In the former case, the
1303call blocks until an event becomes available. The standard Linux poll()
1304and/or select() system calls can be used with the device file descriptor
1305to watch for new events. For select(), the file descriptor should be
1306included in the exceptfds argument, and for poll(), POLLPRI should be
1307specified as the wake-up condition. Read-only permissions are sufficient
1308for this ioctl call.
1309
1310Return Value
1311~~~~~~~~~~~~
1312
1313On success 0 is returned, on error -1 and the ``errno`` variable is set
1314appropriately. The generic error codes are described at the
1315:ref:`Generic Error Codes <gen-errors>` chapter.
1316
1317.. flat-table::
1318    :header-rows:  0
1319    :stub-columns: 0
1320
1321    -  ..
1322
1323       -  ``EWOULDBLOCK``
1324
1325       -  :cspan:`1` There is no event pending, and the device is in
1326          non-blocking mode.
1327
1328    -  ..
1329
1330       -  ``EOVERFLOW``
1331
1332       -  Overflow in event queue - one or more events were lost.
1333
1334
1335-----
1336
1337
1338VIDEO_SET_DISPLAY_FORMAT
1339------------------------
1340
1341Synopsis
1342~~~~~~~~
1343
1344.. c:macro:: VIDEO_SET_DISPLAY_FORMAT
1345
1346.. code-block:: c
1347
1348	int ioctl(fd, int request = VIDEO_SET_DISPLAY_FORMAT,
1349	video_display_format_t format)
1350
1351Arguments
1352~~~~~~~~~
1353
1354.. flat-table::
1355    :header-rows:  0
1356    :stub-columns: 0
1357
1358    -  ..
1359
1360       -  ``int fd``
1361
1362       -  :cspan:`1` File descriptor returned by a previous call
1363          to `open()`_.
1364
1365    -  ..
1366
1367       -  ``int request``
1368
1369       -  Equals ``VIDEO_SET_DISPLAY_FORMAT`` for this command.
1370
1371    -  ..
1372
1373       -  `video_displayformat_t`_ ``format``
1374
1375       -  Selects the video format to be used.
1376
1377Description
1378~~~~~~~~~~~
1379
1380.. attention:: Do **not** use in new drivers!
1381             See: :ref:`legacy_dvb_decoder_notes`
1382
1383This ioctl call asks the Video Device to select the video format to be
1384applied by the MPEG chip on the video.
1385
1386Return Value
1387~~~~~~~~~~~~
1388
1389On success 0 is returned, on error -1 and the ``errno`` variable is set
1390appropriately. The generic error codes are described at the
1391:ref:`Generic Error Codes <gen-errors>` chapter.
1392
1393
1394-----
1395
1396
1397VIDEO_STILLPICTURE
1398------------------
1399
1400Synopsis
1401~~~~~~~~
1402
1403.. c:macro:: VIDEO_STILLPICTURE
1404
1405.. code-block:: c
1406
1407	int ioctl(fd, int request = VIDEO_STILLPICTURE,
1408	struct video_still_picture *sp)
1409
1410Arguments
1411~~~~~~~~~
1412
1413.. flat-table::
1414    :header-rows:  0
1415    :stub-columns: 0
1416
1417    -  ..
1418
1419       -  ``int fd``
1420
1421       -  :cspan:`1` File descriptor returned by a previous call
1422          to `open()`_.
1423
1424    -  ..
1425
1426       -  ``int request``
1427
1428       -  Equals ``VIDEO_STILLPICTURE`` for this command.
1429
1430    -  ..
1431
1432       -  ``struct`` `video_still_picture`_ ``*sp``
1433
1434       -  Pointer to the location where the struct with the I-frame
1435          and size is stored.
1436
1437Description
1438~~~~~~~~~~~
1439
1440.. attention:: Do **not** use in new drivers!
1441             See: :ref:`legacy_dvb_decoder_notes`
1442
1443This ioctl call asks the Video Device to display a still picture
1444(I-frame). The input data shall be the section of an elementary video
1445stream containing an I-frame. Typically this section is extracted from a
1446TS or PES recording. Resolution and codec (see `video capabilities`_) must
1447be supported by the device. If the pointer is NULL, then the current
1448displayed still picture is blanked.
1449
1450e.g. The AV7110 supports MPEG1 and MPEG2 with the common PAL-SD
1451resolutions.
1452
1453Return Value
1454~~~~~~~~~~~~
1455
1456On success 0 is returned, on error -1 and the ``errno`` variable is set
1457appropriately. The generic error codes are described at the
1458:ref:`Generic Error Codes <gen-errors>` chapter.
1459
1460
1461-----
1462
1463
1464VIDEO_FAST_FORWARD
1465------------------
1466
1467Synopsis
1468~~~~~~~~
1469
1470.. c:macro:: VIDEO_FAST_FORWARD
1471
1472.. code-block:: c
1473
1474	int ioctl(fd, int request = VIDEO_FAST_FORWARD, int nFrames)
1475
1476Arguments
1477~~~~~~~~~
1478
1479.. flat-table::
1480    :header-rows:  0
1481    :stub-columns: 0
1482
1483    -  ..
1484
1485       -  ``int fd``
1486
1487       -  :cspan:`1` File descriptor returned by a previous call
1488          to `open()`_.
1489
1490    -  ..
1491
1492       -  ``int request``
1493
1494       -  Equals ``VIDEO_FAST_FORWARD`` for this command.
1495
1496    -  ..
1497
1498       -  ``int nFrames``
1499
1500       -  The number of frames to skip.
1501
1502Description
1503~~~~~~~~~~~
1504
1505.. attention:: Do **not** use in new drivers!
1506             See: :ref:`legacy_dvb_decoder_notes`
1507
1508This ioctl call asks the Video Device to skip decoding of N number of
1509I-frames. This call can only be used if ``VIDEO_SOURCE_MEMORY`` is
1510selected.
1511
1512Return Value
1513~~~~~~~~~~~~
1514
1515On success 0 is returned, on error -1 and the ``errno`` variable is set
1516appropriately. The generic error codes are described at the
1517:ref:`Generic Error Codes <gen-errors>` chapter.
1518
1519.. flat-table::
1520    :header-rows:  0
1521    :stub-columns: 0
1522
1523    -  ..
1524
1525       -  ``EPERM``
1526
1527       -  Mode ``VIDEO_SOURCE_MEMORY`` not selected.
1528
1529
1530-----
1531
1532
1533VIDEO_SLOWMOTION
1534----------------
1535
1536Synopsis
1537~~~~~~~~
1538
1539.. c:macro:: VIDEO_SLOWMOTION
1540
1541.. code-block:: c
1542
1543	int ioctl(fd, int request = VIDEO_SLOWMOTION, int nFrames)
1544
1545Arguments
1546~~~~~~~~~
1547
1548.. flat-table::
1549    :header-rows:  0
1550    :stub-columns: 0
1551
1552    -  ..
1553
1554       -  ``int fd``
1555
1556       -  :cspan:`1` File descriptor returned by a previous call
1557          to `open()`_.
1558
1559    -  ..
1560
1561       -  ``int request``
1562
1563       -  Equals ``VIDEO_SLOWMOTION`` for this command.
1564
1565    -  ..
1566
1567       -  ``int nFrames``
1568
1569       -  The number of times to repeat each frame.
1570
1571Description
1572~~~~~~~~~~~
1573
1574.. attention:: Do **not** use in new drivers!
1575             See: :ref:`legacy_dvb_decoder_notes`
1576
1577This ioctl call asks the video device to repeat decoding frames N number
1578of times. This call can only be used if ``VIDEO_SOURCE_MEMORY`` is
1579selected.
1580
1581Return Value
1582~~~~~~~~~~~~
1583
1584On success 0 is returned, on error -1 and the ``errno`` variable is set
1585appropriately. The generic error codes are described at the
1586:ref:`Generic Error Codes <gen-errors>` chapter.
1587
1588.. flat-table::
1589    :header-rows:  0
1590    :stub-columns: 0
1591
1592    -  ..
1593
1594       -  ``EPERM``
1595
1596       -  Mode ``VIDEO_SOURCE_MEMORY`` not selected.
1597
1598
1599-----
1600
1601
1602VIDEO_GET_CAPABILITIES
1603----------------------
1604
1605Synopsis
1606~~~~~~~~
1607
1608.. c:macro:: VIDEO_GET_CAPABILITIES
1609
1610.. code-block:: c
1611
1612	int ioctl(fd, int request = VIDEO_GET_CAPABILITIES, unsigned int *cap)
1613
1614Arguments
1615~~~~~~~~~
1616
1617.. flat-table::
1618    :header-rows:  0
1619    :stub-columns: 0
1620
1621    -  ..
1622
1623       -  ``int fd``
1624
1625       -  :cspan:`1` File descriptor returned by a previous call
1626          to `open()`_.
1627
1628    -  ..
1629
1630       -  ``int request``
1631
1632       -  Equals ``VIDEO_GET_CAPABILITIES`` for this command.
1633
1634    -  ..
1635
1636       -  ``unsigned int *cap``
1637
1638       -  Pointer to a location where to store the capability information.
1639
1640Description
1641~~~~~~~~~~~
1642
1643.. attention:: Do **not** use in new drivers!
1644             See: :ref:`legacy_dvb_decoder_notes`
1645
1646This ioctl call asks the video device about its decoding capabilities.
1647On success it returns an integer which has bits set according to the
1648defines in `video capabilities`_.
1649
1650Return Value
1651~~~~~~~~~~~~
1652
1653On success 0 is returned, on error -1 and the ``errno`` variable is set
1654appropriately. The generic error codes are described at the
1655:ref:`Generic Error Codes <gen-errors>` chapter.
1656
1657
1658-----
1659
1660
1661VIDEO_CLEAR_BUFFER
1662------------------
1663
1664Synopsis
1665~~~~~~~~
1666
1667.. c:macro:: VIDEO_CLEAR_BUFFER
1668
1669.. code-block:: c
1670
1671	int ioctl(fd, int request = VIDEO_CLEAR_BUFFER)
1672
1673Arguments
1674~~~~~~~~~
1675
1676.. flat-table::
1677    :header-rows:  0
1678    :stub-columns: 0
1679
1680    -  ..
1681
1682       -  ``int fd``
1683
1684       -  :cspan:`1` File descriptor returned by a previous call
1685          to `open()`_.
1686
1687    -  ..
1688
1689       -  ``int request``
1690
1691       -  Equals ``VIDEO_CLEAR_BUFFER`` for this command.
1692
1693Description
1694~~~~~~~~~~~
1695
1696.. attention:: Do **not** use in new drivers!
1697             See: :ref:`legacy_dvb_decoder_notes`
1698
1699This ioctl call clears all video buffers in the driver and in the
1700decoder hardware.
1701
1702Return Value
1703~~~~~~~~~~~~
1704
1705On success 0 is returned, on error -1 and the ``errno`` variable is set
1706appropriately. The generic error codes are described at the
1707:ref:`Generic Error Codes <gen-errors>` chapter.
1708
1709
1710-----
1711
1712
1713VIDEO_SET_STREAMTYPE
1714--------------------
1715
1716Synopsis
1717~~~~~~~~
1718
1719.. c:macro:: VIDEO_SET_STREAMTYPE
1720
1721.. code-block:: c
1722
1723	int ioctl(fd, int request = VIDEO_SET_STREAMTYPE, int type)
1724
1725Arguments
1726~~~~~~~~~
1727
1728.. flat-table::
1729    :header-rows:  0
1730    :stub-columns: 0
1731
1732    -  ..
1733
1734       -  ``int fd``
1735
1736       -  :cspan:`1` File descriptor returned by a previous call
1737          to `open()`_.
1738
1739    -  ..
1740
1741       -  ``int request``
1742
1743       -  Equals ``VIDEO_SET_STREAMTYPE`` for this command.
1744
1745    -  ..
1746
1747       -  ``int type``
1748
1749       -  Stream type.
1750
1751Description
1752~~~~~~~~~~~
1753
1754.. attention:: Do **not** use in new drivers!
1755             See: :ref:`legacy_dvb_decoder_notes`
1756
1757This ioctl tells the driver which kind of stream to expect being written
1758to it.
1759Intelligent decoder might also not support or ignore (like the AV7110)
1760this call and determine the stream type themselves.
1761
1762Currently used stream types:
1763
1764.. flat-table::
1765    :header-rows:  1
1766    :stub-columns: 0
1767
1768    -  ..
1769
1770       -  Codec
1771
1772       -  Stream type
1773
1774    -  ..
1775
1776       -  MPEG2
1777
1778       -  0
1779
1780    -  ..
1781
1782       -  MPEG4 h.264
1783
1784       -  1
1785
1786    -  ..
1787
1788       -  VC1
1789
1790       -  3
1791
1792    -  ..
1793
1794       -  MPEG4 Part2
1795
1796       -  4
1797
1798    -  ..
1799
1800       -  VC1 SM
1801
1802       -  5
1803
1804    -  ..
1805
1806       -  MPEG1
1807
1808       -  6
1809
1810    -  ..
1811
1812       -  HEVC h.265
1813
1814       -  | 7
1815          | DREAMBOX: 22
1816
1817    -  ..
1818
1819       -  AVS
1820
1821       -  16
1822
1823    -  ..
1824
1825       -  AVS2
1826
1827       -  40
1828
1829Not every decoder supports all stream types.
1830
1831Return Value
1832~~~~~~~~~~~~
1833
1834On success 0 is returned, on error -1 and the ``errno`` variable is set
1835appropriately. The generic error codes are described at the
1836:ref:`Generic Error Codes <gen-errors>` chapter.
1837
1838
1839-----
1840
1841
1842VIDEO_SET_FORMAT
1843----------------
1844
1845Synopsis
1846~~~~~~~~
1847
1848.. c:macro:: VIDEO_SET_FORMAT
1849
1850.. code-block:: c
1851
1852	int ioctl(fd, int request = VIDEO_SET_FORMAT, video_format_t format)
1853
1854Arguments
1855~~~~~~~~~
1856
1857.. flat-table::
1858    :header-rows:  0
1859    :stub-columns: 0
1860
1861    -  ..
1862
1863       -  ``int fd``
1864
1865       -  :cspan:`1` File descriptor returned by a previous call
1866          to `open()`_.
1867
1868    -  ..
1869
1870       -  ``int request``
1871
1872       -  Equals ``VIDEO_SET_FORMAT`` for this command.
1873
1874    -  ..
1875
1876       -  `video_format_t`_ ``format``
1877
1878       -  Video format of TV as defined in section `video_format_t`_.
1879
1880Description
1881~~~~~~~~~~~
1882
1883.. attention:: Do **not** use in new drivers!
1884             See: :ref:`legacy_dvb_decoder_notes`
1885
1886This ioctl sets the screen format (aspect ratio) of the connected output
1887device (TV) so that the output of the decoder can be adjusted
1888accordingly.
1889
1890Return Value
1891~~~~~~~~~~~~
1892
1893On success 0 is returned, on error -1 and the ``errno`` variable is set
1894appropriately. The generic error codes are described at the
1895:ref:`Generic Error Codes <gen-errors>` chapter.
1896
1897
1898-----
1899
1900
1901VIDEO_GET_SIZE
1902--------------
1903
1904Synopsis
1905~~~~~~~~
1906
1907.. c:macro:: VIDEO_GET_SIZE
1908
1909.. code-block:: c
1910
1911	int ioctl(int fd, int request = VIDEO_GET_SIZE, video_size_t *size)
1912
1913Arguments
1914~~~~~~~~~
1915
1916.. flat-table::
1917    :header-rows:  0
1918    :stub-columns: 0
1919
1920    -  ..
1921
1922       -  ``int fd``
1923
1924       -  :cspan:`1` File descriptor returned by a previous call,
1925          to `open()`_.
1926
1927    -  ..
1928
1929       -  ``int request``
1930
1931       -  Equals ``VIDEO_GET_SIZE`` for this command.
1932
1933    -  ..
1934
1935       -  `video_size_t`_ ``*size``
1936
1937       -  Returns the size and aspect ratio.
1938
1939Description
1940~~~~~~~~~~~
1941
1942.. attention:: Do **not** use in new drivers!
1943             See: :ref:`legacy_dvb_decoder_notes`
1944
1945This ioctl returns the size and aspect ratio.
1946
1947Return Value
1948~~~~~~~~~~~~
1949
1950On success 0 is returned, on error -1 and the ``errno`` variable is set
1951appropriately. The generic error codes are described at the
1952:ref:`Generic Error Codes <gen-errors>` chapter.
1953
1954
1955-----
1956
1957
1958VIDEO_GET_PTS
1959-------------
1960
1961Synopsis
1962~~~~~~~~
1963
1964.. c:macro:: VIDEO_GET_PTS
1965
1966.. code-block:: c
1967
1968	int ioctl(int fd, int request = VIDEO_GET_PTS, __u64 *pts)
1969
1970Arguments
1971~~~~~~~~~
1972
1973.. flat-table::
1974    :header-rows:  0
1975    :stub-columns: 0
1976
1977    -  ..
1978
1979       -  ``int fd``
1980
1981       -  :cspan:`1` File descriptor returned by a previous call
1982          to `open()`_.
1983
1984    -  ..
1985
1986       -  ``int request``
1987
1988       -  Equals ``VIDEO_GET_PTS`` for this command.
1989
1990    -  ..
1991
1992       -  ``__u64 *pts``
1993
1994       -  Returns the 33-bit timestamp as defined in ITU T-REC-H.222.0 /
1995          ISO/IEC 13818-1.
1996
1997          The PTS should belong to the currently played frame if possible,
1998          but may also be a value close to it like the PTS of the last
1999          decoded frame or the last PTS extracted by the PES parser.
2000
2001Description
2002~~~~~~~~~~~
2003
2004.. attention:: Do **not** use in new drivers!
2005             See: :ref:`legacy_dvb_decoder_notes`
2006
2007For V4L2 decoders this ioctl has been replaced by the
2008``V4L2_CID_MPEG_VIDEO_DEC_PTS`` control.
2009
2010This ioctl call asks the Video Device to return the current PTS
2011timestamp.
2012
2013Return Value
2014~~~~~~~~~~~~
2015
2016On success 0 is returned, on error -1 and the ``errno`` variable is set
2017appropriately. The generic error codes are described at the
2018:ref:`Generic Error Codes <gen-errors>` chapter.
2019
2020
2021-----
2022
2023
2024VIDEO_GET_FRAME_COUNT
2025---------------------
2026
2027Synopsis
2028~~~~~~~~
2029
2030.. c:macro:: VIDEO_GET_FRAME_COUNT
2031
2032.. code-block:: c
2033
2034	int ioctl(int fd, VIDEO_GET_FRAME_COUNT, __u64 *pts)
2035
2036Arguments
2037~~~~~~~~~
2038
2039.. flat-table::
2040    :header-rows:  0
2041    :stub-columns: 0
2042
2043    -  ..
2044
2045       -  ``int fd``
2046
2047       -  :cspan:`1` File descriptor returned by a previous call
2048          to `open()`_.
2049
2050    -  ..
2051
2052       -  ``int request``
2053
2054       -  Equals ``VIDEO_GET_FRAME_COUNT`` for this command.
2055
2056    -  ..
2057
2058       -  ``__u64 *pts``
2059
2060       -  Returns the number of frames displayed since the decoder was
2061          started.
2062
2063Description
2064~~~~~~~~~~~
2065
2066.. attention:: Do **not** use in new drivers!
2067             See: :ref:`legacy_dvb_decoder_notes`
2068
2069For V4L2 decoders this ioctl has been replaced by the
2070``V4L2_CID_MPEG_VIDEO_DEC_FRAME`` control.
2071
2072This ioctl call asks the Video Device to return the number of displayed
2073frames since the decoder was started.
2074
2075Return Value
2076~~~~~~~~~~~~
2077
2078On success 0 is returned, on error -1 and the ``errno`` variable is set
2079appropriately. The generic error codes are described at the
2080:ref:`Generic Error Codes <gen-errors>` chapter.
2081
2082
2083-----
2084
2085
2086VIDEO_COMMAND
2087-------------
2088
2089Synopsis
2090~~~~~~~~
2091
2092.. c:macro:: VIDEO_COMMAND
2093
2094.. code-block:: c
2095
2096	int ioctl(int fd, int request = VIDEO_COMMAND,
2097	struct video_command *cmd)
2098
2099Arguments
2100~~~~~~~~~
2101
2102.. flat-table::
2103    :header-rows:  0
2104    :stub-columns: 0
2105
2106    -  ..
2107
2108       -  ``int fd``
2109
2110       -  :cspan:`1` File descriptor returned by a previous call
2111          to `open()`_.
2112
2113    -  ..
2114
2115       -  ``int request``
2116
2117       -  Equals ``VIDEO_COMMAND`` for this command.
2118
2119    -  ..
2120
2121       -  `struct video_command`_ ``*cmd``
2122
2123       -  Commands the decoder.
2124
2125Description
2126~~~~~~~~~~~
2127
2128.. attention:: Do **not** use in new drivers!
2129             See: :ref:`legacy_dvb_decoder_notes`
2130
2131For V4L2 decoders this ioctl has been replaced by the
2132:ref:`VIDIOC_DECODER_CMD` ioctl.
2133
2134This ioctl commands the decoder. The `struct video_command`_ is a
2135subset of the ``v4l2_decoder_cmd`` struct, so refer to the
2136:ref:`VIDIOC_DECODER_CMD` documentation for
2137more information.
2138
2139Return Value
2140~~~~~~~~~~~~
2141
2142On success 0 is returned, on error -1 and the ``errno`` variable is set
2143appropriately. The generic error codes are described at the
2144:ref:`Generic Error Codes <gen-errors>` chapter.
2145
2146
2147-----
2148
2149
2150VIDEO_TRY_COMMAND
2151-----------------
2152
2153Synopsis
2154~~~~~~~~
2155
2156.. c:macro:: VIDEO_TRY_COMMAND
2157
2158.. code-block:: c
2159
2160	int ioctl(int fd, int request = VIDEO_TRY_COMMAND,
2161	struct video_command *cmd)
2162
2163Arguments
2164~~~~~~~~~
2165
2166.. flat-table::
2167    :header-rows:  0
2168    :stub-columns: 0
2169
2170    -  ..
2171
2172       -  ``int fd``
2173
2174       -  :cspan:`1` File descriptor returned by a previous call
2175          to `open()`_.
2176
2177    -  ..
2178
2179       -  ``int request``
2180
2181       -  Equals ``VIDEO_TRY_COMMAND`` for this command.
2182
2183    -  ..
2184
2185       -  `struct video_command`_ ``*cmd``
2186
2187       -  Try a decoder command.
2188
2189Description
2190~~~~~~~~~~~
2191
2192.. attention:: Do **not** use in new drivers!
2193             See: :ref:`legacy_dvb_decoder_notes`
2194
2195For V4L2 decoders this ioctl has been replaced by the
2196:ref:`VIDIOC_TRY_DECODER_CMD <VIDIOC_DECODER_CMD>` ioctl.
2197
2198This ioctl tries a decoder command. The `struct video_command`_ is a
2199subset of the ``v4l2_decoder_cmd`` struct, so refer to the
2200:ref:`VIDIOC_TRY_DECODER_CMD <VIDIOC_DECODER_CMD>` documentation
2201for more information.
2202
2203Return Value
2204~~~~~~~~~~~~
2205
2206On success 0 is returned, on error -1 and the ``errno`` variable is set
2207appropriately. The generic error codes are described at the
2208:ref:`Generic Error Codes <gen-errors>` chapter.
2209
2210
2211-----
2212
2213
2214open()
2215------
2216
2217Synopsis
2218~~~~~~~~
2219
2220.. code-block:: c
2221
2222    #include <fcntl.h>
2223
2224.. c:function:: 	int open(const char *deviceName, int flags)
2225
2226Arguments
2227~~~~~~~~~
2228
2229.. flat-table::
2230    :header-rows:  0
2231    :stub-columns: 0
2232
2233    -  ..
2234
2235       -  ``const char *deviceName``
2236
2237       -  Name of specific video device.
2238
2239    -  ..
2240
2241       -  :rspan:`3` ``int flags``
2242
2243       -  :cspan:`1` A bit-wise OR of the following flags:
2244
2245    -  ..
2246
2247       -  ``O_RDONLY``
2248
2249       -  read-only access
2250
2251    -  ..
2252
2253       -  ``O_RDWR``
2254
2255       -  read/write access
2256
2257    -  ..
2258
2259       -  ``O_NONBLOCK``
2260       -  | Open in non-blocking mode
2261          | (blocking mode is the default)
2262
2263Description
2264~~~~~~~~~~~
2265
2266This system call opens a named video device (e.g.
2267/dev/dvb/adapter?/video?) for subsequent use.
2268
2269When an open() call has succeeded, the device will be ready for use. The
2270significance of blocking or non-blocking mode is described in the
2271documentation for functions where there is a difference. It does not
2272affect the semantics of the open() call itself. A device opened in
2273blocking mode can later be put into non-blocking mode (and vice versa)
2274using the F_SETFL command of the fcntl system call. This is a standard
2275system call, documented in the Linux manual page for fcntl. Only one
2276user can open the Video Device in O_RDWR mode. All other attempts to
2277open the device in this mode will fail, and an error-code will be
2278returned. If the Video Device is opened in O_RDONLY mode, the only
2279ioctl call that can be used is `VIDEO_GET_STATUS`_. All other call will
2280return an error code.
2281
2282Return Value
2283~~~~~~~~~~~~
2284
2285.. flat-table::
2286    :header-rows:  0
2287    :stub-columns: 0
2288
2289    -  ..
2290
2291       -  ``ENODEV``
2292
2293       -  :cspan:`1` Device driver not loaded/available.
2294
2295    -  ..
2296
2297       -  ``EINTERNAL``
2298
2299       -  Internal error.
2300
2301    -  ..
2302
2303       -  ``EBUSY``
2304
2305       -  Device or resource busy.
2306
2307    -  ..
2308
2309       -  ``EINVAL``
2310
2311       -  Invalid argument.
2312
2313
2314-----
2315
2316
2317close()
2318-------
2319
2320Synopsis
2321~~~~~~~~
2322
2323.. c:function:: 	int close(int fd)
2324
2325Arguments
2326~~~~~~~~~
2327
2328.. flat-table::
2329    :header-rows:  0
2330    :stub-columns: 0
2331
2332    -  ..
2333
2334       -  ``int fd``
2335
2336       -  :cspan:`1` File descriptor returned by a previous call
2337          to `open()`_.
2338
2339Description
2340~~~~~~~~~~~
2341
2342This system call closes a previously opened video device.
2343
2344Return Value
2345~~~~~~~~~~~~
2346
2347.. flat-table::
2348    :header-rows:  0
2349    :stub-columns: 0
2350
2351    -  ..
2352
2353       -  ``EBADF``
2354
2355       -  fd is not a valid open file descriptor.
2356
2357
2358-----
2359
2360
2361write()
2362-------
2363
2364Synopsis
2365~~~~~~~~
2366
2367.. c:function:: size_t write(int fd, const void *buf, size_t count)
2368
2369Arguments
2370~~~~~~~~~
2371
2372.. flat-table::
2373    :header-rows:  0
2374    :stub-columns: 0
2375
2376    -  ..
2377
2378       -  ``int fd``
2379
2380       -  :cspan:`1` File descriptor returned by a previous call
2381          to `open()`_.
2382
2383    -  ..
2384
2385       -  ``void *buf``
2386
2387       -  Pointer to the buffer containing the PES data.
2388
2389    -  ..
2390
2391       -  ``size_t count``
2392
2393       -  Size of buf.
2394
2395Description
2396~~~~~~~~~~~
2397
2398This system call can only be used if VIDEO_SOURCE_MEMORY is selected
2399in the ioctl call `VIDEO_SELECT_SOURCE`_. The data provided shall be in
2400PES format, unless the capability allows other formats. TS is the
2401most common format for storing DVB-data, it is usually supported too.
2402If O_NONBLOCK is not specified the function will block until buffer space
2403is available. The amount of data to be transferred is implied by count.
2404
2405.. note:: See: :ref:`DVB Data Formats <legacy_dvb_decoder_formats>`
2406
2407Return Value
2408~~~~~~~~~~~~
2409
2410.. flat-table::
2411    :header-rows:  0
2412    :stub-columns: 0
2413
2414    -  ..
2415
2416       -  ``EPERM``
2417
2418       -  :cspan:`1` Mode ``VIDEO_SOURCE_MEMORY`` not selected.
2419
2420    -  ..
2421
2422       -  ``ENOMEM``
2423
2424       -  Attempted to write more data than the internal buffer can hold.
2425
2426    -  ..
2427
2428       -  ``EBADF``
2429
2430       -  fd is not a valid open file descriptor.
2431