libcvd-members
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[libcvd-members] libcvd cvd/videosource.h cvd/Linux/dvbuffer3.h ...


From: Edward Rosten
Subject: [libcvd-members] libcvd cvd/videosource.h cvd/Linux/dvbuffer3.h ...
Date: Fri, 22 Jan 2010 14:42:38 +0000

CVSROOT:        /cvsroot/libcvd
Module name:    libcvd
Changes by:     Edward Rosten <edrosten>        10/01/22 14:42:38

Modified files:
        cvd            : videosource.h 
        cvd/Linux      : dvbuffer3.h 
        cvd_src        : videosource.cpp videosource_dvbuffer.cc 
                         videosource_nodvbuffer.cc 
        cvd_src/Linux  : dvbuffer3_dc1394v2.cc 

Log message:
        Added explicit format 7 mode selection, eg:
        
        dc1394:[format7=2]//

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/libcvd/cvd/videosource.h?cvsroot=libcvd&r1=1.26&r2=1.27
http://cvs.savannah.gnu.org/viewcvs/libcvd/cvd/Linux/dvbuffer3.h?cvsroot=libcvd&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/libcvd/cvd_src/videosource.cpp?cvsroot=libcvd&r1=1.16&r2=1.17
http://cvs.savannah.gnu.org/viewcvs/libcvd/cvd_src/videosource_dvbuffer.cc?cvsroot=libcvd&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/libcvd/cvd_src/videosource_nodvbuffer.cc?cvsroot=libcvd&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/libcvd/cvd_src/Linux/dvbuffer3_dc1394v2.cc?cvsroot=libcvd&r1=1.8&r2=1.9

Patches:
Index: cvd/videosource.h
===================================================================
RCS file: /cvsroot/libcvd/libcvd/cvd/videosource.h,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -b -r1.26 -r1.27
--- cvd/videosource.h   21 Jan 2010 16:48:28 -0000      1.26
+++ cvd/videosource.h   22 Jan 2010 14:42:37 -0000      1.27
@@ -217,22 +217,22 @@
        //
        // DC1394 buffer
        //
-       template <class T> VideoBuffer<T>* makeDVBuffer2(int , ImageRef , float 
, ImageRef, bool)
+       template <class T> VideoBuffer<T>* makeDVBuffer2(int , ImageRef , float 
, ImageRef, bool, int)
        {
                throw VideoSourceException("DVBuffer2 cannot handle " + 
PNM::type_name<T>::name());
        }
        
-       template <> VideoBuffer<byte>* makeDVBuffer2(int cam, ImageRef size, 
float fps, ImageRef offset, bool verbose);
-       template <> VideoBuffer<unsigned short>* makeDVBuffer2(int cam, 
ImageRef size, float fps, ImageRef offset, bool verbose);
-       template <> VideoBuffer<yuv411>* makeDVBuffer2(int cam, ImageRef size, 
float fps, ImageRef offset, bool verbose);
-       template <> VideoBuffer<yuv422>* makeDVBuffer2(int cam, ImageRef size, 
float fps, ImageRef offset, bool verbose);
-       template <> VideoBuffer<Rgb<byte> >* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset, bool verbose);
-       template <> VideoBuffer<bayer_bggr>* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset, bool verbose);
-       template <> VideoBuffer<bayer_gbrg>* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset, bool verbose);
-       template <> VideoBuffer<bayer_grbg>* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset, bool verbose);
-       template <> VideoBuffer<bayer_rggb>* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset, bool verbose);
+       template <> VideoBuffer<byte>* makeDVBuffer2(int cam, ImageRef size, 
float fps, ImageRef offset, bool verbose, int format7_mode);
+       template <> VideoBuffer<unsigned short>* makeDVBuffer2(int cam, 
ImageRef size, float fps, ImageRef offset, bool verbose, int format7_mode);
+       template <> VideoBuffer<yuv411>* makeDVBuffer2(int cam, ImageRef size, 
float fps, ImageRef offset, bool verbose, int format7_mode);
+       template <> VideoBuffer<yuv422>* makeDVBuffer2(int cam, ImageRef size, 
float fps, ImageRef offset, bool verbose, int format7_mode);
+       template <> VideoBuffer<Rgb<byte> >* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset, bool verbose, int format7_mode);
+       template <> VideoBuffer<bayer_bggr>* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset, bool verbose, int format7_mode);
+       template <> VideoBuffer<bayer_gbrg>* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset, bool verbose, int format7_mode);
+       template <> VideoBuffer<bayer_grbg>* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset, bool verbose, int format7_mode);
+       template <> VideoBuffer<bayer_rggb>* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset, bool verbose, int format7_mode);
 
-       void get_dc1394_options(const VideoSource& vs, ImageRef& size, float& 
fps, ImageRef& offset, bool& verbose);
+       void get_dc1394_options(const VideoSource& vs, ImageRef& size, float& 
fps, ImageRef& offset, bool& verbose, int& format7_mode);
 
        
////////////////////////////////////////////////////////////////////////////////
        //
@@ -306,8 +306,9 @@
                        ImageRef size, offset;
                        float fps;
                        bool verbose;
-                       get_dc1394_options(vs, size, fps, offset, verbose);
-                       return makeDVBuffer2<T>(cam_no, size, fps, offset, 
verbose);
+                       int  format7_mode;
+                       get_dc1394_options(vs, size, fps, offset, verbose, 
format7_mode);
+                       return makeDVBuffer2<T>(cam_no, size, fps, offset, 
verbose, format7_mode);
                } 
                else if (vs.protocol == "file") {
                        int ra_frames = 0;
@@ -457,6 +458,8 @@
           fps = <number> (default is camera default)
           size = <size>
           offset = <offset>
+          verbose [ = <bool> ]
+          mode | format7 | format7_mode = <number>
 
 'qt' protocol (QTBuffer): identifier is camera number
          size = vga | qvga | <width>x<height>  (default vga)

Index: cvd/Linux/dvbuffer3.h
===================================================================
RCS file: /cvsroot/libcvd/libcvd/cvd/Linux/dvbuffer3.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- cvd/Linux/dvbuffer3.h       21 Jan 2010 16:48:28 -0000      1.6
+++ cvd/Linux/dvbuffer3.h       22 Jan 2010 14:42:37 -0000      1.7
@@ -123,7 +123,8 @@
                   bool verbose=0,
                   ImageRef irSize = ImageRef(-1,-1),
                   float fFrameRate=-1.0, 
-                  ImageRef irOffset = ImageRef(-1,-1));
+                  ImageRef irOffset = ImageRef(-1,-1),
+                  int format7_mode=-1);
       
       ~RawDVBuffer3();
       inline ImageRef size() {return mirSize;}
@@ -165,9 +166,10 @@
              ImageRef irSize = ImageRef(-1,-1), 
              float fFPS = -1.0, 
              ImageRef irOffset = ImageRef(-1,-1),
-                 bool verbose=0)
+                 bool verbose=0,
+                 int format7_mode=-1)
       : VideoBuffer<pixel_T>(VideoBufferType::Live),
-           RawDVBuffer3(DV3::CSConvert<pixel_T>::space, nCamNumber, 0, -1, 
verbose, irSize, fFPS, irOffset)
+           RawDVBuffer3(DV3::CSConvert<pixel_T>::space, nCamNumber, 0, -1, 
verbose, irSize, fFPS, irOffset, format7_mode)
        {
                if(DV3::CSFilter<pixel_T>::filter != DV3::UNDEFINED && 
colour_filter() != DV3::CSFilter<pixel_T>::filter )
                        throw(Exceptions::DVBuffer3::All("wrong colour filter 
expected"));

Index: cvd_src/videosource.cpp
===================================================================
RCS file: /cvsroot/libcvd/libcvd/cvd_src/videosource.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- cvd_src/videosource.cpp     21 Jan 2010 16:48:28 -0000      1.16
+++ cvd_src/videosource.cpp     22 Jan 2010 14:42:37 -0000      1.17
@@ -365,10 +365,12 @@
        }
 
 
-       void get_dc1394_options(const VideoSource& vs, ImageRef& size, float& 
fps, ImageRef& offset, bool& verbose)
+       void get_dc1394_options(const VideoSource& vs, ImageRef& size, float& 
fps, ImageRef& offset, bool& verbose, int& format7_mode)
        { 
                size = offset = ImageRef(-1, -1);
                fps = -1;
+               verbose = 0;
+               format7_mode = -1;
 
                for (VideoSource::option_list::const_iterator 
it=vs.options.begin(); it != vs.options.end(); ++it) {
                        if (it->first == "fps")
@@ -379,6 +381,8 @@
                                offset = parseImageRef(it->second, false);
                        else if (it->first == "verbose")
                                                verbose = 
parseBoolFlag(it->second);
+                       else if(it->first == "mode" || it->first == 
"format7_mode" || it->first == "format7")
+                               format7_mode = atoi(it->second.c_str());
                        else
                                throw VideoSourceException("invalid option for 
dc1394 protocol: "+it->first+"\n\t valid options: fps, size, offset, verbose");
                }

Index: cvd_src/videosource_dvbuffer.cc
===================================================================
RCS file: /cvsroot/libcvd/libcvd/cvd_src/videosource_dvbuffer.cc,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- cvd_src/videosource_dvbuffer.cc     21 Jan 2010 16:48:28 -0000      1.2
+++ cvd_src/videosource_dvbuffer.cc     22 Jan 2010 14:42:37 -0000      1.3
@@ -3,49 +3,49 @@
 
 namespace CVD{
 
-       template <> VideoBuffer<byte>* makeDVBuffer2(int cam, ImageRef size, 
float fps, ImageRef offset, bool v)
+       template <> VideoBuffer<byte>* makeDVBuffer2(int cam, ImageRef size, 
float fps, ImageRef offset,  bool v, int m)
        {
-               return new DVBuffer3<byte>(cam,size, fps, offset, v);
+               return new DVBuffer3<byte>(cam,size, fps, offset, v, m);
        }
 
-       template <> VideoBuffer<unsigned short>* makeDVBuffer2(int cam, 
ImageRef size, float fps, ImageRef offset, bool v)
+       template <> VideoBuffer<unsigned short>* makeDVBuffer2(int cam, 
ImageRef size, float fps, ImageRef offset,  bool v, int m)
        {
-               return new DVBuffer3<unsigned short>(cam,size, fps, offset, v);
+               return new DVBuffer3<unsigned short>(cam,size, fps, offset, v, 
m);
        }
 
-       template <> VideoBuffer<yuv411>* makeDVBuffer2(int cam, ImageRef size, 
float fps, ImageRef offset, bool v)
+       template <> VideoBuffer<yuv411>* makeDVBuffer2(int cam, ImageRef size, 
float fps, ImageRef offset,  bool v, int m)
        {
-               return new DVBuffer3<yuv411>(cam,size, fps, offset, v);
+               return new DVBuffer3<yuv411>(cam,size, fps, offset, v, m);
        }
 
-       template <> VideoBuffer<yuv422>* makeDVBuffer2(int cam, ImageRef size, 
float fps, ImageRef offset, bool v)
+       template <> VideoBuffer<yuv422>* makeDVBuffer2(int cam, ImageRef size, 
float fps, ImageRef offset,  bool v, int m)
        {
-               return new DVBuffer3<yuv422>(cam,size, fps, offset, v);
+               return new DVBuffer3<yuv422>(cam,size, fps, offset, v, m);
        }
 
-       template <> VideoBuffer<bayer_grbg>* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset, bool v)
+       template <> VideoBuffer<bayer_grbg>* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset,  bool v, int m)
        {
-               return new DVBuffer3<bayer_grbg>(cam,size, fps, offset, v);
+               return new DVBuffer3<bayer_grbg>(cam,size, fps, offset, v, m);
        }
 
-       template <> VideoBuffer<bayer_gbrg>* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset, bool v)
+       template <> VideoBuffer<bayer_gbrg>* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset,  bool v, int m)
        {
-               return new DVBuffer3<bayer_gbrg>(cam,size, fps, offset, v);
+               return new DVBuffer3<bayer_gbrg>(cam,size, fps, offset, v, m);
        }
 
-       template <> VideoBuffer<bayer_rggb>* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset, bool v)
+       template <> VideoBuffer<bayer_rggb>* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset,  bool v, int m)
        {
-               return new DVBuffer3<bayer_rggb>(cam,size, fps, offset, v);
+               return new DVBuffer3<bayer_rggb>(cam,size, fps, offset, v, m);
        }
 
-       template <> VideoBuffer<bayer_bggr>* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset, bool v)
+       template <> VideoBuffer<bayer_bggr>* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset,  bool v, int m)
        {
-               return new DVBuffer3<bayer_bggr>(cam,size, fps, offset, v);
+               return new DVBuffer3<bayer_bggr>(cam,size, fps, offset, v, m);
        }
 
-       template <> VideoBuffer<Rgb<byte> >* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset, bool v)
+       template <> VideoBuffer<Rgb<byte> >* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset,  bool v, int m)
        {
-               return new DVBuffer3<Rgb<byte> >(cam, size, fps, offset, v);
+               return new DVBuffer3<Rgb<byte> >(cam, size, fps, offset, v, m);
        }
 
 }

Index: cvd_src/videosource_nodvbuffer.cc
===================================================================
RCS file: /cvsroot/libcvd/libcvd/cvd_src/videosource_nodvbuffer.cc,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- cvd_src/videosource_nodvbuffer.cc   21 Jan 2010 16:48:28 -0000      1.2
+++ cvd_src/videosource_nodvbuffer.cc   22 Jan 2010 14:42:37 -0000      1.3
@@ -2,47 +2,47 @@
 
 namespace CVD{
 
-       template <> VideoBuffer<byte>* makeDVBuffer2(int, ImageRef, float, 
ImageRef, bool)
+       template <> VideoBuffer<byte>* makeDVBuffer2(int, ImageRef, float, 
ImageRef, bool, int)
        {
                throw VideoSourceException("DVBuffer3 is not compiled in to 
libcvd.");
        }
 
-       template <> VideoBuffer<unsigned short>* makeDVBuffer2(int, ImageRef, 
float, ImageRef, bool)
+       template <> VideoBuffer<unsigned short>* makeDVBuffer2(int, ImageRef, 
float, ImageRef, bool, int)
        {
                throw VideoSourceException("DVBuffer3 is not compiled in to 
libcvd.");
        }
 
-       template <> VideoBuffer<yuv411>* makeDVBuffer2(int, ImageRef, float, 
ImageRef, bool)
+       template <> VideoBuffer<yuv411>* makeDVBuffer2(int, ImageRef, float, 
ImageRef, bool, int)
        {
                throw VideoSourceException("DVBuffer3 is not compiled in to 
libcvd.");
        }
 
-       template <> VideoBuffer<yuv422>* makeDVBuffer2(int, ImageRef, float, 
ImageRef, bool)
+       template <> VideoBuffer<yuv422>* makeDVBuffer2(int, ImageRef, float, 
ImageRef, bool, int)
        {
                throw VideoSourceException("DVBuffer3 is not compiled in to 
libcvd.");
        }
 
-       template <> VideoBuffer<bayer_grbg>* makeDVBuffer2(int, ImageRef, 
float, ImageRef, bool)
+       template <> VideoBuffer<bayer_grbg>* makeDVBuffer2(int, ImageRef, 
float, ImageRef, bool, int)
        {
                throw VideoSourceException("DVBuffer3 is not compiled in to 
libcvd.");
        }
 
-       template <> VideoBuffer<bayer_gbrg>* makeDVBuffer2(int, ImageRef, 
float, ImageRef, bool)
+       template <> VideoBuffer<bayer_gbrg>* makeDVBuffer2(int, ImageRef, 
float, ImageRef, bool, int)
        {
                throw VideoSourceException("DVBuffer3 is not compiled in to 
libcvd.");
        }
 
-       template <> VideoBuffer<bayer_rggb>* makeDVBuffer2(int, ImageRef, 
float, ImageRef, bool)
+       template <> VideoBuffer<bayer_rggb>* makeDVBuffer2(int, ImageRef, 
float, ImageRef, bool, int)
        {
                throw VideoSourceException("DVBuffer3 is not compiled in to 
libcvd.");
        }
 
-       template <> VideoBuffer<bayer_bggr>* makeDVBuffer2(int, ImageRef, 
float, ImageRef, bool)
+       template <> VideoBuffer<bayer_bggr>* makeDVBuffer2(int, ImageRef, 
float, ImageRef, bool, int)
        {
                throw VideoSourceException("DVBuffer3 is not compiled in to 
libcvd.");
        }
 
-       template <> VideoBuffer<Rgb<byte> >* makeDVBuffer2(int, ImageRef, 
float, ImageRef, bool)
+       template <> VideoBuffer<Rgb<byte> >* makeDVBuffer2(int, ImageRef, 
float, ImageRef, bool, int)
        {
                throw VideoSourceException("DVBuffer3 is not compiled in to 
libcvd.");
        }

Index: cvd_src/Linux/dvbuffer3_dc1394v2.cc
===================================================================
RCS file: /cvsroot/libcvd/libcvd/cvd_src/Linux/dvbuffer3_dc1394v2.cc,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- cvd_src/Linux/dvbuffer3_dc1394v2.cc 21 Jan 2010 16:48:28 -0000      1.8
+++ cvd_src/Linux/dvbuffer3_dc1394v2.cc 22 Jan 2010 14:42:37 -0000      1.9
@@ -188,7 +188,8 @@
                               bool verbose,
                               ImageRef irSize,
                               float fFrameRate, 
-                              ImageRef irOffset)
+                              ImageRef irOffset,
+                                  int format7_mode)
     {
       VPrint log(verbose);
 
@@ -214,6 +215,7 @@
       log << "    size:          " <<  irSize  << "\n";
       log << "    framerate:     " <<  fFrameRate  << "\n";
       log << "    offset:        " <<  irOffset  << "\n";
+      log << "    format7 mode:  " <<  format7_mode  << "\n";
   
       if(pCameraList->num == 0)
        {
@@ -258,7 +260,7 @@
       bool foundAStandardMode = false;
        dc1394video_mode_t nMode;
        mColourfilter = UNDEFINED;
-       if(irOffset.x == -1){
+       if(irOffset.x == -1 && format7_mode == -1){
                try {
                        // First, get a list of the modes which the camera 
supports.
                        dc1394video_modes_t modes;
@@ -394,6 +396,9 @@
                        log << "        total bytes:   " << mode.total_bytes << 
"\n";
                        log << "        color filter:  " << mode.color_filter 
<< "(" << filter(mode.color_filter) << ")\n";
 
+                       if(format7_mode != -1 && format7_mode != index)
+                               continue;
+
                        // does the mode exist ?
                        // does it support the colour format we need ?
                        unsigned int i;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]