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: Olaf Kähler
Subject: [libcvd-members] libcvd cvd/videosource.h cvd/Linux/dvbuffer3.h ...
Date: Sat, 20 Mar 2010 17:21:11 +0000

CVSROOT:        /sources/libcvd
Module name:    libcvd
Changes by:     Olaf Kähler <ok245>     10/03/20 17:21:11

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

Log message:
        added 'reset=1' option to dc1394 videosource to reset stuck firewire 
cameras

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/libcvd/cvd/videosource.h?cvsroot=libcvd&r1=1.28&r2=1.29
http://cvs.savannah.gnu.org/viewcvs/libcvd/cvd/Linux/dvbuffer3.h?cvsroot=libcvd&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/libcvd/cvd_src/videosource.cpp?cvsroot=libcvd&r1=1.17&r2=1.18
http://cvs.savannah.gnu.org/viewcvs/libcvd/cvd_src/videosource_dvbuffer.cc?cvsroot=libcvd&r1=1.4&r2=1.5
http://cvs.savannah.gnu.org/viewcvs/libcvd/cvd_src/videosource_nodvbuffer.cc?cvsroot=libcvd&r1=1.4&r2=1.5
http://cvs.savannah.gnu.org/viewcvs/libcvd/cvd_src/Linux/dvbuffer3_dc1394v1.cc?cvsroot=libcvd&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/libcvd/cvd_src/Linux/dvbuffer3_dc1394v2.cc?cvsroot=libcvd&r1=1.10&r2=1.11

Patches:
Index: cvd/videosource.h
===================================================================
RCS file: /sources/libcvd/libcvd/cvd/videosource.h,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -b -r1.28 -r1.29
--- cvd/videosource.h   17 Mar 2010 12:49:24 -0000      1.28
+++ cvd/videosource.h   20 Mar 2010 17:21:10 -0000      1.29
@@ -225,26 +225,26 @@
        //
        // DC1394 buffer
        //
-       template <class T> VideoBuffer<T>* makeDVBuffer2(int , ImageRef , float 
, ImageRef, bool, int)
+       template <class T> VideoBuffer<T>* makeDVBuffer2(int , ImageRef , float 
, ImageRef, bool, 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, 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);
-       template <> VideoBuffer<bayer_bggr16be>* makeDVBuffer2(int cam, 
ImageRef size, float fps, ImageRef offset, bool verbose, int format7_mode);
-       template <> VideoBuffer<bayer_gbrg16be>* makeDVBuffer2(int cam, 
ImageRef size, float fps, ImageRef offset, bool verbose, int format7_mode);
-       template <> VideoBuffer<bayer_grbg16be>* makeDVBuffer2(int cam, 
ImageRef size, float fps, ImageRef offset, bool verbose, int format7_mode);
-       template <> VideoBuffer<bayer_rggb16be>* makeDVBuffer2(int cam, 
ImageRef size, float fps, ImageRef offset, bool verbose, int format7_mode);
+       template <> VideoBuffer<byte>* makeDVBuffer2(int cam, ImageRef size, 
float fps, ImageRef offset, bool verbose, bool bus_reset, int format7_mode);
+       template <> VideoBuffer<unsigned short>* makeDVBuffer2(int cam, 
ImageRef size, float fps, ImageRef offset, bool verbose, bool bus_reset, int 
format7_mode);
+       template <> VideoBuffer<yuv411>* makeDVBuffer2(int cam, ImageRef size, 
float fps, ImageRef offset, bool verbose, bool bus_reset, int format7_mode);
+       template <> VideoBuffer<yuv422>* makeDVBuffer2(int cam, ImageRef size, 
float fps, ImageRef offset, bool verbose, bool bus_reset, int format7_mode);
+       template <> VideoBuffer<Rgb<byte> >* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset, bool verbose, bool bus_reset, int 
format7_mode);
+       template <> VideoBuffer<bayer_bggr>* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset, bool verbose, bool bus_reset, int 
format7_mode);
+       template <> VideoBuffer<bayer_gbrg>* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset, bool verbose, bool bus_reset, int 
format7_mode);
+       template <> VideoBuffer<bayer_grbg>* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset, bool verbose, bool bus_reset, int 
format7_mode);
+       template <> VideoBuffer<bayer_rggb>* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset, bool verbose, bool bus_reset, int 
format7_mode);
+       template <> VideoBuffer<bayer_bggr16be>* makeDVBuffer2(int cam, 
ImageRef size, float fps, ImageRef offset, bool verbose, bool bus_reset, int 
format7_mode);
+       template <> VideoBuffer<bayer_gbrg16be>* makeDVBuffer2(int cam, 
ImageRef size, float fps, ImageRef offset, bool verbose, bool bus_reset, int 
format7_mode);
+       template <> VideoBuffer<bayer_grbg16be>* makeDVBuffer2(int cam, 
ImageRef size, float fps, ImageRef offset, bool verbose, bool bus_reset, int 
format7_mode);
+       template <> VideoBuffer<bayer_rggb16be>* makeDVBuffer2(int cam, 
ImageRef size, float fps, ImageRef offset, bool verbose, bool bus_reset, int 
format7_mode);
 
-       void get_dc1394_options(const VideoSource& vs, 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, bool& bus_reset, int& format7_mode);
 
        
////////////////////////////////////////////////////////////////////////////////
        //
@@ -318,9 +318,10 @@
                        ImageRef size, offset;
                        float fps;
                        bool verbose;
+                       bool bus_reset;
                        int  format7_mode;
-                       get_dc1394_options(vs, size, fps, offset, verbose, 
format7_mode);
-                       return makeDVBuffer2<T>(cam_no, size, fps, offset, 
verbose, format7_mode);
+                       get_dc1394_options(vs, size, fps, offset, verbose, 
bus_reset, format7_mode);
+                       return makeDVBuffer2<T>(cam_no, size, fps, offset, 
verbose, bus_reset, format7_mode);
                } 
                else if (vs.protocol == "file") {
                        int ra_frames = 0;
@@ -471,6 +472,7 @@
           size = <size>
           offset = <offset>
           verbose [ = <bool> ]
+          reset [ = <bool> ]
           mode | format7 | format7_mode = <number>
 
 'qt' protocol (QTBuffer): identifier is camera number

Index: cvd/Linux/dvbuffer3.h
===================================================================
RCS file: /sources/libcvd/libcvd/cvd/Linux/dvbuffer3.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- cvd/Linux/dvbuffer3.h       17 Mar 2010 12:49:24 -0000      1.8
+++ cvd/Linux/dvbuffer3.h       20 Mar 2010 17:21:11 -0000      1.9
@@ -133,12 +133,14 @@
                   uint64_t cam_guid=-1,
                   int cam_unit=-1,
                   bool verbose=0,
+                  bool bus_reset=0,
                   ImageRef irSize = ImageRef(-1,-1),
                   float fFrameRate=-1.0, 
                   ImageRef irOffset = ImageRef(-1,-1),
                   int format7_mode=-1);
       
       ~RawDVBuffer3();
+      static void stopAllTransmissions(void);
       inline ImageRef size() {return mirSize;}
       inline ImageRef offset() {return mirOffset;}
       inline double frame_rate() {return mdFramerate;}
@@ -179,9 +181,10 @@
              float fFPS = -1.0, 
              ImageRef irOffset = ImageRef(-1,-1),
                  bool verbose=0,
+                 bool bus_reset=0,
                  int format7_mode=-1)
       : VideoBuffer<pixel_T>(VideoBufferType::Live),
-           RawDVBuffer3(DV3::CSConvert<pixel_T>::space, nCamNumber, 0, -1, 
verbose, irSize, fFPS, irOffset, format7_mode)
+           RawDVBuffer3(DV3::CSConvert<pixel_T>::space, nCamNumber, 0, -1, 
verbose, bus_reset, 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: /sources/libcvd/libcvd/cvd_src/videosource.cpp,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- cvd_src/videosource.cpp     22 Jan 2010 14:42:37 -0000      1.17
+++ cvd_src/videosource.cpp     20 Mar 2010 17:21:11 -0000      1.18
@@ -365,11 +365,12 @@
        }
 
 
-       void get_dc1394_options(const VideoSource& vs, 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, bool& bus_reset, int& format7_mode)
        { 
                size = offset = ImageRef(-1, -1);
                fps = -1;
                verbose = 0;
+               bus_reset = 0;
                format7_mode = -1;
 
                for (VideoSource::option_list::const_iterator 
it=vs.options.begin(); it != vs.options.end(); ++it) {
@@ -381,6 +382,8 @@
                                offset = parseImageRef(it->second, false);
                        else if (it->first == "verbose")
                                verbose = parseBoolFlag(it->second);
+                       else if (it->first == "reset")
+                               bus_reset = parseBoolFlag(it->second);
                        else if(it->first == "mode" || it->first == 
"format7_mode" || it->first == "format7")
                                format7_mode = atoi(it->second.c_str());
                        else

Index: cvd_src/videosource_dvbuffer.cc
===================================================================
RCS file: /sources/libcvd/libcvd/cvd_src/videosource_dvbuffer.cc,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- cvd_src/videosource_dvbuffer.cc     17 Mar 2010 12:49:24 -0000      1.4
+++ cvd_src/videosource_dvbuffer.cc     20 Mar 2010 17:21:11 -0000      1.5
@@ -3,69 +3,69 @@
 
 namespace CVD{
 
-       template <> VideoBuffer<byte>* makeDVBuffer2(int cam, ImageRef size, 
float fps, ImageRef offset,  bool v, int m)
+       template <> VideoBuffer<byte>* makeDVBuffer2(int cam, ImageRef size, 
float fps, ImageRef offset,  bool v, bool r, int m)
        {
-               return new DVBuffer3<byte>(cam,size, fps, offset, v, m);
+               return new DVBuffer3<byte>(cam,size, fps, offset, v, r, m);
        }
 
-       template <> VideoBuffer<unsigned short>* makeDVBuffer2(int cam, 
ImageRef size, float fps, ImageRef offset,  bool v, int m)
+       template <> VideoBuffer<unsigned short>* makeDVBuffer2(int cam, 
ImageRef size, float fps, ImageRef offset,  bool v, bool r, int m)
        {
-               return new DVBuffer3<unsigned short>(cam,size, fps, offset, v, 
m);
+               return new DVBuffer3<unsigned short>(cam,size, fps, offset, v, 
r, m);
        }
 
-       template <> VideoBuffer<yuv411>* makeDVBuffer2(int cam, ImageRef size, 
float fps, ImageRef offset,  bool v, int m)
+       template <> VideoBuffer<yuv411>* makeDVBuffer2(int cam, ImageRef size, 
float fps, ImageRef offset,  bool v, bool r, int m)
        {
-               return new DVBuffer3<yuv411>(cam,size, fps, offset, v, m);
+               return new DVBuffer3<yuv411>(cam,size, fps, offset, v, r, m);
        }
 
-       template <> VideoBuffer<yuv422>* makeDVBuffer2(int cam, ImageRef size, 
float fps, ImageRef offset,  bool v, int m)
+       template <> VideoBuffer<yuv422>* makeDVBuffer2(int cam, ImageRef size, 
float fps, ImageRef offset,  bool v, bool r, int m)
        {
-               return new DVBuffer3<yuv422>(cam,size, fps, offset, v, m);
+               return new DVBuffer3<yuv422>(cam,size, fps, offset, v, r, m);
        }
 
-       template <> VideoBuffer<bayer_grbg>* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset,  bool v, int m)
+       template <> VideoBuffer<bayer_grbg>* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset,  bool v, bool r, int m)
        {
-               return new DVBuffer3<bayer_grbg>(cam,size, fps, offset, v, m);
+               return new DVBuffer3<bayer_grbg>(cam,size, fps, offset, v, r, 
m);
        }
 
-       template <> VideoBuffer<bayer_gbrg>* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset,  bool v, int m)
+       template <> VideoBuffer<bayer_gbrg>* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset,  bool v, bool r, int m)
        {
-               return new DVBuffer3<bayer_gbrg>(cam,size, fps, offset, v, m);
+               return new DVBuffer3<bayer_gbrg>(cam,size, fps, offset, v, r, 
m);
        }
 
-       template <> VideoBuffer<bayer_rggb>* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset,  bool v, int m)
+       template <> VideoBuffer<bayer_rggb>* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset,  bool v, bool r, int m)
        {
-               return new DVBuffer3<bayer_rggb>(cam,size, fps, offset, v, m);
+               return new DVBuffer3<bayer_rggb>(cam,size, fps, offset, v, r, 
m);
        }
 
-       template <> VideoBuffer<bayer_bggr>* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset,  bool v, int m)
+       template <> VideoBuffer<bayer_bggr>* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset,  bool v, bool r, int m)
        {
-               return new DVBuffer3<bayer_bggr>(cam,size, fps, offset, v, m);
+               return new DVBuffer3<bayer_bggr>(cam,size, fps, offset, v, r, 
m);
        }
 
-       template <> VideoBuffer<bayer_grbg16be>* makeDVBuffer2(int cam, 
ImageRef size, float fps, ImageRef offset,  bool v, int m)
+       template <> VideoBuffer<bayer_grbg16be>* makeDVBuffer2(int cam, 
ImageRef size, float fps, ImageRef offset,  bool v, bool r, int m)
        {
-               return new DVBuffer3<bayer_grbg16be>(cam,size, fps, offset, v, 
m);
+               return new DVBuffer3<bayer_grbg16be>(cam,size, fps, offset, v, 
r, m);
        }
 
-       template <> VideoBuffer<bayer_gbrg16be>* makeDVBuffer2(int cam, 
ImageRef size, float fps, ImageRef offset,  bool v, int m)
+       template <> VideoBuffer<bayer_gbrg16be>* makeDVBuffer2(int cam, 
ImageRef size, float fps, ImageRef offset,  bool v, bool r, int m)
        {
-               return new DVBuffer3<bayer_gbrg16be>(cam,size, fps, offset, v, 
m);
+               return new DVBuffer3<bayer_gbrg16be>(cam,size, fps, offset, v, 
r, m);
        }
 
-       template <> VideoBuffer<bayer_rggb16be>* makeDVBuffer2(int cam, 
ImageRef size, float fps, ImageRef offset,  bool v, int m)
+       template <> VideoBuffer<bayer_rggb16be>* makeDVBuffer2(int cam, 
ImageRef size, float fps, ImageRef offset,  bool v, bool r, int m)
        {
-               return new DVBuffer3<bayer_rggb16be>(cam,size, fps, offset, v, 
m);
+               return new DVBuffer3<bayer_rggb16be>(cam,size, fps, offset, v, 
r, m);
        }
 
-       template <> VideoBuffer<bayer_bggr16be>* makeDVBuffer2(int cam, 
ImageRef size, float fps, ImageRef offset,  bool v, int m)
+       template <> VideoBuffer<bayer_bggr16be>* makeDVBuffer2(int cam, 
ImageRef size, float fps, ImageRef offset,  bool v, bool r, int m)
        {
-               return new DVBuffer3<bayer_bggr16be>(cam,size, fps, offset, v, 
m);
+               return new DVBuffer3<bayer_bggr16be>(cam,size, fps, offset, v, 
r, m);
        }
 
-       template <> VideoBuffer<Rgb<byte> >* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset,  bool v, int m)
+       template <> VideoBuffer<Rgb<byte> >* makeDVBuffer2(int cam, ImageRef 
size, float fps, ImageRef offset,  bool v, bool r, int m)
        {
-               return new DVBuffer3<Rgb<byte> >(cam, size, fps, offset, v, m);
+               return new DVBuffer3<Rgb<byte> >(cam, size, fps, offset, v, r, 
m);
        }
 
 }

Index: cvd_src/videosource_nodvbuffer.cc
===================================================================
RCS file: /sources/libcvd/libcvd/cvd_src/videosource_nodvbuffer.cc,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- cvd_src/videosource_nodvbuffer.cc   17 Mar 2010 12:49:24 -0000      1.4
+++ cvd_src/videosource_nodvbuffer.cc   20 Mar 2010 17:21:11 -0000      1.5
@@ -2,67 +2,67 @@
 
 namespace CVD{
 
-       template <> VideoBuffer<byte>* makeDVBuffer2(int, ImageRef, float, 
ImageRef, bool, int)
+       template <> VideoBuffer<byte>* makeDVBuffer2(int, ImageRef, float, 
ImageRef, bool, bool, int)
        {
                throw VideoSourceException("DVBuffer3 is not compiled in to 
libcvd.");
        }
 
-       template <> VideoBuffer<unsigned short>* makeDVBuffer2(int, ImageRef, 
float, ImageRef, bool, int)
+       template <> VideoBuffer<unsigned short>* makeDVBuffer2(int, ImageRef, 
float, ImageRef, bool, bool, int)
        {
                throw VideoSourceException("DVBuffer3 is not compiled in to 
libcvd.");
        }
 
-       template <> VideoBuffer<yuv411>* makeDVBuffer2(int, ImageRef, float, 
ImageRef, bool, int)
+       template <> VideoBuffer<yuv411>* makeDVBuffer2(int, ImageRef, float, 
ImageRef, bool, bool, int)
        {
                throw VideoSourceException("DVBuffer3 is not compiled in to 
libcvd.");
        }
 
-       template <> VideoBuffer<yuv422>* makeDVBuffer2(int, ImageRef, float, 
ImageRef, bool, int)
+       template <> VideoBuffer<yuv422>* makeDVBuffer2(int, ImageRef, float, 
ImageRef, bool, bool, int)
        {
                throw VideoSourceException("DVBuffer3 is not compiled in to 
libcvd.");
        }
 
-       template <> VideoBuffer<bayer_grbg>* makeDVBuffer2(int, ImageRef, 
float, ImageRef, bool, int)
+       template <> VideoBuffer<bayer_grbg>* makeDVBuffer2(int, ImageRef, 
float, ImageRef, bool, bool, int)
        {
                throw VideoSourceException("DVBuffer3 is not compiled in to 
libcvd.");
        }
 
-       template <> VideoBuffer<bayer_gbrg>* makeDVBuffer2(int, ImageRef, 
float, ImageRef, bool, int)
+       template <> VideoBuffer<bayer_gbrg>* makeDVBuffer2(int, ImageRef, 
float, ImageRef, bool, bool, int)
        {
                throw VideoSourceException("DVBuffer3 is not compiled in to 
libcvd.");
        }
 
-       template <> VideoBuffer<bayer_rggb>* makeDVBuffer2(int, ImageRef, 
float, ImageRef, bool, int)
+       template <> VideoBuffer<bayer_rggb>* makeDVBuffer2(int, ImageRef, 
float, ImageRef, bool, bool, int)
        {
                throw VideoSourceException("DVBuffer3 is not compiled in to 
libcvd.");
        }
 
-       template <> VideoBuffer<bayer_bggr>* makeDVBuffer2(int, ImageRef, 
float, ImageRef, bool, int)
+       template <> VideoBuffer<bayer_bggr>* makeDVBuffer2(int, ImageRef, 
float, ImageRef, bool, bool, int)
        {
                throw VideoSourceException("DVBuffer3 is not compiled in to 
libcvd.");
        }
 
-       template <> VideoBuffer<bayer_grbg16be>* makeDVBuffer2(int, ImageRef, 
float, ImageRef, bool, int)
+       template <> VideoBuffer<bayer_grbg16be>* makeDVBuffer2(int, ImageRef, 
float, ImageRef, bool, bool, int)
        {
                throw VideoSourceException("DVBuffer3 is not compiled in to 
libcvd.");
        }
 
-       template <> VideoBuffer<bayer_gbrg16be>* makeDVBuffer2(int, ImageRef, 
float, ImageRef, bool, int)
+       template <> VideoBuffer<bayer_gbrg16be>* makeDVBuffer2(int, ImageRef, 
float, ImageRef, bool, bool, int)
        {
                throw VideoSourceException("DVBuffer3 is not compiled in to 
libcvd.");
        }
 
-       template <> VideoBuffer<bayer_rggb16be>* makeDVBuffer2(int, ImageRef, 
float, ImageRef, bool, int)
+       template <> VideoBuffer<bayer_rggb16be>* makeDVBuffer2(int, ImageRef, 
float, ImageRef, bool, bool, int)
        {
                throw VideoSourceException("DVBuffer3 is not compiled in to 
libcvd.");
        }
 
-       template <> VideoBuffer<bayer_bggr16be>* makeDVBuffer2(int, ImageRef, 
float, ImageRef, bool, int)
+       template <> VideoBuffer<bayer_bggr16be>* makeDVBuffer2(int, ImageRef, 
float, ImageRef, bool, bool, int)
        {
                throw VideoSourceException("DVBuffer3 is not compiled in to 
libcvd.");
        }
 
-       template <> VideoBuffer<Rgb<byte> >* makeDVBuffer2(int, ImageRef, 
float, ImageRef, bool, int)
+       template <> VideoBuffer<Rgb<byte> >* makeDVBuffer2(int, ImageRef, 
float, ImageRef, bool, bool, int)
        {
                throw VideoSourceException("DVBuffer3 is not compiled in to 
libcvd.");
        }

Index: cvd_src/Linux/dvbuffer3_dc1394v1.cc
===================================================================
RCS file: /sources/libcvd/libcvd/cvd_src/Linux/dvbuffer3_dc1394v1.cc,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- cvd_src/Linux/dvbuffer3_dc1394v1.cc 21 Jan 2010 16:48:28 -0000      1.6
+++ cvd_src/Linux/dvbuffer3_dc1394v1.cc 20 Mar 2010 17:21:11 -0000      1.7
@@ -69,6 +69,7 @@
                                   uint64_t,
                                   int,
                                   bool,
+                                  bool,
                               ImageRef ,
                               float fFrameRate,
                               ImageRef )

Index: cvd_src/Linux/dvbuffer3_dc1394v2.cc
===================================================================
RCS file: /sources/libcvd/libcvd/cvd_src/Linux/dvbuffer3_dc1394v2.cc,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- cvd_src/Linux/dvbuffer3_dc1394v2.cc 17 Mar 2010 12:49:24 -0000      1.10
+++ cvd_src/Linux/dvbuffer3_dc1394v2.cc 20 Mar 2010 17:21:11 -0000      1.11
@@ -23,6 +23,7 @@
 #include <cvd/Linux/dvbuffer3.h>
 #include <cvd/byte.h>
 #include <dc1394/dc1394.h>
+#include <libraw1394/raw1394.h>
 #include <vector>
 #include <algorithm>
 #include <iostream>
@@ -206,6 +207,7 @@
                               uint64_t cam_guid,
                               int cam_unit,
                               bool verbose,
+                              bool bus_reset,
                               ImageRef irSize,
                               float fFrameRate, 
                               ImageRef irOffset,
@@ -270,6 +272,14 @@
   
       if(!mpLDCP->pCamera) throw(All("Failed on dc1394_camera_new"));
 
+      if (bus_reset) {
+       dc1394switch_t is_iso_on;
+       if (dc1394_video_get_transmission(mpLDCP->pCamera, 
&is_iso_on)!=DC1394_SUCCESS) is_iso_on = DC1394_OFF;
+       if (is_iso_on==DC1394_ON) {
+         dc1394_video_set_transmission(mpLDCP->pCamera, DC1394_OFF);
+       }
+      }
+
       log << "Selected camera: " << hex << mpLDCP->pCamera->vendor_id << ":" 
<< mpLDCP->pCamera->model_id << "(guid: " << mpLDCP->pCamera->guid << dec << 
")\n";
  
       // What mode to use?
@@ -465,7 +475,7 @@
        
                // frame rate calculations
                int num_packets = (int)(8000.0/fFrameRate + 0.5);
-               log << "Number of packes: " << num_packets << "\n";
+               log << "Number of packets: " << num_packets << "\n";
                int packet_size = (irSize.x * irSize.y * 8 + num_packets * 8 - 
1 ) / (num_packets * 8);
                mdFramerate = fFrameRate;
                // offset calculations
@@ -567,6 +577,20 @@
       delete mpLDCP;
     }
   
+    void RawDVBuffer3::stopAllTransmissions(void)
+    {
+      raw1394handle_t rawhandle = raw1394_new_handle();
+      int numPorts = raw1394_get_port_info(rawhandle, NULL,0);
+      for (int i=0; i<numPorts; i++) {
+       raw1394handle_t port = raw1394_new_handle_on_port(i);
+       if (port==NULL) continue;
+       raw1394_iso_stop(port);
+       raw1394_iso_shutdown(port);
+       raw1394_reset_bus(port);
+       raw1394_destroy_handle(port);
+      }
+      raw1394_destroy_handle(rawhandle);
+    }
   
     bool RawDVBuffer3::frame_pending()
     {




reply via email to

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