Message ID | 20250124-coreaudio-v7-3-9d9a4d91db37@daynix.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | coreaudio fixes | expand |
On Friday, January 24, 2025 6:12:06 AM CET Akihiko Odaki wrote: > coreaudio had names that are not conforming to QEMU codding style. > coreaudioVoiceOut also had some members that are prefixed with redundant > words like "output" or "audio". > Global names included "out" to tell they are specific to output devices, > but this rule was not completely enforced. > The frame size had three different names "frameSize", "bufferFrameSize", > and "frameCount". > > Replace identifiers to fix these problems. > > Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com> > Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > audio/coreaudio.m | 193 +++++++++++++++++++++++++++--------------------------- > 1 file changed, 98 insertions(+), 95 deletions(-) > > diff --git a/audio/coreaudio.m b/audio/coreaudio.m > index 04e8ac59f4572c1e5fb7dc4f04f5e21520507ab5..6f170a909983b2a5c6abd6fc04c6c3f32828c10c 100644 > --- a/audio/coreaudio.m > +++ b/audio/coreaudio.m > @@ -33,37 +33,37 @@ > #define AUDIO_CAP "coreaudio" > #include "audio_int.h" > > -typedef struct coreaudioVoiceOut { > +typedef struct CoreaudioVoiceOut { > HWVoiceOut hw; > pthread_mutex_t buf_mutex; > - AudioDeviceID outputDeviceID; > - int frameSizeSetting; > - uint32_t bufferCount; > - UInt32 audioDevicePropertyBufferFrameSize; > + AudioDeviceID device_id; > + int frame_size_setting; > + uint32_t buffer_count; > + UInt32 device_frame_size; Actually weird that there are two frame size variables here. AFAICS the device_frame_size member could be dropped and turned into a local variable. Not really an issue for this patch, just saying. > AudioDeviceIOProcID ioprocid; > bool enabled; > -} coreaudioVoiceOut; > +} CoreaudioVoiceOut; Ah, there's the upper case change. :) > -static const AudioObjectPropertyAddress voice_addr = { > +static const AudioObjectPropertyAddress voice_out_addr = { > kAudioHardwarePropertyDefaultOutputDevice, > kAudioObjectPropertyScopeGlobal, > kAudioObjectPropertyElementMain > }; > > -static OSStatus coreaudio_get_voice(AudioDeviceID *id) > +static OSStatus coreaudio_get_voice_out(AudioDeviceID *id) > { > UInt32 size = sizeof(*id); > > return AudioObjectGetPropertyData(kAudioObjectSystemObject, > - &voice_addr, > + &voice_out_addr, > 0, > NULL, > &size, > id); > } > > -static OSStatus coreaudio_get_framesizerange(AudioDeviceID id, > - AudioValueRange *framerange) > +static OSStatus coreaudio_get_out_framesizerange(AudioDeviceID id, > + AudioValueRange *framerange) > { > UInt32 size = sizeof(*framerange); > AudioObjectPropertyAddress addr = { > @@ -80,7 +80,7 @@ static OSStatus coreaudio_get_framesizerange(AudioDeviceID id, > framerange); > } > > -static OSStatus coreaudio_get_framesize(AudioDeviceID id, UInt32 *framesize) > +static OSStatus coreaudio_get_out_framesize(AudioDeviceID id, UInt32 *framesize) > { > UInt32 size = sizeof(*framesize); > AudioObjectPropertyAddress addr = { > @@ -97,7 +97,7 @@ static OSStatus coreaudio_get_framesize(AudioDeviceID id, UInt32 *framesize) > framesize); > } > > -static OSStatus coreaudio_set_framesize(AudioDeviceID id, UInt32 *framesize) > +static OSStatus coreaudio_set_out_framesize(AudioDeviceID id, UInt32 *framesize) > { > UInt32 size = sizeof(*framesize); > AudioObjectPropertyAddress addr = { > @@ -114,8 +114,8 @@ static OSStatus coreaudio_set_framesize(AudioDeviceID id, UInt32 *framesize) > framesize); > } > > -static OSStatus coreaudio_set_streamformat(AudioDeviceID id, > - AudioStreamBasicDescription *d) > +static OSStatus coreaudio_set_out_streamformat(AudioDeviceID id, > + AudioStreamBasicDescription *d) > { > UInt32 size = sizeof(*d); > AudioObjectPropertyAddress addr = { > @@ -132,7 +132,7 @@ static OSStatus coreaudio_set_streamformat(AudioDeviceID id, > d); > } > > -static OSStatus coreaudio_get_isrunning(AudioDeviceID id, UInt32 *result) > +static OSStatus coreaudio_get_out_isrunning(AudioDeviceID id, UInt32 *result) > { > UInt32 size = sizeof(*result); > AudioObjectPropertyAddress addr = { > @@ -242,7 +242,8 @@ static void G_GNUC_PRINTF(3, 4) coreaudio_logerr2( > #define coreaudio_playback_logerr(status, ...) \ > coreaudio_logerr2(status, "playback", __VA_ARGS__) > > -static int coreaudio_buf_lock(coreaudioVoiceOut *core, const char *fn_name) > +static int coreaudio_voice_out_buf_lock(CoreaudioVoiceOut *core, > + const char *fn_name) > { > int err; > > @@ -255,7 +256,8 @@ static int coreaudio_buf_lock(coreaudioVoiceOut *core, const char *fn_name) > return 0; > } > > -static int coreaudio_buf_unlock(coreaudioVoiceOut *core, const char *fn_name) > +static int coreaudio_voice_out_buf_unlock(CoreaudioVoiceOut *core, > + const char *fn_name) > { > int err; > > @@ -268,20 +270,20 @@ static int coreaudio_buf_unlock(coreaudioVoiceOut *core, const char *fn_name) > return 0; > } > > -#define COREAUDIO_WRAPPER_FUNC(name, ret_type, args_decl, args) \ > - static ret_type glue(coreaudio_, name)args_decl \ > - { \ > - coreaudioVoiceOut *core = (coreaudioVoiceOut *)hw; \ > - ret_type ret; \ > - \ > - if (coreaudio_buf_lock(core, "coreaudio_" #name)) { \ > - return 0; \ > - } \ > - \ > - ret = glue(audio_generic_, name)args; \ > - \ > - coreaudio_buf_unlock(core, "coreaudio_" #name); \ > - return ret; \ > +#define COREAUDIO_WRAPPER_FUNC(name, ret_type, args_decl, args) \ > + static ret_type glue(coreaudio_, name)args_decl \ > + { \ > + CoreaudioVoiceOut *core = (CoreaudioVoiceOut *)hw; \ > + ret_type ret; \ > + \ > + if (coreaudio_voice_out_buf_lock(core, "coreaudio_" #name)) { \ > + return 0; \ > + } \ > + \ > + ret = glue(audio_generic_, name)args; \ > + \ > + coreaudio_voice_out_buf_unlock(core, "coreaudio_" #name); \ > + return ret; \ That doesn't really belong into this patch, but OK. > } > COREAUDIO_WRAPPER_FUNC(buffer_get_free, size_t, (HWVoiceOut *hw), (hw)) > COREAUDIO_WRAPPER_FUNC(get_buffer_out, void *, (HWVoiceOut *hw, size_t *size), > @@ -297,7 +299,7 @@ static ret_type glue(coreaudio_, name)args_decl \ > * callback to feed audiooutput buffer. called without BQL. > * allowed to lock "buf_mutex", but disallowed to have any other locks. > */ > -static OSStatus audioDeviceIOProc( > +static OSStatus out_device_ioproc( > AudioDeviceID inDevice, > const AudioTimeStamp *inNow, > const AudioBufferList *inInputData, > @@ -306,33 +308,33 @@ static OSStatus audioDeviceIOProc( > const AudioTimeStamp *inOutputTime, > void *hwptr) > { > - UInt32 frameCount, pending_frames; > + UInt32 frame_size, pending_frames; > void *out = outOutputData->mBuffers[0].mData; > HWVoiceOut *hw = hwptr; > - coreaudioVoiceOut *core = hwptr; > + CoreaudioVoiceOut *core = hwptr; > size_t len; > > - if (coreaudio_buf_lock(core, "audioDeviceIOProc")) { > + if (coreaudio_voice_out_buf_lock(core, "out_device_ioproc")) { > inInputTime = 0; > return 0; > } > > - if (inDevice != core->outputDeviceID) { > - coreaudio_buf_unlock(core, "audioDeviceIOProc(old device)"); > + if (inDevice != core->device_id) { > + coreaudio_voice_out_buf_unlock(core, "out_device_ioproc(old device)"); > return 0; > } > > - frameCount = core->audioDevicePropertyBufferFrameSize; > + frame_size = core->device_frame_size; > pending_frames = hw->pending_emul / hw->info.bytes_per_frame; > > /* if there are not enough samples, set signal and return */ > - if (pending_frames < frameCount) { > + if (pending_frames < frame_size) { > inInputTime = 0; > - coreaudio_buf_unlock(core, "audioDeviceIOProc(empty)"); > + coreaudio_voice_out_buf_unlock(core, "out_device_ioproc(empty)"); > return 0; > } > > - len = frameCount * hw->info.bytes_per_frame; > + len = frame_size * hw->info.bytes_per_frame; > while (len) { > size_t write_len, start; > > @@ -348,16 +350,16 @@ static OSStatus audioDeviceIOProc( > out += write_len; > } > > - coreaudio_buf_unlock(core, "audioDeviceIOProc"); > + coreaudio_voice_out_buf_unlock(core, "out_device_ioproc"); > return 0; > } > > -static OSStatus init_out_device(coreaudioVoiceOut *core) > +static OSStatus init_out_device(CoreaudioVoiceOut *core) > { > OSStatus status; > - AudioValueRange frameRange; > + AudioValueRange framerange; > > - AudioStreamBasicDescription streamBasicDescription = { > + AudioStreamBasicDescription stream_basic_description = { > .mBitsPerChannel = core->hw.info.bits, > .mBytesPerFrame = core->hw.info.bytes_per_frame, > .mBytesPerPacket = core->hw.info.bytes_per_frame, > @@ -368,20 +370,20 @@ static OSStatus init_out_device(coreaudioVoiceOut *core) > .mSampleRate = core->hw.info.freq > }; > > - status = coreaudio_get_voice(&core->outputDeviceID); > + status = coreaudio_get_voice_out(&core->device_id); As can be seen here, I still think "*out*_device_id" is useful for review purposes. Except of that: Reviewed-by: Christian Schoenebeck <qemu_oss@crudebyte.com> /Christian > if (status != kAudioHardwareNoError) { > coreaudio_playback_logerr(status, > "Could not get default output Device\n"); > return status; > } > - if (core->outputDeviceID == kAudioDeviceUnknown) { > + if (core->device_id == kAudioDeviceUnknown) { > dolog("Could not initialize playback - Unknown Audiodevice\n"); > return status; > } > > /* get minimum and maximum buffer frame sizes */ > - status = coreaudio_get_framesizerange(core->outputDeviceID, > - &frameRange); > + status = coreaudio_get_out_framesizerange(core->device_id, > + &framerange); > if (status == kAudioHardwareBadObjectError) { > return 0; > } > @@ -391,32 +393,32 @@ static OSStatus init_out_device(coreaudioVoiceOut *core) > return status; > } > > - if (frameRange.mMinimum > core->frameSizeSetting) { > - core->audioDevicePropertyBufferFrameSize = frameRange.mMinimum; > - dolog("warning: Upsizing Buffer Frames to %f\n", frameRange.mMinimum); > - } else if (frameRange.mMaximum < core->frameSizeSetting) { > - core->audioDevicePropertyBufferFrameSize = frameRange.mMaximum; > - dolog("warning: Downsizing Buffer Frames to %f\n", frameRange.mMaximum); > + if (framerange.mMinimum > core->frame_size_setting) { > + core->device_frame_size = framerange.mMinimum; > + dolog("warning: Upsizing Buffer Frames to %f\n", framerange.mMinimum); > + } else if (framerange.mMaximum < core->frame_size_setting) { > + core->device_frame_size = framerange.mMaximum; > + dolog("warning: Downsizing Buffer Frames to %f\n", framerange.mMaximum); > } else { > - core->audioDevicePropertyBufferFrameSize = core->frameSizeSetting; > + core->device_frame_size = core->frame_size_setting; > } > > /* set Buffer Frame Size */ > - status = coreaudio_set_framesize(core->outputDeviceID, > - &core->audioDevicePropertyBufferFrameSize); > + status = coreaudio_set_out_framesize(core->device_id, > + &core->device_frame_size); > if (status == kAudioHardwareBadObjectError) { > return 0; > } > if (status != kAudioHardwareNoError) { > coreaudio_playback_logerr(status, > "Could not set device buffer frame size %" PRIu32 "\n", > - (uint32_t)core->audioDevicePropertyBufferFrameSize); > + (uint32_t)core->device_frame_size); > return status; > } > > /* get Buffer Frame Size */ > - status = coreaudio_get_framesize(core->outputDeviceID, > - &core->audioDevicePropertyBufferFrameSize); > + status = coreaudio_get_out_framesize(core->device_id, > + &core->device_frame_size); > if (status == kAudioHardwareBadObjectError) { > return 0; > } > @@ -425,19 +427,19 @@ static OSStatus init_out_device(coreaudioVoiceOut *core) > "Could not get device buffer frame size\n"); > return status; > } > - core->hw.samples = core->bufferCount * core->audioDevicePropertyBufferFrameSize; > + core->hw.samples = core->buffer_count * core->device_frame_size; > > /* set Samplerate */ > - status = coreaudio_set_streamformat(core->outputDeviceID, > - &streamBasicDescription); > + status = coreaudio_set_out_streamformat(core->device_id, > + &stream_basic_description); > if (status == kAudioHardwareBadObjectError) { > return 0; > } > if (status != kAudioHardwareNoError) { > coreaudio_playback_logerr(status, > "Could not set samplerate %lf\n", > - streamBasicDescription.mSampleRate); > - core->outputDeviceID = kAudioDeviceUnknown; > + stream_basic_description.mSampleRate); > + core->device_id = kAudioDeviceUnknown; > return status; > } > > @@ -452,8 +454,8 @@ static OSStatus init_out_device(coreaudioVoiceOut *core) > * with the callers of AudioObjectGetPropertyData. > */ > core->ioprocid = NULL; > - status = AudioDeviceCreateIOProcID(core->outputDeviceID, > - audioDeviceIOProc, > + status = AudioDeviceCreateIOProcID(core->device_id, > + out_device_ioproc, > &core->hw, > &core->ioprocid); > if (status == kAudioHardwareBadDeviceError) { > @@ -461,20 +463,20 @@ static OSStatus init_out_device(coreaudioVoiceOut *core) > } > if (status != kAudioHardwareNoError || core->ioprocid == NULL) { > coreaudio_playback_logerr(status, "Could not set IOProc\n"); > - core->outputDeviceID = kAudioDeviceUnknown; > + core->device_id = kAudioDeviceUnknown; > return status; > } > > return 0; > } > > -static void fini_out_device(coreaudioVoiceOut *core) > +static void fini_out_device(CoreaudioVoiceOut *core) > { > OSStatus status; > UInt32 isrunning; > > /* stop playback */ > - status = coreaudio_get_isrunning(core->outputDeviceID, &isrunning); > + status = coreaudio_get_out_isrunning(core->device_id, &isrunning); > if (status != kAudioHardwareBadObjectError) { > if (status != kAudioHardwareNoError) { > coreaudio_logerr(status, > @@ -482,7 +484,7 @@ static void fini_out_device(coreaudioVoiceOut *core) > } > > if (isrunning) { > - status = AudioDeviceStop(core->outputDeviceID, core->ioprocid); > + status = AudioDeviceStop(core->device_id, core->ioprocid); > if (status != kAudioHardwareBadDeviceError && status != kAudioHardwareNoError) { > coreaudio_logerr(status, "Could not stop playback\n"); > } > @@ -490,20 +492,20 @@ static void fini_out_device(coreaudioVoiceOut *core) > } > > /* remove callback */ > - status = AudioDeviceDestroyIOProcID(core->outputDeviceID, > + status = AudioDeviceDestroyIOProcID(core->device_id, > core->ioprocid); > if (status != kAudioHardwareBadDeviceError && status != kAudioHardwareNoError) { > coreaudio_logerr(status, "Could not remove IOProc\n"); > } > - core->outputDeviceID = kAudioDeviceUnknown; > + core->device_id = kAudioDeviceUnknown; > } > > -static void update_device_playback_state(coreaudioVoiceOut *core) > +static void update_out_device_playback_state(CoreaudioVoiceOut *core) > { > OSStatus status; > UInt32 isrunning; > > - status = coreaudio_get_isrunning(core->outputDeviceID, &isrunning); > + status = coreaudio_get_out_isrunning(core->device_id, &isrunning); > if (status != kAudioHardwareNoError) { > if (status != kAudioHardwareBadObjectError) { > coreaudio_logerr(status, > @@ -516,7 +518,7 @@ static void update_device_playback_state(coreaudioVoiceOut *core) > if (core->enabled) { > /* start playback */ > if (!isrunning) { > - status = AudioDeviceStart(core->outputDeviceID, core->ioprocid); > + status = AudioDeviceStart(core->device_id, core->ioprocid); > if (status != kAudioHardwareBadDeviceError && status != kAudioHardwareNoError) { > coreaudio_logerr(status, "Could not resume playback\n"); > } > @@ -524,7 +526,7 @@ static void update_device_playback_state(coreaudioVoiceOut *core) > } else { > /* stop playback */ > if (isrunning) { > - status = AudioDeviceStop(core->outputDeviceID, > + status = AudioDeviceStop(core->device_id, > core->ioprocid); > if (status != kAudioHardwareBadDeviceError && status != kAudioHardwareNoError) { > coreaudio_logerr(status, "Could not pause playback\n"); > @@ -534,22 +536,22 @@ static void update_device_playback_state(coreaudioVoiceOut *core) > } > > /* called without BQL. */ > -static OSStatus handle_voice_change( > +static OSStatus handle_voice_out_change( > AudioObjectID in_object_id, > UInt32 in_number_addresses, > const AudioObjectPropertyAddress *in_addresses, > void *in_client_data) > { > - coreaudioVoiceOut *core = in_client_data; > + CoreaudioVoiceOut *core = in_client_data; > > bql_lock(); > > - if (core->outputDeviceID) { > + if (core->device_id) { > fini_out_device(core); > } > > if (!init_out_device(core)) { > - update_device_playback_state(core); > + update_out_device_playback_state(core); > } > > bql_unlock(); > @@ -560,7 +562,7 @@ static int coreaudio_init_out(HWVoiceOut *hw, struct audsettings *as, > void *drv_opaque) > { > OSStatus status; > - coreaudioVoiceOut *core = (coreaudioVoiceOut *)hw; > + CoreaudioVoiceOut *core = (CoreaudioVoiceOut *)hw; > int err; > Audiodev *dev = drv_opaque; > AudiodevCoreaudioPerDirectionOptions *cpdo = dev->u.coreaudio.out; > @@ -578,13 +580,14 @@ static int coreaudio_init_out(HWVoiceOut *hw, struct audsettings *as, > as->fmt = AUDIO_FORMAT_F32; > audio_pcm_init_info(&hw->info, as); > > - core->frameSizeSetting = audio_buffer_frames( > + core->frame_size_setting = audio_buffer_frames( > qapi_AudiodevCoreaudioPerDirectionOptions_base(cpdo), as, 11610); > > - core->bufferCount = cpdo->has_buffer_count ? cpdo->buffer_count : 4; > + core->buffer_count = cpdo->has_buffer_count ? cpdo->buffer_count : 4; > > status = AudioObjectAddPropertyListener(kAudioObjectSystemObject, > - &voice_addr, handle_voice_change, > + &voice_out_addr, > + handle_voice_out_change, > core); > if (status != kAudioHardwareNoError) { > coreaudio_playback_logerr(status, > @@ -594,8 +597,8 @@ static int coreaudio_init_out(HWVoiceOut *hw, struct audsettings *as, > > if (init_out_device(core)) { > status = AudioObjectRemovePropertyListener(kAudioObjectSystemObject, > - &voice_addr, > - handle_voice_change, > + &voice_out_addr, > + handle_voice_out_change, > core); > if (status != kAudioHardwareNoError) { > coreaudio_playback_logerr(status, > @@ -612,11 +615,11 @@ static void coreaudio_fini_out (HWVoiceOut *hw) > { > OSStatus status; > int err; > - coreaudioVoiceOut *core = (coreaudioVoiceOut *)hw; > + CoreaudioVoiceOut *core = (CoreaudioVoiceOut *)hw; > > status = AudioObjectRemovePropertyListener(kAudioObjectSystemObject, > - &voice_addr, > - handle_voice_change, > + &voice_out_addr, > + handle_voice_out_change, > core); > if (status != kAudioHardwareNoError) { > coreaudio_logerr(status, "Could not remove voice property change listener\n"); > @@ -633,10 +636,10 @@ static void coreaudio_fini_out (HWVoiceOut *hw) > > static void coreaudio_enable_out(HWVoiceOut *hw, bool enable) > { > - coreaudioVoiceOut *core = (coreaudioVoiceOut *)hw; > + CoreaudioVoiceOut *core = (CoreaudioVoiceOut *)hw; > > core->enabled = enable; > - update_device_playback_state(core); > + update_out_device_playback_state(core); > } > > static void *coreaudio_audio_init(Audiodev *dev, Error **errp) > @@ -670,7 +673,7 @@ static void coreaudio_audio_fini(void *opaque) > .pcm_ops = &coreaudio_pcm_ops, > .max_voices_out = 1, > .max_voices_in = 0, > - .voice_size_out = sizeof(coreaudioVoiceOut), > + .voice_size_out = sizeof(CoreaudioVoiceOut), > .voice_size_in = 0 > }; > > >
On 2025/01/24 19:01, Christian Schoenebeck wrote: > On Friday, January 24, 2025 6:12:06 AM CET Akihiko Odaki wrote: >> coreaudio had names that are not conforming to QEMU codding style. >> coreaudioVoiceOut also had some members that are prefixed with redundant >> words like "output" or "audio". >> Global names included "out" to tell they are specific to output devices, >> but this rule was not completely enforced. >> The frame size had three different names "frameSize", "bufferFrameSize", >> and "frameCount". >> >> Replace identifiers to fix these problems. >> >> Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com> >> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> >> --- >> audio/coreaudio.m | 193 +++++++++++++++++++++++++++--------------------------- >> 1 file changed, 98 insertions(+), 95 deletions(-) >> >> diff --git a/audio/coreaudio.m b/audio/coreaudio.m >> index 04e8ac59f4572c1e5fb7dc4f04f5e21520507ab5..6f170a909983b2a5c6abd6fc04c6c3f32828c10c 100644 >> --- a/audio/coreaudio.m >> +++ b/audio/coreaudio.m >> @@ -33,37 +33,37 @@ >> #define AUDIO_CAP "coreaudio" >> #include "audio_int.h" >> >> -typedef struct coreaudioVoiceOut { >> +typedef struct CoreaudioVoiceOut { >> HWVoiceOut hw; >> pthread_mutex_t buf_mutex; >> - AudioDeviceID outputDeviceID; >> - int frameSizeSetting; >> - uint32_t bufferCount; >> - UInt32 audioDevicePropertyBufferFrameSize; >> + AudioDeviceID device_id; >> + int frame_size_setting; >> + uint32_t buffer_count; >> + UInt32 device_frame_size; > > Actually weird that there are two frame size variables here. AFAICS the > device_frame_size member could be dropped and turned into a local variable. They can have different values. frame_size_setting is the value the user configured. device_frame_size is the value that is the value supported by the device and closest to frame_size_setting. device_frame_size cannot be turned into a local variable as it is referred by two functions, out_device_ioproc() and init_out_device(). > > Not really an issue for this patch, just saying. > >> AudioDeviceIOProcID ioprocid; >> bool enabled; >> -} coreaudioVoiceOut; >> +} CoreaudioVoiceOut; > > Ah, there's the upper case change. :) > >> -static const AudioObjectPropertyAddress voice_addr = { >> +static const AudioObjectPropertyAddress voice_out_addr = { >> kAudioHardwarePropertyDefaultOutputDevice, >> kAudioObjectPropertyScopeGlobal, >> kAudioObjectPropertyElementMain >> }; >> >> -static OSStatus coreaudio_get_voice(AudioDeviceID *id) >> +static OSStatus coreaudio_get_voice_out(AudioDeviceID *id) >> { >> UInt32 size = sizeof(*id); >> >> return AudioObjectGetPropertyData(kAudioObjectSystemObject, >> - &voice_addr, >> + &voice_out_addr, >> 0, >> NULL, >> &size, >> id); >> } >> >> -static OSStatus coreaudio_get_framesizerange(AudioDeviceID id, >> - AudioValueRange *framerange) >> +static OSStatus coreaudio_get_out_framesizerange(AudioDeviceID id, >> + AudioValueRange *framerange) >> { >> UInt32 size = sizeof(*framerange); >> AudioObjectPropertyAddress addr = { >> @@ -80,7 +80,7 @@ static OSStatus coreaudio_get_framesizerange(AudioDeviceID id, >> framerange); >> } >> >> -static OSStatus coreaudio_get_framesize(AudioDeviceID id, UInt32 *framesize) >> +static OSStatus coreaudio_get_out_framesize(AudioDeviceID id, UInt32 *framesize) >> { >> UInt32 size = sizeof(*framesize); >> AudioObjectPropertyAddress addr = { >> @@ -97,7 +97,7 @@ static OSStatus coreaudio_get_framesize(AudioDeviceID id, UInt32 *framesize) >> framesize); >> } >> >> -static OSStatus coreaudio_set_framesize(AudioDeviceID id, UInt32 *framesize) >> +static OSStatus coreaudio_set_out_framesize(AudioDeviceID id, UInt32 *framesize) >> { >> UInt32 size = sizeof(*framesize); >> AudioObjectPropertyAddress addr = { >> @@ -114,8 +114,8 @@ static OSStatus coreaudio_set_framesize(AudioDeviceID id, UInt32 *framesize) >> framesize); >> } >> >> -static OSStatus coreaudio_set_streamformat(AudioDeviceID id, >> - AudioStreamBasicDescription *d) >> +static OSStatus coreaudio_set_out_streamformat(AudioDeviceID id, >> + AudioStreamBasicDescription *d) >> { >> UInt32 size = sizeof(*d); >> AudioObjectPropertyAddress addr = { >> @@ -132,7 +132,7 @@ static OSStatus coreaudio_set_streamformat(AudioDeviceID id, >> d); >> } >> >> -static OSStatus coreaudio_get_isrunning(AudioDeviceID id, UInt32 *result) >> +static OSStatus coreaudio_get_out_isrunning(AudioDeviceID id, UInt32 *result) >> { >> UInt32 size = sizeof(*result); >> AudioObjectPropertyAddress addr = { >> @@ -242,7 +242,8 @@ static void G_GNUC_PRINTF(3, 4) coreaudio_logerr2( >> #define coreaudio_playback_logerr(status, ...) \ >> coreaudio_logerr2(status, "playback", __VA_ARGS__) >> >> -static int coreaudio_buf_lock(coreaudioVoiceOut *core, const char *fn_name) >> +static int coreaudio_voice_out_buf_lock(CoreaudioVoiceOut *core, >> + const char *fn_name) >> { >> int err; >> >> @@ -255,7 +256,8 @@ static int coreaudio_buf_lock(coreaudioVoiceOut *core, const char *fn_name) >> return 0; >> } >> >> -static int coreaudio_buf_unlock(coreaudioVoiceOut *core, const char *fn_name) >> +static int coreaudio_voice_out_buf_unlock(CoreaudioVoiceOut *core, >> + const char *fn_name) >> { >> int err; >> >> @@ -268,20 +270,20 @@ static int coreaudio_buf_unlock(coreaudioVoiceOut *core, const char *fn_name) >> return 0; >> } >> >> -#define COREAUDIO_WRAPPER_FUNC(name, ret_type, args_decl, args) \ >> - static ret_type glue(coreaudio_, name)args_decl \ >> - { \ >> - coreaudioVoiceOut *core = (coreaudioVoiceOut *)hw; \ >> - ret_type ret; \ >> - \ >> - if (coreaudio_buf_lock(core, "coreaudio_" #name)) { \ >> - return 0; \ >> - } \ >> - \ >> - ret = glue(audio_generic_, name)args; \ >> - \ >> - coreaudio_buf_unlock(core, "coreaudio_" #name); \ >> - return ret; \ >> +#define COREAUDIO_WRAPPER_FUNC(name, ret_type, args_decl, args) \ >> + static ret_type glue(coreaudio_, name)args_decl \ >> + { \ >> + CoreaudioVoiceOut *core = (CoreaudioVoiceOut *)hw; \ >> + ret_type ret; \ >> + \ >> + if (coreaudio_voice_out_buf_lock(core, "coreaudio_" #name)) { \ >> + return 0; \ >> + } \ >> + \ >> + ret = glue(audio_generic_, name)args; \ >> + \ >> + coreaudio_voice_out_buf_unlock(core, "coreaudio_" #name); \ >> + return ret; \ > > That doesn't really belong into this patch, but OK. > >> } >> COREAUDIO_WRAPPER_FUNC(buffer_get_free, size_t, (HWVoiceOut *hw), (hw)) >> COREAUDIO_WRAPPER_FUNC(get_buffer_out, void *, (HWVoiceOut *hw, size_t *size), >> @@ -297,7 +299,7 @@ static ret_type glue(coreaudio_, name)args_decl \ >> * callback to feed audiooutput buffer. called without BQL. >> * allowed to lock "buf_mutex", but disallowed to have any other locks. >> */ >> -static OSStatus audioDeviceIOProc( >> +static OSStatus out_device_ioproc( >> AudioDeviceID inDevice, >> const AudioTimeStamp *inNow, >> const AudioBufferList *inInputData, >> @@ -306,33 +308,33 @@ static OSStatus audioDeviceIOProc( >> const AudioTimeStamp *inOutputTime, >> void *hwptr) >> { >> - UInt32 frameCount, pending_frames; >> + UInt32 frame_size, pending_frames; >> void *out = outOutputData->mBuffers[0].mData; >> HWVoiceOut *hw = hwptr; >> - coreaudioVoiceOut *core = hwptr; >> + CoreaudioVoiceOut *core = hwptr; >> size_t len; >> >> - if (coreaudio_buf_lock(core, "audioDeviceIOProc")) { >> + if (coreaudio_voice_out_buf_lock(core, "out_device_ioproc")) { >> inInputTime = 0; >> return 0; >> } >> >> - if (inDevice != core->outputDeviceID) { >> - coreaudio_buf_unlock(core, "audioDeviceIOProc(old device)"); >> + if (inDevice != core->device_id) { >> + coreaudio_voice_out_buf_unlock(core, "out_device_ioproc(old device)"); >> return 0; >> } >> >> - frameCount = core->audioDevicePropertyBufferFrameSize; >> + frame_size = core->device_frame_size; >> pending_frames = hw->pending_emul / hw->info.bytes_per_frame; >> >> /* if there are not enough samples, set signal and return */ >> - if (pending_frames < frameCount) { >> + if (pending_frames < frame_size) { >> inInputTime = 0; >> - coreaudio_buf_unlock(core, "audioDeviceIOProc(empty)"); >> + coreaudio_voice_out_buf_unlock(core, "out_device_ioproc(empty)"); >> return 0; >> } >> >> - len = frameCount * hw->info.bytes_per_frame; >> + len = frame_size * hw->info.bytes_per_frame; >> while (len) { >> size_t write_len, start; >> >> @@ -348,16 +350,16 @@ static OSStatus audioDeviceIOProc( >> out += write_len; >> } >> >> - coreaudio_buf_unlock(core, "audioDeviceIOProc"); >> + coreaudio_voice_out_buf_unlock(core, "out_device_ioproc"); >> return 0; >> } >> >> -static OSStatus init_out_device(coreaudioVoiceOut *core) >> +static OSStatus init_out_device(CoreaudioVoiceOut *core) >> { >> OSStatus status; >> - AudioValueRange frameRange; >> + AudioValueRange framerange; >> >> - AudioStreamBasicDescription streamBasicDescription = { >> + AudioStreamBasicDescription stream_basic_description = { >> .mBitsPerChannel = core->hw.info.bits, >> .mBytesPerFrame = core->hw.info.bytes_per_frame, >> .mBytesPerPacket = core->hw.info.bytes_per_frame, >> @@ -368,20 +370,20 @@ static OSStatus init_out_device(coreaudioVoiceOut *core) >> .mSampleRate = core->hw.info.freq >> }; >> >> - status = coreaudio_get_voice(&core->outputDeviceID); >> + status = coreaudio_get_voice_out(&core->device_id); > > As can be seen here, I still think "*out*_device_id" is useful for review > purposes. Except of that: > > Reviewed-by: Christian Schoenebeck <qemu_oss@crudebyte.com> If we want to clarify it is for the output, "core" should be renamed to "core_out" or something like that so that we can see all members that belongs to that struct is for the output. But I also like that the current name is concise. It is like the "this" in C++; so I think keeping such a frequently-used local variable short makes sense. Regards, Akihiko Odaki > > /Christian > >> if (status != kAudioHardwareNoError) { >> coreaudio_playback_logerr(status, >> "Could not get default output Device\n"); >> return status; >> } >> - if (core->outputDeviceID == kAudioDeviceUnknown) { >> + if (core->device_id == kAudioDeviceUnknown) { >> dolog("Could not initialize playback - Unknown Audiodevice\n"); >> return status; >> } >> >> /* get minimum and maximum buffer frame sizes */ >> - status = coreaudio_get_framesizerange(core->outputDeviceID, >> - &frameRange); >> + status = coreaudio_get_out_framesizerange(core->device_id, >> + &framerange); >> if (status == kAudioHardwareBadObjectError) { >> return 0; >> } >> @@ -391,32 +393,32 @@ static OSStatus init_out_device(coreaudioVoiceOut *core) >> return status; >> } >> >> - if (frameRange.mMinimum > core->frameSizeSetting) { >> - core->audioDevicePropertyBufferFrameSize = frameRange.mMinimum; >> - dolog("warning: Upsizing Buffer Frames to %f\n", frameRange.mMinimum); >> - } else if (frameRange.mMaximum < core->frameSizeSetting) { >> - core->audioDevicePropertyBufferFrameSize = frameRange.mMaximum; >> - dolog("warning: Downsizing Buffer Frames to %f\n", frameRange.mMaximum); >> + if (framerange.mMinimum > core->frame_size_setting) { >> + core->device_frame_size = framerange.mMinimum; >> + dolog("warning: Upsizing Buffer Frames to %f\n", framerange.mMinimum); >> + } else if (framerange.mMaximum < core->frame_size_setting) { >> + core->device_frame_size = framerange.mMaximum; >> + dolog("warning: Downsizing Buffer Frames to %f\n", framerange.mMaximum); >> } else { >> - core->audioDevicePropertyBufferFrameSize = core->frameSizeSetting; >> + core->device_frame_size = core->frame_size_setting; >> } >> >> /* set Buffer Frame Size */ >> - status = coreaudio_set_framesize(core->outputDeviceID, >> - &core->audioDevicePropertyBufferFrameSize); >> + status = coreaudio_set_out_framesize(core->device_id, >> + &core->device_frame_size); >> if (status == kAudioHardwareBadObjectError) { >> return 0; >> } >> if (status != kAudioHardwareNoError) { >> coreaudio_playback_logerr(status, >> "Could not set device buffer frame size %" PRIu32 "\n", >> - (uint32_t)core->audioDevicePropertyBufferFrameSize); >> + (uint32_t)core->device_frame_size); >> return status; >> } >> >> /* get Buffer Frame Size */ >> - status = coreaudio_get_framesize(core->outputDeviceID, >> - &core->audioDevicePropertyBufferFrameSize); >> + status = coreaudio_get_out_framesize(core->device_id, >> + &core->device_frame_size); >> if (status == kAudioHardwareBadObjectError) { >> return 0; >> } >> @@ -425,19 +427,19 @@ static OSStatus init_out_device(coreaudioVoiceOut *core) >> "Could not get device buffer frame size\n"); >> return status; >> } >> - core->hw.samples = core->bufferCount * core->audioDevicePropertyBufferFrameSize; >> + core->hw.samples = core->buffer_count * core->device_frame_size; >> >> /* set Samplerate */ >> - status = coreaudio_set_streamformat(core->outputDeviceID, >> - &streamBasicDescription); >> + status = coreaudio_set_out_streamformat(core->device_id, >> + &stream_basic_description); >> if (status == kAudioHardwareBadObjectError) { >> return 0; >> } >> if (status != kAudioHardwareNoError) { >> coreaudio_playback_logerr(status, >> "Could not set samplerate %lf\n", >> - streamBasicDescription.mSampleRate); >> - core->outputDeviceID = kAudioDeviceUnknown; >> + stream_basic_description.mSampleRate); >> + core->device_id = kAudioDeviceUnknown; >> return status; >> } >> >> @@ -452,8 +454,8 @@ static OSStatus init_out_device(coreaudioVoiceOut *core) >> * with the callers of AudioObjectGetPropertyData. >> */ >> core->ioprocid = NULL; >> - status = AudioDeviceCreateIOProcID(core->outputDeviceID, >> - audioDeviceIOProc, >> + status = AudioDeviceCreateIOProcID(core->device_id, >> + out_device_ioproc, >> &core->hw, >> &core->ioprocid); >> if (status == kAudioHardwareBadDeviceError) { >> @@ -461,20 +463,20 @@ static OSStatus init_out_device(coreaudioVoiceOut *core) >> } >> if (status != kAudioHardwareNoError || core->ioprocid == NULL) { >> coreaudio_playback_logerr(status, "Could not set IOProc\n"); >> - core->outputDeviceID = kAudioDeviceUnknown; >> + core->device_id = kAudioDeviceUnknown; >> return status; >> } >> >> return 0; >> } >> >> -static void fini_out_device(coreaudioVoiceOut *core) >> +static void fini_out_device(CoreaudioVoiceOut *core) >> { >> OSStatus status; >> UInt32 isrunning; >> >> /* stop playback */ >> - status = coreaudio_get_isrunning(core->outputDeviceID, &isrunning); >> + status = coreaudio_get_out_isrunning(core->device_id, &isrunning); >> if (status != kAudioHardwareBadObjectError) { >> if (status != kAudioHardwareNoError) { >> coreaudio_logerr(status, >> @@ -482,7 +484,7 @@ static void fini_out_device(coreaudioVoiceOut *core) >> } >> >> if (isrunning) { >> - status = AudioDeviceStop(core->outputDeviceID, core->ioprocid); >> + status = AudioDeviceStop(core->device_id, core->ioprocid); >> if (status != kAudioHardwareBadDeviceError && status != kAudioHardwareNoError) { >> coreaudio_logerr(status, "Could not stop playback\n"); >> } >> @@ -490,20 +492,20 @@ static void fini_out_device(coreaudioVoiceOut *core) >> } >> >> /* remove callback */ >> - status = AudioDeviceDestroyIOProcID(core->outputDeviceID, >> + status = AudioDeviceDestroyIOProcID(core->device_id, >> core->ioprocid); >> if (status != kAudioHardwareBadDeviceError && status != kAudioHardwareNoError) { >> coreaudio_logerr(status, "Could not remove IOProc\n"); >> } >> - core->outputDeviceID = kAudioDeviceUnknown; >> + core->device_id = kAudioDeviceUnknown; >> } >> >> -static void update_device_playback_state(coreaudioVoiceOut *core) >> +static void update_out_device_playback_state(CoreaudioVoiceOut *core) >> { >> OSStatus status; >> UInt32 isrunning; >> >> - status = coreaudio_get_isrunning(core->outputDeviceID, &isrunning); >> + status = coreaudio_get_out_isrunning(core->device_id, &isrunning); >> if (status != kAudioHardwareNoError) { >> if (status != kAudioHardwareBadObjectError) { >> coreaudio_logerr(status, >> @@ -516,7 +518,7 @@ static void update_device_playback_state(coreaudioVoiceOut *core) >> if (core->enabled) { >> /* start playback */ >> if (!isrunning) { >> - status = AudioDeviceStart(core->outputDeviceID, core->ioprocid); >> + status = AudioDeviceStart(core->device_id, core->ioprocid); >> if (status != kAudioHardwareBadDeviceError && status != kAudioHardwareNoError) { >> coreaudio_logerr(status, "Could not resume playback\n"); >> } >> @@ -524,7 +526,7 @@ static void update_device_playback_state(coreaudioVoiceOut *core) >> } else { >> /* stop playback */ >> if (isrunning) { >> - status = AudioDeviceStop(core->outputDeviceID, >> + status = AudioDeviceStop(core->device_id, >> core->ioprocid); >> if (status != kAudioHardwareBadDeviceError && status != kAudioHardwareNoError) { >> coreaudio_logerr(status, "Could not pause playback\n"); >> @@ -534,22 +536,22 @@ static void update_device_playback_state(coreaudioVoiceOut *core) >> } >> >> /* called without BQL. */ >> -static OSStatus handle_voice_change( >> +static OSStatus handle_voice_out_change( >> AudioObjectID in_object_id, >> UInt32 in_number_addresses, >> const AudioObjectPropertyAddress *in_addresses, >> void *in_client_data) >> { >> - coreaudioVoiceOut *core = in_client_data; >> + CoreaudioVoiceOut *core = in_client_data; >> >> bql_lock(); >> >> - if (core->outputDeviceID) { >> + if (core->device_id) { >> fini_out_device(core); >> } >> >> if (!init_out_device(core)) { >> - update_device_playback_state(core); >> + update_out_device_playback_state(core); >> } >> >> bql_unlock(); >> @@ -560,7 +562,7 @@ static int coreaudio_init_out(HWVoiceOut *hw, struct audsettings *as, >> void *drv_opaque) >> { >> OSStatus status; >> - coreaudioVoiceOut *core = (coreaudioVoiceOut *)hw; >> + CoreaudioVoiceOut *core = (CoreaudioVoiceOut *)hw; >> int err; >> Audiodev *dev = drv_opaque; >> AudiodevCoreaudioPerDirectionOptions *cpdo = dev->u.coreaudio.out; >> @@ -578,13 +580,14 @@ static int coreaudio_init_out(HWVoiceOut *hw, struct audsettings *as, >> as->fmt = AUDIO_FORMAT_F32; >> audio_pcm_init_info(&hw->info, as); >> >> - core->frameSizeSetting = audio_buffer_frames( >> + core->frame_size_setting = audio_buffer_frames( >> qapi_AudiodevCoreaudioPerDirectionOptions_base(cpdo), as, 11610); >> >> - core->bufferCount = cpdo->has_buffer_count ? cpdo->buffer_count : 4; >> + core->buffer_count = cpdo->has_buffer_count ? cpdo->buffer_count : 4; >> >> status = AudioObjectAddPropertyListener(kAudioObjectSystemObject, >> - &voice_addr, handle_voice_change, >> + &voice_out_addr, >> + handle_voice_out_change, >> core); >> if (status != kAudioHardwareNoError) { >> coreaudio_playback_logerr(status, >> @@ -594,8 +597,8 @@ static int coreaudio_init_out(HWVoiceOut *hw, struct audsettings *as, >> >> if (init_out_device(core)) { >> status = AudioObjectRemovePropertyListener(kAudioObjectSystemObject, >> - &voice_addr, >> - handle_voice_change, >> + &voice_out_addr, >> + handle_voice_out_change, >> core); >> if (status != kAudioHardwareNoError) { >> coreaudio_playback_logerr(status, >> @@ -612,11 +615,11 @@ static void coreaudio_fini_out (HWVoiceOut *hw) >> { >> OSStatus status; >> int err; >> - coreaudioVoiceOut *core = (coreaudioVoiceOut *)hw; >> + CoreaudioVoiceOut *core = (CoreaudioVoiceOut *)hw; >> >> status = AudioObjectRemovePropertyListener(kAudioObjectSystemObject, >> - &voice_addr, >> - handle_voice_change, >> + &voice_out_addr, >> + handle_voice_out_change, >> core); >> if (status != kAudioHardwareNoError) { >> coreaudio_logerr(status, "Could not remove voice property change listener\n"); >> @@ -633,10 +636,10 @@ static void coreaudio_fini_out (HWVoiceOut *hw) >> >> static void coreaudio_enable_out(HWVoiceOut *hw, bool enable) >> { >> - coreaudioVoiceOut *core = (coreaudioVoiceOut *)hw; >> + CoreaudioVoiceOut *core = (CoreaudioVoiceOut *)hw; >> >> core->enabled = enable; >> - update_device_playback_state(core); >> + update_out_device_playback_state(core); >> } >> >> static void *coreaudio_audio_init(Audiodev *dev, Error **errp) >> @@ -670,7 +673,7 @@ static void coreaudio_audio_fini(void *opaque) >> .pcm_ops = &coreaudio_pcm_ops, >> .max_voices_out = 1, >> .max_voices_in = 0, >> - .voice_size_out = sizeof(coreaudioVoiceOut), >> + .voice_size_out = sizeof(CoreaudioVoiceOut), >> .voice_size_in = 0 >> }; >> >> >> > >
diff --git a/audio/coreaudio.m b/audio/coreaudio.m index 04e8ac59f4572c1e5fb7dc4f04f5e21520507ab5..6f170a909983b2a5c6abd6fc04c6c3f32828c10c 100644 --- a/audio/coreaudio.m +++ b/audio/coreaudio.m @@ -33,37 +33,37 @@ #define AUDIO_CAP "coreaudio" #include "audio_int.h" -typedef struct coreaudioVoiceOut { +typedef struct CoreaudioVoiceOut { HWVoiceOut hw; pthread_mutex_t buf_mutex; - AudioDeviceID outputDeviceID; - int frameSizeSetting; - uint32_t bufferCount; - UInt32 audioDevicePropertyBufferFrameSize; + AudioDeviceID device_id; + int frame_size_setting; + uint32_t buffer_count; + UInt32 device_frame_size; AudioDeviceIOProcID ioprocid; bool enabled; -} coreaudioVoiceOut; +} CoreaudioVoiceOut; -static const AudioObjectPropertyAddress voice_addr = { +static const AudioObjectPropertyAddress voice_out_addr = { kAudioHardwarePropertyDefaultOutputDevice, kAudioObjectPropertyScopeGlobal, kAudioObjectPropertyElementMain }; -static OSStatus coreaudio_get_voice(AudioDeviceID *id) +static OSStatus coreaudio_get_voice_out(AudioDeviceID *id) { UInt32 size = sizeof(*id); return AudioObjectGetPropertyData(kAudioObjectSystemObject, - &voice_addr, + &voice_out_addr, 0, NULL, &size, id); } -static OSStatus coreaudio_get_framesizerange(AudioDeviceID id, - AudioValueRange *framerange) +static OSStatus coreaudio_get_out_framesizerange(AudioDeviceID id, + AudioValueRange *framerange) { UInt32 size = sizeof(*framerange); AudioObjectPropertyAddress addr = { @@ -80,7 +80,7 @@ static OSStatus coreaudio_get_framesizerange(AudioDeviceID id, framerange); } -static OSStatus coreaudio_get_framesize(AudioDeviceID id, UInt32 *framesize) +static OSStatus coreaudio_get_out_framesize(AudioDeviceID id, UInt32 *framesize) { UInt32 size = sizeof(*framesize); AudioObjectPropertyAddress addr = { @@ -97,7 +97,7 @@ static OSStatus coreaudio_get_framesize(AudioDeviceID id, UInt32 *framesize) framesize); } -static OSStatus coreaudio_set_framesize(AudioDeviceID id, UInt32 *framesize) +static OSStatus coreaudio_set_out_framesize(AudioDeviceID id, UInt32 *framesize) { UInt32 size = sizeof(*framesize); AudioObjectPropertyAddress addr = { @@ -114,8 +114,8 @@ static OSStatus coreaudio_set_framesize(AudioDeviceID id, UInt32 *framesize) framesize); } -static OSStatus coreaudio_set_streamformat(AudioDeviceID id, - AudioStreamBasicDescription *d) +static OSStatus coreaudio_set_out_streamformat(AudioDeviceID id, + AudioStreamBasicDescription *d) { UInt32 size = sizeof(*d); AudioObjectPropertyAddress addr = { @@ -132,7 +132,7 @@ static OSStatus coreaudio_set_streamformat(AudioDeviceID id, d); } -static OSStatus coreaudio_get_isrunning(AudioDeviceID id, UInt32 *result) +static OSStatus coreaudio_get_out_isrunning(AudioDeviceID id, UInt32 *result) { UInt32 size = sizeof(*result); AudioObjectPropertyAddress addr = { @@ -242,7 +242,8 @@ static void G_GNUC_PRINTF(3, 4) coreaudio_logerr2( #define coreaudio_playback_logerr(status, ...) \ coreaudio_logerr2(status, "playback", __VA_ARGS__) -static int coreaudio_buf_lock(coreaudioVoiceOut *core, const char *fn_name) +static int coreaudio_voice_out_buf_lock(CoreaudioVoiceOut *core, + const char *fn_name) { int err; @@ -255,7 +256,8 @@ static int coreaudio_buf_lock(coreaudioVoiceOut *core, const char *fn_name) return 0; } -static int coreaudio_buf_unlock(coreaudioVoiceOut *core, const char *fn_name) +static int coreaudio_voice_out_buf_unlock(CoreaudioVoiceOut *core, + const char *fn_name) { int err; @@ -268,20 +270,20 @@ static int coreaudio_buf_unlock(coreaudioVoiceOut *core, const char *fn_name) return 0; } -#define COREAUDIO_WRAPPER_FUNC(name, ret_type, args_decl, args) \ - static ret_type glue(coreaudio_, name)args_decl \ - { \ - coreaudioVoiceOut *core = (coreaudioVoiceOut *)hw; \ - ret_type ret; \ - \ - if (coreaudio_buf_lock(core, "coreaudio_" #name)) { \ - return 0; \ - } \ - \ - ret = glue(audio_generic_, name)args; \ - \ - coreaudio_buf_unlock(core, "coreaudio_" #name); \ - return ret; \ +#define COREAUDIO_WRAPPER_FUNC(name, ret_type, args_decl, args) \ + static ret_type glue(coreaudio_, name)args_decl \ + { \ + CoreaudioVoiceOut *core = (CoreaudioVoiceOut *)hw; \ + ret_type ret; \ + \ + if (coreaudio_voice_out_buf_lock(core, "coreaudio_" #name)) { \ + return 0; \ + } \ + \ + ret = glue(audio_generic_, name)args; \ + \ + coreaudio_voice_out_buf_unlock(core, "coreaudio_" #name); \ + return ret; \ } COREAUDIO_WRAPPER_FUNC(buffer_get_free, size_t, (HWVoiceOut *hw), (hw)) COREAUDIO_WRAPPER_FUNC(get_buffer_out, void *, (HWVoiceOut *hw, size_t *size), @@ -297,7 +299,7 @@ static ret_type glue(coreaudio_, name)args_decl \ * callback to feed audiooutput buffer. called without BQL. * allowed to lock "buf_mutex", but disallowed to have any other locks. */ -static OSStatus audioDeviceIOProc( +static OSStatus out_device_ioproc( AudioDeviceID inDevice, const AudioTimeStamp *inNow, const AudioBufferList *inInputData, @@ -306,33 +308,33 @@ static OSStatus audioDeviceIOProc( const AudioTimeStamp *inOutputTime, void *hwptr) { - UInt32 frameCount, pending_frames; + UInt32 frame_size, pending_frames; void *out = outOutputData->mBuffers[0].mData; HWVoiceOut *hw = hwptr; - coreaudioVoiceOut *core = hwptr; + CoreaudioVoiceOut *core = hwptr; size_t len; - if (coreaudio_buf_lock(core, "audioDeviceIOProc")) { + if (coreaudio_voice_out_buf_lock(core, "out_device_ioproc")) { inInputTime = 0; return 0; } - if (inDevice != core->outputDeviceID) { - coreaudio_buf_unlock(core, "audioDeviceIOProc(old device)"); + if (inDevice != core->device_id) { + coreaudio_voice_out_buf_unlock(core, "out_device_ioproc(old device)"); return 0; } - frameCount = core->audioDevicePropertyBufferFrameSize; + frame_size = core->device_frame_size; pending_frames = hw->pending_emul / hw->info.bytes_per_frame; /* if there are not enough samples, set signal and return */ - if (pending_frames < frameCount) { + if (pending_frames < frame_size) { inInputTime = 0; - coreaudio_buf_unlock(core, "audioDeviceIOProc(empty)"); + coreaudio_voice_out_buf_unlock(core, "out_device_ioproc(empty)"); return 0; } - len = frameCount * hw->info.bytes_per_frame; + len = frame_size * hw->info.bytes_per_frame; while (len) { size_t write_len, start; @@ -348,16 +350,16 @@ static OSStatus audioDeviceIOProc( out += write_len; } - coreaudio_buf_unlock(core, "audioDeviceIOProc"); + coreaudio_voice_out_buf_unlock(core, "out_device_ioproc"); return 0; } -static OSStatus init_out_device(coreaudioVoiceOut *core) +static OSStatus init_out_device(CoreaudioVoiceOut *core) { OSStatus status; - AudioValueRange frameRange; + AudioValueRange framerange; - AudioStreamBasicDescription streamBasicDescription = { + AudioStreamBasicDescription stream_basic_description = { .mBitsPerChannel = core->hw.info.bits, .mBytesPerFrame = core->hw.info.bytes_per_frame, .mBytesPerPacket = core->hw.info.bytes_per_frame, @@ -368,20 +370,20 @@ static OSStatus init_out_device(coreaudioVoiceOut *core) .mSampleRate = core->hw.info.freq }; - status = coreaudio_get_voice(&core->outputDeviceID); + status = coreaudio_get_voice_out(&core->device_id); if (status != kAudioHardwareNoError) { coreaudio_playback_logerr(status, "Could not get default output Device\n"); return status; } - if (core->outputDeviceID == kAudioDeviceUnknown) { + if (core->device_id == kAudioDeviceUnknown) { dolog("Could not initialize playback - Unknown Audiodevice\n"); return status; } /* get minimum and maximum buffer frame sizes */ - status = coreaudio_get_framesizerange(core->outputDeviceID, - &frameRange); + status = coreaudio_get_out_framesizerange(core->device_id, + &framerange); if (status == kAudioHardwareBadObjectError) { return 0; } @@ -391,32 +393,32 @@ static OSStatus init_out_device(coreaudioVoiceOut *core) return status; } - if (frameRange.mMinimum > core->frameSizeSetting) { - core->audioDevicePropertyBufferFrameSize = frameRange.mMinimum; - dolog("warning: Upsizing Buffer Frames to %f\n", frameRange.mMinimum); - } else if (frameRange.mMaximum < core->frameSizeSetting) { - core->audioDevicePropertyBufferFrameSize = frameRange.mMaximum; - dolog("warning: Downsizing Buffer Frames to %f\n", frameRange.mMaximum); + if (framerange.mMinimum > core->frame_size_setting) { + core->device_frame_size = framerange.mMinimum; + dolog("warning: Upsizing Buffer Frames to %f\n", framerange.mMinimum); + } else if (framerange.mMaximum < core->frame_size_setting) { + core->device_frame_size = framerange.mMaximum; + dolog("warning: Downsizing Buffer Frames to %f\n", framerange.mMaximum); } else { - core->audioDevicePropertyBufferFrameSize = core->frameSizeSetting; + core->device_frame_size = core->frame_size_setting; } /* set Buffer Frame Size */ - status = coreaudio_set_framesize(core->outputDeviceID, - &core->audioDevicePropertyBufferFrameSize); + status = coreaudio_set_out_framesize(core->device_id, + &core->device_frame_size); if (status == kAudioHardwareBadObjectError) { return 0; } if (status != kAudioHardwareNoError) { coreaudio_playback_logerr(status, "Could not set device buffer frame size %" PRIu32 "\n", - (uint32_t)core->audioDevicePropertyBufferFrameSize); + (uint32_t)core->device_frame_size); return status; } /* get Buffer Frame Size */ - status = coreaudio_get_framesize(core->outputDeviceID, - &core->audioDevicePropertyBufferFrameSize); + status = coreaudio_get_out_framesize(core->device_id, + &core->device_frame_size); if (status == kAudioHardwareBadObjectError) { return 0; } @@ -425,19 +427,19 @@ static OSStatus init_out_device(coreaudioVoiceOut *core) "Could not get device buffer frame size\n"); return status; } - core->hw.samples = core->bufferCount * core->audioDevicePropertyBufferFrameSize; + core->hw.samples = core->buffer_count * core->device_frame_size; /* set Samplerate */ - status = coreaudio_set_streamformat(core->outputDeviceID, - &streamBasicDescription); + status = coreaudio_set_out_streamformat(core->device_id, + &stream_basic_description); if (status == kAudioHardwareBadObjectError) { return 0; } if (status != kAudioHardwareNoError) { coreaudio_playback_logerr(status, "Could not set samplerate %lf\n", - streamBasicDescription.mSampleRate); - core->outputDeviceID = kAudioDeviceUnknown; + stream_basic_description.mSampleRate); + core->device_id = kAudioDeviceUnknown; return status; } @@ -452,8 +454,8 @@ static OSStatus init_out_device(coreaudioVoiceOut *core) * with the callers of AudioObjectGetPropertyData. */ core->ioprocid = NULL; - status = AudioDeviceCreateIOProcID(core->outputDeviceID, - audioDeviceIOProc, + status = AudioDeviceCreateIOProcID(core->device_id, + out_device_ioproc, &core->hw, &core->ioprocid); if (status == kAudioHardwareBadDeviceError) { @@ -461,20 +463,20 @@ static OSStatus init_out_device(coreaudioVoiceOut *core) } if (status != kAudioHardwareNoError || core->ioprocid == NULL) { coreaudio_playback_logerr(status, "Could not set IOProc\n"); - core->outputDeviceID = kAudioDeviceUnknown; + core->device_id = kAudioDeviceUnknown; return status; } return 0; } -static void fini_out_device(coreaudioVoiceOut *core) +static void fini_out_device(CoreaudioVoiceOut *core) { OSStatus status; UInt32 isrunning; /* stop playback */ - status = coreaudio_get_isrunning(core->outputDeviceID, &isrunning); + status = coreaudio_get_out_isrunning(core->device_id, &isrunning); if (status != kAudioHardwareBadObjectError) { if (status != kAudioHardwareNoError) { coreaudio_logerr(status, @@ -482,7 +484,7 @@ static void fini_out_device(coreaudioVoiceOut *core) } if (isrunning) { - status = AudioDeviceStop(core->outputDeviceID, core->ioprocid); + status = AudioDeviceStop(core->device_id, core->ioprocid); if (status != kAudioHardwareBadDeviceError && status != kAudioHardwareNoError) { coreaudio_logerr(status, "Could not stop playback\n"); } @@ -490,20 +492,20 @@ static void fini_out_device(coreaudioVoiceOut *core) } /* remove callback */ - status = AudioDeviceDestroyIOProcID(core->outputDeviceID, + status = AudioDeviceDestroyIOProcID(core->device_id, core->ioprocid); if (status != kAudioHardwareBadDeviceError && status != kAudioHardwareNoError) { coreaudio_logerr(status, "Could not remove IOProc\n"); } - core->outputDeviceID = kAudioDeviceUnknown; + core->device_id = kAudioDeviceUnknown; } -static void update_device_playback_state(coreaudioVoiceOut *core) +static void update_out_device_playback_state(CoreaudioVoiceOut *core) { OSStatus status; UInt32 isrunning; - status = coreaudio_get_isrunning(core->outputDeviceID, &isrunning); + status = coreaudio_get_out_isrunning(core->device_id, &isrunning); if (status != kAudioHardwareNoError) { if (status != kAudioHardwareBadObjectError) { coreaudio_logerr(status, @@ -516,7 +518,7 @@ static void update_device_playback_state(coreaudioVoiceOut *core) if (core->enabled) { /* start playback */ if (!isrunning) { - status = AudioDeviceStart(core->outputDeviceID, core->ioprocid); + status = AudioDeviceStart(core->device_id, core->ioprocid); if (status != kAudioHardwareBadDeviceError && status != kAudioHardwareNoError) { coreaudio_logerr(status, "Could not resume playback\n"); } @@ -524,7 +526,7 @@ static void update_device_playback_state(coreaudioVoiceOut *core) } else { /* stop playback */ if (isrunning) { - status = AudioDeviceStop(core->outputDeviceID, + status = AudioDeviceStop(core->device_id, core->ioprocid); if (status != kAudioHardwareBadDeviceError && status != kAudioHardwareNoError) { coreaudio_logerr(status, "Could not pause playback\n"); @@ -534,22 +536,22 @@ static void update_device_playback_state(coreaudioVoiceOut *core) } /* called without BQL. */ -static OSStatus handle_voice_change( +static OSStatus handle_voice_out_change( AudioObjectID in_object_id, UInt32 in_number_addresses, const AudioObjectPropertyAddress *in_addresses, void *in_client_data) { - coreaudioVoiceOut *core = in_client_data; + CoreaudioVoiceOut *core = in_client_data; bql_lock(); - if (core->outputDeviceID) { + if (core->device_id) { fini_out_device(core); } if (!init_out_device(core)) { - update_device_playback_state(core); + update_out_device_playback_state(core); } bql_unlock(); @@ -560,7 +562,7 @@ static int coreaudio_init_out(HWVoiceOut *hw, struct audsettings *as, void *drv_opaque) { OSStatus status; - coreaudioVoiceOut *core = (coreaudioVoiceOut *)hw; + CoreaudioVoiceOut *core = (CoreaudioVoiceOut *)hw; int err; Audiodev *dev = drv_opaque; AudiodevCoreaudioPerDirectionOptions *cpdo = dev->u.coreaudio.out; @@ -578,13 +580,14 @@ static int coreaudio_init_out(HWVoiceOut *hw, struct audsettings *as, as->fmt = AUDIO_FORMAT_F32; audio_pcm_init_info(&hw->info, as); - core->frameSizeSetting = audio_buffer_frames( + core->frame_size_setting = audio_buffer_frames( qapi_AudiodevCoreaudioPerDirectionOptions_base(cpdo), as, 11610); - core->bufferCount = cpdo->has_buffer_count ? cpdo->buffer_count : 4; + core->buffer_count = cpdo->has_buffer_count ? cpdo->buffer_count : 4; status = AudioObjectAddPropertyListener(kAudioObjectSystemObject, - &voice_addr, handle_voice_change, + &voice_out_addr, + handle_voice_out_change, core); if (status != kAudioHardwareNoError) { coreaudio_playback_logerr(status, @@ -594,8 +597,8 @@ static int coreaudio_init_out(HWVoiceOut *hw, struct audsettings *as, if (init_out_device(core)) { status = AudioObjectRemovePropertyListener(kAudioObjectSystemObject, - &voice_addr, - handle_voice_change, + &voice_out_addr, + handle_voice_out_change, core); if (status != kAudioHardwareNoError) { coreaudio_playback_logerr(status, @@ -612,11 +615,11 @@ static void coreaudio_fini_out (HWVoiceOut *hw) { OSStatus status; int err; - coreaudioVoiceOut *core = (coreaudioVoiceOut *)hw; + CoreaudioVoiceOut *core = (CoreaudioVoiceOut *)hw; status = AudioObjectRemovePropertyListener(kAudioObjectSystemObject, - &voice_addr, - handle_voice_change, + &voice_out_addr, + handle_voice_out_change, core); if (status != kAudioHardwareNoError) { coreaudio_logerr(status, "Could not remove voice property change listener\n"); @@ -633,10 +636,10 @@ static void coreaudio_fini_out (HWVoiceOut *hw) static void coreaudio_enable_out(HWVoiceOut *hw, bool enable) { - coreaudioVoiceOut *core = (coreaudioVoiceOut *)hw; + CoreaudioVoiceOut *core = (CoreaudioVoiceOut *)hw; core->enabled = enable; - update_device_playback_state(core); + update_out_device_playback_state(core); } static void *coreaudio_audio_init(Audiodev *dev, Error **errp) @@ -670,7 +673,7 @@ static void coreaudio_audio_fini(void *opaque) .pcm_ops = &coreaudio_pcm_ops, .max_voices_out = 1, .max_voices_in = 0, - .voice_size_out = sizeof(coreaudioVoiceOut), + .voice_size_out = sizeof(CoreaudioVoiceOut), .voice_size_in = 0 };