阅读:3415回复:0

音量相关的两个问题

楼主#
更多 发布于:2021-06-04 01:31
972的音量有两个问题:
1. 声音曲线不合理,音量调到50%左右就几乎听不到声音了,
修改audio_policy_volumes.xml里对应通道的曲线,通常按0-1-33-66-100来设置。如果数学基础好,可以自己设计一个SPEAKER_CURVE,默认的好像是自然对数x常量,没验证过。
2. 最大音量很小:音量初始化有两个地方:ini文件里有个source_gain和post_gain,SoundEffectManager.java里有个AUDIO_PRESCALE_DEFAULT_ARRAY,前者在驱动加载时初始化,能调节总的最大音量或者某个输出设备(speaker/HP/SPDIF),后者在service启动时初始化,只能调节系统总最大音量。看代码才知道,两者对应着10倍的关系,如果两边参数不一致,会导致开机进launcher前后几秒钟内声音有差异。


嗯,ini的source_gain还有个bug,不能配置media的音量,只有AV/atv/hdmi/dtv这4个,不知道是他是不是故意的,还是故意的

if (pdata->s_gain.enable) {
                pdata->s_gain.atv = DbToAmpl(pdata->s_gain.atv);
                pdata->s_gain.dtv = DbToAmpl(pdata->s_gain.dtv);
                pdata->s_gain.hdmi = DbToAmpl(pdata->s_gain.hdmi);
                pdata->s_gain.av = DbToAmpl(pdata->s_gain.av);
                pdata->s_gain.media = DbToAmpl(pdata->s_gain.media);
            }


static int parse_audio_source_gain_data(dictionary *pIniParser, struct eq_drc_data *p_attr)

{
    p_attr->s_gain.enable = iniparser_getboolean(pIniParser, "source_gain:sg_enable", 0);
    if (!p_attr->s_gain.enable) {
        ITEM_LOGD("%s, Section -> [source_gain] is disable!\n", __FUNCTION__);
        return 0;
    }


    p_attr->s_gain.atv = iniparser_getdouble(pIniParser, "source_gain:atv", 0);
    ITEM_LOGD("%s, atv is (%f)\n", __FUNCTION__, p_attr->s_gain.atv);


    p_attr->s_gain.dtv = iniparser_getdouble(pIniParser, "source_gain:dtv", 0);
    ITEM_LOGD("%s, dtv is (%f)\n", __FUNCTION__, p_attr->s_gain.dtv);


    p_attr->s_gain.hdmi = iniparser_getdouble(pIniParser, "source_gain:hdmi", 0);
    ITEM_LOGD("%s, hdmi is (%f)\n", __FUNCTION__, p_attr->s_gain.hdmi);


    p_attr->s_gain.av = iniparser_getdouble(pIniParser, "source_gain:av", 0);
    ITEM_LOGD("%s, av is ((%f)\n", __FUNCTION__, p_attr->s_gain.av);


    return 0;
}

最新喜欢:

zhangxiaojianzhangx... VastStarGamesVastSt...
游客

返回顶部