天天看點

BES LINEIN 講解

  下面來說下LINEIN 模式,主要是用來給自己做個備份,友善以後自己檢視等

我們都知道LINEIN模式有進過藍牙晶片處理和直接輸出兩種情況。

      1、進過藍牙晶片:這種情況是需要我們在軟體上去做處理了,下面會說應怎麼在代碼裡實作

      2、直接輸出:這種情況是通過3.5mm的座子直接将音頻信号輸出到喇叭,中間不需要做處理,是以軟體上就不需要做什麼處理了。這種相對于軟體來說是最簡單的,軟體上不需要做任何操作,隻需硬體上實作就好。

一般在BES的代碼中都有LINEIN 模式相關的代碼,所該部分的代碼都在 AUDIO_LINEIN 宏中定義着的。是以想使用LINEIN功能的時候就需要将宏打開。

嘿嘿,在打開AUDIO_LINEIN 宏的時候你會發現在 mk 檔案中沒有定義該宏

BES LINEIN 講解

  這樣的情況我們應該怎麼辦呢,他原始代碼都沒有定義這個宏,那會不會是不支援LINEIN 的功能呢?

不要慌,我們可以自己添加一個宏定義。就像是自己添加一個宏定義一樣,如下圖:

BES LINEIN 講解

添加好宏定義之後就是配置好LINEIN的輸入了。

講到輸入我要提個醒,不能單端輸入,LINEIN的左右聲道需要分别對應一個mic+作為輸入。否則會出現問題。下面說下有哪些問題:

    1、在剛剛進入該模式的時候就會出現當機,當機的log就不放上來了。下面截圖看下當機的部分

BES LINEIN 講解

  上圖我們都可以看得出來,代碼中已經将這裡的通道是2。當然了你也可以将該部分修改為通道1,修改之後再進入該模式的時候是不會出現當機,但是會導緻出現第二種問題了

2、輸出的音質很差,人聲基本上沒有

好了,上面就是單端輸入導緻出現的問題,也就表示這LINEIN模式不能使用一個mic作為LINEIN的左右聲道的輸入。下面貼出正确的接線圖

BES LINEIN 講解

    現在硬體上需要注意的地方已經解決了,下面就來說下 LINEIN 的輸入配置了。我們在tgt_hardware.c中可以看到LINEIN相關的配置,是以我們隻需配置好輸入的mic口就好

BES LINEIN 講解
BES LINEIN 講解

以上的這些配置好之後就可以正常的使用了,代碼中不需要更改一些東西都是好的。

下面就是調用了直接調用下面的函數就使用LINEIN了

#ifdef AUDIO_LINEIN

        app_audio_manager_sendrequest(APP_BT_STREAM_MANAGER_START,BT_STREAM_LINEIN, BT_DEVICE_ID_1,MAX_RECORD_NUM);

#endif

通過上面的函數我們可以看出來,第二個參數就被我們設定成了LINEIN模式了。是以在進入這個模式之前會将BT或者USB模式下的音頻通道關閉再打開LINEIN模式的音頻通道。

如果我不想用LINEIN模式想用BT模式了,那麼我們就需要怎麼操作呢?

     首先将LINEIN模式下的通道關閉            app_audio_manager_sendrequest(APP_BT_STREAM_MANAGER_STOP,BT_STREAM_LINEIN, BT_DEVICE_ID_1,MAX_RECORD_NUM);

      然後打開BT模式下的通道

 app_audio_manager_sendrequest(APP_BT_STREAM_MANAGER_START,BT_STREAM_MEDIA, BT_DEVICE_ID_1,MAX_RECORD_NUM);

當然在切換的過程中需要注意會出現當機的情況,具體出現怎麼樣當機需要拿到機器調試,這裡就不過多的說了。

注意:預設情況下LINEIN的輸入增益是根據mic的增益去設定,是以使用的時候需要自己重新更改增益

增益對應的數組如下圖:

BES LINEIN 講解

對應的值有下圖中的增益決定

BES LINEIN 講解

   上面圖中的增益也是通話中的。

LINEIN模式下的輸入增益在哪裡修改一下忘記了,隻能後面做到這個功能在去找了。

BES LINEIN 講解