九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Linux音頻驅(qū)動-ALSA概述(轉(zhuǎn))

概述

ALSA(Advanced Linux Sound Architecture)是linux上主流的音頻結(jié)構(gòu),在沒有出現(xiàn)ALSA架構(gòu)之前,一直使用的是OSS(Open Sound System)音頻架構(gòu)。關(guān)于OSS的退出以及ALSA的出現(xiàn),可以看 Linux音頻驅(qū)動-OSS和ALSA聲音系統(tǒng)簡介及其比較。

關(guān)于OSS和ALSA音頻架構(gòu)之間的區(qū)別圖如下:

主要的區(qū)別就是在OSS架構(gòu)下,App訪問底層是直接通過Sound設(shè)備節(jié)點訪問的。而在ALSA音頻架構(gòu)下,App是通過ALSA提供的alsa-lib庫訪問底層硬件的操作,不再訪問Sound設(shè)備節(jié)點了。這樣做的好處可以簡化App實現(xiàn)的難度。

同樣ALSA為了兼容OSS,ALSA提供了內(nèi)核模塊來模擬OSS聲音驅(qū)動,所以在OSS架構(gòu)下編寫的App無需修改就可以在ALSA下運行。另外libaoos庫也可以模擬OSS,無需OSS相關(guān)的內(nèi)核模塊。

音頻子系統(tǒng)文件目錄結(jié)構(gòu)

音頻系統(tǒng)的文件位于kernel/sound下:
  1. root@test:~/k3.18/kernel/sound$ ls
  2. ac97_bus.c atmel firewire Kconfig mips pci sh sound_firmware.c synth
  3. aoa core i2c last.c oss pcmcia soc sparc usb
  4. arm drivers isa Makefile parisc ppc sound_core.c spi
主要的目錄的介紹信息如下:

ALSA接口信息

proc接口

關(guān)于音頻的proc接口,位于/proc/asound目錄下:(以我的pc機為例,ubuntu12.04)
  1. root@test:/proc/asound$ ls -l
  2. 總用量 0
  3. dr-xr-xr-x 5 root root 0 1122 13:41 card0
  4. -r--r--r-- 1 root root 0 1122 13:41 cards
  5. -r--r--r-- 1 root root 0 1122 13:41 devices
  6. -r--r--r-- 1 root root 0 1122 13:41 hwdep
  7. -r--r--r-- 1 root root 0 1122 13:41 modules
  8. dr-xr-xr-x 2 root root 0 1122 13:41 oss
  9. lrwxrwxrwx 1 root root 5 1122 13:41 PCH -> card0
  10. -r--r--r-- 1 root root 0 1122 13:41 pcm
  11. dr-xr-xr-x 2 root root 0 1122 13:41 seq
  12. -r--r--r-- 1 root root 0 1122 13:41 timers
  13. -r--r--r-- 1 root root 0 1122 13:41 version
如下是我手機的中的詳細信息,會個pc機上的有差別。
  1. test:/proc/asound # ls -l
  2. total 0
  3. dr-xr-xr-x 21 root root 0 2012-01-02 03:19 card0
  4. -r--r--r-- 1 root root 0 2012-01-02 03:19 cards
  5. -r--r--r-- 1 root root 0 2012-01-02 03:19 devices
  6. -r--r--r-- 1 root root 0 2012-01-02 03:19 pcm
  7. lrwxrwxrwx 1 root root 5 2012-01-02 03:19 xxx -> card0
  8. -r--r--r-- 1 root root 0 2012-01-02 03:19 timers
  9. -r--r--r-- 1 root root 0 2012-01-02 03:19 version
相比的話,差不了多少,只是手機上沒有一些功能而已。接下來詳細介紹每個目錄的大體含義。

card0:    其中0代表的是聲卡號,每個聲卡系統(tǒng)都存在這樣的目錄。
cards:    列出系統(tǒng)中可用的,注冊的聲卡。
  1. root@test:/proc/asound$ cat cards
  2. 0 [PCH ]: HDA-Intel - HDA Intel PCH
  3. HDA Intel PCH at 0xf7d00000 irq 45
devices:  列出系統(tǒng)card下所有注冊的device,包括control,pcm,timer,seq等等。
  1. root@test:/proc/asound$ cat devices
  2. 1: : sequencer
  3. 2: [ 0- 2]: digital audio capture
  4. 3: [ 0- 0]: digital audio playback
  5. 4: [ 0- 0]: digital audio capture
  6. 5: [ 0- 0]: hardware dependent
  7. 6: [ 0] : control
  8. 33: : timer
hwdep:     列出所有硬件依賴(hardward dependent)的設(shè)備。此設(shè)備不是所有系統(tǒng)上都存在的。
modoles:  列出所有ALSA聲卡驅(qū)動模塊列表。
oss:          此目錄下包含了ALSA用來模擬OSS的模擬仿真模塊。
pcm:         列去出系統(tǒng)的cpm設(shè)備,包括capture和playback。
  1. root@test:/proc/asound$ cat pcm
  2. 00-00: ALC662 rev1 Analog : ALC662 rev1 Analog : playback 1 : capture 1
  3. 00-02: ALC662 rev1 Analog : ALC662 rev1 Analog : capture 1
seq:        此目錄保護一些音序相關(guān)的信息。
timers:    描述一些ALSA相關(guān)的定時器信息。
version:  描述ALSA版本信息。
  1. root@test:/proc/asound$ cat version
  2. Advanced Linux Sound Architecture Driver Version 1.0.25.

devices字段詳細解釋,會在后面更了解各個字段的含義。

有關(guān)proc的詳細信息可以見:http://alsa.opensrc.org/Proc_asound_documentation#The_.2Fproc.2Fasound.2Foss.2F_directory

dev接口信息

關(guān)于sound的dev節(jié)點信息,位于/dev/snd下。
  1. root@test:/dev/snd$ ls -l
  2. 總用量 0
  3. drwxr-xr-x 2 root root 60 1116 10:47 by-path
  4. crw-rw---T+ 1 root audio 116, 6 1116 10:47 controlC0
  5. crw-rw---T+ 1 root audio 116, 5 1116 10:47 hwC0D0
  6. crw-rw---T+ 1 root audio 116, 4 1116 11:00 pcmC0D0c
  7. crw-rw---T+ 1 root audio 116, 3 1122 14:45 pcmC0D0p
  8. crw-rw---T+ 1 root audio 116, 2 1116 10:47 pcmC0D2c
  9. crw-rw---T+ 1 root audio 116, 1 1116 10:47 seq
  10. crw-rw---T+ 1 root audio 116, 33 1116 10:47 timer
上述是sound下的常見的設(shè)備文件。首先看看各個字段的含義:

介紹寫各個設(shè)備文件的功能:
control:            用于聲卡的控制。
pcmC0D0c:     用于錄音的pcm設(shè)備。
pcmC0D0p:     用于播音的pcm設(shè)備。
seq:                 音序器接口。
timer:              定時器接口。

linux內(nèi)核定義了如下的設(shè)備類型:
  1. enum {
  2. SNDRV_DEVICE_TYPE_CONTROL,
  3. SNDRV_DEVICE_TYPE_SEQUENCER,
  4. SNDRV_DEVICE_TYPE_TIMER,
  5. SNDRV_DEVICE_TYPE_HWDEP,
  6. SNDRV_DEVICE_TYPE_RAWMIDI,
  7. SNDRV_DEVICE_TYPE_PCM_PLAYBACK,
  8. SNDRV_DEVICE_TYPE_PCM_CAPTURE,
  9. SNDRV_DEVICE_TYPE_COMPRESS,
  10. };
通常更關(guān)心control和pcm設(shè)備。

代碼入口分析

ALSA的proc接口信息的代碼實現(xiàn)在kernel/sound/core/sound.c中。

大概的邏輯圖如下:

下一步就需要分析是誰調(diào)用snd_register_device_for_dev函數(shù)來注冊sound設(shè)備的。
 
以上只是列出了pcm和control設(shè)備的流程,并沒有關(guān)心timer, seq等設(shè)備的流程。其實大致流程一致。
因為pcm,control,timer,seq等這些設(shè)備都在所謂的card下管理著。所以下面幾節(jié)就從card,control,pcm三個方面入手。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
android系統(tǒng)開發(fā)(九)-Audio部分準備工作alsa移植
Linux中/proc目錄下文件詳解(轉(zhuǎn))
使用alsa-utils調(diào)試ALSA驅(qū)動
ALSA配置文件(alsa.conf,asoundrc,asound.conf)及其自動加載AndHDMI&nbsp
理解和使用Alsa的配置文件
Android中使用ALSA聲卡
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服