Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
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);
}