Merge "Add AIDL Interface for DebugUtils Service"
diff --git a/camera/offlinecamera/aidl/Android.bp b/camera/offlinecamera/aidl/Android.bp
new file mode 100644
index 0000000..29d6174
--- /dev/null
+++ b/camera/offlinecamera/aidl/Android.bp
@@ -0,0 +1,28 @@
+aidl_interface {
+    name: "vendor.qti.hardware.camera.offlinecamera",
+    vendor_available: true,
+    owner: "qti",
+    srcs: [
+        "vendor/qti/hardware/camera/offlinecamera/*.aidl",
+    ],
+    imports: [
+        "android.hardware.camera.device-V1",
+    ],
+    stability: "vintf",
+    backend: {
+        cpp: {
+            enabled: false,
+        },
+        java: {
+            sdk_version: "module_current",
+            enabled: false,
+        },
+    },
+    versions_with_info: [
+        {
+            version: "1",
+            imports: ["android.hardware.camera.device-V1"],
+        },
+    ],
+
+}
diff --git a/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/.hash b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/.hash
new file mode 100644
index 0000000..b291bf1
--- /dev/null
+++ b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/.hash
@@ -0,0 +1 @@
+87f0e9b47542c7bda9575afb3ff460ba1887dfd8
diff --git a/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/vendor/qti/hardware/camera/offlinecamera/IOfflineCameraCallback.aidl b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/vendor/qti/hardware/camera/offlinecamera/IOfflineCameraCallback.aidl
new file mode 100644
index 0000000..af8cc6d
--- /dev/null
+++ b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/vendor/qti/hardware/camera/offlinecamera/IOfflineCameraCallback.aidl
@@ -0,0 +1,30 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.offlinecamera;
+@VintfStability
+interface IOfflineCameraCallback {
+  void notify(in android.hardware.camera.device.NotifyMsg[] msgs);
+  void processCaptureResult(in vendor.qti.hardware.camera.offlinecamera.OfflineCaptureResult[] results);
+  android.hardware.camera.device.BufferRequestStatus requestStreamBuffers(in vendor.qti.hardware.camera.offlinecamera.OfflineBufferRequest[] bufReqs, out vendor.qti.hardware.camera.offlinecamera.OfflineStreamBufferRet[] buffers);
+  void returnStreamBuffers(in android.hardware.camera.device.StreamBuffer[] buffers);
+}
diff --git a/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/vendor/qti/hardware/camera/offlinecamera/IOfflineCameraService.aidl b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/vendor/qti/hardware/camera/offlinecamera/IOfflineCameraService.aidl
new file mode 100644
index 0000000..e4b1f08
--- /dev/null
+++ b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/vendor/qti/hardware/camera/offlinecamera/IOfflineCameraService.aidl
@@ -0,0 +1,30 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.offlinecamera;
+@VintfStability
+interface IOfflineCameraService {
+  vendor.qti.hardware.camera.offlinecamera.OpMode[] getSupportedOpModes();
+  void registerClient(in int clientID, in vendor.qti.hardware.camera.offlinecamera.IOfflineCameraCallback callback);
+  void unRegisterClient(in int clientID);
+  vendor.qti.hardware.camera.offlinecamera.IOfflineCameraSession openOfflineSeesion(in String sessionName, in vendor.qti.hardware.camera.offlinecamera.IOfflineCameraCallback callback);
+}
diff --git a/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/vendor/qti/hardware/camera/offlinecamera/IOfflineCameraSession.aidl b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/vendor/qti/hardware/camera/offlinecamera/IOfflineCameraSession.aidl
new file mode 100644
index 0000000..ee1da68
--- /dev/null
+++ b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/vendor/qti/hardware/camera/offlinecamera/IOfflineCameraSession.aidl
@@ -0,0 +1,31 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.offlinecamera;
+@VintfStability
+interface IOfflineCameraSession {
+  void configureOfflineSession(in vendor.qti.hardware.camera.offlinecamera.OfflineSessionConfigureInfo sessionConfig);
+  int processOfflineRequest(in vendor.qti.hardware.camera.offlinecamera.OfflineRequestInfo[] requests);
+  void closeOfflineSession();
+  void OfflineSessionFlush(in vendor.qti.hardware.camera.offlinecamera.OfflineFlushInfo flush);
+  void OfflineSessionDump();
+}
diff --git a/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/vendor/qti/hardware/camera/offlinecamera/OfflineBufferRequest.aidl b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/vendor/qti/hardware/camera/offlinecamera/OfflineBufferRequest.aidl
new file mode 100644
index 0000000..ca333d8
--- /dev/null
+++ b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/vendor/qti/hardware/camera/offlinecamera/OfflineBufferRequest.aidl
@@ -0,0 +1,28 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.offlinecamera;
+@VintfStability
+parcelable OfflineBufferRequest {
+  android.hardware.camera.device.Stream streamInfo;
+  int numBuffersRequested;
+}
diff --git a/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/vendor/qti/hardware/camera/offlinecamera/OfflineCaptureResult.aidl b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/vendor/qti/hardware/camera/offlinecamera/OfflineCaptureResult.aidl
new file mode 100644
index 0000000..0341341
--- /dev/null
+++ b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/vendor/qti/hardware/camera/offlinecamera/OfflineCaptureResult.aidl
@@ -0,0 +1,29 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.offlinecamera;
+@VintfStability
+parcelable OfflineCaptureResult {
+  int frameNumber;
+  vendor.qti.hardware.camera.offlinecamera.OfflineFrameInfo result;
+  vendor.qti.hardware.camera.offlinecamera.OfflineFrameInfo input;
+}
diff --git a/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/vendor/qti/hardware/camera/offlinecamera/OfflineFlushInfo.aidl b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/vendor/qti/hardware/camera/offlinecamera/OfflineFlushInfo.aidl
new file mode 100644
index 0000000..3d9bd3c
--- /dev/null
+++ b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/vendor/qti/hardware/camera/offlinecamera/OfflineFlushInfo.aidl
@@ -0,0 +1,27 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.offlinecamera;
+@VintfStability
+parcelable OfflineFlushInfo {
+  int frameNumber;
+}
diff --git a/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/vendor/qti/hardware/camera/offlinecamera/OfflineFrameInfo.aidl b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/vendor/qti/hardware/camera/offlinecamera/OfflineFrameInfo.aidl
new file mode 100644
index 0000000..adefc1d
--- /dev/null
+++ b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/vendor/qti/hardware/camera/offlinecamera/OfflineFrameInfo.aidl
@@ -0,0 +1,29 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.offlinecamera;
+@VintfStability
+parcelable OfflineFrameInfo {
+  android.hardware.camera.device.StreamBuffer[] buffers;
+  int numPartialMetadata;
+  android.hardware.camera.device.CameraMetadata configureSetting;
+}
diff --git a/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/vendor/qti/hardware/camera/offlinecamera/OfflineRequestInfo.aidl b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/vendor/qti/hardware/camera/offlinecamera/OfflineRequestInfo.aidl
new file mode 100644
index 0000000..c63b79d
--- /dev/null
+++ b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/vendor/qti/hardware/camera/offlinecamera/OfflineRequestInfo.aidl
@@ -0,0 +1,29 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.offlinecamera;
+@VintfStability
+parcelable OfflineRequestInfo {
+  int frameNumber;
+  vendor.qti.hardware.camera.offlinecamera.OfflineFrameInfo[] inputInfo;
+  vendor.qti.hardware.camera.offlinecamera.OfflineFrameInfo resultInfo;
+}
diff --git a/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/vendor/qti/hardware/camera/offlinecamera/OfflineSessionConfigureInfo.aidl b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/vendor/qti/hardware/camera/offlinecamera/OfflineSessionConfigureInfo.aidl
new file mode 100644
index 0000000..e15e9b8
--- /dev/null
+++ b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/vendor/qti/hardware/camera/offlinecamera/OfflineSessionConfigureInfo.aidl
@@ -0,0 +1,30 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.offlinecamera;
+@VintfStability
+parcelable OfflineSessionConfigureInfo {
+  String cameraId;
+  android.hardware.camera.device.Stream[] streams;
+  vendor.qti.hardware.camera.offlinecamera.OpMode mode;
+  android.hardware.camera.device.CameraMetadata configureSetting;
+}
diff --git a/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/vendor/qti/hardware/camera/offlinecamera/OfflineStreamBufferRet.aidl b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/vendor/qti/hardware/camera/offlinecamera/OfflineStreamBufferRet.aidl
new file mode 100644
index 0000000..0b3d2c9
--- /dev/null
+++ b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/vendor/qti/hardware/camera/offlinecamera/OfflineStreamBufferRet.aidl
@@ -0,0 +1,28 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.offlinecamera;
+@VintfStability
+parcelable OfflineStreamBufferRet {
+  android.hardware.camera.device.Stream streamInfo;
+  android.hardware.camera.device.StreamBuffersVal val;
+}
diff --git a/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/vendor/qti/hardware/camera/offlinecamera/OpMode.aidl b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/vendor/qti/hardware/camera/offlinecamera/OpMode.aidl
new file mode 100644
index 0000000..cac32c1
--- /dev/null
+++ b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/1/vendor/qti/hardware/camera/offlinecamera/OpMode.aidl
@@ -0,0 +1,32 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.offlinecamera;
+@Backing(type="int") @VintfStability
+enum OpMode {
+  OFFLINEBAYER2YUV = 0,
+  OFFLINEYUV2JPEG = 1,
+  OFFLINEYUV2YUV = 2,
+  OFFLINEHWMF = 3,
+  OFFLINEQLL = 4,
+  OFFLINERAW2RAW = 5,
+}
diff --git a/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/current/vendor/qti/hardware/camera/offlinecamera/IOfflineCameraCallback.aidl b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/current/vendor/qti/hardware/camera/offlinecamera/IOfflineCameraCallback.aidl
new file mode 100644
index 0000000..af8cc6d
--- /dev/null
+++ b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/current/vendor/qti/hardware/camera/offlinecamera/IOfflineCameraCallback.aidl
@@ -0,0 +1,30 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.offlinecamera;
+@VintfStability
+interface IOfflineCameraCallback {
+  void notify(in android.hardware.camera.device.NotifyMsg[] msgs);
+  void processCaptureResult(in vendor.qti.hardware.camera.offlinecamera.OfflineCaptureResult[] results);
+  android.hardware.camera.device.BufferRequestStatus requestStreamBuffers(in vendor.qti.hardware.camera.offlinecamera.OfflineBufferRequest[] bufReqs, out vendor.qti.hardware.camera.offlinecamera.OfflineStreamBufferRet[] buffers);
+  void returnStreamBuffers(in android.hardware.camera.device.StreamBuffer[] buffers);
+}
diff --git a/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/current/vendor/qti/hardware/camera/offlinecamera/IOfflineCameraService.aidl b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/current/vendor/qti/hardware/camera/offlinecamera/IOfflineCameraService.aidl
new file mode 100644
index 0000000..e4b1f08
--- /dev/null
+++ b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/current/vendor/qti/hardware/camera/offlinecamera/IOfflineCameraService.aidl
@@ -0,0 +1,30 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.offlinecamera;
+@VintfStability
+interface IOfflineCameraService {
+  vendor.qti.hardware.camera.offlinecamera.OpMode[] getSupportedOpModes();
+  void registerClient(in int clientID, in vendor.qti.hardware.camera.offlinecamera.IOfflineCameraCallback callback);
+  void unRegisterClient(in int clientID);
+  vendor.qti.hardware.camera.offlinecamera.IOfflineCameraSession openOfflineSeesion(in String sessionName, in vendor.qti.hardware.camera.offlinecamera.IOfflineCameraCallback callback);
+}
diff --git a/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/current/vendor/qti/hardware/camera/offlinecamera/IOfflineCameraSession.aidl b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/current/vendor/qti/hardware/camera/offlinecamera/IOfflineCameraSession.aidl
new file mode 100644
index 0000000..ee1da68
--- /dev/null
+++ b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/current/vendor/qti/hardware/camera/offlinecamera/IOfflineCameraSession.aidl
@@ -0,0 +1,31 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.offlinecamera;
+@VintfStability
+interface IOfflineCameraSession {
+  void configureOfflineSession(in vendor.qti.hardware.camera.offlinecamera.OfflineSessionConfigureInfo sessionConfig);
+  int processOfflineRequest(in vendor.qti.hardware.camera.offlinecamera.OfflineRequestInfo[] requests);
+  void closeOfflineSession();
+  void OfflineSessionFlush(in vendor.qti.hardware.camera.offlinecamera.OfflineFlushInfo flush);
+  void OfflineSessionDump();
+}
diff --git a/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/current/vendor/qti/hardware/camera/offlinecamera/OfflineBufferRequest.aidl b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/current/vendor/qti/hardware/camera/offlinecamera/OfflineBufferRequest.aidl
new file mode 100644
index 0000000..ca333d8
--- /dev/null
+++ b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/current/vendor/qti/hardware/camera/offlinecamera/OfflineBufferRequest.aidl
@@ -0,0 +1,28 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.offlinecamera;
+@VintfStability
+parcelable OfflineBufferRequest {
+  android.hardware.camera.device.Stream streamInfo;
+  int numBuffersRequested;
+}
diff --git a/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/current/vendor/qti/hardware/camera/offlinecamera/OfflineCaptureResult.aidl b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/current/vendor/qti/hardware/camera/offlinecamera/OfflineCaptureResult.aidl
new file mode 100644
index 0000000..0341341
--- /dev/null
+++ b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/current/vendor/qti/hardware/camera/offlinecamera/OfflineCaptureResult.aidl
@@ -0,0 +1,29 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.offlinecamera;
+@VintfStability
+parcelable OfflineCaptureResult {
+  int frameNumber;
+  vendor.qti.hardware.camera.offlinecamera.OfflineFrameInfo result;
+  vendor.qti.hardware.camera.offlinecamera.OfflineFrameInfo input;
+}
diff --git a/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/current/vendor/qti/hardware/camera/offlinecamera/OfflineFlushInfo.aidl b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/current/vendor/qti/hardware/camera/offlinecamera/OfflineFlushInfo.aidl
new file mode 100644
index 0000000..3d9bd3c
--- /dev/null
+++ b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/current/vendor/qti/hardware/camera/offlinecamera/OfflineFlushInfo.aidl
@@ -0,0 +1,27 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.offlinecamera;
+@VintfStability
+parcelable OfflineFlushInfo {
+  int frameNumber;
+}
diff --git a/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/current/vendor/qti/hardware/camera/offlinecamera/OfflineFrameInfo.aidl b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/current/vendor/qti/hardware/camera/offlinecamera/OfflineFrameInfo.aidl
new file mode 100644
index 0000000..adefc1d
--- /dev/null
+++ b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/current/vendor/qti/hardware/camera/offlinecamera/OfflineFrameInfo.aidl
@@ -0,0 +1,29 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.offlinecamera;
+@VintfStability
+parcelable OfflineFrameInfo {
+  android.hardware.camera.device.StreamBuffer[] buffers;
+  int numPartialMetadata;
+  android.hardware.camera.device.CameraMetadata configureSetting;
+}
diff --git a/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/current/vendor/qti/hardware/camera/offlinecamera/OfflineRequestInfo.aidl b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/current/vendor/qti/hardware/camera/offlinecamera/OfflineRequestInfo.aidl
new file mode 100644
index 0000000..c63b79d
--- /dev/null
+++ b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/current/vendor/qti/hardware/camera/offlinecamera/OfflineRequestInfo.aidl
@@ -0,0 +1,29 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.offlinecamera;
+@VintfStability
+parcelable OfflineRequestInfo {
+  int frameNumber;
+  vendor.qti.hardware.camera.offlinecamera.OfflineFrameInfo[] inputInfo;
+  vendor.qti.hardware.camera.offlinecamera.OfflineFrameInfo resultInfo;
+}
diff --git a/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/current/vendor/qti/hardware/camera/offlinecamera/OfflineSessionConfigureInfo.aidl b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/current/vendor/qti/hardware/camera/offlinecamera/OfflineSessionConfigureInfo.aidl
new file mode 100644
index 0000000..e15e9b8
--- /dev/null
+++ b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/current/vendor/qti/hardware/camera/offlinecamera/OfflineSessionConfigureInfo.aidl
@@ -0,0 +1,30 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.offlinecamera;
+@VintfStability
+parcelable OfflineSessionConfigureInfo {
+  String cameraId;
+  android.hardware.camera.device.Stream[] streams;
+  vendor.qti.hardware.camera.offlinecamera.OpMode mode;
+  android.hardware.camera.device.CameraMetadata configureSetting;
+}
diff --git a/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/current/vendor/qti/hardware/camera/offlinecamera/OfflineStreamBufferRet.aidl b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/current/vendor/qti/hardware/camera/offlinecamera/OfflineStreamBufferRet.aidl
new file mode 100644
index 0000000..0b3d2c9
--- /dev/null
+++ b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/current/vendor/qti/hardware/camera/offlinecamera/OfflineStreamBufferRet.aidl
@@ -0,0 +1,28 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.offlinecamera;
+@VintfStability
+parcelable OfflineStreamBufferRet {
+  android.hardware.camera.device.Stream streamInfo;
+  android.hardware.camera.device.StreamBuffersVal val;
+}
diff --git a/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/current/vendor/qti/hardware/camera/offlinecamera/OpMode.aidl b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/current/vendor/qti/hardware/camera/offlinecamera/OpMode.aidl
new file mode 100644
index 0000000..cac32c1
--- /dev/null
+++ b/camera/offlinecamera/aidl/aidl_api/vendor.qti.hardware.camera.offlinecamera/current/vendor/qti/hardware/camera/offlinecamera/OpMode.aidl
@@ -0,0 +1,32 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.offlinecamera;
+@Backing(type="int") @VintfStability
+enum OpMode {
+  OFFLINEBAYER2YUV = 0,
+  OFFLINEYUV2JPEG = 1,
+  OFFLINEYUV2YUV = 2,
+  OFFLINEHWMF = 3,
+  OFFLINEQLL = 4,
+  OFFLINERAW2RAW = 5,
+}
diff --git a/camera/offlinecamera/aidl/vendor/qti/hardware/camera/offlinecamera/IOfflineCameraCallback.aidl b/camera/offlinecamera/aidl/vendor/qti/hardware/camera/offlinecamera/IOfflineCameraCallback.aidl
new file mode 100644
index 0000000..0b58ac2
--- /dev/null
+++ b/camera/offlinecamera/aidl/vendor/qti/hardware/camera/offlinecamera/IOfflineCameraCallback.aidl
@@ -0,0 +1,60 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+
+package vendor.qti.hardware.camera.offlinecamera;
+
+import vendor.qti.hardware.camera.offlinecamera.OfflineCaptureResult;
+import vendor.qti.hardware.camera.offlinecamera.OfflineBufferRequest;
+import vendor.qti.hardware.camera.offlinecamera.OfflineStreamBufferRet;
+import android.hardware.camera.device.NotifyMsg;
+import android.hardware.camera.device.BufferRequestStatus;
+import android.hardware.camera.device.StreamBuffer;
+
+/**
+ * Callback methods for the offline camera service module to call into the Client.
+ */
+@VintfStability
+interface IOfflineCameraCallback {
+    /**
+    * notify:
+    *
+    * service send messages back to this client
+    *
+    * @param msgs List of notification msgs to be processed by client
+    */
+    void notify(in NotifyMsg[] msgs);
+
+
+    /**
+    * processCaptureResult:
+    *
+    * service send result back to this client
+    *
+    * @param results to be processed by the client
+    *
+    */
+    void processCaptureResult(in OfflineCaptureResult[] results);
+
+    /**
+    * requestStreamBuffers:
+    *
+    * callback for service to ask for buffers from this client
+    *
+    * @param bufReqs Buffers requested by the offline camera service
+    * @param buffers the buffers returned to the offline camera service by this Client
+    */
+    BufferRequestStatus requestStreamBuffers(
+       in OfflineBufferRequest[] bufReqs, out OfflineStreamBufferRet[] buffers);
+
+    /**
+    * returnStreamBuffers:
+    *
+    * callback for service to return  buffers to this client
+    *
+    * @param buffers The stream buffers returned to the offline camera Client
+    */
+    void returnStreamBuffers(in StreamBuffer[] buffers);
+
+}
diff --git a/camera/offlinecamera/aidl/vendor/qti/hardware/camera/offlinecamera/IOfflineCameraService.aidl b/camera/offlinecamera/aidl/vendor/qti/hardware/camera/offlinecamera/IOfflineCameraService.aidl
new file mode 100644
index 0000000..50be67d
--- /dev/null
+++ b/camera/offlinecamera/aidl/vendor/qti/hardware/camera/offlinecamera/IOfflineCameraService.aidl
@@ -0,0 +1,78 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+
+package vendor.qti.hardware.camera.offlinecamera;
+
+import vendor.qti.hardware.camera.offlinecamera.OpMode;
+import vendor.qti.hardware.camera.offlinecamera.IOfflineCameraCallback;
+import vendor.qti.hardware.camera.offlinecamera.IOfflineCameraSession;
+
+
+@VintfStability
+interface IOfflineCameraService {
+
+    /**
+    * getSupportedOpModes:
+    *
+    * get all kind of supported offline snapshot opMode.
+    *
+    * @return The list of all the supported offline snapshotTypes
+    *
+    */
+    OpMode[] getSupportedOpModes();
+
+
+    /**
+    * registerClient:
+    *
+    * register a client and callback.
+    *
+    * @param  clientID  clientID for record clientInfo, just used for callbackonly mode
+    * @param  callback  Callback ops, help to return result.
+    *
+    * A service specific error will be returned on the following conditions
+    *
+    *     ILLEGAL_ARGUMENT:
+    *         The callbacks handle is invalid (for example, it is null).
+    *
+    */
+    void registerClient(in int clientID, in IOfflineCameraCallback callback);
+
+    /**
+    * unRegisterClient:
+    *
+    * unRegisterClient a client.
+    *
+    * @param  clientID  clientID for this client, just used for callbackonly mode
+    * @param  callback  Callback ops, help to return result.
+    *
+    * A service specific error will be returned on the following conditions
+    *     ILLEGAL_ARGUMENT:
+    *         clientID not registerd before.
+    *
+    */
+    void unRegisterClient(in int clientID);
+
+    /**
+    * openOfflineSeesion:
+    *
+    * Open a offline session and set the callback and then return the opened offline session handle.
+    *
+    * @param sessionName  give a session Name for this offline session
+    * @param callback     session Callback ops, help to return result
+    *
+    * A service specific error will be returned on the following conditions
+    *     INTERNAL_ERROR:
+    *         The offline session cannot be opened due to an internal
+    *         error.
+    *     ILLEGAL_ARGUMENT:
+    *         The callbacks handle or the SessiontName is invalid (for example, it is null).
+    *
+    * @return The interface to the newly-opened offline camera session
+    *
+    */
+    IOfflineCameraSession openOfflineSeesion(in String sessionName, in IOfflineCameraCallback callback);
+
+}
diff --git a/camera/offlinecamera/aidl/vendor/qti/hardware/camera/offlinecamera/IOfflineCameraSession.aidl b/camera/offlinecamera/aidl/vendor/qti/hardware/camera/offlinecamera/IOfflineCameraSession.aidl
new file mode 100644
index 0000000..c0bf007
--- /dev/null
+++ b/camera/offlinecamera/aidl/vendor/qti/hardware/camera/offlinecamera/IOfflineCameraSession.aidl
@@ -0,0 +1,102 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+
+package vendor.qti.hardware.camera.offlinecamera;
+
+import vendor.qti.hardware.camera.offlinecamera.OpMode;
+import vendor.qti.hardware.camera.offlinecamera.IOfflineCameraCallback;
+import vendor.qti.hardware.camera.offlinecamera.OfflineSessionConfigureInfo;
+import vendor.qti.hardware.camera.offlinecamera.OfflineRequestInfo;
+import vendor.qti.hardware.camera.offlinecamera.OfflineFlushInfo;
+
+@VintfStability
+interface IOfflineCameraSession {
+
+    /**
+    * configureOfflineSession:
+    *
+    * send configure information to the offline session
+    *
+    *
+    * @param sessionConfig  the info necessary for configuring the Offline Session
+    *
+    * A service specific error will be returned on the following conditions
+    *     INTERNAL_ERROR:
+    *         The offline session cannot be configured due to an internal
+    *         error.
+    *     ILLEGAL_ARGUMENT:
+    *         sessionConfig is NULL
+    *
+    */
+    void configureOfflineSession(in OfflineSessionConfigureInfo sessionConfig);
+
+    /**
+    * processOfflineRequest:
+    *
+    * send a list of capture requests to the Offline session.
+    *
+    * @param requests the request Info necessary for executing an Offline Request
+    *
+    * A service specific error will be returned on the following conditions
+    *     INTERNAL_ERROR:
+    *         The offline session cannot process request due to an internal
+    *         error.
+    *     ILLEGAL_ARGUMENT:
+    *         If the input is malformed (the settings are empty when not
+    *         allowed, the physical camera settings are invalid, there are 0
+    *         output buffers, etc) and capture processing
+    *         cannot start.
+    *
+    * @return  frameNumber populated by service, if multi JPEG requests in the same processOfflineRequest callback
+    *          , then just return the frameNumber for the first jpeg request in the array
+    *
+    */
+    int processOfflineRequest(in OfflineRequestInfo[] requests);
+
+    /**
+    * closeOfflineSession:
+    *
+    * Close an Offline Session
+    *
+    * A service specific error will be returned on the following conditions
+    *     ILLEGAL_ARGUMENT:
+    *         If sessionHandle is invalid.
+    *
+    */
+    void closeOfflineSession();
+
+    /**
+    * OfflineSessionFlush:
+    *
+    * Flush an Offline Session
+    *
+    * @param flush the flush Info necessary for Flushing an OfflineSession
+    *
+    * A service specific error will be returned on the following conditions
+    *     INTERNAL_ERROR:
+    *         The offline session cannot flush due to an internal
+    *         error.
+    *     ILLEGAL_ARGUMENT:
+    *         If sessionHandle is invalid.
+    *
+    */
+    void OfflineSessionFlush(in OfflineFlushInfo flush);
+
+    /**
+    * OfflineSessionDump:
+    *
+    * Dump the Offline Session
+    *
+    * A service specific error will be returned on the following conditions
+    *     INTERNAL_ERROR:
+    *         The offline session cannot dump due to an internal
+    *         error.
+    *     ILLEGAL_ARGUMENT:
+    *         If sessionHandle is invalid.
+    *
+    */
+    void OfflineSessionDump();
+
+}
diff --git a/camera/offlinecamera/aidl/vendor/qti/hardware/camera/offlinecamera/OfflineBufferRequest.aidl b/camera/offlinecamera/aidl/vendor/qti/hardware/camera/offlinecamera/OfflineBufferRequest.aidl
new file mode 100644
index 0000000..ecf3380
--- /dev/null
+++ b/camera/offlinecamera/aidl/vendor/qti/hardware/camera/offlinecamera/OfflineBufferRequest.aidl
@@ -0,0 +1,17 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+
+
+package vendor.qti.hardware.camera.offlinecamera;
+
+import android.hardware.camera.device.Stream;
+
+@VintfStability
+parcelable OfflineBufferRequest {
+
+    Stream              streamInfo;
+
+    int                 numBuffersRequested;
+}
diff --git a/camera/offlinecamera/aidl/vendor/qti/hardware/camera/offlinecamera/OfflineCaptureResult.aidl b/camera/offlinecamera/aidl/vendor/qti/hardware/camera/offlinecamera/OfflineCaptureResult.aidl
new file mode 100644
index 0000000..0fb7777
--- /dev/null
+++ b/camera/offlinecamera/aidl/vendor/qti/hardware/camera/offlinecamera/OfflineCaptureResult.aidl
@@ -0,0 +1,21 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+
+
+package vendor.qti.hardware.camera.offlinecamera;
+
+import vendor.qti.hardware.camera.offlinecamera.OfflineFrameInfo;
+
+@VintfStability
+parcelable OfflineCaptureResult {
+    int                 frameNumber;
+
+    OfflineFrameInfo    result;
+
+    OfflineFrameInfo    input;
+}
+
+
+
diff --git a/camera/offlinecamera/aidl/vendor/qti/hardware/camera/offlinecamera/OfflineFlushInfo.aidl b/camera/offlinecamera/aidl/vendor/qti/hardware/camera/offlinecamera/OfflineFlushInfo.aidl
new file mode 100644
index 0000000..84a56f1
--- /dev/null
+++ b/camera/offlinecamera/aidl/vendor/qti/hardware/camera/offlinecamera/OfflineFlushInfo.aidl
@@ -0,0 +1,13 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+
+
+package vendor.qti.hardware.camera.offlinecamera;
+
+@VintfStability
+parcelable OfflineFlushInfo {
+
+    int            frameNumber;
+}
diff --git a/camera/offlinecamera/aidl/vendor/qti/hardware/camera/offlinecamera/OfflineFrameInfo.aidl b/camera/offlinecamera/aidl/vendor/qti/hardware/camera/offlinecamera/OfflineFrameInfo.aidl
new file mode 100644
index 0000000..15ff617
--- /dev/null
+++ b/camera/offlinecamera/aidl/vendor/qti/hardware/camera/offlinecamera/OfflineFrameInfo.aidl
@@ -0,0 +1,21 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+
+
+
+package vendor.qti.hardware.camera.offlinecamera;
+
+import android.hardware.camera.device.CameraMetadata;
+import android.hardware.camera.device.StreamBuffer;
+
+@VintfStability
+parcelable OfflineFrameInfo {
+
+    StreamBuffer[]    buffers;
+
+    int               numPartialMetadata;
+
+    CameraMetadata    configureSetting;
+}
diff --git a/camera/offlinecamera/aidl/vendor/qti/hardware/camera/offlinecamera/OfflineRequestInfo.aidl b/camera/offlinecamera/aidl/vendor/qti/hardware/camera/offlinecamera/OfflineRequestInfo.aidl
new file mode 100644
index 0000000..53d9926
--- /dev/null
+++ b/camera/offlinecamera/aidl/vendor/qti/hardware/camera/offlinecamera/OfflineRequestInfo.aidl
@@ -0,0 +1,20 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+
+
+package vendor.qti.hardware.camera.offlinecamera;
+
+import vendor.qti.hardware.camera.offlinecamera.OfflineFrameInfo;
+
+
+@VintfStability
+parcelable OfflineRequestInfo {
+
+    int                 frameNumber;
+
+    OfflineFrameInfo[]  inputInfo;
+
+    OfflineFrameInfo    resultInfo;
+}
diff --git a/camera/offlinecamera/aidl/vendor/qti/hardware/camera/offlinecamera/OfflineSessionConfigureInfo.aidl b/camera/offlinecamera/aidl/vendor/qti/hardware/camera/offlinecamera/OfflineSessionConfigureInfo.aidl
new file mode 100644
index 0000000..f2402f4
--- /dev/null
+++ b/camera/offlinecamera/aidl/vendor/qti/hardware/camera/offlinecamera/OfflineSessionConfigureInfo.aidl
@@ -0,0 +1,23 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+
+
+
+package vendor.qti.hardware.camera.offlinecamera;
+
+import vendor.qti.hardware.camera.offlinecamera.OpMode;
+import android.hardware.camera.device.Stream;
+import android.hardware.camera.device.CameraMetadata;
+
+@VintfStability
+parcelable OfflineSessionConfigureInfo {
+    String           cameraId;
+
+    Stream[]         streams;
+
+    OpMode           mode;
+
+    CameraMetadata   configureSetting;
+}
diff --git a/camera/offlinecamera/aidl/vendor/qti/hardware/camera/offlinecamera/OfflineStreamBufferRet.aidl b/camera/offlinecamera/aidl/vendor/qti/hardware/camera/offlinecamera/OfflineStreamBufferRet.aidl
new file mode 100644
index 0000000..f90f16b
--- /dev/null
+++ b/camera/offlinecamera/aidl/vendor/qti/hardware/camera/offlinecamera/OfflineStreamBufferRet.aidl
@@ -0,0 +1,18 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+
+
+package vendor.qti.hardware.camera.offlinecamera;
+
+import android.hardware.camera.device.Stream;
+import android.hardware.camera.device.StreamBuffersVal;
+
+@VintfStability
+parcelable OfflineStreamBufferRet {
+
+    Stream              streamInfo;
+
+    StreamBuffersVal    val;
+}
diff --git a/camera/offlinecamera/aidl/vendor/qti/hardware/camera/offlinecamera/OpMode.aidl b/camera/offlinecamera/aidl/vendor/qti/hardware/camera/offlinecamera/OpMode.aidl
new file mode 100644
index 0000000..72ba165
--- /dev/null
+++ b/camera/offlinecamera/aidl/vendor/qti/hardware/camera/offlinecamera/OpMode.aidl
@@ -0,0 +1,24 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+
+
+package vendor.qti.hardware.camera.offlinecamera;
+
+
+@VintfStability
+@Backing(type="int")
+enum OpMode {
+    OFFLINEBAYER2YUV     = 0,
+
+    OFFLINEYUV2JPEG      = 1,
+
+    OFFLINEYUV2YUV       = 2,
+
+    OFFLINEHWMF          = 3,
+
+    OFFLINEQLL           = 4,
+
+    OFFLINERAW2RAW       = 5,
+}