--- /usr/include/linux/videodev2.h 2011-04-21 00:30:06.000000000 +0100
+++ ../bindings-linux-videodev2/Bindings/Linux/videodev2.h 2011-07-03 14:35:44.000000000 +0100
@@ -396,16 +396,15 @@
__u32 step_height; /* Frame height step size [pixel] */
};
+union v4l2_frmsizeenum_u { /* Frame size */
+ struct v4l2_frmsize_discrete discrete;
+ struct v4l2_frmsize_stepwise stepwise;
+};
struct v4l2_frmsizeenum {
__u32 index; /* Frame size number */
__u32 pixel_format; /* Pixel format */
__u32 type; /* Frame size type the device supports. */
-
- union { /* Frame size */
- struct v4l2_frmsize_discrete discrete;
- struct v4l2_frmsize_stepwise stepwise;
- };
-
+ union v4l2_frmsizeenum_u u;
__u32 reserved[2]; /* Reserved space for future use */
};
@@ -424,18 +423,17 @@
struct v4l2_fract step; /* Frame interval step size [s] */
};
+union v4l2_frmivalenum_u { /* Frame interval */
+ struct v4l2_fract discrete;
+ struct v4l2_frmival_stepwise stepwise;
+};
struct v4l2_frmivalenum {
__u32 index; /* Frame format index */
__u32 pixel_format; /* Pixel format */
__u32 width; /* Frame width */
__u32 height; /* Frame height */
__u32 type; /* Frame interval type the device supports. */
-
- union { /* Frame interval */
- struct v4l2_fract discrete;
- struct v4l2_frmival_stepwise stepwise;
- };
-
+ union v4l2_frmivalenum_u u;
__u32 reserved[2]; /* Reserved space for future use */
};
#endif
@@ -488,6 +486,7 @@
* The presence of the APP and COM marker
* is influenced by APP_len and COM_len
* ONLY, not by this property! */
+};
#define V4L2_JPEG_MARKER_DHT (1<<3) /* Define Huffman Tables */
#define V4L2_JPEG_MARKER_DQT (1<<4) /* Define Quantization Tables */
@@ -495,7 +494,6 @@
#define V4L2_JPEG_MARKER_COM (1<<6) /* Comment segment */
#define V4L2_JPEG_MARKER_APP (1<<7) /* App segment, driver will
* allways use APP0 */
-};
/*
* M E M O R Y - M A P P I N G B U F F E R S
@@ -507,6 +505,10 @@
__u32 reserved[2];
};
+union v4l2_buffer_u {
+ __u32 offset;
+ unsigned long userptr;
+};
struct v4l2_buffer {
__u32 index;
enum v4l2_buf_type type;
@@ -519,10 +521,7 @@
/* memory location */
enum v4l2_memory memory;
- union {
- __u32 offset;
- unsigned long userptr;
- } m;
+ union v4l2_buffer_u u;
__u32 length;
__u32 input;
__u32 reserved;
@@ -789,15 +788,16 @@
__s32 value;
};
+union v4l2_ext_control_u {
+ __s32 value;
+ __s64 value64;
+ char *string;
+} __attribute__ ((packed));
struct v4l2_ext_control {
__u32 id;
__u32 size;
__u32 reserved2[1];
- union {
- __s32 value;
- __s64 value64;
- char *string;
- };
+ union v4l2_ext_control_u u;
} __attribute__ ((packed));
struct v4l2_ext_controls {
@@ -1336,14 +1336,16 @@
/* Flags for V4L2_ENC_CMD_STOP */
#define V4L2_ENC_CMD_STOP_AT_GOP_END (1 << 0)
+struct v4l2_encoder_cmd_u_s {
+ __u32 data[8];
+};
+union v4l2_encoder_cmd_u {
+ struct v4l2_encoder_cmd_u_s raw;
+};
struct v4l2_encoder_cmd {
__u32 cmd;
__u32 flags;
- union {
- struct {
- __u32 data[8];
- } raw;
- };
+ union v4l2_encoder_cmd_u u;
};
#endif
@@ -1460,12 +1462,13 @@
#define V4L2_MPEG_VBI_IVTV_MAGIC0 "itv0"
#define V4L2_MPEG_VBI_IVTV_MAGIC1 "ITV0"
-struct v4l2_mpeg_vbi_fmt_ivtv {
- __u8 magic[4];
- union {
+union v4l2_mpeg_vbi_fmt_ivtv_u {
struct v4l2_mpeg_vbi_itv0 itv0;
struct v4l2_mpeg_vbi_ITV0 ITV0;
- };
+} __attribute__ ((packed));
+struct v4l2_mpeg_vbi_fmt_ivtv {
+ __u8 magic[4];
+ union v4l2_mpeg_vbi_fmt_ivtv_u u;
} __attribute__ ((packed));
/*
@@ -1474,27 +1477,30 @@
/* Stream data format
*/
-struct v4l2_format {
- enum v4l2_buf_type type;
- union {
+union v4l2_format_u {
struct v4l2_pix_format pix; /* V4L2_BUF_TYPE_VIDEO_CAPTURE */
struct v4l2_window win; /* V4L2_BUF_TYPE_VIDEO_OVERLAY */
struct v4l2_vbi_format vbi; /* V4L2_BUF_TYPE_VBI_CAPTURE */
struct v4l2_sliced_vbi_format sliced; /* V4L2_BUF_TYPE_SLICED_VBI_CAPTURE */
__u8 raw_data[200]; /* user-defined */
- } fmt;
+};
+
+struct v4l2_format {
+ enum v4l2_buf_type type;
+ union v4l2_format_u fmt;
};
/* Stream type-dependent parameters
*/
-struct v4l2_streamparm {
- enum v4l2_buf_type type;
- union {
+union v4l2_streamparm_u {
struct v4l2_captureparm capture;
struct v4l2_outputparm output;
__u8 raw_data[200]; /* user-defined */
- } parm;
+};
+struct v4l2_streamparm {
+ enum v4l2_buf_type type;
+ union v4l2_streamparm_u parm;
};
/*
@@ -1511,12 +1517,13 @@
#define V4L2_CHIP_MATCH_I2C_ADDR 2 /* Match against I2C 7-bit address */
#define V4L2_CHIP_MATCH_AC97 3 /* Match against anciliary AC97 chip */
-struct v4l2_dbg_match {
- __u32 type; /* Match type */
- union { /* Match this chip, meaning determined by type */
+union v4l2_dbg_match_u { /* Match this chip, meaning determined by type */
__u32 addr;
char name[32];
- };
+} __attribute__ ((packed));
+struct v4l2_dbg_match {
+ __u32 type; /* Match type */
+ union v4l2_dbg_match_u u;
} __attribute__ ((packed));
struct v4l2_dbg_register {