Logo Search packages:      
Sourcecode: xawtv version File versions  Download package

struct-v4l2.c

#include <stdio.h>
#include <sys/ioctl.h>
#include <sys/time.h>

#include <asm/types.h>
#include "videodev2.h"

#include "struct-dump.h"
#include "struct-v4l2.h"

/* ---------------------------------------------------------------------- */

char *desc_v4l2_field[] = {
      [V4L2_FIELD_ANY]        = "ANY",
      [V4L2_FIELD_NONE]       = "NONE",
      [V4L2_FIELD_TOP]        = "TOP",
      [V4L2_FIELD_BOTTOM]     = "BOTTOM",
      [V4L2_FIELD_INTERLACED] = "INTERLACED",
      [V4L2_FIELD_SEQ_TB]     = "SEQ_TB",
      [V4L2_FIELD_SEQ_BT]     = "SEQ_BT",
      [V4L2_FIELD_ALTERNATE]  = "ALTERNATE",
};

char *desc_v4l2_buf_type[] = {
      [V4L2_BUF_TYPE_VIDEO_CAPTURE] = "VIDEO_CAPTURE",
      [V4L2_BUF_TYPE_VIDEO_OUTPUT]  = "VIDEO_OUTPUT",
      [V4L2_BUF_TYPE_VIDEO_OVERLAY] = "VIDEO_OVERLAY",
      [V4L2_BUF_TYPE_VBI_CAPTURE]   = "VBI_CAPTURE",
      [V4L2_BUF_TYPE_VBI_OUTPUT]    = "VBI_OUTPUT",
      [V4L2_BUF_TYPE_PRIVATE]       = "PRIVATE",
};

char *desc_v4l2_ctrl_type[] = {
      [V4L2_CTRL_TYPE_INTEGER] = "INTEGER",
      [V4L2_CTRL_TYPE_BOOLEAN] = "BOOLEAN",
      [V4L2_CTRL_TYPE_MENU]    = "MENU",
      [V4L2_CTRL_TYPE_BUTTON]  = "BUTTON",
};

char *desc_v4l2_tuner_type[] = {
      [V4L2_TUNER_RADIO]     = "RADIO",
      [V4L2_TUNER_ANALOG_TV] = "ANALOG_TV",
};

char *desc_v4l2_memory[] = {
      [V4L2_MEMORY_MMAP]    = "MMAP",
      [V4L2_MEMORY_USERPTR] = "USERPTR",
      [V4L2_MEMORY_OVERLAY] = "OVERLAY",
};

char *desc_v4l2_colorspace[] = {
      [V4L2_COLORSPACE_SMPTE170M]     = "SMPTE170M",
      [V4L2_COLORSPACE_SMPTE240M]     = "SMPTE240M",
      [V4L2_COLORSPACE_REC709]        = "REC709",
      [V4L2_COLORSPACE_BT878]         = "BT878",
      [V4L2_COLORSPACE_470_SYSTEM_M]  = "470_SYSTEM_M",
      [V4L2_COLORSPACE_470_SYSTEM_BG] = "470_SYSTEM_BG",
      [V4L2_COLORSPACE_JPEG]          = "JPEG",
      [V4L2_COLORSPACE_SRGB]          = "SRGB",
};

char *bits_capabilities[32] = {
      "VIDEO_CAPTURE", "VIDEO_OUTPUT", "VIDEO_OVERLAY", "",
      "VBI_CAPTURE", "VBI_OUTPUT",   "?","?",
      "RDS_CAPTURE", "?", "?", "?",
      "?", "?", "?", "?",
      "TUNER", "AUDIO", "?", "?",
      "?", "?", "?", "?",
      "READWRITE", "ASYNCIO", "STREAMING", "?",
};

char *bits_standard[64] = {
      "PAL_B",      "PAL_B1",      "PAL_G",   "PAL_H",
      "PAL_I",      "PAL_D",       "PAL_D1",  "PAL_K",
      "PAL_M",      "PAL_N",       "PAL_Nc",  "PAL_60",
      "NTSC_M",     "NTSC_M_JP",   "?", "?",
      "SECAM_B",    "SECAM_D",     "SECAM_G", "SECAM_H",
      "SECAM_K",    "SECAM_K1",    "SECAM_L", "?"
      "ATSC_8_VSB", "ATSC_16_VSB",
};

char *bits_buf_flags[32] = {
      "MAPPED",
      "QUEUED",
      "DONE",
      "KEYFRAME",
      "PFRAME",
      "BFRAME",
      "?", "?",
      "TIMECODE",
};

char *bits_fbuf_cap[32] = {
      "EXTERNOVERLAY",
      "CHROMAKEY",
      "LIST_CLIPPING",
      "BITMAP_CLIPPING",
};

char *bits_fbuf_flags[32] = {
      "PRIMARY",
      "OVERLAY",
      "CHROMAKEY",
};

char *desc_input_type[32] = {
      [ V4L2_INPUT_TYPE_TUNER ]  = "TUNER",
      [ V4L2_INPUT_TYPE_CAMERA ] = "CAMERA",
};

char *bits_input_status[32] = {
      "NO_POWER", "NO_SIGNAL", "NO_COLOR", "?",
      "?","?","?","?",
      "NO_H_LOCK", "COLOR_KILL", "?", "?",
      "?","?","?","?",
      "NO_SYNC", "NO_EQU", "NO_CARRIER", "?",
      "?","?","?","?",
      "MACROVISION", "NO_ACCESS", "VTR", "?",
      "?","?","?","?",
};

char *bits_tuner_cap[32] = {
      "LOW", "NORM", "?", "?",
      "STEREO", "LANG2", "LANG1", "?",
};

char *bits_tuner_rx[32] = {
      "MONO",
      "STEREO",
      "LANG2",
      "LANG1",
};

char *desc_tuner2_mode[] = {
      [ V4L2_TUNER_MODE_MONO ]   = "MONO",
      [ V4L2_TUNER_MODE_STEREO ] = "STEREO",
      [ V4L2_TUNER_MODE_LANG2 ]  = "LANG2",
      [ V4L2_TUNER_MODE_LANG1 ]  = "LANG1",
};

/* ---------------------------------------------------------------------- */

struct struct_desc desc_v4l2_rect[] = {{
      .type   = SINT32,
      .name   = "left",
},{
      .type   = SINT32,
      .name   = "top",
},{
      .type   = SINT32,
      .name   = "width",
},{
      .type   = SINT32,
      .name   = "height",
},{
      /* end of list */
}};

struct struct_desc desc_v4l2_fract[] = {{
      .type   = UINT32,
      .name   = "numerator",
},{
      .type   = UINT32,
      .name   = "denominator",
},{
      /* end of list */
}};

struct struct_desc desc_v4l2_capability[] = {{
      .type   = STRING,
      .name   = "driver",
      .length = 16,
},{
      .type   = STRING,
      .name   = "card",
      .length = 32,
},{
      .type   = STRING,
      .name   = "bus_info",
      .length = 32,
},{
      .type   = VER,
      .name   = "version",
},{
      .type   = BITS32,
      .name   = "capabilities",
      .bits   = bits_capabilities,
},{
      /* end of list */
}};

struct struct_desc desc_v4l2_pix_format[] = {{
      .type   = UINT32,
      .name   = "width",
},{
      .type   = UINT32,
      .name   = "height",
},{
      .type   = FOURCC,
      .name   = "pixelformat",
},{
      .type   = ENUM32,
      .name   = "field",
      .enums  = desc_v4l2_field,
      .length = sizeof(desc_v4l2_field) / sizeof(char*),
},{
      .type   = UINT32,
      .name   = "bytesperline",
},{
      .type   = UINT32,
      .name   = "sizeimage",
},{
      .type   = ENUM32,
      .name   = "colorspace",
      .enums  = desc_v4l2_colorspace,
      .length = sizeof(desc_v4l2_colorspace) / sizeof(char*),
},{
      .type   = UINT32,
      .name   = "priv",
},{
      /* end of list */
}};

struct struct_desc desc_v4l2_fmtdesc[] = {{
      .type   = UINT32,
      .name   = "index",
},{
      .type   = ENUM32,
      .name   = "type",
      .enums  = desc_v4l2_buf_type,
      .length = sizeof(desc_v4l2_buf_type) / sizeof(char*),
},{
      .type   = UINT32,
      .name   = "flags",
},{
      .type   = STRING,
      .name   = "description",
      .length = 32,
},{
      .type   = FOURCC,
      .name   = "pixelformat",
},{
      /* end of list */
}};

struct struct_desc desc_v4l2_timecode[] = {{
      .type   = UINT32,
      .name   = "type",
},{
      .type   = UINT32,
      .name   = "flags",
},{
      .type   = UINT8,
      .name   = "frames",
},{
      .type   = UINT8,
      .name   = "seconds",
},{
      .type   = UINT8,
      .name   = "minutes",
},{
      .type   = UINT8,
      .name   = "hours",
},{
      .type   = STRING,
      .name   = "userbits",
      .length = 4,
},{
      /* end of list */
}};

struct struct_desc desc_v4l2_compression[] = {{
      .type   = UINT32,
      .name   = "quality",
},{
      .type   = UINT32,
      .name   = "keyframerate",
},{
      .type   = UINT32,
      .name   = "pframerate",
},{
      /* end of list */
}};

struct struct_desc desc_v4l2_jpegcompression[] = {{
      .type   = SINT32,
      .name   = "quality",
},{
      .type   = SINT32,
      .name   = "APPn",
},{
      .type   = SINT32,
      .name   = "APP_len",
},{
      .type   = STRING,
      .name   = "APP_data",
      .length = 60,
},{
      .type   = SINT32,
      .name   = "COM_len",
},{
      .type   = STRING,
      .name   = "COM_data",
      .length = 60,
},{
      .type   = UINT32,
      .name   = "jpeg_markers",
},{
      /* end of list */
}};

struct struct_desc desc_v4l2_requestbuffers[] = {{
      .type   = UINT32,
      .name   = "count",
},{
      .type   = ENUM32,
      .name   = "type",
      .enums  = desc_v4l2_buf_type,
      .length = sizeof(desc_v4l2_buf_type) / sizeof(char*),
},{
      .type   = ENUM32,
      .name   = "memory",
      .enums  = desc_v4l2_memory,
      .length = sizeof(desc_v4l2_memory) / sizeof(char*),
},{
      /* end of list */
}};

struct struct_desc desc_v4l2_buffer[] = {{
      .type   = UINT32,
      .name   = "index",
},{
      .type   = ENUM32,
      .name   = "type",
      .enums  = desc_v4l2_buf_type,
      .length = sizeof(desc_v4l2_buf_type) / sizeof(char*),
},{
      .type   = UINT32,
      .name   = "bytesused",
},{
      .type   = BITS32,
      .name   = "flags",
      .bits   = bits_buf_flags,
},{
      .type   = ENUM32,
      .name   = "field",
      .enums  = desc_v4l2_field,
      .length = sizeof(desc_v4l2_field) / sizeof(char*),
},{
      .type   = STRUCT,
      .name   = "timestamp",
      .desc   = desc_timeval,
      .length = sizeof(struct timeval),
},{
      .type   = STRUCT,
      .name   = "timecode",
      .desc   = desc_v4l2_timecode,
      .length = sizeof(struct v4l2_timecode),
},{
      .type   = UINT32,
      .name   = "sequence",
},{
      .type   = ENUM32,
      .name   = "memory",
      .enums  = desc_v4l2_memory,
      .length = sizeof(desc_v4l2_memory) / sizeof(char*),
},{
      /* FIXME ... */
      /* end of list */
}};

struct struct_desc desc_v4l2_framebuffer[] = {{
      .type   = BITS32,
      .name   = "capability",
      .bits   = bits_fbuf_cap,
},{
      .type   = BITS32,
      .name   = "flags",
      .bits   = bits_fbuf_flags,
},{
      .type   = PTR,
      .name   = "base",
},{
      .type   = STRUCT,
      .name   = "fmt",
      .desc   = desc_v4l2_pix_format,
      .length = sizeof(struct v4l2_pix_format),
},{
      /* end of list */
}};

struct struct_desc desc_v4l2_clip[] = {{
      .type   = STRUCT,
      .name   = "c",
      .desc   = desc_v4l2_rect,
      .length = sizeof(struct v4l2_rect),
},{
      /* end of list */
}};

struct struct_desc desc_v4l2_window[] = {{
      .type   = STRUCT,
      .name   = "w",
      .desc   = desc_v4l2_rect,
      .length = sizeof(struct v4l2_rect),
},{
      .type   = ENUM32,
      .name   = "field",
      .enums  = desc_v4l2_field,
      .length = sizeof(desc_v4l2_field) / sizeof(char*),
},{
      .type   = UINT32,
      .name   = "chromakey",
},{
      .type   = PTR,
      .name   = "clips",
},{
      .type   = UINT32,
      .name   = "clipcount",
},{
      .type   = PTR,
      .name   = "bitmap",
},{
      /* end of list */
}};

struct struct_desc desc_v4l2_captureparm[] = {{
      .type   = UINT32,
      .name   = "capability",
},{
      .type   = UINT32,
      .name   = "capturemode",
},{
      .type   = STRUCT,
      .name   = "timeperframe",
      .desc   = desc_v4l2_fract,
      .length = sizeof(struct v4l2_fract),
},{
      .type   = UINT32,
      .name   = "extendedmode",
},{
      .type   = UINT32,
      .name   = "readbuffers",
},{
      /* end of list */
}};

struct struct_desc desc_v4l2_outputparm[] = {{
      .type   = UINT32,
      .name   = "capability",
},{
      .type   = UINT32,
      .name   = "outputmode",
},{
      .type   = STRUCT,
      .name   = "timeperframe",
      .desc   = desc_v4l2_fract,
      .length = sizeof(struct v4l2_fract),
},{
      .type   = UINT32,
      .name   = "extendedmode",
},{
      .type   = UINT32,
      .name   = "writebuffers",
},{
      /* end of list */
}};

struct struct_desc desc_v4l2_cropcap[] = {{
      .type   = ENUM32,
      .name   = "type",
      .enums  = desc_v4l2_buf_type,
      .length = sizeof(desc_v4l2_buf_type) / sizeof(char*),
},{
      .type   = STRUCT,
      .name   = "bounds",
      .desc   = desc_v4l2_rect,
      .length = sizeof(struct v4l2_rect),
},{
      .type   = STRUCT,
      .name   = "defrect",
      .desc   = desc_v4l2_rect,
      .length = sizeof(struct v4l2_rect),
},{
      .type   = STRUCT,
      .name   = "pixelaspect",
      .desc   = desc_v4l2_fract,
      .length = sizeof(struct v4l2_fract),
},{
      /* end of list */
}};

struct struct_desc desc_v4l2_crop[] = {{
      .type   = ENUM32,
      .name   = "type",
      .enums  = desc_v4l2_buf_type,
      .length = sizeof(desc_v4l2_buf_type) / sizeof(char*),
},{
      .type   = STRUCT,
      .name   = "c",
      .desc   = desc_v4l2_rect,
      .length = sizeof(struct v4l2_rect),
},{
      /* end of list */
}};

struct struct_desc desc_v4l2_standard[] = {{
      .type   = UINT32,
      .name   = "index",
},{
      .type   = BITS64,
      .name   = "id",
      .bits   = bits_standard,
},{
      .type   = STRING,
      .name   = "name",
      .length = 24,
},{
      .type   = STRUCT,
      .name   = "frameperiod",
      .desc   = desc_v4l2_fract,
      .length = sizeof(struct v4l2_fract),
},{
      .type   = UINT32,
      .name   = "framelines",
},{
      /* end of list */
}};

struct struct_desc desc_v4l2_input[] = {{
      .type   = UINT32,
      .name   = "index",
},{
      .type   = STRING,
      .name   = "name",
      .length = 32,
},{
      .type   = ENUM32,
      .name   = "type",
      .enums  = desc_input_type,
      .length = sizeof(desc_input_type) / sizeof(char*),
},{
      .type   = UINT32,
      .name   = "audioset",
},{
      .type   = UINT32,
      .name   = "tuner",
},{
      .type   = BITS64,
      .name   = "std",
      .bits   = bits_standard
},{
      .type   = BITS32,
      .name   = "status",
      .bits   = bits_input_status,
},{
      /* end of list */
}};

struct struct_desc desc_v4l2_output[] = {{
      .type   = UINT32,
      .name   = "index",
},{
      .type   = STRING,
      .name   = "name",
      .length = 32,
},{
      .type   = UINT32,
      .name   = "type",
},{
      .type   = UINT32,
      .name   = "audioset",
},{
      .type   = UINT32,
      .name   = "modulator",
},{
      .type   = BITS64,
      .name   = "std",
      .bits   = bits_standard
},{
      /* end of list */
}};

struct struct_desc desc_v4l2_control[] = {{
      .type   = UINT32,
      .name   = "id",
},{
      .type   = SINT32,
      .name   = "value",
},{
      /* end of list */
}};

struct struct_desc desc_v4l2_queryctrl[] = {{
      .type   = UINT32,
      .name   = "id",
},{
      .type   = ENUM32,
      .name   = "type",
      .enums  = desc_v4l2_ctrl_type,
      .length = sizeof(desc_v4l2_buf_type) / sizeof(char*),
},{
      .type   = STRING,
      .name   = "name",
      .length = 32,
},{
      .type   = SINT32,
      .name   = "minimum",
},{
      .type   = SINT32,
      .name   = "maximum",
},{
      .type   = SINT32,
      .name   = "step",
},{
      .type   = SINT32,
      .name   = "default_value",
},{
      .type   = UINT32,
      .name   = "flags",
},{
      /* end of list */
}};

struct struct_desc desc_v4l2_querymenu[] = {{
      .type   = UINT32,
      .name   = "id",
},{
      .type   = UINT32,
      .name   = "index",
},{
      .type   = STRING,
      .name   = "name",
      .length = 32,
},{
      .type   = UINT32,
      .name   = "reserved",
},{
      /* end of list */
}};

struct struct_desc desc_v4l2_tuner[] = {{
      .type   = UINT32,
      .name   = "index",
},{
      .type   = STRING,
      .name   = "name",
      .length = 32,
},{
      .type   = ENUM32,
      .name   = "type",
      .enums  = desc_v4l2_tuner_type,
      .length = sizeof(desc_v4l2_tuner_type) / sizeof(char*),
},{
      .type   = BITS32,
      .name   = "capability",
      .bits   = bits_tuner_cap,
},{
      .type   = UINT32,
      .name   = "rangelow",
},{
      .type   = UINT32,
      .name   = "rangehigh",
},{
      .type   = BITS32,
      .name   = "rxsubchans",
      .bits   = bits_tuner_rx,
},{
      .type   = ENUM32,
      .name   = "audmode",
      .enums  = desc_tuner2_mode,
      .length = sizeof(desc_tuner2_mode) / sizeof(char*),
},{
      .type   = SINT32,
      .name   = "signal",
},{
      .type   = SINT32,
      .name   = "afc",
},{
      /* end of list */
}};

struct struct_desc desc_v4l2_modulator[] = {{
      .type   = UINT32,
      .name   = "index",
},{
      .type   = STRING,
      .name   = "name",
      .length = 32,
},{
      .type   = UINT32,
      .name   = "capability",
},{
      .type   = UINT32,
      .name   = "rangelow",
},{
      .type   = UINT32,
      .name   = "rangehigh",
},{
      .type   = UINT32,
      .name   = "txsubchans",
},{
      /* end of list */
}};

struct struct_desc desc_v4l2_frequency[] = {{
      .type   = UINT32,
      .name   = "tuner",
},{
      .type   = ENUM32,
      .name   = "type",
      .enums  = desc_v4l2_tuner_type,
      .length = sizeof(desc_v4l2_tuner_type) / sizeof(char*),
},{
      .type   = UINT32,
      .name   = "frequency",
},{
      /* end of list */
}};

struct struct_desc desc_v4l2_audio[] = {{
      .type   = UINT32,
      .name   = "index",
},{
      .type   = STRING,
      .name   = "name",
      .length = 32,
},{
      .type   = UINT32,
      .name   = "capability",
},{
      .type   = UINT32,
      .name   = "mode",
},{
      /* end of list */
}};

struct struct_desc desc_v4l2_audioout[] = {{
      .type   = UINT32,
      .name   = "index",
},{
      .type   = STRING,
      .name   = "name",
      .length = 32,
},{
      .type   = UINT32,
      .name   = "capability",
},{
      .type   = UINT32,
      .name   = "mode",
},{
      /* end of list */
}};

struct struct_desc desc_v4l2_vbi_format[] = {{
      .type   = UINT32,
      .name   = "sampling_rate",
},{
      .type   = UINT32,
      .name   = "offset",
},{
      .type   = UINT32,
      .name   = "samples_per_line",
},{
      .type   = FOURCC,
      .name   = "sample_format",
},{
      .type   = UINT32,
      .name   = "start[0]",
},{
      .type   = UINT32,
      .name   = "start[1]",
},{
      .type   = UINT32,
      .name   = "count[0]",
},{
      .type   = UINT32,
      .name   = "count[1]",
},{
      .type   = UINT32,
      .name   = "flags",
},{
      /* end of list */
}};

struct struct_desc desc_v4l2_format[] = {{
      .type   = ENUM32,
      .name   = "type",
      .enums  = desc_v4l2_buf_type,
      .length = sizeof(desc_v4l2_buf_type) / sizeof(char*),
},{
      .type   = UNION,
      .name   = "fmt",
      .u = {{
            .value = V4L2_BUF_TYPE_VIDEO_CAPTURE,
            .name  = "pix",
            .desc  = desc_v4l2_pix_format,
      },{
            .value = V4L2_BUF_TYPE_VIDEO_OVERLAY,
            .name  = "win",
            .desc  = desc_v4l2_window,
      },{
            .value = V4L2_BUF_TYPE_VBI_CAPTURE,
            .name  = "vbi",
            .desc  = desc_v4l2_vbi_format,
      },{
            /* end of list */
      }},
},{
      /* end of list */
}};

struct struct_desc desc_v4l2_streamparm[] = {{
      .type   = ENUM32,
      .name   = "type",
      .enums  = desc_v4l2_buf_type,
      .length = sizeof(desc_v4l2_buf_type) / sizeof(char*),
},{
      /* FIXME ... */
      /* end of list */
}};

struct struct_desc desc_v4l2_std_id[] = {{
      .type   = BITS64,
      .name   = "std",
      .bits   = bits_standard,
},{
      /* end of list */
}};

/* ---------------------------------------------------------------------- */

struct ioctl_desc ioctls_v4l2[256] = {
      [_IOC_NR(VIDIOC_QUERYCAP)] = {
            .name = "VIDIOC_QUERYCAP",
            .desc = desc_v4l2_capability,
      },
      [_IOC_NR(VIDIOC_ENUM_FMT)] = {
            .name = "VIDIOC_ENUM_FMT",
            .desc = desc_v4l2_fmtdesc,
      },
      [_IOC_NR(VIDIOC_G_FMT)] = {
            .name = "VIDIOC_G_FMT",
            .desc = desc_v4l2_format,
      },
      [_IOC_NR(VIDIOC_S_FMT)] = {
            .name = "VIDIOC_S_FMT",
            .desc = desc_v4l2_format,
      },
#if 0
      [_IOC_NR(VIDIOC_G_COMP)] = {
            .name = "VIDIOC_G_COMP",
            .desc = desc_v4l2_compression,
      },
      [_IOC_NR(VIDIOC_S_COMP)] = {
            .name = "VIDIOC_S_COMP",
            .desc = desc_v4l2_compression,
      },
#endif
      [_IOC_NR(VIDIOC_REQBUFS)] = {
            .name = "VIDIOC_REQBUFS",
            .desc = desc_v4l2_requestbuffers,
      },
      [_IOC_NR(VIDIOC_QUERYBUF)] = {
            .name = "VIDIOC_QUERYBUF",
            .desc = desc_v4l2_buffer,
      },
      [_IOC_NR(VIDIOC_G_FBUF)] = {
            .name = "VIDIOC_G_FBUF",
            .desc = desc_v4l2_framebuffer,
      },
      [_IOC_NR(VIDIOC_S_FBUF)] = {
            .name = "VIDIOC_S_FBUF",
            .desc = desc_v4l2_framebuffer,
      },
      [_IOC_NR(VIDIOC_OVERLAY)] = {
            .name = "VIDIOC_OVERLAY",
            .desc = desc_int,
      },
      [_IOC_NR(VIDIOC_QBUF)] = {
            .name = "VIDIOC_QBUF",
            .desc = desc_v4l2_buffer,
      },
      [_IOC_NR(VIDIOC_DQBUF)] = {
            .name = "VIDIOC_DQBUF",
            .desc = desc_v4l2_buffer,
      },
      [_IOC_NR(VIDIOC_STREAMON)] = {
            .name = "VIDIOC_STREAMON",
            .desc = desc_int,
      },
      [_IOC_NR(VIDIOC_STREAMOFF)] = {
            .name = "VIDIOC_STREAMOFF",
            .desc = desc_int,
      },
      [_IOC_NR(VIDIOC_G_PARM)] = {
            .name = "VIDIOC_G_PARM",
            .desc = desc_v4l2_streamparm,
      },
      [_IOC_NR(VIDIOC_S_PARM)] = {
            .name = "VIDIOC_S_PARM",
            .desc = desc_v4l2_streamparm,
      },
      [_IOC_NR(VIDIOC_G_STD)] = {
            .name = "VIDIOC_G_STD",
            .desc = desc_v4l2_std_id,
      },
      [_IOC_NR(VIDIOC_S_STD)] = {
            .name = "VIDIOC_S_STD",
            .desc = desc_v4l2_std_id,
      },
      [_IOC_NR(VIDIOC_ENUMSTD)] = {
            .name = "VIDIOC_ENUMSTD",
            .desc = desc_v4l2_standard,
      },
      [_IOC_NR(VIDIOC_ENUMINPUT)] = {
            .name = "VIDIOC_ENUMINPUT",
            .desc = desc_v4l2_input,
      },
      [_IOC_NR(VIDIOC_G_CTRL)] = {
            .name = "VIDIOC_G_CTRL",
            .desc = desc_v4l2_control,
      },
      [_IOC_NR(VIDIOC_S_CTRL)] = {
            .name = "VIDIOC_S_CTRL",
            .desc = desc_v4l2_control,
      },
      [_IOC_NR(VIDIOC_G_TUNER)] = {
            .name = "VIDIOC_G_TUNER",
            .desc = desc_v4l2_tuner,
      },
      [_IOC_NR(VIDIOC_S_TUNER)] = {
            .name = "VIDIOC_S_TUNER",
            .desc = desc_v4l2_tuner,
      },
      [_IOC_NR(VIDIOC_G_AUDIO)] = {
            .name = "VIDIOC_G_AUDIO",
            .desc = desc_v4l2_audio,
      },
      [_IOC_NR(VIDIOC_S_AUDIO)] = {
            .name = "VIDIOC_S_AUDIO",
            .desc = desc_v4l2_audio,
      },
      [_IOC_NR(VIDIOC_QUERYCTRL)] = {
            .name = "VIDIOC_QUERYCTRL",
            .desc = desc_v4l2_queryctrl,
      },
      [_IOC_NR(VIDIOC_QUERYMENU)] = {
            .name = "VIDIOC_QUERYMENU",
            .desc = desc_v4l2_querymenu,
      },
      [_IOC_NR(VIDIOC_G_INPUT)] = {
            .name = "VIDIOC_G_INPUT",
            .desc = desc_int,
      },
      [_IOC_NR(VIDIOC_S_INPUT)] = {
            .name = "VIDIOC_S_INPUT",
            .desc = desc_int,
      },
      [_IOC_NR(VIDIOC_G_OUTPUT)] = {
            .name = "VIDIOC_G_OUTPUT",
            .desc = desc_int,
      },
      [_IOC_NR(VIDIOC_S_OUTPUT)] = {
            .name = "VIDIOC_S_OUTPUT",
            .desc = desc_int,
      },
      [_IOC_NR(VIDIOC_ENUMOUTPUT)] = {
            .name = "VIDIOC_ENUMOUTPUT",
            .desc = desc_v4l2_output,
      },
      [_IOC_NR(VIDIOC_G_AUDOUT)] = {
            .name = "VIDIOC_G_AUDOUT",
            .desc = desc_v4l2_audioout,
      },
      [_IOC_NR(VIDIOC_S_AUDOUT)] = {
            .name = "VIDIOC_S_AUDOUT",
            .desc = desc_v4l2_audioout,
      },
      [_IOC_NR(VIDIOC_G_MODULATOR)] = {
            .name = "VIDIOC_G_MODULATOR",
            .desc = desc_v4l2_modulator,
      },
      [_IOC_NR(VIDIOC_S_MODULATOR)] = {
            .name = "VIDIOC_S_MODULATOR",
            .desc = desc_v4l2_modulator,
      },
      [_IOC_NR(VIDIOC_G_FREQUENCY)] = {
            .name = "VIDIOC_G_FREQUENCY",
            .desc = desc_v4l2_frequency,
      },
      [_IOC_NR(VIDIOC_S_FREQUENCY)] = {
            .name = "VIDIOC_S_FREQUENCY",
            .desc = desc_v4l2_frequency,
      },
      [_IOC_NR(VIDIOC_CROPCAP)] = {
            .name = "VIDIOC_CROPCAP",
            .desc = desc_v4l2_cropcap,
      },
      [_IOC_NR(VIDIOC_G_CROP)] = {
            .name = "VIDIOC_G_CROP",
            .desc = desc_v4l2_crop,
      },
      [_IOC_NR(VIDIOC_S_CROP)] = {
            .name = "VIDIOC_S_CROP",
            .desc = desc_v4l2_crop,
      },
      [_IOC_NR(VIDIOC_G_JPEGCOMP)] = {
            .name = "VIDIOC_G_JPEGCOMP",
            .desc = desc_v4l2_jpegcompression,
      },
      [_IOC_NR(VIDIOC_S_JPEGCOMP)] = {
            .name = "VIDIOC_S_JPEGCOMP",
            .desc = desc_v4l2_jpegcompression,
      },
      [_IOC_NR(VIDIOC_QUERYSTD)] = {
            .name = "VIDIOC_QUERYSTD",
            .desc = desc_v4l2_std_id,
      },
      [_IOC_NR(VIDIOC_TRY_FMT)] = {
            .name = "VIDIOC_TRY_FMT",
            .desc = desc_v4l2_format,
      },
};

/* ---------------------------------------------------------------------- */
/*
 * Local variables:
 * c-basic-offset: 8
 * End:
 */

Generated by  Doxygen 1.6.0   Back to index