mirror of
https://github.com/mackron/miniaudio.git
synced 2026-04-23 08:44:04 +02:00
C89 fixes for Core Audio.
This commit is contained in:
+12
-8
@@ -17125,6 +17125,7 @@ ma_result ma_get_AudioObject_closest_buffer_size_in_frames(ma_context* pContext,
|
|||||||
|
|
||||||
ma_result ma_set_AudioObject_buffer_size_in_frames(ma_context* pContext, AudioObjectID deviceObjectID, ma_device_type deviceType, ma_uint32* pBufferSizeInOut)
|
ma_result ma_set_AudioObject_buffer_size_in_frames(ma_context* pContext, AudioObjectID deviceObjectID, ma_device_type deviceType, ma_uint32* pBufferSizeInOut)
|
||||||
{
|
{
|
||||||
|
ma_result result;
|
||||||
ma_uint32 chosenBufferSizeInFrames;
|
ma_uint32 chosenBufferSizeInFrames;
|
||||||
AudioObjectPropertyAddress propAddress;
|
AudioObjectPropertyAddress propAddress;
|
||||||
UInt32 dataSize;
|
UInt32 dataSize;
|
||||||
@@ -17132,7 +17133,7 @@ ma_result ma_set_AudioObject_buffer_size_in_frames(ma_context* pContext, AudioOb
|
|||||||
|
|
||||||
ma_assert(pContext != NULL);
|
ma_assert(pContext != NULL);
|
||||||
|
|
||||||
ma_result result = ma_get_AudioObject_closest_buffer_size_in_frames(pContext, deviceObjectID, deviceType, *pBufferSizeInOut, &chosenBufferSizeInFrames);
|
result = ma_get_AudioObject_closest_buffer_size_in_frames(pContext, deviceObjectID, deviceType, *pBufferSizeInOut, &chosenBufferSizeInFrames);
|
||||||
if (result != MA_SUCCESS) {
|
if (result != MA_SUCCESS) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -17584,6 +17585,7 @@ ma_result ma_context_get_device_info__coreaudio(ma_context* pContext, ma_device_
|
|||||||
for (iStreamDescription = 0; iStreamDescription < streamDescriptionCount; ++iStreamDescription) {
|
for (iStreamDescription = 0; iStreamDescription < streamDescriptionCount; ++iStreamDescription) {
|
||||||
ma_format format;
|
ma_format format;
|
||||||
ma_bool32 formatExists = MA_FALSE;
|
ma_bool32 formatExists = MA_FALSE;
|
||||||
|
ma_uint32 iOutputFormat;
|
||||||
|
|
||||||
result = ma_format_from_AudioStreamBasicDescription(&pStreamDescriptions[iStreamDescription].mFormat, &format);
|
result = ma_format_from_AudioStreamBasicDescription(&pStreamDescriptions[iStreamDescription].mFormat, &format);
|
||||||
if (result != MA_SUCCESS) {
|
if (result != MA_SUCCESS) {
|
||||||
@@ -17593,7 +17595,7 @@ ma_result ma_context_get_device_info__coreaudio(ma_context* pContext, ma_device_
|
|||||||
ma_assert(format != ma_format_unknown);
|
ma_assert(format != ma_format_unknown);
|
||||||
|
|
||||||
/* Make sure the format isn't already in the output list. */
|
/* Make sure the format isn't already in the output list. */
|
||||||
for (ma_uint32 iOutputFormat = 0; iOutputFormat < pDeviceInfo->formatCount; ++iOutputFormat) {
|
for (iOutputFormat = 0; iOutputFormat < pDeviceInfo->formatCount; ++iOutputFormat) {
|
||||||
if (pDeviceInfo->formats[iOutputFormat] == format) {
|
if (pDeviceInfo->formats[iOutputFormat] == format) {
|
||||||
formatExists = MA_TRUE;
|
formatExists = MA_TRUE;
|
||||||
break;
|
break;
|
||||||
@@ -17623,9 +17625,10 @@ ma_result ma_context_get_device_info__coreaudio(ma_context* pContext, ma_device_
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (sampleRateRangeCount > 0) {
|
if (sampleRateRangeCount > 0) {
|
||||||
|
UInt32 iSampleRate;
|
||||||
pDeviceInfo->minSampleRate = UINT32_MAX;
|
pDeviceInfo->minSampleRate = UINT32_MAX;
|
||||||
pDeviceInfo->maxSampleRate = 0;
|
pDeviceInfo->maxSampleRate = 0;
|
||||||
for (UInt32 iSampleRate = 0; iSampleRate < sampleRateRangeCount; ++iSampleRate) {
|
for (iSampleRate = 0; iSampleRate < sampleRateRangeCount; ++iSampleRate) {
|
||||||
if (pDeviceInfo->minSampleRate > pSampleRateRanges[iSampleRate].mMinimum) {
|
if (pDeviceInfo->minSampleRate > pSampleRateRanges[iSampleRate].mMinimum) {
|
||||||
pDeviceInfo->minSampleRate = pSampleRateRanges[iSampleRate].mMinimum;
|
pDeviceInfo->minSampleRate = pSampleRateRanges[iSampleRate].mMinimum;
|
||||||
}
|
}
|
||||||
@@ -17795,6 +17798,7 @@ OSStatus ma_on_output__coreaudio(void* pUserData, AudioUnitRenderActionFlags* pA
|
|||||||
|
|
||||||
while (framesRemaining > 0) {
|
while (framesRemaining > 0) {
|
||||||
void* ppDeinterleavedBuffers[MA_MAX_CHANNELS];
|
void* ppDeinterleavedBuffers[MA_MAX_CHANNELS];
|
||||||
|
ma_uint32 iChannel;
|
||||||
ma_uint32 framesToRead = sizeof(tempBuffer) / ma_get_bytes_per_frame(pDevice->playback.internalFormat, pDevice->playback.internalChannels);
|
ma_uint32 framesToRead = sizeof(tempBuffer) / ma_get_bytes_per_frame(pDevice->playback.internalFormat, pDevice->playback.internalChannels);
|
||||||
if (framesToRead > framesRemaining) {
|
if (framesToRead > framesRemaining) {
|
||||||
framesToRead = framesRemaining;
|
framesToRead = framesRemaining;
|
||||||
@@ -17806,7 +17810,7 @@ OSStatus ma_on_output__coreaudio(void* pUserData, AudioUnitRenderActionFlags* pA
|
|||||||
ma_device__read_frames_from_client(pDevice, framesToRead, tempBuffer);
|
ma_device__read_frames_from_client(pDevice, framesToRead, tempBuffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (ma_uint32 iChannel = 0; iChannel < pDevice->playback.internalChannels; ++iChannel) {
|
for (iChannel = 0; iChannel < pDevice->playback.internalChannels; ++iChannel) {
|
||||||
ppDeinterleavedBuffers[iChannel] = (void*)ma_offset_ptr(pBufferList->mBuffers[iBuffer].mData, (frameCountPerBuffer - framesRemaining) * ma_get_bytes_per_sample(pDevice->playback.internalFormat));
|
ppDeinterleavedBuffers[iChannel] = (void*)ma_offset_ptr(pBufferList->mBuffers[iBuffer].mData, (frameCountPerBuffer - framesRemaining) * ma_get_bytes_per_sample(pDevice->playback.internalFormat));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -17905,12 +17909,13 @@ OSStatus ma_on_input__coreaudio(void* pUserData, AudioUnitRenderActionFlags* pAc
|
|||||||
ma_uint32 framesRemaining = frameCount;
|
ma_uint32 framesRemaining = frameCount;
|
||||||
while (framesRemaining > 0) {
|
while (framesRemaining > 0) {
|
||||||
void* ppDeinterleavedBuffers[MA_MAX_CHANNELS];
|
void* ppDeinterleavedBuffers[MA_MAX_CHANNELS];
|
||||||
|
ma_uint32 iChannel;
|
||||||
ma_uint32 framesToSend = sizeof(tempBuffer) / ma_get_bytes_per_sample(pDevice->capture.internalFormat);
|
ma_uint32 framesToSend = sizeof(tempBuffer) / ma_get_bytes_per_sample(pDevice->capture.internalFormat);
|
||||||
if (framesToSend > framesRemaining) {
|
if (framesToSend > framesRemaining) {
|
||||||
framesToSend = framesRemaining;
|
framesToSend = framesRemaining;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (ma_uint32 iChannel = 0; iChannel < pDevice->capture.internalChannels; ++iChannel) {
|
for (iChannel = 0; iChannel < pDevice->capture.internalChannels; ++iChannel) {
|
||||||
ppDeinterleavedBuffers[iChannel] = (void*)ma_offset_ptr(pRenderedBufferList->mBuffers[iBuffer].mData, (frameCount - framesRemaining) * ma_get_bytes_per_sample(pDevice->capture.internalFormat));
|
ppDeinterleavedBuffers[iChannel] = (void*)ma_offset_ptr(pRenderedBufferList->mBuffers[iBuffer].mData, (frameCount - framesRemaining) * ma_get_bytes_per_sample(pDevice->capture.internalFormat));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -18129,8 +18134,6 @@ ma_result ma_device_init_internal__coreaudio(ma_context* pContext, ma_device_typ
|
|||||||
pData->audioUnit = NULL;
|
pData->audioUnit = NULL;
|
||||||
pData->pAudioBufferList = NULL;
|
pData->pAudioBufferList = NULL;
|
||||||
|
|
||||||
ma_result result;
|
|
||||||
|
|
||||||
#if defined(MA_APPLE_DESKTOP)
|
#if defined(MA_APPLE_DESKTOP)
|
||||||
result = ma_find_AudioObjectID(pContext, deviceType, pDeviceID, &deviceObjectID);
|
result = ma_find_AudioObjectID(pContext, deviceType, pDeviceID, &deviceObjectID);
|
||||||
if (result != MA_SUCCESS) {
|
if (result != MA_SUCCESS) {
|
||||||
@@ -18378,8 +18381,9 @@ ma_result ma_device_init_internal__coreaudio(ma_context* pContext, ma_device_typ
|
|||||||
pBufferList->mBuffers[0].mDataByteSize = actualBufferSizeInFrames * ma_get_bytes_per_frame(pData->formatOut, pData->channelsOut);
|
pBufferList->mBuffers[0].mDataByteSize = actualBufferSizeInFrames * ma_get_bytes_per_frame(pData->formatOut, pData->channelsOut);
|
||||||
pBufferList->mBuffers[0].mData = (ma_uint8*)pBufferList + sizeof(AudioBufferList);
|
pBufferList->mBuffers[0].mData = (ma_uint8*)pBufferList + sizeof(AudioBufferList);
|
||||||
} else {
|
} else {
|
||||||
|
ma_uint32 iBuffer;
|
||||||
pBufferList->mNumberBuffers = pData->channelsOut;
|
pBufferList->mNumberBuffers = pData->channelsOut;
|
||||||
for (ma_uint32 iBuffer = 0; iBuffer < pBufferList->mNumberBuffers; ++iBuffer) {
|
for (iBuffer = 0; iBuffer < pBufferList->mNumberBuffers; ++iBuffer) {
|
||||||
pBufferList->mBuffers[iBuffer].mNumberChannels = 1;
|
pBufferList->mBuffers[iBuffer].mNumberChannels = 1;
|
||||||
pBufferList->mBuffers[iBuffer].mDataByteSize = actualBufferSizeInFrames * ma_get_bytes_per_sample(pData->formatOut);
|
pBufferList->mBuffers[iBuffer].mDataByteSize = actualBufferSizeInFrames * ma_get_bytes_per_sample(pData->formatOut);
|
||||||
pBufferList->mBuffers[iBuffer].mData = (ma_uint8*)pBufferList + ((sizeof(AudioBufferList) - sizeof(AudioBuffer)) + (sizeof(AudioBuffer) * pData->channelsOut)) + (actualBufferSizeInFrames * ma_get_bytes_per_sample(pData->formatOut) * iBuffer);
|
pBufferList->mBuffers[iBuffer].mData = (ma_uint8*)pBufferList + ((sizeof(AudioBufferList) - sizeof(AudioBuffer)) + (sizeof(AudioBuffer) * pData->channelsOut)) + (actualBufferSizeInFrames * ma_get_bytes_per_sample(pData->formatOut) * iBuffer);
|
||||||
|
|||||||
Reference in New Issue
Block a user