大家好!目前在做基于android的视频通话,我的需求是,用两个surface来显示我的视频画面和对方的视频画面。
可是现在条件限制只有一个overlay,如果不用overlay又有什么别的解决办法吗?谢谢

解决方案 »

  1.   

    Preview数据可以通过Overlay和Surface两种介质去显示。
    如果使用Surface,会调用函数registerPreviewBuffers()向Surface注册buffers。
    ISurface::BufferHeap buffers(w, h, w, h,
                                     PIXEL_FORMAT_YCbCr_420_SP,
                                     transform,
                                     0,
                                     mHardware->getPreviewHeap());
     
        status_t ret = mSurface->registerBuffers(buffers);
    其将mHardware的preview heap传递给了Surface。
      

  2.   

    在HAL层分配存储preview数据的buffers(如果buffers是在linux kernel中的camera driver中分配的,并拿到这些buffers mmap后的地址指针).将拿到的preview数据buffers地址注册到surface中.