Question about ExtAudioFileRead and AudioBuffer for iPhone SDK

I am developing an iPhone application that uses advanced audio file services. I am trying to use ExtAudioFileRead to read an audio file and store data in an AudioBufferList structure.

AudioBufferList is defined as:

struct AudioBufferList {
UInt32      mNumberBuffers;
AudioBuffer mBuffers[1];
};
typedef struct AudioBufferList  AudioBufferList;

and AudioBuffer is defined as

struct AudioBuffer {
   UInt32  mNumberChannels;
   UInt32  mDataByteSize;
   void*   mData;
};
typedef struct AudioBuffer  AudioBuffer;

I want to manipulate mData strong>, but I wonder what void * means . Why is it emptiness *? How can I decide which data type is actually stored in mData?

+3
source share
2 answers

mData void, .

C void -.

mData = (SInt32 *)malloc(sizeof(Sint32) * numElements);

, , , .

Sint32 *myBuffer = (SInt32 *)mData;
+1

mData ( )

AudioStreamBasicDescription inputFileFormat;
UInt32 dataSize = (UInt32)sizeof(inputFileFormat);
ExtAudioFileGetProperty(inputFile, kExtAudioFileProperty_FileDataFormat, &dataSize, &inputFileFormat);
size_t sizeOfFrame = inputFileFormat.mBytesPerFrame;

( 4 Sint32 Float32).

+1

Source: https://habr.com/ru/post/1750180/


All Articles