我正在开发iOS应用程序,它必须同时处理几个立体声audio文件(持续时间从几秒到四分钟不等),同时播放多达三个立体声audio文件,并通过基于多通道混音器的AUGraph进行同步。 我的audio文件被压缩 – 无论是MP3,AAC或CAF – 但是当他们被加载到缓冲区转换为32位AudioUnitSampleType格式(我的代码是基于苹果的iPhoneMultichannelMixerTest )。 不用说,用这么大的缓冲区,应用程序的内存很快就成了一个问题。 苹果的文档指出,iOS设备可以一次解码一个硬件MP3 / AAC文件,推荐CAF(IMA4)格式的其他文件需要软件解码。 在开发一个用于在播放过程中dynamic加载audio的系统之前,我想知道是否可以直接将压缩文件加载到缓冲区(从而显着降低内存需求),并让我的AUGraph在运行中将其转换。
我有一个应用程序,从iPod库中select一首歌曲,然后将该歌曲作为“.caf”文件复制到应用程序的目录中。 我现在需要播放,同时从Accelerate框架将该文件读入Apples FFT,这样我就可以像声谱图一样可视化数据。 这里是FFT的代码: void FFTAccelerate::doFFTReal(float samples[], float amp[], int numSamples) { int i; vDSP_Length log2n = log2f(numSamples); //Convert float array of reals samples to COMPLEX_SPLIT array A vDSP_ctoz((COMPLEX*)samples,2,&A,1,numSamples/2); //Perform FFT using fftSetup and A //Results are returned in A vDSP_fft_zrip(fftSetup, &A, 1, log2n, FFT_FORWARD); //Convert COMPLEX_SPLIT A result to float array to be returned […]