[xmp] Fix CoreAudio driver

Signed-off-by: Claudio Matsuoka <cmatsuoka@gmail.com>
master
Claudio Matsuoka 14 years ago
parent 62266f9633
commit f8f8e76ffb
  1. 14
      src/sound_coreaudio.c

@ -134,8 +134,8 @@ static int init(struct options *options)
ad.mSampleRate = options->rate; ad.mSampleRate = options->rate;
ad.mFormatID = kAudioFormatLinearPCM; ad.mFormatID = kAudioFormatLinearPCM;
ad.mFormatFlags = kAudioFormatFlagIsPacked | ad.mFormatFlags = kAudioFormatFlagIsPacked /* |
kAudioFormatFlagNativeEndian; kAudioFormatFlagNativeEndian */;
if (~options->format & XMP_FORMAT_UNSIGNED) { if (~options->format & XMP_FORMAT_UNSIGNED) {
ad.mFormatFlags |= kAudioFormatFlagIsSignedInteger; ad.mFormatFlags |= kAudioFormatFlagIsSignedInteger;
@ -144,7 +144,11 @@ static int init(struct options *options)
ad.mChannelsPerFrame = options->format & XMP_FORMAT_MONO ? 1 : 2; ad.mChannelsPerFrame = options->format & XMP_FORMAT_MONO ? 1 : 2;
ad.mBitsPerChannel = options->format & XMP_FORMAT_8BIT ? 8 : 16; ad.mBitsPerChannel = options->format & XMP_FORMAT_8BIT ? 8 : 16;
ad.mBytesPerFrame = o->resol / 8 * ad.mChannelsPerFrame; if (options->format & XMP_FORMAT_8BIT) {
ad.mBytesPerFrame = ad.mChannelsPerFrame;
} else {
ad.mBytesPerFrame = 2 * ad.mChannelsPerFrame;
}
ad.mBytesPerPacket = ad.mBytesPerFrame; ad.mBytesPerPacket = ad.mBytesPerFrame;
ad.mFramesPerPacket = 1; ad.mFramesPerPacket = 1;
@ -195,7 +199,7 @@ static int init(struct options *options)
} }
chunk_size = max_frames; chunk_size = max_frames;
num_chunks = (o->freq * ad.mBytesPerFrame + chunk_size - 1) / num_chunks = (options->rate * ad.mBytesPerFrame + chunk_size - 1) /
chunk_size; chunk_size;
buffer_len = (num_chunks + 1) * chunk_size; buffer_len = (num_chunks + 1) * chunk_size;
buffer = calloc(num_chunks + 1, chunk_size); buffer = calloc(num_chunks + 1, chunk_size);
@ -266,7 +270,7 @@ static void onresume()
struct sound_driver sound_coreaudio = { struct sound_driver sound_coreaudio = {
"coreaudio", "coreaudio",
"CoreAudio", "CoreAudio",
help, NULL,
init, init,
deinit, deinit,
play, play,

Loading…
Cancel
Save