HarmonyOS 执行OH\_NativeBuffer\_Map后,一定要执行OH\_NativeBuffer\_Unmap吗?

场景:通过receiver监听摄像头surfaceID得到帧图OH\_ImageNative,然后需要OH\_ImageNative→OH\_NativeBuffer→OH\_NativeBuffer\_Map(nativeBuffer, &virAddr)。得到virAddr来进行视觉处理。

问题:执行OH\_NativeBuffer\_Map后,再执行OH\_NativeBuffer\_Unmap会导致receiver接受3帧后,不再接收帧图。

而去掉OH\_NativeBuffer\_Unmap后却正常

这是为什么?OH\_NativeBuffer\_Map后不需要释放吗?

阅读 559
1 个回答

OH\_NativeBuffer\_Unmap函数被调用后,可能会导致OH\_NativeBuffer被释放掉,从而导致receiver无法接收到帧图。这种情况下,你需要确保在使用OH\_NativeBuffer之后,不要立即调用OH\_NativeBuffer\_Unmap函数,而是等到receiver接收到帧图后再执行解除映射的操作。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进