手机拍照预览时,加上特效处理就会出现闪屏,跟具体特效有关,比如处理比较耗时的特效,闪屏会比较严重。在处理镜像效果时,只是图片的下半部分会闪,上半部分因为没有效果处理,不会闪。现在能确定是因为cpu忙导致闪屏的。大伙遇到过没,给提供下思路啊~多谢啦。

解决方案 »

  1.   

    可以考虑使用Overlay效果来叠加。
      

  2.   

    现在预览没有用overlay处理,而是通过callback的方式将数据传给上层处理。用的是surfaceflinger进行显示的。
      

  3.   

    用效果叠加处理的话,耗CPU是比较严重的,用Overlay可以设置Alpha值,加上颜色效果,可以实现某些特效,而且叠加是由硬件实现的,不需要耗CPU。
      

  4.   


    支持。
    通过callback的方式将数据传给上层处理,CPU限制是死穴
      

  5.   

    多谢各位关注,
    如果通过overlay显示的话,需要修改整个架构了,改动太大了,这是hal模块负责的,他们肯定不会同意的。
    因为在另一款产品上,也是同样架构,却没有这问题,
    cpu忙会直接导致闪屏么?
    是否会因为原始数据的问题呢?或者是原始数据没有被完全显示出来?
      

  6.   

    FrameBuffer是双Buffer进行刷新的,Back Buffer没有准备好不会更新Front Buffer,CPU耗时严重有可能造成两种现象:一是卡,帧率下降;一是闪屏,在刷新时还没有更新好数据就会发生这种情况.你们可以监测一下工作时的CPU负载.
      

  7.   


    多谢热心的Leo Luo,
    貌似不是cpu的问题,我问题定位错了。因为特效处理时cpu都在50%左右,但并没有一直闪屏,只是切屏的时候会闪。
    可能是你说的刷新时还没有更新好数据,
    不进行特效处理,改成sleep(50000),横竖屏切换的时候,当手机转到某一个角度,大概在横竖屏切换的临界点,也会闪,这时cpu仍然很低, 
    要是不sleep,也不特效处理,则不会出现闪屏。怀疑是特效处理位置不对导致。