使用 iOS 3d 混合器

Posted

技术标签:

【中文标题】使用 iOS 3d 混合器【英文标题】:Using iOS 3d Mixer 【发布时间】:2011-06-20 18:33:53 【问题描述】:

我有一个相当简单的 AUGraph 设置,它带有一个连接到 I/O 单元的多通道混音器。通过回调函数访问播放,一切正常。

我正在尝试切换到 3D 混音器而不是多通道混音器。所以我将参数从 kAudioUnitSubType_MultiChannelMixer 切换到 kAudioUnitSubType_AU3DMixerEmbedded 并保持所有其他设置相同。

结果是一种尖锐的呜呜声,似乎开始听起来像什么,然后变成了呜呜声。我浏览了每个 3D 混合器单元的 parameters 并将它们设置为默认值,但没有任何变化。不过,打开和关闭 k3DMixerParam_Enable 参数确实可以使播放静音和取消静音。

我可能错过了什么设置?或者知道在哪里可以找到工作 3d 混合器的示例?

【问题讨论】:

【参考方案1】:

如前所述,3d 混音器需要单声道输入。但是您还必须使用 UInt16 作为输入样本数据类型。这是一个有效的 AudiostreamBasicDescription:

AudioStreamBasicDescription streamFormat = 0;
size_t bytesPerSample = sizeof (UInt16);

streamFormat.mFormatID          = kAudioFormatLinearPCM;
streamFormat.mFormatFlags       = kAudioFormatFlagsCanonical;
streamFormat.mBytesPerPacket    = bytesPerSample;
streamFormat.mFramesPerPacket   = 1;
streamFormat.mBytesPerFrame     = bytesPerSample;
streamFormat.mChannelsPerFrame  = 1;
streamFormat.mBitsPerChannel    = 8 * bytesPerSample;
streamFormat.mSampleRate        = graphSampleRate;

// Set the input stream format of the desired 3D mixer unit audio bus
AudioUnitSetProperty (
                      mixerUnit,
                      kAudioUnitProperty_StreamFormat,
                      kAudioUnitScope_Input,
                      audioBus,
                      &streamFormat,
                      sizeof (streamFormat)
                      );

【讨论】:

虽然这在本例中是隐含的,但大端标志必须关闭。【参考方案2】:

正如所有答案已经提到的:iOS 上的 3D 混音器需要单声道输入。

在 iOS 8 / Xcode 6 上,规范格式的概念已被弃用,我发现此(且仅此)单声道流格式描述可用作 3D 混音器输入总线流格式描述:

AudioStreamBasicDescription monoStreamFormat = 0;
monoStreamFormat.mSampleRate        = sampleRate;
monoStreamFormat.mFormatID          = kAudioFormatLinearPCM;
monoStreamFormat.mFormatFlags       = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked;
monoStreamFormat.mBitsPerChannel    = 16;
monoStreamFormat.mChannelsPerFrame  = 1;
monoStreamFormat.mFramesPerPacket   = 1;
monoStreamFormat.mBytesPerPacket    = 2;
monoStreamFormat.mBytesPerFrame     = 2;

应该设置采样率,然后从AVAudioSession获取。

在连接到 3D 混音器输入的音频单元的输出上设置此格式。这可能是一个 AUConverter Unit...

但请注意,这尚未针对

【讨论】:

【参考方案3】:

3d 混音器需要单声道输入。

http://lists.apple.com/archives/coreaudio-api/2010/Sep/msg00144.html

【讨论】:

嘿,当为其输入元素设置流格式时,它给我一个错误***.com/questions/7722158/…?有什么想法吗?

以上是关于使用 iOS 3d 混合器的主要内容,如果未能解决你的问题,请参考以下文章

Unity3D动画混合

在单个 3D 图中混合曲面和散点图

探究 CSS 混合模式滤镜导致 CSS 3D 失效问题

System.Drawing.SolidBrush 使用啥混合方程?

转载D3D深度测试和Alpha混合

Unity3D Shader官方教程翻译----Shader语法:Pass的Blending(混合)