# 开发立体混响声音频解码器

> Instructions for implementing an ambisonic decoder plug-in and registering it in Project Settings.

立体混响声解码器是将立体混响声音频格式解码为特定输出格式（例如立体声或环绕声）的音频组件。此格式取决于扬声器配置（菜单：**编辑 (Edit)** > **项目设置 (Project Settings)** > **音频 (Audio)** > **默认扬声器模式 (Default Speaker Mode)**），除非平台会重载此设置。

虽然 Unity 支持立体混响声音频，但默认情况下不提供内置解码器。相反，必须选择第三方解码器或使用您自己的解码器插件。

## 设置立体混响声音频解码器插件##set-up-an-ambisonic-audio-decoder-plug-in

您可以像设置[空间音响](/engine/6000.0/manual/audio/mixer-native-audio-plugin/spatializer-sdk.md)一样设置立体混响声音频解码器。但是，`AudioPluginInterface.h` 文件中的以下参数特定于立体混响声音频解码器插件：

* [`UnityAudioEffectDefinitionFlags_IsAmbisonicDecoder`](#unityaudioeffectdefinitionflags_isambisonicdecoder) 效果定义标记

* [`UnityAudioAmbisonicData`](#unityaudioambisonicdata-struct) 数据结构

### UnityAudioEffectDefinitionFlags\_IsAmbisonicDecoder##unityaudioeffectdefinitionflags\_isambisonicdecoder

在插件扫描阶段，`UnityAudioEffectDefinitionFlags_IsAmbisonicDecoder` 标记会通知 Unity 这是立体混响声解码器效果。要使插件作为立体混响声解码器工作，需要在效果的描述位字段中设置一个标记：

``````
`````
definition.flags |= UnityAudioEffectDefinitionFlags_IsAmbisonicDecoder;
`````
``````

Unity 会在项目设置窗口（菜单：**编辑 (Edit)** > **项目设置 (Project Settings)** > **音频 (Audio)** > **立体混响声解码器插件 (Ambisonic Decoder Plugin)**）中将您的插件列为选项。

### UnityAudioAmbisonicData struct##unityaudioambisonicdata-struct

`UnityAudioAmbisonicData` 结构类似于 Unity 传递到空间音响中的 [`UnityAudioSpatializerData`](/engine/6000.0/manual/audio/mixer-native-audio-plugin/spatializer-sdk.md#SpatializerMetaData) 结构，并包含一个 `ambisonicOutChannels` 整数。

#### ambisonicOutChannels 整数##the-ambisonicoutchannels-integer

立体混响声解码器放在 Unity 音频管线中非常靠前的位置，`ambisonicOutChannels` 会告知插件 Unity 需要使用多少个输出声道。`ambisonicOutChannels` 会自动设为 `DefaultSpeakerMode` 的声道数。

例如，如果播放具有 4 个声道的一阶立体混响声音频剪辑，并且扬声器模式为立体声（只有 2 个声道）：

* 立体混响声解码器的进程回调将传入 4，以进行传入和传出声道计数。

* `ambisonicOutChannels` 字段会自动设置为 2。

* 插件会将其空间化数据输出到前 2 个声道，并将另外 2 个声道清零。

## 开发立体混响声音频解码器插件的步骤##steps-to-develop-an-ambisonic-audio-decoder-plug-in

按照以下步骤为 Unity 开发自己的立体混响声音频解码器插件：

1. 使用[原生音频插件 SDK](/engine/6000.0/manual/audio/mixer-native-audio-plugin.md) 创建自定义音频插件。

2. 在效果的描述位字段中设置一个标记：

   ```
   definition.flags |= UnityAudioEffectDefinitionFlags_IsAmbisonicDecoder;
   ```

3. 配置完插件后，请编译文件。确保在首选平台上可编译。

4. 或者，将文件转换为 .dll 文件。

5. 将插件文件移动到 Unity 项目的 Asset 文件夹中。

有关如何在 Unity 中使用立体混响声音频插件的更多信息，请参阅[立体混响声音频](/engine/6000.0/manual/audio/ambisonic.md)。

## Unity 立体混响声支持的格式##formats-that-unity-ambisonics-support

Unity 立体混响声源框架可以支持一阶立体混响声。插件接口包含用于支持双耳立体声、四声道输出的信息，但由插件自行决定支持哪些输出。

最初，立体混响声解码器插件支持一阶立体混响声源和双耳立体声输出。不支持二阶立体混响声。

框架中未提供任何特定于不同立体混响声格式的内容。如果剪辑的格式与立体混响声解码器插件的预期格式相匹配，立体混响声应该可以正常工作。Unity 的首选立体混响声格式是 B 格式（按照 ACN 组件排序并采用 SN3D 标准化）。

## 其他信息##further-information

有关如何开发插件的信息，请参阅[原生音频插件 SDK](/engine/6000.0/manual/audio/mixer-native-audio-plugin.md) 和[空间音响 SDK](/engine/6000.0/manual/audio/mixer-native-audio-plugin/spatializer-sdk.md)。还必须下载 [Audio 插件 SDK](https://github.com/Unity-Technologies/NativeAudioPlugins)。
