Android中的PCM设备

Android中的PCM设备Android 上的应用一般都是通过 AudioTrack 类来播放音频 通过 AudioRecord 类来录制音频 AudioTrack 类和 AudioRecord 类是 AndroidFrame 封装提供给应用使用的音频接口类 这些类经过层层的 Binder JNI 等调用后会调用 AudioHAL 层提供的相关接口 这些接口实现了对音频设备 通路等一系列操作 就这样最终完成 AndroidApp 和硬件

查看PCM设备列表

如果手机的音频系统正常工作,我们可以通过adb去查看系统中的所有音频设备文件。如下图所示:

Android中的PCM设备

  1. device type
    设备类型,通常只有compr/hw/pcm这3种。从上图可以看到声卡会管理很多设备,PCM设备只是其中的一种设备。
  2. card index
    声卡的id,代表第几块声卡。通常都是0,代表第一块声卡。手机上通常都只有一块声卡。
  3. device index
    设备的id,代表这个设备是声卡上的第几个设备。设备的ID只和驱动中配置的DAI link的次序有关。如果驱动没有改变,那么这些ID就是固定的。
  4. capture/playback
    只有PCM设备才有这部分,只有c和p两种。c代表capture,说明这是一个提供录音的设备,p代表palyback,说明这是一个提供播放的设备。
    系统会在/proc/asound/pcm文件中列出所有的音频设备的信息,如果是肉眼查看,/proc/asound/pcm中的信息会更直观一些:

Android中的PCM设备

PCM设备文件的访问

查看PCM设备文件的属性,可看到它们都是字符型设备:

Android中的PCM设备

  1. struct pcm pcm_open(unsigned int card, unsigned int device, unsinged int flags, struct pcm_config config)
  2. int pcm_close(struct pcm* pcm)
  3. int pcm_write(struct pcm pcm, const void data, unsigned int count)
  4. int pcm_read(struct pcm* pcm, void* data, unsigned int count)

PCM设备的管理 —— PCM ID

Android中的PCM设备

USECASE与PCM ID的映射关系可以通过配置文件来修改,这样的好处就是所有产品可以使用同一套代码,差异的地方可以通过控制配置文件的内容就可以简单的区分开来,Audio HAL会解析这个配置文件,然后更新映射表内容。使用adb shell cat /system/etc/audio_platform_info.xml可以看到如下配置:

Android中的PCM设备

如上图,就会把USECASE_AUDIO_PLAYBACK_LOW_LATENCY这个使用场景的PCM ID更新为12。其他应用场景的PCM ID更新也是类似。

原文地址:https://www.cnblogs.com/chenzhizhong/p/6604405.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/214637.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午3:47
下一篇 2026年3月18日 下午3:48


相关推荐

  • excel 日期格式 mysql_EXCEL与MySQL日期格式转换[通俗易懂]

    excel 日期格式 mysql_EXCEL与MySQL日期格式转换[通俗易懂]在MySqL数据库中,日期字段的存储类型为整型字段,存储的是1900年1月1日至当前的秒数。如果你在EXCEL中使用从MYSQL中导出的数据,或者使用ODBC直接访问MySQL数据库,就需要使用下面的转换公式。””在MySqL数据库中,日期字段的存储类型为整型字段,存储的是1900年1月1日至当前的秒数。如果你在EXCEL中使用从MYSQL中导出的数据,或者使用ODBC直接访问MySQL数据库,…

    2022年6月22日
    112
  • php stristr_str.center()方法的功能是什么

    php stristr_str.center()方法的功能是什么欢迎进入Linux社区论坛,与200万技术人员互动交流>>进入php中strstr函数的用法:strstr()函数搜索一个字符串在另一个字符串中的第一次出现的字符串。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回false.语法strstr(欢迎进入Linux社区论坛,与200万技术人员互动交流>>进入php中strstr函数的…

    2025年11月12日
    7
  • VMware——VMware Tools的介绍及安装方法

    VMware——VMware Tools的介绍及安装方法VMware——VMwareTools的介绍及安装方法一、VMwareTools的作用二、VMwareTools的安装步骤参考文章一、VMwareTools的作用1.最大的好处是可以直接把windows界面的文件拖进linux虚拟机内。2.鼠标可以直接从虚拟机移动到windows等等好处。二、VMwareTools的安装步骤首先把linux虚拟机关机或退出,然后点击“编辑虚拟机设置”。点击CD/DVD,选择使用物理驱动器–自动检测。运行虚拟机虚拟机-安装vm

    2022年5月10日
    56
  • 从零开始的ESP8266探索(06)-使用Server功能搭建Web Server

    从零开始的ESP8266探索(06)-使用Server功能搭建Web Server目的开启服务器监听客户端 Web 的请求与响应实现 WebServer 功能用过网页收发数据建立网页完善 WebServer 功能总结

    2026年3月18日
    2
  • sqlserver如何复制数据库_sql数据库复制到另一台电脑

    sqlserver如何复制数据库_sql数据库复制到另一台电脑快照复制:通过设定固定的时间周期 进行复制,时间周期范围可以任意设置在一分钟到一个月之间,是三种复制功能中最稳定的。事物复制:通过实时监测数据库更新,在每次 更新时对数据和数据库对象进行复制,实时性能 最好,但SQLServer个人版本无法提供事物复制功能,企业版本虽然有该功能,但不能对数据内容进行筛选,实用性和稳定性都比快照复制低。合并复制:指两个数据库之间

    2022年8月31日
    3
  • mysql 1062_mysql 1062 报错

    mysql 1062_mysql 1062 报错mysql 主从库同步错误 1062Error Duplicateent forkey PRIMARY onquerymysql 主从库在同步时会发生 1062Last SQL Error Error Duplicateent 的问题 显然这个问题是因为插入重复主键导致从库不工作了 错误消息如下 mysql gt showslavesta

    2026年3月26日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号