struct ivtv *itv;               /* for ease of use */
        const char *name;               /* name of the stream */
        int type;                       /* stream type */
-       u32 caps;                       /* V4L2 capabilities */
 
        struct v4l2_fh *fh;             /* pointer to the streaming filehandle */
        spinlock_t qlock;               /* locks access to the queues */
 
        struct ivtv_stream *s = &itv->streams[fh2id(fh)->type];
        struct v4l2_window *winfmt = &fmt->fmt.win;
 
-       if (!(s->caps & V4L2_CAP_VIDEO_OUTPUT_OVERLAY))
+       if (!(s->vdev.device_caps & V4L2_CAP_VIDEO_OUTPUT_OVERLAY))
                return -EINVAL;
        if (!itv->osd_video_pbase)
                return -EINVAL;
        u32 chromakey = fmt->fmt.win.chromakey;
        u8 global_alpha = fmt->fmt.win.global_alpha;
 
-       if (!(s->caps & V4L2_CAP_VIDEO_OUTPUT_OVERLAY))
+       if (!(s->vdev.device_caps & V4L2_CAP_VIDEO_OUTPUT_OVERLAY))
                return -EINVAL;
        if (!itv->osd_video_pbase)
                return -EINVAL;
                0,
        };
 
-       if (!(s->caps & V4L2_CAP_VIDEO_OUTPUT_OVERLAY))
+       if (!(s->vdev.device_caps & V4L2_CAP_VIDEO_OUTPUT_OVERLAY))
                return -ENOTTY;
        if (!itv->osd_video_pbase)
                return -ENOTTY;
        struct ivtv_stream *s = &itv->streams[fh2id(fh)->type];
        struct yuv_playback_info *yi = &itv->yuv_info;
 
-       if (!(s->caps & V4L2_CAP_VIDEO_OUTPUT_OVERLAY))
+       if (!(s->vdev.device_caps & V4L2_CAP_VIDEO_OUTPUT_OVERLAY))
                return -ENOTTY;
        if (!itv->osd_video_pbase)
                return -ENOTTY;
        struct ivtv *itv = id->itv;
        struct ivtv_stream *s = &itv->streams[fh2id(fh)->type];
 
-       if (!(s->caps & V4L2_CAP_VIDEO_OUTPUT_OVERLAY))
+       if (!(s->vdev.device_caps & V4L2_CAP_VIDEO_OUTPUT_OVERLAY))
                return -ENOTTY;
        if (!itv->osd_video_pbase)
                return -ENOTTY;
 
        s->itv = itv;
        s->type = type;
        s->name = ivtv_stream_info[type].name;
-       s->caps = ivtv_stream_info[type].v4l2_caps;
+       s->vdev.device_caps = ivtv_stream_info[type].v4l2_caps;
 
        if (ivtv_stream_info[type].pio)
                s->dma = DMA_NONE;
                if (s_mpg->vdev.v4l2_dev)
                        num = s_mpg->vdev.num + ivtv_stream_info[type].num_offset;
        }
-       s->vdev.device_caps = s->caps;
-       if (itv->osd_video_pbase) {
-               itv->streams[IVTV_DEC_STREAM_TYPE_YUV].vdev.device_caps |=
-                       V4L2_CAP_VIDEO_OUTPUT_OVERLAY;
-               itv->streams[IVTV_DEC_STREAM_TYPE_MPG].vdev.device_caps |=
-                       V4L2_CAP_VIDEO_OUTPUT_OVERLAY;
+       if (itv->osd_video_pbase && (type == IVTV_DEC_STREAM_TYPE_YUV ||
+                                    type == IVTV_DEC_STREAM_TYPE_MPG)) {
+               s->vdev.device_caps |= V4L2_CAP_VIDEO_OUTPUT_OVERLAY;
                itv->v4l2_cap |= V4L2_CAP_VIDEO_OUTPUT_OVERLAY;
        }
        video_set_drvdata(&s->vdev, s);