Browse Source

Cleanup

git-svn-id: svn+ssh://jackaudio.org/trunk/jack@772 0c269be4-1314-0410-8aa9-9f06e86f4224
tags/0.109.0
letz 21 years ago
parent
commit
64467d4ce3
3 changed files with 196 additions and 196 deletions
  1. +94
    -94
      drivers/coreaudio/AudioRender.cpp
  2. +38
    -38
      drivers/coreaudio/AudioRenderBridge.cpp
  3. +64
    -64
      drivers/coreaudio/coreaudio_driver.c

+ 94
- 94
drivers/coreaudio/AudioRender.cpp View File

@@ -46,8 +46,8 @@ extern "C" void JCALog(char *fmt, ...)
void PrintStreamDesc(AudioStreamBasicDescription * inDesc)
{
if (!inDesc) {
JCALog("Can't print a NULL desc!\n");
return;
JCALog("Can't print a NULL desc!\n");
return;
}

JCALog("- - - - - - - - - - - - - - - - - - - -\n");
@@ -82,24 +82,24 @@ vBufferSize(bufferSize)
isProcessing = false;

if (status) {
inBuffers = (float **) malloc(sizeof(float *) * vInChannels);
outBuffers = (float **) malloc(sizeof(float *) * vChannels);
JCALog("AudioRender created.\n");
JCALog("Standard driver.\n");
inBuffers = (float **) malloc(sizeof(float *) * vInChannels);
outBuffers = (float **) malloc(sizeof(float *) * vChannels);
JCALog("AudioRender created.\n");
JCALog("Standard driver.\n");
} else
JCALog("error while creating AudioRender.\n");
JCALog("error while creating AudioRender.\n");
}

AudioRender::~AudioRender()
{
if (status) {
if (isProcessing)
AudioDeviceStop(vDevice, process);
OSStatus err = AudioDeviceRemoveIOProc(vDevice, process);
if (err == noErr)
status = false;
free(inBuffers);
free(outBuffers);
if (isProcessing)
AudioDeviceStop(vDevice, process);
OSStatus err = AudioDeviceRemoveIOProc(vDevice, process);
if (err == noErr)
status = false;
free(inBuffers);
free(outBuffers);
}
}

@@ -132,25 +132,25 @@ bool AudioRender::ConfigureAudioProc(float sampleRate, long bufferSize,
bool found = false;

for (int i = 0; i < manyDevices; i++) {
size = sizeof(char) * 256;
char name[256];
err =
AudioDeviceGetProperty(devices[i], 0, false,
kAudioDevicePropertyDeviceName, &size,
&name);
JCALog("Read DEVICE: %s\n", name);
if (err != noErr)
return false;
if (strncmp(device, name, strlen(device)) == 0) { // steph : name seems to be limited to 32 character, thus compare the common part only
JCALog("Found DEVICE: %s %ld\n", name, device);
vDevice = devices[i];
found = true;
}
size = sizeof(char) * 256;
char name[256];
err =
AudioDeviceGetProperty(devices[i], 0, false,
kAudioDevicePropertyDeviceName, &size,
&name);
JCALog("Read DEVICE: %s\n", name);
if (err != noErr)
return false;
if (strncmp(device, name, strlen(device)) == 0) { // steph : name seems to be limited to 32 character, thus compare the common part only
JCALog("Found DEVICE: %s %ld\n", name, device);
vDevice = devices[i];
found = true;
}
}

if (!found) {
JCALog("Cannot find device \"%s\".\n", device);
return false;
JCALog("Cannot find device \"%s\".\n", device);
return false;
}

char deviceName[256];
@@ -159,7 +159,7 @@ bool AudioRender::ConfigureAudioProc(float sampleRate, long bufferSize,
kAudioDevicePropertyDeviceName, &size,
&deviceName);
if (err != noErr)
return false;
return false;

JCALog("DEVICE: %s.\n", deviceName);

@@ -170,14 +170,14 @@ bool AudioRender::ConfigureAudioProc(float sampleRate, long bufferSize,
kAudioDevicePropertyStreamFormat, &size,
&SR);
if (err != noErr)
return false;
return false;

err =
AudioDeviceGetPropertyInfo(vDevice, 0, false,
kAudioDevicePropertyStreams, &size,
&isWritable);
if (err != noErr)
return false;
return false;

vChannels =
(int) SR.mChannelsPerFrame * (size / sizeof(AudioStreamID));
@@ -185,8 +185,8 @@ bool AudioRender::ConfigureAudioProc(float sampleRate, long bufferSize,
n_out_streams = size / sizeof(AudioStreamID);

if (channels > vChannels) {
JCALog("cannot find requested output channels\n");
return false;
JCALog("cannot find requested output channels\n");
return false;
}

if (vChannels >= channels)
@@ -199,8 +199,8 @@ bool AudioRender::ConfigureAudioProc(float sampleRate, long bufferSize,
kAudioDevicePropertyStreamFormat, &size,
&isWritable);
if (err != noErr) {
vInChannels = 0;
goto endInChan;
vInChannels = 0;
goto endInChan;
}

size = sizeof(AudioStreamBasicDescription);
@@ -210,14 +210,14 @@ bool AudioRender::ConfigureAudioProc(float sampleRate, long bufferSize,
kAudioDevicePropertyStreamFormat, &size,
&inSR);
if (err != noErr)
return false;
return false;

err =
AudioDeviceGetPropertyInfo(vDevice, 0, true,
kAudioDevicePropertyStreams, &size,
&isWritable);
if (err != noErr)
return false;
return false;

vInChannels =
(int) inSR.mChannelsPerFrame * (size / sizeof(AudioStreamID));
@@ -227,8 +227,8 @@ bool AudioRender::ConfigureAudioProc(float sampleRate, long bufferSize,
endInChan:

if (inChannels > vInChannels) {
JCALog("cannot find requested input channels\n");
return false;
JCALog("cannot find requested input channels\n");
return false;
}

if (vInChannels >= inChannels)
@@ -243,32 +243,32 @@ bool AudioRender::ConfigureAudioProc(float sampleRate, long bufferSize,
kAudioDevicePropertyBufferFrameSize, &size,
&bufFrame);
if (err != noErr)
return false;
return false;

vBufferSize = (long) bufFrame;

if ((long) bufFrame != bufferSize) {
JCALog("I'm trying to set a new buffer size.\n");
UInt32 theSize = sizeof(UInt32);
UInt32 newBufferSize = (UInt32) bufferSize;
err =
JCALog("I'm trying to set a new buffer size.\n");
UInt32 theSize = sizeof(UInt32);
UInt32 newBufferSize = (UInt32) bufferSize;
err =
AudioDeviceSetProperty(vDevice, NULL, 0, false,
kAudioDevicePropertyBufferFrameSize,
theSize, &newBufferSize);
if (err != noErr) {
JCALog("Cannot set a new buffer size.\n");
return false;
} else {
UInt32 newBufFrame;
size = sizeof(UInt32);
err =
AudioDeviceGetProperty(vDevice, 0, false,
kAudioDevicePropertyBufferFrameSize,
&size, &newBufFrame);
if (err != noErr)
return false;
vBufferSize = (long) newBufFrame;
}
if (err != noErr) {
JCALog("Cannot set a new buffer size.\n");
return false;
} else {
UInt32 newBufFrame;
size = sizeof(UInt32);
err =
AudioDeviceGetProperty(vDevice, 0, false,
kAudioDevicePropertyBufferFrameSize,
&size, &newBufFrame);
if (err != noErr)
return false;
vBufferSize = (long) newBufFrame;
}
}

JCALog("BUFFER SIZE: %ld.\n", vBufferSize);
@@ -276,27 +276,27 @@ bool AudioRender::ConfigureAudioProc(float sampleRate, long bufferSize,
vSampleRate = (float) SR.mSampleRate;

if ((float) SR.mSampleRate != sampleRate) {
JCALog("I'm trying to set a new sample rate.\n");
UInt32 theSize = sizeof(AudioStreamBasicDescription);
SR.mSampleRate = (Float64) sampleRate;
err =
AudioDeviceSetProperty(vDevice, NULL, 0, false,
kAudioDevicePropertyStreamFormat,
theSize, &SR);
if (err != noErr) {
JCALog("Cannot set a new sample rate.\n");
return false;
} else {
size = sizeof(AudioStreamBasicDescription);
AudioStreamBasicDescription newCheckSR;
err =
AudioDeviceGetProperty(vDevice, 0, false,
kAudioDevicePropertyStreamFormat,
&size, &newCheckSR);
if (err != noErr)
return false;
vSampleRate = (float) newCheckSR.mSampleRate;
}
JCALog("I'm trying to set a new sample rate.\n");
UInt32 theSize = sizeof(AudioStreamBasicDescription);
SR.mSampleRate = (Float64) sampleRate;
err =
AudioDeviceSetProperty(vDevice, NULL, 0, false,
kAudioDevicePropertyStreamFormat,
theSize, &SR);
if (err != noErr) {
JCALog("Cannot set a new sample rate.\n");
return false;
} else {
size = sizeof(AudioStreamBasicDescription);
AudioStreamBasicDescription newCheckSR;
err =
AudioDeviceGetProperty(vDevice, 0, false,
kAudioDevicePropertyStreamFormat,
&size, &newCheckSR);
if (err != noErr)
return false;
vSampleRate = (float) newCheckSR.mSampleRate;
}
}

JCALog("SAMPLE RATE: %f.\n", vSampleRate);
@@ -305,7 +305,7 @@ bool AudioRender::ConfigureAudioProc(float sampleRate, long bufferSize,

err = AudioDeviceAddIOProc(vDevice, process, this);
if (err != noErr)
return false;
return false;

return true;
}
@@ -313,11 +313,11 @@ bool AudioRender::ConfigureAudioProc(float sampleRate, long bufferSize,
bool AudioRender::StartAudio()
{
if (status) {
OSStatus err = AudioDeviceStart(vDevice, process);
if (err != noErr)
return false;
AudioRender::isProcessing = true;
return true;
OSStatus err = AudioDeviceStart(vDevice, process);
if (err != noErr)
return false;
AudioRender::isProcessing = true;
return true;
}
return false;
}
@@ -325,11 +325,11 @@ bool AudioRender::StartAudio()
bool AudioRender::StopAudio()
{
if (status) {
OSStatus err = AudioDeviceStop(vDevice, process);
if (err != noErr)
return false;
AudioRender::isProcessing = false;
return true;
OSStatus err = AudioDeviceStop(vDevice, process);
if (err != noErr)
return false;
AudioRender::isProcessing = false;
return true;
}
return false;
}
@@ -388,13 +388,13 @@ OSStatus AudioRender::process(AudioDeviceID inDevice,
float **AudioRender::getADC()
{
if (AudioRender::theRender == NULL)
return NULL;
return NULL;
return AudioRender::theRender->inBuffers;
}

float **AudioRender::getDAC()
{
if (AudioRender::theRender == NULL)
return NULL;
return NULL;
return AudioRender::theRender->outBuffers;
}

+ 38
- 38
drivers/coreaudio/AudioRenderBridge.cpp View File

@@ -34,24 +34,24 @@ void *openPandaAudioInstance(float sampleRate, long bufferSize,
new AudioRender(sampleRate, bufferSize, inChannels, outChannels,
device);
if (newInst->status)
return newInst;
return newInst;
return NULL;
}

void closePandaAudioInstance(void *instance)
{
if (instance) {
AudioRender *inst = (AudioRender *) instance;
inst->StopAudio();
delete inst;
AudioRender *inst = (AudioRender *) instance;
inst->StopAudio();
delete inst;
}
}

int startPandaAudioProcess(void *instance)
{
if (instance) {
AudioRender *inst = (AudioRender *) instance;
return inst->StartAudio();
AudioRender *inst = (AudioRender *) instance;
return inst->StartAudio();
}
return FALSE;
}
@@ -59,8 +59,8 @@ int startPandaAudioProcess(void *instance)
int stopPandaAudioProcess(void *instance)
{
if (instance) {
AudioRender *inst = (AudioRender *) instance;
return inst->StopAudio();
AudioRender *inst = (AudioRender *) instance;
return inst->StopAudio();
}
return FALSE;
}
@@ -68,8 +68,8 @@ int stopPandaAudioProcess(void *instance)
float **getPandaAudioInputs(void *instance)
{
if (instance) {
AudioRender *inst = (AudioRender *) instance;
return inst->inBuffers;
AudioRender *inst = (AudioRender *) instance;
return inst->inBuffers;
}
return NULL;
}
@@ -77,8 +77,8 @@ float **getPandaAudioInputs(void *instance)
float **getPandaAudioOutputs(void *instance)
{
if (instance) {
AudioRender *inst = (AudioRender *) instance;
return inst->outBuffers;
AudioRender *inst = (AudioRender *) instance;
return inst->outBuffers;
}
return NULL;
}
@@ -86,8 +86,8 @@ float **getPandaAudioOutputs(void *instance)
void *getHostData(void *instance)
{
if (instance) {
AudioRender *inst = (AudioRender *) instance;
return inst->jackData;
AudioRender *inst = (AudioRender *) instance;
return inst->jackData;
}
return NULL;
}
@@ -95,41 +95,41 @@ void *getHostData(void *instance)
void setHostData(void *instance, void *hostData)
{
if (instance) {
AudioRender *inst = (AudioRender *) instance;
inst->jackData = hostData;
AudioRender *inst = (AudioRender *) instance;
inst->jackData = hostData;
}
}

void setCycleFun(void *instance, JackRunCyclePtr fun)
{
if (instance) {
AudioRender *inst = (AudioRender *) instance;
inst->f_JackRunCycle = fun;
AudioRender *inst = (AudioRender *) instance;
inst->f_JackRunCycle = fun;
}
}

void setParameter(void *instance, int id, void *data)
{
if (instance) {
AudioRender *inst = (AudioRender *) instance;
switch (id) {
case 'inte':
inst->isInterleaved = (int *) data;
break;
case 'nstr':
inst->numberOfStreams = (int *) data;
*inst->numberOfStreams = inst->n_streams;
break;
case 'cstr':
inst->channelsPerStream = (int *) data;
break;
case 'nstO':
inst->out_numberOfStreams = (int *) data;
*inst->out_numberOfStreams = inst->n_out_streams;
break;
case 'cstO':
inst->out_channelsPerStream = (int *) data;
break;
}
AudioRender *inst = (AudioRender *) instance;
switch (id) {
case 'inte':
inst->isInterleaved = (int *) data;
break;
case 'nstr':
inst->numberOfStreams = (int *) data;
*inst->numberOfStreams = inst->n_streams;
break;
case 'cstr':
inst->channelsPerStream = (int *) data;
break;
case 'nstO':
inst->out_numberOfStreams = (int *) data;
*inst->out_numberOfStreams = inst->n_out_streams;
break;
case 'cstO':
inst->out_channelsPerStream = (int *) data;
break;
}
}
}

+ 64
- 64
drivers/coreaudio/coreaudio_driver.c View File

@@ -267,39 +267,39 @@ coreaudio_driver_write(coreaudio_driver_t * driver, jack_nframes_t nframes)
int b = 0;

for (chn = 0, node = driver->playback_ports; node;
node = jack_slist_next(node), chn++) {

port = (jack_port_t *) node->data;

if (!driver->isInterleaved) {
if (jack_port_connected(port)
&& (driver->outcoreaudio[chn] != NULL)) {
float *out = driver->outcoreaudio[chn];
buf = jack_port_get_buffer(port, nframes);
memcpy(out, buf, sizeof(float) * nframes);
}
} else {
if (jack_port_connected(port)
&& (driver->outcoreaudio[b] != NULL)) {
int channels = driver->out_channelsPerStream[b];
if (channels <= chn) {
b++;
if (driver->out_numberOfStreams > 1
&& b < driver->out_numberOfStreams) {
channels = driver->out_channelsPerStream[b];
chn = 0;
} else
return 0;
node = jack_slist_next(node), chn++) {

port = (jack_port_t *) node->data;

if (!driver->isInterleaved) {
if (jack_port_connected(port)
&& (driver->outcoreaudio[chn] != NULL)) {
float *out = driver->outcoreaudio[chn];
buf = jack_port_get_buffer(port, nframes);
memcpy(out, buf, sizeof(float) * nframes);
}
} else {
if (jack_port_connected(port)
&& (driver->outcoreaudio[b] != NULL)) {
int channels = driver->out_channelsPerStream[b];
if (channels <= chn) {
b++;
if (driver->out_numberOfStreams > 1
&& b < driver->out_numberOfStreams) {
channels = driver->out_channelsPerStream[b];
chn = 0;
} else
return 0;
}
if (channels > 0) {
float *out = driver->outcoreaudio[b];
buf = jack_port_get_buffer(port, nframes);
for (i = 0; i < nframes; i++)
out[channels * i + chn] = buf[i];
}
}
}
if (channels > 0) {
float *out = driver->outcoreaudio[b];
buf = jack_port_get_buffer(port, nframes);
for (i = 0; i < nframes; i++)
out[channels * i + chn] = buf[i];
}
}
}
}

return 0;
}
@@ -577,48 +577,48 @@ jack_driver_t *driver_initialize(jack_client_t * client,

switch (param->character) {

case 'n':
name = (char *) param->value.str;
printf("Driver name found %s\n", name);
break;
case 'n':
name = (char *) param->value.str;
printf("Driver name found %s\n", name);
break;

case 'D':
capture = TRUE;
playback = TRUE;
break;
case 'D':
capture = TRUE;
playback = TRUE;
break;

case 'c':
chan_in = chan_out = (int) param->value.ui;
break;
case 'c':
chan_in = chan_out = (int) param->value.ui;
break;

case 'i':
chan_in = (int) param->value.ui;
break;
case 'i':
chan_in = (int) param->value.ui;
break;

case 'o':
chan_out = (int) param->value.ui;
break;
case 'o':
chan_out = (int) param->value.ui;
break;

case 'C':
capture = param->value.i;
break;
case 'C':
capture = param->value.i;
break;

case 'P':
playback = param->value.i;
break;
case 'P':
playback = param->value.i;
break;

case 'r':
srate = param->value.ui;
break;
case 'r':
srate = param->value.ui;
break;

case 'p':
frames_per_interrupt = (unsigned int) param->value.ui;
break;
case 'p':
frames_per_interrupt = (unsigned int) param->value.ui;
break;

case 'I':
get_device_id_from_num((int) param->value.ui, &deviceID);
break;
}
case 'I':
get_device_id_from_num((int) param->value.ui, &deviceID);
break;
}
}

/* duplex is the default */


Loading…
Cancel
Save