Ejemplo n.º 1
0
void
ClientNode::Disconnect(const media_source &src,
                       const media_destination &dst)
{
    printf("ClientNode::Disconnect\n");
    JackPort* port;
    JackPortList* outputs = fOwner->GetOutputPorts();
    for (int i = 0; i < outputs->CountItems(); i++) {
        port = outputs->ItemAt(i);
        if (port->MediaOutput()->source == src
                && port->MediaOutput()->destination == dst) {
            port->SetConnected(false);
        }
    }
}
Ejemplo n.º 2
0
int
JackClient::ConnectPorts(const char* source, const char* destination)
{
	media_node sourceNode = FindNativeNode(source);
	media_node destNode = FindNativeNode(destination);

	JackPort* port = PortByName(source);

	if (port == NULL)
		printf("port is NULL\n");

	printf("%s\n", port->Name());
	media_source src(sourceNode.port, 0);
	media_format format;
	format.type = B_MEDIA_RAW_AUDIO;
	format.u.raw_audio.buffer_size = fFormat.u.raw_audio.buffer_size;
	format.u.raw_audio = media_raw_audio_format::wildcard;
	format.u.raw_audio.channel_count = 1;
	format.u.raw_audio.format = WRAPPER_PREFERRED_FORMAT;

	media_destination dest(destNode.port, 0);

	media_output* output = port->MediaOutput();
	output->node = sourceNode;
	output->source = src;
	output->destination = dest;
	output->format = format;
	strcpy(output->name, source);

	media_input* input = port->MediaInput();
	input->node = destNode;
	input->source = src;
	input->destination = dest;
	input->format = format;
	strcpy(input->name, destination);

	if (status_t ret = fRoster->Connect(src, dest, &format, output, input)
		!= B_OK) {
		printf("error connecting %s\n", strerror(ret));
		return -1;
	}

	port->SetConnected(true);

	return 0;
}