{
        void *fieldstart, *startwrite, *startread;
        int  linesdone, currlinedone, offset, lencopy, remain;
-
-       if (dev->frame_size != buf->vb.size) {
-               em28xx_errdev("size %i and buf.length %lu are different!\n",
-                             dev->frame_size, buf->vb.size);
-               return;
-       }
+       int bytesperline = dev->width << 1;
 
        if (dma_q->pos + len > buf->vb.size)
                len = buf->vb.size - dma_q->pos;
        if (buf->top_field)
                fieldstart = outp;
        else
-               fieldstart = outp + dev->bytesperline;
+               fieldstart = outp + bytesperline;
 
-       linesdone = dma_q->pos / dev->bytesperline;
-       currlinedone = dma_q->pos % dev->bytesperline;
-       offset = linesdone * dev->bytesperline * 2 + currlinedone;
+       linesdone = dma_q->pos / bytesperline;
+       currlinedone = dma_q->pos % bytesperline;
+       offset = linesdone * bytesperline * 2 + currlinedone;
        startwrite = fieldstart + offset;
-       lencopy = dev->bytesperline - currlinedone;
+       lencopy = bytesperline - currlinedone;
        lencopy = lencopy > remain ? remain : lencopy;
 
        if ((char *)startwrite + lencopy > (char *)outp + buf->vb.size) {
        remain -= lencopy;
 
        while (remain > 0) {
-               startwrite += lencopy + dev->bytesperline;
+               startwrite += lencopy + bytesperline;
                startread += lencopy;
-               if (dev->bytesperline > remain)
+               if (bytesperline > remain)
                        lencopy = remain;
                else
-                       lencopy = dev->bytesperline;
+                       lencopy = bytesperline;
 
                if ((char *)startwrite + lencopy > (char *)outp + buf->vb.size) {
                        em28xx_isocdbg("Overflow of %zi bytes past buffer end (2)\n",
        struct em28xx_dmaqueue *vidq = &dev->vidq;
        int                  rc = 0, urb_init = 0;
 
-       /* BUG_ON(NULL == fh->fmt); */
-
        /* FIXME: It assumes depth = 16 */
        /* The only currently supported format is 16 bits/pixel */
        buf->vb.size = 16 * dev->width * dev->height >> 3;
        if (0 != buf->vb.baddr  &&  buf->vb.bsize < buf->vb.size)
                return -EINVAL;
 
-       buf->fmt       = fh->fmt;
        buf->vb.width  = dev->width;
        buf->vb.height = dev->height;
        buf->vb.field  = field;
        f->fmt.pix.width = dev->width;
        f->fmt.pix.height = dev->height;
        f->fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV;
-       f->fmt.pix.bytesperline = dev->bytesperline;
-       f->fmt.pix.sizeimage = dev->frame_size;
+       f->fmt.pix.bytesperline = dev->width * 2;
+       f->fmt.pix.sizeimage = f->fmt.pix.bytesperline  * dev->height;
        f->fmt.pix.colorspace = V4L2_COLORSPACE_SMPTE170M;
 
        /* FIXME: TOP? NONE? BOTTOM? ALTENATE? */
        /* set new image size */
        dev->width = f->fmt.pix.width;
        dev->height = f->fmt.pix.height;
-       dev->frame_size = dev->width * dev->height * 2;
-       dev->field_size = dev->frame_size >> 1;
-       dev->bytesperline = dev->width * 2;
        get_scale(dev, dev->width, dev->height, &dev->hscale, &dev->vscale);
 
        em28xx_set_alternate(dev);
        /* set new image size */
        dev->width = f.fmt.pix.width;
        dev->height = f.fmt.pix.height;
-       dev->frame_size = dev->width * dev->height * 2;
-       dev->field_size = dev->frame_size >> 1;
-       dev->bytesperline = dev->width * 2;
        get_scale(dev, dev->width, dev->height, &dev->hscale, &dev->vscale);
 
        em28xx_resolution_set(dev);
        if (fh->type == V4L2_BUF_TYPE_VIDEO_CAPTURE && dev->users == 0) {
                dev->width = norm_maxw(dev);
                dev->height = norm_maxh(dev);
-               dev->frame_size = dev->width * dev->height * 2;
-               dev->field_size = dev->frame_size >> 1; /*both_fileds ? dev->frame_size>>1 : dev->frame_size; */
-               dev->bytesperline = dev->width * 2;
                dev->hscale = 0;
                dev->vscale = 0;
 
        dev->width = maxw;
        dev->height = maxh;
        dev->interlaced = EM28XX_INTERLACED_DEFAULT;
-       dev->field_size = dev->width * dev->height;
-       dev->frame_size =
-           dev->interlaced ? dev->field_size << 1 : dev->field_size;
-       dev->bytesperline = dev->width * 2;
        dev->hscale = 0;
        dev->vscale = 0;
        dev->ctl_input = 2;