2

我正在使用 AudioUnit / RemoteIO API 来实现流式音频的播放。其他格式,如 a-law 和 u-law 运行良好。

这是我如何设置 a-law 格式的示例:

    audioFormat.mSampleRate       = format->nSamplesPerSec;
    audioFormat.mFormatID         = kAudioFormatALaw;
    audioFormat.mFormatFlags      = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked;
    audioFormat.mFramesPerPacket  = 1;
    audioFormat.mChannelsPerFrame = format->nChannels;
    audioFormat.mBitsPerChannel   = format->wBitsPerSample;
    audioFormat.mBytesPerFrame    = (format->wBitsPerSample * format->nChannels) / 8;
    audioFormat.mBytesPerPacket   = audioFormat.mBytesPerFrame * audioFormat.mFramesPerPacket;

我尝试使用的格式是 MS ADPCM,在此处进行了描述。

据我了解,在这种情况下,我需要以某种方式计算每个数据包的帧数。我拥有的唯一附加信息是 nBlockAlign 字段,多媒体 wiki 将其描述为“IMA 编码数据块的大小”。

我对此感到茫然。

每个数据包的帧数是如何计算的?它是否涉及来自 nBlockAlign 的块大小?

我看到 kAudioFormatDVIIntelIMA 和 kAudioFormatAppleIMA4 被列为格式。iOS甚至支持这种ADPCM吗?

4

0 回答 0