+
+
+class CvCaptureAVI_XINE_CPP : public CvCapture
+{
+public:
+ CvCaptureAVI_XINE_CPP() { captureXINE = 0; }
+ virtual ~CvCaptureAVI_XINE_CPP() { close(); }
+
+ virtual bool open( int index );
+ virtual void close();
+
+ virtual double getProperty(int);
+ virtual bool setProperty(int, double);
+ virtual bool grabFrame();
+ virtual IplImage* retrieveFrame();
+protected:
+
+ CvCaptureAVI_XINE* captureXINE;
+};
+
+bool CvCaptureAVI_XINE_CPP::open( int index )
+{
+ close();
+ captureXINE = icvCaptureFromFile_XINE(index);
+ return captureXINE != 0;
+}
+
+void CvCaptureAVI_XINE_CPP::close()
+{
+ if( captureXINE )
+ {
+ icvCloseAVI_XINE( captureXINE );
+ cvFree( &captureXINE );
+ }
+}
+
+bool CvCaptureAVI_XINE_CPP::grabFrame()
+{
+ return captureXINE ? icvGrabFrameAVI_XINE( captureXINE ) != 0 : false;
+}
+
+IplImage* CvCaptureAVI_XINE_CPP::retrieveFrame()
+{
+ return captureXINE ? (IplImage*)icvRetrieveFrameAVI_XINE( captureXINE ) : 0;
+}
+
+double CvCaptureAVI_XINE_CPP::getProperty( int propId )
+{
+ return captureXINE ? icvGetPropertyAVI_XINE( captureXINE, propId ) : 0;
+}
+
+bool CvCaptureAVI_XINE_CPP::setProperty( int propId, double value )
+{
+ return captureXINE ? icvSetPropertyAVI_XINE( captureXINE, propId, value ) != 0 : false;
+}
+
+CvCapture* cvCreateCameraCapture_XINE( int index )
+{
+ CvCaptureAVI_XINE_CPP* capture = new CvCaptureAVI_XINE_CPP;
+
+ if( capture->open( index ))
+ return capture;
+
+ delete capture;
+ return 0;
+}
+
+