diff options
author | Daniel Mack <zonque@users.sourceforge.net> | 2004-06-12 23:13:56 +0000 |
---|---|---|
committer | Daniel Mack <zonque@users.sourceforge.net> | 2004-06-12 23:13:56 +0000 |
commit | b5a4b3ead660e7ba0406751fe23209334b3a9b18 (patch) | |
tree | 269d67250d121f22818785d7a10cdc3af03a69f9 | |
parent | d9c6d7c2b4036966cff70f21ee57cbab7b45f9f3 (diff) | |
download | xine-lib-b5a4b3ead660e7ba0406751fe23209334b3a9b18.tar.gz xine-lib-b5a4b3ead660e7ba0406751fe23209334b3a9b18.tar.bz2 |
- removed evil exit() lines, they were meant for debugging purposes only,
of course.
- replaced some hard coded values to make coreaudio work with other input
formats than 48000/16/2
- coding style and comment cleanups
CVS patchset: 6678
CVS date: 2004/06/12 23:13:56
-rw-r--r-- | src/audio_out/audio_coreaudio_out.c | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/src/audio_out/audio_coreaudio_out.c b/src/audio_out/audio_coreaudio_out.c index 56d59f3bf..59de91cd3 100644 --- a/src/audio_out/audio_coreaudio_out.c +++ b/src/audio_out/audio_coreaudio_out.c @@ -120,7 +120,7 @@ static OSStatus ao_coreaudio_render_proc (coreaudio_driver_t *this, this->buf_readpos += ioData->mBuffers[i].mDataByteSize; } - this->last_block_size = req_size; + this->last_block_size = req_size; pthread_mutex_unlock (&this->mutex); @@ -139,12 +139,20 @@ static int ao_coreaudio_open(ao_driver_t *this_gen, uint32_t bits, uint32_t rate AudioStreamBasicDescription format; AudioUnitConnection connection; ComponentDescription desc; + + switch (mode) { + case AO_CAP_MODE_MONO: + this->num_channels = 1; + break; + case AO_CAP_MODE_STEREO: + this->num_channels = 2; + break; + } - this->sample_rate = rate; + this->sample_rate = rate; this->bits_per_sample = bits; - this->num_channels = 2; this->capabilities = AO_CAP_16BITS | AO_CAP_MODE_STEREO | AO_CAP_MIXER_VOL; - this->bytes_per_frame = 4; + this->bytes_per_frame = this->num_channels * (bits / 8); this->buf_readpos = 0; this->buf_writepos = 0; this->last_block_size = 0; @@ -193,7 +201,7 @@ static int ao_coreaudio_open(ao_driver_t *this_gen, uint32_t bits, uint32_t rate kAudioUnitScope_Input, 0, &input, sizeof(input)); - /* connect the output unit to the audio output unit */ + /* connect the converter unit to the audio output unit */ connection.sourceAudioUnit = this->converter_unit; connection.sourceOutputNumber = 0; connection.destInputNumber = 0; @@ -203,16 +211,16 @@ static int ao_coreaudio_open(ao_driver_t *this_gen, uint32_t bits, uint32_t rate &connection, sizeof(connection)); /* set up the audio format we want to use */ - format.mSampleRate = rate; + format.mSampleRate = rate; format.mFormatID = kAudioFormatLinearPCM; format.mFormatFlags = kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsBigEndian | kLinearPCMFormatFlagIsPacked; - format.mBytesPerPacket = 4; + format.mBitsPerChannel = this->bits_per_sample; + format.mChannelsPerFrame = this->num_channels; + format.mBytesPerFrame = this->bytes_per_frame; format.mFramesPerPacket = 1; - format.mBytesPerFrame = 4; - format.mChannelsPerFrame = 2; - format.mBitsPerChannel = bits; + format.mBytesPerPacket = format.mBytesPerFrame; AudioUnitSetProperty (this->converter_unit, kAudioUnitProperty_StreamFormat, @@ -224,7 +232,6 @@ static int ao_coreaudio_open(ao_driver_t *this_gen, uint32_t bits, uint32_t rate if (err) { xprintf (this->xine, XINE_VERBOSITY_DEBUG, "audio_coreaudio_out: failed to AudioUnitInitialize(converter_unit)\n"); - exit (1); return 0; } @@ -232,7 +239,6 @@ static int ao_coreaudio_open(ao_driver_t *this_gen, uint32_t bits, uint32_t rate if (err) { xprintf (this->xine, XINE_VERBOSITY_DEBUG, "audio_coreaudio_out: failed to AudioUnitInitialize(au_unit)\n"); - exit (1); return 0; } @@ -240,7 +246,6 @@ static int ao_coreaudio_open(ao_driver_t *this_gen, uint32_t bits, uint32_t rate if (err) { xprintf (this->xine, XINE_VERBOSITY_DEBUG, "audio_coreaudio_out: failed to AudioOutputUnitStart(au_unit)\n"); - exit (1); return 0; } |