.. code-block:: c
 
-       err = video_register_device(vdev, VFL_TYPE_GRABBER, -1);
+       err = video_register_device(vdev, VFL_TYPE_VIDEO, -1);
        if (err) {
                video_device_release(vdev); /* or kfree(my_vdev); */
                return err;
 ========================== ====================         ==============================
 :c:type:`vfl_devnode_type` Device name          Usage
 ========================== ====================         ==============================
-``VFL_TYPE_GRABBER``       ``/dev/videoX``       for video input/output devices
+``VFL_TYPE_VIDEO``         ``/dev/videoX``       for video input/output devices
 ``VFL_TYPE_VBI``           ``/dev/vbiX``         for vertical blank data (i.e.
                                                 closed captions, teletext)
 ``VFL_TYPE_RADIO``         ``/dev/radioX``       for radio tuners
 
 
 接下来你需要注册视频设备:这会为你创建一个字符设备。
 
-       err = video_register_device(vdev, VFL_TYPE_GRABBER, -1);
+       err = video_register_device(vdev, VFL_TYPE_VIDEO, -1);
        if (err) {
                video_device_release(vdev); /* or kfree(my_vdev); */
                return err;
 
 注册哪种设备是根据类型(type)参数。存在以下类型:
 
-VFL_TYPE_GRABBER: 用于视频输入/输出设备的 videoX
+VFL_TYPE_VIDEO: 用于视频输入/输出设备的 videoX
 VFL_TYPE_VBI: 用于垂直消隐数据的 vbiX (例如,隐藏式字幕,图文电视)
 VFL_TYPE_RADIO: 用于广播调谐器的 radioX
 
 
                              V4L2_CAP_META_OUTPUT;
        DECLARE_BITMAP(valid_ioctls, BASE_VIDIOC_PRIVATE);
        const struct v4l2_ioctl_ops *ops = vdev->ioctl_ops;
-       bool is_vid = vdev->vfl_type == VFL_TYPE_GRABBER &&
+       bool is_vid = vdev->vfl_type == VFL_TYPE_VIDEO &&
                      (vdev->device_caps & vid_caps);
        bool is_vbi = vdev->vfl_type == VFL_TYPE_VBI;
        bool is_radio = vdev->vfl_type == VFL_TYPE_RADIO;
        bool is_sdr = vdev->vfl_type == VFL_TYPE_SDR;
        bool is_tch = vdev->vfl_type == VFL_TYPE_TOUCH;
-       bool is_meta = vdev->vfl_type == VFL_TYPE_GRABBER &&
+       bool is_meta = vdev->vfl_type == VFL_TYPE_VIDEO &&
                       (vdev->device_caps & meta_caps);
        bool is_rx = vdev->vfl_dir != VFL_DIR_TX;
        bool is_tx = vdev->vfl_dir != VFL_DIR_RX;
        vdev->entity.function = MEDIA_ENT_F_UNKNOWN;
 
        switch (vdev->vfl_type) {
-       case VFL_TYPE_GRABBER:
+       case VFL_TYPE_VIDEO:
                intf_type = MEDIA_INTF_T_V4L_VIDEO;
                vdev->entity.function = MEDIA_ENT_F_IO_V4L;
                break;
 
        /* Part 1: check device type */
        switch (type) {
-       case VFL_TYPE_GRABBER:
+       case VFL_TYPE_VIDEO:
                name_base = "video";
                break;
        case VFL_TYPE_VBI:
         * of 128-191 and just pick the first free minor there
         * (new style). */
        switch (type) {
-       case VFL_TYPE_GRABBER:
+       case VFL_TYPE_VIDEO:
                minor_offset = 0;
                minor_cnt = 64;
                break;
 
                              V4L2_CAP_META_OUTPUT;
        struct video_device *vfd = video_devdata(file);
        const struct v4l2_ioctl_ops *ops = vfd->ioctl_ops;
-       bool is_vid = vfd->vfl_type == VFL_TYPE_GRABBER &&
+       bool is_vid = vfd->vfl_type == VFL_TYPE_VIDEO &&
                      (vfd->device_caps & vid_caps);
        bool is_vbi = vfd->vfl_type == VFL_TYPE_VBI;
        bool is_sdr = vfd->vfl_type == VFL_TYPE_SDR;
        bool is_tch = vfd->vfl_type == VFL_TYPE_TOUCH;
-       bool is_meta = vfd->vfl_type == VFL_TYPE_GRABBER &&
+       bool is_meta = vfd->vfl_type == VFL_TYPE_VIDEO &&
                       (vfd->device_caps & meta_caps);
        bool is_rx = vfd->vfl_dir != VFL_DIR_TX;
        bool is_tx = vfd->vfl_dir != VFL_DIR_RX;
 
 /**
  * enum vfl_devnode_type - type of V4L2 device node
  *
- * @VFL_TYPE_GRABBER:  for video input/output devices
+ * @VFL_TYPE_VIDEO:    for video input/output devices
+ * @VFL_TYPE_GRABBER:  deprecated, same as VFL_TYPE_VIDEO
  * @VFL_TYPE_VBI:      for vertical blank data (i.e. closed captions, teletext)
  * @VFL_TYPE_RADIO:    for radio tuners
  * @VFL_TYPE_SUBDEV:   for V4L2 subdevices
  * @VFL_TYPE_MAX:      number of VFL types, must always be last in the enum
  */
 enum vfl_devnode_type {
-       VFL_TYPE_GRABBER        = 0,
+       VFL_TYPE_VIDEO,
+       VFL_TYPE_GRABBER = VFL_TYPE_VIDEO,
        VFL_TYPE_VBI,
        VFL_TYPE_RADIO,
        VFL_TYPE_SUBDEV,
 
        vdev->tvnorms = SKEL_TVNORMS;
        video_set_drvdata(vdev, skel);
 
-       ret = video_register_device(vdev, VFL_TYPE_GRABBER, -1);
+       ret = video_register_device(vdev, VFL_TYPE_VIDEO, -1);
        if (ret)
                goto free_hdl;