diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000000000000000000000000000000000000..e454a52586f29b8ce8a6799163eac1f875e9ac01
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,178 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
diff --git a/OAT.xml b/OAT.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c18b31e0f12e182059756552ea2d9d0b42600f88
--- /dev/null
+++ b/OAT.xml
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/README.en.md b/README.en.md
deleted file mode 100644
index 702c1b79d3890a74f90650dd6fb2e461f8271e01..0000000000000000000000000000000000000000
--- a/README.en.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# distributed_camera
-
-#### Description
-{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**}
-
-#### Software Architecture
-Software architecture description
-
-#### Installation
-
-1. xxxx
-2. xxxx
-3. xxxx
-
-#### Instructions
-
-1. xxxx
-2. xxxx
-3. xxxx
-
-#### Contribution
-
-1. Fork the repository
-2. Create Feat_xxx branch
-3. Commit your code
-4. Create Pull Request
-
-
-#### Gitee Feature
-
-1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
-2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
-3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
-4. The most valuable open source project [GVP](https://gitee.com/gvp)
-5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
-6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
diff --git a/README.md b/README.md
deleted file mode 100644
index 9e662c7bae5054347b599092bedd552cb5942e31..0000000000000000000000000000000000000000
--- a/README.md
+++ /dev/null
@@ -1,39 +0,0 @@
-# distributed_camera
-
-#### 介绍
-{**以下是 Gitee 平台说明,您可以替换此简介**
-Gitee 是 OSCHINA 推出的基于 Git 的代码托管平台(同时支持 SVN)。专为开发者提供稳定、高效、安全的云端软件开发协作平台
-无论是个人、团队、或是企业,都能够用 Gitee 实现代码托管、项目管理、协作开发。企业项目请看 [https://gitee.com/enterprises](https://gitee.com/enterprises)}
-
-#### 软件架构
-软件架构说明
-
-
-#### 安装教程
-
-1. xxxx
-2. xxxx
-3. xxxx
-
-#### 使用说明
-
-1. xxxx
-2. xxxx
-3. xxxx
-
-#### 参与贡献
-
-1. Fork 本仓库
-2. 新建 Feat_xxx 分支
-3. 提交代码
-4. 新建 Pull Request
-
-
-#### 特技
-
-1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
-2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
-3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
-4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
-5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
-6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
diff --git a/README_ZH.md b/README_ZH.md
new file mode 100644
index 0000000000000000000000000000000000000000..39f17d5bfa6f9c26d43bac715514e299b1f19798
--- /dev/null
+++ b/README_ZH.md
@@ -0,0 +1,70 @@
+# **分布式相机组件**
+
+## **简介**
+
+分布式相机是多个设备的相机同时协同使用的能力。分布式相机组件是为分布式硬件子系统提供这一能力的组件。本组件不直接对接应用,只向分布式硬件框架子系统提供C++接口。应用可以通过相机框架的接口使用分布式相机组件操作其他设备的Camera,使用方式与本地相机一致。
+
+其系统架构图如下图所示:
+
+
+
+**分布式相机接口(DistributedCameraSDK)**:为分布式硬件管理框架提供超级终端虚拟Camera使能/去使能能力,以及相机状态。
+
+**分布式相机主控端生命周期管理(DistributedCameraSourceMgr)**:通过状态机管理主控端Camera状态,负责主控端相关对象的创建销毁,以及两端的参数协商。
+
+**分布式相机被控端生命周期管理(DistributedCameraSinkMgr)**:管理被控端Camera状态,负责被控端相关对象的创建销毁,以及两端的参数协商。
+
+**通道模块(Channel)**:通过软总线连接主控端与被控端,接收发送主控端的相机指令或被控端的图像信息。
+
+**数据处理器(DataProcess)**:对相机框架返回的图像数据做处理(编解码、色彩空间转换、分辨率缩放、帧率调整,角度调整等)。
+
+**分布式相机客户端(CameraClient)**:被控端调用多媒体接口查询操作本地相机(查询相机数量及相关信息;打开、关闭、获取流等操作)。
+
+**虚拟相机HDF层实现(VirtualCameraHdf)**:在HDF层建立的虚拟Camera硬件,能够被多媒体框架发现和加载,像使用本地的Camera一样被使用
+
+## **目录**
+
+```
+/foundation/distributedhardware/distributedcamera
+├── camera_hdf # 分布式相机HAL功能
+├── common # 分布式相机公共模块
+├── interfaces # 分布式相机对外接口模块
+├── sa_profile # 分布式相机SA配置模块
+├── services # 服务模块
+│ └── cameraservice # 相机服务模块
+│ ├── base # 分布式相机两端公共部分
+│ ├── cameraoperator # 分布式相机相机操作模块
+│ ├── sinkservice # 分布式相机被控端服务模块
+│ └── sourceservice # 分布式相机主控端服务模块
+│ ├── channel # 分布式相机通道模块
+│ └── data_process # 分布式相机数据处理模块
+```
+
+## **约束**
+**语言限制**:C++语言。
+**组网环境**:必须确保设备在同一个局域网中。
+**操作系统限制**:OpenHarmony操作系统。
+
+## **说明**
+### **概念说明**
+#### 主控端(source):控制端,通过调用分布式相机能力,使用被控端的摄像头进行预览、拍照、录像等功能。
+#### 被控端(sink):被控制端,通过分布式相机接收主控端的命令,使用本地摄像头为主控端提供图像数据。
+#### Metadata:又叫元数据,是用于控制相机各种属性的参数。
+
+### **接口说明**
+分布式相机组件实现分布式硬件管理框架提供的接口,分布式硬件管理框架统一调用接口实现虚拟硬件驱动注册等功能。
+
+### **业务流程说明**
+#### **1. 设备开机启动**
+系统拉起分布式相机的SA服务,Source侧被初始化,相关模块被初始化。
+
+#### **2. 设备组网上线**
+设备上线后,分布式硬件管理框架同步到上线设备的相机硬件信息并使能,使能成功后在系统中会新增分布式相机驱动并通知到相机框架,相机框架统一管理本地相机和分布式相机驱动;上层应用通过相机框架接口可以查询到分布式相机,并按照和本地相机相同的接口使用分布式相机。
+
+#### **3. 设备下线**
+设备下线后,分布式硬件管理框架去使能下线设备的相机硬件,本地移除分布式相机驱动并通知到相机框架,此时下线设备的分布式相机不可用。
+
+## **涉及仓**
+****
+**分布式相机**
+[distributed_camera](https://gitee.com/openharmony/distributed_camera)
\ No newline at end of file
diff --git a/bundle.json b/bundle.json
new file mode 100644
index 0000000000000000000000000000000000000000..dfcb1b63a2162bcc8776a523bd4084b53896abd4
--- /dev/null
+++ b/bundle.json
@@ -0,0 +1,96 @@
+{
+ "name":"@ohos/distributed_camera",
+ "description":"distributed hardware camera",
+ "version":"3.1",
+ "author":{},
+ "repository":"https://gitee.com/openharmony/distributed_camera",
+ "license":"Apache License 2.0",
+ "publishAs":"code-segment",
+ "segment":{
+ "destPath":"foundation/distributedhardware/distributedcamera/"
+ },
+ "dirs":{},
+ "scripts":{},
+ "component":{
+ "name":"distributed_camera",
+ "subsystem":"distributedhardware",
+ "syscap":[
+ "SystemCapability.distributedhardware.distributed_camera"
+ ],
+ "features":[],
+ "adapted_system_type":[
+ "standard"
+ ],
+ "rom":"2000k",
+ "ram":"6M",
+ "deps":{
+ "components":[
+ "appexecfwk_standard",
+ "eventhandler",
+ "hiviewdfx_hilog_native",
+ "ipc",
+ "safwk",
+ "samgr_standard",
+ "dsoftbus_standard",
+ "utils_base",
+ "graphic_standard",
+ "distributed_hardware_fwk",
+ "multimedia_camera_standard",
+ "multimedia_media_standard",
+ "hdf",
+ "hidl_adapter"
+ ],
+ "third_party":[
+ "jsoncpp",
+ "googletest"
+ ]
+ },
+ "build":{
+ "sub_component":[
+ "//foundation/distributedhardware/distributedcamera/common:distributed_camera_utils",
+ "//foundation/distributedhardware/distributedcamera/interfaces/inner_kits/native_cpp/camera_sink:distributed_camera_sink_sdk",
+ "//foundation/distributedhardware/distributedcamera/interfaces/inner_kits/native_cpp/camera_source:distributed_camera_source_sdk",
+ "//foundation/distributedhardware/distributedcamera/services/cameraservice/cameraoperator/client:distributed_camera_client",
+ "//foundation/distributedhardware/distributedcamera/services/cameraservice/cameraoperator/handler:distributed_camera_handler",
+ "//foundation/distributedhardware/distributedcamera/services/cameraservice/sinkservice:distributed_camera_sink",
+ "//foundation/distributedhardware/distributedcamera/services/cameraservice/sourceservice:distributed_camera_source",
+ "//foundation/distributedhardware/distributedcamera/services/data_process:distributed_camera_data_process",
+ "//foundation/distributedhardware/distributedcamera/sa_profile:dcamera_sa_profile",
+ "//foundation/distributedhardware/distributedcamera/services/channel:distributed_camera_channel",
+ "//foundation/distributedhardware/distributedcamera/camera_hdf/interfaces/hdi_ipc/config/host:distributed_camera_host_config",
+ "//foundation/distributedhardware/distributedcamera/camera_hdf/interfaces/hdi_ipc/config/provider:distributed_camera_provider_config",
+ "//foundation/distributedhardware/distributedcamera/camera_hdf/interfaces/hdi_ipc/client:distributed_camera_hdf_client",
+ "//foundation/distributedhardware/distributedcamera/camera_hdf/hdi_impl:distributed_camera_hdf"
+ ],
+ "inner_kits":[
+ {
+ "type":"so",
+ "name":"//foundation/distributedhardware/distributedcamera/interfaces/inner_kits/native_cpp/camera_sink:distributed_camera_sink_sdk",
+ "header":{
+ "header_base":"//foundation/distributedhardware/distributedcamera/interfaces/inner_kits/native_cpp/camera_sink/include",
+ "header_files":[
+ "idistributed_camera_sink.h"
+ ]
+ }
+ },
+ {
+ "type":"so",
+ "name":"//foundation/distributedhardware/distributedcamera/interfaces/inner_kits/native_cpp/camera_source:distributed_camera_source_sdk",
+ "header":{
+ "header_base":"//foundation/distributedhardware/distributedcamera/interfaces/inner_kits/native_cpp/camera_source/include",
+ "header_files":[
+ "idistributed_camera_source.h"
+ ]
+ }
+ }
+ ],
+ "test":[
+ "//foundation/distributedhardware/distributedcamera/services/cameraservice/cameraoperator/client/test/unittest:camera_client_test",
+ "//foundation/distributedhardware/distributedcamera/services/cameraservice/cameraoperator/handler/test/unittest:camera_handler_test",
+ "//foundation/distributedhardware/distributedcamera/services/cameraservice/sinkservice/test/unittest:sink_service_test",
+ "//foundation/distributedhardware/distributedcamera/services/cameraservice/sourceservice/test/unittest:source_service_test",
+ "//foundation/distributedhardware/distributedcamera/services/cameraservice/base/test/unittest:services_base_test"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/camera_hdf/hdi_impl/BUILD.gn b/camera_hdf/hdi_impl/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..9e152f18adde15e7b4479cb30afec3c64b96ce17
--- /dev/null
+++ b/camera_hdf/hdi_impl/BUILD.gn
@@ -0,0 +1,108 @@
+# Copyright (C) 2021 Huawei Device Co., Ltd.
+# 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.
+
+import("//build/ohos.gni")
+import("//drivers/adapter/uhdf2/uhdf.gni")
+import("//foundation/distributedhardware/distributedcamera/distributedcamera.gni")
+
+ohos_shared_library("distributed_camera_hdf") {
+ include_dirs = [
+ "include/dcamera_device",
+ "include/dcamera_host",
+ "include/dcamera_provider",
+ "include/dstream_operator",
+ "include/utils",
+ "../interfaces/include",
+ "../interfaces/hdi_ipc",
+ "../interfaces/hdi_ipc/server/device",
+ "../interfaces/hdi_ipc/server/host",
+ "../interfaces/hdi_ipc/server/operator",
+ "../interfaces/hdi_ipc/server/provider",
+ "//utils/native/base/include",
+ "//utils/system/safwk/native/include",
+ "${common_path}/include/utils",
+ "${common_path}/include/constants",
+ "${fwk_common_path}/log/include",
+ "${fwk_common_path}/utils/include/",
+ "${fwk_utils_path}/include",
+ "${fwk_utils_path}/include/log",
+ "${camera_hdf_path}/camera/interfaces/include",
+ "${camera_hdf_path}/gralloc/src/adapter",
+ "${display_hdf_path}/interfaces/include",
+ "${hdf_framework_path}/include/utils",
+ "${hdf_framework_path}/include/core",
+ "${hdf_framework_path}/include/osal",
+ "${hdf_uhdf_path}/include/hdi",
+ "${hdf_uhdf_path}/osal/include",
+ "${hdf_uhdf_path}/ipc/include",
+ "${hdf_uhdf_path}/include/host",
+ "//third_party/jsoncpp/include",
+
+ #producer
+ "//foundation/graphic/standard/frameworks/surface/include",
+ "//foundation/graphic/standard/interfaces/kits/surface",
+ "//foundation/graphic/standard/utils/include",
+ "//foundation/communication/ipc/ipc/native/src/core/include",
+ "//foundation/communication/ipc/interfaces/innerkits/ipc_core/include",
+ "//foundation/multimedia/camera_standard/frameworks/native/metadata/include",
+ ]
+
+ sources = [
+ "../interfaces/hdi_ipc/server/device/dcamera_device_callback_proxy.cpp",
+ "../interfaces/hdi_ipc/server/device/dcamera_device_stub.cpp",
+ "../interfaces/hdi_ipc/server/host/dcamera_host_callback_proxy.cpp",
+ "../interfaces/hdi_ipc/server/host/dcamera_host_stub.cpp",
+ "../interfaces/hdi_ipc/server/operator/doffline_stream_operator_stub.cpp",
+ "../interfaces/hdi_ipc/server/operator/dstream_operator_callback_proxy.cpp",
+ "../interfaces/hdi_ipc/server/operator/dstream_operator_stub.cpp",
+ "../interfaces/hdi_ipc/server/provider/dcamera_provider_callback_proxy.cpp",
+ "../interfaces/hdi_ipc/server/provider/dcamera_provider_stub.cpp",
+ "src/dcamera_device/dcamera_device.cpp",
+ "src/dcamera_device/dmetadata_processor.cpp",
+ "src/dcamera_host/dcamera_host.cpp",
+ "src/dcamera_provider/dcamera_provider.cpp",
+ "src/dstream_operator/doffline_stream_operator.cpp",
+ "src/dstream_operator/dstream_operator.cpp",
+ "src/dstream_operator/dbuffer_manager.cpp",
+ "src/dstream_operator/dimage_buffer.cpp",
+ "src/dstream_operator/dcamera_steam.cpp",
+ "src/utils/dcamera.cpp"
+ ]
+
+ deps = [
+ "//utils/native/base:utils",
+ "${common_path}:distributed_camera_utils",
+ "${fwk_utils_path}:distributedhardwareutils",
+ "//drivers/adapter/uhdf2/ipc:libhdf_ipc_adapter",
+ "//foundation/communication/ipc/interfaces/innerkits/ipc_core:ipc_core",
+ "//foundation/graphic/standard/frameworks/surface:surface",
+ "//drivers/peripheral/display/hal:hdi_display_gralloc",
+ "//foundation/multimedia/camera_standard/frameworks/native/metadata:metadata",
+ "//third_party/jsoncpp:jsoncpp",
+ "${camera_hdf_path}/gralloc/src/adapter:libgralloc_adapter",
+ ]
+
+ defines = [
+ "HI_LOG_ENABLE",
+ "DH_LOG_TAG=\"distributedcamerahdf\"",
+ "LOG_DOMAIN=0xD004100",
+ ]
+
+ external_deps = [
+ "hiviewdfx_hilog_native:libhilog",
+ ]
+
+ subsystem_name = "distributedhardware"
+
+ part_name = "distributed_camera"
+}
diff --git a/camera_hdf/hdi_impl/include/dcamera_device/dcamera_device.h b/camera_hdf/hdi_impl/include/dcamera_device/dcamera_device.h
new file mode 100644
index 0000000000000000000000000000000000000000..9a42c19f900dd71b8d8b6a11295785191b40d748
--- /dev/null
+++ b/camera_hdf/hdi_impl/include/dcamera_device/dcamera_device.h
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * 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.
+ */
+
+#ifndef DISTRIBUTED_CAMERA_DEVICE_H
+#define DISTRIBUTED_CAMERA_DEVICE_H
+
+#include
+#include
+#include "dcamera_device_stub.h"
+#include "dmetadata_processor.h"
+#include "dstream_operator.h"
+#include "icamera_device_callback.h"
+#include "idistributed_camera_provider_callback.h"
+#include "types.h"
+
+namespace OHOS {
+namespace DistributedHardware {
+class DCameraDevice : public DCameraDeviceStub {
+public:
+ DCameraDevice(const std::shared_ptr &dhBase, const std::string &abilityInfo);
+ DCameraDevice() = default;
+ virtual ~DCameraDevice() = default;
+ DCameraDevice(const DCameraDevice &other) = delete;
+ DCameraDevice(DCameraDevice &&other) = delete;
+ DCameraDevice& operator=(const DCameraDevice &other) = delete;
+ DCameraDevice& operator=(DCameraDevice &&other) = delete;
+
+public:
+ CamRetCode GetStreamOperator(const OHOS::sptr &callback,
+ OHOS::sptr &streamOperator) override;
+ CamRetCode UpdateSettings(const std::shared_ptr &settings) override;
+ CamRetCode SetResultMode(const ResultCallbackMode &mode) override;
+ CamRetCode GetEnabledResults(std::vector &results) override;
+ CamRetCode EnableResult(const std::vector &results) override;
+ CamRetCode DisableResult(const std::vector &results) override;
+ void Close() override;
+
+ CamRetCode OpenDCamera(const OHOS::sptr &callback);
+ CamRetCode GetDCameraAbility(std::shared_ptr &ability);
+ DCamRetCode AcquireBuffer(int streamId, std::shared_ptr &buffer);
+ DCamRetCode ShutterBuffer(int streamId, const std::shared_ptr &buffer);
+ DCamRetCode OnSettingsResult(const std::shared_ptr &result);
+ DCamRetCode Notify(const std::shared_ptr &event);
+ void SetProviderCallback(const OHOS::sptr &callback);
+ OHOS::sptr GetProviderCallback();
+ std::string GetDCameraId();
+ bool IsOpened();
+
+private:
+ void Init(const std::string &abilityInfo);
+ DCamRetCode CreateDStreamOperator();
+ std::string GenerateCameraId(const std::shared_ptr &dhBase);
+
+private:
+ bool isOpened_;
+ std::string dCameraId_;
+ std::shared_ptr dhBase_;
+ std::string dCameraAbilityInfo_;
+ OHOS::sptr dCameraDeviceCallback_;
+ OHOS::sptr dCameraProviderCallback_;
+ OHOS::sptr dCameraStreamOperator_;
+ std::shared_ptr dMetadataProcessor_;
+
+ std::mutex openSesslock_;
+ std::condition_variable openSessCV_;
+ bool isOpenSessFailed_ = false;
+ std::mutex isOpenSessFailedlock_;
+};
+} // end namespace DistributedHardware
+} // end namespace OHOS
+
+#endif // DISTRIBUTED_CAMERA_DEVICE_H
\ No newline at end of file
diff --git a/camera_hdf/hdi_impl/include/dcamera_device/dmetadata_processor.h b/camera_hdf/hdi_impl/include/dcamera_device/dmetadata_processor.h
new file mode 100644
index 0000000000000000000000000000000000000000..e51023984680f9c82d4fe4c9016945ad926f4e4c
--- /dev/null
+++ b/camera_hdf/hdi_impl/include/dcamera_device/dmetadata_processor.h
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * 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.
+ */
+
+#ifndef DISTRIBUTED_CAMERA_METADATA_PROCESSOR_H
+#define DISTRIBUTED_CAMERA_METADATA_PROCESSOR_H
+
+#include
+#include