音视频

iOS音频AudioStreamBasicDescription

2022-07-25  本文已影响0人  四叶帅

AudioStreamBasicDescription 结构体

struct AudioStreamBasicDescription
{
    Float64             mSampleRate;
    AudioFormatID       mFormatID;
    AudioFormatFlags    mFormatFlags;
    UInt32              mBytesPerPacket;
    UInt32              mFramesPerPacket;
    UInt32              mBytesPerFrame;
    UInt32              mChannelsPerFrame;
    UInt32              mBitsPerChannel;
    UInt32              mReserved;
};
typedef struct AudioStreamBasicDescription  AudioStreamBasicDescription;

PCM时采样频率叫做sample rate。
每一次采样可以得到若干采样数据,对应多个channel。
每一个采样点得到的若干采样数据组合起来,叫做一个frame。
若干frame组合起来叫做一个packet。

AudioStreamBasicDescription 各字段的含义

mSampleRate
mFormatID:
kAudioFormatLinearPCM               = 'lpcm',
kAudioFormatMPEG4AAC                = 'aac',
kAudioFormatMPEGLayer3              = '.mp3',
mBytesPerPacket:
mFramesPerPacket:
mBytesPerFrame:
mChannelsPerFrame:
mBitsPerChannel:
mReserved:
mFormatFlags:
    //是否是浮点数, 没有设置,默认是 int 类型
    kAudioFormatFlagIsFloat                     = (1U << 0),     // 0x1
    //是否是大端, 没有设置,默认是小端
    kAudioFormatFlagIsBigEndian                 = (1U << 1),     // 0x2
    //是否是 signed int, 没有设置,默认是 unsigned int
    kAudioFormatFlagIsSignedInteger             = (1U << 2),     // 0x4
    //是否mBitsPerChannel 会占满整个通道,如果没有占满, 就会依高位对齐或低位对齐。
    //没有设置的时候,满足 ((mBitsPerSample / 8) * mChannelsPerFrame) == mBytesPerFrame 的条件,默认会设置此选项。
    kAudioFormatFlagIsPacked                    = (1U << 3),     // 0x8
    //设置如果样本位放置在通道的高位,清除为低位放置。这仅在kaudioformatflagispack是明确的情况下有效。
    kAudioFormatFlagIsAlignedHigh               = (1U << 4),     // 0x10
    //设置 是否是平面类型,是否是交错类型。
    //音频数据的layout是分交错布局和平面布局,一个双声道音频数据为例则数据有两种布局的可能
    //交错布局:LRLRLR…
    //平面布局:
    //平面1 LLLLLL…
    //平面2 RRRRRR…
    kAudioFormatFlagIsNonInterleaved            = (1U << 5),     // 0x20
    //设置为指示格式何时不可混合。注意,该标志仅在与HAL的流格式信息交互时使用。它不是用于任何其他用途的有效标志。
    kAudioFormatFlagIsNonMixable                = (1U << 6),     // 0x40
    

Demo地址整理后奉上。
有其他不明白的,可以留言,看到就会回复。
如果喜欢,请帮忙点赞。支持转载,转载请附原文链接。

上一篇 下一篇

猜你喜欢

热点阅读