00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef CAPTUREMANAGER_H_
00025 #define CAPTUREMANAGER_H_
00026
00027 #if !defined(_MSC_VER) && !defined(USE_PREBUILD_LIBS)
00028 # include "avcap-config.h"
00029 #endif
00030
00031 #include "avcap-export.h"
00032
00033 namespace avcap
00034 {
00035 class CaptureHandler;
00036 class IOBuffer;
00037
00039
00046 class AVCAP_Export CaptureManager
00047 {
00048 public:
00049 enum
00050 {
00051 MAX_BUFFERS = 32,
00052 DEFAULT_BUFFERS = 16
00053 };
00054
00055
00056 #ifdef AVCAP_LINUX
00057 enum IOMethod
00058 {
00059 IO_METHOD_NOCAP = 0,
00060 IO_METHOD_READ,
00061 IO_METHOD_MMAP,
00062 IO_METHOD_USERPTR,
00063 };
00064 #endif
00065
00066 private:
00067 CaptureHandler* mCaptureHandler;
00068
00069 public:
00071 inline CaptureManager() : mCaptureHandler(0)
00072 {}
00073
00075 virtual inline ~CaptureManager()
00076 {}
00077
00079 virtual int init() = 0;
00080
00082 virtual int destroy() = 0;
00083
00085 virtual int startCapture() = 0;
00086
00088 virtual int stopCapture() = 0;
00089
00091
00096 virtual inline void registerCaptureHandler(CaptureHandler *handler)
00097 { mCaptureHandler = handler; }
00098
00100
00102 virtual inline void removeCaptureHandler()
00103 { mCaptureHandler = 0; }
00104
00106
00109 virtual inline CaptureHandler* getCaptureHandler()
00110 { return mCaptureHandler; }
00111
00113
00116 virtual int getNumIOBuffers() = 0;
00117
00118 private:
00120
00121 virtual IOBuffer* dequeue() = 0;
00122
00124
00126 virtual int enqueue(IOBuffer* buf) = 0;
00127
00128 friend class IOBuffer;
00129 };
00130 };
00131
00132 #endif // CAPTUREMANAGER_H_