Merge "Camera: Set metadata vendor id in extension proxy service" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
2d5d1676ff
@@ -1884,6 +1884,8 @@ public class CameraMetadataNative implements Parcelable {
|
|||||||
private static native int nativeGetEntryCount(long ptr);
|
private static native int nativeGetEntryCount(long ptr);
|
||||||
@FastNative
|
@FastNative
|
||||||
private static native long nativeGetBufferSize(long ptr);
|
private static native long nativeGetBufferSize(long ptr);
|
||||||
|
@FastNative
|
||||||
|
private static native void nativeSetVendorId(long ptr, long vendorId);
|
||||||
|
|
||||||
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
|
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
|
||||||
@FastNative
|
@FastNative
|
||||||
@@ -1928,6 +1930,15 @@ public class CameraMetadataNative implements Parcelable {
|
|||||||
other.updateNativeAllocation();
|
other.updateNativeAllocation();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the native metadata vendor id.
|
||||||
|
*
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public void setVendorId(long vendorId) {
|
||||||
|
nativeSetVendorId(mMetadataPtr, vendorId);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
// #define LOG_NDEBUG 0
|
// #define LOG_NDEBUG 0
|
||||||
|
#include <memory>
|
||||||
#define LOG_TAG "CameraMetadata-JNI"
|
#define LOG_TAG "CameraMetadata-JNI"
|
||||||
#include <utils/Errors.h>
|
#include <utils/Errors.h>
|
||||||
#include <utils/Log.h>
|
#include <utils/Log.h>
|
||||||
@@ -162,6 +163,8 @@ struct Helpers {
|
|||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|
||||||
|
static void CameraMetadata_setVendorId(JNIEnv* env, jclass thiz, jlong ptr,
|
||||||
|
jlong vendorId);
|
||||||
static jobject CameraMetadata_getAllVendorKeys(JNIEnv* env, jclass thiz, jlong ptr,
|
static jobject CameraMetadata_getAllVendorKeys(JNIEnv* env, jclass thiz, jlong ptr,
|
||||||
jclass keyType);
|
jclass keyType);
|
||||||
static jint CameraMetadata_getTagFromKey(JNIEnv *env, jclass thiz, jstring keyName,
|
static jint CameraMetadata_getTagFromKey(JNIEnv *env, jclass thiz, jstring keyName,
|
||||||
@@ -596,6 +599,9 @@ static void CameraMetadata_writeToParcel(JNIEnv *env, jclass thiz, jobject parce
|
|||||||
|
|
||||||
static const JNINativeMethod gCameraMetadataMethods[] = {
|
static const JNINativeMethod gCameraMetadataMethods[] = {
|
||||||
// static methods
|
// static methods
|
||||||
|
{ "nativeSetVendorId",
|
||||||
|
"(JJ)V",
|
||||||
|
(void *)CameraMetadata_setVendorId },
|
||||||
{ "nativeGetTagFromKey",
|
{ "nativeGetTagFromKey",
|
||||||
"(Ljava/lang/String;J)I",
|
"(Ljava/lang/String;J)I",
|
||||||
(void *)CameraMetadata_getTagFromKey },
|
(void *)CameraMetadata_getTagFromKey },
|
||||||
@@ -870,6 +876,27 @@ static jobject CameraMetadata_getAllVendorKeys(JNIEnv* env, jclass thiz, jlong p
|
|||||||
return arrayList;
|
return arrayList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void CameraMetadata_setVendorId(JNIEnv *env, jclass thiz, jlong ptr,
|
||||||
|
jlong vendorId) {
|
||||||
|
ALOGV("%s", __FUNCTION__);
|
||||||
|
|
||||||
|
CameraMetadata* metadata = CameraMetadata_getPointerThrow(env, ptr);
|
||||||
|
|
||||||
|
if (metadata == NULL) {
|
||||||
|
ALOGW("%s: Returning early due to exception being thrown",
|
||||||
|
__FUNCTION__);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (metadata->isEmpty()) {
|
||||||
|
std::unique_ptr<CameraMetadata> emptyBuffer = std::make_unique<CameraMetadata>(10);
|
||||||
|
metadata->swap(*emptyBuffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
camera_metadata_t *meta = const_cast<camera_metadata_t *>(metadata->getAndLock());
|
||||||
|
set_camera_metadata_vendor_id(meta, vendorId);
|
||||||
|
metadata->unlock(meta);
|
||||||
|
}
|
||||||
|
|
||||||
static jint CameraMetadata_getTagFromKey(JNIEnv *env, jclass thiz, jstring keyName,
|
static jint CameraMetadata_getTagFromKey(JNIEnv *env, jclass thiz, jstring keyName,
|
||||||
jlong vendorId) {
|
jlong vendorId) {
|
||||||
ScopedUtfChars keyScoped(env, keyName);
|
ScopedUtfChars keyScoped(env, keyName);
|
||||||
|
|||||||
@@ -134,6 +134,7 @@ public class CameraExtensionsProxyService extends Service {
|
|||||||
(!EXTENSIONS_VERSION.startsWith(NON_INIT_VERSION_PREFIX));
|
(!EXTENSIONS_VERSION.startsWith(NON_INIT_VERSION_PREFIX));
|
||||||
|
|
||||||
private HashMap<String, CameraCharacteristics> mCharacteristicsHashMap = new HashMap<>();
|
private HashMap<String, CameraCharacteristics> mCharacteristicsHashMap = new HashMap<>();
|
||||||
|
private HashMap<String, Long> mMetadataVendorIdMap = new HashMap<>();
|
||||||
|
|
||||||
private static boolean checkForAdvancedAPI() {
|
private static boolean checkForAdvancedAPI() {
|
||||||
if (EXTENSIONS_PRESENT && EXTENSIONS_VERSION.startsWith(ADVANCED_VERSION_PREFIX)) {
|
if (EXTENSIONS_PRESENT && EXTENSIONS_VERSION.startsWith(ADVANCED_VERSION_PREFIX)) {
|
||||||
@@ -464,8 +465,16 @@ public class CameraExtensionsProxyService extends Service {
|
|||||||
String [] cameraIds = manager.getCameraIdListNoLazy();
|
String [] cameraIds = manager.getCameraIdListNoLazy();
|
||||||
if (cameraIds != null) {
|
if (cameraIds != null) {
|
||||||
for (String cameraId : cameraIds) {
|
for (String cameraId : cameraIds) {
|
||||||
mCharacteristicsHashMap.put(cameraId,
|
CameraCharacteristics chars = manager.getCameraCharacteristics(cameraId);
|
||||||
manager.getCameraCharacteristics(cameraId));
|
mCharacteristicsHashMap.put(cameraId, chars);
|
||||||
|
Object thisClass = CameraCharacteristics.Key.class;
|
||||||
|
Class<CameraCharacteristics.Key<?>> keyClass =
|
||||||
|
(Class<CameraCharacteristics.Key<?>>)thisClass;
|
||||||
|
ArrayList<CameraCharacteristics.Key<?>> vendorKeys =
|
||||||
|
chars.getNativeMetadata().getAllVendorKeys(keyClass);
|
||||||
|
if ((vendorKeys != null) && !vendorKeys.isEmpty()) {
|
||||||
|
mMetadataVendorIdMap.put(cameraId, vendorKeys.get(0).getVendorId());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (CameraAccessException e) {
|
} catch (CameraAccessException e) {
|
||||||
@@ -529,13 +538,16 @@ public class CameraExtensionsProxyService extends Service {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static CameraMetadataNative initializeParcelableMetadata(
|
private CameraMetadataNative initializeParcelableMetadata(
|
||||||
List<Pair<CaptureRequest.Key, Object>> paramList) {
|
List<Pair<CaptureRequest.Key, Object>> paramList, String cameraId) {
|
||||||
if (paramList == null) {
|
if (paramList == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
CameraMetadataNative ret = new CameraMetadataNative();
|
CameraMetadataNative ret = new CameraMetadataNative();
|
||||||
|
if (mMetadataVendorIdMap.containsKey(cameraId)) {
|
||||||
|
ret.setVendorId(mMetadataVendorIdMap.get(cameraId));
|
||||||
|
}
|
||||||
for (Pair<CaptureRequest.Key, Object> param : paramList) {
|
for (Pair<CaptureRequest.Key, Object> param : paramList) {
|
||||||
ret.set(param.first, param.second);
|
ret.set(param.first, param.second);
|
||||||
}
|
}
|
||||||
@@ -543,13 +555,16 @@ public class CameraExtensionsProxyService extends Service {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static CameraMetadataNative initializeParcelableMetadata(
|
private CameraMetadataNative initializeParcelableMetadata(
|
||||||
Map<CaptureRequest.Key<?>, Object> paramMap) {
|
Map<CaptureRequest.Key<?>, Object> paramMap, String cameraId) {
|
||||||
if (paramMap == null) {
|
if (paramMap == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
CameraMetadataNative ret = new CameraMetadataNative();
|
CameraMetadataNative ret = new CameraMetadataNative();
|
||||||
|
if (mMetadataVendorIdMap.containsKey(cameraId)) {
|
||||||
|
ret.setVendorId(mMetadataVendorIdMap.get(cameraId));
|
||||||
|
}
|
||||||
for (Map.Entry<CaptureRequest.Key<?>, Object> param : paramMap.entrySet()) {
|
for (Map.Entry<CaptureRequest.Key<?>, Object> param : paramMap.entrySet()) {
|
||||||
ret.set(((CaptureRequest.Key) param.getKey()), param.getValue());
|
ret.set(((CaptureRequest.Key) param.getKey()), param.getValue());
|
||||||
}
|
}
|
||||||
@@ -557,8 +572,8 @@ public class CameraExtensionsProxyService extends Service {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static android.hardware.camera2.extension.CaptureStageImpl initializeParcelable(
|
private android.hardware.camera2.extension.CaptureStageImpl initializeParcelable(
|
||||||
androidx.camera.extensions.impl.CaptureStageImpl captureStage) {
|
androidx.camera.extensions.impl.CaptureStageImpl captureStage, String cameraId) {
|
||||||
if (captureStage == null) {
|
if (captureStage == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -566,12 +581,13 @@ public class CameraExtensionsProxyService extends Service {
|
|||||||
android.hardware.camera2.extension.CaptureStageImpl ret =
|
android.hardware.camera2.extension.CaptureStageImpl ret =
|
||||||
new android.hardware.camera2.extension.CaptureStageImpl();
|
new android.hardware.camera2.extension.CaptureStageImpl();
|
||||||
ret.id = captureStage.getId();
|
ret.id = captureStage.getId();
|
||||||
ret.parameters = initializeParcelableMetadata(captureStage.getParameters());
|
ret.parameters = initializeParcelableMetadata(captureStage.getParameters(), cameraId);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Request initializeParcelable(RequestProcessorImpl.Request request, int requestId) {
|
private Request initializeParcelable(RequestProcessorImpl.Request request, int requestId,
|
||||||
|
String cameraId) {
|
||||||
Request ret = new Request();
|
Request ret = new Request();
|
||||||
ret.targetOutputConfigIds = new ArrayList<>();
|
ret.targetOutputConfigIds = new ArrayList<>();
|
||||||
for (int id : request.getTargetOutputConfigIds()) {
|
for (int id : request.getTargetOutputConfigIds()) {
|
||||||
@@ -580,7 +596,7 @@ public class CameraExtensionsProxyService extends Service {
|
|||||||
ret.targetOutputConfigIds.add(configId);
|
ret.targetOutputConfigIds.add(configId);
|
||||||
}
|
}
|
||||||
ret.templateId = request.getTemplateId();
|
ret.templateId = request.getTemplateId();
|
||||||
ret.parameters = initializeParcelableMetadata(request.getParameters());
|
ret.parameters = initializeParcelableMetadata(request.getParameters(), cameraId);
|
||||||
ret.requestId = requestId;
|
ret.requestId = requestId;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -933,9 +949,11 @@ public class CameraExtensionsProxyService extends Service {
|
|||||||
|
|
||||||
private class RequestProcessorStub implements RequestProcessorImpl {
|
private class RequestProcessorStub implements RequestProcessorImpl {
|
||||||
private final IRequestProcessorImpl mRequestProcessor;
|
private final IRequestProcessorImpl mRequestProcessor;
|
||||||
|
private final String mCameraId;
|
||||||
|
|
||||||
public RequestProcessorStub(IRequestProcessorImpl requestProcessor) {
|
public RequestProcessorStub(IRequestProcessorImpl requestProcessor, String cameraId) {
|
||||||
mRequestProcessor = requestProcessor;
|
mRequestProcessor = requestProcessor;
|
||||||
|
mCameraId = cameraId;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -964,7 +982,7 @@ public class CameraExtensionsProxyService extends Service {
|
|||||||
new ArrayList<>();
|
new ArrayList<>();
|
||||||
int requestId = 0;
|
int requestId = 0;
|
||||||
for (Request request : requests) {
|
for (Request request : requests) {
|
||||||
captureRequests.add(initializeParcelable(request, requestId));
|
captureRequests.add(initializeParcelable(request, requestId, mCameraId));
|
||||||
requestId++;
|
requestId++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -982,7 +1000,8 @@ public class CameraExtensionsProxyService extends Service {
|
|||||||
try {
|
try {
|
||||||
ArrayList<Request> requests = new ArrayList<>();
|
ArrayList<Request> requests = new ArrayList<>();
|
||||||
requests.add(request);
|
requests.add(request);
|
||||||
return mRequestProcessor.setRepeating(initializeParcelable(request, 0),
|
return mRequestProcessor.setRepeating(
|
||||||
|
initializeParcelable(request, 0, mCameraId),
|
||||||
new RequestCallbackStub(requests, callback));
|
new RequestCallbackStub(requests, callback));
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
Log.e(TAG, "Failed to submit repeating request due to remote exception!");
|
Log.e(TAG, "Failed to submit repeating request due to remote exception!");
|
||||||
@@ -1012,6 +1031,7 @@ public class CameraExtensionsProxyService extends Service {
|
|||||||
|
|
||||||
private class SessionProcessorImplStub extends ISessionProcessorImpl.Stub {
|
private class SessionProcessorImplStub extends ISessionProcessorImpl.Stub {
|
||||||
private final SessionProcessorImpl mSessionProcessor;
|
private final SessionProcessorImpl mSessionProcessor;
|
||||||
|
private String mCameraId = null;
|
||||||
|
|
||||||
public SessionProcessorImplStub(SessionProcessorImpl sessionProcessor) {
|
public SessionProcessorImplStub(SessionProcessorImpl sessionProcessor) {
|
||||||
mSessionProcessor = sessionProcessor;
|
mSessionProcessor = sessionProcessor;
|
||||||
@@ -1074,7 +1094,8 @@ public class CameraExtensionsProxyService extends Service {
|
|||||||
}
|
}
|
||||||
ret.sessionTemplateId = sessionConfig.getSessionTemplateId();
|
ret.sessionTemplateId = sessionConfig.getSessionTemplateId();
|
||||||
ret.sessionParameter = initializeParcelableMetadata(
|
ret.sessionParameter = initializeParcelableMetadata(
|
||||||
sessionConfig.getSessionParameters());
|
sessionConfig.getSessionParameters(), cameraId);
|
||||||
|
mCameraId = cameraId;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -1086,7 +1107,8 @@ public class CameraExtensionsProxyService extends Service {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCaptureSessionStart(IRequestProcessorImpl requestProcessor) {
|
public void onCaptureSessionStart(IRequestProcessorImpl requestProcessor) {
|
||||||
mSessionProcessor.onCaptureSessionStart(new RequestProcessorStub(requestProcessor));
|
mSessionProcessor.onCaptureSessionStart(
|
||||||
|
new RequestProcessorStub(requestProcessor, mCameraId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -1143,6 +1165,7 @@ public class CameraExtensionsProxyService extends Service {
|
|||||||
|
|
||||||
private class PreviewExtenderImplStub extends IPreviewExtenderImpl.Stub {
|
private class PreviewExtenderImplStub extends IPreviewExtenderImpl.Stub {
|
||||||
private final PreviewExtenderImpl mPreviewExtender;
|
private final PreviewExtenderImpl mPreviewExtender;
|
||||||
|
private String mCameraId = null;
|
||||||
|
|
||||||
public PreviewExtenderImplStub(PreviewExtenderImpl previewExtender) {
|
public PreviewExtenderImplStub(PreviewExtenderImpl previewExtender) {
|
||||||
mPreviewExtender = previewExtender;
|
mPreviewExtender = previewExtender;
|
||||||
@@ -1150,6 +1173,7 @@ public class CameraExtensionsProxyService extends Service {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onInit(String cameraId, CameraMetadataNative cameraCharacteristics) {
|
public void onInit(String cameraId, CameraMetadataNative cameraCharacteristics) {
|
||||||
|
mCameraId = cameraId;
|
||||||
mPreviewExtender.onInit(cameraId, new CameraCharacteristics(cameraCharacteristics),
|
mPreviewExtender.onInit(cameraId, new CameraCharacteristics(cameraCharacteristics),
|
||||||
CameraExtensionsProxyService.this);
|
CameraExtensionsProxyService.this);
|
||||||
}
|
}
|
||||||
@@ -1161,17 +1185,17 @@ public class CameraExtensionsProxyService extends Service {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CaptureStageImpl onPresetSession() {
|
public CaptureStageImpl onPresetSession() {
|
||||||
return initializeParcelable(mPreviewExtender.onPresetSession());
|
return initializeParcelable(mPreviewExtender.onPresetSession(), mCameraId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CaptureStageImpl onEnableSession() {
|
public CaptureStageImpl onEnableSession() {
|
||||||
return initializeParcelable(mPreviewExtender.onEnableSession());
|
return initializeParcelable(mPreviewExtender.onEnableSession(), mCameraId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CaptureStageImpl onDisableSession() {
|
public CaptureStageImpl onDisableSession() {
|
||||||
return initializeParcelable(mPreviewExtender.onDisableSession());
|
return initializeParcelable(mPreviewExtender.onDisableSession(), mCameraId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -1187,7 +1211,7 @@ public class CameraExtensionsProxyService extends Service {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CaptureStageImpl getCaptureStage() {
|
public CaptureStageImpl getCaptureStage() {
|
||||||
return initializeParcelable(mPreviewExtender.getCaptureStage());
|
return initializeParcelable(mPreviewExtender.getCaptureStage(), mCameraId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -1230,7 +1254,7 @@ public class CameraExtensionsProxyService extends Service {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (processor != null) {
|
if (processor != null) {
|
||||||
return new RequestUpdateProcessorImplStub(processor);
|
return new RequestUpdateProcessorImplStub(processor, mCameraId);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
@@ -1251,6 +1275,7 @@ public class CameraExtensionsProxyService extends Service {
|
|||||||
|
|
||||||
private class ImageCaptureExtenderImplStub extends IImageCaptureExtenderImpl.Stub {
|
private class ImageCaptureExtenderImplStub extends IImageCaptureExtenderImpl.Stub {
|
||||||
private final ImageCaptureExtenderImpl mImageExtender;
|
private final ImageCaptureExtenderImpl mImageExtender;
|
||||||
|
private String mCameraId = null;
|
||||||
|
|
||||||
public ImageCaptureExtenderImplStub(ImageCaptureExtenderImpl imageExtender) {
|
public ImageCaptureExtenderImplStub(ImageCaptureExtenderImpl imageExtender) {
|
||||||
mImageExtender = imageExtender;
|
mImageExtender = imageExtender;
|
||||||
@@ -1260,6 +1285,7 @@ public class CameraExtensionsProxyService extends Service {
|
|||||||
public void onInit(String cameraId, CameraMetadataNative cameraCharacteristics) {
|
public void onInit(String cameraId, CameraMetadataNative cameraCharacteristics) {
|
||||||
mImageExtender.onInit(cameraId, new CameraCharacteristics(cameraCharacteristics),
|
mImageExtender.onInit(cameraId, new CameraCharacteristics(cameraCharacteristics),
|
||||||
CameraExtensionsProxyService.this);
|
CameraExtensionsProxyService.this);
|
||||||
|
mCameraId = cameraId;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -1269,17 +1295,17 @@ public class CameraExtensionsProxyService extends Service {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CaptureStageImpl onPresetSession() {
|
public CaptureStageImpl onPresetSession() {
|
||||||
return initializeParcelable(mImageExtender.onPresetSession());
|
return initializeParcelable(mImageExtender.onPresetSession(), mCameraId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CaptureStageImpl onEnableSession() {
|
public CaptureStageImpl onEnableSession() {
|
||||||
return initializeParcelable(mImageExtender.onEnableSession());
|
return initializeParcelable(mImageExtender.onEnableSession(), mCameraId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CaptureStageImpl onDisableSession() {
|
public CaptureStageImpl onDisableSession() {
|
||||||
return initializeParcelable(mImageExtender.onDisableSession());
|
return initializeParcelable(mImageExtender.onDisableSession(), mCameraId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -1312,7 +1338,7 @@ public class CameraExtensionsProxyService extends Service {
|
|||||||
ArrayList<android.hardware.camera2.extension.CaptureStageImpl> ret =
|
ArrayList<android.hardware.camera2.extension.CaptureStageImpl> ret =
|
||||||
new ArrayList<>();
|
new ArrayList<>();
|
||||||
for (androidx.camera.extensions.impl.CaptureStageImpl stage : captureStages) {
|
for (androidx.camera.extensions.impl.CaptureStageImpl stage : captureStages) {
|
||||||
ret.add(initializeParcelable(stage));
|
ret.add(initializeParcelable(stage, mCameraId));
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@@ -1428,9 +1454,12 @@ public class CameraExtensionsProxyService extends Service {
|
|||||||
|
|
||||||
private class RequestUpdateProcessorImplStub extends IRequestUpdateProcessorImpl.Stub {
|
private class RequestUpdateProcessorImplStub extends IRequestUpdateProcessorImpl.Stub {
|
||||||
private final RequestUpdateProcessorImpl mProcessor;
|
private final RequestUpdateProcessorImpl mProcessor;
|
||||||
|
private final String mCameraId;
|
||||||
|
|
||||||
public RequestUpdateProcessorImplStub(RequestUpdateProcessorImpl processor) {
|
public RequestUpdateProcessorImplStub(RequestUpdateProcessorImpl processor,
|
||||||
|
String cameraId) {
|
||||||
mProcessor = processor;
|
mProcessor = processor;
|
||||||
|
mCameraId = cameraId;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -1451,7 +1480,7 @@ public class CameraExtensionsProxyService extends Service {
|
|||||||
@Override
|
@Override
|
||||||
public CaptureStageImpl process(CameraMetadataNative result, int sequenceId) {
|
public CaptureStageImpl process(CameraMetadataNative result, int sequenceId) {
|
||||||
return initializeParcelable(
|
return initializeParcelable(
|
||||||
mProcessor.process(new TotalCaptureResult(result, sequenceId)));
|
mProcessor.process(new TotalCaptureResult(result, sequenceId)), mCameraId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user