audioread函数未定义_aaudio

论坛 期权论坛     
选择匿名的用户   2021-5-26 13:46   170   0
<div style="font-size:16px;">
<p>A音频在Android版本引入了全新的Android C API。它是专为那些需要低延迟的高性能音频应用。应用程序通过读取和写入数据流与A音频通信。</p>
<p>注:这是A音频库的预览版本。该API可能在将来的版本后向兼容的方式发生变化。不建议在生产中使用。</p>
<p>该A音频API是由设计最小的,它不执行这些功能:</p>
<p>音频设备枚举</p>
<p>音频端点之间自动路由</p>
<p>文件I / O</p>
<p>压缩音频的解码</p>
<p>所有输入的自动演示/流在一个单独的回调。</p>
<p>音频流</p>
<p>A音频应用程式和Android设备上的音频输入和输出之间移动音频数据。你的应用程序通过读取和写入进出数据的音频流,通过结构AAudioStream表示。读/写呼叫可以被阻塞或非阻塞。</p>
<p>流由以下定义:</p>
<p>的音频 设备,即源或汇的流中的数据。</p>
<p>所述共享模式,其确定一个流是否具有可能另外多个流之间共享的音频装置的独占访问。</p>
<p>该格式的流中的音频数据。</p>
<p>音频设备</p>
<p>每个流被连接到单个音频设备。</p>
<p>音频设备是硬件接口或虚拟端点充当源或汇用于数字音频数据的连续流。不要混淆的音频设备 与(一个内置的麦克风或蓝牙耳机)的Android设备运行你的应用程序(电话或观看)。</p>
<p>您可以使用该AudioManager方法</p>
<p>每个音频设备具有Android设备上的唯一ID。您可以使用ID的音频流绑定到特定的音频设备。然而,在大多数情况下,你可以让A音频选择默认的主设备,而不是你自己指定一个。</p>
<p>附连到流音频设备确定该流是否为输入或输出。甲流只能在一个方向上移动数据。当你定义一个流您还可以设置它的方向。当你打开一个流的Android检查,以确保音频设备和流方向一致。</p>
<p>共享模式</p>
<p>甲流有一个共享模式:</p>
<p>AAUDIO_SHARING_MODE_EXCLUSIVE意味着流具有其音频设备的独占访问; 该装置不能被任何其他音频流被使用。如果音频设备已在使用,它可能无法为流具有独占访问。独家流可能有更低的延迟,但他们也更容易获得断开。您应该尽快关闭独家流,你不再需要它们,以便其他应用程序可以访问该设备。独家流提供尽可能低的延迟。</p>
<p>AAUDIO_SHARING_MODE_SHARED允许A音频混合音频。A音频混合所有分配到同一设备的共享流。</p>
<p>当你创建一个流可以明确设置共享模式。默认情况下,共享模式SHARED。</p>
<p>音频格式</p>
<p>通过流传递的数据有通常的数字音频属性,当你定义一个流必须指定。这些措施如下:</p>
<p>样本格式</p>
<p>每帧样本</p>
<p>采样率</p>
<p>A音频允许这些样品格式:</p>
<p>aaudio_format_t</p>
<p>C数据类型</p>
<p>笔记</p>
<p>AAUDIO__FORMAT_PCM_I16</p>
<p>int16_t</p>
<p>常见的16位样本,Q0.15格式</p>
<p>AAUDIO_FORMAT_PCM_FLOAT</p>
<p>浮动</p>
<p>-1.0到&#43;1.0</p>
<p>A音频可能对自己进行采样转换。例如,如果一个应用程序被写入FLOAT数据,但HAL使用PCM_I16,A音频会自动转换样本。转换可以在任一方向发生。如果您的应用程序处理音频输入,这是明智的验证输入格式,并准备在必要时转换数据,如下例所示:</p>
<p>aaudio_format_t dataFormat &#61;AAudioStream_getDataFormat(stream);//... laterif(dataFormat &#61;&#61;AAUDIO_FORMAT_PCM_I16){convertFloatToPcm16(...)}</p>
<p>创建音频流</p>
<p>在A音频库遵循制造商的设计模式,并提供AAudioStreamBuilder。</p>
<p>创建AAudioStreamBuilder:</p>
<p>AAudioStreamBuilder*builder;aaudio_result_t result &#61;AAudio_createStreamBuilder(&amp;builder);</p>
<p>设置在构建器中的音频流的配置,使用对应于所述流参数的助洗剂功能。这些可选设置功能:</p>
<p>AAudioStreamBuilder_setDeviceId(builder,deviceId);AAudioStreamBuilder_setDirection(builder,direction);AAudioStreamBuilder_setSharingMode(builder,mode);AAudioStreamBuilder_setSampleRate(builder,sampleRate);AAudioStreamBuilder_setSamplesPerFrame(builder,spf);AAudioStreamBuilder_setFormat(builder,format);AAudioStreamBuilder_setBufferCapacityInFrames(builder,frames);</p>
<p>注意,这些方法不报告错误,如一个未定义的常量或值超出范围。</p>
<p>如果不指定设备ID,默认是主要的输出设备。如果不指定流方向上,默认是输出流。对于所有其它参数,你可以明确地设定一个值,或者让系统不指定所有参数或设置它来分配最佳值AAUDIO_UNSPECIFIED。</p>
<p>为了安全起见,检查音频流的状态在创建后,按照步骤4所说明的那样。</p>
<p>当AAudioStreamBuilder配置,用它来创建流:</p>
<p>AAudioStream*stream;result &#61;AAudioStreamBuilder_openStream(builder,&amp;stream);</p>
<p>您可以保存生成
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP