参照元

説明

引数

返り値

参考

実装

static int uvc_register_video(struct uvc_device *dev,
                struct uvc_streaming *stream)
{
        struct video_device *vdev = &stream->vdev;
        int ret;
        /* Initialize the video buffers queue. */
        ret = uvc_queue_init(&stream->queue, stream->type, !uvc_no_drop_param);
        if (ret)
                return ret;
        /* Initialize the streaming interface with default streaming
         * parameters.
         */
        ret = uvc_video_init(stream);
        if (ret < 0) {
                uvc_printk(KERN_ERR, "Failed to initialize the device "
                        "(%d).\n", ret);
                return ret;
        }
        uvc_debugfs_init_stream(stream);
        /* Register the device with V4L. */

        /* We already hold a reference to dev->udev. The video device will be
         * unregistered before the reference is released, so we don't need to
         * get another one.
         */
        vdev->v4l2_dev = &dev->vdev;
        vdev->fops = &uvc_fops;
        vdev->ioctl_ops = &uvc_ioctl_ops;
        vdev->release = uvc_release;
        vdev->prio = &stream->chain->prio;
        if (stream->type == V4L2_BUF_TYPE_VIDEO_OUTPUT)
                vdev->vfl_dir = VFL_DIR_TX;
        strlcpy(vdev->name, dev->name, sizeof vdev->name);
        /* Set the driver data before calling video_register_device, otherwise
         * uvc_v4l2_open might race us.
         */
        video_set_drvdata(vdev, stream);
        ret = video_register_device(vdev, VFL_TYPE_GRABBER, -1);
        if (ret < 0) {
                uvc_printk(KERN_ERR, "Failed to register video device (%d).\n",
                           ret);
                return ret;
        }
        if (stream->type == V4L2_BUF_TYPE_VIDEO_CAPTURE)
                stream->chain->caps |= V4L2_CAP_VIDEO_CAPTURE;
        else
                stream->chain->caps |= V4L2_CAP_VIDEO_OUTPUT;

        atomic_inc(&dev->nstreams);
        return 0;
}

コメント


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-02-09 (火) 19:13:36