bigbaicai

芯方式是以半导体人、电子工程师等电子行业相关领域从业人员为核心的知识经验学习、分享、交流社群。 凭借开放、合作、共赢的运营理念,聚集了来自国内外知名院校和顶尖科技公司的半导体人、电子工程师。 我们致力于营造专业、认真、有温度的分享交流环境,将高质量的内容和方案成规模地生产和分享,帮助个人和团队在芯方式找到有价值的Key。 http://www.icfans.com/

选择桌面墙纸时进入camera死机

0
阅读(184) 评论(0)

[DESCRIPTION]
复现步骤为:设置 –>显示设置->壁纸->桌面壁纸->相机,出现死机
[KEYWORD]
Camera Hang
[SOLUTION]ICfans
此问题的原因是CheckandSet(-1)函数的作用是不给当的设置传入一个固定的值,
而是通过循环判断从当前所有的有效值中选一个合适的来当作默认值;
而当进行VisCodecSetting设置时,
因为所有m_content[idx]->getStatus() 都不为 VAPP_CAMCO_SETTING_CAP_ENABLED,
导致一直在以下代码中反复循环,
for (VfxU16 idx = VAPP_CAMCO_MAX_SETTING_ITEM_COUNT - 1; idx >= 0; idx--)
{
if (m_content[idx]->getStatus() == VAPP_CAMCO_SETTING_CAP_ENABLED)
{
setValue(idx);
break;
}
}
修改方法如下:
在函数RecSizeSetting :: setDefault()中做如下修改:
RecSizeSetting :: setDefault()
{
for(VfxU32 i=0; i < count; i++)
{
VfxU32 l = 0, m = 0, n = 0;
VfxS32 p =0, q = 0;
…..
vapp_camco_recsize_vs_recqty_vs_storage_vs_codec[l][n][p][m] = VFX_TRUE;
vapp_camco_recsize_vs_recqty_vs_storage_vs_codec[l][n][q][m] = VFX_TRUE;
// when ext calling, default use the last setting (lowest)
//添加如下代码
if(i == 0 || m_settingMgr->IsExtSetting())
{
((RecSizeSetting*)(m_settingMgr->getSetting(VAPP_CAMCO_SETTING_RECSIZE)))-
>resetValue(l);
((VisQtySetting*)(m_settingMgr->getSetting(VAPP_CAMCO_SETTING_VISQTY)))-
>resetValue(n);
((VisCodecSetting*)(m_settingMgr->getSetting(VAPP_CAMCO_SETTING_VISCODEC)))-
>resetValue(m);
}
//添加如上代码