diff --git a/camera/Android.bp b/camera/Android.bp
new file mode 100644
index 0000000..9d647c9
--- /dev/null
+++ b/camera/Android.bp
@@ -0,0 +1,20 @@
+package {
+    default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+cc_binary {
+    name: "dump_camera",
+    srcs: ["dump_camera.cpp"],
+    cflags: [
+        "-Wall",
+        "-Wextra",
+        "-Werror",
+    ],
+    shared_libs: [
+        "libbase",
+	"libdump",
+	"liblog",
+    ],
+    vendor: true,
+    relative_install_path: "dump",
+}
diff --git a/camera/dump.mk b/camera/dump.mk
new file mode 100644
index 0000000..a3a5c7a
--- /dev/null
+++ b/camera/dump.mk
@@ -0,0 +1,4 @@
+BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/camera/sepolicy/
+
+PRODUCT_PACKAGES_DEBUG += dump_camera
+
diff --git a/camera/dump_camera.cpp b/camera/dump_camera.cpp
new file mode 100644
index 0000000..105c024
--- /dev/null
+++ b/camera/dump_camera.cpp
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#include <dump/pixel_dump.h>
+#include <android-base/properties.h>
+#include <android-base/file.h>
+
+int main() {
+    if (!::android::base::GetBoolProperty("vendor.camera.debug.camera_performance_analyzer.attach_to_bugreport", true)) {
+        return 0;
+    }
+
+    static const std::string kCameraLogDir = "/data/vendor/camera/profiler";
+    const std::string cameraDestDir = concatenatePath(BUGREPORT_PACKING_DIR, "camera");
+
+    if (mkdir(cameraDestDir.c_str(), 0777) == -1) {
+        printf("Unable to create folder: %s\n", cameraDestDir.c_str());
+        return 0;
+    }
+
+    // Attach multiple latest sessions (in case the user is running concurrent
+    // sessions or starts a new session after the one with performance issues).
+    dumpLogs(kCameraLogDir.c_str(), cameraDestDir.c_str(), 10, "session-ended-");
+    dumpLogs(kCameraLogDir.c_str(), cameraDestDir.c_str(), 5, "high-drop-rate-");
+    dumpLogs(kCameraLogDir.c_str(), cameraDestDir.c_str(), 5, "watchdog-");
+    dumpLogs(kCameraLogDir.c_str(), cameraDestDir.c_str(), 5, "camera-ended-");
+
+    return 0;
+}
+
diff --git a/camera/sepolicy/dump_camera.te b/camera/sepolicy/dump_camera.te
new file mode 100644
index 0000000..c431184
--- /dev/null
+++ b/camera/sepolicy/dump_camera.te
@@ -0,0 +1,9 @@
+pixel_bugreport(dump_camera)
+
+userdebug_or_eng(`
+  allow dump_camera vendor_camera_data_file:dir r_dir_perms;
+  allow dump_camera vendor_camera_data_file:file create_file_perms;
+  allow dump_camera radio_vendor_data_file:dir create_dir_perms;
+  allow dump_camera radio_vendor_data_file:file create_file_perms;
+  get_prop(dump_camera, vendor_camera_debug_prop)
+')
diff --git a/camera/sepolicy/file.te b/camera/sepolicy/file.te
new file mode 100644
index 0000000..5f4a142
--- /dev/null
+++ b/camera/sepolicy/file.te
@@ -0,0 +1,2 @@
+type vendor_camera_data_file, file_type, data_file_type;
+
diff --git a/camera/sepolicy/file_contexts b/camera/sepolicy/file_contexts
new file mode 100644
index 0000000..4bb5308
--- /dev/null
+++ b/camera/sepolicy/file_contexts
@@ -0,0 +1,5 @@
+/vendor/bin/dump/dump_camera           u:object_r:dump_camera_exec:s0
+
+# Data
+/data/vendor/camera(/.*)?              u:object_r:vendor_camera_data_file:s0
+
diff --git a/camera/sepolicy/property.te b/camera/sepolicy/property.te
new file mode 100644
index 0000000..19d6a2f
--- /dev/null
+++ b/camera/sepolicy/property.te
@@ -0,0 +1,2 @@
+vendor_internal_prop(vendor_camera_debug_prop)
+
diff --git a/camera/sepolicy/property_contexts b/camera/sepolicy/property_contexts
new file mode 100644
index 0000000..5e2c815
--- /dev/null
+++ b/camera/sepolicy/property_contexts
@@ -0,0 +1,2 @@
+vendor.camera.debug.       u:object_r:vendor_camera_debug_prop:s0
+
