8
#include "struct-dump.h"
9
#include "struct-v4l2.h"
11
/* ---------------------------------------------------------------------- */
13
char *desc_v4l2_field[] = {
14
[V4L2_FIELD_ANY] = "ANY",
15
[V4L2_FIELD_NONE] = "NONE",
16
[V4L2_FIELD_TOP] = "TOP",
17
[V4L2_FIELD_BOTTOM] = "BOTTOM",
18
[V4L2_FIELD_INTERLACED] = "INTERLACED",
19
[V4L2_FIELD_SEQ_TB] = "SEQ_TB",
20
[V4L2_FIELD_SEQ_BT] = "SEQ_BT",
21
[V4L2_FIELD_ALTERNATE] = "ALTERNATE",
24
char *desc_v4l2_buf_type[] = {
25
[V4L2_BUF_TYPE_VIDEO_CAPTURE] = "VIDEO_CAPTURE",
26
[V4L2_BUF_TYPE_VIDEO_OUTPUT] = "VIDEO_OUTPUT",
27
[V4L2_BUF_TYPE_VIDEO_OVERLAY] = "VIDEO_OVERLAY",
28
[V4L2_BUF_TYPE_VBI_CAPTURE] = "VBI_CAPTURE",
29
[V4L2_BUF_TYPE_VBI_OUTPUT] = "VBI_OUTPUT",
30
[V4L2_BUF_TYPE_PRIVATE] = "PRIVATE",
33
char *desc_v4l2_ctrl_type[] = {
34
[V4L2_CTRL_TYPE_INTEGER] = "INTEGER",
35
[V4L2_CTRL_TYPE_BOOLEAN] = "BOOLEAN",
36
[V4L2_CTRL_TYPE_MENU] = "MENU",
37
[V4L2_CTRL_TYPE_BUTTON] = "BUTTON",
40
char *desc_v4l2_tuner_type[] = {
41
[V4L2_TUNER_RADIO] = "RADIO",
42
[V4L2_TUNER_ANALOG_TV] = "ANALOG_TV",
45
char *desc_v4l2_memory[] = {
46
[V4L2_MEMORY_MMAP] = "MMAP",
47
[V4L2_MEMORY_USERPTR] = "USERPTR",
48
[V4L2_MEMORY_OVERLAY] = "OVERLAY",
51
char *desc_v4l2_colorspace[] = {
52
[V4L2_COLORSPACE_SMPTE170M] = "SMPTE170M",
53
[V4L2_COLORSPACE_SMPTE240M] = "SMPTE240M",
54
[V4L2_COLORSPACE_REC709] = "REC709",
55
[V4L2_COLORSPACE_BT878] = "BT878",
56
[V4L2_COLORSPACE_470_SYSTEM_M] = "470_SYSTEM_M",
57
[V4L2_COLORSPACE_470_SYSTEM_BG] = "470_SYSTEM_BG",
58
[V4L2_COLORSPACE_JPEG] = "JPEG",
59
[V4L2_COLORSPACE_SRGB] = "SRGB",
62
char *bits_capabilities[32] = {
63
"VIDEO_CAPTURE", "VIDEO_OUTPUT", "VIDEO_OVERLAY", "",
64
"VBI_CAPTURE", "VBI_OUTPUT", "?","?",
65
"RDS_CAPTURE", "?", "?", "?",
67
"TUNER", "AUDIO", "?", "?",
69
"READWRITE", "ASYNCIO", "STREAMING", "?",
72
char *bits_standard[64] = {
73
"PAL_B", "PAL_B1", "PAL_G", "PAL_H",
74
"PAL_I", "PAL_D", "PAL_D1", "PAL_K",
75
"PAL_M", "PAL_N", "PAL_Nc", "PAL_60",
76
"NTSC_M", "NTSC_M_JP", "?", "?",
77
"SECAM_B", "SECAM_D", "SECAM_G", "SECAM_H",
78
"SECAM_K", "SECAM_K1", "SECAM_L", "?"
79
"ATSC_8_VSB", "ATSC_16_VSB",
82
char *bits_buf_flags[32] = {
93
char *bits_fbuf_cap[32] = {
100
char *bits_fbuf_flags[32] = {
106
char *desc_input_type[32] = {
107
[ V4L2_INPUT_TYPE_TUNER ] = "TUNER",
108
[ V4L2_INPUT_TYPE_CAMERA ] = "CAMERA",
111
char *bits_input_status[32] = {
112
"NO_POWER", "NO_SIGNAL", "NO_COLOR", "?",
114
"NO_H_LOCK", "COLOR_KILL", "?", "?",
116
"NO_SYNC", "NO_EQU", "NO_CARRIER", "?",
118
"MACROVISION", "NO_ACCESS", "VTR", "?",
122
char *bits_tuner_cap[32] = {
123
"LOW", "NORM", "?", "?",
124
"STEREO", "LANG2", "LANG1", "?",
127
char *bits_tuner_rx[32] = {
134
char *desc_tuner2_mode[] = {
135
[ V4L2_TUNER_MODE_MONO ] = "MONO",
136
[ V4L2_TUNER_MODE_STEREO ] = "STEREO",
137
[ V4L2_TUNER_MODE_LANG2 ] = "LANG2",
138
[ V4L2_TUNER_MODE_LANG1 ] = "LANG1",
141
/* ---------------------------------------------------------------------- */
143
struct struct_desc desc_v4l2_rect[] = {{
159
struct struct_desc desc_v4l2_fract[] = {{
164
.name = "denominator",
169
struct struct_desc desc_v4l2_capability[] = {{
186
.name = "capabilities",
187
.bits = bits_capabilities,
192
struct struct_desc desc_v4l2_pix_format[] = {{
200
.name = "pixelformat",
204
.enums = desc_v4l2_field,
205
.length = sizeof(desc_v4l2_field) / sizeof(char*),
208
.name = "bytesperline",
214
.name = "colorspace",
215
.enums = desc_v4l2_colorspace,
216
.length = sizeof(desc_v4l2_colorspace) / sizeof(char*),
224
struct struct_desc desc_v4l2_fmtdesc[] = {{
230
.enums = desc_v4l2_buf_type,
231
.length = sizeof(desc_v4l2_buf_type) / sizeof(char*),
237
.name = "description",
241
.name = "pixelformat",
246
struct struct_desc desc_v4l2_timecode[] = {{
272
struct struct_desc desc_v4l2_compression[] = {{
277
.name = "keyframerate",
280
.name = "pframerate",
285
struct struct_desc desc_v4l2_jpegcompression[] = {{
307
.name = "jpeg_markers",
312
struct struct_desc desc_v4l2_requestbuffers[] = {{
318
.enums = desc_v4l2_buf_type,
319
.length = sizeof(desc_v4l2_buf_type) / sizeof(char*),
323
.enums = desc_v4l2_memory,
324
.length = sizeof(desc_v4l2_memory) / sizeof(char*),
329
struct struct_desc desc_v4l2_buffer[] = {{
335
.enums = desc_v4l2_buf_type,
336
.length = sizeof(desc_v4l2_buf_type) / sizeof(char*),
343
.bits = bits_buf_flags,
347
.enums = desc_v4l2_field,
348
.length = sizeof(desc_v4l2_field) / sizeof(char*),
352
.desc = desc_timeval,
353
.length = sizeof(struct timeval),
357
.desc = desc_v4l2_timecode,
358
.length = sizeof(struct v4l2_timecode),
365
.enums = desc_v4l2_memory,
366
.length = sizeof(desc_v4l2_memory) / sizeof(char*),
372
struct struct_desc desc_v4l2_framebuffer[] = {{
374
.name = "capability",
375
.bits = bits_fbuf_cap,
379
.bits = bits_fbuf_flags,
386
.desc = desc_v4l2_pix_format,
387
.length = sizeof(struct v4l2_pix_format),
392
struct struct_desc desc_v4l2_clip[] = {{
395
.desc = desc_v4l2_rect,
396
.length = sizeof(struct v4l2_rect),
401
struct struct_desc desc_v4l2_window[] = {{
404
.desc = desc_v4l2_rect,
405
.length = sizeof(struct v4l2_rect),
409
.enums = desc_v4l2_field,
410
.length = sizeof(desc_v4l2_field) / sizeof(char*),
427
struct struct_desc desc_v4l2_captureparm[] = {{
429
.name = "capability",
432
.name = "capturemode",
435
.name = "timeperframe",
436
.desc = desc_v4l2_fract,
437
.length = sizeof(struct v4l2_fract),
440
.name = "extendedmode",
443
.name = "readbuffers",
448
struct struct_desc desc_v4l2_outputparm[] = {{
450
.name = "capability",
453
.name = "outputmode",
456
.name = "timeperframe",
457
.desc = desc_v4l2_fract,
458
.length = sizeof(struct v4l2_fract),
461
.name = "extendedmode",
464
.name = "writebuffers",
469
struct struct_desc desc_v4l2_cropcap[] = {{
472
.enums = desc_v4l2_buf_type,
473
.length = sizeof(desc_v4l2_buf_type) / sizeof(char*),
477
.desc = desc_v4l2_rect,
478
.length = sizeof(struct v4l2_rect),
482
.desc = desc_v4l2_rect,
483
.length = sizeof(struct v4l2_rect),
486
.name = "pixelaspect",
487
.desc = desc_v4l2_fract,
488
.length = sizeof(struct v4l2_fract),
493
struct struct_desc desc_v4l2_crop[] = {{
496
.enums = desc_v4l2_buf_type,
497
.length = sizeof(desc_v4l2_buf_type) / sizeof(char*),
501
.desc = desc_v4l2_rect,
502
.length = sizeof(struct v4l2_rect),
507
struct struct_desc desc_v4l2_standard[] = {{
513
.bits = bits_standard,
520
.name = "frameperiod",
521
.desc = desc_v4l2_fract,
522
.length = sizeof(struct v4l2_fract),
525
.name = "framelines",
530
struct struct_desc desc_v4l2_input[] = {{
540
.enums = desc_input_type,
541
.length = sizeof(desc_input_type) / sizeof(char*),
551
.bits = bits_standard
555
.bits = bits_input_status,
560
struct struct_desc desc_v4l2_output[] = {{
579
.bits = bits_standard
584
struct struct_desc desc_v4l2_control[] = {{
594
struct struct_desc desc_v4l2_queryctrl[] = {{
600
.enums = desc_v4l2_ctrl_type,
601
.length = sizeof(desc_v4l2_buf_type) / sizeof(char*),
617
.name = "default_value",
625
struct struct_desc desc_v4l2_querymenu[] = {{
642
struct struct_desc desc_v4l2_tuner[] = {{
652
.enums = desc_v4l2_tuner_type,
653
.length = sizeof(desc_v4l2_tuner_type) / sizeof(char*),
656
.name = "capability",
657
.bits = bits_tuner_cap,
666
.name = "rxsubchans",
667
.bits = bits_tuner_rx,
671
.enums = desc_tuner2_mode,
672
.length = sizeof(desc_tuner2_mode) / sizeof(char*),
683
struct struct_desc desc_v4l2_modulator[] = {{
692
.name = "capability",
701
.name = "txsubchans",
706
struct struct_desc desc_v4l2_frequency[] = {{
712
.enums = desc_v4l2_tuner_type,
713
.length = sizeof(desc_v4l2_tuner_type) / sizeof(char*),
721
struct struct_desc desc_v4l2_audio[] = {{
730
.name = "capability",
738
struct struct_desc desc_v4l2_audioout[] = {{
747
.name = "capability",
755
struct struct_desc desc_v4l2_vbi_format[] = {{
757
.name = "sampling_rate",
763
.name = "samples_per_line",
766
.name = "sample_format",
786
struct struct_desc desc_v4l2_format[] = {{
789
.enums = desc_v4l2_buf_type,
790
.length = sizeof(desc_v4l2_buf_type) / sizeof(char*),
795
.value = V4L2_BUF_TYPE_VIDEO_CAPTURE,
797
.desc = desc_v4l2_pix_format,
799
.value = V4L2_BUF_TYPE_VIDEO_OVERLAY,
801
.desc = desc_v4l2_window,
803
.value = V4L2_BUF_TYPE_VBI_CAPTURE,
805
.desc = desc_v4l2_vbi_format,
813
struct struct_desc desc_v4l2_streamparm[] = {{
816
.enums = desc_v4l2_buf_type,
817
.length = sizeof(desc_v4l2_buf_type) / sizeof(char*),
823
struct struct_desc desc_v4l2_std_id[] = {{
826
.bits = bits_standard,
831
/* ---------------------------------------------------------------------- */
833
struct ioctl_desc ioctls_v4l2[256] = {
834
[_IOC_NR(VIDIOC_QUERYCAP)] = {
835
.name = "VIDIOC_QUERYCAP",
836
.desc = desc_v4l2_capability,
838
[_IOC_NR(VIDIOC_ENUM_FMT)] = {
839
.name = "VIDIOC_ENUM_FMT",
840
.desc = desc_v4l2_fmtdesc,
842
[_IOC_NR(VIDIOC_G_FMT)] = {
843
.name = "VIDIOC_G_FMT",
844
.desc = desc_v4l2_format,
846
[_IOC_NR(VIDIOC_S_FMT)] = {
847
.name = "VIDIOC_S_FMT",
848
.desc = desc_v4l2_format,
851
[_IOC_NR(VIDIOC_G_COMP)] = {
852
.name = "VIDIOC_G_COMP",
853
.desc = desc_v4l2_compression,
855
[_IOC_NR(VIDIOC_S_COMP)] = {
856
.name = "VIDIOC_S_COMP",
857
.desc = desc_v4l2_compression,
860
[_IOC_NR(VIDIOC_REQBUFS)] = {
861
.name = "VIDIOC_REQBUFS",
862
.desc = desc_v4l2_requestbuffers,
864
[_IOC_NR(VIDIOC_QUERYBUF)] = {
865
.name = "VIDIOC_QUERYBUF",
866
.desc = desc_v4l2_buffer,
868
[_IOC_NR(VIDIOC_G_FBUF)] = {
869
.name = "VIDIOC_G_FBUF",
870
.desc = desc_v4l2_framebuffer,
872
[_IOC_NR(VIDIOC_S_FBUF)] = {
873
.name = "VIDIOC_S_FBUF",
874
.desc = desc_v4l2_framebuffer,
876
[_IOC_NR(VIDIOC_OVERLAY)] = {
877
.name = "VIDIOC_OVERLAY",
880
[_IOC_NR(VIDIOC_QBUF)] = {
881
.name = "VIDIOC_QBUF",
882
.desc = desc_v4l2_buffer,
884
[_IOC_NR(VIDIOC_DQBUF)] = {
885
.name = "VIDIOC_DQBUF",
886
.desc = desc_v4l2_buffer,
888
[_IOC_NR(VIDIOC_STREAMON)] = {
889
.name = "VIDIOC_STREAMON",
892
[_IOC_NR(VIDIOC_STREAMOFF)] = {
893
.name = "VIDIOC_STREAMOFF",
896
[_IOC_NR(VIDIOC_G_PARM)] = {
897
.name = "VIDIOC_G_PARM",
898
.desc = desc_v4l2_streamparm,
900
[_IOC_NR(VIDIOC_S_PARM)] = {
901
.name = "VIDIOC_S_PARM",
902
.desc = desc_v4l2_streamparm,
904
[_IOC_NR(VIDIOC_G_STD)] = {
905
.name = "VIDIOC_G_STD",
906
.desc = desc_v4l2_std_id,
908
[_IOC_NR(VIDIOC_S_STD)] = {
909
.name = "VIDIOC_S_STD",
910
.desc = desc_v4l2_std_id,
912
[_IOC_NR(VIDIOC_ENUMSTD)] = {
913
.name = "VIDIOC_ENUMSTD",
914
.desc = desc_v4l2_standard,
916
[_IOC_NR(VIDIOC_ENUMINPUT)] = {
917
.name = "VIDIOC_ENUMINPUT",
918
.desc = desc_v4l2_input,
920
[_IOC_NR(VIDIOC_G_CTRL)] = {
921
.name = "VIDIOC_G_CTRL",
922
.desc = desc_v4l2_control,
924
[_IOC_NR(VIDIOC_S_CTRL)] = {
925
.name = "VIDIOC_S_CTRL",
926
.desc = desc_v4l2_control,
928
[_IOC_NR(VIDIOC_G_TUNER)] = {
929
.name = "VIDIOC_G_TUNER",
930
.desc = desc_v4l2_tuner,
932
[_IOC_NR(VIDIOC_S_TUNER)] = {
933
.name = "VIDIOC_S_TUNER",
934
.desc = desc_v4l2_tuner,
936
[_IOC_NR(VIDIOC_G_AUDIO)] = {
937
.name = "VIDIOC_G_AUDIO",
938
.desc = desc_v4l2_audio,
940
[_IOC_NR(VIDIOC_S_AUDIO)] = {
941
.name = "VIDIOC_S_AUDIO",
942
.desc = desc_v4l2_audio,
944
[_IOC_NR(VIDIOC_QUERYCTRL)] = {
945
.name = "VIDIOC_QUERYCTRL",
946
.desc = desc_v4l2_queryctrl,
948
[_IOC_NR(VIDIOC_QUERYMENU)] = {
949
.name = "VIDIOC_QUERYMENU",
950
.desc = desc_v4l2_querymenu,
952
[_IOC_NR(VIDIOC_G_INPUT)] = {
953
.name = "VIDIOC_G_INPUT",
956
[_IOC_NR(VIDIOC_S_INPUT)] = {
957
.name = "VIDIOC_S_INPUT",
960
[_IOC_NR(VIDIOC_G_OUTPUT)] = {
961
.name = "VIDIOC_G_OUTPUT",
964
[_IOC_NR(VIDIOC_S_OUTPUT)] = {
965
.name = "VIDIOC_S_OUTPUT",
968
[_IOC_NR(VIDIOC_ENUMOUTPUT)] = {
969
.name = "VIDIOC_ENUMOUTPUT",
970
.desc = desc_v4l2_output,
972
[_IOC_NR(VIDIOC_G_AUDOUT)] = {
973
.name = "VIDIOC_G_AUDOUT",
974
.desc = desc_v4l2_audioout,
976
[_IOC_NR(VIDIOC_S_AUDOUT)] = {
977
.name = "VIDIOC_S_AUDOUT",
978
.desc = desc_v4l2_audioout,
980
[_IOC_NR(VIDIOC_G_MODULATOR)] = {
981
.name = "VIDIOC_G_MODULATOR",
982
.desc = desc_v4l2_modulator,
984
[_IOC_NR(VIDIOC_S_MODULATOR)] = {
985
.name = "VIDIOC_S_MODULATOR",
986
.desc = desc_v4l2_modulator,
988
[_IOC_NR(VIDIOC_G_FREQUENCY)] = {
989
.name = "VIDIOC_G_FREQUENCY",
990
.desc = desc_v4l2_frequency,
992
[_IOC_NR(VIDIOC_S_FREQUENCY)] = {
993
.name = "VIDIOC_S_FREQUENCY",
994
.desc = desc_v4l2_frequency,
996
[_IOC_NR(VIDIOC_CROPCAP)] = {
997
.name = "VIDIOC_CROPCAP",
998
.desc = desc_v4l2_cropcap,
1000
[_IOC_NR(VIDIOC_G_CROP)] = {
1001
.name = "VIDIOC_G_CROP",
1002
.desc = desc_v4l2_crop,
1004
[_IOC_NR(VIDIOC_S_CROP)] = {
1005
.name = "VIDIOC_S_CROP",
1006
.desc = desc_v4l2_crop,
1008
[_IOC_NR(VIDIOC_G_JPEGCOMP)] = {
1009
.name = "VIDIOC_G_JPEGCOMP",
1010
.desc = desc_v4l2_jpegcompression,
1012
[_IOC_NR(VIDIOC_S_JPEGCOMP)] = {
1013
.name = "VIDIOC_S_JPEGCOMP",
1014
.desc = desc_v4l2_jpegcompression,
1016
[_IOC_NR(VIDIOC_QUERYSTD)] = {
1017
.name = "VIDIOC_QUERYSTD",
1018
.desc = desc_v4l2_std_id,
1020
[_IOC_NR(VIDIOC_TRY_FMT)] = {
1021
.name = "VIDIOC_TRY_FMT",
1022
.desc = desc_v4l2_format,
1026
/* ---------------------------------------------------------------------- */