summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 39ccf81)
raw | patch | inline | side by side (parent: 39ccf81)
author | Josh Elliott <jelliott@ti.com> | |
Tue, 29 Apr 2014 15:40:41 +0000 (10:40 -0500) | ||
committer | Josh Elliott <jelliott@ti.com> | |
Tue, 29 Apr 2014 15:40:41 +0000 (10:40 -0500) |
loopback.cpp | patch | blob | history | |
mainwindow.cpp | patch | blob | history |
diff --git a/loopback.cpp b/loopback.cpp
index 09dee7312e5820e9ea0f771f83cdfb24c6e97162..4a8f746b603db029f0b0344f3bedb86b9068170f 100644 (file)
--- a/loopback.cpp
+++ b/loopback.cpp
printf("\n%s: Opened Channel\n", device->name);
- /* Set the format of the capture device */
- device->fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV;
-
- device->width = 800;
- device->height = 600;
-
/* Check if the device is capable of streaming */
if (ioctl(device->fd, VIDIOC_QUERYCAP, &capability) < 0) {
perror("VIDIOC_QUERYCAP");
/* Set the input resolution of the video framebuffer to be the size
* of the camera image. Later, the output size will be matched to
* the display to allow for up/down scaling */
- device->varinfo.xres = 800;
- device->varinfo.yres = 600;
- device->varinfo.xres_virtual = 800;
- device->varinfo.yres_virtual = 600;
+ device->varinfo.xres = device->width;
+ device->varinfo.yres = device->height;
+ device->varinfo.xres_virtual = device->width;
+ device->varinfo.yres_virtual = device->height;
device->varinfo.bits_per_pixel = 16;
device->varinfo.nonstd = OMAPFB_COLOR_YUY422;
fprintf(f,"%d", 1);
fclose(f);
- /* Set scalar for PiP video plane to 1/2 */
+ /* Set scalar for PiP video plane to 1/4 of main video plane */
fb2_device.pi.enabled = 0;
- fb2_device.pi.out_width = fb1_device.pi.out_width/2;
- fb2_device.pi.out_height = fb1_device.pi.out_height/2;
+ fb2_device.pi.out_width = fb1_device.pi.out_width/3;
+ fb2_device.pi.out_height = fb1_device.pi.out_height/3;
+ fb2_device.pi.pos_x = 25;
+ fb2_device.pi.pos_y = 25;
fb2_device.pi.enabled = 1;
if (ioctl(fb2_device.fd, OMAPFB_SETUP_PLANE, &fb2_device.pi)) {
@@ -498,23 +494,37 @@ static int display_frame(struct v4l2_device_info *v4l2_device, struct fbdev_devi
void default_parameters(void)
{
+ /* Main camera display */
strcpy(fb1_device.dev_name,"/dev/fb1");
strcpy(fb1_device.name,"fb1");
+ fb1_device.width=800;
+ fb1_device.height=600;
+ /* PiP camera display */
strcpy(fb2_device.dev_name,"/dev/fb2");
strcpy(fb2_device.name,"fb2");
+ fb2_device.width=800;
+ fb2_device.height=600;
+ /* Main camera */
cap0_device.memory_mode = V4L2_MEMORY_MMAP;
cap0_device.num_buffers = 3;
strcpy(cap0_device.dev_name,"/dev/video0");
strcpy(cap0_device.name,"Capture 0");
cap0_device.buffers = NULL;
+ cap0_device.fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV;
+ cap0_device.width = 800;
+ cap0_device.height = 600;
+ /* PiP camera */
cap1_device.memory_mode = V4L2_MEMORY_MMAP;
cap1_device.num_buffers = 3;
strcpy(cap1_device.dev_name,"/dev/video1");
strcpy(cap1_device.name,"Capture 1");
cap1_device.buffers = NULL;
+ cap1_device.fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV;
+ cap1_device.width = 800;
+ cap1_device.height = 600;
/* Set the default parameters for device options */
status.main_cam=0;
/* Declare properties for video and capture devices */
default_parameters();
- /* Initialize the fbdev display devices */
- if (fbdev_init_device(&fb1_device)) goto Error;
- if (fbdev_init_device(&fb2_device)) goto Error;
-
- /* Set the scalar for PiP */
- if (fbdev_init_pip() < 0 ) goto Error;
-
/* Initialize the v4l2 capture devices */
if (v4l2_init_device(&cap0_device) < 0) goto Error;
if (v4l2_init_device(&cap1_device) < 0) {
/* If there is not a second camera, program can still continue */
status.num_cams=1;
status.pip=false;
- fbdev_disable_pip();
printf("Only one camera detected\n");
}
if (v4l2_stream_on(&cap1_device) < 0) goto Error;
}
+ /* Initialize the fbdev display devices */
+ if (fbdev_init_device(&fb1_device)) goto Error;
+ if (fbdev_init_device(&fb2_device)) goto Error;
+
+ if (status.pip==false)
+ fbdev_disable_pip();
+ else {
+ /* Set the scalar for PiP */
+ if (fbdev_init_pip() < 0 ) goto Error;
+ }
+
return 0;
Error:
diff --git a/mainwindow.cpp b/mainwindow.cpp
index 92e8646f86c61ac64e5ef61ad21e2c1c377f16b7..4e07c82d21a809e47e7c3528f547614401699dd2 100644 (file)
--- a/mainwindow.cpp
+++ b/mainwindow.cpp
/* Configure GUI */
this->setFixedSize(status.display_xres, status.display_yres);
ui->frame->setGeometry(0, 0, status.display_xres, status.display_yres);
- ui->frame_pip->setGeometry(0, 0, status.display_xres/2, status.display_yres/2);
+ ui->frame_pip->setGeometry(25, 25, status.display_xres/3, status.display_yres/3);
ui->capture->setGeometry(status.display_xres/2 - 210,
status.display_yres - 50,
91, 41);