【问题标题】:Is mBytesPerFrame needed in AudioStreamBasicDescription?AudioStreamBasicDescription 中是否需要 mBytesPerFrame?
【发布时间】:2012-11-16 08:50:33
【问题描述】:

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 是什么?

【问题讨论】:

    标签: objective-c ios audio core-audio audioqueueservices


    【解决方案1】:

    是的。该字段可用于帮助描述 LPCM 样本数据/帧的打包和对齐。这对于描述一些外部 LPCM 表示也是强制性的。

    例如,您可以指定 20 位的样本大小,但实现可能倾向于使用 3 字节或 24 位(每个样本忽略 4 位)来表示/传输/存储它。

    【讨论】:

    • 类似的问题,如果我们已经有了 mFramesPerPacket 和 mBytesPerFrame,为什么还需要 mBytesPerPacket?
    • @jAckOdE 不客气。由于 ASBD 可以表示 LPCM 和基本 VBR 格式,因此存在重叠和看似冗余的字段。 mBytesPerPacket 对于定义基本 VBR 数据的抽象描述特别有用。
    猜你喜欢
    • 2012-07-29
    • 2011-11-02
    • 2014-03-07
    • 1970-01-01
    • 1970-01-01
    • 2020-11-06
    • 2012-01-27
    • 2021-07-26
    相关资源
    最近更新 更多