AudioStreamBasicDescription中是否需要mBytesPerFrame



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 位)来表示/传输/存储该大小。

最新更新