AudioPlayer* AudioPlayer::getPlayer(const string& name, int channels) { auto n = name.empty() ? defaultOutputDevice() : name; auto i = PLAYERS.find(n); if (i != PLAYERS.end()) return i->second.get(); unique_ptr<AudioPlayer> player(new AudioPlayer(n, channels)); auto* p = player.get(); PLAYERS.insert(i, std::make_pair(n, std::move(player))); return p; }
static void parse_device(ca_dev *cadev, const char *name) { char buf[256], deviceId[128]; char *input, *output, *tmp, *buffer = buf; strncpy(buffer, name, sizeof(buf)); DBG_DYNA_AUDIO_DRV("**CoreAudio: parsing %s\n", name); if (strncasecmp(buffer, "ca:", 3) == 0) { buffer += 3; } if ((input = strcasestr(buffer, IN_PREFIX)) && (tmp = strchr(input + 3, ' '))) { strncpy(cadev->inputID, input + 3, tmp - (input + 3)); } if (strlen(cadev->inputID) < 6) { /* 6 because minimum string can be: "1:0:2\0" */ memset(deviceId, 0, sizeof(deviceId)); defaultInputDevice(deviceId); strncpy(cadev->inputID, deviceId, sizeof(cadev->inputID)); } if ((output = strcasestr(buffer, OUT_PREFIX))) { strncpy(cadev->outputID, output + 4, strlen(output + 4)); } if (strlen(cadev->outputID) < 6) { memset(deviceId, 0, sizeof(deviceId)); defaultOutputDevice(deviceId); strncpy(cadev->outputID, deviceId, sizeof(cadev->inputID)); } DBG_DYNA_AUDIO_DRV("**CoreAudio: using devices in=%s out=%s\n", cadev->inputID, cadev->outputID); }
QAbstractAudioOutput* QAudioDeviceFactory::createDefaultOutputDevice(QAudioFormat const &format) { return createOutputDevice(defaultOutputDevice(), format); }