fsizes
struct v4l2_frmsizeenum fsizes;
memset(&fsizes, 0, sizeof(struct v4l2_frmsizeenum));
fsizes.index = 0;
fsizes.pixel_format = pixelformat;
while ((r = ioctl(fd, VIDIOC_ENUM_FRAMESIZES, &fsizes)) == 0) {
if (fsizes.type == V4L2_FRMSIZE_TYPE_DISCRETE) {
fsizes.discrete.width,
fsizes.discrete.height);
dev_fmts[index].s[fsizes.index].width =
fsizes.discrete.width;
dev_fmts[index].s[fsizes.index].height =
fsizes.discrete.height;
fsizes.index++;
utvfu_enum_fsizes(void *v, struct v4l2_frmsizeenum *fsizes)
if (fsizes->pixel_format != V4L2_PIX_FMT_YUYV)
if (fsizes->index >= 1)
fsizes->type = V4L2_FRMSIZE_TYPE_DISCRETE;
fsizes->discrete.width = utvfu_norm_params[sc->sc_normi].cap_width;
fsizes->discrete.height = utvfu_norm_params[sc->sc_normi].cap_height;
uvideo_enum_fsizes(void *v, struct v4l2_frmsizeenum *fsizes)
if (sc->sc_fmtgrp[idx].pixelformat == fsizes->pixel_format) {
if (fsizes->index >= sc->sc_fmtgrp[idx].frame_num)
fsizes->type = V4L2_FRMSIZE_TYPE_DISCRETE;
frame = sc->sc_fmtgrp[idx].frame[fsizes->index];
fsizes->discrete.width = UGETW(UVIDEO_FRAME_FIELD(frame, wWidth));
fsizes->discrete.height = UGETW(UVIDEO_FRAME_FIELD(frame, wHeight));
struct fsizes *fsz_next;
} *fsizes;
struct fsizes *fp;
for (fp = fsizes; fp; fp = fp->fsz_next) {
struct fsizes *fp, **fsp;
for (fsp = &fsizes; (fp = *fsp); fsp = &fp->fsz_next) {
if (!(fp = (struct fsizes *)
malloc(sizeof(struct fsizes)))) {
for (fp = fsizes; fp; fp = fp->fsz_next) {