Commit 37026278 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab
Browse files

V4L/DVB (4474): On some cases, depth were not returned.

parent a202a5bf
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -2431,6 +2431,14 @@ static int bttv_do_ioctl(struct inode *inode, struct file *file,
		fbuf->bytesperline  = btv->fbuf.fmt.bytesperline;
		if (fh->ovfmt)
			fbuf->depth = fh->ovfmt->depth;
		else {
			if (fbuf->width)
				fbuf->depth   = ((fbuf->bytesperline<<3)
                                                  + (fbuf->width-1) )
                                                  /fbuf->width;
			else
				fbuf->depth = 0;
		}
		return 0;
	}
	case VIDIOCSFBUF:
+9 −3
Original line number Diff line number Diff line
@@ -349,6 +349,8 @@ v4l_compat_translate_ioctl(struct inode *inode,
	{
		struct video_buffer	*buffer = arg;

		memset(buffer, 0, sizeof(*buffer));

		err = drv(inode, file, VIDIOC_G_FBUF, &fbuf2);
		if (err < 0) {
			dprintk("VIDIOCGFBUF / VIDIOC_G_FBUF: %d\n",err);
@@ -377,9 +379,13 @@ v4l_compat_translate_ioctl(struct inode *inode,
		default:
			buffer->depth = 0;
		}
		if (0 != fbuf2.fmt.bytesperline)
		if (fbuf2.fmt.bytesperline) {
			buffer->bytesperline = fbuf2.fmt.bytesperline;
		else {
			if (!buffer->depth && buffer->width)
				buffer->depth   = ((fbuf2.fmt.bytesperline<<3)
						  + (buffer->width-1) )
						  /buffer->width;
		} else {
			buffer->bytesperline =
				(buffer->width * buffer->depth + 7) & 7;
			buffer->bytesperline >>= 3;