Browse Source

Merge branch 'develop' of github.com:jackaudio/jack2 into develop

tags/v1.9.13
falkTX 6 years ago
parent
commit
e2d863ccea
6 changed files with 26 additions and 3 deletions
  1. +5
    -0
      linux/alsa/JackAlsaDriver.cpp
  2. +2
    -0
      linux/alsa/JackAlsaDriver.h
  3. +2
    -0
      linux/alsa/alsa_midi_impl.h
  4. +6
    -0
      linux/alsa/alsa_midi_jackmp.cpp
  5. +7
    -2
      linux/alsa/alsa_rawmidi.c
  6. +4
    -1
      linux/alsa/alsa_seqmidi.c

+ 5
- 0
linux/alsa/JackAlsaDriver.cpp View File

@@ -471,6 +471,11 @@ void JackAlsaDriver::SetTimetAux(jack_time_t time)
fBeginDateUst = time;
}

int JackAlsaDriver::PortSetDeviceMetadata(jack_port_id_t port_id, const char* pretty_name)
{
return fEngine->PortSetDeviceMetadata(fClientControl.fRefNum, port_id, pretty_name);
}

void JackAlsaDriver::WriteOutputAux(jack_nframes_t orig_nframes, snd_pcm_sframes_t contiguous, snd_pcm_sframes_t nwritten)
{
for (int chn = 0; chn < fPlaybackChannels; chn++) {


+ 2
- 0
linux/alsa/JackAlsaDriver.h View File

@@ -93,6 +93,8 @@ class JackAlsaDriver : public JackAudioDriver
void WriteOutputAux(jack_nframes_t orig_nframes, snd_pcm_sframes_t contiguous, snd_pcm_sframes_t nwritten);
void SetTimetAux(jack_time_t time);

int PortSetDeviceMetadata(jack_port_id_t port_id, const char* pretty_name);

// JACK API emulation for the midi driver
int is_realtime() const;
int create_thread(pthread_t *thread, int prio, int rt, void *(*start_func)(void*), void *arg);


+ 2
- 0
linux/alsa/alsa_midi_impl.h View File

@@ -37,6 +37,7 @@ extern "C"
int JACK_port_unregister(jack_client_t *, jack_port_t*);
void* JACK_port_get_buffer(jack_port_t*, jack_nframes_t);
int JACK_port_set_alias(jack_port_t* port, const char* name);
int JACK_port_set_device_metadata(jack_port_t* port, const char* pretty_name);

jack_nframes_t JACK_get_sample_rate(jack_client_t *);
jack_nframes_t JACK_frame_time(jack_client_t *);
@@ -49,6 +50,7 @@ extern "C"
#define jack_port_unregister JACK_port_unregister
#define jack_port_get_buffer JACK_port_get_buffer
#define jack_port_set_alias JACK_port_set_alias
#define jack_port_set_device_metadata JACK_port_set_device_metadata

#define jack_get_sample_rate JACK_get_sample_rate
#define jack_frame_time JACK_frame_time


+ 6
- 0
linux/alsa/alsa_midi_jackmp.cpp View File

@@ -71,6 +71,12 @@ int JACK_port_set_alias(jack_port_t *port, const char* name)
return real->driver->port_set_alias(real->port_id, name);
}

int JACK_port_set_device_metadata(jack_port_t* port, const char* pretty_name)
{
fake_port_t* real = (fake_port_t*)port;
return real->driver->PortSetDeviceMetadata(real->port_id, pretty_name);
}

jack_nframes_t JACK_get_sample_rate(jack_client_t *client)
{
return ((JackAlsaDriver*)client)->get_sample_rate();


+ 7
- 2
linux/alsa/alsa_rawmidi.c View File

@@ -90,6 +90,7 @@ struct midi_port_t {
alsa_id_t id;
char dev[16];
char name[64];
char device_name[64];

jack_port_t *jack;
snd_rawmidi_t *rawmidi;
@@ -410,9 +411,10 @@ void midi_port_init(const alsa_rawmidi_t *midi, midi_port_t *port, snd_rawmidi_i

port->id = *id;
snprintf(port->dev, sizeof(port->dev), "hw:%d,%d,%d", id->id[0], id->id[1], id->id[3]);
snprintf(port->device_name, sizeof(port->device_name), snd_rawmidi_info_get_name(info));
name = snd_rawmidi_info_get_subdevice_name(info);
if (!strlen(name))
name = snd_rawmidi_info_get_name(info);
name = port->device_name;
snprintf(port->name, sizeof(port->name), "%s %s %s", port->id.id[2] ? "out":"in", port->dev, name);

// replace all offending characters with '-'
@@ -436,8 +438,11 @@ inline int midi_port_open_jack(alsa_rawmidi_t *midi, midi_port_t *port, int type
port->jack = jack_port_register(midi->client, name, JACK_DEFAULT_MIDI_TYPE,
type | JackPortIsPhysical | JackPortIsTerminal, 0);

if (port->jack)
if (port->jack) {
jack_port_set_alias(port->jack, alias);
jack_port_set_device_metadata(port->jack, port->device_name);
}

return port->jack == NULL;
}



+ 4
- 1
linux/alsa/alsa_seqmidi.c View File

@@ -493,8 +493,9 @@ port_t* port_create(alsa_seqmidi_t *self, int type, snd_seq_addr_t addr, const s
snd_seq_client_info_alloca (&client_info);
snd_seq_get_any_client_info (self->seq, addr.client, client_info);

const char *device_name = snd_seq_client_info_get_name(client_info);
snprintf(port->name, sizeof(port->name), "alsa_pcm:%s/midi_%s_%d",
snd_seq_client_info_get_name(client_info), port_type[type].name, addr.port+1);
device_name, port_type[type].name, addr.port+1);

// replace all offending characters by -
for (c = port->name; *c; ++c)
@@ -520,6 +521,7 @@ port_t* port_create(alsa_seqmidi_t *self, int type, snd_seq_addr_t addr, const s
goto failed;

jack_port_set_alias (port->jack_port, port->name);
jack_port_set_device_metadata (port->jack_port, device_name);

/* generate an alias */

@@ -532,6 +534,7 @@ port_t* port_create(alsa_seqmidi_t *self, int type, snd_seq_addr_t addr, const s
*c = '-';

jack_port_set_alias (port->jack_port, port->name);
jack_port_set_device_metadata (port->jack_port, device_name);

if (type == PORT_INPUT)
err = alsa_connect_from(self, port->remote.client, port->remote.port);


Loading…
Cancel
Save