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

struct-v4l.c

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

#include "videodev.h"

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

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

char *bits_vid_cap[32] = {
      "CAPTURE",
      "TUNER",
      "TELETEXT",
      "OVERLAY",
      "CHROMAKEY",
      "CLIPPING",
      "FRAMERAM",
      "SCALES",
      "MONOCHROME",
      "SUBCAPTURE",
      "MPEG_DECODER",
      "MPEG_ENCODER",
      "MJPEG_DECODER",
      "MJPEG_ENCODER",
};

char *bits_chan_flags[32] = {
      "TUNER",
      "AUDIO",
};

char *desc_chan_type[] = {
      [ VIDEO_TYPE_TV     ] = "TV",
      [ VIDEO_TYPE_CAMERA ] = "CAMERA",
};

char *bits_tuner_flags[32] = {
      "PAL",
      "NTSC",
      "SECAM",
      "LOW",
      "NORM",
      "?",
      "?",
      "STEREO_ON",
      "RDS_ON",
      "MBS_ON",
};

char *desc_tuner_mode[] = {
      [ VIDEO_MODE_PAL ]   = "PAL",
      [ VIDEO_MODE_NTSC ]  = "NTSC",
      [ VIDEO_MODE_SECAM ] = "SECAM",
      [ VIDEO_MODE_AUTO ]  = "AUTO",
};

char *desc_pict_palette[] = {
      [ VIDEO_PALETTE_GREY ]    = "GREY",
      [ VIDEO_PALETTE_HI240 ]   = "HI240",
      [ VIDEO_PALETTE_RGB565 ]  = "RGB565",
      [ VIDEO_PALETTE_RGB24 ]   = "RGB24",
      [ VIDEO_PALETTE_RGB32 ]   = "RGB32",
      [ VIDEO_PALETTE_RGB555 ]  = "RGB555",
      [ VIDEO_PALETTE_YUV422 ]  = "YUV422",
      [ VIDEO_PALETTE_YUYV ]    = "YUYV",
      [ VIDEO_PALETTE_UYVY ]    = "UYVY",
      [ VIDEO_PALETTE_YUV420 ]  = "YUV420",
      [ VIDEO_PALETTE_YUV411 ]  = "YUV411",
      [ VIDEO_PALETTE_RAW ]     = "RAW",
      [ VIDEO_PALETTE_YUV422P ] = "YUV422P",
      [ VIDEO_PALETTE_YUV411P ] = "YUV411P",
      [ VIDEO_PALETTE_YUV420P ] = "YUV420P",
      [ VIDEO_PALETTE_YUV410P ] = "YUV410P",
};

char *bits_audio_flags[32] = {
      "MUTE",
      "MUTABLE",
      "VOLUME",
      "BASS",
      "TREBLE",
      "BALANCE",
};

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

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

struct struct_desc desc_video_capability[] = {{
      .type   = STRING,
      .name   = "name",
      .length = 32,
},{
      .type   = BITS32,
      .name   = "type",
      .bits   = bits_vid_cap,
},{
      .type   = SINT32,
      .name   = "channels",
},{
      .type   = SINT32,
      .name   = "audios",
},{
      .type   = SINT32,
      .name   = "maxwidth",
},{
      .type   = SINT32,
      .name   = "maxheight",
},{
      .type   = SINT32,
      .name   = "minwidth",
},{
      .type   = SINT32,
      .name   = "minheight",
},{
      /* end of list */
}};

struct struct_desc desc_video_channel[] = {{
      .type   = SINT32,
      .name   = "channel",
},{
      .type   = STRING,
      .name   = "name",
      .length = 32,
},{
      .type   = SINT32,
      .name   = "tuners",
},{
      .type   = BITS32,
      .name   = "flags",
      .bits   = bits_chan_flags
},{
      .type   = ENUM16,
      .name   = "type",
      .enums  = desc_chan_type,
      .length = sizeof(desc_chan_type) / sizeof(char*),
},{
      .type   = UINT16,
      .name   = "norm",
},{
      /* end of list */
}};

struct struct_desc desc_video_tuner[] = {{
      .type   = SINT32,
      .name   = "tuner",
},{
      .type   = STRING,
      .name   = "name",
      .length = 32,
},{
      .type   = UINT32,
      .name   = "rangelow",
},{
      .type   = UINT32,
      .name   = "rangehigh",
},{
      .type   = BITS32,
      .name   = "flags",
      .bits   = bits_tuner_flags,
},{
      .type   = ENUM16,
      .name   = "mode",
      .enums  = desc_tuner_mode,
      .length = sizeof(desc_tuner_mode) / sizeof(char*),
},{
      .type   = UINT16,
      .name   = "signal",
},{
      /* end of list */
}};

struct struct_desc desc_video_picture[] = {{
      .type   = UINT16,
      .name   = "brightness",
},{
      .type   = UINT16,
      .name   = "hue",
},{
      .type   = UINT16,
      .name   = "colour",
},{
      .type   = UINT16,
      .name   = "contrast",
},{
      .type   = UINT16,
      .name   = "whiteness",
},{
      .type   = UINT16,
      .name   = "depth",
},{
      .type   = ENUM16,
      .name   = "palette",
      .enums  = desc_pict_palette,
      .length = sizeof(desc_pict_palette) / sizeof(char*),
},{
      /* end of list */
}};

struct struct_desc desc_video_audio[] = {{
      .type   = SINT32,
      .name   = "audio",
},{
      .type   = UINT16,
      .name   = "volume",
},{
      .type   = UINT16,
      .name   = "bass",
},{
      .type   = UINT16,
      .name   = "treble",
},{
      .type   = PADDING,
      .length = 2,
},{
      .type   = BITS32,
      .name   = "flags",
      .bits   = bits_audio_flags,
},{
      .type   = STRING,
      .name   = "name",
      .length = 16,
},{
      .type   = BITS16,
      .name   = "mode",
      .bits   = bits_audio_mode,
},{
      .type   = UINT16,
      .name   = "balance",
},{
      .type   = UINT16,
      .name   = "step",
},{
      /* end of list */
}};

struct struct_desc desc_video_window[] = {{
      .type   = UINT32,
      .name   = "x",
},{
      .type   = UINT32,
      .name   = "y",
},{
      .type   = UINT32,
      .name   = "width",
},{
      .type   = UINT32,
      .name   = "height",
},{
      .type   = UINT32,
      .name   = "chromakey",
},{
      .type   = UINT32,
      .name   = "flags",
},{
      /* end of list */
}};

struct struct_desc desc_video_buffer[] = {{
      .type   = PTR,
      .name   = "base",
},{
      .type   = SINT32,
      .name   = "height",
},{
      .type   = SINT32,
      .name   = "width",
},{
      .type   = SINT32,
      .name   = "depth",
},{
      .type   = SINT32,
      .name   = "bytesperline",
},{
      /* end of list */
}};

struct struct_desc desc_video_mmap[] = {{
      .type   = UINT32,
      .name   = "frame",
},{
      .type   = SINT32,
      .name   = "height",
},{
      .type   = SINT32,
      .name   = "width",
},{
      .type   = UINT32,
      .name   = "format",
},{
      /* end of list */
}};

struct struct_desc desc_video_mbuf[] = {{
      .type   = SINT32,
      .name   = "size",
},{
      .type   = SINT32,
      .name   = "frames",
},{
      .type   = SINT32,
      .name   = "offsets",
        /* FIXME len=32 */
},{
      /* end of list */
}};

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

struct ioctl_desc ioctls_v4l1[256] = {
      [_IOC_NR(VIDIOCGCAP)] = {
            .name = "VIDIOCGCAP",
            .desc = desc_video_capability,
      },
      [_IOC_NR(VIDIOCGCHAN)] = {
            .name = "VIDIOCGCHAN",
            .desc = desc_video_channel,
      },
      [_IOC_NR(VIDIOCSCHAN)] = {
            .name = "VIDIOCSCHAN",
            .desc = desc_video_channel,
      },
      [_IOC_NR(VIDIOCGTUNER)] = {
            .name = "VIDIOCGTUNER",
            .desc = desc_video_tuner,
      },
      [_IOC_NR(VIDIOCSTUNER)] = {
            .name = "VIDIOCSTUNER",
            .desc = desc_video_tuner,
      },
      [_IOC_NR(VIDIOCGPICT)] = {
            .name = "VIDIOCGPICT",
            .desc = desc_video_picture,
      },
      [_IOC_NR(VIDIOCSPICT)] = {
            .name = "VIDIOCSPICT",
            .desc = desc_video_picture,
      },
      [_IOC_NR(VIDIOCCAPTURE)] = {
            .name = "VIDIOCCAPTURE",
            .desc = desc_int,
      },
      [_IOC_NR(VIDIOCGWIN)] = {
            .name = "VIDIOCGWIN",
            .desc = desc_video_window,
      },
      [_IOC_NR(VIDIOCSWIN)] = {
            .name = "VIDIOCSWIN",
            .desc = desc_video_window,
      },
      [_IOC_NR(VIDIOCGFBUF)] = {
            .name = "VIDIOCGFBUF",
            .desc = desc_video_buffer,
      },
      [_IOC_NR(VIDIOCSFBUF)] = {
            .name = "VIDIOCSFBUF",
            .desc = desc_video_buffer,
      },
      [_IOC_NR(VIDIOCKEY)] = {
            .name = "VIDIOCKEY",
//          .desc = desc_video_key,
      },
      [_IOC_NR(VIDIOCGFREQ)] = {
            .name = "VIDIOCGFREQ",
            .desc = desc_long,
      },
      [_IOC_NR(VIDIOCSFREQ)] = {
            .name = "VIDIOCSFREQ",
            .desc = desc_long,
      },
      [_IOC_NR(VIDIOCGAUDIO)] = {
            .name = "VIDIOCGAUDIO",
            .desc = desc_video_audio,
      },
      [_IOC_NR(VIDIOCSAUDIO)] = {
            .name = "VIDIOCSAUDIO",
            .desc = desc_video_audio,
      },
      [_IOC_NR(VIDIOCSYNC)] = {
            .name = "VIDIOCSYNC",
            .desc = desc_int,
      },
      [_IOC_NR(VIDIOCMCAPTURE)] = {
            .name = "VIDIOCMCAPTURE",
            .desc = desc_video_mmap,
      },
      [_IOC_NR(VIDIOCGMBUF)] = {
            .name = "VIDIOCGMBUF",
            .desc = desc_video_mbuf,
      },
      [_IOC_NR(VIDIOCGUNIT)] = {
            .name = "VIDIOCGUNIT",
//          .desc = desc_video_unit,
      },
      [_IOC_NR(VIDIOCGCAPTURE)] = {
            .name = "VIDIOCGCAPTURE",
//          .desc = desc_video_capture,
      },
      [_IOC_NR(VIDIOCSCAPTURE)] = {
            .name = "VIDIOCSCAPTURE",
//          .desc = desc_video_capture,
      },
      [_IOC_NR(VIDIOCSPLAYMODE)] = {
            .name = "VIDIOCSPLAYMODE",
//          .desc = desc_video_play_mode,
      },
      [_IOC_NR(VIDIOCSWRITEMODE)] = {
            .name = "VIDIOCSWRITEMODE",
            .desc = desc_int,
      },
      [_IOC_NR(VIDIOCGPLAYINFO)] = {
            .name = "VIDIOCGPLAYINFO",
//          .desc = desc_video_info,
      },
      [_IOC_NR(VIDIOCSMICROCODE)] = {
            .name = "VIDIOCSMICROCODE",
//          .desc = desc_video_code,
      },
      [_IOC_NR(VIDIOCGVBIFMT)] = {
            .name = "VIDIOCGVBIFMT",
//          .desc = desc_vbi_format,
      },
      [_IOC_NR(VIDIOCSVBIFMT)] = {
            .name = "VIDIOCSVBIFMT",
//          .desc = desc_vbi_format,
      },
};

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

Generated by  Doxygen 1.6.0   Back to index