适当释放用于 Camera2 重复请求的目标 Surface
Properly release target Surface used for Camera2 repeating request
假设我有 CameraCaptureSession session1
和 Surface s1
作为重复 CaptureRequest
的目标。现在我想更改输出大小。为此,我可以创建另一个具有适当大小的 Surface s2
并创建另一个 CameraCaptureSession session2
。
现在我将使用 s2
作为未来 CaptureRequests
的目标,因此我不再需要 s1
。而且,我想在 s1
释放后才创建 s2
,这样我可以节省资源。
具体 s1
什么时候可以发布?我可以在 session1.close()
之后立即释放 s1
还是应该等到 onClosed(Session)
被触发然后才释放 s1
?
第二种方法对我来说听起来是正确的,但我对我发现的 optimization replaceSessionClose()
有点困惑。
最好等待 onClosed,但在最坏的情况下,您会错过发送到旧会话的一两个帧,并且 logcat 中会出现一些错误记录,如果您尽早释放表面。
但不会导致新session创建失败
假设我有 CameraCaptureSession session1
和 Surface s1
作为重复 CaptureRequest
的目标。现在我想更改输出大小。为此,我可以创建另一个具有适当大小的 Surface s2
并创建另一个 CameraCaptureSession session2
。
现在我将使用 s2
作为未来 CaptureRequests
的目标,因此我不再需要 s1
。而且,我想在 s1
释放后才创建 s2
,这样我可以节省资源。
具体 s1
什么时候可以发布?我可以在 session1.close()
之后立即释放 s1
还是应该等到 onClosed(Session)
被触发然后才释放 s1
?
第二种方法对我来说听起来是正确的,但我对我发现的 optimization replaceSessionClose()
有点困惑。
最好等待 onClosed,但在最坏的情况下,您会错过发送到旧会话的一两个帧,并且 logcat 中会出现一些错误记录,如果您尽早释放表面。
但不会导致新session创建失败