void GMVideoInputManager_ptlib::get_devices(std::vector <Ekiga::VideoInputDevice> & devices) { PStringArray video_sources; PStringArray video_devices; char **sources_array; char **devices_array; Ekiga::VideoInputDevice device; device.type = DEVICE_TYPE; video_sources = PVideoInputDevice::GetDriverNames (); sources_array = video_sources.ToCharArray (); for (PINDEX i = 0; sources_array[i] != NULL; i++) { device.source = sources_array[i]; if ( (device.source != "YUVFile") && (device.source != "Shm") && (device.source != "FakeVideo") && (device.source != "EKIGA") && (device.source != "FFMPEG") ) { video_devices = PVideoInputDevice::GetDriversDeviceNames (device.source); devices_array = video_devices.ToCharArray (); for (PINDEX j = 0; devices_array[j] != NULL; j++) { #ifdef WIN32 /* Windows uses codepage encoding for device name, while ekiga uses utf-8 */ device.name = codepage2utf (devices_array[j]); #else device.name = devices_array[j]; #endif devices.push_back(device); } free (devices_array); } } free (sources_array); }
void GMAudioInputManager_ptlib::get_devices(std::vector <Ekiga::AudioInputDevice> & devices) { PStringArray audio_sources; PStringArray audio_devices; char **sources_array; char **devices_array; Ekiga::AudioInputDevice device; device.type = DEVICE_TYPE; audio_sources = PSoundChannel::GetDriverNames (); sources_array = audio_sources.ToCharArray (); for (PINDEX i = 0; sources_array[i] != NULL; i++) { device.source = sources_array[i]; if ((device.source != "EKIGA") && (device.source != "WAVFile") && (device.source != "NullAudio")) { audio_devices = PSoundChannel::GetDeviceNames (device.source, PSoundChannel::Recorder); devices_array = audio_devices.ToCharArray (); for (PINDEX j = 0; devices_array[j] != NULL; j++) { #ifdef WIN32 /* Windows uses codepage encoding for device name, while ekiga uses utf-8 */ device.name = codepage2utf (devices_array[j]); #else device.name = devices_array[j]; #endif devices.push_back(device); } free (devices_array); } } free (sources_array); }