You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(59) |
Jun
(40) |
Jul
(59) |
Aug
(81) |
Sep
(14) |
Oct
(9) |
Nov
(22) |
Dec
(1) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
(25) |
Feb
(3) |
Mar
(27) |
Apr
(14) |
May
(15) |
Jun
(112) |
Jul
(44) |
Aug
(7) |
Sep
(18) |
Oct
(34) |
Nov
(17) |
Dec
(20) |
2006 |
Jan
(12) |
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
(3) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
(11) |
From: Dominic L. <ma...@us...> - 2005-10-27 17:53:30
|
Update of /cvsroot/robotflow/RobotFlow/Sensors/include In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23446/Sensors/include Log Message: Directory /cvsroot/robotflow/RobotFlow/Sensors/include added to the repository |
From: Dominic L. <ma...@us...> - 2005-10-27 17:53:02
|
Update of /cvsroot/robotflow/RobotFlow/Sensors In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23391/Sensors Log Message: Directory /cvsroot/robotflow/RobotFlow/Sensors added to the repository |
From: Dominic L. <ma...@us...> - 2005-10-24 15:42:46
|
Update of /cvsroot/robotflow/RobotFlow/OpenCV/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28016 Modified Files: CvFaceDetection.cc Log Message: throw exception when haar features files are not found Index: CvFaceDetection.cc =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/OpenCV/src/CvFaceDetection.cc,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** CvFaceDetection.cc 28 Jul 2005 14:59:47 -0000 1.1 --- CvFaceDetection.cc 24 Oct 2005 15:42:38 -0000 1.2 *************** *** 112,115 **** --- 112,119 ---- m_haarClassifier2 = (CvHaarClassifierCascade*)cvLoad( "haarcascade_profileface.xml", 0, 0, 0 ); + if (!m_haarClassifier1 || !m_haarClassifier2) { + throw new GeneralException("Cannot load haar classifiers : from files haarcascade_frontalface_alt2.xml, haarcascade_profileface.xml",__FILE__,__LINE__); + } + m_curSkinROI = new CvRect[m_maxNumSkinRegions]; |
From: Dominic L. <ma...@us...> - 2005-10-20 13:25:43
|
Update of /cvsroot/robotflow/RobotFlow/Devices/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1486/src Modified Files: V4L2Capture.cc Log Message: updated driver Index: V4L2Capture.cc =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Devices/src/V4L2Capture.cc,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** V4L2Capture.cc 19 Oct 2005 21:14:01 -0000 1.19 --- V4L2Capture.cc 20 Oct 2005 13:25:27 -0000 1.20 *************** *** 89,97 **** * @parameter_description Automatic white balance for V4L2 device. * - * @parameter_name AUTO_SOFT_BRIGHTNESS - * @parameter_type bool - * @parameter_value false - * @parameter_description Software adjustment of brightness (TEST) - * END*/ --- 89,92 ---- *************** *** 107,111 **** bool m_continuous; bool m_autoWhiteBalance; ! bool m_autoSoftBrightness; int m_width; int m_height; --- 102,106 ---- bool m_continuous; bool m_autoWhiteBalance; ! int m_width; int m_height; *************** *** 133,149 **** string format = object_cast<String>(parameters.get("FORMAT")); ! m_autoSoftBrightness = dereference_cast<bool>(parameters.get("AUTO_SOFT_BRIGHTNESS")); ! ! m_captureDevice.init(NULL); ! ! /* if (format == "GREYSCALE") { m_pixelsize = 1; ! if (!m_captureDevice.initialize(m_device.c_str(),m_width,m_height,V4L2_PIX_FMT_GREY,m_continuous)) { throw new GeneralException(string("Unable to initialize V4L2 device : ") + m_device, __FILE__,__LINE__); } }else if (format == "RGB15") { m_pixelsize = 2; ! if (!m_captureDevice.initialize(m_device.c_str(),m_width,m_height,V4L2_PIX_FMT_RGB555,m_continuous)) { throw new GeneralException(string("Unable to initialize V4L2 device : ") + m_device, __FILE__,__LINE__); } --- 128,141 ---- string format = object_cast<String>(parameters.get("FORMAT")); ! ! if (format == "GREYSCALE") { m_pixelsize = 1; ! if (!m_captureDevice.initialize(m_device,m_width,m_height,V4L2_PIX_FMT_GREY)) { throw new GeneralException(string("Unable to initialize V4L2 device : ") + m_device, __FILE__,__LINE__); } }else if (format == "RGB15") { m_pixelsize = 2; ! if (!m_captureDevice.initialize(m_device,m_width,m_height,V4L2_PIX_FMT_RGB555)) { throw new GeneralException(string("Unable to initialize V4L2 device : ") + m_device, __FILE__,__LINE__); } *************** *** 151,161 **** else if (format == "RGB24") { m_pixelsize = 3; ! if (!m_captureDevice.initialize(m_device.c_str(),m_width,m_height,V4L2_PIX_FMT_RGB24,m_continuous)) { throw new GeneralException(string("Unable to initialize V4L2 device : ") + m_device, __FILE__,__LINE__); } } else { ! throw new GeneralException("Image format must be RGB15 or RGB24 format",__FILE__,__LINE__); } ! */ if (!m_captureDevice.set_contrast(m_contrast)) { --- 143,153 ---- else if (format == "RGB24") { m_pixelsize = 3; ! if (!m_captureDevice.initialize(m_device,m_width,m_height,V4L2_PIX_FMT_RGB24)) { throw new GeneralException(string("Unable to initialize V4L2 device : ") + m_device, __FILE__,__LINE__); } } else { ! throw new GeneralException("Image format must be GREYSCALE, RGB15 or RGB24 format",__FILE__,__LINE__); } ! if (!m_captureDevice.set_contrast(m_contrast)) { *************** *** 183,187 **** virtual void calculate(int output_id, int count, Buffer &out) { ! out[count] = m_captureDevice.mainloop(); } --- 175,179 ---- virtual void calculate(int output_id, int count, Buffer &out) { ! out[count] = m_captureDevice.readFrame(); } |
From: Dominic L. <ma...@us...> - 2005-10-20 13:25:43
|
Update of /cvsroot/robotflow/RobotFlow/Devices/include In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1486/include Modified Files: V4L2Capture.h Log Message: updated driver Index: V4L2Capture.h =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Devices/include/V4L2Capture.h,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** V4L2Capture.h 19 Oct 2005 21:14:01 -0000 1.14 --- V4L2Capture.h 20 Oct 2005 13:25:26 -0000 1.15 *************** *** 1,6 **** #ifndef _V4L2CAPTURE_H_ /* ! * V4L2 video capture example */ --- 1,25 ---- + + /* Copyright (C) 2005 Dominic Letourneau (dom...@us...) + [...1038 lines suppressed...] ! if (EINVAL == xioctl(m_fd,VIDIOC_S_CTRL,&control)) { ! perror("set_hue->VIDIOC_S_CTR"); return false; } *************** *** 678,683 **** control.value = saturation; ! if (EINVAL == ioctl(fd,VIDIOC_S_CTRL,&control)) { ! perror("VIDIOC_S_CTR"); return false; } --- 737,742 ---- control.value = saturation; ! if (EINVAL == xioctl(m_fd,VIDIOC_S_CTRL,&control)) { ! perror("set_saturation->VIDIOC_S_CTR"); return false; } |
From: Dominic L. <ma...@us...> - 2005-10-19 21:14:09
|
Update of /cvsroot/robotflow/RobotFlow/Devices/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27313/src Modified Files: V4L2Capture.cc Log Message: using settings except image format Index: V4L2Capture.cc =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Devices/src/V4L2Capture.cc,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** V4L2Capture.cc 19 Oct 2005 20:54:33 -0000 1.18 --- V4L2Capture.cc 19 Oct 2005 21:14:01 -0000 1.19 *************** *** 157,160 **** --- 157,161 ---- throw new GeneralException("Image format must be RGB15 or RGB24 format",__FILE__,__LINE__); } + */ if (!m_captureDevice.set_contrast(m_contrast)) { *************** *** 177,225 **** throw new GeneralException(string("Unable to set auto white balance on V4L2 device : ") + m_device, __FILE__,__LINE__); } ! */ } virtual void calculate(int output_id, int count, Buffer &out) { - - - - - - - - - out[count] = m_captureDevice.mainloop(); ! ! ! ! /* ! Image *image = Image::alloc(m_width,m_height,m_pixelsize); //allocate image ! ! if (!m_continuous) { ! read(m_captureDevice.getFD(),image->get_data(),m_width * m_height * m_pixelsize); ! } ! else { ! int index,field; ! ! //capture & cpy data ! memcpy(image->get_data(),m_captureDevice.captureFrame(index,field),m_width * m_height * m_pixelsize); ! ! if (m_autoSoftBrightness) { ! automaticBrightness(image); ! } ! ! //release frame ! m_captureDevice.releaseFrame(NULL,index); ! } ! out[count] = ObjectRef(image); ! */ ! //out[count] = nilObject; } - - - - }; --- 178,189 ---- throw new GeneralException(string("Unable to set auto white balance on V4L2 device : ") + m_device, __FILE__,__LINE__); } ! } virtual void calculate(int output_id, int count, Buffer &out) { out[count] = m_captureDevice.mainloop(); ! } }; *************** *** 228,314 **** /* - bool capture::set_auto_white_balance(bool white_balance) { - - struct v4l2_control control; - - control.id =V4L2_CID_AUTO_WHITE_BALANCE; - control.value = (int) white_balance; - - if (EINVAL == ioctl(vid_fd,VIDIOC_S_CTRL,&control)) { - perror("VIDIOC_S_CTR"); - return false; - } - - cerr<<"auto_white_balance value : "<<control.value<<endl; - - return true; - } - - bool capture::set_contrast(int contrast) { - - struct v4l2_control control; - - control.id =V4L2_CID_CONTRAST; - control.value = contrast; - - if (EINVAL == ioctl(vid_fd,VIDIOC_S_CTRL,&control)) { - perror("VIDIOC_S_CTR"); - return false; - } - - cerr<<"contrast value : "<<control.value<<endl; - - return true; - } - - bool capture::set_brightness(int brightness) { - - struct v4l2_control control; - - control.id =V4L2_CID_BRIGHTNESS; - control.value = brightness; - - if (EINVAL == ioctl(vid_fd,VIDIOC_S_CTRL,&control)) { - perror("VIDIOC_S_CTR"); - return false; - } - - cerr<<"brightness value : "<<control.value<<endl; - - return true; - } - bool capture::set_hue(int hue) { - - struct v4l2_control control; - - control.id =V4L2_CID_HUE; - control.value = hue; - - if (EINVAL == ioctl(vid_fd,VIDIOC_S_CTRL,&control)) { - perror("VIDIOC_S_CTR"); - return false; - } - - cerr<<"hue value : "<<control.value<<endl; - - return true; - } - bool capture::set_saturation(int saturation) { - - struct v4l2_control control; - - control.id =V4L2_CID_SATURATION; - control.value = saturation; - - if (EINVAL == ioctl(vid_fd,VIDIOC_S_CTRL,&control)) { - perror("VIDIOC_S_CTR"); - return false; - } - - cerr<<"saturation value : "<<control.value<<endl; - - return true; - } */ --- 192,196 ---- |
From: Dominic L. <ma...@us...> - 2005-10-19 21:14:09
|
Update of /cvsroot/robotflow/RobotFlow/Devices/include In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27313/include Modified Files: V4L2Capture.h Log Message: using settings except image format Index: V4L2Capture.h =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Devices/include/V4L2Capture.h,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** V4L2Capture.h 19 Oct 2005 21:07:19 -0000 1.13 --- V4L2Capture.h 19 Oct 2005 21:14:01 -0000 1.14 *************** *** 26,29 **** --- 26,30 ---- #include "Image.h" #include "Object.h" + #include <iostream> namespace RobotFlow { *************** *** 602,704 **** } ! ! /* ! static void ! usage (FILE * fp, ! int argc, ! char ** argv) ! { ! fprintf (fp, ! "Usage: %s [options]\n\n" ! "Options:\n" ! "-d | --device name Video device name [/dev/video]\n" ! "-h | --help Print this message\n" ! "-m | --mmap Use memory mapped buffers\n" ! "-r | --read Use read() calls\n" ! "-u | --userp Use application allocated buffers\n" ! "", ! argv[0]); } - - static const char short_options [] = "d:hmru"; ! static const struct option ! long_options [] = { ! { "device", required_argument, NULL, 'd' }, ! { "help", no_argument, NULL, 'h' }, ! { "mmap", no_argument, NULL, 'm' }, ! { "read", no_argument, NULL, 'r' }, ! { "userp", no_argument, NULL, 'u' }, ! { 0, 0, 0, 0 } ! }; ! */ ! /* ! int ! main (int argc, ! char ** argv) ! { ! dev_name = "/dev/video"; ! ! for (;;) { ! int index; ! int c; ! ! c = getopt_long (argc, argv, ! short_options, long_options, ! &index); ! ! if (-1 == c) ! break; ! ! switch (c) { ! case 0: ! break; ! ! case 'd': ! dev_name = optarg; ! break; ! ! case 'h': ! usage (stdout, argc, argv); ! exit (EXIT_SUCCESS); ! ! case 'm': ! io = IO_METHOD_MMAP; ! break; ! ! case 'r': ! io = IO_METHOD_READ; ! break; ! ! case 'u': ! io = IO_METHOD_USERPTR; ! break; ! ! default: ! usage (stderr, argc, argv); ! exit (EXIT_FAILURE); ! } ! } ! ! open_device (); ! ! init_device (); ! ! start_capturing (); ! ! mainloop (); ! ! stop_capturing (); ! ! uninit_device (); ! ! close_device (); ! ! exit (EXIT_SUCCESS); ! return 0; ! } ! */ ! };//class capture }//namespace RobotFlow #endif --- 603,691 ---- } ! bool set_auto_white_balance(bool white_balance) { ! ! struct v4l2_control control; ! ! control.id =V4L2_CID_AUTO_WHITE_BALANCE; ! control.value = (int) white_balance; ! ! if (EINVAL == ioctl(fd,VIDIOC_S_CTRL,&control)) { ! perror("VIDIOC_S_CTR"); ! return false; ! } ! ! std::cerr<<"auto_white_balance value : "<<control.value<<std::endl; ! ! return true; } ! bool set_contrast(int contrast) { ! ! struct v4l2_control control; ! ! control.id =V4L2_CID_CONTRAST; ! control.value = contrast; ! ! if (EINVAL == ioctl(fd,VIDIOC_S_CTRL,&control)) { ! perror("VIDIOC_S_CTR"); ! return false; ! } ! ! std::cerr<<"contrast value : "<<control.value<<std::endl; ! ! return true; ! } ! ! bool set_brightness(int brightness) { ! ! struct v4l2_control control; ! ! control.id =V4L2_CID_BRIGHTNESS; ! control.value = brightness; ! ! if (EINVAL == ioctl(fd,VIDIOC_S_CTRL,&control)) { ! perror("VIDIOC_S_CTR"); ! return false; ! } ! ! std::cerr<<"brightness value : "<<control.value<<std::endl; ! ! return true; ! } ! bool set_hue(int hue) { ! ! struct v4l2_control control; ! ! control.id =V4L2_CID_HUE; ! control.value = hue; ! ! if (EINVAL == ioctl(fd,VIDIOC_S_CTRL,&control)) { ! perror("VIDIOC_S_CTR"); ! return false; ! } ! ! std::cerr<<"hue value : "<<control.value<<std::endl; ! ! return true; ! } ! ! bool set_saturation(int saturation) { ! ! struct v4l2_control control; ! ! control.id =V4L2_CID_SATURATION; ! control.value = saturation; ! ! if (EINVAL == ioctl(fd,VIDIOC_S_CTRL,&control)) { ! perror("VIDIOC_S_CTR"); ! return false; ! } ! ! std::cerr<<"saturation value : "<<control.value<<std::endl; ! ! return true; ! } ! };//class capture }//namespace RobotFlow #endif |
From: Dominic L. <ma...@us...> - 2005-10-19 21:07:35
|
Update of /cvsroot/robotflow/RobotFlow/Devices/include In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25821/include Modified Files: V4L2Capture.h Log Message: default NTSC Index: V4L2Capture.h =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Devices/include/V4L2Capture.h,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** V4L2Capture.h 19 Oct 2005 20:57:06 -0000 1.12 --- V4L2Capture.h 19 Oct 2005 21:07:19 -0000 1.13 *************** *** 462,466 **** struct v4l2_format fmt; unsigned int min; ! if (-1 == xioctl (fd, VIDIOC_QUERYCAP, &cap)) { if (EINVAL == errno) { --- 462,467 ---- struct v4l2_format fmt; unsigned int min; ! v4l2_std_id std; ! if (-1 == xioctl (fd, VIDIOC_QUERYCAP, &cap)) { if (EINVAL == errno) { *************** *** 479,482 **** --- 480,495 ---- } + std = V4L2_STD_NTSC; + + if (EINVAL == ioctl(fd,VIDIOC_S_STD,&std)) { + perror("VIDIOC_S_STD"); + } + + + if (EINVAL == ioctl(fd,VIDIOC_G_STD,&std)) { + perror("VIDIOC_G_STD"); + } + + switch (io) { case IO_METHOD_READ: *************** *** 528,532 **** fmt.fmt.pix.height = DEFAULT_HEIGHT; fmt.fmt.pix.pixelformat = DEFAULT_FORMAT; ! fmt.fmt.pix.field = V4L2_FIELD_INTERLACED; if (-1 == xioctl (fd, VIDIOC_S_FMT, &fmt)) --- 541,545 ---- fmt.fmt.pix.height = DEFAULT_HEIGHT; fmt.fmt.pix.pixelformat = DEFAULT_FORMAT; ! fmt.fmt.pix.field = V4L2_FIELD_ANY; if (-1 == xioctl (fd, VIDIOC_S_FMT, &fmt)) |
From: Dominic L. <ma...@us...> - 2005-10-19 20:57:14
|
Update of /cvsroot/robotflow/RobotFlow/Devices/include In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23617/include Modified Files: V4L2Capture.h Log Message: fixed segfault, default to RGB24 Index: V4L2Capture.h =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Devices/include/V4L2Capture.h,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** V4L2Capture.h 19 Oct 2005 20:54:33 -0000 1.11 --- V4L2Capture.h 19 Oct 2005 20:57:06 -0000 1.12 *************** *** 33,37 **** #define DEFAULT_WIDTH 320 #define DEFAULT_HEIGHT 240 ! #define DEFAULT_FORMAT V4L2_PIX_FMT_RGB24 class capture { --- 33,37 ---- #define DEFAULT_WIDTH 320 #define DEFAULT_HEIGHT 240 ! #define DEFAULT_FORMAT V4L2_PIX_FMT_RGB555 class capture { *************** *** 103,110 **** //allocate image ! Image *image = Image::alloc(DEFAULT_WIDTH,DEFAULT_HEIGHT,3); //copy image ! memcpy(image->get_data(),p, DEFAULT_WIDTH * DEFAULT_HEIGHT * 3); m_image = FD::ObjectRef(image); --- 103,110 ---- //allocate image ! Image *image = Image::alloc(DEFAULT_WIDTH,DEFAULT_HEIGHT,2); //copy image ! memcpy(image->get_data(),p, DEFAULT_WIDTH * DEFAULT_HEIGHT * 2); m_image = FD::ObjectRef(image); *************** *** 536,540 **** /* Buggy driver paranoia. */ ! min = fmt.fmt.pix.width * 3; if (fmt.fmt.pix.bytesperline < min) fmt.fmt.pix.bytesperline = min; --- 536,540 ---- /* Buggy driver paranoia. */ ! min = fmt.fmt.pix.width * 2; if (fmt.fmt.pix.bytesperline < min) fmt.fmt.pix.bytesperline = min; |
From: Dominic L. <ma...@us...> - 2005-10-19 20:54:41
|
Update of /cvsroot/robotflow/RobotFlow/Devices/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23150/src Modified Files: V4L2Capture.cc Log Message: fixed segfault, default to RGB24 Index: V4L2Capture.cc =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Devices/src/V4L2Capture.cc,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** V4L2Capture.cc 19 Oct 2005 20:41:35 -0000 1.17 --- V4L2Capture.cc 19 Oct 2005 20:54:33 -0000 1.18 *************** *** 186,198 **** ! Image* image = m_captureDevice.mainloop(); ! if (image) { ! out[count] = ObjectRef(image); ! } ! else { ! throw new GeneralException("V4L2Capture : unable to get image",__FILE__,__LINE__); ! } --- 186,196 ---- ! ! ! ! out[count] = m_captureDevice.mainloop(); ! |
From: Dominic L. <ma...@us...> - 2005-10-19 20:54:41
|
Update of /cvsroot/robotflow/RobotFlow/Devices/include In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23150/include Modified Files: V4L2Capture.h Log Message: fixed segfault, default to RGB24 Index: V4L2Capture.h =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Devices/include/V4L2Capture.h,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** V4L2Capture.h 19 Oct 2005 20:41:35 -0000 1.10 --- V4L2Capture.h 19 Oct 2005 20:54:33 -0000 1.11 *************** *** 25,28 **** --- 25,29 ---- #include <linux/videodev2.h> #include "Image.h" + #include "Object.h" namespace RobotFlow { *************** *** 32,36 **** #define DEFAULT_WIDTH 320 #define DEFAULT_HEIGHT 240 ! #define DEFAULT_FORMAT V4L2_PIX_FMT_RGB555 class capture { --- 33,37 ---- #define DEFAULT_WIDTH 320 #define DEFAULT_HEIGHT 240 ! #define DEFAULT_FORMAT V4L2_PIX_FMT_RGB24 class capture { *************** *** 54,58 **** buffer * buffers; unsigned int n_buffers; ! Image *m_image; --- 55,59 ---- buffer * buffers; unsigned int n_buffers; ! FD::ObjectRef m_image; *************** *** 65,69 **** buffers = NULL; n_buffers = 0; - m_image = NULL; } --- 66,69 ---- *************** *** 80,87 **** stop_capturing (); uninit_device (); ! close_device (); ! if (m_image) { ! delete m_image; ! } } --- 80,84 ---- stop_capturing (); uninit_device (); ! close_device (); } *************** *** 104,111 **** fputc ('.', stdout); fflush (stdout); //allocate image ! m_image = Image::alloc(DEFAULT_WIDTH,DEFAULT_HEIGHT,2); //copy image ! memcpy(m_image->get_data(),p, DEFAULT_WIDTH * DEFAULT_HEIGHT * 2); } --- 101,113 ---- fputc ('.', stdout); fflush (stdout); + //allocate image ! Image *image = Image::alloc(DEFAULT_WIDTH,DEFAULT_HEIGHT,3); ! //copy image ! memcpy(image->get_data(),p, DEFAULT_WIDTH * DEFAULT_HEIGHT * 3); ! ! m_image = FD::ObjectRef(image); ! } *************** *** 205,209 **** } ! Image* mainloop (void) { for (;;) { --- 207,211 ---- } ! FD::ObjectRef mainloop (void) { for (;;) { *************** *** 534,538 **** /* Buggy driver paranoia. */ ! min = fmt.fmt.pix.width * 2; if (fmt.fmt.pix.bytesperline < min) fmt.fmt.pix.bytesperline = min; --- 536,540 ---- /* Buggy driver paranoia. */ ! min = fmt.fmt.pix.width * 3; if (fmt.fmt.pix.bytesperline < min) fmt.fmt.pix.bytesperline = min; |
From: Dominic L. <ma...@us...> - 2005-10-19 20:41:49
|
Update of /cvsroot/robotflow/RobotFlow/Devices/include In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20554/include Modified Files: V4L2Capture.h Log Message: testing images grab Index: V4L2Capture.h =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Devices/include/V4L2Capture.h,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** V4L2Capture.h 19 Oct 2005 20:20:19 -0000 1.9 --- V4L2Capture.h 19 Oct 2005 20:41:35 -0000 1.10 *************** *** 24,27 **** --- 24,28 ---- #include <linux/videodev2.h> + #include "Image.h" namespace RobotFlow { *************** *** 53,57 **** buffer * buffers; unsigned int n_buffers; ! --- 54,58 ---- buffer * buffers; unsigned int n_buffers; ! Image *m_image; *************** *** 64,67 **** --- 65,69 ---- buffers = NULL; n_buffers = 0; + m_image = NULL; } *************** *** 79,82 **** --- 81,87 ---- uninit_device (); close_device (); + if (m_image) { + delete m_image; + } } *************** *** 99,102 **** --- 104,111 ---- fputc ('.', stdout); fflush (stdout); + //allocate image + m_image = Image::alloc(DEFAULT_WIDTH,DEFAULT_HEIGHT,2); + //copy image + memcpy(m_image->get_data(),p, DEFAULT_WIDTH * DEFAULT_HEIGHT * 2); } *************** *** 230,234 **** } ! return NULL; } --- 239,243 ---- } ! return m_image; } |
From: Dominic L. <ma...@us...> - 2005-10-19 20:41:49
|
Update of /cvsroot/robotflow/RobotFlow/Devices/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20554/src Modified Files: V4L2Capture.cc Log Message: testing images grab Index: V4L2Capture.cc =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Devices/src/V4L2Capture.cc,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** V4L2Capture.cc 19 Oct 2005 20:20:19 -0000 1.16 --- V4L2Capture.cc 19 Oct 2005 20:41:35 -0000 1.17 *************** *** 186,192 **** ! m_captureDevice.mainloop(); --- 186,198 ---- ! Image* image = m_captureDevice.mainloop(); + if (image) { + out[count] = ObjectRef(image); + } + else { + throw new GeneralException("V4L2Capture : unable to get image",__FILE__,__LINE__); + } *************** *** 212,216 **** out[count] = ObjectRef(image); */ ! out[count] = nilObject; } --- 218,222 ---- out[count] = ObjectRef(image); */ ! //out[count] = nilObject; } |
From: Dominic L. <ma...@us...> - 2005-10-19 20:20:27
|
Update of /cvsroot/robotflow/RobotFlow/Devices/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16126/src Modified Files: V4L2Capture.cc Log Message: testing new driver Index: V4L2Capture.cc =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Devices/src/V4L2Capture.cc,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** V4L2Capture.cc 29 Mar 2005 15:20:39 -0000 1.15 --- V4L2Capture.cc 19 Oct 2005 20:20:19 -0000 1.16 *************** *** 1,3 **** ! /* Copyright (C) 2002 Dominic Letourneau (dom...@co...) This library is free software; you can redistribute it and/or --- 1,3 ---- ! /* Copyright (C) 2005 Dominic Letourneau (dom...@us...) This library is free software; you can redistribute it and/or *************** *** 16,23 **** */ - #include "V4L2Capture.h" #include "BufferedNode.h" #include "Image.h" #include <stdlib.h> using namespace std; --- 16,23 ---- */ #include "BufferedNode.h" #include "Image.h" #include <stdlib.h> + #include "V4L2Capture.h" using namespace std; *************** *** 118,122 **** V4L2Capture(string nodeName, ParameterSet params) : BufferedNode(nodeName, params) { ! m_outputID = addOutput("IMAGE"); --- 118,122 ---- V4L2Capture(string nodeName, ParameterSet params) : BufferedNode(nodeName, params) { ! m_outputID = addOutput("IMAGE"); *************** *** 133,137 **** string format = object_cast<String>(parameters.get("FORMAT")); ! if (format == "GREYSCALE") { m_pixelsize = 1; --- 133,141 ---- string format = object_cast<String>(parameters.get("FORMAT")); ! m_autoSoftBrightness = dereference_cast<bool>(parameters.get("AUTO_SOFT_BRIGHTNESS")); ! ! m_captureDevice.init(NULL); ! ! /* if (format == "GREYSCALE") { m_pixelsize = 1; *************** *** 154,159 **** } - m_autoSoftBrightness = dereference_cast<bool>(parameters.get("AUTO_SOFT_BRIGHTNESS")); - if (!m_captureDevice.set_contrast(m_contrast)) { throw new GeneralException(string("Unable to set contrast on V4L2 device : ") + m_device, __FILE__,__LINE__); --- 158,161 ---- *************** *** 175,183 **** throw new GeneralException(string("Unable to set auto white balance on V4L2 device : ") + m_device, __FILE__,__LINE__); } ! } virtual void calculate(int output_id, int count, Buffer &out) { Image *image = Image::alloc(m_width,m_height,m_pixelsize); //allocate image --- 177,195 ---- throw new GeneralException(string("Unable to set auto white balance on V4L2 device : ") + m_device, __FILE__,__LINE__); } ! */ } virtual void calculate(int output_id, int count, Buffer &out) { + + + + + m_captureDevice.mainloop(); + + + + + /* Image *image = Image::alloc(m_width,m_height,m_pixelsize); //allocate image *************** *** 199,238 **** } out[count] = ObjectRef(image); } ! private: ! ! void automaticBrightness(Image *image) { ! //cerr<<"automatic brightness ON"<<endl; ! ! float avg_intensity = 0; ! ! //init random number generator ! srand(time(NULL)); ! ! //taking 1% of image pixels ! for (int i = 0; i < (image->get_width() * image->get_height()) / 100; i++) { ! unsigned short *imagePixelPtr = (unsigned short*) image->get_data(); ! int rand_pos = rand() % (image->get_width() * image->get_height()); ! ! avg_intensity += (((imagePixelPtr[rand_pos] >> 10)) & 0x1F + ((imagePixelPtr[rand_pos]) >> 5) & 0x1F + (imagePixelPtr[rand_pos]) & 0x1F); ! ! } ! ! avg_intensity /= 3; ! //cerr<<"average_intensity "<<avg_intensity<<endl; ! ! if (avg_intensity < 10) { ! //+++ brigh ! m_brightness += 10; ! m_captureDevice.set_brightness(m_brightness); ! //cerr<<"brightness "<<m_brightness<<endl; ! } else if (avg_intensity > 20) { ! //--- brightness ! m_brightness -= 10; ! m_captureDevice.set_brightness(m_brightness); ! //cerr<<"brightness "<<m_brightness<<endl; ! } ! } --- 211,219 ---- } out[count] = ObjectRef(image); + */ + out[count] = nilObject; } ! *************** *** 241,656 **** }//namespace RobotFlow ! /*========================================================================= ! capture.cc ! ------------------------------------------------------------------------- ! Example code for video capture under Video4Linux II ! ------------------------------------------------------------------------- ! Copyright 1999, 2000 ! Anna Helena Reali Costa, James R. Bruce ! School of Computer Science ! Carnegie Mellon University ! ------------------------------------------------------------------------- ! This source code is distributed "as is" with absolutely no warranty. ! See LICENSE, which should be included with this distribution. ! ------------------------------------------------------------------------- ! Revision History: ! 2000-02-05: Ported to work with V4L2 API ! 1999-11-23: Quick C++ port to simplify & wrap in an object (jbruce) ! 1999-05-01: Initial version (annar) ! =========================================================================*/ ! ! //==== Capture Class Implementation =======================================// ! ! void grabSetFps(int fd, int fps) ! { ! ! struct v4l2_streamparm params; ! ! printf("called v4l2_set_fps with fps=%d\n",fps); ! params.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; ! ! if (EINVAL == ioctl(fd, VIDIOC_G_PARM, ¶ms)) { ! perror("VIDIOC_G_PARAM"); ! return; ! } ! ! params.parm.capture.capturemode |= V4L2_CAP_TIMEPERFRAME; ! params.parm.capture.timeperframe.numerator = 10000000; ! params.parm.capture.timeperframe.denominator = fps; ! ! if (EINVAL == ioctl(fd, VIDIOC_S_PARM, ¶ms)){ ! perror("VIDIOC_S_PARAM"); ! return; ! } ! ! } ! ! bool capture::initialize(const char *device,int nwidth,int nheight,int nfmt, bool continuous) ! { ! struct v4l2_requestbuffers req; ! struct v4l2_capability capability; ! struct v4l2_input inputs; ! struct v4l2_standard standard; ! v4l2_std_id std; ! ! int err; ! int i; ! ! // Set defaults if not given ! if(!device) device = DEFAULT_VIDEO_DEVICE; ! if(!nfmt) nfmt = DEFAULT_VIDEO_FORMAT; ! if(!nwidth || !nheight){ ! nwidth = DEFAULT_IMAGE_WIDTH; ! nheight = DEFAULT_IMAGE_HEIGHT; ! } ! ! // Open the video device ! vid_fd = open(device, O_RDWR); ! if(vid_fd == -1){ ! printf("Could not open video device [%s]\n",device); ! perror("Error : "); ! return(false); ! } ! ! //query device capabilities ! err = ioctl(vid_fd,VIDIOC_QUERYCAP, &capability); ! ! if(err == EINVAL) { ! perror("Unable to get capabilities (incompatible kernel) "); ! return false; ! } ! else { ! cerr<<"Got capabilities"<<endl; ! printf("Driver : %s \n",capability.driver); ! printf("Cart : %s \n",capability.card); ! printf("Cap : %x \n",capability.capabilities); ! if (capability.capabilities & V4L2_CAP_VIDEO_CAPTURE) { ! cerr<<"Video capture capable!"<<endl; ! } ! else { ! cerr<<"Capture card unrecognized!"<<endl; ! return false; ! } ! } ! ! //get input ! err = ioctl(vid_fd,VIDIOC_G_INPUT,&inputs); ! ! if (err == EINVAL) { ! perror("VIDIOC_G_INPUG "); ! return false; ! } ! ! ! //enum inputs ! err = ioctl(vid_fd, VIDIOC_ENUMINPUT, &inputs); ! ! if (err == EINVAL) { ! perror("VIDEOC_ENUMINPUT : "); ! return false; ! } ! else { ! cerr<<"input index "<<inputs.index<<endl; ! cerr<<"input name "<<inputs.name<<endl; ! cerr<<"input got signal " <<!(inputs.status & V4L2_IN_ST_NO_SIGNAL)<<endl; ! ! } ! ! //set standard to NTSC ! ! std = V4L2_STD_NTSC; ! ! if (EINVAL == ioctl(vid_fd,VIDIOC_S_STD,&std)) { ! perror("VIDIOC_S_STD"); ! return false; ! } ! ! ! if (EINVAL == ioctl(vid_fd,VIDIOC_G_STD,&std)) { ! perror("VIDIOC_G_STD"); ! return false; ! } ! ! //print standard description ! standard.index = 0; ! ! while(1) { ! ! if(EINVAL == ioctl (vid_fd, VIDIOC_ENUMSTD, &standard)) { ! //perror("VIDIOC_ENUMSTD"); ! ! //return false; ! break; ! } ! ! if (standard.id == std) { ! printf ("Current video standard: %s\n", standard.name); ! break; ! } ! ! standard.index++; ! } ! ! ! ! fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; ! ! ! err = ioctl(vid_fd, VIDIOC_G_FMT, &fmt); ! if(err){ ! perror("VIDIOC_G_FMT"); ! return(false); ! } ! ! ! // Set video format ! fmt.fmt.pix.width = nwidth; ! fmt.fmt.pix.height = nheight; ! fmt.fmt.pix.pixelformat = nfmt; ! ! if(EINVAL == ioctl(vid_fd, VIDIOC_S_FMT, &fmt)) { ! perror("S_FMT:"); ! return(false); ! } ! ! //Stop init here if standard I/O ! ! //setting 30 frames per second ! if (continuous) { ! grabSetFps(vid_fd, 30); ! ! ! // Request mmap-able capture buffers ! req.count = STREAMBUFS; ! req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; ! req.memory = V4L2_MEMORY_MMAP; ! ! err = ioctl(vid_fd, VIDIOC_REQBUFS, &req); ! if(err < 0 || req.count < 1){ ! printf("REQBUFS returned error %d, count %d\n", ! errno,req.count); ! return(false); ! } ! ! printf("mmapable buffers count : %i\n",req.count); ! ! ! //initialize memory map for each image buffer ! for(i=0; i<req.count; i++){ ! ! vimage[i].vidbuf.index = i; ! vimage[i].vidbuf.type = req.type; ! ! if(EINVAL == ioctl(vid_fd, VIDIOC_QUERYBUF, &vimage[i].vidbuf)) { ! perror("VIDIOC_QUERYBUF"); ! return(false); ! } ! ! //map memory ! vimage[i].data = (char*)mmap(NULL, ! vimage[i].vidbuf.length, ! PROT_READ | PROT_WRITE, ! MAP_SHARED, ! vid_fd, ! vimage[i].vidbuf.m.offset); ! ! if((int)vimage[i].data == -1){ ! perror("mmap error : "); ! return(false); ! } ! } ! ! //queue buffers ! for(i=0; i<req.count; i++){ ! if((err = ioctl(vid_fd, VIDIOC_QBUF, &vimage[i].vidbuf))){ ! perror("QBUF error"); ! return(false); ! } ! } ! ! // Turn on streaming capture ! if (EINVAL == ioctl(vid_fd, VIDIOC_STREAMON, &vimage[0].vidbuf.type)) { ! perror("VIDIOC_STREAMON"); ! return(false); ! } ! } ! ! width = nwidth; ! height = nheight; ! current = NULL; ! ! return(true); ! } ! ! void capture::close() ! { ! int i,t; ! ! if(vid_fd >= 0){ ! t = V4L2_BUF_TYPE_VIDEO_CAPTURE; ! ioctl(vid_fd, VIDIOC_STREAMOFF, &t); ! ! for(i=0; i<STREAMBUFS; i++){ ! if(vimage[i].data){ ! munmap(vimage[i].data,vimage[i].vidbuf.length); ! } ! } ! } ! } ! ! ! unsigned char *capture::captureFrame(int &index,int &field) ! { ! //if(captured_frame){ ! // printf("there may be a problem capturing frame w/o releasing previous frame"); ! //} ! // struct v4l2_buffer tempbuf; ! int err; ! ! fd_set rdset; ! struct timeval timeout; ! int n; ! struct v4l2_buffer tempbuf; ! ! FD_ZERO(&rdset); ! FD_SET(vid_fd, &rdset); ! timeout.tv_sec = 1; ! timeout.tv_usec = 0; ! n = select(vid_fd + 1, &rdset, NULL, NULL, &timeout); ! err = -1; ! if (n == -1) { ! fprintf(stderr, "select error.\n"); ! perror("select msg:"); ! } ! else if (n == 0) ! fprintf(stderr, "select timeout\n"); ! else if (FD_ISSET(vid_fd, &rdset)) ! err = 0; ! if(err) return(NULL); ! ! // Grab last frame ! do { ! //printf("D"); ! tempbuf.type = vimage[0].vidbuf.type; ! err = ioctl(vid_fd, VIDIOC_DQBUF, &tempbuf); ! if(err) { ! printf("4DQBUF returned error %d\n",errno); ! perror("DQBUF error:"); ! } ! ! //printf("S"); ! FD_ZERO(&rdset); ! FD_SET(vid_fd, &rdset); ! timeout.tv_sec = 0; ! timeout.tv_usec = 0; ! n = select(vid_fd + 1, &rdset, NULL, NULL, &timeout); ! // Uncomment this next line to see how many frames are being skipped. ! // 1=frame skipped, 0=frame used ! //printf("n%d",n); ! if(n==-1) { ! fprintf(stderr, "select error.\n"); ! perror("2select msg:"); ! } ! else if(n==0) { ! break; ! } ! ! if (!FD_ISSET(vid_fd, &rdset)) ! printf("huh\n"); ! ! //printf("Q"); ! err = ioctl(vid_fd, VIDIOC_QBUF, &tempbuf); ! if(err) { ! printf("3QBUF returned error %d\n",errno); ! perror("QBUF error:"); ! } ! } while(true); ! ! field = 0; ! ! if(tempbuf.flags & V4L2_FIELD_TOP) field = 1; ! if(tempbuf.flags & V4L2_FIELD_BOTTOM) field = 0; ! ! // Set current to point to captured frame data ! current = (unsigned char *)vimage[tempbuf.index].data; ! ///timestamp = tempbuf.timestamp; ! index = tempbuf.index; ! ! //cerr<<"grab index : "<<index<<endl; ! ! // gettimeofday(&timeout,NULL); ! // timestamp = (stamp_t)((timeout.tv_sec + timeout.tv_usec/1.0E6) * 1.0E9); ! // printf("field: %d\n",field); ! ! // Initiate the next capture ! //tempbuf.index = (++index - 1) % STREAMBUFS; ! //err = ioctl(vid_fd, VIDIOC_QBUF, &tempbuf); ! //if(err) printf("QBUF returned error %d\n",errno); ! ! captured_frame = true; ! return(current); ! } ! ! void capture::releaseFrame(unsigned char* frame, int index) ! { ! int err; ! struct v4l2_buffer tempbuf; ! //if(frame != current){ ! // printf("frame != current, possibly releasing the wrong frame."); ! //} ! captured_frame = false; ! // Initiate the next capture ! tempbuf.type = vimage[0].vidbuf.type; ! tempbuf.index=index; ! //printf("%lx %d\n",tempbuf.type,tempbuf.index); ! err = ioctl(vid_fd, VIDIOC_QBUF, &tempbuf); ! if(err) { ! printf("2QBUF returned error %d\n",errno); ! perror("QBUF error:"); ! } ! } ! ! struct v4l2_buffer tempbuf; ! ! unsigned char *capture::captureFrame() ! { ! // struct v4l2_buffer tempbuf; ! int err; ! ! fd_set rdset; ! struct timeval timeout; ! int n; ! ! FD_ZERO(&rdset); ! FD_SET(vid_fd, &rdset); ! timeout.tv_sec = 1; ! timeout.tv_usec = 0; ! n = select(vid_fd + 1, &rdset, NULL, NULL, &timeout); ! err = -1; ! if (n == -1) ! fprintf(stderr, "select error.\n"); ! else if (n == 0) ! fprintf(stderr, "select timeout\n"); ! else if (FD_ISSET(vid_fd, &rdset)) ! err = 0; ! if(err) return(NULL); ! ! // Grab last frame ! tempbuf.type = vimage[0].vidbuf.type; ! err = ioctl(vid_fd, VIDIOC_DQBUF, &tempbuf); ! if(err) printf("DQBUF returned error %d\n",errno); ! ! // Set current to point to captured frame data ! //cerr<<"Grab index : "<<tempbuf.index<<endl; ! ! current = (unsigned char *)vimage[tempbuf.index].data; ! //timestamp = tempbuf.timestamp; ! ! // Initiate the next capture ! err = ioctl(vid_fd, VIDIOC_QBUF, &tempbuf); ! if(err) printf("QBUF returned error %d\n",errno); ! ! return(current); ! } bool capture::set_auto_white_balance(bool white_balance) { --- 222,226 ---- }//namespace RobotFlow ! /* bool capture::set_auto_white_balance(bool white_balance) { *************** *** 738,739 **** --- 308,311 ---- } + */ + |
From: Dominic L. <ma...@us...> - 2005-10-19 20:20:27
|
Update of /cvsroot/robotflow/RobotFlow/Devices/include In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16126/include Modified Files: V4L2Capture.h Log Message: testing new driver Index: V4L2Capture.h =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Devices/include/V4L2Capture.h,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** V4L2Capture.h 14 Jun 2004 14:54:48 -0000 1.8 --- V4L2Capture.h 19 Oct 2005 20:20:19 -0000 1.9 *************** *** 1,112 **** ! /*========================================================================= ! capture.h ! ------------------------------------------------------------------------- ! Example code for video capture under Video4Linux II ! ------------------------------------------------------------------------- ! Copyright 1999, 2000 ! Anna Helena Reali Costa, James R. Bruce ! School of Computer Science ! Carnegie Mellon University ! ------------------------------------------------------------------------- ! This source code is distributed "as is" with absolutely no warranty. ! It is covered under the GNU General Public Licence, Version 2.0; ! See COPYING, which should be included with this distribution. ! ------------------------------------------------------------------------- ! Revision History: ! 2000-02-05: Ported to work with V4L2 API ! 1999-11-23: Quick C++ port to simplify & wrap in an object (jbruce) ! 1999-05-01: Initial version (annar) ! =========================================================================*/ ! ! #ifndef __CAPTURE_H__ ! #define __CAPTURE_H__ ! #include <sys/mman.h> ! #include <sys/ioctl.h> ! #include <sys/time.h> ! #include <fcntl.h> #include <stdlib.h> #include <unistd.h> - #include <stdio.h> #include <errno.h> ! // ! //#include <linux/fs.h> ! //#include <linux/kernel.h> ! //#include <linux/videodev.h> ! //#include "videodev.h" ! // ! #include <linux/fs.h> ! #include <linux/kernel.h> ! //#include <linux/videodev.h> /* Video for Linux Two */ ! //#include <linux/videodev2.h> ! //#include <linux/videodev.h> ! //fix for videodev ! //#include "videodevfix.h" ! #include "videodev2.h" ! #define DEFAULT_VIDEO_DEVICE "/dev/video" ! #define VIDEO_STANDARD "NTSC" ! #ifdef USE_METEOR ! #define DEFAULT_VIDEO_FORMAT V4L2_PIX_FMT_UYVY ! #else ! #define DEFAULT_VIDEO_FORMAT V4L2_PIX_FMT_YUYV ! #endif ! #define DEFAULT_IMAGE_WIDTH 320 ! #define DEFAULT_IMAGE_HEIGHT 240 ! // if you get a message like "DQBUF returned error", "DQBUF error: invalid" ! // then you need to use a higher value for STREAMBUFS or process frames faster ! #define STREAMBUFS 10 ! class capture { ! struct vimage_t { ! v4l2_buffer vidbuf; ! char *data; ! }; ! int vid_fd; // video device ! vimage_t vimage[STREAMBUFS]; // buffers for images ! struct v4l2_format fmt; // video format request ! unsigned char *current; // most recently captured frame ! // stamp_t timestamp; // frame time stamp ! int width,height; // dimensions of video frame ! struct v4l2_buffer tempbuf; ! bool captured_frame; ! public: ! capture() {vid_fd = 0; current=NULL; captured_frame = false;} ! ~capture() {close();} - bool initialize(const char *device,int nwidth,int nheight,int nfmt, bool continuous); - bool initialize(int nwidth,int nheight) - {return(initialize(NULL,nwidth,nheight,0,false));} - bool initialize() - {return(initialize(NULL,0,0,0,false));} - void close(); - int getFD(){return vid_fd;} - unsigned char *captureFrame(int &index,int &field); - unsigned char *captureFrame(); - void releaseFrame(unsigned char* frame, int index); ! unsigned char *getFrame() {return(current);} ! bool set_contrast(int contrast); ! bool set_brightness(int brightness); ! bool set_hue(int hue); ! bool set_saturation(int color); ! bool set_auto_white_balance(bool white_balance); ! //stamp_t getFrameTime() {return(timestamp);} ! //double getFrameTimeSec() {return(timestamp * 1.0E-9);} ! int getWidth() {return(width);} ! int getHeight() {return(height);} ! }; ! #endif // __CAPTURE_H__ --- 1,680 ---- ! #ifndef _V4L2CAPTURE_H_ ! /* ! * V4L2 video capture example ! */ + #include <stdio.h> #include <stdlib.h> + #include <string.h> + #include <assert.h> + + #include <getopt.h> /* getopt_long() */ + + #include <fcntl.h> /* low-level i/o */ #include <unistd.h> #include <errno.h> + #include <sys/stat.h> + #include <sys/types.h> + #include <sys/time.h> + #include <sys/mman.h> + #include <sys/ioctl.h> ! #include <asm/types.h> /* for videodev2.h */ ! #include <linux/videodev2.h> ! namespace RobotFlow { ! #define CLEAR(x) memset (&(x), 0, sizeof (x)) ! #define DEFAULT_DEVNAME "/dev/video0" ! #define DEFAULT_WIDTH 320 ! #define DEFAULT_HEIGHT 240 ! #define DEFAULT_FORMAT V4L2_PIX_FMT_RGB555 ! class capture { ! public: ! typedef enum { ! IO_METHOD_READ, ! IO_METHOD_MMAP, ! IO_METHOD_USERPTR, ! } io_method; ! struct buffer { ! void * start; ! size_t length; ! }; ! char * dev_name; ! io_method io; ! int fd; ! buffer * buffers; ! unsigned int n_buffers; ! capture() { ! //initialize variables ! dev_name = DEFAULT_DEVNAME; ! io = IO_METHOD_MMAP; ! fd = -1; ! buffers = NULL; ! n_buffers = 0; ! } ! void init(const char* devname, io_method method=IO_METHOD_MMAP) { ! //dev_name = devname; ! //io = method; ! open_device (); ! init_device (); ! start_capturing (); ! } ! ~capture() { ! stop_capturing (); ! uninit_device (); ! close_device (); ! } ! ! void errno_exit(const char *s) { ! fprintf (stderr, "%s error %d, %s\n", ! s, errno, strerror (errno)); ! ! exit (EXIT_FAILURE); ! } ! ! int xioctl(int fd, int request, void *arg) { ! int r; ! ! do r = ioctl (fd, request, arg); ! while (-1 == r && EINTR == errno); ! return r; ! } ! ! void process_image(const void *p) { ! fputc ('.', stdout); ! fflush (stdout); ! } ! ! int read_frame(void) { ! ! struct v4l2_buffer buf; ! unsigned int i; ! ! switch (io) { ! case IO_METHOD_READ: ! if (-1 == read (fd, buffers[0].start, buffers[0].length)) { ! switch (errno) { ! case EAGAIN: ! return 0; ! ! case EIO: ! /* Could ignore EIO, see spec. */ ! ! /* fall through */ ! ! default: ! errno_exit ("read"); ! } ! } ! ! process_image (buffers[0].start); ! ! break; ! ! case IO_METHOD_MMAP: ! CLEAR (buf); ! ! buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; ! buf.memory = V4L2_MEMORY_MMAP; ! ! if (-1 == xioctl (fd, VIDIOC_DQBUF, &buf)) { ! switch (errno) { ! case EAGAIN: ! return 0; ! ! case EIO: ! /* Could ignore EIO, see spec. */ ! ! /* fall through */ ! ! default: ! errno_exit ("VIDIOC_DQBUF"); ! } ! } ! ! assert (buf.index < n_buffers); ! ! process_image (buffers[buf.index].start); ! ! if (-1 == xioctl (fd, VIDIOC_QBUF, &buf)) ! errno_exit ("VIDIOC_QBUF"); ! ! break; ! ! case IO_METHOD_USERPTR: ! CLEAR (buf); ! ! buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; ! buf.memory = V4L2_MEMORY_USERPTR; ! ! if (-1 == xioctl (fd, VIDIOC_DQBUF, &buf)) { ! switch (errno) { ! case EAGAIN: ! return 0; ! ! case EIO: ! /* Could ignore EIO, see spec. */ ! ! /* fall through */ ! ! default: ! errno_exit ("VIDIOC_DQBUF"); ! } ! } ! ! for (i = 0; i < n_buffers; ++i) ! if (buf.m.userptr == (unsigned long) buffers[i].start ! && buf.length == buffers[i].length) ! break; ! ! assert (i < n_buffers); ! ! process_image ((void *) buf.m.userptr); ! ! if (-1 == xioctl (fd, VIDIOC_QBUF, &buf)) ! errno_exit ("VIDIOC_QBUF"); ! ! break; ! } ! ! return 1; ! } ! ! Image* mainloop (void) { ! ! for (;;) { ! fd_set fds; ! struct timeval tv; ! int r; ! ! FD_ZERO (&fds); ! FD_SET (fd, &fds); ! ! // Timeout ! tv.tv_sec = 2; ! tv.tv_usec = 0; ! ! r = select (fd + 1, &fds, NULL, NULL, &tv); ! ! if (-1 == r) { ! if (EINTR == errno) ! continue; ! ! errno_exit ("select"); ! } ! ! if (0 == r) { ! fprintf (stderr, "select timeout\n"); ! exit (EXIT_FAILURE); ! } ! ! if (read_frame ()) ! break; ! ! // EAGAIN - continue select loop. ! } ! ! return NULL; ! } ! ! void stop_capturing (void) { ! ! enum v4l2_buf_type type; ! ! switch (io) { ! case IO_METHOD_READ: ! // Nothing to do. ! break; ! ! case IO_METHOD_MMAP: ! case IO_METHOD_USERPTR: ! type = V4L2_BUF_TYPE_VIDEO_CAPTURE; ! ! if (-1 == xioctl (fd, VIDIOC_STREAMOFF, &type)) ! errno_exit ("VIDIOC_STREAMOFF"); ! ! break; ! } ! } ! ! void start_capturing(void) { ! unsigned int i; ! enum v4l2_buf_type type; ! ! switch (io) { ! case IO_METHOD_READ: ! // Nothing to do. ! break; ! ! case IO_METHOD_MMAP: ! for (i = 0; i < n_buffers; ++i) { ! struct v4l2_buffer buf; ! ! CLEAR (buf); ! ! buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; ! buf.memory = V4L2_MEMORY_MMAP; ! buf.index = i; ! ! if (-1 == xioctl (fd, VIDIOC_QBUF, &buf)) ! errno_exit ("VIDIOC_QBUF"); ! } ! ! type = V4L2_BUF_TYPE_VIDEO_CAPTURE; ! ! if (-1 == xioctl (fd, VIDIOC_STREAMON, &type)) ! errno_exit ("VIDIOC_STREAMON"); ! ! break; ! ! case IO_METHOD_USERPTR: ! for (i = 0; i < n_buffers; ++i) { ! struct v4l2_buffer buf; ! ! CLEAR (buf); ! ! buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; ! buf.memory = V4L2_MEMORY_USERPTR; ! buf.m.userptr = (unsigned long) buffers[i].start; ! buf.length = buffers[i].length; ! ! if (-1 == xioctl (fd, VIDIOC_QBUF, &buf)) ! errno_exit ("VIDIOC_QBUF"); ! } ! ! ! type = V4L2_BUF_TYPE_VIDEO_CAPTURE; ! ! if (-1 == xioctl (fd, VIDIOC_STREAMON, &type)) ! errno_exit ("VIDIOC_STREAMON"); ! ! break; ! } ! } ! ! void uninit_device(void) { ! unsigned int i; ! ! switch (io) { ! case IO_METHOD_READ: ! free (buffers[0].start); ! break; ! ! case IO_METHOD_MMAP: ! for (i = 0; i < n_buffers; ++i) ! if (-1 == munmap (buffers[i].start, buffers[i].length)) ! errno_exit ("munmap"); ! break; ! ! case IO_METHOD_USERPTR: ! for (i = 0; i < n_buffers; ++i) ! free (buffers[i].start); ! break; ! } ! ! free (buffers); ! } ! ! void init_read (unsigned int buffer_size) { ! buffers = (buffer*) calloc (1, sizeof (*buffers)); ! ! ! if (!buffers) { ! fprintf (stderr, "Out of memory\n"); ! exit (EXIT_FAILURE); ! } ! ! buffers[0].length = buffer_size; ! buffers[0].start = malloc (buffer_size); ! ! if (!buffers[0].start) { ! fprintf (stderr, "Out of memory\n"); ! exit (EXIT_FAILURE); ! } ! } ! ! void init_mmap (void) { ! struct v4l2_requestbuffers req; ! ! CLEAR (req); ! ! req.count = 4; ! req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; ! req.memory = V4L2_MEMORY_MMAP; ! ! if (-1 == xioctl (fd, VIDIOC_REQBUFS, &req)) { ! if (EINVAL == errno) { ! fprintf (stderr, "%s does not support " ! "memory mapping\n", dev_name); ! exit (EXIT_FAILURE); ! } else { ! errno_exit ("VIDIOC_REQBUFS"); ! } ! } ! ! if (req.count < 2) { ! fprintf (stderr, "Insufficient buffer memory on %s\n", ! dev_name); ! exit (EXIT_FAILURE); ! } ! ! buffers = (buffer*) calloc (req.count, sizeof (*buffers)); ! ! ! if (!buffers) { ! fprintf (stderr, "Out of memory\n"); ! exit (EXIT_FAILURE); ! } ! ! for (n_buffers = 0; n_buffers < req.count; ++n_buffers) { ! struct v4l2_buffer buf; ! ! CLEAR (buf); ! ! buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; ! buf.memory = V4L2_MEMORY_MMAP; ! buf.index = n_buffers; ! ! if (-1 == xioctl (fd, VIDIOC_QUERYBUF, &buf)) ! errno_exit ("VIDIOC_QUERYBUF"); ! ! buffers[n_buffers].length = buf.length; ! buffers[n_buffers].start = ! mmap (NULL /* start anywhere */, ! buf.length, ! PROT_READ | PROT_WRITE /* required */, ! MAP_SHARED /* recommended */, ! fd, buf.m.offset); ! ! if (MAP_FAILED == buffers[n_buffers].start) ! errno_exit ("mmap"); ! } ! } ! ! void init_userp (unsigned int buffer_size) { ! struct v4l2_requestbuffers req; ! ! CLEAR (req); ! ! req.count = 4; ! req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; ! req.memory = V4L2_MEMORY_USERPTR; ! ! if (-1 == xioctl (fd, VIDIOC_REQBUFS, &req)) { ! if (EINVAL == errno) { ! fprintf (stderr, "%s does not support " ! "user pointer i/o\n", dev_name); ! exit (EXIT_FAILURE); ! } else { ! errno_exit ("VIDIOC_REQBUFS"); ! } ! } ! ! buffers = (buffer*) calloc (4, sizeof (*buffers)); ! ! ! if (!buffers) { ! fprintf (stderr, "Out of memory\n"); ! exit (EXIT_FAILURE); ! } ! ! for (n_buffers = 0; n_buffers < 4; ++n_buffers) { ! buffers[n_buffers].length = buffer_size; ! buffers[n_buffers].start = malloc (buffer_size); ! ! if (!buffers[n_buffers].start) { ! fprintf (stderr, "Out of memory\n"); ! exit (EXIT_FAILURE); ! } ! } ! } ! ! void init_device (void) { ! struct v4l2_capability cap; ! struct v4l2_cropcap cropcap; ! struct v4l2_crop crop; ! struct v4l2_format fmt; ! unsigned int min; ! ! if (-1 == xioctl (fd, VIDIOC_QUERYCAP, &cap)) { ! if (EINVAL == errno) { ! fprintf (stderr, "%s is no V4L2 device\n", ! dev_name); ! exit (EXIT_FAILURE); ! } else { ! errno_exit ("VIDIOC_QUERYCAP"); ! } ! } ! ! if (!(cap.capabilities & V4L2_CAP_VIDEO_CAPTURE)) { ! fprintf (stderr, "%s is no video capture device\n", ! dev_name); ! exit (EXIT_FAILURE); ! } ! ! switch (io) { ! case IO_METHOD_READ: ! if (!(cap.capabilities & V4L2_CAP_READWRITE)) { ! fprintf (stderr, "%s does not support read i/o\n", ! dev_name); ! exit (EXIT_FAILURE); ! } ! ! break; ! ! case IO_METHOD_MMAP: ! case IO_METHOD_USERPTR: ! if (!(cap.capabilities & V4L2_CAP_STREAMING)) { ! fprintf (stderr, "%s does not support streaming i/o\n", ! dev_name); ! exit (EXIT_FAILURE); ! } ! ! break; ! } ! ! /* Select video input, video standard and tune here. */ ! ! cropcap.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; ! ! if (-1 == xioctl (fd, VIDIOC_CROPCAP, &cropcap)) { ! /* Errors ignored. */ ! } ! ! crop.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; ! crop.c = cropcap.defrect; /* reset to default */ ! ! if (-1 == xioctl (fd, VIDIOC_S_CROP, &crop)) { ! switch (errno) { ! case EINVAL: ! /* Cropping not supported. */ ! break; ! default: ! /* Errors ignored. */ ! break; ! } ! } ! ! CLEAR (fmt); ! ! fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; ! fmt.fmt.pix.width = DEFAULT_WIDTH; ! fmt.fmt.pix.height = DEFAULT_HEIGHT; ! fmt.fmt.pix.pixelformat = DEFAULT_FORMAT; ! fmt.fmt.pix.field = V4L2_FIELD_INTERLACED; ! ! if (-1 == xioctl (fd, VIDIOC_S_FMT, &fmt)) ! errno_exit ("VIDIOC_S_FMT"); ! ! /* Note VIDIOC_S_FMT may change width and height. */ ! ! /* Buggy driver paranoia. */ ! min = fmt.fmt.pix.width * 2; ! if (fmt.fmt.pix.bytesperline < min) ! fmt.fmt.pix.bytesperline = min; ! min = fmt.fmt.pix.bytesperline * fmt.fmt.pix.height; ! if (fmt.fmt.pix.sizeimage < min) ! fmt.fmt.pix.sizeimage = min; ! ! switch (io) { ! case IO_METHOD_READ: ! init_read (fmt.fmt.pix.sizeimage); ! break; ! ! case IO_METHOD_MMAP: ! init_mmap (); ! break; ! ! case IO_METHOD_USERPTR: ! init_userp (fmt.fmt.pix.sizeimage); ! break; ! } ! } ! ! void close_device(void) ! { ! if (-1 == close (fd)) ! errno_exit ("close"); ! ! fd = -1; ! } ! ! void open_device(void) { ! struct stat st; ! ! if (-1 == stat (dev_name, &st)) { ! fprintf (stderr, "Cannot identify '%s': %d, %s\n", ! dev_name, errno, strerror (errno)); ! exit (EXIT_FAILURE); ! } ! ! if (!S_ISCHR (st.st_mode)) { ! fprintf (stderr, "%s is no device\n", dev_name); ! exit (EXIT_FAILURE); ! } ! ! fd = open (dev_name, O_RDWR /* required */ | O_NONBLOCK, 0); ! ! if (-1 == fd) { ! fprintf (stderr, "Cannot open '%s': %d, %s\n", ! dev_name, errno, strerror (errno)); ! exit (EXIT_FAILURE); ! } ! } ! ! ! /* ! static void ! usage (FILE * fp, ! int argc, ! char ** argv) ! { ! fprintf (fp, ! "Usage: %s [options]\n\n" ! "Options:\n" ! "-d | --device name Video device name [/dev/video]\n" ! "-h | --help Print this message\n" ! "-m | --mmap Use memory mapped buffers\n" ! "-r | --read Use read() calls\n" ! "-u | --userp Use application allocated buffers\n" ! "", ! argv[0]); ! } ! ! static const char short_options [] = "d:hmru"; ! ! static const struct option ! long_options [] = { ! { "device", required_argument, NULL, 'd' }, ! { "help", no_argument, NULL, 'h' }, ! { "mmap", no_argument, NULL, 'm' }, ! { "read", no_argument, NULL, 'r' }, ! { "userp", no_argument, NULL, 'u' }, ! { 0, 0, 0, 0 } ! }; ! */ ! /* ! int ! main (int argc, ! char ** argv) ! { ! dev_name = "/dev/video"; ! ! for (;;) { ! int index; ! int c; ! ! c = getopt_long (argc, argv, ! short_options, long_options, ! &index); ! ! if (-1 == c) ! break; ! ! switch (c) { ! case 0: ! break; ! ! case 'd': ! dev_name = optarg; ! break; ! ! case 'h': ! usage (stdout, argc, argv); ! exit (EXIT_SUCCESS); ! ! case 'm': ! io = IO_METHOD_MMAP; ! break; ! ! case 'r': ! io = IO_METHOD_READ; ! break; ! ! case 'u': ! io = IO_METHOD_USERPTR; ! break; ! ! default: ! usage (stderr, argc, argv); ! exit (EXIT_FAILURE); ! } ! } ! ! open_device (); ! ! init_device (); ! ! start_capturing (); ! ! mainloop (); ! ! stop_capturing (); ! ! uninit_device (); ! ! close_device (); ! ! exit (EXIT_SUCCESS); ! ! return 0; ! } ! */ ! };//class capture ! }//namespace RobotFlow ! #endif |
From: Dominic L. <ma...@us...> - 2005-10-19 18:29:29
|
Update of /cvsroot/robotflow/RobotFlow/Devices/include In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21473 Modified Files: videodev.h videodev2.h Log Message: updated videodev Index: videodev2.h =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Devices/include/videodev2.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** videodev2.h 4 Mar 2004 14:51:05 -0000 1.1 --- videodev2.h 19 Oct 2005 18:29:16 -0000 1.2 *************** *** 17,22 **** #include <linux/time.h> /* need struct timeval */ #endif ! ! #include "videodevfix.h" /* --- 17,21 ---- #include <linux/time.h> /* need struct timeval */ #endif ! #include <linux/compiler.h> /* need __user */ /* *************** *** 80,83 **** --- 79,83 ---- V4L2_TUNER_RADIO = 1, V4L2_TUNER_ANALOG_TV = 2, + V4L2_TUNER_DIGITAL_TV = 3, }; *************** *** 98,109 **** /* HD and modern captures. */ V4L2_COLORSPACE_REC709 = 3, ! /* broken BT878 extents (601, luma range 16-253 instead of 16-235) */ V4L2_COLORSPACE_BT878 = 4, ! /* These should be useful. Assume 601 extents. */ V4L2_COLORSPACE_470_SYSTEM_M = 5, V4L2_COLORSPACE_470_SYSTEM_BG = 6, ! /* I know there will be cameras that send this. So, this is * unspecified chromaticities and full 0-255 on each of the --- 98,109 ---- /* HD and modern captures. */ V4L2_COLORSPACE_REC709 = 3, ! /* broken BT878 extents (601, luma range 16-253 instead of 16-235) */ V4L2_COLORSPACE_BT878 = 4, ! /* These should be useful. Assume 601 extents. */ V4L2_COLORSPACE_470_SYSTEM_M = 5, V4L2_COLORSPACE_470_SYSTEM_BG = 6, ! /* I know there will be cameras that send this. So, this is * unspecified chromaticities and full 0-255 on each of the *************** *** 111,115 **** */ V4L2_COLORSPACE_JPEG = 7, ! /* For RGB colourspaces, this is probably a good start. */ V4L2_COLORSPACE_SRGB = 8, --- 111,115 ---- */ V4L2_COLORSPACE_JPEG = 7, ! /* For RGB colourspaces, this is probably a good start. */ V4L2_COLORSPACE_SRGB = 8, *************** *** 210,213 **** --- 210,216 ---- #define V4L2_PIX_FMT_HI240 v4l2_fourcc('H','I','2','4') /* 8 8-bit color */ + /* see http://www.siliconimaging.com/RGB%20Bayer.htm */ + #define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B','A','8','1') /* 8 BGBG.. GRGR.. */ + /* compressed formats */ #define V4L2_PIX_FMT_MJPEG v4l2_fourcc('M','J','P','G') /* Motion-JPEG */ *************** *** 218,221 **** --- 221,225 ---- /* Vendor-specific formats */ #define V4L2_PIX_FMT_WNVA v4l2_fourcc('W','N','V','A') /* Winnov hw compress */ + #define V4L2_PIX_FMT_SN9C10X v4l2_fourcc('S','9','1','0') /* SN9C10x compression */ /* *************** *** 265,326 **** /* ! * C O M P R E S S I O N P A R A M E T E R S */ - #if 0 - /* ### generic compression settings don't work, there is too much - * ### codec-specific stuff. Maybe reuse that for MPEG codec settings - * ### later ... */ - struct v4l2_compression - { - __u32 quality; - __u32 keyframerate; - __u32 pframerate; - __u32 reserved[5]; - /* what we'll need for MPEG, extracted from some postings on - the v4l list (Gert Vervoort, PlasmaJohn). ! system stream: ! - type: elementary stream(ES), packatised elementary stream(s) (PES) ! program stream(PS), transport stream(TS) ! - system bitrate ! - PS packet size (DVD: 2048 bytes, VCD: 2324 bytes) ! - TS video PID ! - TS audio PID ! - TS PCR PID ! - TS system information tables (PAT, PMT, CAT, NIT and SIT) ! - (MPEG-1 systems stream vs. MPEG-2 program stream (TS not supported ! by MPEG-1 systems) ! audio: ! - type: MPEG (+Layer I,II,III), AC-3, LPCM ! - bitrate ! - sampling frequency (DVD: 48 Khz, VCD: 44.1 KHz, 32 kHz) ! - Trick Modes? (ff, rew) ! - Copyright ! - Inverse Telecine ! video: ! - picturesize (SIF, 1/2 D1, 2/3 D1, D1) and PAL/NTSC norm can be set ! through excisting V4L2 controls ! - noise reduction, parameters encoder specific? ! - MPEG video version: MPEG-1, MPEG-2 ! - GOP (Group Of Pictures) definition: ! - N: number of frames per GOP ! - M: distance between reference (I,P) frames ! - open/closed GOP ! - quantiser matrix: inter Q matrix (64 bytes) and intra Q matrix (64 bytes) ! - quantiser scale: linear or logarithmic ! - scanning: alternate or zigzag ! - bitrate mode: CBR (constant bitrate) or VBR (variable bitrate). ! - target video bitrate for CBR ! - target video bitrate for VBR ! - maximum video bitrate for VBR - min. quantiser value for VBR ! - max. quantiser value for VBR ! - adaptive quantisation value ! - return the number of bytes per GOP or bitrate for bitrate monitoring ! */ }; #endif --- 269,358 ---- + #if 1 /* ! * M P E G C O M P R E S S I O N P A R A M E T E R S ! * ! * ### WARNING: this is still work-in-progress right now, most likely ! * ### there will be some incompatible changes. ! * */ ! enum v4l2_bitrate_mode { ! V4L2_BITRATE_NONE = 0, /* not specified */ ! V4L2_BITRATE_CBR, /* constant bitrate */ ! V4L2_BITRATE_VBR, /* variable bitrate */ ! }; ! struct v4l2_bitrate { ! /* rates are specified in kbit/sec */ ! enum v4l2_bitrate_mode mode; ! __u32 min; ! __u32 target; /* use this one for CBR */ ! __u32 max; ! }; ! enum v4l2_mpeg_streamtype { ! V4L2_MPEG_SS_1, /* MPEG-1 system stream */ ! V4L2_MPEG_PS_2, /* MPEG-2 program stream */ ! V4L2_MPEG_TS_2, /* MPEG-2 transport stream */ ! V4L2_MPEG_PS_DVD, /* MPEG-2 program stream with DVD header fixups */ ! }; ! enum v4l2_mpeg_audiotype { ! V4L2_MPEG_AU_2_I, /* MPEG-2 layer 1 */ ! V4L2_MPEG_AU_2_II, /* MPEG-2 layer 2 */ ! V4L2_MPEG_AU_2_III, /* MPEG-2 layer 3 */ ! V4L2_MPEG_AC3, /* AC3 */ ! V4L2_MPEG_LPCM, /* LPCM */ ! }; ! enum v4l2_mpeg_videotype { ! V4L2_MPEG_VI_1, /* MPEG-1 */ ! V4L2_MPEG_VI_2, /* MPEG-2 */ ! }; ! enum v4l2_mpeg_aspectratio { ! V4L2_MPEG_ASPECT_SQUARE = 1, /* square pixel */ ! V4L2_MPEG_ASPECT_4_3 = 2, /* 4 : 3 */ ! V4L2_MPEG_ASPECT_16_9 = 3, /* 16 : 9 */ ! V4L2_MPEG_ASPECT_1_221 = 4, /* 1 : 2,21 */ ! }; ! struct v4l2_mpeg_compression { ! /* general */ ! enum v4l2_mpeg_streamtype st_type; ! struct v4l2_bitrate st_bitrate; ! /* transport streams */ ! __u16 ts_pid_pmt; ! __u16 ts_pid_audio; ! __u16 ts_pid_video; ! __u16 ts_pid_pcr; ! ! /* program stream */ ! __u16 ps_size; ! __u16 reserved_1; /* align */ ! ! /* audio */ ! enum v4l2_mpeg_audiotype au_type; ! struct v4l2_bitrate au_bitrate; ! __u32 au_sample_rate; ! __u8 au_pesid; ! __u8 reserved_2[3]; /* align */ ! ! /* video */ ! enum v4l2_mpeg_videotype vi_type; ! enum v4l2_mpeg_aspectratio vi_aspect_ratio; ! struct v4l2_bitrate vi_bitrate; ! __u32 vi_frame_rate; ! __u16 vi_frames_per_gop; ! __u16 vi_bframes_count; ! __u8 vi_pesid; ! __u8 reserved_3[3]; /* align */ ! ! /* misc flags */ ! __u32 closed_gops:1; ! __u32 pulldown:1; ! __u32 reserved_4:30; /* align */ ! ! /* I don't expect the above being perfect yet ;) */ ! __u32 reserved_5[8]; }; #endif *************** *** 334,341 **** int APP_len; /* Length of data in JPEG APPn segment */ char APP_data[60]; /* Data in the JPEG APPn segment. */ ! int COM_len; /* Length of data in JPEG COM segment */ char COM_data[60]; /* Data in JPEG COM segment */ ! __u32 jpeg_markers; /* Which markers should go into the JPEG * output. Unless you exactly know what --- 366,373 ---- int APP_len; /* Length of data in JPEG APPn segment */ char APP_data[60]; /* Data in the JPEG APPn segment. */ ! int COM_len; /* Length of data in JPEG COM segment */ char COM_data[60]; /* Data in JPEG COM segment */ ! __u32 jpeg_markers; /* Which markers should go into the JPEG * output. Unless you exactly know what *************** *** 347,351 **** * is influenced by APP_len and COM_len * ONLY, not by this property! */ ! #define V4L2_JPEG_MARKER_DHT (1<<3) /* Define Huffman Tables */ #define V4L2_JPEG_MARKER_DQT (1<<4) /* Define Quantization Tables */ --- 379,383 ---- * is influenced by APP_len and COM_len * ONLY, not by this property! */ ! #define V4L2_JPEG_MARKER_DHT (1<<3) /* Define Huffman Tables */ #define V4L2_JPEG_MARKER_DQT (1<<4) /* Define Quantization Tables */ *************** *** 386,391 **** } m; __u32 length; ! ! __u32 reserved[2]; }; --- 418,423 ---- } m; __u32 length; ! __u32 input; ! __u32 reserved; }; *************** *** 398,401 **** --- 430,434 ---- #define V4L2_BUF_FLAG_BFRAME 0x0020 /* Image is a B-frame */ #define V4L2_BUF_FLAG_TIMECODE 0x0100 /* timecode field is valid */ + #define V4L2_BUF_FLAG_INPUT 0x0200 /* input field is valid */ /* *************** *** 432,438 **** enum v4l2_field field; __u32 chromakey; ! struct v4l2_clip *clips; __u32 clipcount; ! void *bitmap; }; --- 465,471 ---- enum v4l2_field field; __u32 chromakey; ! struct v4l2_clip __user *clips; __u32 clipcount; ! void __user *bitmap; }; *************** *** 469,473 **** struct v4l2_cropcap { ! enum v4l2_buf_type type; struct v4l2_rect bounds; struct v4l2_rect defrect; --- 502,506 ---- struct v4l2_cropcap { ! enum v4l2_buf_type type; struct v4l2_rect bounds; struct v4l2_rect defrect; *************** *** 529,538 **** #define V4L2_STD_NTSC (V4L2_STD_NTSC_M |\ V4L2_STD_NTSC_M_JP) #define V4L2_STD_SECAM (V4L2_STD_SECAM_B |\ - V4L2_STD_SECAM_D |\ V4L2_STD_SECAM_G |\ V4L2_STD_SECAM_H |\ ! V4L2_STD_SECAM_K |\ ! V4L2_STD_SECAM_K1 |\ V4L2_STD_SECAM_L) --- 562,572 ---- #define V4L2_STD_NTSC (V4L2_STD_NTSC_M |\ V4L2_STD_NTSC_M_JP) + #define V4L2_STD_SECAM_DK (V4L2_STD_SECAM_D |\ + V4L2_STD_SECAM_K |\ + V4L2_STD_SECAM_K1) #define V4L2_STD_SECAM (V4L2_STD_SECAM_B |\ V4L2_STD_SECAM_G |\ V4L2_STD_SECAM_H |\ ! V4L2_STD_SECAM_DK |\ V4L2_STD_SECAM_L) *************** *** 544,547 **** --- 578,583 ---- V4L2_STD_PAL_Nc |\ V4L2_STD_SECAM) + #define V4L2_STD_ATSC (V4L2_STD_ATSC_8_VSB |\ + V4L2_STD_ATSC_16_VSB) #define V4L2_STD_UNKNOWN 0 *************** *** 834,840 **** #define VIDIOC_G_FMT _IOWR ('V', 4, struct v4l2_format) #define VIDIOC_S_FMT _IOWR ('V', 5, struct v4l2_format) ! #if 0 ! #define VIDIOC_G_COMP _IOR ('V', 6, struct v4l2_compression) ! #define VIDIOC_S_COMP _IOW ('V', 7, struct v4l2_compression) #endif #define VIDIOC_REQBUFS _IOWR ('V', 8, struct v4l2_requestbuffers) --- 870,876 ---- #define VIDIOC_G_FMT _IOWR ('V', 4, struct v4l2_format) #define VIDIOC_S_FMT _IOWR ('V', 5, struct v4l2_format) ! #if 1 /* experimental */ ! #define VIDIOC_G_MPEGCOMP _IOR ('V', 6, struct v4l2_mpeg_compression) ! #define VIDIOC_S_MPEGCOMP _IOW ('V', 7, struct v4l2_mpeg_compression) #endif #define VIDIOC_REQBUFS _IOWR ('V', 8, struct v4l2_requestbuffers) *************** *** 872,876 **** #define VIDIOC_G_FREQUENCY _IOWR ('V', 56, struct v4l2_frequency) #define VIDIOC_S_FREQUENCY _IOW ('V', 57, struct v4l2_frequency) ! #define VIDIOC_CROPCAP _IOR ('V', 58, struct v4l2_cropcap) #define VIDIOC_G_CROP _IOWR ('V', 59, struct v4l2_crop) #define VIDIOC_S_CROP _IOW ('V', 60, struct v4l2_crop) --- 908,912 ---- #define VIDIOC_G_FREQUENCY _IOWR ('V', 56, struct v4l2_frequency) #define VIDIOC_S_FREQUENCY _IOW ('V', 57, struct v4l2_frequency) ! #define VIDIOC_CROPCAP _IOWR ('V', 58, struct v4l2_cropcap) #define VIDIOC_G_CROP _IOWR ('V', 59, struct v4l2_crop) #define VIDIOC_S_CROP _IOW ('V', 60, struct v4l2_crop) *************** *** 890,893 **** --- 926,930 ---- #define VIDIOC_G_AUDIO_OLD _IOWR ('V', 33, struct v4l2_audio) #define VIDIOC_G_AUDOUT_OLD _IOWR ('V', 49, struct v4l2_audioout) + #define VIDIOC_CROPCAP_OLD _IOR ('V', 58, struct v4l2_cropcap) #define BASE_VIDIOC_PRIVATE 192 /* 192-255 are private */ Index: videodev.h =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Devices/include/videodev.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** videodev.h 29 May 2002 20:15:47 -0000 1.1 --- videodev.h 19 Oct 2005 18:29:14 -0000 1.2 *************** *** 1,1004 **** - /* - * Video for Linux Two - * - * Header file for v4l or V4L2 drivers and applications, for - * Linux kernels 2.2.x or 2.4.x. - * - * Author: Bill Dirks <bd...@pa...> - * Justin Schoeman - * et al. - */ [...1360 lines suppressed...] ! #define VID_HARDWARE_OV511 27 #define VID_HARDWARE_ZR356700 28 /* Zoran 36700 series */ ! #define VID_HARDWARE_W9966 29 ! #define VID_HARDWARE_SE401 30 /* SE401 USB webcams */ ! #define VID_HARDWARE_PWC 31 /* Philips webcams */ ! #define VID_HARDWARE_MEYE 32 /* Sony Vaio MotionEye cameras */ ! #define VID_HARDWARE_CPIA2 33 ! #define VID_HARDWARE_VICAM 34 ! #define VID_HARDWARE_SF16FMR2 35 ! #define VID_HARDWARE_W9968CF 36 ! #define VID_HARDWARE_SAA7114H 37 ! #define VID_HARDWARE_SN9C102 38 ! #define VID_HARDWARE_ARV 39 ! #endif /* __LINUX_VIDEODEV_H */ ! /* ! * Local variables: ! * c-basic-offset: 8 ! * End: ! */ |
From: MagellanPro <mag...@us...> - 2005-10-18 19:00:50
|
Update of /cvsroot/robotflow/RobotFlow/Vision/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31054 Modified Files: ExtractSentence_v2.cc Log Message: removed leading spaces Index: ExtractSentence_v2.cc =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Vision/src/ExtractSentence_v2.cc,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** ExtractSentence_v2.cc 13 Jun 2005 15:30:28 -0000 1.5 --- ExtractSentence_v2.cc 18 Oct 2005 19:00:41 -0000 1.6 *************** *** 219,229 **** for (list<vector<vector<float> > >::iterator iter = vect_list.begin(); iter != vect_list.end(); iter++) { ! sentence += find_word((*iter),dict); ! sentence += " "; } ! original_sentence += "\n"; ! sentence += "\n"; // end of line symbol } --- 219,236 ---- for (list<vector<vector<float> > >::iterator iter = vect_list.begin(); iter != vect_list.end(); iter++) { ! string new_word(find_word((*iter),dict)); ! if (!new_word.empty()) { ! sentence += new_word; ! sentence += " "; ! } } ! ! if (!original_sentence.empty()) { ! original_sentence += "\n"; ! } ! if (!sentence.empty()) { sentence += "\n"; // end of line symbol + } } *************** *** 344,348 **** //discard words will too small prob if (pow(best_prob,1.0f/prob.size()) < m_minDictScore) ! return string("?"); //return best hit --- 351,355 ---- //discard words will too small prob if (pow(best_prob,1.0f/prob.size()) < m_minDictScore) ! return string(); //return best hit *************** *** 369,373 **** number += '0'+best_id; } ! } return number; } --- 376,380 ---- number += '0'+best_id; } ! } return number; } |
From: Dominic L. <ma...@us...> - 2005-10-18 12:03:08
|
Update of /cvsroot/robotflow/RobotFlow/html In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19472 Modified Files: home.html robotflow.webprj Log Message: added OpenCV and MARIE Index: robotflow.webprj =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/html/robotflow.webprj,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** robotflow.webprj 4 Nov 2004 19:53:33 -0000 1.11 --- robotflow.webprj 18 Oct 2005 12:02:58 -0000 1.12 *************** *** 36,42 **** <item url="images/SymbolRecogDemo2.jpg" uploadstatus="0" /> <item url="images/SymbolRecogDemo3.jpg" uploadstatus="0" /> - <treestatus> - <openfolder url="images" /> - </treestatus> </project> </webproject> --- 36,39 ---- Index: home.html =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/html/home.html,v retrieving revision 1.32 retrieving revision 1.33 diff -C2 -d -r1.32 -r1.33 *** home.html 5 Oct 2005 18:00:22 -0000 1.32 --- home.html 18 Oct 2005 12:02:58 -0000 1.33 *************** *** 43,51 **** written in C++ and provide <b>fully customizable control and processing blocks</b> : <p> - Drivers & interfaces for <a href="http://www.activrobots.com">Pioneer2 Robots</a><br> ! - Vision processing algorithms (color training & tracking, etc.)<br> - <a href="http://playerstage.sourceforge.net/">Player / Stage </a>simulator drivers for FlowDesigner/RobotFlow<br> - - Signal processing algorithms (audio + video)<br> - Basic Behaviors<br> - Fuzzy Logic control<br> --- 43,52 ---- written in C++ and provide <b>fully customizable control and processing blocks</b> : <p> + - <a href="http://marie.sourceforge.net">MARIE interface blocks</a><br> + - <a href="http://sourceforge.net/projects/opencvlibrary/">OpenCV image processing blocks (under development)</a><br> - Drivers & interfaces for <a href="http://www.activrobots.com">Pioneer2 Robots</a><br> ! - Vision processing algorithms (color training & tracking)<br> - <a href="http://playerstage.sourceforge.net/">Player / Stage </a>simulator drivers for FlowDesigner/RobotFlow<br> - Basic Behaviors<br> - Fuzzy Logic control<br> *************** *** 53,57 **** - Embedded super blocks (subnets, iterators)<br> - Basic networking (TCP/IP, broadcast)<br> ! - Device control (Sony EVI-D30, SICK lasers, etc.)<br> - Finite State Machine (beta)<br> <br> --- 54,58 ---- - Embedded super blocks (subnets, iterators)<br> - Basic networking (TCP/IP, broadcast)<br> ! - Device control (Sony EVI-D30, Sony SNC-RZ30 network camera, SICK lasers, etc.)<br> - Finite State Machine (beta)<br> <br> |
From: Nicolas P. <Nic...@US...> - 2005-10-12 19:23:59
|
Hi, I reinstall (make clean) FlowDesigner 0.9.0 and RobotFlow 0.2.6 and everything is ok now ! chears, Nicolas Paquin Selon Nicolas Paquin <Nic...@US...>: > Hi, > > While using latest versions of RobotFlow and FlowDesigner, we got this error > : > > > > Loading /usr/local/lib/flowdesigner/toolbox/RobotFlow/lib/Behaviors.tlb... > Toolbox load error: > /usr/local/lib/flowdesigner/toolbox/RobotFlow/lib/Behaviors.tlb: undefined > symbol: _ZTIN9RobotFlow14ComponentsDataE > [Error] > Loading /usr/local/lib/flowdesigner/toolbox/RobotFlow/lib/Audio.tlb... [OK] > Loading /usr/local/lib/flowdesigner/toolbox/RobotFlow/lib/Vision.tlb... [OK] > Loading /usr/local/lib/flowdesigner/toolbox/RobotFlow/lib/Control.tlb... > Version > mismatch: trying to link libflow version 0.9.0 with code compiled for version > .. > > We tried to recompile RobotFlow, but it doesn't work. Any idea about the > origin > of the problem? > > Thanks, > > > Nicolas Paquin > > > ------------------------------------------------------- > This SF.Net email is sponsored by: > Power Architecture Resource Center: Free content, downloads, discussions, > and more. http://solutions.newsforge.com/ibmarch.tmpl > _______________________________________________ > Robotflow-cvs mailing list > Rob...@li... > https://lists.sourceforge.net/lists/listinfo/robotflow-cvs > > |
From: Nicolas P. <Nic...@US...> - 2005-10-11 21:30:09
|
Hi, While using latest versions of RobotFlow and FlowDesigner, we got this error : Loading /usr/local/lib/flowdesigner/toolbox/RobotFlow/lib/Behaviors.tlb... Toolbox load error: /usr/local/lib/flowdesigner/toolbox/RobotFlow/lib/Behaviors.tlb: undefined symbol: _ZTIN9RobotFlow14ComponentsDataE [Error] Loading /usr/local/lib/flowdesigner/toolbox/RobotFlow/lib/Audio.tlb... [OK] Loading /usr/local/lib/flowdesigner/toolbox/RobotFlow/lib/Vision.tlb... [OK] Loading /usr/local/lib/flowdesigner/toolbox/RobotFlow/lib/Control.tlb... Version mismatch: trying to link libflow version 0.9.0 with code compiled for version .. We tried to recompile RobotFlow, but it doesn't work. Any idea about the origin of the problem? Thanks, Nicolas Paquin |
From: Dominic L. <ma...@us...> - 2005-10-05 18:13:59
|
Update of /cvsroot/robotflow/RobotFlow/html In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1668 Modified Files: doc.html download.html nodes.html Log Message: nodes list Index: download.html =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/html/download.html,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** download.html 16 Nov 2004 14:23:26 -0000 1.16 --- download.html 5 Oct 2005 18:13:46 -0000 1.17 *************** *** 11,15 **** <tr> <td width="15%"><b>16/11/2004</b></td> ! <td width="85%"><a href="http://sourceforge.net/project/showfiles.php?group_id=51402">Latest version is : RobotFlow-0.2.5</a></td> </tr> </table> --- 11,15 ---- <tr> <td width="15%"><b>16/11/2004</b></td> ! <td width="85%"><a href="http://sourceforge.net/project/showfiles.php?group_id=51402">Latest version is : RobotFlow-0.2.6</a></td> </tr> </table> Index: nodes.html =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/html/nodes.html,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** nodes.html 26 Oct 2004 19:16:15 -0000 1.4 --- nodes.html 5 Oct 2005 18:13:46 -0000 1.5 *************** *** 11,32 **** <br><table BORDER COLS=2 WIDTH="40% " NOSAVE > ! <tr><td>* <a href="#RobotFlow:Vision">RobotFlow:Vision</a></td> <td>* <a href="#RobotFlow:MARIE:COMMAND">RobotFlow:MARIE:COMMAND</a></td></tr> ! <tr><td>* <a href="#RobotFlow:Robots">RobotFlow:Robots</a></td> <td>* <a href="#RobotFlow:LABORIUS">RobotFlow:LABORIUS</a></td></tr> ! <tr><td>* <a href="#RobotFlow:Probes">RobotFlow:Probes</a></td> <td>* <a href="#RobotFlow:Generic">RobotFlow:Generic</a></td></tr> ! <tr><td>* <a href="#RobotFlow:Player">RobotFlow:Player</a></td> <td>* <a href="#RobotFlow:FSM">RobotFlow:FSM</a></td></tr> [...2660 lines suppressed...] + Compute a CommandCamera from a DataLocalisation<br> + <table BORDER COLS=4 WIDTH="75%" NOSAVE > + <tr> + <td WIDTH="10%"></td> + <th WIDTH="15%">NAME</th> + <th WIDTH="10%">TYPE</th> + <th WIDTH="40%">MEANING</th> + </tr> + <tr NOSAVE> + <th WIDTH="10%" ROWSPAN="#3">Inputs</th> + <td WIDTH="15%">DATA_LOCALISATION</td><td WIDTH="15%">MarieObject</td><td WIDTH="40%">MarieObject object containing a DataLocalisation data</td></tr><td WIDTH="15%">ACTIVATED</td><td WIDTH="15%">bool</td><td WIDTH="40%">Behavior activation</td></tr><td WIDTH="15%">PARAMS</td><td WIDTH="15%">string</td><td WIDTH="40%">rotation speed and escape state in string format (in this order)</td></tr></tr> + <tr NOSAVE> + <th WIDTH="10%" ROWSPAN="#3">Outputs</th> + <td WIDTH="15%">EXPLOITATION</td><td WIDTH="15%">any</td><td WIDTH="40%">Behavior exploitation</td></tr><td WIDTH="15%">PAN</td><td WIDTH="15%">float</td><td WIDTH="40%">pan in degree computed from DATA_LOCALISATION</td></tr><td WIDTH="15%">TILT</td><td WIDTH="15%">float</td><td WIDTH="40%">tilt in degree computed from DATA_LOCALISATION</td></tr></tr> + <tr NOSAVE> + <th WIDTH="10%">Parameters</th> + <td WIDTH="15%">TRACK_STRONGEST</td><td WIDTH="10%">bool</td><td WIDTH="40%">Track the strongest (most active) source instead of the oldest</td></tr> + </table> <br>Return to: <a href="#RobotFlow:Behaviors">RobotFlow:Behaviors</a><br><br>See next category: <a href="#-">-</a><br><br>Return to: <a href="#Categories of available FlowDesigner nodes">Categories of available FlowDesigner nodes</a><br> </body> Index: doc.html =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/html/doc.html,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** doc.html 26 Oct 2004 19:17:27 -0000 1.17 --- doc.html 5 Oct 2005 18:13:46 -0000 1.18 *************** *** 25,29 **** <td><b>FlowDesigner</b></td> <td>FlowDesigner documentation</td> ! <td>0.8</td> <td><a href="http://flowdesigner.sourceforge.net/doc/user-manual.pdf">[PDF]</a> <a href="http://flowdesigner.sourceforge.net/doc/user-manual.ps.gz">[PS]</a></td> --- 25,29 ---- <td><b>FlowDesigner</b></td> <td>FlowDesigner documentation</td> ! <td>0.9</td> <td><a href="http://flowdesigner.sourceforge.net/doc/user-manual.pdf">[PDF]</a> <a href="http://flowdesigner.sourceforge.net/doc/user-manual.ps.gz">[PS]</a></td> *************** *** 38,42 **** <td><b>Nodes</b></td> <td>Available RobotFlow Nodes</td> ! <td>0.2.4</td> <td><a href="nodes.html">[HTML]</a></td> </tr> --- 38,42 ---- <td><b>Nodes</b></td> <td>Available RobotFlow Nodes</td> ! <td>0.2.6</td> <td><a href="nodes.html">[HTML]</a></td> </tr> *************** *** 44,48 **** <TD><b>API</b></TD> <TD>Doxygen Documentation</TD> ! <TD>0.2.3</TD> <TD><a href="doxygen/html/index.html">[HTML]</a></TD> </tr> --- 44,48 ---- <TD><b>API</b></TD> <TD>Doxygen Documentation</TD> ! <TD>0.2.6</TD> <TD><a href="doxygen/html/index.html">[HTML]</a></TD> </tr> |
From: Dominic L. <ma...@us...> - 2005-10-05 18:00:36
|
Update of /cvsroot/robotflow/RobotFlow/html In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31244 Modified Files: home.html news.html Log Message: added 0.2.6 release Index: home.html =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/html/home.html,v retrieving revision 1.31 retrieving revision 1.32 diff -C2 -d -r1.31 -r1.32 *** home.html 16 Nov 2004 14:25:00 -0000 1.31 --- home.html 5 Oct 2005 18:00:22 -0000 1.32 *************** *** 10,19 **** <table> <tr> ! <td> ! <h1> ! <a href="http://www.gel.usherb.ca/laborius"><img SRC="images/laborius_logo.jpg" NOSAVE BORDER=0 height=100 width=100></a></h1> ! </td> - <td> <h1>RobotFlow</h1> Open Source Robotics Toolkit using <a href="http://flowdesigner.sourceforge.net">FlowDesigner</a> --- 10,15 ---- <table> <tr> ! <td><h1><a href="http://www.gel.usherb.ca/laborius"><img SRC="images/laborius_logo.jpg" NOSAVE BORDER=0 height=100 width=100></a></h1> <h1>RobotFlow</h1> Open Source Robotics Toolkit using <a href="http://flowdesigner.sourceforge.net">FlowDesigner</a> *************** *** 21,80 **** <a href="http://www.gel.usherb.ca/laborius"><font size="-3">LABORIUS : Mobile Robotics and Intelligent Systems Laboratory </font></a> </td> - - <td></td> </tr> - - </table> - - <h1>LATEST NEWS</h1> - <table width="100%" bgcolor="#FFFF11"> <tr> ! <td width="20%" bgcolor="#CCCC50"><div align="left"><b>DATE</b></div></td> ! <td width="80%" bgcolor="#CCCC50"><div align=left><b>DESCRIPTION</b></div></td> </tr> - - <tr> - <td width="15%"> <div align=left>16/11/2004</div></td> - <td width="85%"> <div align=left><a href="doc.html">RobotFlow 0.2.5 Released.</a> - Detection of <a href="http://marie.sourceforge.net">MARIE</a> now works properly with --with-MARIE=<PATH>. Fixed PlayerLaser Node to avoid rounding problems with laser data. - </div></td> - </tr> - - <tr> - <td width="15%"> <div align=left>26/10/2004</div></td> - <td width="85%"> <div align=left><a href="doc.html">RobotFlow 0.2.4 Released.</a> - New MARIE blocks are now available for <a href="http://marie.sourceforge.net">MARIE 0.2</a>.<br> - SymbolRecognition demo is now available. Please see the <a href="demo.html">DEMO</a> section. - </div></td> - </tr> - - <tr> - <td width="15%"> <div align=left>26/10/2004</div></td> - <td width="85%"> <div align=left><a href="demo.html">New Demo Section Created</a> - SymbolRecognition demo will be available shortly in the next release of RobotFlow. - </div></td> - </tr> - - <tr> - <td width="15%"> <div align=left>25/06/2004</div></td> - <td width="85%"> <div align=left><a href="doc.html">RobotFlow 0.2.3 released.</a> This release includes new - <a href="http://marie.sourceforge.net">MARIE</a> blocks - that are able to extract, serialize and unserialize MARIE data objects. MARIE must be compiled before RobotFlow in order - to use MARIE blocks. If you don't want to use MARIE blocks, use --disable-MARIE. RobotFlow is now part of the MARIE showcase - that is available at MARIE's project web site. Enjoy!</div></td> - </tr> - <tr> - <td width="15%"> <div align=left>27/05/2004</div></td> - <td width="85%"> <div align=left><a href="doc.html">Added Doxygen Documentation</a></div></td> - </tr> - <tr> - <td width="15%"> <div align=left>07/04/2004</div></td> - <td width="85%"> <div align=left><a href="http://robotflow.sourceforge.net/wiki/phpwiki-1.3.7/">RobotFlow wiki now available</a>.</div></td> - </tr> - <tr> - <td width="15%"> <div align=left>07/04/2004</div></td> - <td width="85%"> <div align=left>Added a RobotFlow presentation in the <a href="doc.html"> documentation section</a>.</div></td> - </tr> </table> --- 17,27 ---- <a href="http://www.gel.usherb.ca/laborius"><font size="-3">LABORIUS : Mobile Robotics and Intelligent Systems Laboratory </font></a> </td> </tr> <tr> ! <td> ! <h4>Current Version : 0.2.6 <a href="http://prdownloads.sourceforge.net/robotflow/RobotFlow-0.2.6.tar.gz?download"> [DOWNLOAD] </a></h4> ! </td> </tr> </table> *************** *** 122,126 **** --- 69,103 ---- <hr width="100%" size="1"> + <h1>LATEST NEWS</h1> + <table width="100%" bgcolor="#FFFF11"> + <tr> + <td width="20%" bgcolor="#CCCC50"><div align="left"><b>DATE</b></div></td> + <td width="80%" bgcolor="#CCCC50"><div align=left><b>DESCRIPTION</b></div></td> + </tr> + <tr> + <td width="15%"> <div align=left>05/10/2005</div></td> + <td width="85%"> <div align=left><a href="doc.html">RobotFlow 0.2.6 Released.</a> + <a href="http://sourceforge.net/project/shownotes.php?release_id=361410">[CHANGELOG]</a> + </div></td> + </tr> + + <tr> + <td width="15%"> <div align=left>16/11/2004</div></td> + <td width="85%"> <div align=left><a href="doc.html">RobotFlow 0.2.5 Released.</a> + Detection of <a href="http://marie.sourceforge.net">MARIE</a> now works properly with --with-MARIE=<PATH>. Fixed PlayerLaser Node to avoid rounding problems with laser data. + </div></td> + </tr> + + <tr> + <td width="15%"> <div align=left>26/10/2004</div></td> + <td width="85%"> <div align=left><a href="doc.html">RobotFlow 0.2.4 Released.</a> + New MARIE blocks are now available for <a href="http://marie.sourceforge.net">MARIE 0.2</a>.<br> + SymbolRecognition demo is now available. Please see the <a href="demo.html">DEMO</a> section. + </div></td> + </tr> + + </table> + <hr width="100%" size="1"> <!-- Start of StatCounter Code --><script type="text/javascript" language="javascript"> var sc_project=322897; Index: news.html =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/html/news.html,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** news.html 4 Nov 2004 19:53:33 -0000 1.13 --- news.html 5 Oct 2005 18:00:23 -0000 1.14 *************** *** 12,17 **** <td width="80%" bgcolor="#CCCC50"><div align=left><b>DESCRIPTION</b></div></td> </tr> <tr> ! <td width="15%"> <div align=left>26/10/2004</div></td> <td width="85%"> <div align=left><a href="doc.html">RobotFlow 0.2.4 Released.</a> New MARIE blocks are now available for <a href="http://marie.sourceforge.net">MARIE 0.2</a>.<br> --- 12,24 ---- <td width="80%" bgcolor="#CCCC50"><div align=left><b>DESCRIPTION</b></div></td> </tr> + <tr> + <td width="15%"> <div align=left><b>16/11/2004</b></div></td> + <td width="85%"> <div align=left><a href="doc.html">RobotFlow 0.2.5 Released.</a> + Detection of <a href="http://marie.sourceforge.net">MARIE</a> now works properly with --with-MARIE=<PATH>. Fixed PlayerLaser Node to avoid rounding problems with laser data. + </div></td> + </tr> + <tr> ! <td width="15%"> <div align=left><b>26/10/2004</b></div></td> <td width="85%"> <div align=left><a href="doc.html">RobotFlow 0.2.4 Released.</a> New MARIE blocks are now available for <a href="http://marie.sourceforge.net">MARIE 0.2</a>.<br> *************** *** 20,40 **** </tr> <tr> ! <td width="15%"> <div align=left>26/10/2004</div></td> <td width="85%"> <div align=left><a href="demo.html">Added DEMO section.</a></div></td> </tr> <tr> ! <td width="15%"> <div align=left>25/06/2004</div></td> <td width="85%"> <div align=left><a href="doc.html">RobotFlow 0.2.3 released.</a></div></td> </tr> <tr> ! <td width="15%"> <div align=left>27/05/2004</div></td> <td width="85%"> <div align=left><a href="doc.html">Added Doxygen Documentation</a></div></td> </tr> <tr> ! <td width="15%"> <div align=left>07/04/2004</div></td> <td width="85%"> <div align=left><a href="http://robotflow.sourceforge.net/wiki/phpwiki-1.3.7/">RobotFlow wiki now available</a>.</div></td> </tr> <tr> ! <td width="15%"> <div align=left>07/04/2004</div></td> <td width="85%"> <div align=left>Added a RobotFlow presentation in the <a href="doc.html"> documentation section</a>.</div></td> </tr> --- 27,47 ---- </tr> <tr> ! <td width="15%"> <div align=left><b>26/10/2004</b></div></td> <td width="85%"> <div align=left><a href="demo.html">Added DEMO section.</a></div></td> </tr> <tr> ! <td width="15%"> <div align=left><b>25/06/2004</b></div></td> <td width="85%"> <div align=left><a href="doc.html">RobotFlow 0.2.3 released.</a></div></td> </tr> <tr> ! <td width="15%"> <div align=left><b>27/05/2004</b></div></td> <td width="85%"> <div align=left><a href="doc.html">Added Doxygen Documentation</a></div></td> </tr> <tr> ! <td width="15%"> <div align=left><b>07/04/2004</b></div></td> <td width="85%"> <div align=left><a href="http://robotflow.sourceforge.net/wiki/phpwiki-1.3.7/">RobotFlow wiki now available</a>.</div></td> </tr> <tr> ! <td width="15%"> <div align=left><b>07/04/2004</b></div></td> <td width="85%"> <div align=left>Added a RobotFlow presentation in the <a href="doc.html"> documentation section</a>.</div></td> </tr> |
From: Dominic L. <ma...@us...> - 2005-10-05 15:24:40
|
Update of /cvsroot/robotflow/RobotFlow In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27688 Modified Files: configure.in Log Message: better player test Index: configure.in =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/configure.in,v retrieving revision 1.54 retrieving revision 1.55 diff -C2 -d -r1.54 -r1.55 *** configure.in 3 Aug 2005 19:52:54 -0000 1.54 --- configure.in 5 Oct 2005 15:24:30 -0000 1.55 *************** *** 5,9 **** AC_INIT(Generic/include/Timer.h) ! #AC_INIT([RobotFlow], [0.2.5cvs], [rob...@li...]) --- 5,9 ---- AC_INIT(Generic/include/Timer.h) ! #AC_INIT([RobotFlow], [0.2.6cvs], [rob...@li...]) *************** *** 139,158 **** PLAYER_FOUND="yes" else ! dnl test for player with prefix & PATH ! AC_PATH_PROG(PLAYER_BIN,player,no,$PATH:$prefix/bin:$prefix/player/bin) ! if test "$PLAYER_BIN" != no; then ! PLAYER_DIR=`which $PLAYER_BIN | sed 's/bin\/player$//' ` ! PLAYER_LIBS="-L$PLAYER_DIR/lib -lplayerc -lplayercclient -lplayerclient -lplayerpacket -lplayerqueue" ! PLAYER_INCLUDES="-I$PLAYER_DIR/include" ! PLAYER_FOUND="yes" ! fi fi fi dnl set WITH_PLAYER if player found and not disabled ! if test -n "$PLAYER_FOUND"; then AM_CONDITIONAL(WITH_PLAYER,true) else AM_CONDITIONAL(WITH_PLAYER,false) fi --- 139,162 ---- PLAYER_FOUND="yes" else ! PKG_CHECK_MODULES(PLAYER, player = 1.5.0,[PLAYER_FOUND="yes"],[PLAYER_FOUND="no"] ) ! PLAYER_LIBS=$PLAYER_LIBS ! PLAYER_INCLUDES=$PLAYER_CFLAGS fi fi dnl set WITH_PLAYER if player found and not disabled ! if test "$PLAYER_FOUND" = "yes"; then AM_CONDITIONAL(WITH_PLAYER,true) + AC_MSG_RESULT([Using Player lib : $PLAYER_LIBS]) + AC_MSG_RESULT([Using Player cflags : $PLAYER_CFLAGS]) + else AM_CONDITIONAL(WITH_PLAYER,false) + PKG_CHECK_MODULES(PLAYER_V, player >= 1.5.0,[NEW_PLAYER_FOUND="yes"],[NEW_PLAYER_FOUND="no"] ) + if test "$NEW_PLAYER_FOUND" = "yes"; then + AC_MSG_RESULT([Player > 1.5.0 found. RobotFlow requires Player 1.5.0 to work. Player compilation disabled.]) + else + AC_MSG_RESULT([Player not found]) + fi fi *************** *** 286,290 **** Audio/include/Makefile \ Audio/src/Makefile \ ! Vision/Makefile \ Vision/include/Makefile \ Vision/src/Makefile \ --- 290,294 ---- Audio/include/Makefile \ Audio/src/Makefile \ ! Vision/Makefile \ Vision/include/Makefile \ Vision/src/Makefile \ *************** *** 333,337 **** AC_MSG_RESULT([$PACKAGE will build Player based blocks]) else ! AC_MSG_RESULT([$PACKAGE will NOT build Player based blocks (forgot --with-player=<path> arg?)]) fi --- 337,345 ---- AC_MSG_RESULT([$PACKAGE will build Player based blocks]) else ! if test "$NEW_PLAYER_FOUND" = "yes"; then ! AC_MSG_RESULT([$PACKAGE will NOT build Player based blocks (version > 1.5.0 not yet supported)]) ! else ! AC_MSG_RESULT([$PACKAGE will NOT build Player based blocks (forgot --with-player=<path> arg?)]) ! fi fi |
From: Dominic L. <ma...@us...> - 2005-10-04 20:52:09
|
Update of /cvsroot/robotflow/RobotFlow/Generic/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27069 Modified Files: KDTree.cc Log Message: removed duplicate KDPoint DECLARE_TYPE Index: KDTree.cc =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Generic/src/KDTree.cc,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** KDTree.cc 4 Oct 2005 20:50:13 -0000 1.4 --- KDTree.cc 4 Oct 2005 20:51:59 -0000 1.5 *************** *** 23,26 **** namespace RobotFlow { ! }//namespace RobotFlow --- 23,35 ---- namespace RobotFlow { ! DECLARE_TYPE(KDTree<unsigned char>) ! DECLARE_TYPE(KDTree<char>) ! DECLARE_TYPE(KDTree<unsigned short>) ! DECLARE_TYPE(KDTree<short>) ! DECLARE_TYPE(KDTree<unsigned int>) ! DECLARE_TYPE(KDTree<int>) ! DECLARE_TYPE(KDTree<unsigned long>) ! DECLARE_TYPE(KDTree<long>) ! DECLARE_TYPE(KDTree<float>) ! DECLARE_TYPE(KDTree<double>) }//namespace RobotFlow |
From: Dominic L. <ma...@us...> - 2005-10-04 20:50:23
|
Update of /cvsroot/robotflow/RobotFlow/Generic/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26580 Modified Files: KDTree.cc Log Message: removed duplicate KDPoint DECLARE_TYPE Index: KDTree.cc =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Generic/src/KDTree.cc,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** KDTree.cc 29 Mar 2005 15:20:41 -0000 1.3 --- KDTree.cc 4 Oct 2005 20:50:13 -0000 1.4 *************** *** 24,37 **** namespace RobotFlow { - DECLARE_TYPE(KDPoint<unsigned char>) - DECLARE_TYPE(KDPoint<char>) - DECLARE_TYPE(KDPoint<unsigned short>) - DECLARE_TYPE(KDPoint<short>) - DECLARE_TYPE(KDPoint<unsigned int>) - DECLARE_TYPE(KDPoint<int>) - DECLARE_TYPE(KDPoint<unsigned long>) - DECLARE_TYPE(KDPoint<long>) - DECLARE_TYPE(KDPoint<float>) - DECLARE_TYPE(KDPoint<double>) - }//namespace RobotFlow --- 24,26 ---- |