*/
CV_WRAP virtual bool open(const String& filename, int apiPreference);
+ /** @brief Returns used backend API name
+
+ @note Stream should be opened.
+ */
+ CV_WRAP String getBackendName() const;
+
protected:
Ptr<CvCapture> cap;
Ptr<IVideoCapture> icap;
*/
CV_WRAP static int fourcc(char c1, char c2, char c3, char c4);
+ /** @brief Returns used backend API name
+
+ @note Stream should be opened.
+ */
+ CV_WRAP String getBackendName() const;
+
protected:
Ptr<CvVideoWriter> writer;
Ptr<IVideoWriter> iwriter;
#include "precomp.hpp"
+#include "opencv2/videoio/registry.hpp"
#include "videoio_registry.hpp"
namespace cv {
return !cap.empty(); // legacy interface doesn't support closed files
}
+String VideoCapture::getBackendName() const
+{
+ int api = 0;
+ if (icap)
+ api = icap->isOpened() ? icap->getCaptureDomain() : 0;
+ else if (cap)
+ api = cap->getCaptureDomain();
+ CV_Assert(api != 0);
+ return cv::videoio_registry::getBackendName((VideoCaptureAPIs)api);
+}
+
void VideoCapture::release()
{
CV_TRACE_FUNCTION();
return 0.;
}
+String VideoWriter::getBackendName() const
+{
+ int api = 0;
+ if (iwriter)
+ api = iwriter->getCaptureDomain();
+ else if (writer)
+ api = writer->getCaptureDomain();
+ CV_Assert(api != 0);
+ return cv::videoio_registry::getBackendName((VideoCaptureAPIs)api);
+}
+
void VideoWriter::write(const Mat& image)
{
CV_INSTRUMENT_REGION();
int is_color=1);
~CvVideoWriter_AVFoundation();
bool writeFrame(const IplImage* image);
+ int getCaptureDomain() const CV_OVERRIDE { return cv::CAP_AVFOUNDATION; }
private:
IplImage* argbimage;
int is_color=1);
~CvVideoWriter_AVFoundation();
bool writeFrame(const IplImage* image);
+ int getCaptureDomain() const CV_OVERRIDE { return cv::CAP_AVFOUNDATION; }
private:
IplImage* argbimage;
virtual bool setProperty(int, double) CV_OVERRIDE;
virtual bool grabFrame() CV_OVERRIDE;
virtual IplImage* retrieveFrame(int) CV_OVERRIDE;
- virtual int getCaptureDomain() CV_OVERRIDE { return CV_CAP_DC1394; } // Return the type of the capture object: CV_CAP_VFW, etc...
+ virtual int getCaptureDomain() CV_OVERRIDE { return CV_CAP_DC1394; }
protected:
CvCaptureCAM_DC1394* captureDC1394;
virtual bool setProperty(int, double) CV_OVERRIDE;
virtual bool grabFrame() CV_OVERRIDE;
virtual IplImage* retrieveFrame(int) CV_OVERRIDE;
- virtual int getCaptureDomain() CV_OVERRIDE { return CV_CAP_DC1394; } // Return the type of the capture object: CV_CAP_VFW, etc...
+ virtual int getCaptureDomain() CV_OVERRIDE { return CV_CAP_DC1394; }
protected:
CvVideoWriter_FFMPEG_proxy(const cv::String& filename, int fourcc, double fps, cv::Size frameSize, bool isColor) { ffmpegWriter = 0; open(filename, fourcc, fps, frameSize, isColor); }
virtual ~CvVideoWriter_FFMPEG_proxy() { close(); }
+ int getCaptureDomain() const CV_OVERRIDE { return cv::CAP_FFMPEG; }
+
virtual void write(cv::InputArray image ) CV_OVERRIDE
{
if(!ffmpegWriter)
virtual bool setProperty(int, double) CV_OVERRIDE;
virtual bool grabFrame() CV_OVERRIDE;
virtual bool retrieveFrame(int, OutputArray) CV_OVERRIDE;
- virtual int getCaptureDomain() CV_OVERRIDE
- {
- return CV_CAP_GPHOTO2;
- } // Return the type of the capture object: CV_CAP_VFW, etc...
+ virtual int getCaptureDomain() CV_OVERRIDE { return CV_CAP_GPHOTO2; }
bool open(int index);
void close();
virtual double getProperty(int propId) const CV_OVERRIDE;
virtual bool setProperty(int propId, double value) CV_OVERRIDE;
virtual bool isOpened() const CV_OVERRIDE;
- virtual int getCaptureDomain() CV_OVERRIDE; // Return the type of the capture object: CAP_VFW, etc...
+ virtual int getCaptureDomain() CV_OVERRIDE { return cv::CAP_GSTREAMER; }
bool open(int id);
bool open(const String &filename_);
static void newPad(GstElement * /*elem*/, GstPad *pad, gpointer data);
return pipeline != NULL;
}
-int GStreamerCapture::getCaptureDomain() { return CAP_GSTREAMER; }
-
/*!
* \brief CvCapture_GStreamer::open Open the given file with gstreamer
* \param type CvCapture type. One of CV_CAP_GSTREAMER_*
}
virtual ~CvVideoWriter_GStreamer() CV_OVERRIDE { close(); }
+ int getCaptureDomain() const CV_OVERRIDE { return cv::CAP_GSTREAMER; }
+
virtual bool open( const char* filename, int fourcc,
double fps, CvSize frameSize, bool isColor );
virtual void close();
virtual bool grabFrame() CV_OVERRIDE;
virtual IplImage* retrieveFrame(int) CV_OVERRIDE;
+ int getCaptureDomain() /*const*/ CV_OVERRIDE { return cv::CAP_IMAGES; }
protected:
char* filename; // actually a printf-pattern
unsigned currentframe;
virtual bool setProperty( int, double ); // FIXIT doesn't work: IVideoWriter interface only!
virtual bool writeFrame( const IplImage* ) CV_OVERRIDE;
+ int getCaptureDomain() const CV_OVERRIDE { return cv::CAP_IMAGES; }
protected:
char* filename;
unsigned currentframe;
virtual bool setProperty(int, double) CV_OVERRIDE;
virtual bool grabFrame() CV_OVERRIDE;
virtual IplImage* retrieveFrame(int) CV_OVERRIDE;
+
+ int getCaptureDomain() /*const*/ CV_OVERRIDE { return cv::CAP_V4L; }
protected:
CvCaptureCAM_V4L* captureV4L;
virtual void write(cv::InputArray input);
static cv::Ptr<VideoWriter_IntelMFX> create(const cv::String& filename, int _fourcc, double fps, cv::Size frameSize, bool isColor);
+ virtual int getCaptureDomain() const { return cv::CAP_INTEL_MFX; }
protected:
bool write_one(cv::InputArray bgr);
virtual bool grabFrame() CV_OVERRIDE;
virtual bool retrieveFrame(int, OutputArray) CV_OVERRIDE;
virtual bool isOpened() const CV_OVERRIDE;
- virtual int getCaptureDomain() CV_OVERRIDE { return CAP_ANY; } // Return the type of the capture object: CAP_VFW, etc...
+ virtual int getCaptureDomain() CV_OVERRIDE { return CAP_OPENCV_MJPEG; }
MotionJpegCapture(const String&);
bool open(const String&);
}
~MotionJpegWriter() { close(); }
+ virtual int getCaptureDomain() const CV_OVERRIDE { return cv::CAP_OPENCV_MJPEG; }
+
void close()
{
if( !container.isOpenedStream() )
virtual bool grabFrame() CV_OVERRIDE;
virtual bool retrieveFrame(int, cv::OutputArray) CV_OVERRIDE;
virtual bool isOpened() const CV_OVERRIDE { return isOpen; }
- virtual int getCaptureDomain() CV_OVERRIDE { return CV_CAP_MSMF; } // Return the type of the capture object: CV_CAP_VFW, etc...
+ virtual int getCaptureDomain() CV_OVERRIDE { return CV_CAP_MSMF; }
protected:
double getFramerate(MediaType MT) const;
bool configureOutput(UINT32 width, UINT32 height, double prefFramerate, UINT32 aspectRatioN, UINT32 aspectRatioD, int outFormat, bool convertToFormat);
virtual bool setProperty(int, double) { return false; }
virtual bool isOpened() const { return initiated; }
+ int getCaptureDomain() const CV_OVERRIDE { return cv::CAP_MSMF; }
private:
Media_Foundation& MF;
UINT32 videoWidth;
virtual bool setProperty(int, double) CV_OVERRIDE;
virtual bool grabFrame() CV_OVERRIDE;
virtual IplImage* retrieveFrame(int) CV_OVERRIDE;
- virtual int getCaptureDomain() CV_OVERRIDE { return CV_CAP_QT; } // Return the type of the capture object: CV_CAP_VFW, etc...
+ virtual int getCaptureDomain() CV_OVERRIDE { return CV_CAP_QT; }
protected:
CvCapture_QT_Movie* captureQT;
virtual void close();
virtual bool writeFrame( const IplImage* );
+ int getCaptureDomain() const CV_OVERRIDE { return cv::CAP_QT; }
protected:
CvVideoWriter_QT* writerQT;
};
int is_color=1);
~CvVideoWriter_QT();
bool writeFrame(const IplImage* image);
+
+ int getCaptureDomain() const CV_OVERRIDE { return cv::CAP_QT; }
private:
IplImage* argbimage;
QTMovie* mMovie;
virtual bool setProperty(int, double) CV_OVERRIDE;
virtual bool grabFrame() CV_OVERRIDE;
virtual IplImage* retrieveFrame(int) CV_OVERRIDE;
- virtual int getCaptureDomain() CV_OVERRIDE { return CV_CAP_UNICAP; } // Return the type of the capture object: CV_CAP_VFW, etc...
+ virtual int getCaptureDomain() CV_OVERRIDE { return CV_CAP_UNICAP; }
bool shutdownDevice();
bool initDevice();
struct CvCaptureCAM_V4L CV_FINAL : public CvCapture
{
+ int getCaptureDomain() /*const*/ CV_OVERRIDE { return cv::CAP_V4L; }
+
int deviceHandle;
int bufferIndex;
int FirstCapture;
virtual bool setProperty(int, double) CV_OVERRIDE;
virtual bool grabFrame() CV_OVERRIDE;
virtual IplImage* retrieveFrame(int) CV_OVERRIDE;
- virtual int getCaptureDomain() CV_OVERRIDE { return CV_CAP_VFW; } // Return the type of the capture object: CV_CAP_VFW, etc...
+ virtual int getCaptureDomain() CV_OVERRIDE { return CV_CAP_VFW; }
protected:
void init();
virtual void close();
virtual bool writeFrame( const IplImage* );
+ int getCaptureDomain() const CV_OVERRIDE { return cv::CAP_VFW; }
protected:
void init();
bool createStreams( CvSize frameSize, bool isColor );
virtual bool grabFrame();
virtual bool retrieveFrame(int channel, cv::OutputArray outArray);
- // Return the type of the capture object
- virtual int getCaptureDomain() { return CAP_WINRT; }
+ virtual int getCaptureDomain() CV_OVERRIDE { return CAP_WINRT; }
virtual bool isOpened() const;
virtual bool setProperty(int, double) CV_OVERRIDE;
virtual bool grabFrame() CV_OVERRIDE;
virtual IplImage* retrieveFrame(int) CV_OVERRIDE;
- virtual int getCaptureDomain() CV_OVERRIDE { return CV_CAP_XIAPI; } // Return the type of the capture object: CV_CAP_VFW, etc...
+ virtual int getCaptureDomain() CV_OVERRIDE { return CV_CAP_XIAPI; }
private:
bool _open();
{
virtual ~CvVideoWriter() {}
virtual bool writeFrame(const IplImage*) { return false; }
+ virtual int getCaptureDomain() const { return cv::CAP_ANY; } // Return the type of the capture object: CAP_FFMPEG, etc...
};
CvCapture * cvCreateCameraCapture_V4L( int index );
virtual bool isOpened() const = 0;
virtual void write(InputArray) = 0;
+
+ virtual int getCaptureDomain() const { return cv::CAP_ANY; } // Return the type of the capture object: CAP_FFMPEG, etc...
};
Ptr<IVideoCapture> createMotionJpegCapture(const String& filename);