Reading audio with Extended Audio File Services (ExtAudioFileRead)

后端 未结 4 1736
暖寄归人
暖寄归人 2021-02-10 17:17

I am working on understanding Core Audio, or rather: Extended Audio File Services

Here, I want to use ExtAudioFileRead() to read some audio data from a file

相关标签:
4条回答
  • 2021-02-10 17:22

    mNumberBuffers == 2 when you're dealing with non-interleaved stereo. It is the number of audio channels when not interleaved.

    0 讨论(0)
  • 2021-02-10 17:23

    Cocoa simply seems to not accept mNumberBuffers > 1. Which is a shame as it makes the whole structure useless. (I hope this is right...)

    0 讨论(0)
  • 2021-02-10 17:26

    I also had the same problem with mNumberBuffers > 1,,... My work around involved creating my own internal buffer:

    something like:

    char buffer1[byteSize]; char buffer2[byteSize]; ......

    you could also use pointers to make things easier,..like:

    buffer[index][byteSize];

    then you would have to iterate through them manually and fill them up on the main thread to avoid glitches in audio.

    ExtAudioFileRead will only fill buffer[0] in the AudioBufferList, you could then have that pointing to different manually allocated buffers as the audio plays.

    hope this helps.

    0 讨论(0)
  • 2021-02-10 17:41

    I think you're misunderstanding the purpose of the mNumberBuffers field. It's typically 1 for mono and interleaved stereo data. The only reason you would set it to something else is for multi-track data where each channel is in a separate data buffer.

    If you want to read a part of a file, you would set dataByteSize of the buffer to a reasonable size, and when you read the file, tell the API only to give you that many bytes, and loop over it.

    0 讨论(0)
提交回复
热议问题