首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于ALSA驱动程序:如何正确处理音频设备

关于ALSA驱动程序:如何正确处理音频设备
EN

Stack Overflow用户
提问于 2013-06-19 23:06:05
回答 1查看 11.8K关注 0票数 1

最近,我正在尝试为Linux (实际上是Android TV)开发一个alsa驱动程序,.I遇到了一个关于alsa(alsa指的是高级Linux声音架构)设备处理的问题。

实际上,我已经研究了alsa-lib-1.0.27.1和tinyalsa(适用于android设备)的部分源代码。我还研究了三星设备的音频驱动程序。

用户空间应用程序使用/dev/snd/pcmXXXXX播放/捕获音频数据。但是,有一台problem.If只有一台音频设备,那就好了;

代码语言:javascript
复制
/dev/snd/
├── by-path
│   └── pci-0000:02:02.0 -> ../controlC0
├── controlC0
├── midiC0D0
├── pcmC0D0c
├── pcmC0D0p
├── pcmC0D1p
└── timer

但是,如果有多个设备(例如,当我插入usb音频设备时)。

代码语言:javascript
复制
/dev/snd/
├── by-path
│   └── pci-0000:02:02.0 -> ../controlC0
├── controlC0    
├── controlC1    //new Control channel
├── midiC0D0
├── pcmC0D0c
├── pcmC0D0p
├── pcmC0D1p
├── pcmC1D0c     //new card,new capture channel
├── pcmC1D0p     //new card,new playback channel
└── timer

用户应用程序如何正确处理这些设备。

我真的被三星的驱动搞糊涂了。==>linux-3.5.4/device/samsung/crespo/libaudio/AudioHardware.cpp

代码语言:javascript
复制
status_t AudioHardware::AudioStreamInALSA::open_l()
{
//.....
    ALOGV("open pcm_in driver");
    TRACE_DRIVER_IN(DRV_PCM_OPEN)
    mPcm = pcm_open(0, 0, flags, &config); 
          //Why it always uses Card 0 and device 0.
          //does this mean it can not support multi-devices

此外,如果您能与我分享一段源代码以获取更多信息(例如,其他驱动程序...),我将不胜感激。

真的非常感谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-19 23:36:29

代码语言:javascript
复制
mPcm = pcm_open(0, 0, flags, &config); 
      //Why it always uses Card 0 and device 0.
      //does this mean it can not support multi-devices

在我使用过的平台上,除USB外的所有音频设备都位于卡0上。我并不是说硬编码卡号和设备号是个好主意--只是说这在实践中通常不会是一个真正的问题。直到你开始添加更多的卡片..

在这些平台上,USB音频附件的ALSA卡/设备号将由WiredAccessoryManager (如果是主机模式附件,则是UsbDeviceManager )获取(这是在Android的Java层中)。因此,如果您希望避免让音频HAL硬编码USB音频附件的卡/设备号(但我怀疑有一些实现简单地假设卡1用于USB音频附件),则可以使用这些信息。

CodeAurora论坛上的音频硬件抽象层实现的Here's a link,它是高通许多平台的参考实现。以及用于主机模式USB音频附件(Android Open附件)的here's the driver

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17194777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档