RemoteIO で Ogg Vorbis ファイルを再生しようとしています。vorbis から PCM サンプルを取得するために次のコードを使用しています。RemoteIO で Ogg Vorbis ファイルを再生しようとしています。ヴォルビス:
ssize_t r = ov_read(ds->vf,pcm->buf,sizeof(pcm->buf),SYSTEM_ENDIAN,2,1,NULL);
ov_read のドキュメントによると、これはサンプルをリトル エンディアン形式の 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;