mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-23 18:07:03 +00:00
V4L/DVB (12139): em28xx: add other video formats
Add suppport for the teste RGB565 format (16 bits/pixel). Currently, webcam support works only at RGB565, at 640x480. Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
02e7804b21
commit
43cb9fe329
@ -94,6 +94,11 @@ static struct em28xx_fmt format[] = {
|
||||
.fourcc = V4L2_PIX_FMT_YUYV,
|
||||
.depth = 16,
|
||||
.reg = EM28XX_OUTFMT_YUV422_Y0UY1V,
|
||||
}, {
|
||||
.name = "16 bpp RGB, le",
|
||||
.fourcc = V4L2_PIX_FMT_RGB565,
|
||||
.depth = 16,
|
||||
.reg = EM28XX_OUTFMT_YUV211,
|
||||
},
|
||||
};
|
||||
|
||||
@ -694,6 +699,10 @@ static int vidioc_try_fmt_vid_cap(struct file *file, void *priv,
|
||||
unsigned int hscale, vscale;
|
||||
struct em28xx_fmt *fmt;
|
||||
|
||||
/* FIXME: This is the only supported fmt */
|
||||
if (dev->board.is_27xx)
|
||||
f->fmt.pix.pixelformat = V4L2_PIX_FMT_RGB565;
|
||||
|
||||
fmt = format_by_fourcc(f->fmt.pix.pixelformat);
|
||||
if (!fmt) {
|
||||
em28xx_videodbg("Fourcc format (%08x) invalid.\n",
|
||||
@ -701,7 +710,11 @@ static int vidioc_try_fmt_vid_cap(struct file *file, void *priv,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (dev->board.is_em2800) {
|
||||
if (dev->board.is_27xx) {
|
||||
/* FIXME: This is the only supported fmt */
|
||||
width = 640;
|
||||
height = 480;
|
||||
} else if (dev->board.is_em2800) {
|
||||
/* the em2800 can only scale down to 50% */
|
||||
height = height > (3 * maxh / 4) ? maxh : maxh / 2;
|
||||
width = width > (3 * maxw / 4) ? maxw : maxw / 2;
|
||||
@ -747,6 +760,10 @@ static int vidioc_s_fmt_vid_cap(struct file *file, void *priv,
|
||||
|
||||
mutex_lock(&dev->lock);
|
||||
|
||||
/* FIXME: This is the only supported fmt */
|
||||
if (dev->board.is_27xx)
|
||||
f->fmt.pix.pixelformat = V4L2_PIX_FMT_RGB565;
|
||||
|
||||
vidioc_try_fmt_vid_cap(file, priv, f);
|
||||
|
||||
fmt = format_by_fourcc(f->fmt.pix.pixelformat);
|
||||
|
Loading…
Reference in New Issue
Block a user