# API 和示例程序

本部分高度概述了用于音频播放
和录制功能的音频特定 API 和示例程序。

![../../_images/architecture.png](data:image/png;base64,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)

## GStreamer

GStreamer 是一个开源多媒体框架。Qualcomm 提供
GStreamer 插件作为 QIMP SDK 的一部分。

### GStreamer 插件

- 用于音频解码器和编码器的 GStreamer 插件是 QIMSDK 的一部分。
下载整个 QIMSDK 以使用
[pulsesrc](https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-50/pulsesrc.html)
和
[pulsesink](https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-50/pulsesink.html)。
- [Qualcomm Intelligent Multimedia Product (QIMP) SDK 快速入门
指南](https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-51/introduction.html)
介绍了如何下载和编译 QIMP SDK。

### GStreamer 示例程序

[用于音频用例的
GStreamer](https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-50/audio-sample-applications.html)
示例程序是 QIMP SDK 的一部分。在运行示例程序之前，请确保
满足这些 [先决
步骤](https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-50/example-applications.html#installation)
。

两种运行音频用例的方法。

- 将 gst-launch-1-0 用于 [音频
播放/捕获的命令行](https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-50/audio-use-cases.html)。
- GST 程序：

    - [音频解码
示例](https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-50/gst-audio-decode-sample.html)
    - [音频编码
示例](https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-50/gst-audio-encode-example-without-flac.html)

## PulseAudio

PulseAudio 是一个通用的声音服务器，作为
应用程序和硬件设备之间的中间件运行。

PulseAudio 的源代码位于
`build-qcom-wayland/workspace/sources/pulseaudio`。

下面介绍了一些常用的 PulseAudio API。请参见
[开源 PulseAudio
文档](https://www.freedesktop.org/software/pulseaudio/doxygen/index.html)
以获取所有 API 的完整描述。

有关详细信息，请参见 [PulseAudio
API](https://www.freedesktop.org/software/pulseaudio/doxygen/simple_8h.html)
文档

### pa\_stream\_new

使用指定的名称和示例类型创建新的、
未连接的流。

pa_stream* pa_stream_new (
         pa_context * c,
         const char *name,
         const pa_sample_spec * ss,
         const pa_channel_map *map)
    Copy to clipboard

**参数**

| c | 创建流的上下文 |
| --- | --- |
| name | 流的名称 |
| ss | 示例格式 |
| map | 通道映射，或默认为 NULL |

**返回值**

[pa_stream](https://freedesktop.org/software/pulseaudio/doxygen/stream_8h.html#a960d798980692a2ff01e5a70553d4f29)\*
handle

### pa\_stream\_get\_state

返回流的当前状态。

pa_stream_state_t pa_stream_get_state(
         const pa_stream *p)
    Copy to clipboard

**参数**

| p | pa\_stream 句柄 |
| --- | --- |

**返回值**

返回
[pa_stream_state_t](https://freedesktop.org/software/pulseaudio/doxygen/def_8h.html#a750e398d2ce663b858c87d8aa2f81eaa)

### pa\_stream\_get\_device\_name

返回此流在服务器中连接到的 Sink 或 Source 的
名称。

const char* pa_stream_get_device_name(const pa_stream *s)
    Copy to clipboard

**参数**

| s | pa\_stream 句柄 |
| --- | --- |

**返回值**

设备名称

### pa\_stream\_connect\_playback

将流连接到 Sink。

int pa_stream_connect_playback (
         pa_stream * s,
         const char * dev,
         const pa_buffer_attr *attr,
         pa_stream_flags_t flags,
         const pa_cvolume *volume,
         pa_stream *sync_stream)
    Copy to clipboard

**参数**

| s | 连接到 Sink 的流 |
| --- | --- |
| dev | 要连接的 Sink 的名称，如让服务器决定，则为 NULL |
| attr | 缓冲属性，或默认为 NULL |
| flags | 其他标志，默认为 0 |
| volume | 初始音量，默认为 NULL |
| sync\_stream | 将此流与指定的流同步，如为独立流，则为 NULL |

**返回值**

成功时返回零。

### pa\_stream\_connect\_record

将流连接到 Source。

int pa_stream_connect_record(
         pa_stream *s,
         const char * dev,
         const pa_buffer_attr * attr,
         pa_stream_flags_t flags)
    Copy to clipboard

**参数**

| s | 连接到 Source 的流 |
| --- | --- |
| dev | 要连接的 Source 的名称，如让服务器决定，则为 NULL |
| attr | 缓冲区属性，默认为 NULL |
| flags | 其他标志，默认为 0 |

**返回值**

成功时返回零。

### pa\_stream\_write

将数据写入服务器（用于播放流）。

int pa_stream_write(
         pa_stream * p,
         const void * data,
         size_t nbytes,
         pa_free_cb_t free_cb,
         int64_t offset,
         pa_seek_mode_t seek)
    Copy to clipboard

**参数**

> 
> 
> | p | 要使用的流 |
> | --- | --- |
> | data | 要写入的数据 |
> | nbytes | 要写入的数据长度（以字节为单位）。必须是流的采样点规格帧大小的倍数。 |
> | free\_cb | 数据的清理例程，NULL 则为请求内部副本 |
> | offset | 用于查找的偏移量。上行流，则必须为 0。必须是流的采样点规格帧大小的倍数。 |
> | seek | 查找模式。如为上行流，则必须为 PA\_SEEK\_RELATIVE。 |

**返回值**

成功时返回零。

### pa\_stream\_set\_write\_callback

设置可以在将新数据写入流时调用的
回调函数。

void pa_stream_set_write_callback(
         pa_stream * p,
         pa_stream_request_cb_t cb,
         void *userdata)
    Copy to clipboard

**参数**

| p | 要使用的流 |
| --- | --- |
| cb | 要设置的回调函数 |
| userdata | 要发送到回调的用户数据 |

**返回值**

无

### pa\_stream\_set\_read\_callback

设置当流中有新数据可用时调用的
回调函数。

void pa_stream_set_read_callback(
         pa_stream * p,
         pa_stream_request_cb_t cb,
         void *userdata)
    Copy to clipboard

**参数**

| p | 要使用的流 |
| --- | --- |
| cb | 要设置的回调函数 |
| userdata | 要发送到回调的用户数据 |

**返回值**

无

### pa\_stream\_disconnect

断开流与 Source/Sink 的连接。

int pa_stream_disconnect(pa_stream *s)
    Copy to clipboard

**参数**

| s | pa\_stream 句柄 |
| --- | --- |

**返回值**

成功时返回零。

有关详细信息，请参见 [PulseAudio
API](https://freedesktop.org/software/pulseaudio/doxygen/stream_8h.html)
文档。

### 基于 PulseAudio 的应用程序

`PAREC` 应用程序从 PulseAudio 级别捕获音频。例
如：

ssh root@ip-addr
    #parec -v --rate=48000 --format=s16le --channels=1 --file-format=wav /opt/test.wav --device=regular2
    Copy to clipboard

支持的格式有 `s16le`、 `s24le`、 `s32le`、 `s24-32le`。采样率
可以是 `8000`、 `16000`、 `22050`、 `24000`、 `32000`、
`44100`、 `48000`、 `88200`、 `96000`、 `176400`、 `192000`、
`352800` 和 `384000`，通道数量从 `1` 到最多 `8` 个不等。

本示例从 regular 源捕获 48 kHz、16 位单声道音频，
并保存在名为 /opt/test.wav 的 wav 文件。

`paplay` 应用程序从 PulseAudio 级别播放音频。

要执行播放，可以使用以下命令将 .wav 文件
推送到设备：

scp test.wav root@[ip-addr]:/data/
    Copy to clipboard

例如：

#paplay /opt/test.wav -v
    Copy to clipboard

本示例使用所有默认配置播放音频文件
/opt/test.wav。

## PAL

PAL 提供更高级别的音频特定 API，用于访问底层
音频硬件和驱动程序，以实现功能丰富的音频用例
包括：

- 以 PCM 和压缩格式进行音频播放和录制，支持各种
预处理和后处理处理模块，包括延迟和功耗
敏感型用例
- 音频格式的硬件加速编码/解码

![../../_images/pal_sw.png](data:image/png;base64,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)

客户端可使用各种 API 连接 PAL，来控制和
配置会话及设备。PAL 执行以下操作：

- 配置混音器控件以搭建硬件编解码器设备和流
配置
- 调用 TinyALSA API 打开/启动音频会话

PAL 的资源管理器跟踪所有活动会话和设备
来支持并发。其解析和加载以下
平台相关 XML 文件的配置：

- Resource\_manager.xml– 设备到后端映射，策略制定
属性
- Card-defs.xml – 虚拟 PCM 和 Compress 节点及其
能力

PAL 的净荷构建器负责为用例图
构建元数据净荷。有关图形的更多信息，请参见 [音频用例的实现](https://docs.qualcomm.com/doc/80-70015-16SC/topic/software.html#realization-of-audio-use-cases)。

## TinyALSA

TinyALSA 是一个库，可将 ALSA 内核接口包装成客户端
可以调用的 API，并提供插件接口来模拟 ALSA
API。

![../../_images/tinyalsa_sw.png](data:image/png;base64,UklGRhAzAABXRUJQVlA4TAQzAAAvfAWxAFWPgrZtmJQ/7OmvACJCgds2SkfHN3oFBYlTUhCOpESXkxJuuahOycWoJOO6NpH9OQ5c1j6Q3S1eBtRQ3dgy7sNmoeqaG59tJnOHpSuHE7wJPBUAu9b1hoIhGIIhuFTpbJd/qfIvVapUqVKlyr8UDJeG4DLnnO17zzk3nHP2vXefrXcwGICWEZjB634BuP11YuG1Nggvt5vJBvAYOGwks8zBSzzEwxCEQpU5qHJkcPt/CYApbFXmEI9D+Qj81UbhdjvhGAKOGGIrDGLySpWPhcu3xoGAADjiuJ1AOGyH2v1fbSYD4AnDODEwCCMwgNQLgKsPA5NIkiSlf0UrYwXsPXBgw2bLNLLtKsv/yVcGHRCJTBmRKQGJDI6S+0+Ltm0prTR3HhYELbzItYlcmk+8zf5NluxmTIWgEGTS7DBuCGO2OSFc85odAs0x22xT5phttjnmNccixhugvv///9Xpc3r6dHcJNwBZpdXb7bF0zPHmRHBlDdeCErhmAWPJahBjtSVhEuAWwcShbaKgWeCWwcFf281Au0x64xf3BCYAgmYHQEvAWGQOWo6jpQAFcLzrdWkNg8uYnYGWyYBAG6VdfUCcNKZy0L6vAwy3ILTvCdDa29ViXZtjHftr7a4sWlQOdHeb9MZqAluBATRAu3KgqWUS+FJQORUBO4TGgaxrMQR+/lzrRqEVUK3tzdu8sDCwrGIRFGvvYIaGhYO7pMLAQEOFecwwUGUaKxz836Bo2xu2+boTFI5FLIKGhWYTFAwMHAwc7BEKDQsLDRU2GBioMl9hcKz/tmjbDts2Om+aLigkfUh2HmmKAEh8fjlfavrSy9zNl0L0BZi8WSFzN7P/Zv/N/pv9N/tv9t+csn0wDno/oPvsgQ8FrS+x9rMXSOeHZ//N/pv9N807wL7jhR18H9iohJHy2sFtwmelxp66HmtfFVC5VbwDEkcjPnNSMWPSuTIusJOT4dr0jgvDN6+UCmJiDjOymgLh3KTX9qLuwLFLrPsod8d6wseQwTw0ykTOpAL+WCTuiXkM68msx5oIxiSH7GAeGoyFqF6brUiglTrAe7iehvXw7gfuiIOI8LpSyiB9VQRUMuMpFaKVCYeux9BYRjRNd+CwA2TbUnwO0jMP7zoWucndAalA0WvrkdAx8rvZFVLrY8FjGpyEY8KCaY7BBDMkbOlmvmnWB70265HA0nKlUL5wXhWTK2PBPEQZRp13gCli3SfSs88uqUARCTcxXzh0ZYilVOLEGhUEpGmvrftCq1NKoXzDVncAjjZ4ZbqDsKX7zrsCmBYkb6QA0zWpgAFJ3jIcBpGbkR4JOmkPW90D2y7mBXndzsfEaoHJXXDkgOLC20EHXYbzQWC6JhUwGXkrxoUhDraCBqdvFdnDlq8HVi0zDMKxh8847U4mETcnkgmYYLQnE7mvsDqwvVvAu5mDOO7QI9KXcysWjDdZhYmZ/HhmvCoVKF8hM9bSUiYOFUo58MApGJ1mT9Ikse5DMtMp7U5SKZkR9NqMvzcUaz+GOPTw2SVSs4Vu5mBBUMH2gsIWrx0e5mS26LX1XfPSBdlhZNVcxCXSV6kILikzlu0IadlWBnB9LdolKetPRGomrmwsNojKHYsNe5U7Dm0rWCFjfR4oj5Q07Eord9gBRqckfMmjzcomA9uKyK/mdfigXZLKa/gE9GpTliC/0wo1GtVYMV+QtEyCxelC2PIm74mqIpCmSShThZVhpcHJpFETaZvYMFHIjN5Wk0YJ+kb1E9DmiyLqGynN/rvXocHtQ4BpaWj7EGBcGtw+BJiWNu9DgGFrFPsQYDIaxT4EmIzGsQ8BBqNx7EOAwWjA+xBgRhrEPgSYnAa8DwFmpEHvQ4AJacj7EGBEGsc+BBiVTVk26vfuSRhAZv/1xfDdfNHMNiv6Rp2CVK9vlDwBCUXbwAgTEHJV04ASaAoC1bImuALu9dEXUmSahBAFZ1+JBoitOaTyKvY2laUiaU2aNeAzrIM5Ie0t5qjMQF/CFwHwOVwRmcHwEI6tZQo90vn8xTRcPwtEHwwOObMwZzimMFGHz+buM0H0xobgsfmhqc9HFOEM1Ow0e7OhAb0QwRcCn8f1isHLUTVQ2oMlgakxCmei8/lRwxUx81G1oEBLIjI04Prfm1se3CFKOKZuKkBTNjYQs3R2AvujatlqwozmBqLA1IIciMiwRZibo2AOZOCiNiYjF7c7s//uvSddrdsjtXg+tpKbeBDzK2k/yLP6MOo+RLP6BaLZf7P/Zv9N44BZ66/WLLpPqFqfT9qP1/o9Mvtv9t/svwlezN0BreDrBJMZVzqcptUj5sSxCLuQsCW4wE5b0Gju+oxOvh216OehZB51h2lOXN5rPEGv7UXiY04sVl7KvP4Y42IDgnCTWW9jiVanREeEL2kwH5oHKgumO8CCcijBCKhkxsOKhLPDrpBYuR4KEPTa3HzMJrNLGECIEduEepnBgwkZ8/riYxpguGKZ1946IASlEIJwXhWTo8CJnB13oJEu7ZQInKQvsIsNMBGYyvLrtT34JSGwCF/69FIp4RK2wEURSlAGLdgdgFN2ShE5O+3otdFw7yLQMJcKFcIAAlK9Em4wSXtRp7TmUzCEP7wCoihBex+DFY3B5C6pKJwdeOBz6bAFASMNCxEGJJlhEBa+sEjAfOCc/CJbQYAFpZCCoihWmFB07AGzu6dIPIXxlIRmDuK4UPHFosUHSkXcPL16Z5uAEpRACoq1/DFLklR06hG2umN0TiiIzO0KA2kBRdgavumwNk+pyIvg2bOdAgwJpKCQ+WPj0oqCaXFsd0pLuRxb8a0Nd+7z3O7oUaheh4VskpiYJJZN0rsEXICxvugqRGYICEEJpCBYPOs+qVgJUC2LfumEFFmT6rXZVRaTsKDM6GZ+h1kfiMzdHQhDeKMxrx1+HvkxJYh4WC7iEiUILn10SlqxAlzVND1Qgg4Fz3pp1MomUbljk6zcATX0lRJds0CusH7G+nyrixM3JYiA0SkJQQufXYmifULRNoMxwmTRlOVk1pOuXt+MUvJ0IWx5kzd6qfpGTVOFlVsbnEzeuP3qG2mykBm9rZy7KKWU45uVTcO8toW/NfR1Yp8qddd0oOx9ztgQkd040x3UEFF3MLdKZnRz8VajE8QFroBKums6vPY+Z+yIyG4ZL+fs6bW7W3BJg0pTdGbcirprOhpsPWdku4okUTDm7Ik5wT9gErDZXdORYes5I91Vc/HsXEtkh+chPidUb0i9tvclDeYrZa/NViRTo7sm1dtyzkhFpBBbHu0J4L04ZDCvb4FKlH2lKtl54cca1ldKrA7w2SvnRglb1CkaguwNCTQYdNdjGuyGb1swzfz4FOmuSfG2nDMyERvgLU/sCRUzN/NN1mZt8Q6xoyrYeWFLW4JmfQDVAT53SjVXSqe0Ad3Dksg4uHuQqdNdk8ptPWdkIhR4TrjliT2Bd2LMHmo2xP7OE4JQDe08C9DO3lwuVG9IVItDgqnTXZPKbT1npCLS2S6B9vNk/VLpPt4FQNX+zoPCuDF/wGvb4J853ALuDUnOVOmuSe22njNSERsFALEnbGF75xGt90cE+iK7c7CTHM23CKjekGRMne6aVG7rOSMRsQ3VL5UtbO88W7A3oi/dn5NdkKQAQ8bU6a5J5baeM7RIBYg9Yb9ge+fZKwzEL1FzsZU75JP0LkmZMt01Kd3Wc4YWqZzM2ML+ziMnIRD+c6vVmnNQrZmA6g2JpNfWd81Ple6a1G7LOUOL2IfaE7awv/OoBVGA4+1caoM+zNzcUhRUb0gk6hbD7lTprknttpwzpEgF0HvCBvZ3HlW5gyZs6b7DtynLm/xnZl5u4WMLNF0xGx2wLYcji4dzUzI5BKbzo7UrcjiqsFCLJDA1eBY6t1wxsIcjiXAGOj9tuCIyByMDZKLzm1se3CGGY2kgE9G55cHdexG9mdHhTJ0dzExHEvTY4XqH6MXQGNyor6A5WLzQ8ZTM0Bjc7Adz42rBI6yDPh9Zt+Vzc3blhEbH94spZxbmDHRsBT3n0Lg1swMRBaDjLChENCWCnA5GMo7y0ZcORVgmOVhu5XAoNysjky62HgzO3nh6IzEfmAeDDaNarm2Fw1JNOTe1ASsH56PUCCNSD0/N9xw8sfGVDk5SHdPzywH6I+BtYrPkw0PsiFbxc3R4YmVaE+UALWyXEfX7A2ThiQ3S4cmIOD5A3Oy/2X+z/wxEMYNY25LZ6L5N0Atn2CQzLhjjgumXlU2w35waPCzP803DyaThMyeVcIFrC0nDXuQw4SD4cJQPOHFmALPVSrs7mCwibTz71FwBo1uG3eqYi7BPk/ECSrJ94JgAp/lJgHrR96nC4vEGA4YRU+0d9bJCPruODvDryaqoO0BkDeb1eSUZPoJY92FGoyzpYSnwOaHe6qfqiEVceNANxSNG7F+ED4+rJbGn0JAe2Bl9gwqGoYByQ7Jz7US6L8fn9cWFi5zQw0cQtuCrvtEQ7woHId9nrdrYgCh2sD/gLd4hL72j31CT2FPbcEgP7Iy+QQXDUEC5Qdk5dsJz3ClloJNpISPOKpGGmEJY0eBhKcAgD5/dKsMLXq8oy2WocXh9cMVShoTcU2L32Bl9g0qGoYB0a+n+nHhBPqqUyga8rZQ6epwcPgIhBCalQYkvMxDwFoIoH1YViLJyxQGnca9CHAafrXCpPaUEePvTu03Zfh9kyi1sdco5dR6GXk5eDvzN+3JJDJEAzudgPhJhQEK9vXuVyQWun8s733kdcBr3CmIahKN5vmBcak9BbIy+QSXDUIDd5uBJgIItlFpZaLAmB61A+YwTmARP1SI1wUtjCDg3lFEy41J7SgK12yoZhgLKzTnA0RLceNw5cN/bHpXiLudWLBhPUuiUtVgoGcYRX/rms4uh9lRpo4DcvIoKMOboIbJ0rw0h3wlbMmgF2BBbEpPEtTZJTW1fyDDTMoAO/mLONy65p2gU3m0VDUMB4TZ3D7wD6w7D5IJGUHHbFTVEAj67hC22rN0F5QXOzcAg075PvQ+Gl5KHdxZHlOcxvafgkB4gqN1WyTAUUG5z+KhzhvVIGPoYV0XYpoZIgLiAAc4tKUu1slmLlTsgIq0QQRhmiNZIer8a2sh86HKp6D11i8FDpkHttoqGoYBym5vl8ORClJcVwnIpw8zFAa3YhUlBcQRBNhBhDDTUsAUiXpyxSCxRyTTc+EoQ0VxEzsPAW1Ojmsgkc7BtR7hUCyYjQj/0LWiA4bvhztl/s/8+bCj3pDkErcP5qjGU8cjLARJxWsPu8KhpVIeXfHBIpGkNlXBwHg0WaDzx7uDUUzZMbdAmPCQw2XGVoivhoMiWaWpDUOOtHIzEW4XR1ZOXcjBiL4vQ9IaIMByM4DgffocjRDRhGfYcyJyZM516mWihF1hHkpi3wGdqncdZzB4NW5mh44RK3iF6Nmph41Sitt0hZjETDbYy9hk7O8IejERLJhruIGpBZjpFs7C+dhjWwJXQGiUEOkVBxEnFGE+aHLfwyXpbExCSyMOXT9L/dgtMQgjcxZaBZmlx5fRMvDGRnnZImj9I7Z5wekaIpiNapmf23+y/2X+z/0weLh0LcS3ppE7VfkiOhvh2U5ZyUge0H9L6PUSz/2b/zf6bymHS+m1KpKD9GvRJWr9NiWz4NmU5+2/23yynmBNA2OoO7JMZtwr02mg9Yt2vHr5OnJr4zEn1ucCOTSJtPEwlKzIJa+rQpNf2ou7AacmXNJgPzQuLzoIRIisvZV5/jHGt1A1sSpCQbQmGm8x6m8DyzIwLWRTuWyCXN5jX53tttiLBzmgdBCtQHov5YpuEH2tYXynBcUQYXikda8S8vviYBicWzGtvHYj023zMJrML8m9mxKyWgj1BffkxQwa7AHh4gIcIS5Gbi5vgwOBbtgsXefttC6aZH8fOxDoQ8iEUA4Qt3cw3zTrYBvouS9B1loGjOwhf+nR4ZitSbZ86JFxg15IBjq5SkT3ByFoSUCIuV4DlAFwlpvWQVq/dKcHJOHIm1oGQ131QwIeXBBi44pDQh9qOMh6Wi3hMAyfsXhueLaML0DCFg1Tf8iKh5CmpIMzZKEsrpcC0UBfPCvwi3lZKHT2uIMCZXAcknx0mITeAmBdeE3eqFdSFi2wFmcs7JcIXF48TOJ+yIZgZBkGsRKeE86FJwBTw+sblUtGQ65AZfDihQAcCFTnhiLh5evVO2Yk0RHzui8QrPlBYkKSZgziObi7GxwD4B5GrVxYarBMaYh2cf2TGkxeIP8LW13yWp1Qk/lJZgnYKZET6cm7FgvEkhaOl+MD6mESsg6xwND9uq+CYIzMQyipmF8yTKOXri65SckH8HV3vklIog+M7N4hJXEVlbQp6HZB8bHsSxxthi9cOP4+ZgFgQSPTdgUK3OtgRzIxu5neY9YGCKZpaqZh5jVrQA8R9cML+rnlwRZpeB+o+OSgmW5DzDVBDY33eSv8YtbIJK3coSc61LaivUCfaxKl3rH8YV+6A1TjEAm8x7IKLKfQ6CHnghcQ2rdxhmFF67jGNjVyh40z2ZfMWcO44h5OZ0awFPmw4b785oaFoHOft972YxajtCX5Dx2cDd3BrFMweDJ0166b3qTjAOsEjkXmLSDJn5kBk7qgL4h5/iK7jI6CSGQ93RE/0TH8w+q8z16IF4rxoX0TX8ZnxoBDRsC/qmf4gRI5LClogXK0DvYvuhh50som7tIAdJuv+Qak1noKkD8IFtO9g1FJ6DCZ3QUf0VBduB6P70yKQTkhKGhfddTwoxrpPdER/0KIm0grgBvoW3XW8KP5Yq1OSHdEfpCiZ9EJs0LforuOFzB8bl+6I/iBFRM3Asf6VGUGvzbpPdkTvZOVhuYhLZNfxSkXcKemO6B2swOiUZNfxymdX0hG985TtU8ELXDhnCVuecuyycmuDE+cumdHbyunKrrnJf14PWcwg1rbkrzbOiTOWh+V5vmk4IV5t3CELndxX0Jl2pI3nsAXXPSdebdyJCyfEq407cIl0n3q1cact4TnulNSrjTtfsdP0M/lq405aHoZfr5l4gcVO6bAtKOmrjTtpsfVq4w5bbLzauMMW+auNUx1gO2Gx82rj1N0XDt+mLG/yn9l/s/9m/83+O/aUoBmUMK2pSTO4gNamP492vtK0hvwCOuE8P1iY2hBH54MWSE7WAU1uCNkVPZAkRHqVFoxkzsOpXIxLzAKA7NHEFTzCOojMYNpCL0TnRwAvXa8oPpu1JBOdz08bHtwhBm/UYtgEk1nbwzlTyxWDz2DajoLcGowhm7g3FASa2ND9fnFLNngBCs7+m/03+2/23+y/2X+z/2b/OW3hRe0JppckoPIwA5helB7vBY0vqPSOUmHgtMrG431aJQec8oHKH+uMSoQhuXK7xLKsbTzSvZRSaUxU9QGNU+iXW1eFDgC4VdaTE3wtt+g8GqS4xMpIRNBZv2/xqABoT5Swuy1Zy8jt/QKeEIh1YT0QEXE/87b5f+GloMbZI3Y/HYAYGre799mKyFa7kK5jweDTTMwg1rYAK5tGONR7+IUAe3pCjVmrAObOoyASz3KSeVie55uGE4vM6ObirUYndR7pkvsqFH8JqHWO/41PMqPNUivGJXc8s4N1oHrt7pYK0n2E5VDn4YrlHjrgo7N6ReBN8mlmtNWiSNP0+tJ3UPa4Wg6JSgvLgXd7rfcAdrfFy17vQio3J2SzaJbe0H3Mx0KnGfQD7t4tjbqDVEhkO+HuqWmdV/CAyNVeiksh7DzxOS3lYmtufU6iW0bx0jraeZ+JTjmR3uNyI6PV3e8UKZBKi/qOuliP6wROxV4upblqXd68Yl1zmhIHIgKpsdqgX240cwAQ9kCnnPAcd/YlT2h1zhRIOK3vWCC7W6m5tVYHtSv5djqeBKQ1k8U7GytSzEL6JZgbD9aTDYxOWZDUfbNVRMyp3G6lppy71mLeEFxFmKtbTd/iAxEs6x49k1PODU3ffiLPjwdpsY/R6t7YqROpKTqBRq+vpVwuttV8WqpdKe1+H4CIIC/RlzBOudwuasit5L4ehMoot7jI/kvsdeLVUhl5rfB4tF8NRqoixNF8q84jQfAxLj509YaQNiaEdj8g13KzDFRYxvjYdEUZr/MxlwX6KLeyBFDGem7W73k6Xy1e0fPlU5+Zrow8k/ZsyqsafKxL0zSFDrvdADEndR+AKOsrxpIavVv8EhuRzLWW26XUjESAdpTVr/NqeTwtPShZKcv5steaE7/1mb9/yP8rJR/zv+/io/1qMHrtX9gTEogldfd10qDegwgQETCkRu+trFJTR1wprclJKWBzdEQaZU8upJb00KScd4r5q5vFPXrLu//qI85QS37zW/G4pzLznztDc1GtOS1UvUerDmj3wsZBfj0dzYkD6Gh1be3AXxLxovRLItrnhbxS/tXzH/EOpeT5v/qtdORTKzs1mbm5lRbp9EbY6pTwB3QHdCNGMYvQV8raoV2r75jWRI6WFcWQuHc3UAxf97jovGvlw79PIVl5ZtprG8d4U5YpBlmkaVGkavoEN2LECWrc6MXfzZ2ytuiu/7tCnRm3qJqHGO7fRTkLhNuf9PJU9Xj3W45xQSpzTdM0UNMoYUv3Uf7HX3BGnNQCu8cAsEvdPp3SawMH8XcY30ELmAEGJnbQomJen5fwJaZTOmdRt4g5TwNw8xrKQYsKv6TBvL5FdOXkrP0DGJxjajafXUct0tl6bW92kLd1RkhU6EcYSK0psxkOISkwMgh0shc/Ap9e++zONvK25ztzVnxemd9ZbHBWZn2WMpvZ4Bb1KWkT8Eh9JWYXL6nXhgeASPeJBVWxgB6GID0/VX4Tyvl4BV52LFsPbTtWwp2xJCxL+35AShgAO2xN+wDtmQ1MoLqkBBtYZ6G/C15/AKq/7BvdXFxosIcmeczzuDuoFo2S6F+6dOLEVGm9ofjeEEdK5cNWOJr4UV/AY7+QT/0yZeix6DYXV8zABitUjcVF2Il1BVp2q4M/dl3UkRHzjZGx7uVzdCqWpk2/Xf1+4A2193S97vDYOGIZ7O2TOsDfdfaw7IDN6F73Mil1gP89R9n12DaOkGYzG4BUl5VzJ34OLKG/QQsXmQ9dLon8dGi7Jhr0wYg19e/E+fQNwZSgJozYG585QTRFKxwwP/pU6xwZVhiLPouO3lzwvzwXnxdUkVxwtzbexKLze3ddtgOvgHyOrx9T81mMrqbUfXbZJgEoWAGFkNlsE1EwVRpoqoZ3iBH7VhxL06nRPCPYgN71JtLGQ7hwSZ4Cj/oCTmUlDXX0Q252DzOOL7VLn0Un2VyATokOClWjNUd3WnwqisW99Lz//e9/3a7qPiOTW0va2NjjRd2+QVx4PkvNh/L7qBUSdCD4xl3Tdq2txJk2MptlwiW8Q+uVIltB9M/Rt2OraXrq2Kmp0NdDY7ZJD9A3oVF3QAIa5oipr0zJhjr6YbPzu4uhcIdei47eXBb6eboPiLrDtKrhHd5hSTtMmcU7TLU1ys6/eI84Vd7YOCK78HyEmg9cy1Ag2VMgg42Nhwptyuzs7BEh4vXBFd3FlvHGxg2TcSmC1yta6dfVtwv3U8fe8PYaj3jz6/uXbU9i3c+MSxK2LCKULtVqSS63F/wcyMsepg8lQluvRUdvLsF7jYcPCtUCmwtE3XqBuCyNybKyjxt6/vmmIyCff+MX/Lnac5bRtd5f3efR4ligzmxsjCyrUv8Fjgsj02ppSEDLEyftG0ew2awShfG6CmJWRxDx2qiw+7VUAPna35wBm3Ot5L3DKV7cok2RGU9ybQM01FE9IAqiDTu/YfCIqbb1WnSy41PMiZXroUDVcKm1QOz46ORlHyt3vK3tLAbGGXEO/V/odFwYXXdoD1H/JeNFSqk9R70Nnphjs1klbnB95yrXK6gj1+t1XRBgXZ/Ovz342imyNVtllEsvMuOCU1aClQYnkuyJG+qoEjXhHQZb0i6pMeHdHUZs6bHotuJzAg8KVeOGrQVi10dnrP149LX3KGtaoAGmE/n/CzceKpYnmeSflBX3GZ1u1t/TZmdni6gFXlJVwJU+7YbzU2xzAt56AJIlSJvEglhvKwAScamGOvogtvF5AHLdJUka08ZLS49Ft6m4AOI6OVCqFqXAvh6dSy++8QvgtMAHJHN4YeNFSp2hAMa7+s+eKMqKb3wGaTaLxKp2VFfY9mnpVDDVwvYBXybolGhBC+wqzFFLw7hkQx09cB6vjc8Ldktr0qI09Vl09OaCgANCpPthq0pYt7cvy5d+ib8DTv/8EEtDzPdfFKIo4j17c1KWFGU2q/RH2xeijnQtzn16+8mpsjnbdw5uffAZRYIK4oY28huzDFK92aJA8zXpbmlNmvNNfRYdubkQQkBUbK8aZecFoqXPDjHfnwmBFykY4rIzQnwvOPK+fOptG0csEUuHNjtydvbo43MzoIy0y6HvwbthimzOjjsXSh8ifTm3YsF4+GOfPfilHwYoQJU+7PfNzdLUe9FJEMv7VU6qh9t1geiYqFh7BWZWsIzjCxFWoKp0cC7SbBaJkmmNSIIqItQsCOn7aqkCW1OdqvHAViE57kGvTTZF5zO+TYxYrPKNSzbUMRK9Fh21uRCoXkcVcdxeIHZ7dIaS+iUuX+DybdeuXdv1uIssL7jtmoiNh4o5r73n/uozrrMmMTtydkbKyiZoWUBWX1/StkDMODpljdxfbOH85jPUW1TG94vtxQGtlNCvkyeEe/qMe729xuMWMzWeoGi/6LNokCDJBYH5+MmLL34e6z7ZUEc/PY/2Fqi+qdeiozcXotdmV1URjOsFgtK2C0S8VFiz0rMjVloHZXCmjapxWIgAF5j/TME4IzGboeIbfvJh8X8bSX19yZu9rIBfL5t5nl+qmZp1nr4MKglUsmadt0CU+1+zrlAqXVpVNR9YmF4kG/YO50K6IVCql//wYw1oqYNuqKOXUeD8xTzd/fOe89PVtEF7lH6LTrK5Yk7gLxDVhFKlF2mpsHVVkBYg8o76hub9c1j5A2qQWPOIBn32cr1NZjYjBb/Ay7iE6ZS4vv7OxQOqvn6wj98Hiv//pJbYDc3SNE3ToFbalEDyTjVtSlSCiA0b24tHmeVKCRIkeBohbHBoW9qmhFLPmBptSkSkvBBFJLUEI8bGS1LwS9khNdB62tipqSlLiEi7rRlYE0HElp1/OlqjlFZpthC3FCOvs0hQXvN5Y0NmNhP9GJ2npEVRfDLfiaqE7qzPX3iVDaGi2COxw7i+WSGiVvCOSlAMjJQqbZAZ3ReELT2/CvtjjjqnV7+kofvQYPVjOZG0prYbrgZTpTU1DxGVhFKlM0msHHZIKm71AxHVhPKy49O2WKqeWnb+2dAOO9WMz5GNfwG3rEm8hIVU74jMbCa6IPiLYVqkSo1r/N3OxQSx7j/3794XWERY6Gm7QwKQAX+iAJPUCGRrBMVolMQm8XrDTXFtguC55k7B/iRN9zGG6tEpscHLJKRLJ54xRbaaXRKpCUQksLKP/QqsnhRl5wUCbLWwL/+1YQtERAOW4u9hZQ2JlyUn0QMuMrOZKL12Z19SBELggXfb/Qz8Df8JHwENuk8tYFIp0loEkpBqYELa4JfbbvwLNzqpClueCorif4cq1zdJLc4Uabq7BP8YMLDYudQioHvQKKbM9XNmUhTKC+2jQZ8biQVVb0FDEtAe7FQ/A+4zYl4V7Zkq+4JCWYStoeE3JuBGzbSI9XOUCqmXy0hrBtXumip9k+5nf/ezhfgp8LgXFKlAHCCvd4MGFzgpinqj77jC+2jK0krJh3urycSF49kCXpJiAvGbfVFk5n2phRBCMU3z9k65n7xbPV9WBBYp3OQEbbe4nWFTBmndAe7lsATCJR3sTdZTF45nGei1LcJW58OLNGwNDXuJKHzX9E7jhXZ6Q+ndfU5KoRRJZzw5uXrBuEU6q/K8ENSF41kCwtYvfBcgMy8rAp9RfFqgIsTRfGvapaNfFRMS5mMKkeJTOenO8gRXna8v8QufPkvzsCazA6BXllX46dojffkZz8jzBfOPKSmUTNO8/U0gvOJ/W54gfOnIqhifE8Tf/sKrAkcHvfYvjIeAnN45U/Tanf1BYcUTvvwXXiWE9qTAOh7vDqZl/vH/vnP15MmrN2jXzyliPe6SCpEEAm5FKW4H6T/qPrWYTWNGW625KHx20yK14m/FFNn//ecbG0f2InKQveN9vx8Uafpc85nFfkZLvwVU7kitSX7rpKjcEcCPf/ZNXwUCRgc1IblTTrZifTxFvD3noEgVOM3+lPsioTf+BwgeYt/9Xd/Y/AJF1HlJGu6sCZ9Eokgj9HgjaRGxUPhRQtODSosiHZVu/nO3K1AIsEsAhdbDW5NyOHUsGymxvdMiDdKiABZpShqgIBkeVJAWxR7JuxmjTQQpoRIgIUFqwUMLUnIXpGmRptAiTdOAMEAg44NS8ARSVRyH035zVBz/Gx7Q43/zz7ao6PjfTr0taKTFzAvHipGXHmaVYjilH/nms7nT6bf5opkXvKiz0tx6JlfFLOh7/fToh374r55XSz7kH/+P0xsqWS2XpYdFy6rlwnmifV58zDyqOdp5TxMcsFWUQartY4ahTaIMobg9T+ar5G89k/ZuZeQ9//StH1c0xSFK9qKK2J4qEqhxCCenpCyDKPz9v3kB/5dvUUZeIxLSJEDVCZlZ3WUGnmGVkAKpOJKZeSAFNtkCZgSAnFDNsofmye/F7FHF51MOVhEfpnvZY+uUybAHBb9i9Ujn9ungQ2ZQK2aCRwBXxJBwmiceiTpqTc/KLbXQfSIkPxPEpNi3CnQ+rzWerzxM8ELeVGuKV+27Bdl4ClCTkovs2nq+muAxbq41FfyHMug4+b2ZMyiUFyLqgChTPArsqbPWZFDxNencgDmr9vmKPbRckX2gk04syktUp3poR8HuWlPN5RagidX8fNWALEQnHQw5KC+gShhDX0IERX9JTKSj1lR0cktW8/NVC514iAAVGFIjCtZJL3fDWSRFI25/QVfZa6Y0i02Ckud4+4ZOMuqNKhGkGFPe62yFXKNlIlA8weOd4JSAAEMqF7uk1WIyvihLS7wtCYkAkYxQRICIgdMzjt3rXnD0Jk/JYvX8+fP524VV65kBEBHIFEVE0HHiaM9bvF0acCQn2xPYGmKSIiIKAsmg0dJCAXDqHNc41V3H27mHhTwKGJoGkHt0yTmIuuONLyHVmhQe+RQML0SCSo8YX1DxMaUcsZHleEhqKYui41VebKlhnEXmdR8ird8hmv03+2/23z2xBKOvTYnprzW12X+z/2b/Te9iTgS9dndrkoh1H7GyaZjXtpyghC3dV5NNZnRz8VbDiQOUiBM1qVCHibDVHTg+idlVk06v3SnR5RKnJxfYgxLhJrPeVipsdRZM98C2t70vaTBfKQkj/Id0ubH+4SGDeX1LIEwPzYNr0VCVkJ69QDQ/nzslOovWlx/z3exaMK+99bVt1nc9psEuZUR+HPP6POHOzfducncAbBYt1QSr0tKzDUBuH/mm3neXwfk4Agk96g7gheReG87XKSkjcrZbxJynqal8cbR46dNLoeoRK6H7lHRdCiv8qGkZzk0etD72PkskcpirQfJOwlanhJeT4XUNyohEhV/SABc5hAt19RkZINXscJ+SrkcJ0uKVS7xQ+yRrpKzzdUqUrjPDIOyAjQiID85xdyAgrj5fuMhWdMrMeAoGlq5LCUznJklqXUqFpfs8P4hnfS9RymcP0MxBHJdDGRGQ3jQRN0+vTjDaNJR0vQlwDl2nKQKZs1JHoxc3nOESr/2/X0wUlFK2C0opAp9d/AMQPZjqZYWj+XFKut6EQeHndgd8Jjq3eu4wJNH58Hd6EUzel2xAGFH02t2BhTAiJ4FkBn03CDQJ6boT9LDh7MjkrNhCE2pdDX0m0vsU+AmZ0c38DrM+kEMZUQXf6ObiQoM9ZWFZgQWFLV47/DzxMXVjGyFdf84GzF0nZSokUe/n5AgAgJmBtD8Vs4vqY1wplRzCyEaDPodghY9FcL8FqsexPo9UoRYlXYeQy633s3/IAPD5AKK7XRScuKS0xEv/Ja/3m7IE9Ou0as2uBBjA9xUYIXiGw109hWUBM0Oqw/ncgA57vDMyYAQ6ElOyicFXOhaxMzE2X+T4aCTWxFDC0Qjj7L/Zf7P/7omO6JFK8uCblENzS/JEnI5UfObExoNvZoaffPh5rBNSSCdOVCJtPPmDb/bawGGl3R3Ah0dGZ+bOU3ptL+oOyEceijmhn0yA7mcwcZ4S635mXOmDb0bEEwp41GO+ZYfnnaaAnrJFb9nowTcpGdKqO3CszgamiHWfevBNGd2BkDhI8QrSnnNi6XxtRTZAoGmtIv3gmwdL5IP4YPacIXjSX9VWfADBAAEyOkjy9INv1keFD8QE4bONB4iNObE7ydF8y2lKpC/nViwYj76trYIFOUkh7imGDyJLP/hm2LJbucNZCjizxmfT1INvEtWaDVWtOQfVmp2j4BNt6tQbP/imvQZ9GEo4wv5Qd27yn9l/s/9m/71elGz0SulolBcTQy5Ho5SmYKfbLzCCkQHjcfjrYAMZGQhLdOnYi7NWyNBAJHz08UI0DTvZMvtv9t+9jyQ5GuJbspzQydqPpCMiLS6d0sm6D5HW7yGa/Tf7b/bfZE60fpsS+k9wOr9NCRfI5G3K0s/+m/03+2+KF3NCGIBY27KgBw7LZ9cZy8PyPN80SMRnThyxyAxWiKF0M57zFjx8sL22F3UHTlw4gbNmxnXgEuk+HirYTum0JTzHItWDKWLdd9ICQvyDprWKTtsF5ceVgmU43/RJMIEG4/AZxc8dPBjWXroim0QifTlf5Vv+7xsPHk/nFjSH9NqdEg/n7kEDIcH5acMVE6OOkT8jEFx9w+wND8tFXCIh8vx6Wg6ZzEDU8uAOMXsNo/gg4A+B9/8/89KsC1t8twKCT7SpU+8DhoFePHd4L6KOoXYBi/hgCOZimrJkXnXOrR7MCXWM4v2CpbmZdoTBZ2pdTVLQNKO8Bvx7rqYRd/ECAIA+E53SBnexNHfTgwZJzswZiLTNDb3G+vcsDEdHNI7i/Utqth5J5cSO8yOUnn97pXEdHHv7pETN+lmyKZzYYWdxbK4u5RMfrNZEpOJAM0sO6PROsDAuV3d/kAY1E37Ry8QCneJhNyrpUrr/h3v8fdRMgOMRVzO8StZMqqfTPDcYk5MnguV7/F9qJR5CsEQESx32S2VXN8+VHD+Gx9/7J6t87+M33JJGYsOJruQxecZVixr63wWIljTsU4brF7fpOUX+5L6TjvcP9fKEtZGIJzrHY/L21doiIuWCqQ7Zwmile+j3bpxJ8oI3+IANKBaH/NcXxFw63V+4GQRuxn2vwcc7vEOOPgw0KQa8w5K7PHncSiztKbgvxh6JeH1wRXFloKmI1ytKhA6P25bUMQkZTT0u4XUVHG6a98r5Dt/bdittb0Ay9USB6wgCuWzTcb5jEhiNPfDVMIbgDXbqPEEw9NwsjCQ33KJTqgE4+AaPxhCQSNt0bNufABhblmHgnC5VmgRKgPPTp0/PMNS07hS7Di9E30yQ1gTEC6IJAmXYULazHMDA6V2qtFw5XOi8CgWfBhmWxr2CznXr8P4lY2dCfAGnmcErm4Z5bQu/tIfMgbuDaRexMQwZ3CLbYTkY13GzYR5Cx1PtpPflYFzD/ESwXHnljiXTmaDYgZ7YBBcdnM/k64a59OS+9YLX6xV9+ZMnJYhMMTKjm4u3Gk7ol/Ygn7WlnHYpzMuQ8YIxRUgSu/790WCnYvRos2C5WmAEoiG36OMdEcZN9TWmeP9lIN7h996PNcj63/QibOk+eowW6qU9oMM0XcgFJcKAOY/+hJTlYD/xwF94ShCIJb07wK0DoyvQEKnLw4dbNOhTE+VBN+ZuhdwWVQrKYytY3sqyChJNKORP7RZzQr03gu5P30AMiLXCYGWLd3iskPO3bC13Gf4A8rIzUIBIXeDhZhCx+iGrSex2k/O9zj8p7fEnmQ5xNZmCk+kb7/DuDmssvSTaPUxZkZXVY3JuF2fa4srG00ZDguDVX21Y7wx/c7C8HHzPtzIPDR0lLYJX38ysHwVckMFGlGPEIcMYZcuG7126vx5jqqFiXp+389IeBxvGZusJkgeagLi+V8+4SrMcvPojAB+zHASBJaF//8TN5nXvFpc/+Pf/7Gbmn7AM9A2hfzakWAKUwcONCAdenSLSDoCmG+oWMedp+Ut7vKN9zQMrVWg2nzDUtO7UqWNyhoa/GWjgqYJgtHT+iQAp/IfF7XrcNQjEiTk0aFzv4QajzfL48WXaocIvaTCvb9Ev7dFxtd/79wOrZHhpDAnekNoGOcCTcHAiDib5wAN3Lh6AI8GdwuDh+nMRZSACmXjAs+zugH5pj0PdAzcYSZ5xtYICyOrw8vMHHjg0/M2QtxiGcedbDNBqjKwMiNMOG1/uHXB0Q/hCxpDg2Cm7k4wrJ54i4WXBMuL3T4AYRytg5Jlu+OziH1AX4HgULeME6RsqWRBZEAqSAj4hXz87/Ao8nIL1iNcg79cF5AUarScMN817dTKvpHKHnUn+lpjkA6NIgAz++H3fPA1TvtHNxYUGe6ougEqm85lwiZdB5lYCrS2l9qo1nxDVmu0uCHrdQFoy9IJUZLJp0OfQtqoTEEtnksg4zDXrIFumM+Un7TXow8y//5RgeVlSueNmXLnje25mIANdvma9coeSmB9NWVZPYIWGulpz4y7hUlBJU5Y2FYJlQoaq1mymQYtiacAN+qREy2oljbjbVVgmZKgGfRSjgimC/FLrkInlUhuPKaUWeHkZYoyg5GDQW9BIC9QsgqNsU4KIwv30RIDI6NtBP2JrYcgkRtn6Wex+oCcBDT8QxQ28HeFsYaPlT9a5INETNv3UhLwMelEM6PxGTyozvyHQ2fwjFu+w+AFfOtyw56txff23BgB4EuAMxp+FV2SJZaC5Vby7697p68yN8eGLWHtk/OHS2DQHSh5opLldEdt5FUB80uqA8cfmcWz5wzvqzspLay8Zf244ii1/dO4jWi2llFXPde3awZTdO8rUhOsr4RVNv04cx4Y/fgRuXTU2ADyJ1tq3Zv1ETnTLuHxcjf0RZRxb/siFupOKjTHez6iZLPlEZ2VM8vM1xMPvwVv149jyR91cqaCI8P2qmXh3msMbjcnq22sJ4AUt0vlM4uJlkLGuea8sbDm/XrB6CVg5yZU8BHvurZ337caI5CudiS0PdIERH4XOu7wRtY+1EpLIJ/h/l0Tjkh47H9RKfHzZ3No0h4UBz5UIu+18JYtWQuAu5cROvGUaGRXk9zpWI1WOrTQ/PyFfh/3nlx3fhoJeQkThxA4SDcI4H9rNSnT4RzvPS63G04k1GvubxIEv8q6S+eSwZfbf7L/ZfzOBkmj8JP0Hk9YPHkuMlcz+m/03+2/23+y/2X+z/wwbX2A1d7PyxdcXmczd/DcB)

TinyALSA 插件源代码可以在以下位置找到：
`build-qcom-wayland/workspace/sources/tinyalsa`。

下图显示了 TinyALSA 插件架构。

![../../_images/tinyalsa_plugin_architecture.png](data:image/png;base64,UklGRvYkAABXRUJQVlA4TOokAAAvTAXSAFWP4rZtHHP/sa/Xd0RMQE42uigXhglmJonMiBzJDMzZnQYtTPpDqNCAOWaEfK36Hl+ouoUyH2s1AmhJkhy6cKCgoODChYIDFwoOHDhw4MCBCwcOXLiwY5HgQsGFgoJC912ZVZNV/er9ny//9NPhwcnKk2IyowxRRJsgDz4pO3qYfNijrBD8SC68kBsVkZ6kJ+tJmaFE44IsSCPEy4D1IdcOHSkkI642asaSliWly46K74VQejJ+6ChdNgi2D4JXepJWtCWpy4497ehg1DaSJMMY/ghn77y2GbWR5MiX+3n5mj+Kg9d/WozbWJKk0GI81ZgaVF/6ch7oyerqT6wRgM1yJEnmyASZIDMapimCZUKZ0FBmFCwzBjbr2Pd/3/c/ZVUoq99kRHnQCg1ptCYsaw9ynRhWUKyhoh3omSk0EUJ7fXSvMkDw2TBQFqwDirk8qPgibZhBUowDzcX2UkS5sGjYY8MK73ihHyQoD4pqL6E9iyXqiIcGyoN1Ickcot8cFYubNSoLck+RN8MFhXIPRaP1oRzY04Vdvkgkydv7aAOa7+XGs6ErorH2RIoZAyYtaQeeC3sqQstvWlFR8RxIExJPNFobiru0tj1sPiwGh7F++GPuYMHgcNhLKg6Hwcx+DBa/2X8JwSJMbXsDWT8Wi4u1+THYO9hgcHFxLmnx4GKw5w6Cg1kbDA4O9p8WbNt122YjRYYMHxu61CUEkbSnnx/lw4YPD3M03/D+fZik6fHmaNh/7D/2H/uP/cf+Y/+x/9h/7L8D9DzGNRLevIOYYeaS3ezxdmKH9/xjkptY4j0zJLdh/7H/2H/sP+q3CYvZgZGo8mRzEZZNM3/Tm+8zzVdLsrn4CPKhlkMFQ4A8JHtEWHx5pMVDH1tcfDj7w334OaRAeq+OZNPL3UOYD2u89nDOwci0zPDymzYz9MBxYtxhc3Gs+hDejwwsblZJ8gf5qcHFxcVTXIOHu3oVMc4AhxpQqZ5kEwwqbHpbGmkY6/QquNTLY8yBjEyeCi56Ev+4LPKQ+IjW0BsiMtZ1cbMqkkewvt7kZ9P7JXio/eU/dgrnmz73tx7ywdf+afBzp4gx+udOBbIqSsC4LMaMNCx6Oq/DjL742yPTMjhRpYlJ2YTEJkV15QSFgEJSlbkIVf3ya17JKKoyN2SZvVhbtFJtebMAvdpr/zR4L8XD1fMfOwV+2ZFWNXkbq0j+wWyR4OW/Hkj+NTfIrz8TPL7VsFxgBc+n77x6cdBhmZhL/+FnAeAdDDosw3RRavYf+4/9x/7jAZinF8B7W9ulmZ8mu7lJ3PAUJTI5nZXI5AluUCKT69hSM3OVEvu8Cy2lkBRvApv/iFd4FI9MHqb2ehn7EPjPgqTBpVLgou2kQWbSEd2cdTKpKVshgkypRZApmUitl1Wka+maS0WkQKYKLsWKbs46mYjUdK0QCQouFZmSiWbOOlZCXxSpmktFgoJLxaVYCc86ellFaqpWiIQLJhWZkolmzjpW+r4oErX6cXz5Vvw7eXCKxohepvSzmW/qFgvN3afxl9j5cup00WztFm/Gt4c7qr7Z9yDzP3oAlwT0Mj3ee/Yf+4/9x/47GJlbqCqtmWPRqErpzBwLr6gcsf/Yf+w/9p/x4MFsuBzSt+o0xO0cDXkbN9uHyo32y0LfXJpu3sIjbLqJJyJ7dag8sXcC5wsREZGGjOzdHSI0zqUiIhNPR54838ghcukPgL+DJJ48n4iZ3Di9r6GyP/pDcMTiB8zfgRonag4kH+/jrErBI3g9+ofHo/gfOiAiMjJfR4Ef6Q94fwdqnKjfIeynY0tP7+faia+eRZTaZ7w/U8BWMFilix/48jQog8q240//5P3ZkSklHpKfkHp8dMRC8i0vk55ADmQaJlUjArY0MjGuJ0yxN4eOeXpss79bwvHJ+8DxOaQKuTl07PdJgB0SBw27tyFSuowQ3SidlqbXzPxp2CroaSi14/rRY2VaCz3f/QNfdZaXUzpAdD9BVs7vpeM5h8rcTx/Fb+QV0+nBrf2DAdgSyMf30vHsXmodKhN4Eci909ig49oWUgXMXkhJgN3Nx4H4bL6f3hLP8PF9IArbcHPt+pHXDNQq4Omxcf0ofayMvSLXC/KZPg0pmP0kAghcmwYiK5e3YK6GnPjyKD29A/Re02vTBNeP0BngNM7/RKqGlZEX9hEikkO79KJneMs4mJYYQyQK/Esnf2X/4MNHqFWoNePwT95PHzvzzBz5XA0tOPgWO2LKNEX60c8P8ntGKfUWtQBzNFZFS9MV5KmBSE5DiF6b3tjamN6Yxq2CDEoXRiCPralQTw9N3IzAiRlDdGgnUK0cIVXDxnTqg9lP7lsrQnS2dGLE5P7Bh0v8bKVkBSYuPLYmRzwBmthtNh/XAGOxNz2HlVLDf1Ic3HoGDN7eAl5gjHU8ew4Asz+6toVU09SkfX/8Z/pUTkKJmn9fufzJ+ylqFcZr0GNrlmgnhCQe3+pRug7J76XwG/530tWsEUOrQc/vAukWOd5DqmhpP6RPSH5CeJyGEDXJGiyBVsOY79Gqr6DL7CfvnyUXt55FpQqQNA3ioYAFVt6oBFks/ffGGmhgUepqTM6Gym9VXbKohss/V0syspx3CuccEjClHI7OVTPiVNUhAaNQBkfPrTwnhuo8nDKzOigAFCbuaNzKc2KoxsMpj9oalo3rweqc8tgWY87x+x4uWXIFtxZSYw1QAikolxid0NPDtx8iO2eXRCcGKBdkYNfD5YuBLspJrzOu2wOshMcaHJRACoCkZzwpLVX1Icn5EGzcH6xIKsBg7YbKG258VdBbMXsVXAmPNSiUwAqgghLkltiHJABLuSCDF4eIR+BbjQ5NeiXn6KNERkNDVt4dImQIUgqFaR2qcYkVy2hIKYWpGpTWyZRxKfpwzm7TLjmuHKoQkYiTUqpYhsWTElYXZPCFyAmKke2Tq+/GDeZclvtzMuZKkstqf04gnBer/dtx5FGUgmOLIbKgJE+mPtc9qR5yqxgTT66r122yOgICHr6vR4ErDTg2kNzYYyNCMX7nemQmIEii28ziiCkLIuODiSyuGadacAP141KeA/j5GSUrl7cCTiJWzoYoJ12Y2YpJyYoZYxR14xfXTKKmLCyY+cA94GHjd/8z/ejaFvoZfMEscY2TUatYRGgu1suPgBLsgHL3xvUjD8/B9kv53FwTuRBMorYq6XUenA3VQt8rYXCD5bczg9h+KZ/gsmJmy+zD9YgBwGRis7848GYgaZvNlwKe1b70/Vuw/FI+gSWh71zJ1SJOet2pqzcEXC+w3B+1kki7hY4v9H1y/1GQku1i6uQSs5qnsxwoVeiX8gk2kSBFnb6+lU+ma0aK1VYn5OSGyJ2L64/w+Nafhh7fGtZ/FEpJJj2JOJmLpQD/0dHN6JfyCS5Z5tU8SlQJA1plwDHkt/hbq/6jcBZb+s4r0tntm+HdIOiX8gkwWeZVlDhHGNhVIi0Z0H8USzZbZOGWAhsGPy0fhP2X8hnPPrgQNLLMo4SSWfKhEmExqwFHYbVFFkvBDcnE6VLOo08g8xzVBENA84R/E9Ow554yTJ/8BPvvvP+MFyK9zEg6RaUXwGsiwT2mkdMt9Ey24LMwXSCTegxWvjDptF1mkqpFrDmq7UQyc1Qt0iumqLYLZKaoWiRUzFDtBbazbDLbZIaod+P9auf9wpmhGz6Mdm5uFopKaeZwC2XFJ4XiYth/7D/2H/uP/cf+Y/+x/9h/7D/mW9Ugk915g0ym0waZTGYNMqn24cncI5PTtMEmbcyzph7r45G3ue4oj+Ie6tmwo6c7Gwv2H/svnrgmsOT76a17/li5fP0ICF4/Qhw8KfIV97BTnAezzcHR/MRA5JWjQJYV1dfX3qmq/jPywSDftzA7KF08HdAT/Mo0corzgLZ56gnlz+j7B9ePAtqJm2vTE9Lb+N0npwkogY1P3odOcX4DaJun6Ua+D/oHW8EuK5cvrFx+5xMiX3kE30gHgy0g5eVrBNQDfPSLR8gpxoPY5sgHbOlX3pmmtwaSP2dU3vl5kVce/f+eEPnd+9jiyBP9/yc/6XmcYA7kd//Ts/u8kDsIBpFX9NZgOj0YTKNO72y+fzDYoqsNeScwwE4xHsQ2t3aYN/Ln9ClPaeWyEZD8FX3/4AK0+IgY2/yEOI5xlF7Ln3n98ifvr1z+3Wdff5LaQSDIBZiu4XwkQdnAYnoxz6aEU4wHsc0RFsENk5en4ScxZIF0TOonPrdtgR18tET+J95BoMhsvn9zDUzDvgpN+ua3jyDkd+8TTvEdwDa3MosHbWHavkZBfBqD2Rw14nefOUrTFO8gSMS4zKJp0OmAUOWja9ePsFN8B7DNy8vBUJkYAeUCuJLrd/dTtINAEbPcO4ADeotQrHzxNDb0DsNO8R3ENrctUr7qWfXKEfio9o58H+8gWGRWZMu8g96pXvlIvm+gLTc+eToW4URCZkW27BsiZiPssyFwvTens7/5n0AC7yBY5ObaJ+/jN1R6MJj2AD2PNN3wlta3Dy5QTrEdvDa33yxgVgMXGdjJ7+lTMo0ytVnNs7t3c+36s/pEvo93ECySXruAP+pBlWv49sP0/SMGkfx3fpx0oiB4bWD0hEj+ipF5ClzfaoW8vnULaH5kIPm9NP3oD4r87j6xg+CN4XJzbSv4eMDK2Lb5yuXyfAQLFnn9HdePgg/AtXmAzcHgd/fT4ANwbV7Wqsr0Oarn/ee8/7D/2H8HCjgNWxzpimYRVjpdZMPahqjV9zarl6fn0uiKtstW2WTy8sTrovrepr5Xb4SqtZ0EmejLRi2hNMhQQpsTNV+HJylkIDTrTLC5WQVtTtbaTkQmOvMhdWjSwYYK2pys+VpEGp3RdiITdHZTQJsTtraTid58olqkQYcC2pyw+VoavdF2E818fGstDe1ZVMBTXqSCHgedq6BnZSvoUa1260nP8eoMen4F/W59+hA6O0V+WM5WlWJ5R3va6Rz53Cg3At4zc+Rzho7dDPuU5GHvLuoZC8iPC0K2d5DPY2VGH3LEMx5wHxeUzJHPHQqxRDtjAvVxwQnyP2CYR3D/AcNAgvowsv/Yf7wNhwqlAAQIqYqOPQDOVT3gFBVHKDhnNLCUq+hQAUDhcOdcoA5CYI5TRkUJBVWggaTUVXCcLQBqgnBuBdUtCMhxyi0xZS9k5WTUKgYG3JKITQ+QSwxpsDplc2oLAO8us8I9OdPXo7akLahugQvOGZYt9Pu7cSfkpFdM9ce2yzPw6ISsykmv0mMLQNLrhIxHX1SV3JKmcFS3QKnvA+hCWFhPiVZLWhUyc1tqnBd1Zs7imkdRN2RDlGFkhccWAMvoC3LAPT4t4ZTsFti/D8DnQH8azlktc2KlfLgeJb0G6PwNl7bNrdEh0KHV6U2eNA4kWwBMYNpSY3C2S+7GcvyAs/ilme635lWuJ8hugRLfB9BF2Z+GKtssq5xaZXHNm4HfN61G3m0yH65vT6Ks08IBRAYAwa1u0wSIW8XU1V63mcXF83/+FT3hlMluAe/GUqyycdm+IbL34qiVyHETW4TwXIjPjJzcELMDJQRyWt3Y6XWbEKdqXE6ujGvM7e6435MorpPeO9DQAcAcrkfeDM7imnGoZXEEJ/QE2S3Ii9X+bROjpGcMpNjrX4kb0GJOInguxGfGpHe8cNUkdUKgyml1t+M6WwhbIGklkyg+EwnegYUOAEK5LeAfu002IllcY7OI1nAKDUCwPMCinRBoJD3oc1IZR8zkmbHGvDP6kAeMBXpIdTezCjVhaBf1LK5NBtQvb0aVC0iQdAoLFQCKwxmQgAQUSL7UH+2izmpyMkC5RWKsxnTFNVbizJj0jqdC9goSINcNVnpkzXC4HuWdcDLg2Jajynmgq3ewUAGgyFG10PdKeE6EMk+Y7CKAODOCK7mO66xIgFqBy2CoDQGXfFjtbRGfpUDNSfBeC+1mKgAYzuIox7P5Ep/TQHcLylQRZ0Y2IX21qDMhUOWkyi05pW4WAGRxUZ9UaUPveWiIABDAPrLZQTHV342XCXTnExGzMfbZBuLM2B4GH7CRIAToFfgzaiVS7IVsAClrUqUI3oOHDAB5fStYLpmLpVjmcxks3QKw2m4csQ+K5f5tieD3h/jMeLjeWejPF3XGAj2EusCKOqhgv7VIJ4UHrHg//gus4Ej4kMAebqknLN0C5dvw+lYr+PpWCD4z8s5wbgJmEwI5oS79h9phffQf9QzACs6SJQA+JLDH0lKHFlhRcgfqiHMhnEBObiJ3XpHqotRAwf5QakKgkmMLgA8J5HGO9Og/h3dArecU9Y+JG/8n8EyA5Oh0Kd7Hu9OlUD89Au+AXM8hiEdSTeBpVWYZ0P+ZuTxHiSEJDTZUiYIGG6pIWVpaOu8/5/2H1YF3xgTq46KnKPsCeMcD7uOSxME94wH3YAT1HzAIxPHqDPl8+hC86ehfBARsssIH7j9gBGjp5exothU2ceC7oBp17hYVNvFJz6WZA08hjeY0TZp5bIKOK9linx0pcalM9EYhYpVLuSElhQj04tbYVxHo5bBVrRn4RnlAeVwqAr0UqcO+Qi8urRXLSgO9UbqW8BQi0ItLpcC+Qi+FdK1aZTIB3yg13XGpCPRSiKQO9xoqwAe+ViorArwUIl1LdooLbFb3VufSAP8qUWBeTybZZPNyBvyrRNeqVCYiE/DflNRkp/R+8bL3LWCFCOplUXm/2nnftMB/IqkVyooAL4WEvihSHR8A/+sL3IsPjMGvL7pWnTKRoIBv85qqFSIn91JJna5wqaT3TkRqZbIiJ93LvQK9zbuWqlW+3Pjj3ZGuONod+03pq7tOlQ7LUJvbNVgPmqDN3c4SNe8D3uvLhvcB8J9IyW3O/mP/sf9ue1QCzy4tgafISuTzwt0SeLKiBJ6108w2t3HPcQs8Ry+3wGPPW+SzLVrgObct8BxrZ5u7mMeTzIbetjn7j/3H/mP/sf/Yf+w/9h/7j/3H/mP/sf/Yf+w/9h/7j/3H/mP/mfK2s9JujtZbqyvsdn20seVsq40mfW1+StSshJLpy5tMQrHwKL/NyXojC09S+sKCnXSU3+ZkzYYmKZ25OYM66ai+zQn7QzIRsecyWKiTjurbPMDGimR6s1smYrXSV3l/B9obysTqDQt00lF8mwfa2Ex3Ht+aWc30Vd+aBqq0q+2o88IWmxxBZ9EfljNsuE/j3+a0oTqbI59nLHT3fzhHPlt0vmeY4t/m5GHvLuoZC8iPC0aQb3MSkSOe8YD7uKAE9zYnEku0MyZQHxecoN7m7D/2H/vvtlcOFUoBCBBSPiz9ylcm7AFwrmyuPiOjZuCYLutBeWbjSoKcouIIBeeMBpZydkvnU95VJmwBMK9u2Vx9RkbBiCO5nH/ObFwJkFNGRQkFVaABpcjWECL+5NVVIpwtAODVLZurz8ioF3Ekl/XPmY0r+XHKLTFlL2TlZNQqBgbckohND5BzaYAsRjwyLek1WPFYBKWzu8yKPkpWEnK1BQC9usRLTm5pyR6aiUVGnRx1JKt9CAuHzZ8GllsiBfwf+tHGlfYMyxb6/d24E3LSK6b6VzwDj07Iqpz0IA49zBehSMVRNp2Q8UfJioIlAPjVdeRL7vBrbQ3NRCOjSk7JI9k+hIXD5k/DEdGkwur/0I84rrQnZOa21Dgv6sycxTWPom7ILr6tAXuEqBiosQhlX0VdJcEWAMvoCzMTW/IRmolHRpnII1mtQ1g4bP40lIgmIbDk/9CPOq7ER/lwPYI9DU7et82tn4IOrU7PoJz0tm+I7IWApBcx9E3mRe7MdUJos20sQlZXQbAEALzmbakxyE3J3ViOH3AWvzTTbbLaQlOGyCiRUyaPZN6NpVhlIjwvzoscN4lgwfDhYHJyQ8wOFAlM6NCPPK7UJ4tr3gzczWg18m6T+XB9m6BY7c9JZCUXY4ORvf5uHFUWyAAguNVtmgBxq5i62us2s7h4/s9DVltoJhoZhSKP5LxY7d+OI4bhuS3FXv9K3CCCBcOHg5n0jheumqROCKj/Qz/auJIf3ul1mxCnalx+Iq4xt7v/QRAxc95tWjhcBzaYBjM8JbiKAR0AzOF65M3gLK4Zh1oWR8w+QlOOyCiVU2OAggLCA0ZWUYygzxdM+Mhg1ph3/uIBEwLq+9D/W/RxJb7djutsIWyBN0VCotwu6hbAIByNVhrIAFCvbFukBvOREQEvvTpraCYUGTUD4WAFORmFhMRY/YKJDxHMpHc8FTIzI4GJHPo/iD6utLdbyMzUhKFd1LO4ZiO7aOVivdJBBYDicAYkIAEF4pasoaEjowGUecJkFwFEMMGVXMd1ViRgOfRtfPnr5Aj0OZSpRdAH47wTVvyKCgBFjqqFvldCxLlJRR/JZaqIYLJXLr1a1JkQ0AC1CuEHZGpDwCV/+m0RQ3wMlDWYiZHIygYVAOL1zuIox7P5EiOss8sRGeV+ImI2xj7bQASz/aEH4PinBNTfoY9nUyOYhqibBQBZXNRJiuX+bYHJjHNPYl46IcPvcCsZRAAwKDObHRRT/d14GWENjT0yanaLTgar7cYRW8HBgokaB/NwvbPQny/q8wEHUEVt/f7dyBF8z82LFHshG8B7xeDn4kJw1eGdVzshM7i6sJJBBoC8vhUsl8zFUiwzwnr9pT0yanaLTla+Da9vtYKvb4W9XhxM3nlBwOy+Axiq9cPjSlT2eb0Kp/ZbixRKASJm2oawABkfG6FWVJoHrOBI+JBgZvw6W0NThsgoeIEVZSZfdhw+ECzCzfm882rY1o8+riRkn1dSsz76jxBYQii2wX7K83cW+nNSY2wEW1FxHv2HI+FDgni1CbDKxCOj4KX/jAH5sqPwUcGCwfD5TICorT/0uNKQ/V3j1/5QakKAANnQDw66IVIsE0awFZXnodQ4Ej4kiFfbR2gmHBk1L0pN7mDJz/EMw+fzaVVRW3/YcaU0Z3AMwqcO+LQ8qf64FOhDM4HIKOp0KWD6+eyIK6Wee8r/ZzaHH2U3qQJ8aCYQGVWdewpKP58dcaXUE/lN5DMbesjy5ArsoZlAZDTmRH5eTM6OuBqmZ0Vl/7H/2Hym6WVGmqcXwHs77aWZ13eQz7UC3zPYjws+Lgf9NicO7sEM+yygeyoz7HNfO9u8it2Um32AceJFm7P/2H/sP/Yf+4/9x/5j/7H/2H/sP/Yf+4/9x/5j/7H/2H/sP/Yf+4/9x/5j/7H/2H/svwP9HPc51hXH/Y7RhV+bE7V6Mlun67snVle0L08PX7hbrE6cLqo3s11qZ1lB1NpOgmQaM+tIKIVHF3ZtnjqqvrkOsToz6+jmpFP3fU2kam2nN9X7um/S0cuSOrrerQ6q3sw64UlHL0vh6VrbSaY9s07hvV6W1FH241trsboz6+jmpFNL4Slbe649s07h9VL7siNVbrUddSZb1WYMhiXujuMuXmun82QrP7wfu+3dTbISy+XJVWK6ZVIV9h/7j/13wAPnFbQDwoR0cVZHWsY5X2IWrbI1nLY+C15Fo4dTrzi4A4dNSBcqtMgNyiBBX2K0VjmOCz8Ndmf+VcwNHk7ZKyY1gy0hE9KFjC10QzJQ0JcYrVWWA8PW4Amrlq0Rxg6nnPQ6Iatyy2zJGZNsRuTpZVbs5AjHdrfJWIYUhGMKoBHzscge0kp6EXBawl6WsmQ8oF4DNXhnRkyTCKclQtWisQQcgIdFkW6rsSOLizqFydTxnYX+nEQMnWhalIxFEIwLgBRaTPWvxKYFCCCEvSzFQQ8M8Dxe6DPp5JxPU4ccnLMrkm01deTHMxEJFGDOu01GTg4rHg5VqTMWtQkyHHjIizozZ3GNwgghL7YURR4Uh+uRzUnVp6kiB1UfioPua27ggJnTpGGMotED3hlbLSScHJ7uhIxFLYK7sRSrKB0rJ+/bJuBcapzcjeX4AWfxSzPdZtLbnhe5EzLSQSi3RUReAm5MtWT7hsjei/Mix03CNDdmrQZI2VgRtWrAfa1yI0e7qGdxjckql+2QTUFOEJSUKVFSMC9W+7fjCHRp1cEOKaIty8ytYupqr9vM4uL5Pw+Tnuz1d+OI0CGqq+vbfejGuSz350z675kmSbHXvxI3qAZcrPPherfJWVwjGg1b1X9fq3xp5Gh1QpNF6UXmRe4sMGMnguxinZQhBNGwQN5tQhwYKoVkccQm1Rq5GpBgI83GHutggD9yu7EHBEGXF3S9QbuwqTfF7afjGrdhW5FUxNx/X6t8ad5AiRN8XKdQvnT3bXLchE540inn3jQpQwi2izqrSdU+KHlfb7DCZiW9Bux5E6cMrGMBdbaZKZRbCGzKLTMFlmOi0aZVRFvzpZmjXdRhl5WaAGVnvRMSTjgn15gUpQR3MT4mimE08PWZgGIH6fgkmY9FxA425XbnxV7NLBfZINpa5WaOFsqLCJM/v/QnrCBZYydENkRrMilKCZbuwvhYBCRozrsLfa+E1grrWMBunQe+KmzK2cVf+L/m4VCVMbWZug3cVhMHSMzxdt8rc0UdXWDF+MKovPsFwgl9IdZgWpQSHPfEw6V+NmQcYIebL7EVrOMDaOALZGqUPttgbn22EzIxG9N37LmBA2VdzuLIA3Q3mXO5s9C/GzdIJwUptsa0KCUIvsjfjSP2c7MAzO0tz2Y3XraCdXxW3amrN8QONmVuCWh3g5VoNGbA75cNGw4lVFWQJltiSlFnvvKCSPH8i6QTK7yF1SKKBUPm27EUq3CMVaSgb2Plw/VGmMzFUiyzHajjqwI3tBarnpsNZGoZMVbUaADZ1nmVmzdvmBXcS+/rjijaSdEtrJQoLaiKLH09YIVsEWwAuR7SsXja/JmSBKYWE4ujKi0UuisGzocojJzzdec96QQWARnTIuNspg75+3BDMrAB5HpIx+Jp81dKEphaTCyOztmEjJw/FrA+Xtr+iChazoGMaZOxmWJ/P270Q6bI9Sw6lIv1dSAbsGQxsTiS7QkfyTLxon8TfpXpz5467z/n/ee8/5yXkeQqlXl6Aby3c16a+eqZZCtXS8zmT23MynRnY1YWcQBlvNYhae3jVhJNhXStOcqlIrU5qhDpFVOUS0V6xRRViISKGcqlcn6B7GWpzVDN2vtN6Rc3cGbohg/x3rP/2H/sP4aaexooOd9VULIwuhx++gxIXt6eQclqYXK5/8M5kDyc6+1zKDmrzC5Anv5QoIJxB4wvMJ6YW1gO4Q6YX0A8Zcx+y/2/A+w/9t/Bh3KjVD7gz1hzA1Rezedh8yo3PuXV/GZ9vIZXq3rpiVrlBqi/dH+9VNKL5TfpIzKvchN041GRUF4yRP2lC/zfGLwZSHnJELTvK0mHSriONMYaGCc5eSNUR5vcVAMivfL/kR/p3t3c4OKqyHnwzB0g+c219lEf5+PtvX/kL46elr+ufwUkXx35ca6Cf8aW+z+cY5Nf3TG8IPN6ahhgUHmlX4wwiLwGRew/9h/7j/3H/mP/HQBmXGOqGdvkZpqxTW+uNrest+jkUv7Sm6yTCjTz9HsSDATz9HuSDfTy9HsSDuTyOFb2H/uP/cf+Y/+x/9h/7D/2H/uP/cf+Y/+x/w60MeDl5Yj0SnPkEY6FsnCuGhGnquqwgFoMnSIXi4nDBq76EKfMzOqQALMlY7PVxSmwQAbqqg1xyklvWBayOuVsRuTpZVYHRxWA03wsshcib+eUcyBpDHaXjQAxBGFRcM5V65HFRZ1VuR3fWejPScQKRxVAfi+m+ldikLfBYghVnPvVQUlVi4Kquio98uOZyNDqhMycd5sMRxVMxi7qzJzFNWL8wWD7/8+j/hSYWV31HU75cD0yiRv1cHnnSyHzbizFqlFpsCon79tm093l27HcmeuEWfzSTLdppIDw4XotuRvL8QNmZHRDjIW6ajzaRR10eTmX7ZBByYvV/u04MvmdzaYZ/pfLan9ODMXzfx4ajDC3u81WMXW1120yMHqxd7xwdabbZHVVeLQ6Ier5zovcWfA4XI/gOAPEwWFYrGMwAh5gPrcaWVwDm2VgBCx2/uJB9R0wNaMBWuVLd98mx01uF3VWk4stwH0YoEDSa6BMXwPDE0QPOekdT4XwH6ruABkbJF9YdtY7IQE5YbhYt2NcvOlcQIHA67iO69V5tHACTr70J6wgqRPQi/itkl6Um50t9L0SIrxy6dWiXnU3AcYMtvtemSvqcCiW826TmE1vCM22odx++m011KG+hHrW7Q+B6wlqVXigNA2+scrlzkL/btyAq+3GEdM3CxCr2ThcN2u0PL3deBlyuN5Z6M9X31UOZWJFdwpceUGkeD5kcCFrsQrWmhcp4G2s+PpWC8qthnGYi6VYZjSx84KcydlRXmc5k+oNg7QJBYhbppQZClEq2JJyQ2aUJyt00TN751W0VwDRoPoQVUcI4Jv5jQUUIlQIS8oNmVGe6pzSFktnhogxp/5YwDlKgHrMFH7cFKFCyFncoAsh5LnQFmeC+tvPRM3UzDxdyqGNHGdeGvJXsuw/9h/7j/3H/mP/mUYinJbf6BTptPwGp4in5TcijfS8/FND882hjZhTb2Aa6ney7D/2H/uP/cf+Y/+x/5J/iMQIg0oMMMjE9PL3Z7DJ1OiysPjEJRlIJuw/9h/7j/3H/mP/sf/Yf+w/9h/7jyC8z2yOpueDhg8YzNF8cHg=)

内核中的 ALSA 框架公开了用于 PCM、Compress 和混音器的
卡和设备节点。

PCM、混音器和 Compress 插件属于 TinyALSA 插件，
它们是将所有 PCM、混音器和 Compress 调用从应用程序路由到特定插件的
实现。

这些插件创建具有 PCM、Compress 和混音器节点的虚拟
声卡。虚拟节点映射到设备上的 .so 文件（可动态
加载的共享对象）。

虚拟声卡的配置保存在
`card-defs.xml` 中，可在以下位置找到：

`build-qcom-wayland/workspace/sources/qcom-agm/opensource/agm/snd_parser/configs/<target>`，

设备上的文件位于 `/etc/` 文件夹中。

Last Published: Dec 10, 2024

[Previous Topic
功能和架构](https://docs.qualcomm.com/bundle/publicresource/80-70015-16SC/topics/features.md) [Next Topic
软件](https://docs.qualcomm.com/bundle/publicresource/80-70015-16SC/topics/software.md)