在AudioStreamBasicDescription
结构中:
struct AudioStreamBasicDescription {
Float64 mSampleRate;
UInt32 mFormatID;
UInt32 mFormatFlags;
UInt32 mBytesPerPacket;
UInt32 mFramesPerPacket;
UInt32 mBytesPerFrame;
UInt32 mChannelsPerFrame;
UInt32 mBitsPerChannel;
UInt32 mReserved;
};
如果我们知道 nChannelsPerFrame 和 mBitsPerChannels,我们可以像这样计算 mBytesPerFrame: mBytesPerFrame = mBitsPerChannels * mChannelsPerFrame / 8
(如果我错了,请纠正我)
我相信所有字段都出于某种原因而存在。什么是mBytesPerFrame?
是的。该字段可用于帮助描述LPCM样品数据/帧的包装和对齐。对于描述某些外部LPCM表示形式,这也是强制性的。
例如,您可以指定 20 位样本大小,但实现可能倾向于使用 3 个字节或 24 位(忽略每个样本 4 位)来表示/传输/存储该大小。