Define dvrTrackingCameraDestroy API

It actually makes more sense to have a dedicated Destroy method rather
than reuse dvrTrackingCameraStop.

Bug: 78173557
Bug: 78171546
Test: dvr_tracking-test
Change-Id: I689c2328fe8b4aa80cb3678fee38ced6617adaca
diff --git a/libs/vr/libdvr/dvr_tracking.cpp b/libs/vr/libdvr/dvr_tracking.cpp
index 5ba5a1f..5479491 100644
--- a/libs/vr/libdvr/dvr_tracking.cpp
+++ b/libs/vr/libdvr/dvr_tracking.cpp
@@ -15,6 +15,10 @@
   return -ENOSYS;
 }
 
+void dvrTrackingCameraDestroy(DvrTrackingCamera*) {
+  ALOGE("dvrTrackingCameraDestroy is not implemented.");
+}
+
 int dvrTrackingCameraStart(DvrTrackingCamera*, DvrWriteBufferQueue*) {
   ALOGE("dvrTrackingCameraCreate is not implemented.");
   return -ENOSYS;
diff --git a/libs/vr/libdvr/include/dvr/dvr_api.h b/libs/vr/libdvr/include/dvr/dvr_api.h
index 0fd7bfd..32e4d91 100644
--- a/libs/vr/libdvr/include/dvr/dvr_api.h
+++ b/libs/vr/libdvr/include/dvr/dvr_api.h
@@ -371,6 +371,7 @@
 
 // dvr_tracking.h
 typedef int (*DvrTrackingCameraCreatePtr)(DvrTrackingCamera** out_camera);
+typedef void (*DvrTrackingCameraDestroyPtr)(DvrTrackingCamera* camera);
 typedef int (*DvrTrackingCameraStartPtr)(DvrTrackingCamera* camera,
                                          DvrWriteBufferQueue* write_queue);
 typedef int (*DvrTrackingCameraStopPtr)(DvrTrackingCamera* camera);
diff --git a/libs/vr/libdvr/include/dvr/dvr_api_entries.h b/libs/vr/libdvr/include/dvr/dvr_api_entries.h
index 28c0c07..c81efc0 100644
--- a/libs/vr/libdvr/include/dvr/dvr_api_entries.h
+++ b/libs/vr/libdvr/include/dvr/dvr_api_entries.h
@@ -184,5 +184,6 @@
 
 // Tracking
 DVR_V1_API_ENTRY(TrackingCameraCreate);
+DVR_V1_API_ENTRY(TrackingCameraDestroy);
 DVR_V1_API_ENTRY(TrackingCameraStart);
 DVR_V1_API_ENTRY(TrackingCameraStop);
diff --git a/libs/vr/libdvr/include/dvr/dvr_tracking.h b/libs/vr/libdvr/include/dvr/dvr_tracking.h
index d080627..4abf0f2 100644
--- a/libs/vr/libdvr/include/dvr/dvr_tracking.h
+++ b/libs/vr/libdvr/include/dvr/dvr_tracking.h
@@ -23,6 +23,11 @@
 // @return Zero on success, or negative error code.
 int dvrTrackingCameraCreate(DvrTrackingCamera** out_camera);
 
+// Destroys a DvrTrackingCamera handle.
+//
+// @param camera The DvrTrackingCamera of interest.
+void dvrTrackingCameraDestroy(DvrTrackingCamera* camera);
+
 // Starts the DvrTrackingCamera.
 //
 // On successful return, all DvrReadBufferQueue's associated with the given
diff --git a/libs/vr/libdvr/tests/dvr_tracking-test.cpp b/libs/vr/libdvr/tests/dvr_tracking-test.cpp
index 6927283..cc83249 100644
--- a/libs/vr/libdvr/tests/dvr_tracking-test.cpp
+++ b/libs/vr/libdvr/tests/dvr_tracking-test.cpp
@@ -13,6 +13,7 @@
 
 TEST_F(DvrTrackingTest, NotImplemented) {
   ASSERT_TRUE(api_.TrackingCameraCreate != nullptr);
+  ASSERT_TRUE(api_.TrackingCameraDestroy != nullptr);
   ASSERT_TRUE(api_.TrackingCameraStart != nullptr);
   ASSERT_TRUE(api_.TrackingCameraStop != nullptr);