У меня есть приложение Cocoa, которое использует AVAudioBuffer
и AVAudioFormat
для чтения данных примера из аудиофайла. Однако я запутался насчет свойства чередования AVAudioFormat
.
. Вот код (Xamarin, но это не должно относиться к делу). _file
является экземпляром AVAudioFile
.
using (var format = new AVAudioFormat(AVAudioCommonFormat.PCMFloat32, _file.FileFormat.SampleRate, channelCount, interleaved: true))
using (var buffer = new AVAudioPcmBuffer(format, checked((uint)frameCount)))
{
_file.ReadIntoBuffer(buffer, out var error);
Span<float> span;
unsafe
{
var bufferPointer = (float*)Marshal.ReadIntPtr(buffer.FloatChannelData);
span = new Span<float>(bufferPointer, (int)(frameCount * channelCount));
}
return span.ToArray();
}
Таким образом, критической частью этого является значение с чередованием, переданное конструктору AVAudioFormat
. Когда это правда (как выше), FloatChannelData
в буфере - все нули. Когда оно ложно, примеры данных присутствуют, как и ожидалось.
Я запутался, поскольку предположил, что значение чередования указывает требуемый формат данных в буфере. Мои попытки найти документацию, объясняющую его роль, не увенчались успехом.
Может кто-нибудь объяснить, пожалуйста, роль чередования, как я должен решить, какое значение использовать, и почему, когда оно истинно, образец данныхвсе ноль.
Здесь определенно есть чему научиться, так что если вы можете указать мне какую-нибудь официальную (или иную) документацию, которая объясняет это, я был бы признателен.