Skip to content

Fix inputBuffer free#812

Open
tehsven wants to merge 1 commit intosuperpoweredSDK:masterfrom
tehsven:tehsven/fix-ios-inputBuffer-free
Open

Fix inputBuffer free#812
tehsven wants to merge 1 commit intosuperpoweredSDK:masterfrom
tehsven:tehsven/fix-ios-inputBuffer-free

Conversation

@tehsven
Copy link

@tehsven tehsven commented Mar 17, 2026

Non-interleaved support was added in f229c7b

Previous to this commit, the default was interleaved, meaning there was only ever one mBuffers.

With non-interleaved support, there are numberOfChannels mBuffers.

The allocation of these buffers is shown in createInputBuffer wherein

if (interleaved) {
    ...
    inputBuffer->mBuffers[0].mData = calloc(1, MAXFRAMES * 4 * numberOfChannels);
    ...
} else {
    inputBuffer = (AudioBufferList *)malloc(offsetof(AudioBufferList, mBuffers[0]) + sizeof(AudioBuffer) * numberOfChannels);
    ...
    for (int n = 0; n < numberOfChannels; n++) {
        inputBuffer->mBuffers[n].mData = inputBufs[n] = (float *)calloc(1, MAXFRAMES * 4);
        ...
    }
}

Therefore when freeing inputBuffer, interleaved == true should free one mBuffers and interleaved == false should free numberOfChannels mBuffers.

Non-interleaved support was added in f229c7b

Previous to this commit, the default was interleaved, meaning there was only ever one mBuffers.

With non-interleaved support, there are numberOfChannels mBuffers.

The allocation of these buffers is shown in createInputBuffer wherein

    if (interleaved) {
        ...
        inputBuffer->mBuffers[0].mData = calloc(1, MAXFRAMES * 4 * numberOfChannels);
        ...
    } else {
        inputBuffer = (AudioBufferList *)malloc(offsetof(AudioBufferList, mBuffers[0]) + sizeof(AudioBuffer) * numberOfChannels);
        ...
        for (int n = 0; n < numberOfChannels; n++) {
            inputBuffer->mBuffers[n].mData = inputBufs[n] = (float *)calloc(1, MAXFRAMES * 4);
            ...
        }
    }

Therefore when freeing inputBuffer, interleaved == true should free one mBuffers
and interleaved == false should free numberOfChannels mBuffers.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant