From: Robert J. <rjo...@us...> - 2007-09-28 00:23:28
|
Update of /cvsroot/openh323/pwlib/src/ptlib/common In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv22490 Modified Files: videoio.cxx Log Message: Changed PVideoXXXDevice::CreateOpenedDevice so uses default value for driver and/or device names if they are empty strings or "*". Index: videoio.cxx =================================================================== RCS file: /cvsroot/openh323/pwlib/src/ptlib/common/videoio.cxx,v retrieving revision 1.74 retrieving revision 1.75 diff -C2 -d -r1.74 -r1.75 *** videoio.cxx 26 Sep 2007 03:43:09 -0000 1.74 --- videoio.cxx 28 Sep 2007 00:23:29 -0000 1.75 *************** *** 25,28 **** --- 25,32 ---- * * $Log$ + * Revision 1.75 2007/09/28 00:23:29 rjongbloed + * Changed PVideoXXXDevice::CreateOpenedDevice so uses default value for + * driver and/or device names if they are empty strings or "*". + * * Revision 1.74 2007/09/26 03:43:09 rjongbloed * Added ability to get last position of window video output device. *************** *** 402,405 **** --- 406,433 ---- + template <class VideoDevice> + static VideoDevice * CreateDeviceWithDefaults(PString & adjustedDeviceName, + const PString & driverName, + PPluginManager * pluginMgr) + { + PString adjustedDriverName = driverName; + + if (adjustedDeviceName.IsEmpty() || adjustedDeviceName == "*") { + if (driverName.IsEmpty() || driverName == "*") { + PStringList drivers = VideoDevice::GetDriverNames(pluginMgr); + if (drivers.IsEmpty()) + return NULL; + adjustedDriverName = drivers[0]; + } + + PStringList devices = VideoDevice::GetDriversDeviceNames(adjustedDriverName); + if (!devices.IsEmpty()) + adjustedDeviceName = devices[0]; + } + + return VideoDevice::CreateDeviceByName(adjustedDeviceName, adjustedDriverName, pluginMgr); + } + + /////////////////////////////////////////////////////////////////////////////// // PVideoDevice *************** *** 1384,1390 **** PPluginManager * pluginMgr) { ! PVideoInputDevice * device = CreateDeviceByName(deviceName, driverName, pluginMgr); ! if (device != NULL && device->Open(deviceName, startImmediate)) return device; --- 1412,1421 ---- PPluginManager * pluginMgr) { ! PString adjustedDeviceName = deviceName; ! PVideoInputDevice * device = CreateDeviceWithDefaults<PVideoInputDevice>(adjustedDeviceName, driverName, pluginMgr); ! if (device == NULL) ! return NULL; ! if (device->Open(adjustedDeviceName, startImmediate)) return device; *************** *** 1397,1403 **** BOOL startImmediate) { ! PVideoInputDevice * device = CreateDeviceByName(args.deviceName, args.driverName, args.pluginMgr); ! if (device != NULL && device->OpenFull(args, startImmediate)) return device; --- 1428,1437 ---- BOOL startImmediate) { ! OpenArgs adjustedArgs = args; ! PVideoInputDevice * device = CreateDeviceWithDefaults<PVideoInputDevice>(adjustedArgs.deviceName, args.driverName, NULL); ! if (device == NULL) ! return NULL; ! if (device->OpenFull(adjustedArgs, startImmediate)) return device; *************** *** 1464,1474 **** PPluginManager * pluginMgr) { ! PVideoOutputDevice * device; ! if (driverName.IsEmpty() || driverName == "*") ! device = CreateDeviceByName(deviceName, driverName, pluginMgr); ! else ! device = CreateDevice(driverName, pluginMgr); ! if (device != NULL && device->Open(deviceName, startImmediate)) return device; --- 1498,1507 ---- PPluginManager * pluginMgr) { ! PString adjustedDeviceName = deviceName; ! PVideoOutputDevice * device = CreateDeviceWithDefaults<PVideoOutputDevice>(adjustedDeviceName, driverName, pluginMgr); ! if (device == NULL) ! return NULL; ! if (device->Open(adjustedDeviceName, startImmediate)) return device; *************** *** 1481,1491 **** BOOL startImmediate) { ! PVideoOutputDevice * device; ! if (args.driverName.IsEmpty() || args.driverName == "*") ! device = CreateDeviceByName(args.deviceName, args.driverName, args.pluginMgr); ! else ! device = CreateDevice(args.driverName, args.pluginMgr); ! if (device != NULL && device->OpenFull(args, startImmediate)) return device; --- 1514,1523 ---- BOOL startImmediate) { ! OpenArgs adjustedArgs = args; ! PVideoOutputDevice * device = CreateDeviceWithDefaults<PVideoOutputDevice>(adjustedArgs.deviceName, args.driverName, NULL); ! if (device == NULL) ! return NULL; ! if (device->OpenFull(adjustedArgs, startImmediate)) return device; |