static int mmap_start(AVFormatContext *ctx)

{

    struct video_data *s = ctx->priv_data;

    enum v4l2_buf_type type;

    int i, res;



    for (i = 0; i < s->buffers; i++) {

        struct v4l2_buffer buf;



        memset(&buf, 0, sizeof(struct v4l2_buffer));

        buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;

        buf.memory = V4L2_MEMORY_MMAP;

        buf.index  = i;



        res = ioctl(s->fd, VIDIOC_QBUF, &buf);

        if (res < 0) {

            av_log(ctx, AV_LOG_ERROR, "ioctl(VIDIOC_QBUF): %s\n",

                   strerror(errno));



            return AVERROR(errno);

        }

    }



    type = V4L2_BUF_TYPE_VIDEO_CAPTURE;

    res = ioctl(s->fd, VIDIOC_STREAMON, &type);

    if (res < 0) {

        av_log(ctx, AV_LOG_ERROR, "ioctl(VIDIOC_STREAMON): %s\n",

               strerror(errno));



        return AVERROR(errno);

    }



    return 0;

}

static int mmap_start(AVFormatContext *ctx)

{

    struct video_data *s = ctx->priv_data;

    enum v4l2_buf_type type;

    int i, res;



    for (i = 0; i < s->buffers; i++) {

        struct v4l2_buffer buf;



        memset(&buf, 0, sizeof(struct v4l2_buffer));

        buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;

        buf.memory = V4L2_MEMORY_MMAP;

        buf.index  = i;



        res = ioctl(s->fd, VIDIOC_QBUF, &buf);

        if (res < 0) {

            av_log(ctx, AV_LOG_ERROR, "ioctl(VIDIOC_QBUF): %s\n",

                   strerror(errno));



            return AVERROR(errno);

        }

    }



    type = V4L2_BUF_TYPE_VIDEO_CAPTURE;

    res = ioctl(s->fd, VIDIOC_STREAMON, &type);

    if (res < 0) {

        av_log(ctx, AV_LOG_ERROR, "ioctl(VIDIOC_STREAMON): %s\n",

               strerror(errno));



        return AVERROR(errno);

    }



    return 0;

}

static int FUNC_0(AVFormatContext *VAR_0)

{

    struct video_data *VAR_1 = VAR_0->priv_data;

    enum v4l2_buf_type VAR_2;

    int VAR_3, VAR_4;



    for (VAR_3 = 0; VAR_3 < VAR_1->buffers; VAR_3++) {

        struct v4l2_buffer VAR_5;



        memset(&VAR_5, 0, sizeof(struct v4l2_buffer));

        VAR_5.VAR_2 = V4L2_BUF_TYPE_VIDEO_CAPTURE;

        VAR_5.memory = V4L2_MEMORY_MMAP;

        VAR_5.index  = VAR_3;



        VAR_4 = ioctl(VAR_1->fd, VIDIOC_QBUF, &VAR_5);

        if (VAR_4 < 0) {

            av_log(VAR_0, AV_LOG_ERROR, "ioctl(VIDIOC_QBUF): %VAR_1\n",

                   strerror(errno));



            return AVERROR(errno);

        }

    }



    VAR_2 = V4L2_BUF_TYPE_VIDEO_CAPTURE;

    VAR_4 = ioctl(VAR_1->fd, VIDIOC_STREAMON, &VAR_2);

    if (VAR_4 < 0) {

        av_log(VAR_0, AV_LOG_ERROR, "ioctl(VIDIOC_STREAMON): %VAR_1\n",

               strerror(errno));



        return AVERROR(errno);

    }



    return 0;

}

static int FUNC_0(AVFormatContext *VAR_0)
{ struct video_data *VAR_1 = VAR_0->priv_data; enum v4l2_buf_type VAR_2; int VAR_3, VAR_4; for (VAR_3 = 0; VAR_3 < VAR_1->buffers; VAR_3++) { struct v4l2_buffer VAR_5; memset(&VAR_5, 0, sizeof(struct v4l2_buffer)); VAR_5.VAR_2 = V4L2_BUF_TYPE_VIDEO_CAPTURE; VAR_5.memory = V4L2_MEMORY_MMAP; VAR_5.index  = VAR_3; VAR_4 = ioctl(VAR_1->fd, VIDIOC_QBUF, &VAR_5); if (VAR_4 < 0) { av_log(VAR_0, AV_LOG_ERROR, "ioctl(VIDIOC_QBUF): %VAR_1\n",
strerror(errno)); return AVERROR(errno); } } VAR_2 = V4L2_BUF_TYPE_VIDEO_CAPTURE; VAR_4 = ioctl(VAR_1->fd, VIDIOC_STREAMON, &VAR_2); if (VAR_4 < 0) { av_log(VAR_0, AV_LOG_ERROR, "ioctl(VIDIOC_STREAMON): %VAR_1\n",
strerror(errno)); return AVERROR(errno); } return 0; }