]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/media/video/videodev.c
V4L/DVB (5289): Add support for video output overlays.
[karo-tx-linux.git] / drivers / media / video / videodev.c
index 011938fb7e0e6a2c48257bd4e7adc080c23c62d3..5c9f2116d7bf52bbff5db53182a18da50257736f 100644 (file)
@@ -318,6 +318,7 @@ static char *v4l2_type_names_FIXME[] = {
        [V4L2_BUF_TYPE_VBI_OUTPUT]         = "vbi-out",
        [V4L2_BUF_TYPE_SLICED_VBI_OUTPUT]  = "sliced-vbi-out",
        [V4L2_BUF_TYPE_SLICED_VBI_CAPTURE] = "sliced-vbi-capture",
+       [V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY] = "video-out-over",
        [V4L2_BUF_TYPE_PRIVATE]            = "private",
 };
 
@@ -330,6 +331,8 @@ static char *v4l2_field_names_FIXME[] = {
        [V4L2_FIELD_SEQ_TB]     = "seq-tb",
        [V4L2_FIELD_SEQ_BT]     = "seq-bt",
        [V4L2_FIELD_ALTERNATE]  = "alternate",
+       [V4L2_FIELD_INTERLACED_TB] = "interlaced-tb",
+       [V4L2_FIELD_INTERLACED_BT] = "interlaced-bt",
 };
 
 #define prt_names(a,arr) (((a)>=0)&&((a)<ARRAY_SIZE(arr)))?arr[a]:"unknown"
@@ -411,6 +414,10 @@ static int check_fmt (struct video_device *vfd, enum v4l2_buf_type type)
                if (vfd->vidioc_try_fmt_vbi_output)
                        return (0);
                break;
+       case V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY:
+               if (vfd->vidioc_try_fmt_output_overlay)
+                       return (0);
+               break;
        case V4L2_BUF_TYPE_PRIVATE:
                if (vfd->vidioc_try_fmt_type_private)
                        return (0);
@@ -525,6 +532,10 @@ static int __video_do_ioctl(struct inode *inode, struct file *file,
                                ret=vfd->vidioc_enum_fmt_vbi_output(file,
                                                                fh, f);
                        break;
+               case V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY:
+                       if (vfd->vidioc_enum_fmt_output_overlay)
+                               ret=vfd->vidioc_enum_fmt_output_overlay(file, fh, f);
+                       break;
                case V4L2_BUF_TYPE_PRIVATE:
                        if (vfd->vidioc_enum_fmt_type_private)
                                ret=vfd->vidioc_enum_fmt_type_private(file,
@@ -582,6 +593,10 @@ static int __video_do_ioctl(struct inode *inode, struct file *file,
                                ret=vfd->vidioc_g_fmt_video_output(file,
                                                                fh, f);
                        break;
+               case V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY:
+                       if (vfd->vidioc_g_fmt_output_overlay)
+                               ret=vfd->vidioc_g_fmt_output_overlay(file, fh, f);
+                       break;
                case V4L2_BUF_TYPE_VBI_OUTPUT:
                        if (vfd->vidioc_g_fmt_vbi_output)
                                ret=vfd->vidioc_g_fmt_vbi_output(file, fh, f);
@@ -630,6 +645,10 @@ static int __video_do_ioctl(struct inode *inode, struct file *file,
                                ret=vfd->vidioc_s_fmt_video_output(file,
                                                                fh, f);
                        break;
+               case V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY:
+                       if (vfd->vidioc_s_fmt_output_overlay)
+                               ret=vfd->vidioc_s_fmt_output_overlay(file, fh, f);
+                       break;
                case V4L2_BUF_TYPE_VBI_OUTPUT:
                        if (vfd->vidioc_s_fmt_vbi_output)
                                ret=vfd->vidioc_s_fmt_vbi_output(file,
@@ -680,6 +699,10 @@ static int __video_do_ioctl(struct inode *inode, struct file *file,
                                ret=vfd->vidioc_try_fmt_video_output(file,
                                                                fh, f);
                        break;
+               case V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY:
+                       if (vfd->vidioc_try_fmt_output_overlay)
+                               ret=vfd->vidioc_try_fmt_output_overlay(file, fh, f);
+                       break;
                case V4L2_BUF_TYPE_VBI_OUTPUT:
                        if (vfd->vidioc_try_fmt_vbi_output)
                                ret=vfd->vidioc_try_fmt_vbi_output(file,