Camera: Add external camera provider
Bug: 64874137 63873538
Change-Id: I4309874a7dedd3dd71d4bd0c2004d460421db679
diff --git a/camera/provider/2.4/default/CameraProvider.cpp b/camera/provider/2.4/default/CameraProvider.cpp
index e9588a7..2fb920c 100644
--- a/camera/provider/2.4/default/CameraProvider.cpp
+++ b/camera/provider/2.4/default/CameraProvider.cpp
@@ -19,6 +19,7 @@
#include <android/log.h>
#include "CameraProvider.h"
+#include "ExternalCameraProvider.h"
#include "CameraDevice_1_0.h"
#include "CameraDevice_3_3.h"
#include "CameraDevice_3_4.h"
@@ -36,6 +37,7 @@
namespace {
const char *kLegacyProviderName = "legacy/0";
+const char *kExternalProviderName = "external/0";
// "device@<version>/legacy/<id>"
const std::regex kDeviceNameRE("device@([0-9]+\\.[0-9]+)/legacy/(.+)");
const char *kHAL3_2 = "3.2";
@@ -571,20 +573,24 @@
}
ICameraProvider* HIDL_FETCH_ICameraProvider(const char* name) {
- if (strcmp(name, kLegacyProviderName) != 0) {
- return nullptr;
+ if (strcmp(name, kLegacyProviderName) == 0) {
+ CameraProvider* provider = new CameraProvider();
+ if (provider == nullptr) {
+ ALOGE("%s: cannot allocate camera provider!", __FUNCTION__);
+ return nullptr;
+ }
+ if (provider->isInitFailed()) {
+ ALOGE("%s: camera provider init failed!", __FUNCTION__);
+ delete provider;
+ return nullptr;
+ }
+ return provider;
+ } else if (strcmp(name, kExternalProviderName) == 0) {
+ ExternalCameraProvider* provider = new ExternalCameraProvider();
+ return provider;
}
- CameraProvider* provider = new CameraProvider();
- if (provider == nullptr) {
- ALOGE("%s: cannot allocate camera provider!", __FUNCTION__);
- return nullptr;
- }
- if (provider->isInitFailed()) {
- ALOGE("%s: camera provider init failed!", __FUNCTION__);
- delete provider;
- return nullptr;
- }
- return provider;
+ ALOGE("%s: unknown instance name: %s", __FUNCTION__, name);
+ return nullptr;
}
} // namespace implementation