目前分類:Alsa (15)

瀏覽方式: 標題列表 簡短摘要

 

ALSA音訊工具amixer,aplay,arecord

ALSA音訊工具編譯安裝

========================================================================

立你斯 發表在 痞客邦 留言(0) 人氣()

長時間測試錄音與放音

發現 aplay 4小時半 自動停止問題..

查看原始碼 似乎有 timelimit所以只好手動改播放腳本

立你斯 發表在 痞客邦 留言(0) 人氣()

在Ubuntu 11.10換成root使用者後,如果你音效卡驅動程式是正常的,一定會馬上發現,怎沒聲音,而且調整音量的地方也不能調整了,

 

做點簡單的設定後就可以拉,

立你斯 發表在 痞客邦 留言(0) 人氣()

Step 1. 設定 capture steam數目 在alsa_xxx_init()
         err = snd_pcm_new(xxx[pcm_idx].card,
                            pcm_names[pcm_idx],   // PCM ID string

立你斯 發表在 痞客邦 留言(0) 人氣()

1.  Codec簡介

在移動設備中,Codec的作用可以歸結為4種,分別是:

  • PCM等信號進行D/A轉換,把數位的音訊信號轉換為類比信號
  • MicLinein或者其他輸入源的類比信號進行A/D轉換,把類比的聲音信號轉變CPU能夠處理的數位信號
  • 對音訊通路進行控制,比如播放音樂,收聽調頻收音機,又或者接聽電話時,音訊信號在codec內的流通路線是不一樣的
  • 對音訊信號做出相應的處理,例如音量控制,功率放大,EQ控制等等

ASoC Codec的這些功能都定義好了一些列相應的介面,以方便地對Codec進行控制。ASoCCodec驅動的一個基本要求是:驅動程式的程式碼必須要做到平臺無關性,以方便同一個Codec的程式碼不經修改即可用在不同的平臺上。以下的討論基於wolfsonCodec晶片WM8994kernel版本3.3.x

立你斯 發表在 痞客邦 留言(0) 人氣()

 

前面一節的內容我們提到,ASoC被分為Machine、Platform和Codec三大部分,其中的Machine驅動負責Platform和 Codec之間的耦合以及部分和設備或板子特定的程式碼,再次引用上一節的內容:Machine驅動負責處理機器特有的一些控制項和音訊事件(例如,當播放音 頻時,需要先行打開一個放大器);單獨的Platform和Codec驅動是不能工作的,它必須由Machine驅動把它們結合在一起才能完成整個設備的 音訊處理工作。

ASoC的一切都從Machine驅動開始,包括音效卡的註冊,綁定Platform和Codec驅動等等,下面就讓我們從Machine驅動開始討論吧。

立你斯 發表在 痞客邦 留言(0) 人氣()

1.  ASoC的由來

ASoC--ALSA System on Chip ,是建立在標準ALSA驅動層上,為了更好地支援嵌入式處理器和移動設備中的音訊Codec的一套軟體體系。在ASoc出現之前,核心對於SoC中的音訊已經有部分的支援,不過會有一些局限性:

  •    Codec驅動與SoC CPU的底層耦合過於緊密,這種不理想會導致程式碼的重複,例如,僅是wm8731的驅動,當時Linux中有分別針對4個平臺的驅動程式碼。
  •    音訊事件沒有標準的方法來通知使用者,例如耳機、麥克風的插拔和檢測,這些事件在移動設備中是非常普通的,而且通常都需要特定於機器的程式碼進行重新對音訊路徑進行配置。
  •   當進行播放或錄音時,驅動會讓整個codec處於上電狀態,這對於PC沒問題,但對於移動設備來說,這意味著浪費大量的電量。同時也不支援通過改變過取樣頻率和偏置電流來達到省電的目的。

ASoC正是為瞭解決上述種種問題而提出的,目前已經被整合至核心的程式碼樹中:sound/soc。ASoC不能單獨存在,他只是建立在標準ALSA驅動上的一個它必須和標準的ALSA驅動框架相結合才能工作。

立你斯 發表在 痞客邦 留言(0) 人氣()

Control介面


Control介面主要讓使用者空間的應用程式(alsa-lib)可以訪問和控制音訊codec晶片中的多路開關,滑動控制項等。對於Mixer(混音)來說,Control介面顯得尤為重要,從ALSA 0.9.x版本開始,所有的mixer工作都是通過control介面的API來實現的。

 

ALSA已經為AC97定義了完整的控制介面模型,如果你的Codec晶片只支援AC97介面,你可以不用關心本節的內容。

立你斯 發表在 痞客邦 留言(0) 人氣()

1. PCM是什麼

文章標籤

立你斯 發表在 痞客邦 留言(0) 人氣()


1. struct snd_card

 

1.1. snd_card是什麼

立你斯 發表在 痞客邦 留言(0) 人氣()

 

一.  概述

    ALSA是Advanced Linux Sound Architecture 的縮寫,目前已經成為了linux的主流音訊體系結構,想瞭解更多的關於ALSA的這一開源專案的資訊和知識,請查看以下網址:http://www.alsa-project.org/

    在內核設備驅動層,ALSA提供了alsa-driver,同時在應用層,ALSA為我們提供了alsa-lib,應用程式只要調用alsa-lib提供的API,即可以完成對底層音訊硬體的控制。

立你斯 發表在 痞客邦 留言(0) 人氣()

1.  Platform驅動在ASoC中的作用

 

面幾章內容已經說過,ASoC被分為MachinePlatformCodec三大部件,Platform驅動的主要作用是完成音訊資料的管理,最終通過CPU的數位音訊介面(DAI)把音訊資料傳送給Codec進行處理,最終由Codec輸出驅動耳機或者是喇叭的音信信號。在具體實現上,ASoCPlatform驅動分為兩個部分:snd_soc_platform_driversnd_soc_dai_driver。其中,platform_driver負責管理音訊資料,把音訊資料通過dma或其他操作傳送至cpu dai中,dai_driver則主要完成cpu一側的dai的參數配置,同時也會通過一定的途徑把必要的dma等參數與 snd_soc_platform_driver進行交互。

立你斯 發表在 痞客邦 留言(0) 人氣()

ALSALinux音效卡驅動的架構,下面基於linux-2.6.32描述下ALSA系統架構。ALSA系統可以分為alsa-libalsa-driver,而alsa-driver又分為core層和底層硬體層。作為開發者,我們只需移植底層硬體層,根據自己硬體特性,實現底層的移 植。而core層基本屬於ALSA標準框架,不需要自己實現。介紹ALSA框架,下面是大體框架圖。

 

立你斯 發表在 痞客邦 留言(0) 人氣()


period(
週期):硬體中中斷間的間隔時間。它表示輸入延時。
音效卡介面中有一個指標來指示音效卡硬體緩存區中當前的讀寫位置。只要介面在運行,這個指標將迴圈地指向緩存區中的某個位置。

立你斯 發表在 痞客邦 留言(0) 人氣()

  • ALSA

輸入: PulseAudio, Jack, GStreamer, Xine, SDL, ESD

輸出: Hardware, OSS

首先,讓我們從了解alsa(Advanced Linux Sound Architecture, 高級linux音頻架構)開始。 alsa直接和內核通信,並提供音頻接口功能以供調用。但是,似乎alsa做了“比當好一個驅動程序”更多的事情:為系統混音,為其他程序提供音頻輸出輸出接口,為程序員提供api。他的目標好像要同Windows的ASIO或者OS X的CoreAudio一樣,作為一個底層而穩定的後台程序運行。

立你斯 發表在 痞客邦 留言(1) 人氣()