Example #1
0
void
ClientNode::Connect(status_t status,
                    const media_source &src, const media_destination &dst,
                    const media_format &format, char* name)
{
    if (status != B_OK)
        return;

    media_node_id id;
    FindLatencyFor(dst, &fDownstreamLatency, &id);

    fOwner->SetFormat(format);

    JackPort* port;
    JackPortList* outputs = fOwner->GetOutputPorts();

    for (int i = 0; i < outputs->CountItems(); i++) {
        port = outputs->ItemAt(i);
        BString str(jack_port_name((jack_port_t*) port));

        if (str.Compare(name) == 0 && !port->IsConnected()) {
            printf("ClientNode::Connect %s\n", port->Name());

            port->MediaOutput()->source = src;
            port->MediaOutput()->destination = dst;
            port->MediaOutput()->format = format;
            break;
        }
    }
}
Example #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;
}