#include <inttypes.h>
typedef uint32_t mpers_ptr_t;
typedef
struct {
uint32_t type;
union {
struct {
uint32_t width;
uint32_t height;
uint32_t pixelformat;
uint32_t field;
uint32_t bytesperline;
uint32_t sizeimage;
uint32_t colorspace;
uint32_t priv;
} ATTRIBUTE_PACKED pix;
struct {
uint32_t width;
uint32_t height;
uint32_t pixelformat;
uint32_t field;
uint32_t colorspace;
struct {
uint32_t sizeimage;
uint16_t bytesperline;
uint16_t reserved[7];
} ATTRIBUTE_PACKED plane_fmt[8];
unsigned char num_planes;
unsigned char reserved[11];
} ATTRIBUTE_PACKED pix_mp;
struct {
struct {
int32_t left;
int32_t top;
int32_t width;
int32_t height;
} ATTRIBUTE_PACKED w;
uint32_t field;
uint32_t chromakey;
mpers_ptr_t clips;
uint32_t clipcount;
mpers_ptr_t bitmap;
unsigned char global_alpha;
unsigned char mpers_end_filler_1[3];
} ATTRIBUTE_PACKED win;
struct {
uint32_t sampling_rate;
uint32_t offset;
uint32_t samples_per_line;
uint32_t sample_format;
int32_t start[2];
uint32_t count[2];
uint32_t flags;
uint32_t reserved[2];
} ATTRIBUTE_PACKED vbi;
struct {
uint16_t service_set;
uint16_t service_lines[2][24];
unsigned char mpers_filler_2[2];
uint32_t io_size;
uint32_t reserved[2];
} ATTRIBUTE_PACKED sliced;
unsigned char raw_data[200];
} fmt;
} ATTRIBUTE_PACKED mx32_struct_v4l2_format;
#define MPERS_mx32_struct_v4l2_format mx32_struct_v4l2_format
