}
frameCount = core->audioDevicePropertyBufferFrameSize;
- pending_frames = hw->pending_emul >> hw->info.shift;
+ pending_frames = hw->pending_emul / hw->info.bytes_per_frame;
/* if there are not enough samples, set signal and return */
if (pending_frames < frameCount) {
return 0;
}
- len = frameCount << hw->info.shift;
+ len = frameCount * hw->info.bytes_per_frame;
while (len) {
size_t write_len;
ssize_t start = ((ssize_t) hw->pos_emul) - hw->pending_emul;
}
}
-static int coreaudio_ctl_out (HWVoiceOut *hw, int cmd, ...)
+static void coreaudio_enable_out(HWVoiceOut *hw, bool enable)
{
OSStatus status;
coreaudioVoiceOut *core = (coreaudioVoiceOut *) hw;
- switch (cmd) {
- case VOICE_ENABLE:
+ if (enable) {
/* start playback */
if (!isPlaying(core->outputDeviceID)) {
status = AudioDeviceStart(core->outputDeviceID, core->ioprocid);
coreaudio_logerr (status, "Could not resume playback\n");
}
}
- break;
-
- case VOICE_DISABLE:
+ } else {
/* stop playback */
if (!audio_is_cleaning_up()) {
if (isPlaying(core->outputDeviceID)) {
}
}
}
- break;
}
- return 0;
}
static void *coreaudio_audio_init(Audiodev *dev)
.write = coreaudio_write,
.get_buffer_out = coreaudio_get_buffer_out,
.put_buffer_out = coreaudio_put_buffer_out_nowrite,
- .ctl_out = coreaudio_ctl_out
+ .enable_out = coreaudio_enable_out
};
static struct audio_driver coreaudio_audio_driver = {