diff --git a/tests/camera2/camera2.cpp b/tests/camera2/camera2.cpp
index 8a0e842..05f61ef 100644
--- a/tests/camera2/camera2.cpp
+++ b/tests/camera2/camera2.cpp
@@ -94,8 +94,8 @@
                 ASSERT_TRUE(NULL != info.static_camera_characteristics);
                 IF_ALOGV() {
                     std::cout << "    Static camera metadata:"  << std::endl;
-                    dump_camera_metadata(info.static_camera_characteristics,
-                            0, 1);
+                    dump_indented_camera_metadata(info.static_camera_characteristics,
+                            0, 1, 6);
                 }
             } else {
                 sCameraSupportsHal2[i] = false;
@@ -392,7 +392,7 @@
 
         IF_ALOGV() {
             std::cout << "Input request: " << std::endl;
-            dump_camera_metadata(request, 0, 1);
+            dump_indented_camera_metadata(request, 0, 1, 2);
         }
 
         res = mRequests.enqueue(request);
@@ -408,7 +408,7 @@
 
         IF_ALOGV() {
             std::cout << "Output frame:" << std::endl;
-            dump_camera_metadata(frame, 0, 1);
+            dump_indented_camera_metadata(frame, 0, 1, 2);
         }
 
         res = rawWaiter->waitForFrame(exposureTime + SEC);
@@ -502,7 +502,7 @@
 
         IF_ALOGV() {
             std::cout << "Input request template: " << std::endl;
-            dump_camera_metadata(request, 0, 1);
+            dump_indented_camera_metadata(request, 0, 1, 2);
         }
 
         int numCaptures = 10;
@@ -598,7 +598,7 @@
 
             IF_ALOGV() {
                 std::cout << "  ** Template type " << i << ":"<<std::endl;
-                dump_camera_metadata(request, 0, 2);
+                dump_indented_camera_metadata(request, 0, 2, 4);
             }
 
             free_camera_metadata(request);
@@ -668,7 +668,7 @@
 
         IF_ALOGV() {
             std::cout << "Input request: " << std::endl;
-            dump_camera_metadata(request, 0, 1);
+            dump_indented_camera_metadata(request, 0, 1, 4);
         }
 
         res = mRequests.enqueue(request);
@@ -684,7 +684,7 @@
 
         IF_ALOGV() {
             std::cout << "Output frame:" << std::endl;
-            dump_camera_metadata(frame, 0, 1);
+            dump_indented_camera_metadata(frame, 0, 1, 4);
         }
 
         res = jpegWaiter->waitForFrame(exposureTime + SEC);
