我想在RemoteIO中播放Ogg Vorbis文件,我使用以下代码获取vorbis的PCM样本:我试图在RemoteIO中播放Ogg Vorbis文件,我使用下面的代码从Vorbis格式获得PCM样本:在RemoteIO音频单元中播放vorbis时发生严重失真
ssize_t r = ov_read(ds->vf,pcm->buf,sizeof(pcm->buf),SYSTEM_ENDIAN,2,1,NULL);
据对ov_read这使样品中的缓冲带一点endian格式,16个带符号的样本文档。这工作正常,我一直在给RemoteIO提供这些数据,但声音严重失真,尽管可以在正确的时间识别和播放。这是我使用的格式:
AudioStreamBasicDescription streamFormat;
streamFormat.mSampleRate = 44100.0;
streamFormat.mFormatID = kAudioFormatLinearPCM;
streamFormat.mFormatFlags = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked;
streamFormat.mBytesPerPacket = 4;
streamFormat.mFramesPerPacket = 1;
streamFormat.mBytesPerFrame = 4;
streamFormat.mChannelsPerFrame = 2;
streamFormat.mBitsPerChannel = 16;