DiracLEオーディオライブラリ内のメソッドに渡して配列しようとしています。
配列はデバッガーで次のように表示されます
- (OSStatus) readFloatsConsecutive:(SInt64)numFrames intoArray:(float**)audio withOffset:(long)offset
それはそのように配列を埋めます
if (audio) {
for (long c = 0; c < mExtAFNumChannels; c++) {
if (!audio[c]) continue; // this executes for both channels
// but doesnt proceed into next for loop
for (long v = 0; v < numFrames; v++) {
if (v < loadedPackets) audio[c][v+offset] = (float)data[v*mExtAFNumChannels+c] / 32768.f;
else audio[c][v+offset] = 0.f;
}
}
}
私はこう呼んでいます
[reader readFloatsConsecutive:frameCount intoArray:arrayToFill];
現在の関数スコープへの引数である arrayToFill
[self readAudioDataForFile:temp withArray:tempArray];
配列は最初、このように関数に渡されました
// this array was passed into the function as tempArray which is float **tempArray = NULL;
arrayToFill = (float **) malloc ( (frameCount * channelCount) * sizeof( float ));
メソッドでファイルからオーディオ データを抽出する必要があったため、そこに配列を malloc し、それを dirac 関数に渡して入力する必要があります。私はそのように mallocarrayToFill = (float **) malloc ( (frameCount * channelCount) * sizeof( float ));
し、前述のように dirac 関数に渡します。
この配列は、チャネル数に応じて 2 次元または 1 次元の配列になります。