Add some move constructors and assignment operators to CameraMetadata.

This avoids unnecessary copying of camera metadata which can get
expensive in cases of large camera metadata blobs.

Bug: 71727540

Test: GCA (sanity)
Test: Add CallStack::logStack() in CameraMetadata's move asignment
      operator -> see that it gets called for every insertResultLocked.

Change-Id: I6c75c7ce5267126916c865b028e5f7c7f50b763b
Signed-off-by: Jayant Chowdhary <jchowdhary@google.com>
diff --git a/camera/CameraMetadata.cpp b/camera/CameraMetadata.cpp
index 15c295e..4745ee8 100644
--- a/camera/CameraMetadata.cpp
+++ b/camera/CameraMetadata.cpp
@@ -50,6 +50,15 @@
     mBuffer = clone_camera_metadata(other.mBuffer);
 }
 
+CameraMetadata::CameraMetadata(CameraMetadata &&other) :mBuffer(NULL),  mLocked(false) {
+    acquire(other);
+}
+
+CameraMetadata &CameraMetadata::operator=(CameraMetadata &&other) {
+    acquire(other);
+    return *this;
+}
+
 CameraMetadata::CameraMetadata(camera_metadata_t *buffer) :
         mBuffer(NULL), mLocked(false) {
     acquire(buffer);