如何解决正确释放用于Camera2重复请求的目标Surface
假设我将CameraCaptureSession session1
和Surface s1
作为重复CaptureRequest
的目标。现在,我想更改输出大小。为此,我可以创建另一个具有适当大小的Surface s2
,并创建另一个CameraCaptureSession session2
。
现在,我将s2
用作未来CaptureRequests
的目标,因此不再需要s1
。此外,我只想在发布s2
之后创建s1
,这样才能节省资源。
何时确切发布s1
?我可以在s1
之后立即释放session1.close()
吗?还是应该等到onClosed(Session)
被触发后才释放s1
?
第二种方法听起来对我来说是正确的,但我对发现的optimization replaceSessionClose()
感到有些困惑。
解决方法
最好等待onClosed,尽管在最坏的情况下,您可能会错过一到两个发送到旧会话的帧,并且,如果您提早释放表面,则会在logcat中记录一些错误。 / p>
但这不会导致新会话创建失败。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。