欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

android播放视频时在立体声与单声道之间切换无变化原因分析及解决

程序员文章站 2023-11-12 10:09:28
部分客户客户使用第三方视频播放器,有立体声与单声道之间切换,发现切换后无作用 原因是由于在hal层默认没有处理上层发的stereo 转mono的命令,所以会没有效果, 可按...
部分客户客户使用第三方视频播放器,有立体声与单声道之间切换,发现切换后无作用
原因是由于在hal层默认没有处理上层发的stereo 转mono的命令,所以会没有效果,

可按如下修改,添加相关处理:
1修改audiomtkhardware.cpp
添加:static string8 keysetstereo2monomode = string8("enablestereooutput");

2.修改status_t audiomtkhardware::setparameters(const string8 &keyvaluepairs)
在exit_setparameters:
之前添加:
复制代码 代码如下:

if (param.getint(keysetstereo2monomode, value) == no_error) {
alogd("setparameters(): %s value=%d", keyvaluepairs.string(),value);
((audiomtkstreammanager*)maudiomtkstreammanager)->forcesterer2mono(value);
}


3.修改audiomtkstreammanager.h
添加public方法定义:
复制代码 代码如下:

status_t forcesterer2mono(bool flag);
status_t audiomtkstreammanager::forcesterer2mono(bool flag)
{
// force all stream to standby
alogd("forcesterer2mono = %d",flag);
if (mstreamoutvector.size()) {
for (size_t i = 0; i < mstreamoutvector.size() ; i++) {
audiomtkstreamout *ptempout = (audiomtkstreamout *)mstreamoutvector.valueat(i);
ptempout->setstereotomonoflagforce(flag);
}
}
return no_error;
}

4.修改audiomtkstreamout.h
t添加定义:
复制代码 代码如下:

status_t setstereotomonoflagforce(bool flag);
status_t audiomtkstreamout::setstereotomonoflagforce(bool flag)
{
alogd("setstereotomonoflagforce = %d",flag);
msterotomono = flag;
return no_error;
}