Changeset 102:56b64e332c99
- Timestamp:
- 11/24/06 11:37:07 (2 years ago)
- Files:
-
- .hgignore (modified) (1 diff)
- libs/pixertool/SConscript (modified) (5 diffs)
- libs/pixertool/src/null-pixertool.c (added)
- libs/pixertool/src/null-pixertool.cpp (deleted)
- libs/pixertool/src/pixertool.c (added)
- libs/pixertool/src/pixertool.cpp (deleted)
- libs/timer/SConscript (modified) (1 diff)
- libs/webcam/SConscript (modified) (1 diff)
- libs/webcam/include/DefaultWebcamDriverFactory.h (deleted)
- libs/webcam/include/DirectXWebcamDriver.h (deleted)
- libs/webcam/include/DirectXWebcamDriverFactory.h (deleted)
- libs/webcam/include/DirectXWebcamUtils.h (deleted)
- libs/webcam/include/IWebcamDriver.h (deleted)
- libs/webcam/include/NullWebcamDriver.h (deleted)
- libs/webcam/include/NullWebcamDriverFactory.h (deleted)
- libs/webcam/include/QuicktimeWebcamDriver.h (deleted)
- libs/webcam/include/QuicktimeWebcamDriverFactory.h (deleted)
- libs/webcam/include/V4LWebcamDriver.h (deleted)
- libs/webcam/include/V4LWebcamDriverFactory.h (deleted)
- libs/webcam/include/WebcamDriver.h (deleted)
- libs/webcam/include/WebcamDriverFactory.h (deleted)
- libs/webcam/include/directx/directxwebcamdriver.h (added)
- libs/webcam/include/directx/directxwebcamutils.h (added)
- libs/webcam/include/quicktime/quicktimewebcamdriver.h (added)
- libs/webcam/include/v4l/v4lwebcamdriver.h (added)
- libs/webcam/include/v4l/v4lwebcamutils.h (added)
- libs/webcam/include/wbc_debug.h (added)
- libs/webcam/include/webcam.h (modified) (6 diffs)
- libs/webcam/include/webcam/DefaultWebcamDriverFactory.h (deleted)
- libs/webcam/include/webcam/DirectXWebcamDriver.h (deleted)
- libs/webcam/include/webcam/DirectXWebcamDriverFactory.h (deleted)
- libs/webcam/include/webcam/DirectXWebcamUtils.h (deleted)
- libs/webcam/include/webcam/EnumVideoQuality.h (deleted)
- libs/webcam/include/webcam/IWebcamDriver.h (deleted)
- libs/webcam/include/webcam/NullWebcamDriver.h (deleted)
- libs/webcam/include/webcam/NullWebcamDriverFactory.h (deleted)
- libs/webcam/include/webcam/QuicktimeWebcamDriver.h (deleted)
- libs/webcam/include/webcam/QuicktimeWebcamDriverFactory.h (deleted)
- libs/webcam/include/webcam/V4LWebcamDriver.h (deleted)
- libs/webcam/include/webcam/V4LWebcamDriverFactory.h (deleted)
- libs/webcam/include/webcam/WebcamDriver.h (deleted)
- libs/webcam/include/webcam/WebcamDriverFactory.h (deleted)
- libs/webcam/include/webcam/webcam.h (deleted)
- libs/webcam/include/webcamdriver.h (added)
- libs/webcam/src/WebcamDriver.cpp (deleted)
- libs/webcam/src/directx/DirectXWebcamDriver.cpp (deleted)
- libs/webcam/src/directx/DirectXWebcamUtils.cpp (deleted)
- libs/webcam/src/null/NullWebcamDriver.cpp (deleted)
- libs/webcam/src/null/nullwebcamdriver.c (added)
- libs/webcam/src/quicktime/quicktimewebcamdriver.c (added)
- libs/webcam/src/v4l/V4LWebcamDriver.cpp (deleted)
- libs/webcam/src/v4l/v4lwebcamdriver.c (added)
- libs/webcam/src/v4l/v4lwebcamutils.c (added)
- libs/webcam/src/webcam.c (added)
- libs/webcam/src/webcam.cpp (modified) (10 diffs)
- libs/webcam/test/SConscript (added)
- libs/webcam/test/webcam_test.c (added)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
.hgignore
r24 r102 14 14 .lib$ 15 15 linux/debug/ 16 win32/debug/ 16 17 sconsign libs/pixertool/SConscript
r40 r102 5 5 libs = [ 6 6 'owcutil', 7 'owutil',7 #'owutil', 8 8 'avcodec', 9 'avutil'9 #'avutil' 10 10 11 11 ] … … 18 18 ] 19 19 sources = [ 20 'src/pixertool.c pp',20 'src/pixertool.c', 21 21 'src/ffmpeg/ffmpeg-pixertool.c', 22 22 ] … … 33 33 34 34 else: 35 sources += ['src/null-pixertool.c pp']35 sources += ['src/null-pixertool.c'] 36 36 37 37 … … 39 39 pxl = BJ.Library(env, target = 'pixertool', 40 40 source = sources, 41 uses = ["ow util", "owcutil", "avcodec", "avutil"],41 uses = ["owcutil", "avcodec", "avutil"], 42 42 includes = ["#/libs/pixertool/include"], 43 43 CPPPATH = include_path, CPPDEFINES = defines … … 55 55 pxl = env.StaticLibrary('pixertool', source = pxo) 56 56 57 BJ.Component('pixertool', uses = ["ow util", "owcutil", "avcodec", "avutil"],57 BJ.Component('pixertool', uses = ["owcutil", "avcodec", "avutil"], 58 58 includes = ["#/libs/pixertool/include"]) 59 59 libs/timer/SConscript
r40 r99 24 24 25 25 26 env.Append(C CPDEFINES = defines, CPPPATH = include_path)26 env.Append(CPPDEFINES = defines, CPPPATH = include_path) 27 27 28 28 if env['shared_phapi']: libs/webcam/SConscript
r40 r102 3 3 env = BJ.NewEnv() 4 4 5 6 libs = [ 7 'owutil', 8 'pixertool', 5 libs = [ 6 'pixertool' 9 7 ] 10 8 11 #if GlobalOSLinux() or GlobalOSMacOSX(): 12 if BJ.osxTarget: 13 libs.append('owthread') 9 defines = {} 14 10 15 11 include_path = [ 16 'include' 12 'include', 17 13 ] 18 14 19 15 headers = [ 20 'include/WebcamDriver.h', 21 'include/WebcamDriverFactory.h', 16 'include/webcamdriver.h', 22 17 'include/webcam.h', 23 'include/IWebcamDriver.h', 24 'include/NullWebcamDriverFactory.h', 25 'include/DefaultWebcamDriverFactory.h', 18 'include/wbc_debug.h' 26 19 ] 27 20 28 21 sources = [ 29 'src/WebcamDriver.cpp',30 'src/webcam.cpp',31 'src/null/NullWebcamDriver.cpp',32 22 ] 23 24 25 26 env.ParseConfig('sdl-config --cflags --libs') 33 27 34 28 if BJ.msvc: 35 29 headers += [ 36 'include/DirectXWebcamDriverFactory.h', 37 'include/DirectXWebcamDriver.h', 38 'include/DirectXWebcamUtils.h' 30 'include/directx/directxwebcamdriver.h', 31 'include/directx/directxwebcamutils.h' 39 32 ] 40 33 sources += [ 41 'src/directx/DirectXWebcamDriver.cpp', 42 'src/directx/DirectXWebcamUtils.cpp' 43 ] 34 'src/directx/directxwebcamdriver.cpp', 35 'src/directx/directxwebcamutils.cpp', 36 'src/webcam.cpp' 37 ] 44 38 libs += ["winmm", "strmiids", "comsupp"] 39 40 defines["CC_MSVC"] = 1 41 42 45 43 46 44 if BJ.linuxTarget: 45 libs = [ 46 'pthread', 47 'm' 48 ] 47 49 headers += [ 48 ' include/V4LWebcamDriverFactory.h',49 ' src/v4l/V4LWebcamDriver.h'50 'src/v4l/v4lwebcamdriver.h', 51 'include/v4l/util.h', 50 52 ] 51 53 sources += [ 52 'src/v4l/V4LWebcamDriver.cpp' 54 'src/v4l/v4lwebcamdriver.c', 55 'src/v4l/util.c', 56 'src/webcam.c' 53 57 ] 58 59 defines["OS_LINUX"] = 1 60 54 61 55 62 if BJ.osxTarget: 56 63 headers += [ 57 'include/QuicktimeWebcamDriverFactory.h', 58 'src/quicktime/QuicktimeWebcamDriver.h' 64 'include/quicktime/QuicktimeWebcamDriver.h' 59 65 ] 66 60 67 sources += [ 61 68 'src/quicktime/QuicktimeWebcamDriver.cpp' 69 'src/webcam.cpp' 62 70 ] 71 63 72 include_path += [ 64 73 '/System/Library/Frameworks/Quicktime.framework/Headers' 65 74 ] 75 76 libs.append('owthread') 77 78 defines["OS_MACOSX"] = 1 66 79 67 80 68 env.Append(CPPPATH = include_path) 81 82 env.Append(CPPPATH = include_path, CPPDEFINES = defines) 69 83 BJ.Use(env, libs) 70 84 libs/webcam/include/webcam.h
r0 r102 22 22 23 23 #include <pixertool.h> 24 #include <string.h> 24 25 25 26 /*TODO: add function to set factory*/ … … 46 47 47 48 typedef struct { 48 unsignedcount;49 int count; 49 50 const char ** name; 50 51 } webcamdevicelist; … … 84 85 * @see IWebcamDriver::getDeviceList() 85 86 */ 86 webcamdevicelist * webcam_get_device_list( webcam *);87 webcamdevicelist * webcam_get_device_list(void); 87 88 88 89 /** … … 97 98 * @see IWebcamDriver::getDefaultDevice() 98 99 */ 99 const char * webcam_get_default_device(webcam * );100 const char * webcam_get_default_device(webcam * wc); 100 101 101 102 … … 107 108 * @return the new webcam 108 109 */ 109 webcam * webcam_get_instance(); 110 //webcam * webcam_get_instance(); 111 webcam *webcam_open(char *name); 112 110 113 111 114 /** 112 115 * @see IWebcamDriver::setFlags(int flags) 113 116 */ 114 void webcam_set_flags(webcam *wc, int flags) ;117 void webcam_set_flags(webcam *wc, int flags) ; 115 118 116 119 … … 253 256 */ 254 257 int webcam_get_contrast(webcam *wc); 255 256 258 257 259 #ifdef __cplusplus libs/webcam/src/webcam.cpp
r5 r102 18 18 */ 19 19 20 #include <webcam/webcam.h> 21 22 #include <webcam/WebcamDriver.h> 23 24 using namespace std; 25 26 typedef struct _webcamcallbacklist { 20 #include <webcam.h> 21 #include <webcamdriver.h> 22 23 #if defined (CC_MSVC) 24 #include <directx/directxwebcamdriver.h> 25 26 #elif defined (OS_LINUX) 27 #include <v4l/v4lwebcamdriver.h> 28 29 #elif defined (OS_MACOSX) 30 #include <nullwebcamdriver.h> 31 32 #else 33 #include <nullwebcamdriver.h> 34 35 #endif 36 37 38 //using namespace std; 39 40 typedef struct _webcamcallbacklist webcamcallbacklist; 41 struct _webcamcallbacklist 42 { 27 43 /** sender */ 28 44 webcam * wc; … … 32 48 void * data; 33 49 /** Link to previous and next callback. Linked list */ 34 _webcamcallbacklist *prev, *next; 35 } webcamcallbacklist; 36 37 struct opaquewebcam { 38 WebcamDriver * driver; 50 webcamcallbacklist *prev, *next; 51 }; 52 53 struct opaquewebcam 54 { 55 WebcamDriver *driver; 56 void *context; 39 57 }; 40 58 … … 42 60 static webcamcallbacklist * cbks = NULL; 43 61 44 static void webcam_frame_captured_event_handler(IWebcamDriver *sender, piximage *image) { 62 //static 63 void webcam_frame_captured_event_handler(WebcamDriver *driver, piximage *image) 64 { 45 65 webcamcallbacklist * cur = cbks; 46 66 … … 51 71 } 52 72 53 webcamdevicelist * webcam_get_device_list(webcam *) { 54 IWebcamDriver * driver = WebcamDriver::getInstance(); 55 StringList deviceList = driver->getDeviceList(); 73 webcamdevicelist * webcam_get_device_list() 74 { 75 int i,j; 76 77 ArrayDevice *devName = getDevices(); 78 ArrayDevice *Array_Device = devName; 56 79 webcamdevicelist *devlist = (webcamdevicelist *)malloc(sizeof(webcamdevicelist)); 57 80 58 devlist->count = deviceList.size(); 59 devlist->name = (const char **)malloc(devlist->count * sizeof(const char *)); 60 61 for (register unsigned i = 0; i < devlist->count; i++) { 62 devlist->name[i] = (const char *)malloc(deviceList[i].size()); 63 sprintf((char *) devlist->name[i], deviceList[i].c_str(), deviceList[i].size()); 81 devlist->count = sizeof_deviceList(devName); 82 devlist->name = (const char **) malloc(devlist->count * sizeof(const char*)); 83 84 for (i = 0; i < devlist->count; i++) 85 { 86 if (i!=0) 87 Array_Device = Array_Device->next; 88 89 j = strlen(Array_Device->device); 90 devlist->name[i] = (char *)malloc(j*sizeof(char)); 91 sprintf((char *) devlist->name[i], Array_Device->device, sizeof(Array_Device->device)); 64 92 } 65 93 … … 67 95 } 68 96 69 void webcam_release_webcamdevicelist(webcamdevicelist *devlist) { 70 if (devlist) { 71 if (devlist->name) { 72 for (register unsigned i = 0; i < devlist->count; i++) { 73 if (devlist->name[i]) { 97 void webcam_release_webcamdevicelist(webcamdevicelist *devlist) 98 { 99 int i; 100 if (devlist) 101 { 102 if (devlist->name) 103 { 104 for (i = 0; i < devlist->count; i++) 105 { 106 if (devlist->name[i]) 107 { 74 108 free((void *) devlist->name[i]); 75 109 } … … 81 115 } 82 116 83 const char * webcam_get_default_device(webcam *) { 84 IWebcamDriver * driver = WebcamDriver::getInstance(); 85 static string device; 86 87 device = driver->getDefaultDevice(); 88 89 return device.c_str(); 90 } 91 92 webcam * webcam_get_instance() { 117 const char * webcam_get_default_device(webcam * wc) 118 { 119 static const char* device; 120 121 device = wc->driver->getDefaultDevice(); 122 123 return device; 124 } 125 126 /* 127 webcam * webcam_get_instance() 128 { 93 129 webcam * wc = (webcam *) malloc(sizeof(webcam)); 94 130 … … 99 135 return wc; 100 136 } 101 102 void webcam_set_flags(webcam * wc, int flags) { 103 wc->driver->setFlags(flags); 104 } 105 106 void webcam_unset_flags(webcam * wc, int flags) { 107 wc->driver->unsetFlags(flags); 108 } 109 110 int webcam_is_flag_set(webcam * wc, int flag) { 111 if (wc->driver->isFlagSet(flag)) { 137 */ 138 139 140 webcam *webcam_open(char *name) 141 { 142 webcam *wc; 143 wc = (webcam *)malloc(sizeof(webcam)); 144 #if defined (OS_LINUX) 145 if (!strncmp(name,"v4l", 3)) 146 { 147 wc->driver = v4ldriver; 148 wc->context = v4ldriver->openwebcam(name,webcam_frame_captured_event_handler); 149 } 150 #elif defined (CC_MSVC) 151 if (!strncmp(name,"directx", 7)) 152 { 153 wc->driver = directxdriver; 154 wc->context = directxdriver->openwebcam(name, &webcam_frame_captured_event_handler); 155 156 } 157 #elif defined (OS_MACOSX) 158 if (!strncmp(name,"quicktime", 9)) 159 { 160 wc->driver = quicktimedriver; 161 wc->context = quicktimedriver->openwebcam(name,webcam_frame_captured_event_handler); 162 163 } 164 165 #else 166 { 167 name = strdup("null"); 168 wc->driver = nulldriver; 169 wc->context = nulldriver->openwebcam(name, webcam_frame_captured_event_handler); 170 } 171 #endif 172 return wc; 173 } 174 175 176 177 void webcam_set_flags(webcam * wc, int flags) 178 { 179 wc->driver->setFlags(wc->context, flags); 180 } 181 182 void webcam_unset_flags(webcam * wc, int flags) 183 { 184 wc->driver->unsetFlags(wc->context, flags); 185 } 186 187 int webcam_is_flag_set(webcam * wc, int flag) 188 { 189 if (wc->driver->isFlagSet(wc->context, flag)) 190 { 112 191 return 1; 113 } else { 192 } 193 else 194 { 114 195 return 0; 115 196 } 116 197 } 117 198 118 void webcam_release(webcam * wc) { 199 void webcam_release(webcam * wc) 200 { 119 201 webcamcallbacklist *nxt, *cur; 120 202 121 203 webcam_stop_capture(wc); 122 if (wc) { 204 if (wc) 205 { 123 206 free(wc); 124 207 125 208 cur = cbks; 126 while(cur) { 209 while(cur) 210 { 127 211 nxt = cur->next; 128 212 free(cur); … … 130 214 } 131 215 cbks = NULL; 132 } 133 } 134 135 webcamerrorcode webcam_set_device(webcam * wc, const char * device_name) { 136 return wc->driver->setDevice(device_name); 137 } 138 139 void webcam_add_callback(webcam * wc, webcamcallback * callback, void * userData) { 216 217 } 218 } 219 220 webcamerrorcode webcam_set_device(webcam * wc, const char * device_name) 221 { 222 223 return wc->driver->setDevice(wc->context, "Logitech QuickCam Pro 4000"); 224 225 } 226 227 void webcam_add_callback(webcam * wc, webcamcallback * callback, void * userData) 228 { 140 229 webcamcallbacklist *cur; 141 142 if (cbks == NULL){230 if (cbks == NULL) 231 { 143 232 cbks = (webcamcallbacklist *) malloc(sizeof(webcamcallbacklist)); 144 233 cbks->prev = NULL; 145 234 cbks->next = NULL; 146 235 cur = cbks; 147 } else { 236 } 237 else 238 { 148 239 //Find last 149 240 cur = cbks; 150 while (cur->next != NULL) { 241 while (cur->next != NULL) 242 { 151 243 cur = cur->next; 152 244 } … … 162 254 } 163 255 164 void webcam_remove_callback(webcam * wc, webcamcallback * callback) { 256 void webcam_remove_callback(webcam * wc, webcamcallback * callback) 257 { 165 258 webcamcallbacklist * cur = cbks; 166 259 167 while ((cur != NULL) && (cur->cbk != callback)) { 260 while ((cur != NULL) && (cur->cbk != callback)) 261 { 168 262 cur = cur->next; 169 263 } 170 264 171 if (cur != NULL) { 265 if (cur != NULL) 266 { 172 267 cur->prev->next = cur->next; 173 if (cur->next) { 268 if (cur->next) 269 { 174 270 cur->next->prev = cur->prev; 175 271 } … … 178 274 } 179 275 180 void webcam_start_capture(webcam * wc) { 181 wc->driver->startCapture(); 182 } 183 184 void webcam_pause_capture(webcam * wc) { 185 wc->driver->pauseCapture(); 186 } 187 188 void webcam_stop_capture(webcam *wc) { 189 wc->driver->stopCapture(); 190 } 191 192 unsigned webcam_get_width(webcam * wc) { 193 return wc->driver->getWidth(); 194 } 195 196 unsigned webcam_get_height(webcam * wc) { 197 return wc->driver->getHeight(); 198 } 199 200 pixosi webcam_get_palette(webcam * wc) { 201 return wc->driver->getPalette(); 202 } 203 204 webcamerrorcode webcam_set_palette(webcam * wc, pixosi palette) { 205 return wc->driver->setPalette(palette); 206 } 207 208 int webcam_is_opened(webcam * wc) { 209 if (wc->driver->isOpened()) { 276 void webcam_start_capture(webcam * wc) 277 { 278 wc->driver->startCapture(wc->context); 279 } 280 281 void webcam_pause_capture(webcam * wc) 282 { 283 wc->driver->pauseCapture(wc->context); 284 } 285 286 void webcam_stop_capture(webcam *wc) 287 { 288 wc->driver->stopCapture(wc->context); 289 } 290 291 unsigned webcam_get_width(webcam * wc) 292 { 293 return wc->driver->getWidth(wc->context); 294 } 295 296 unsigned webcam_get_height(webcam * wc) 297 { 298 return wc->driver->getHeight(wc->context); 299 } 300 301 pixosi webcam_get_palette(webcam * wc) 302 { 303 return wc->driver->getPalette(wc->context); 304 } 305 306 webcamerrorcode webcam_set_palette(webcam * wc, pixosi palette) 307 { 308 return wc->driver->setPalette(wc->context, palette); 309 } 310 311 int webcam_is_opened(webcam * wc) 312 { 313 if (wc->driver->isOpened(wc->context)) 314 { 210 315 return 1; 211 } else { 316 } 317 else 318 { 212 319 return 0; 213 320 } 214 321 } 215 322 216 webcamerrorcode webcam_set_fps(webcam * wc, unsigned fps) { 217 return wc->driver->setFPS(fps); 218 } 219 220 unsigned webcam_get_fps(webcam * wc) { 221 return wc->driver->getFPS(); 222 } 223 224 void webcam_set_resolution(webcam * wc, unsigned width, unsigned height) { 225 wc->driver->setResolution(width, height); 226 } 227 228 void webcam_flip_horizontally(webcam * wc, int flip) { 229 if (flip) { 230 wc->driver->flipHorizontally(true); 231 } else { 232 wc->driver->flipHorizontally(false); 233 } 234 } 235 236 void webcam_set_brightness(webcam * wc, int brightness) { 237 wc->driver->setBrightness(brightness); 238 } 239 240 int webcam_get_brightness(webcam * wc) { 241 return wc->driver->getBrightness(); 242 } 243 244 void webcam_set_contrast(webcam * wc, int contrast) { 245 wc->driver->setContrast(contrast); 246 } 247 248 int webcam_get_contrast(webcam * wc) { 249 return wc->driver->getContrast(); 250 } 323 webcamerrorcode webcam_set_fps(webcam * wc, unsigned fps) 324 { 325 return wc->driver->setFPS(wc->context, fps); 326 } 327 328 unsigned webcam_get_fps(webcam * wc) 329 { 330 return wc->driver->getFPS(wc->context); 331 } 332 //****************** 333 void webcam_set_resolution(webcam * wc, unsigned width, unsigned height) 334 { 335 wc->driver->setResolution(wc->context, width, height); 336 } 337 338 void webcam_flip_horizontally(webcam * wc, int flip) 339 { 340 if (flip) 341 { 342 wc->driver->flipHorizontally(wc->context, 1); 343 } 344 else 345 { 346 wc->driver->flipHorizontally(wc->context, 0); 347 } 348 } 349 350 void webcam_set_brightness(webcam * wc, int brightness) 351 { 352 wc->driver->setBrightness(wc->context, brightness); 353 } 354 355 int webcam_get_brightness(webcam * wc) 356 { 357 return wc->driver->getBrightness(wc->context); 358 } 359 360 void webcam_set_contrast(webcam * wc, int contrast) 361 { 362 wc->driver->setContrast(wc->context, contrast); 363 } 364 365 int webcam_get_contrast(webcam * wc) 366 { 367 return wc->driver->getContrast(wc->context); 368 } 369 370
