首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

camera预览概率死机解决思路

2012-02-23 
camera预览概率死机系统平台:wince6.0硬件平台:marvell pxa303 + gt2005(2M Sensor)调试camera驱动,发现概

camera预览概率死机
系统平台:wince6.0
硬件平台:marvell pxa303 + gt2005(2M Sensor)

调试camera驱动,发现概率死机的情况,查log发现是卡在Pindevice.cpp中

HandlePinIO -〉RemoveBufferFromList:

while(( dwCounter < m_ulMaxNumOfBuffers ) && ( *ppCsStreamDesc == NULL )) //For "camera and DShow integration test" sub-case 603
  {
  if( m_pStreamDescriptorList[ dwCounter ].pCsStreamDescriptorExternal != NULL )[b][/b] {
  //REVIEW: All buffers accessed here should have been marshalled, check if try/except is needed
  __try
  {
  // We found one registered buffer. Let's return it.
  *ppCsStreamDesc = m_pStreamDescriptorList[ dwCounter ].pCsStreamDescriptorExternal;  
  *ppMappedData = m_pStreamDescriptorList[ dwCounter ].csStreamDescriptorShadow.CsStreamHeader.Data;
  *ppUnmappedData = m_pStreamDescriptorList[ dwCounter ].pCsStreamDescriptorExternal->CsStreamHeader.Data;
  m_pStreamDescriptorList[ dwCounter ].pCsStreamDescriptorExternal = NULL;
  m_pStreamDescriptorList[ dwCounter ].csStreamDescriptorShadow.CsStreamHeader.Data = *ppUnmappedData;
  break;
  }
  __except(GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
  {
  DEBUGMSG(ZONE_IOCTL|ZONE_ERROR, (_T("PIN_IOControl: RemoveBufferFromList - Access Violation.\r\n"))) ;  
  RetVal = false;
  }  
  }

  dwCounter++;
  }

其中红色条件语句不满足,返回出错,此后一直在这边循环。。。

本来在HandlePinIO中调用WriteMsgQueue,通知应用提取数据,也即应该调用EnqueueDescriptor,同时会在EnqueueDescriptor中对m_pStreamDescriptorList进行赋值,这样RemoveBufferFromList才不会出错!但是不知为何EnqueueDescriptor一直得不到触发,这个是微软上层封装的,无从查起,不知有哪位高人碰到过类似的问题,请提点一两,感激不尽,哈哈!!!!!

[解决办法]

探讨

发现问题跟论坛中另一个贴子描述的情况一样
http://topic.csdn.net/u/20100126/17/10faca15-2128-4fee-8af4-e54ce26c4a6b.html

。。但是我按照楼主的改法还是没有解决,出错的原因还不太一样,不是EnqueueDescriptor传进来的参数出错,而是连PIN_IOControl -〉PinHandleBufferRequ……

[解决办法]
帮顶了,camera的驱动弄了很长一段时间,发现还是无法彻底弄明白。准备有时间继续研究呢。
[解决办法]
以前是有碰到过,因为设置预览的区域不同导致概率性死机的问题,
最后驱动发现camera本身的驱动没问题,是渲染那块出问题的情况发生

热点排行