Android TV : Mstar平台Audio Path及声音曲线配置

  在HW 修改电路之后,SW 通常也需要重新修改匹配硬件,这样才能保证功能的正常使用。

  下面以VGA 通过的line-lin 为例:  

  

  从原理图上看,VGA通道的PC audio in 是属于芯片端的pin 脚是Y3,AA4,对应的 port 是line-in 第 0 路。

  mstar 平台 audio 的映射关系包含audio in,audio out,以及内部 audio mux。对应的是board.h 文件中的三个结构体:

// audio-in , 右侧对应的是通道,左侧是对应的声音进入的port 
static AudioMux_t BOARD_AudioMux_t[BOARD_AUDIO_INPUT_SOURCE_TYPE_SIZE] =
{
    {AUDIO_DSP1_DVB_INPUT},    //AUDIO_SOURCE_DTV
    {AUDIO_DSP1_DVB_INPUT},    //AUDIO_SOURCE_DTV2
    {AUDIO_DSP4_SIF_INPUT},    //AUDIO_SOURCE_ATV
    {AUDIO_AUIN4_INPUT},       //AUDIO_SOURCE_PC
    {AUDIO_AUIN0_INPUT},       //AUDIO_SOURCE_YPbPr
    {AUDIO_NULL_INPUT},        //AUDIO_SOURCE_YPbPr2
    {AUDIO_AUIN0_INPUT},       //AUDIO_SOURCE_AV
    {AUDIO_NULL_INPUT},        //AUDIO_SOURCE_AV2
    {AUDIO_NULL_INPUT},        //AUDIO_SOURCE_AV3
    {AUDIO_NULL_INPUT},        //AUDIO_SOURCE_SV
    {AUDIO_NULL_INPUT},        //AUDIO_SOURCE_SV2
    {AUDIO_AUIN4_INPUT},       //AUDIO_SOURCE_SCART
    {AUDIO_NULL_INPUT},        //AUDIO_SOURCE_SCART2
    {AUDIO_HDMI_INPUT},        //AUDIO_SOURCE_HDMI
    {AUDIO_HDMI_INPUT},        //AUDIO_SOURCE_HDMI2
    {AUDIO_HDMI_INPUT},        //AUDIO_SOURCE_HDMI3
    {AUDIO_AUIN0_INPUT},       //AUDIO_SOURCE_DVI
    {AUDIO_AUIN0_INPUT},       //AUDIO_SOURCE_DVI2
    {AUDIO_AUIN0_INPUT},       //AUDIO_SOURCE_DVI3
    {AUDIO_NULL_INPUT},        //AUDIO_SOURCE_KTV
};
//  audio mux,右侧对应的通道也即input source,左侧对应的是耳机/喇叭的port 
static AudioMux_t BOARD_AudioPath_t[BOARD_AUDIO_PATH_TYPE_SIZE] =
{
    {AUDIO_T3_PATH_I2S},       //AUDIO_PATH_MAIN_SPEAKER
    {AUDIO_T3_PATH_AUOUT1},    //AUDIO_PATH_HP
    {AUDIO_T3_PATH_AUOUT0},    //AUDIO_PATH_LINEOUT
    {AUDIO_PATH_NULL},         //AUDIO_PATH_SIFOUT
    {AUDIO_PATH_NULL},         //AUDIO_PATH_SCART1 = SIF out
    {AUDIO_T3_PATH_AUOUT0},    //AUDIO_PATH_SCART2 = Lineout
    {AUDIO_T3_PATH_SPDIF},     //AUDIO_PATH_SPDIF
    {AUDIO_PATH_NULL},         //AUDIO_PATH_HDMI
    {AUDIO_T3_PATH_MIXER_MAIN},        // AUDIO_PATH_MIXER_MAIN
    {AUDIO_T3_PATH_MIXER_SECONDARY},        // AUDIO_PATH_MIXER_SECONDARY
    {AUDIO_PATH_NULL},                  // AUDIO_PATH_7
    {AUDIO_T3_PATH_MIXER_DMA_IN},        // AUDIO_PATH_MIXER_DMA_IN
};
// audio-out, 是输出path 的选择
static AudioOutputType_t BOARD_AudioOutputType_t[BOARD_AUDIO_OUTPUT_TYPE_SIZE] =
{
    {AUDIO_I2S_OUTPUT},    //AUDIO_PATH_MAIN_SPEAKER
    {AUDIO_AUOUT1_OUTPUT},    //AUDIO_PATH_HP
    {AUDIO_AUOUT0_OUTPUT},    //AUDIO_PATH_LINEOUT
    {AUDIO_NULL_OUTPUT},    //AUDIO_PATH_SIFOUT
    {AUDIO_NULL_OUTPUT},    //AUDIO_PATH_SCART1 = SIF out
    {AUDIO_AUOUT0_OUTPUT},    //AUDIO_PATH_SCART2 = Lineout
};

  从上面的信息可以看到,line-in 里面AUDIO_AUIN0_INPUT port 对应了YPBPR,AV,DVI,DVI2,DVI3 几个通道,未看到VGA通道,配置audio in, out ,mux 信息之后,需要在系统中生效就必须初始化,设置到寄存器中去,继续查到找到三个结构体,分别保存在systeminfo模块的m_pAudioMuxInfo,m_pAudioPathInfo,m_pAudioOutputTypeInfo三个成员中,通过下面接口获取:

@vendor\mstar\supernova\projects\systeminfo\src\SystemInfo.cpp
const AudioMux_t* SystemInfo::GetAudioInputMuxInfo()
{
    if(m_pAudioMuxInfo != NULL)
    {
        return m_pAudioMuxInfo;
    }

    ASSERT(0);
}

const AudioPath_t* SystemInfo::GetAudioPathInfo()
{
    if(m_pAudioPathInfo != NULL)
    {
        return m_pAudioPathInfo;
    }

    ASSERT(0);
}

const AudioOutputType_t* SystemInfo::GetAudioOutputTypeInfo()
{
    if(m_pAudioOutputTypeInfo != NULL)
    {
        return m_pAudioOutputTypeInfo;
    }

    ASSERT(0);
}

  接着在_InputSourceTypeToAudioInputType(vendor\mstar\supernova\projects\customization\MStarSDK\audio\mapi_audio_customer.cpp)接口中获取,根据通道进行设置:

static AUDIO_INPUT_TYPE _InputSourceTypeToAudioInputType(MAPI_INPUT_SOURCE_TYPE eSourceType)
{
    const AudioMux_t* const p_AudioInputMux = mapi_syscfg_fetch::GetInstance()->GetAudioInputMuxInfo();
    AUDIO_INPUT_TYPE eAudioInputType = AUDIO_NULL_INPUT;
    MAPI_U32 u32Port = 0xFF;

    switch(eSourceType)
    {
        case MAPI_INPUT_SOURCE_DTV:
        {
            u32Port = p_AudioInputMux[MAPI_AUDIO_SOURCE_DTV].u32Port;
            break;
        }
        ........
        case MAPI_INPUT_SOURCE_YPBPR:
        {
            u32Port = p_AudioInputMux[MAPI_AUDIO_SOURCE_YPBPR].u32Port;
            break;
        }
        case MAPI_INPUT_SOURCE_YPBPR2:
        {
            u32Port = p_AudioInputMux[MAPI_AUDIO_SOURCE_YPBPR2].u32Port;
            break;
        }

        case MAPI_INPUT_SOURCE_VGA:
        case MAPI_INPUT_SOURCE_VGA2:
        case MAPI_INPUT_SOURCE_VGA3:
        {
            u32Port = p_AudioInputMux[MAPI_AUDIO_SOURCE_PC].u32Port;
            break;
        }
        case MAPI_INPUT_SOURCE_HDMI:
        case MAPI_INPUT_SOURCE_HDMI2:
        case MAPI_INPUT_SOURCE_HDMI3:
        case MAPI_INPUT_SOURCE_HDMI4:
        {
            u32Port = p_AudioInputMux[MAPI_AUDIO_SOURCE_HDMI].u32Port;
            break;
        }
        case MAPI_INPUT_SOURCE_DVI:
        {
            u32Port = p_AudioInputMux[MAPI_AUDIO_SOURCE_DVI].u32Port;
            break;
        }

        ......
    }

    eAudioInputType = _u32PortToAudioInputType(u32Port);
    return eAudioInputType;
}

  到这里可以发现VGA,VGA2,VGA3 使用的是 audio in 结构体中的source (MAPI_AUDIO_SOURCE_PC) 对应的的port :

diff --git a/serials/MST160D_10ABQM_18443_DTMB_AH/Board.h b/serials/MST160D_10ABQM_18443_DTMB_AH/Board.h
index 24b27d5..da095f1 100755
--- a/serials/MST160D_10ABQM_18443_DTMB_AH/Board.h
+++ b/serials/MST160D_10ABQM_18443_DTMB_AH/Board.h
@@ -820,7 +820,7 @@ static AudioMux_t BOARD_AudioMux_t[BOARD_AUDIO_INPUT_SOURCE_TYPE_SIZE] =
     {AUDIO_DSP1_DVB_INPUT},    //AUDIO_SOURCE_DTV
     {AUDIO_DSP1_DVB_INPUT},    //AUDIO_SOURCE_DTV2
     {AUDIO_DSP4_SIF_INPUT},    //AUDIO_SOURCE_ATV
-    {AUDIO_AUIN4_INPUT},       //AUDIO_SOURCE_PC
+    {AUDIO_AUIN0_INPUT},       //AUDIO_SOURCE_PC
     {AUDIO_AUIN0_INPUT},       //AUDIO_SOURCE_YPbPr
     {AUDIO_NULL_INPUT},        //AUDIO_SOURCE_YPbPr2
     {AUDIO_AUIN0_INPUT},       //AUDIO_SOURCE_AV

  因此将AUDIO_AUIN4_INPUT 换成AUDIO_AUIN0_INPUT 即可。

  如果 speaker 和 headphone 同一路硬件输出,优先以speaker 为主,同时AUDIO_OUTPUT_HP 的audio path 可以配置为NULL。 

  

  更多mstar 平台音频属性,音效设置详参文件:drvAUDIO_if.h,mapi_audio_datatype.h,apiAUDIO.h,mapi_audio.h,mapi_audio_customer.cpp,mapi_audio.cpp,MSrv_SSSound.cpp

猜你喜欢

转载自www.cnblogs.com/blogs-of-lxl/p/12978759.html
今日推荐