android播放視頻時(shí)在立體聲與單聲道之間切換無變化原因分析及解決
更新時(shí)間:2013年06月02日 17:05:16 作者:
使用第三方視頻播放器,有立體聲與單聲道之間切換,發(fā)現(xiàn)切換后無作用,原因是由于在HAL層默認(rèn)沒有處理上層發(fā)的stereo 轉(zhuǎn)mono的命令,具體的解決方法如下
部分客戶客戶使用第三方視頻播放器,有立體聲與單聲道之間切換,發(fā)現(xiàn)切換后無作用
原因是由于在HAL層默認(rèn)沒有處理上層發(fā)的stereo 轉(zhuǎn)mono的命令,所以會(huì)沒有效果,
可按如下修改,添加相關(guān)處理:
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;
}
原因是由于在HAL層默認(rèn)沒有處理上層發(fā)的stereo 轉(zhuǎn)mono的命令,所以會(huì)沒有效果,
可按如下修改,添加相關(guān)處理:
1修改AudioMTKHardware.cpp
添加:static String8 keySetStereo2MonoMode = String8("EnableStereoOutput");
2.修改status_t AudioMTKHardware::setParameters(const String8 &keyValuePairs)
在EXIT_SETPARAMETERS:
之前添加:
復(fù)制代碼 代碼如下:
if (param.getInt(keySetStereo2MonoMode, value) == NO_ERROR) {
ALOGD("setParameters(): %s value=%d", keyValuePairs.string(),value);
((AudioMTKStreamManager*)mAudioMTKStreamManager)->ForceSterer2Mono(value);
}
3.修改AudioMTKStreamManager.h
添加public方法定義:
復(fù)制代碼 代碼如下:
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添加定義:
復(fù)制代碼 代碼如下:
status_t SetStereoToMonoFlagForce(bool flag);
status_t AudioMTKStreamOut::SetStereoToMonoFlagForce(bool flag)
{
ALOGD("SetStereoToMonoFlagForce = %d",flag);
mSteroToMono = flag;
return NO_ERROR;
}
您可能感興趣的文章:
- 一個(gè)html5播放視頻的video控件只支持android的默認(rèn)格式mp4和3gp
- android使用videoview播放視頻
- Android播放視頻的三種方式
- Android編程實(shí)現(xiàn)播放視頻時(shí)切換全屏并隱藏狀態(tài)欄的方法
- Android仿新浪微博/QQ空間滑動(dòng)自動(dòng)播放視頻功能
- Android編程實(shí)現(xiàn)播放視頻的方法示例
- Android多媒體教程之播放視頻的四種方法
- Android ViewPager中顯示圖片與播放視頻的填坑記錄
- Android DragVideo實(shí)現(xiàn)播放視頻時(shí)任意拖拽的方法
- android使用surfaceview+MediaPlayer播放視頻
相關(guān)文章
Android之ScrollView嵌套ListView和GridView沖突的解決方法
由于ListView,GridView本身都繼承于ScrollView,一旦在ScrollView中嵌套ScrollView,在ScrollView中嵌套使用ListView或者GridView,ListView只會(huì)顯示一行多一點(diǎn)。兩者進(jìn)行嵌套,即會(huì)發(fā)生沖突2013-09-09
Android 下載網(wǎng)絡(luò)圖片并顯示到本地
本文主要介紹了Android實(shí)現(xiàn)下載網(wǎng)絡(luò)圖片并顯示到本地功能的示例代碼。具有很好的參考價(jià)值,下面跟著小編一起來看下吧2017-03-03
Android 利用三階貝塞爾曲線繪制運(yùn)動(dòng)軌跡的示例
本篇文章主要介紹了Android 利用三階貝塞爾曲線繪制運(yùn)動(dòng)軌跡的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-03-03
Android栗子の圖片驗(yàn)證碼生成實(shí)例代碼
這篇文章主要介紹了Android栗子の圖片驗(yàn)證碼生成實(shí)例代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-12-12
Android小程序?qū)崿F(xiàn)個(gè)人信息管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Android小程序?qū)崿F(xiàn)個(gè)人信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05

