Loading services/camera/libcameraservice/api1/CameraClient.cpp +19 −12 Original line number Diff line number Diff line Loading @@ -508,7 +508,7 @@ void CameraClient::releaseRecordingFrame(const sp<IMemory>& mem) { void CameraClient::releaseRecordingFrameHandle(native_handle_t *handle) { if (handle == nullptr) return; Mutex::Autolock lock(mLock); sp<IMemory> dataPtr; { Mutex::Autolock l(mAvailableCallbackBuffersLock); Loading @@ -532,17 +532,22 @@ void CameraClient::releaseRecordingFrameHandle(native_handle_t *handle) { return; } if (mHardware != nullptr) { VideoNativeHandleMetadata *metadata = (VideoNativeHandleMetadata*)(dataPtr->pointer()); metadata->eType = kMetadataBufferTypeNativeHandleSource; metadata->pHandle = handle; mHardware->releaseRecordingFrame(dataPtr); } } void CameraClient::releaseRecordingFrameHandleBatch(const std::vector<native_handle_t*>& handles) { Mutex::Autolock lock(mLock); bool disconnected = (mHardware == nullptr); size_t n = handles.size(); std::vector<sp<IMemory>> frames; if (!disconnected) { frames.reserve(n); } bool error = false; for (auto& handle : handles) { sp<IMemory> dataPtr; Loading @@ -566,18 +571,20 @@ void CameraClient::releaseRecordingFrameHandleBatch(const std::vector<native_han break; } if (!disconnected) { VideoNativeHandleMetadata *metadata = (VideoNativeHandleMetadata*)(dataPtr->pointer()); metadata->eType = kMetadataBufferTypeNativeHandleSource; metadata->pHandle = handle; frames.push_back(dataPtr); } } if (error) { for (auto& handle : handles) { native_handle_close(handle); native_handle_delete(handle); } } else { } else if (!disconnected) { mHardware->releaseRecordingFrameBatch(frames); } return; Loading Loading
services/camera/libcameraservice/api1/CameraClient.cpp +19 −12 Original line number Diff line number Diff line Loading @@ -508,7 +508,7 @@ void CameraClient::releaseRecordingFrame(const sp<IMemory>& mem) { void CameraClient::releaseRecordingFrameHandle(native_handle_t *handle) { if (handle == nullptr) return; Mutex::Autolock lock(mLock); sp<IMemory> dataPtr; { Mutex::Autolock l(mAvailableCallbackBuffersLock); Loading @@ -532,17 +532,22 @@ void CameraClient::releaseRecordingFrameHandle(native_handle_t *handle) { return; } if (mHardware != nullptr) { VideoNativeHandleMetadata *metadata = (VideoNativeHandleMetadata*)(dataPtr->pointer()); metadata->eType = kMetadataBufferTypeNativeHandleSource; metadata->pHandle = handle; mHardware->releaseRecordingFrame(dataPtr); } } void CameraClient::releaseRecordingFrameHandleBatch(const std::vector<native_handle_t*>& handles) { Mutex::Autolock lock(mLock); bool disconnected = (mHardware == nullptr); size_t n = handles.size(); std::vector<sp<IMemory>> frames; if (!disconnected) { frames.reserve(n); } bool error = false; for (auto& handle : handles) { sp<IMemory> dataPtr; Loading @@ -566,18 +571,20 @@ void CameraClient::releaseRecordingFrameHandleBatch(const std::vector<native_han break; } if (!disconnected) { VideoNativeHandleMetadata *metadata = (VideoNativeHandleMetadata*)(dataPtr->pointer()); metadata->eType = kMetadataBufferTypeNativeHandleSource; metadata->pHandle = handle; frames.push_back(dataPtr); } } if (error) { for (auto& handle : handles) { native_handle_close(handle); native_handle_delete(handle); } } else { } else if (!disconnected) { mHardware->releaseRecordingFrameBatch(frames); } return; Loading