解决开机打印“03-07 12:02:23.039 E/AudioHardwareMSM8660( 130): unknown stream”的问题。

原创 2012年03月29日 20:39:01

./hardware/qcom/media/audio/msm8660/AudioPolicyManager.cpp

 759 void AudioPolicyManager::setOutputDevice(audio_io_handle_t output, uint32_t device, bool force, int delayMs)

 760 {  //设置输出设备  DEVICE_OUT_AUX_DIGITAL = 0x400,

。。。。。。。

783     // Doing this check here allows the caller to call setOutputDevice() without conditions

 784     if ((device == 0 || device == prevDevice) && !force) {

 785         LOGV("setOutputDevice() setting same device %x or null device for output %d", device, output);

 786         return;

 787     }

// setParameters会调用doRouting遍历路由,将DEVICE_OUT_AUX_DIGITAL映射为SND_DEVICE_HDMI

840     mpClientInterface->setParameters(mHardwareOutput, param.toString(), delayMs);

 841     // update stream volumes according to new device

843     AudioPolicyManagerBase::applyStreamVolumes(output, device, delayMs);

 

}

 

hardware/libhardware_legacy/audio/AudioPolicyManagerBase.cpp

2182 void AudioPolicyManagerBase::applyStreamVolumes(audio_io_handle_t output, uint32_t device, int delayMs, bool force)

2183 { //11种流类型设置音量

2184     LOGV("applyStreamVolumes() for output %d and device %x", output, device);

2185

2186     for (int stream = 0; stream < AudioSystem::NUM_STREAM_TYPES; stream++) {

2187         checkAndSetVolume(stream, mStreams[stream].mIndexCur, output, device, delayMs, force);

2188     }

2189 }

2190

 

./hardware/qcom/media/audio/msm8660/AudioPolicyManager.cpp

883 status_t AudioPolicyManager::checkAndSetVolume(int stream, int index, audio_io_handle_t output, uint32_t device, int delayMs, bool force)

 884 {

901     float volume = computeVolume(stream, index, output, device);

 902     // do not set volume if the float value did not change

 903     if ((volume != mOutputs.valueFor(output)->mCurVolume[stream]) || (stream == AudioSystem::VOICE_CALL) || (stream == AudioSystem::FM) || force) {

 905         mOutputs.valueFor(output)->mCurVolume[stream] = volume;

907         if (stream == AudioSystem::VOICE_CALL ||

 908             stream == AudioSystem::DTMF ||

 909             stream == AudioSystem::BLUETOOTH_SCO) {

 910             float voiceVolume = -1.0;

 911             // offset value to reflect actual hardware volume that never reaches 0

 912             // 1% corresponds roughly to first step in VOICE_CALL stream volume setting (see AudioService.java)

 913             volume = 0.01 + 0.99 * volume;

 914             if (stream == AudioSystem::VOICE_CALL) {

 915                 voiceVolume = (float)index/(float)mStreams[stream].mIndexMax;

 916             } else if (stream == AudioSystem::BLUETOOTH_SCO) {

 917                 voiceVolume = 1.0;

 918             }

 919             if (voiceVolume >= 0 && output == mHardwareOutput) {

 920                

 921                 mpClientInterface->setVoiceVolume(voiceVolume, delayMs);

 922             }

 923         }

 934         mpClientInterface->setStreamVolume((AudioSystem::stream_type)stream, volume, output, delayMs);

 935     }

 936

然后经过AudioPolicyService AudioSystem AudioFlinger ,最终调用到AudioHardwareMSM8660,具体见3.

 

 

1221 status_t AudioHardware::setVoiceVolume(float v)

1222 {

1223     int session_id = 0;

1224     if (v < 0.0) {

1225         LOGW("setVoiceVolume(%f) under 0.0, assuming 0.0\n", v);

1226         v = 0.0;

1227     } else if (v > 1.0) {

1228         LOGW("setVoiceVolume(%f) over 1.0, assuming 1.0\n", v);

1229         v = 1.0;

1230     }

1233     if(isStreamOnAndActive(VOICE_CALL)) {

1234         session_id = voice_session_id;

1235     } else if (isStreamOnAndActive(VOIP_CALL)) {

1236         session_id = voip_session_id;

1237     } else { //由于VOICE_CALL并没有active,(在遍历路由时决定是否active)所以。。。

1238         LOGE(" unknown stream ");

1239         return -1;

1240     }

 

1254 }

 

在设置输出设备为DEVICE_OUT_AUX_DIGITAL时,会对11种流类型设置音量,其中对VOICE_CALL类型设置音量时,由于系统没有VOICE_CALL,没有active,所以打印“unknown stream

解决开机提示“error:unknown filesystem grub rescue”的问题

生命不息,折腾不止!Window s XP、Vista、7、8、8.1、10,黑苹果,Ubuntu,优麒麟,Deepin,Phoenix OS,Peer OS,一路折腾过来,终于把我的新电脑折腾坏了,...

POI解决EXCLE导入03,07兼容性问题

项目中需要用到数据录入,由此需要在项目中做一个EXCLE导入数据功能,原先项目导入是用jxl写的,我进行用poi优化与改造。 我们先写一个工具类来判断文件的格式与版本。 /** * 获取文件名称...
  • fjnpysh
  • fjnpysh
  • 2015年08月21日 09:44
  • 391

浏览量:9912 2011-03-07 13:47 Android有效解决加载大图片时内存溢出的问题

尽量不要使用setImageBitmap或setImageResource或BitmapFactory.decodeResource来设置一张大图, 因为这些函数在完成decode后,最终都是通过j...

03-redhat-6.5升级python2.6到python2.7&安装psycopg2&连接postgresql-9.6.1(201-02-07)

1参考文档 2安装依赖包 3升级python 4安装pip 5安装psycopg2 6连接查询插入测试1、参考文档http://ruter.sundaystart.net/2015/12/03/Upd...

2010-07-09 12:03 全面解读.Net Framework源码调试详细步骤

责任编辑: TEL:(010)68476606】 .Net Framework源码已经面向大众进行开源。这大大方便了我们的开发需求。在这里我们就先为大家详细讲解一下有关.Net Framework源...
  • YaoXTao
  • YaoXTao
  • 2013年02月20日 14:29
  • 879

arm9-裸机中断过程分析(2012-02-07 11:12)

步骤1:发生中断后,跳到地址0的中断向量表;b  HandlerIRQ ;handler for IRQ interrupt 步骤2:然后跳到,中断函数HandlerIRQ ,这个函数就做了并且只是...

Linux内核源代码分析——第5章 reboot 系 统 调 用 2012-02-07 10:12:04

29298:内核中其他地方可能都没有sys_reboot的实现方法先进。其原因可以理解为:根据调 用的名字我们就可以知道,reboot系统调用可以用来重新启动机器。根据所提供的参数,它 还能够挂起...

《黑镜》S03E02<游戏测试>

故事讲述的是男主角因父亲的去世而郁郁寡欢,与母亲在家里的尴尬处境感觉要发疯,他决定出去旅游散心,然而最后一站他的卡被盗刷,他不得不赚到回家的路费。        他看到了一个游戏测试的工作,这是一个人...
  • Yel_Liu
  • Yel_Liu
  • 2017年01月22日 17:51
  • 872

e2prom_24c02记忆开机次数

  • 2016年01月12日 09:20
  • 62KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解决开机打印“03-07 12:02:23.039 E/AudioHardwareMSM8660( 130): unknown stream”的问题。
举报原因:
原因补充:

(最多只允许输入30个字)