diff --git a/camera/ndk/impl/ACameraMetadata.cpp b/camera/ndk/impl/ACameraMetadata.cpp
index 18c5d3c..1bbb9c2 100644
--- a/camera/ndk/impl/ACameraMetadata.cpp
+++ b/camera/ndk/impl/ACameraMetadata.cpp
@@ -28,33 +28,24 @@
  * ACameraMetadata Implementation
  */
 ACameraMetadata::ACameraMetadata(camera_metadata_t* buffer, ACAMERA_METADATA_TYPE type) :
-        mData(new CameraMetadata(buffer)),
-        mOwnsData(true),
+        mData(std::make_shared<CameraMetadata>(buffer)),
         mType(type) {
     init();
 }
 
-ACameraMetadata::ACameraMetadata(CameraMetadata* cameraMetadata, ACAMERA_METADATA_TYPE type) :
+ACameraMetadata::ACameraMetadata(const std::shared_ptr<CameraMetadata>& cameraMetadata,
+        ACAMERA_METADATA_TYPE type) :
         mData(cameraMetadata),
-        mOwnsData(false),
         mType(type) {
     init();
 }
 
 ACameraMetadata::ACameraMetadata(const ACameraMetadata& other) :
-        mOwnsData(other.mOwnsData),
+        mData(std::make_shared<CameraMetadata>(*(other.mData))),
         mType(other.mType) {
-    if (other.mOwnsData) {
-        mData = new CameraMetadata(*(other.mData));
-    } else {
-        mData = other.mData;
-    }
 }
 
 ACameraMetadata::~ACameraMetadata() {
-    if (mOwnsData) {
-        delete mData;
-    }
 }
 
 void
@@ -373,7 +364,7 @@
 
     Mutex::Autolock _l(mLock);
 
-    camera_metadata_ro_entry rawEntry = static_cast<const CameraMetadata*>(mData)->find(tag);
+    camera_metadata_ro_entry rawEntry = static_cast<const CameraMetadata*>(mData.get())->find(tag);
     if (rawEntry.count == 0) {
         ALOGE("%s: cannot find metadata tag %d", __FUNCTION__, tag);
         return ACAMERA_ERROR_METADATA_NOT_FOUND;
diff --git a/camera/ndk/impl/ACameraMetadata.h b/camera/ndk/impl/ACameraMetadata.h
index a57b2ff..084a60b 100644
--- a/camera/ndk/impl/ACameraMetadata.h
+++ b/camera/ndk/impl/ACameraMetadata.h
@@ -18,6 +18,7 @@
 
 #include <unordered_set>
 #include <vector>
+#include <memory>
 
 #include <sys/types.h>
 #include <utils/Mutex.h>
@@ -50,14 +51,13 @@
     // Constructs a ACameraMetadata that takes ownership of `buffer`.
     ACameraMetadata(camera_metadata_t* buffer, ACAMERA_METADATA_TYPE type);
 
-    // Constructs a ACameraMetadata that is a view of `cameraMetadata`.
-    // `cameraMetadata` will not be deleted by ~ACameraMetadata().
-    ACameraMetadata(CameraMetadata* cameraMetadata, ACAMERA_METADATA_TYPE type);
+    // Constructs a ACameraMetadata that shares its data with something else, like a Java object
+    ACameraMetadata(const std::shared_ptr<CameraMetadata>& cameraMetadata,
+            ACAMERA_METADATA_TYPE type);
 
     // Copy constructor.
     //
-    // If `other` owns its CameraMetadata, then makes a deep copy.
-    // Otherwise, the new instance is also a view of the same data.
+    // Always makes a deep copy.
     ACameraMetadata(const ACameraMetadata& other);
 
     ~ACameraMetadata();
@@ -125,9 +125,7 @@
     // Guard access of public APIs: get/update/getTags.
     mutable Mutex mLock;
 
-    CameraMetadata* mData;
-    // If true, has ownership of mData. Otherwise, mData is a view of an external instance.
-    bool mOwnsData;
+    std::shared_ptr<CameraMetadata> mData;
 
     mutable Vector<uint32_t> mTags; // Updated by `getTags()`, cleared by `update()`.
     const ACAMERA_METADATA_TYPE mType;
