Loading camera/ndk/Android.mk +11 −9 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ LOCAL_SRC_FILES:= \ impl/ACameraManager.cpp \ impl/ACameraMetadata.cpp \ impl/ACameraDevice.cpp \ impl/ACameraCaptureSession.cpp LOCAL_MODULE:= libcamera2ndk Loading @@ -41,6 +42,7 @@ LOCAL_CFLAGS += -fvisibility=hidden -D EXPORT='__attribute__ ((visibility ("defa LOCAL_SHARED_LIBRARIES := \ libbinder \ liblog \ libgui \ libutils \ libandroid_runtime \ libcamera_client \ Loading camera/ndk/NdkCameraCaptureSession.cpp +70 −12 Original line number Diff line number Diff line Loading @@ -24,43 +24,101 @@ #include <utils/Trace.h> #include "NdkCameraDevice.h" #include <NdkCaptureRequest.h> #include <NdkCameraCaptureSession.h> #include "impl/ACameraCaptureSession.h" using namespace android; EXPORT camera_status_t ACameraCaptureSession_close(ACameraCaptureSession*) { void ACameraCaptureSession_close(ACameraCaptureSession* session) { ATRACE_CALL(); return ACAMERA_OK; if (session != nullptr) { session->closeByApp(); } return; } EXPORT camera_status_t ACameraCaptureSession_getDevice( ACameraCaptureSession*, ACameraDevice **device) { ACameraCaptureSession* session, ACameraDevice **device) { ATRACE_CALL(); // Make sure don't do return garbage if device has been closed if (session == nullptr || device == nullptr) { ALOGE("%s: Error: invalid input: session %p, device %p", __FUNCTION__, session, device); return ACAMERA_ERROR_INVALID_PARAMETER; } if (session->isClosed()) { ALOGE("%s: session %p is already closed", __FUNCTION__, session); *device = nullptr; return ACAMERA_ERROR_SESSION_CLOSED; } *device = session->getDevice(); if (*device == nullptr) { // Should not reach here ALOGE("%s: unknown failure: device is null", __FUNCTION__); return ACAMERA_ERROR_UNKNOWN; } return ACAMERA_OK; } EXPORT camera_status_t ACameraCaptureSession_capture( ACameraCaptureSession*, /*optional*/ACameraCaptureSession_captureCallbacks*, int numRequests, const ACaptureRequest* requests) { ACameraCaptureSession* session, /*optional*/ACameraCaptureSession_captureCallbacks* cbs, int numRequests, ACaptureRequest** requests, /*optional*/int* captureSequenceId) { ATRACE_CALL(); return ACAMERA_OK; if (session == nullptr || requests == nullptr || numRequests < 1) { ALOGE("%s: Error: invalid input: session %p, numRequest %d, requests %p", __FUNCTION__, session, numRequests, requests); return ACAMERA_ERROR_INVALID_PARAMETER; } if (session->isClosed()) { ALOGE("%s: session %p is already closed", __FUNCTION__, session); *captureSequenceId = CAPTURE_SEQUENCE_ID_NONE; return ACAMERA_ERROR_SESSION_CLOSED; } return session->capture(cbs, numRequests, requests, captureSequenceId); } EXPORT camera_status_t ACameraCaptureSession_setRepeatingRequest( ACameraCaptureSession*, /*optional*/ACameraCaptureSession_captureCallbacks*, int numRequests, const ACaptureRequest* requests) { ACameraCaptureSession* session, /*optional*/ACameraCaptureSession_captureCallbacks* cbs, int numRequests, ACaptureRequest** requests, /*optional*/int* captureSequenceId) { ATRACE_CALL(); return ACAMERA_OK; if (session == nullptr || requests == nullptr || numRequests < 1) { ALOGE("%s: Error: invalid input: session %p, numRequest %d, requests %p", __FUNCTION__, session, numRequests, requests); return ACAMERA_ERROR_INVALID_PARAMETER; } if (session->isClosed()) { ALOGE("%s: session %p is already closed", __FUNCTION__, session); *captureSequenceId = CAPTURE_SEQUENCE_ID_NONE; return ACAMERA_ERROR_SESSION_CLOSED; } return session->setRepeatingRequest(cbs, numRequests, requests, captureSequenceId); } EXPORT camera_status_t ACameraCaptureSession_stopRepeating(ACameraCaptureSession*) { camera_status_t ACameraCaptureSession_stopRepeating(ACameraCaptureSession* session) { ATRACE_CALL(); return ACAMERA_OK; if (session == nullptr) { ALOGE("%s: Error: session is null", __FUNCTION__); return ACAMERA_ERROR_INVALID_PARAMETER; } if (session->isClosed()) { ALOGE("%s: session %p is already closed", __FUNCTION__, session); return ACAMERA_ERROR_SESSION_CLOSED; } return session->stopRepeating(); } EXPORT Loading camera/ndk/NdkCameraDevice.cpp +51 −15 Original line number Diff line number Diff line Loading @@ -22,7 +22,7 @@ #include <utils/Trace.h> #include <NdkCameraDevice.h> #include "impl/ACameraDevice.h" #include "impl/ACameraCaptureSession.h" using namespace android; Loading Loading @@ -54,7 +54,7 @@ camera_status_t ACameraDevice_createCaptureRequest( ACaptureRequest** request) { ATRACE_CALL(); if (device == nullptr || request == nullptr) { ALOGE("%s: invalid argument! device 0x%p request 0x%p", ALOGE("%s: invalid argument! device %p request %p", __FUNCTION__, device, request); return ACAMERA_ERROR_INVALID_PARAMETER; } Loading @@ -73,53 +73,89 @@ camera_status_t ACameraDevice_createCaptureRequest( return device->createCaptureRequest(templateId, request); } struct ACaptureSessionOutputContainer; struct ACaptureSessionOutput; EXPORT camera_status_t ACaptureSessionOutputContainer_create(/*out*/ACaptureSessionOutputContainer**) { camera_status_t ACaptureSessionOutputContainer_create( /*out*/ACaptureSessionOutputContainer** out) { ATRACE_CALL(); if (out == nullptr) { ALOGE("%s: Error: out null", __FUNCTION__); return ACAMERA_ERROR_INVALID_PARAMETER; } *out = new ACaptureSessionOutputContainer(); return ACAMERA_OK; } EXPORT void ACaptureSessionOutputContainer_free(ACaptureSessionOutputContainer*) { void ACaptureSessionOutputContainer_free(ACaptureSessionOutputContainer* container) { ATRACE_CALL(); if (container != nullptr) { delete container; } return; } EXPORT camera_status_t ACaptureSessionOutput_create(ANativeWindow*, /*out*/ACaptureSessionOutput**) { camera_status_t ACaptureSessionOutput_create( ANativeWindow* window, /*out*/ACaptureSessionOutput** out) { ATRACE_CALL(); if (window == nullptr || out == nullptr) { ALOGE("%s: Error: bad argument. window %p, out %p", __FUNCTION__, window, out); return ACAMERA_ERROR_INVALID_PARAMETER; } *out = new ACaptureSessionOutput(window); return ACAMERA_OK; } EXPORT void ACaptureSessionOutput_free(ACaptureSessionOutput*) { void ACaptureSessionOutput_free(ACaptureSessionOutput* output) { ATRACE_CALL(); if (output != nullptr) { delete output; } return; } EXPORT camera_status_t ACaptureSessionOutputContainer_add( ACaptureSessionOutputContainer*, const ACaptureSessionOutput*) { ACaptureSessionOutputContainer* container, const ACaptureSessionOutput* output) { ATRACE_CALL(); if (container == nullptr || output == nullptr) { ALOGE("%s: Error: invalid input: container %p, output %p", __FUNCTION__, container, output); return ACAMERA_ERROR_INVALID_PARAMETER; } auto pair = container->mOutputs.insert(*output); if (!pair.second) { ALOGW("%s: output %p already exists!", __FUNCTION__, output); } return ACAMERA_OK; } EXPORT camera_status_t ACaptureSessionOutputContainer_remove( ACaptureSessionOutputContainer*, const ACaptureSessionOutput*) { ACaptureSessionOutputContainer* container, const ACaptureSessionOutput* output) { ATRACE_CALL(); if (container == nullptr || output == nullptr) { ALOGE("%s: Error: invalid input: container %p, output %p", __FUNCTION__, container, output); return ACAMERA_ERROR_INVALID_PARAMETER; } container->mOutputs.erase(*output); return ACAMERA_OK; } EXPORT camera_status_t ACameraDevice_createCaptureSession( ACameraDevice*, ACameraDevice* device, const ACaptureSessionOutputContainer* outputs, const ACameraCaptureSession_stateCallbacks* callbacks) { const ACameraCaptureSession_stateCallbacks* callbacks, /*out*/ACameraCaptureSession** session) { ATRACE_CALL(); return ACAMERA_OK; if (device == nullptr || outputs == nullptr || callbacks == nullptr || session == nullptr) { ALOGE("%s: Error: invalid input: device %p, outputs %p, callbacks %p, session %p", __FUNCTION__, device, outputs, callbacks, session); return ACAMERA_ERROR_INVALID_PARAMETER; } return device->createCaptureSession(outputs, callbacks, session); } camera/ndk/NdkCameraManager.cpp +7 −7 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ camera_status_t ACameraManager_getCameraIdList( ACameraManager* manager, ACameraIdList** cameraIdList) { ATRACE_CALL(); if (manager == nullptr || cameraIdList == nullptr) { ALOGE("%s: invalid argument! manager 0x%p, cameraIdList 0x%p", ALOGE("%s: invalid argument! manager %p, cameraIdList %p", __FUNCTION__, manager, cameraIdList); return ACAMERA_ERROR_INVALID_PARAMETER; } Loading @@ -67,8 +67,8 @@ camera_status_t ACameraManager_registerAvailabilityCallback( return ACAMERA_ERROR_INVALID_PARAMETER; } if (callback->onCameraAvailable == nullptr || callback->onCameraUnavailable == nullptr) { ALOGE("%s: invalid argument! callback 0x%p, " "onCameraAvailable 0x%p, onCameraUnavailable 0x%p", ALOGE("%s: invalid argument! callback %p, " "onCameraAvailable %p, onCameraUnavailable %p", __FUNCTION__, callback, callback->onCameraAvailable, callback->onCameraUnavailable); return ACAMERA_ERROR_INVALID_PARAMETER; Loading @@ -86,8 +86,8 @@ camera_status_t ACameraManager_unregisterAvailabilityCallback( return ACAMERA_ERROR_INVALID_PARAMETER; } if (callback->onCameraAvailable == nullptr || callback->onCameraUnavailable == nullptr) { ALOGE("%s: invalid argument! callback 0x%p, " "onCameraAvailable 0x%p, onCameraUnavailable 0x%p", ALOGE("%s: invalid argument! callback %p, " "onCameraAvailable %p, onCameraUnavailable %p", __FUNCTION__, callback, callback->onCameraAvailable, callback->onCameraUnavailable); return ACAMERA_ERROR_INVALID_PARAMETER; Loading @@ -101,7 +101,7 @@ camera_status_t ACameraManager_getCameraCharacteristics( ACameraManager* mgr, const char* cameraId, ACameraMetadata** chars){ ATRACE_CALL(); if (mgr == nullptr || cameraId == nullptr || chars == nullptr) { ALOGE("%s: invalid argument! mgr 0x%p cameraId 0x%p chars 0x%p", ALOGE("%s: invalid argument! mgr %p cameraId %p chars %p", __FUNCTION__, mgr, cameraId, chars); return ACAMERA_ERROR_INVALID_PARAMETER; } Loading @@ -115,7 +115,7 @@ camera_status_t ACameraManager_openCamera( /*out*/ACameraDevice** device) { ATRACE_CALL(); if (mgr == nullptr || cameraId == nullptr || callback == nullptr || device == nullptr) { ALOGE("%s: invalid argument! mgr 0x%p cameraId 0x%p callback 0x%p device 0x%p", ALOGE("%s: invalid argument! mgr %p cameraId %p callback %p device %p", __FUNCTION__, mgr, cameraId, callback, device); return ACAMERA_ERROR_INVALID_PARAMETER; } Loading camera/ndk/NdkCameraMetadata.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -31,7 +31,7 @@ camera_status_t ACameraMetadata_getConstEntry( const ACameraMetadata* acm, uint32_t tag, ACameraMetadata_const_entry* entry) { ATRACE_CALL(); if (acm == nullptr || entry == nullptr) { ALOGE("%s: invalid argument! metadata 0x%p, tag 0x%x, entry 0x%p", ALOGE("%s: invalid argument! metadata %p, tag 0x%x, entry %p", __FUNCTION__, acm, tag, entry); return ACAMERA_ERROR_INVALID_PARAMETER; } Loading Loading
camera/ndk/Android.mk +11 −9 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ LOCAL_SRC_FILES:= \ impl/ACameraManager.cpp \ impl/ACameraMetadata.cpp \ impl/ACameraDevice.cpp \ impl/ACameraCaptureSession.cpp LOCAL_MODULE:= libcamera2ndk Loading @@ -41,6 +42,7 @@ LOCAL_CFLAGS += -fvisibility=hidden -D EXPORT='__attribute__ ((visibility ("defa LOCAL_SHARED_LIBRARIES := \ libbinder \ liblog \ libgui \ libutils \ libandroid_runtime \ libcamera_client \ Loading
camera/ndk/NdkCameraCaptureSession.cpp +70 −12 Original line number Diff line number Diff line Loading @@ -24,43 +24,101 @@ #include <utils/Trace.h> #include "NdkCameraDevice.h" #include <NdkCaptureRequest.h> #include <NdkCameraCaptureSession.h> #include "impl/ACameraCaptureSession.h" using namespace android; EXPORT camera_status_t ACameraCaptureSession_close(ACameraCaptureSession*) { void ACameraCaptureSession_close(ACameraCaptureSession* session) { ATRACE_CALL(); return ACAMERA_OK; if (session != nullptr) { session->closeByApp(); } return; } EXPORT camera_status_t ACameraCaptureSession_getDevice( ACameraCaptureSession*, ACameraDevice **device) { ACameraCaptureSession* session, ACameraDevice **device) { ATRACE_CALL(); // Make sure don't do return garbage if device has been closed if (session == nullptr || device == nullptr) { ALOGE("%s: Error: invalid input: session %p, device %p", __FUNCTION__, session, device); return ACAMERA_ERROR_INVALID_PARAMETER; } if (session->isClosed()) { ALOGE("%s: session %p is already closed", __FUNCTION__, session); *device = nullptr; return ACAMERA_ERROR_SESSION_CLOSED; } *device = session->getDevice(); if (*device == nullptr) { // Should not reach here ALOGE("%s: unknown failure: device is null", __FUNCTION__); return ACAMERA_ERROR_UNKNOWN; } return ACAMERA_OK; } EXPORT camera_status_t ACameraCaptureSession_capture( ACameraCaptureSession*, /*optional*/ACameraCaptureSession_captureCallbacks*, int numRequests, const ACaptureRequest* requests) { ACameraCaptureSession* session, /*optional*/ACameraCaptureSession_captureCallbacks* cbs, int numRequests, ACaptureRequest** requests, /*optional*/int* captureSequenceId) { ATRACE_CALL(); return ACAMERA_OK; if (session == nullptr || requests == nullptr || numRequests < 1) { ALOGE("%s: Error: invalid input: session %p, numRequest %d, requests %p", __FUNCTION__, session, numRequests, requests); return ACAMERA_ERROR_INVALID_PARAMETER; } if (session->isClosed()) { ALOGE("%s: session %p is already closed", __FUNCTION__, session); *captureSequenceId = CAPTURE_SEQUENCE_ID_NONE; return ACAMERA_ERROR_SESSION_CLOSED; } return session->capture(cbs, numRequests, requests, captureSequenceId); } EXPORT camera_status_t ACameraCaptureSession_setRepeatingRequest( ACameraCaptureSession*, /*optional*/ACameraCaptureSession_captureCallbacks*, int numRequests, const ACaptureRequest* requests) { ACameraCaptureSession* session, /*optional*/ACameraCaptureSession_captureCallbacks* cbs, int numRequests, ACaptureRequest** requests, /*optional*/int* captureSequenceId) { ATRACE_CALL(); return ACAMERA_OK; if (session == nullptr || requests == nullptr || numRequests < 1) { ALOGE("%s: Error: invalid input: session %p, numRequest %d, requests %p", __FUNCTION__, session, numRequests, requests); return ACAMERA_ERROR_INVALID_PARAMETER; } if (session->isClosed()) { ALOGE("%s: session %p is already closed", __FUNCTION__, session); *captureSequenceId = CAPTURE_SEQUENCE_ID_NONE; return ACAMERA_ERROR_SESSION_CLOSED; } return session->setRepeatingRequest(cbs, numRequests, requests, captureSequenceId); } EXPORT camera_status_t ACameraCaptureSession_stopRepeating(ACameraCaptureSession*) { camera_status_t ACameraCaptureSession_stopRepeating(ACameraCaptureSession* session) { ATRACE_CALL(); return ACAMERA_OK; if (session == nullptr) { ALOGE("%s: Error: session is null", __FUNCTION__); return ACAMERA_ERROR_INVALID_PARAMETER; } if (session->isClosed()) { ALOGE("%s: session %p is already closed", __FUNCTION__, session); return ACAMERA_ERROR_SESSION_CLOSED; } return session->stopRepeating(); } EXPORT Loading
camera/ndk/NdkCameraDevice.cpp +51 −15 Original line number Diff line number Diff line Loading @@ -22,7 +22,7 @@ #include <utils/Trace.h> #include <NdkCameraDevice.h> #include "impl/ACameraDevice.h" #include "impl/ACameraCaptureSession.h" using namespace android; Loading Loading @@ -54,7 +54,7 @@ camera_status_t ACameraDevice_createCaptureRequest( ACaptureRequest** request) { ATRACE_CALL(); if (device == nullptr || request == nullptr) { ALOGE("%s: invalid argument! device 0x%p request 0x%p", ALOGE("%s: invalid argument! device %p request %p", __FUNCTION__, device, request); return ACAMERA_ERROR_INVALID_PARAMETER; } Loading @@ -73,53 +73,89 @@ camera_status_t ACameraDevice_createCaptureRequest( return device->createCaptureRequest(templateId, request); } struct ACaptureSessionOutputContainer; struct ACaptureSessionOutput; EXPORT camera_status_t ACaptureSessionOutputContainer_create(/*out*/ACaptureSessionOutputContainer**) { camera_status_t ACaptureSessionOutputContainer_create( /*out*/ACaptureSessionOutputContainer** out) { ATRACE_CALL(); if (out == nullptr) { ALOGE("%s: Error: out null", __FUNCTION__); return ACAMERA_ERROR_INVALID_PARAMETER; } *out = new ACaptureSessionOutputContainer(); return ACAMERA_OK; } EXPORT void ACaptureSessionOutputContainer_free(ACaptureSessionOutputContainer*) { void ACaptureSessionOutputContainer_free(ACaptureSessionOutputContainer* container) { ATRACE_CALL(); if (container != nullptr) { delete container; } return; } EXPORT camera_status_t ACaptureSessionOutput_create(ANativeWindow*, /*out*/ACaptureSessionOutput**) { camera_status_t ACaptureSessionOutput_create( ANativeWindow* window, /*out*/ACaptureSessionOutput** out) { ATRACE_CALL(); if (window == nullptr || out == nullptr) { ALOGE("%s: Error: bad argument. window %p, out %p", __FUNCTION__, window, out); return ACAMERA_ERROR_INVALID_PARAMETER; } *out = new ACaptureSessionOutput(window); return ACAMERA_OK; } EXPORT void ACaptureSessionOutput_free(ACaptureSessionOutput*) { void ACaptureSessionOutput_free(ACaptureSessionOutput* output) { ATRACE_CALL(); if (output != nullptr) { delete output; } return; } EXPORT camera_status_t ACaptureSessionOutputContainer_add( ACaptureSessionOutputContainer*, const ACaptureSessionOutput*) { ACaptureSessionOutputContainer* container, const ACaptureSessionOutput* output) { ATRACE_CALL(); if (container == nullptr || output == nullptr) { ALOGE("%s: Error: invalid input: container %p, output %p", __FUNCTION__, container, output); return ACAMERA_ERROR_INVALID_PARAMETER; } auto pair = container->mOutputs.insert(*output); if (!pair.second) { ALOGW("%s: output %p already exists!", __FUNCTION__, output); } return ACAMERA_OK; } EXPORT camera_status_t ACaptureSessionOutputContainer_remove( ACaptureSessionOutputContainer*, const ACaptureSessionOutput*) { ACaptureSessionOutputContainer* container, const ACaptureSessionOutput* output) { ATRACE_CALL(); if (container == nullptr || output == nullptr) { ALOGE("%s: Error: invalid input: container %p, output %p", __FUNCTION__, container, output); return ACAMERA_ERROR_INVALID_PARAMETER; } container->mOutputs.erase(*output); return ACAMERA_OK; } EXPORT camera_status_t ACameraDevice_createCaptureSession( ACameraDevice*, ACameraDevice* device, const ACaptureSessionOutputContainer* outputs, const ACameraCaptureSession_stateCallbacks* callbacks) { const ACameraCaptureSession_stateCallbacks* callbacks, /*out*/ACameraCaptureSession** session) { ATRACE_CALL(); return ACAMERA_OK; if (device == nullptr || outputs == nullptr || callbacks == nullptr || session == nullptr) { ALOGE("%s: Error: invalid input: device %p, outputs %p, callbacks %p, session %p", __FUNCTION__, device, outputs, callbacks, session); return ACAMERA_ERROR_INVALID_PARAMETER; } return device->createCaptureSession(outputs, callbacks, session); }
camera/ndk/NdkCameraManager.cpp +7 −7 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ camera_status_t ACameraManager_getCameraIdList( ACameraManager* manager, ACameraIdList** cameraIdList) { ATRACE_CALL(); if (manager == nullptr || cameraIdList == nullptr) { ALOGE("%s: invalid argument! manager 0x%p, cameraIdList 0x%p", ALOGE("%s: invalid argument! manager %p, cameraIdList %p", __FUNCTION__, manager, cameraIdList); return ACAMERA_ERROR_INVALID_PARAMETER; } Loading @@ -67,8 +67,8 @@ camera_status_t ACameraManager_registerAvailabilityCallback( return ACAMERA_ERROR_INVALID_PARAMETER; } if (callback->onCameraAvailable == nullptr || callback->onCameraUnavailable == nullptr) { ALOGE("%s: invalid argument! callback 0x%p, " "onCameraAvailable 0x%p, onCameraUnavailable 0x%p", ALOGE("%s: invalid argument! callback %p, " "onCameraAvailable %p, onCameraUnavailable %p", __FUNCTION__, callback, callback->onCameraAvailable, callback->onCameraUnavailable); return ACAMERA_ERROR_INVALID_PARAMETER; Loading @@ -86,8 +86,8 @@ camera_status_t ACameraManager_unregisterAvailabilityCallback( return ACAMERA_ERROR_INVALID_PARAMETER; } if (callback->onCameraAvailable == nullptr || callback->onCameraUnavailable == nullptr) { ALOGE("%s: invalid argument! callback 0x%p, " "onCameraAvailable 0x%p, onCameraUnavailable 0x%p", ALOGE("%s: invalid argument! callback %p, " "onCameraAvailable %p, onCameraUnavailable %p", __FUNCTION__, callback, callback->onCameraAvailable, callback->onCameraUnavailable); return ACAMERA_ERROR_INVALID_PARAMETER; Loading @@ -101,7 +101,7 @@ camera_status_t ACameraManager_getCameraCharacteristics( ACameraManager* mgr, const char* cameraId, ACameraMetadata** chars){ ATRACE_CALL(); if (mgr == nullptr || cameraId == nullptr || chars == nullptr) { ALOGE("%s: invalid argument! mgr 0x%p cameraId 0x%p chars 0x%p", ALOGE("%s: invalid argument! mgr %p cameraId %p chars %p", __FUNCTION__, mgr, cameraId, chars); return ACAMERA_ERROR_INVALID_PARAMETER; } Loading @@ -115,7 +115,7 @@ camera_status_t ACameraManager_openCamera( /*out*/ACameraDevice** device) { ATRACE_CALL(); if (mgr == nullptr || cameraId == nullptr || callback == nullptr || device == nullptr) { ALOGE("%s: invalid argument! mgr 0x%p cameraId 0x%p callback 0x%p device 0x%p", ALOGE("%s: invalid argument! mgr %p cameraId %p callback %p device %p", __FUNCTION__, mgr, cameraId, callback, device); return ACAMERA_ERROR_INVALID_PARAMETER; } Loading
camera/ndk/NdkCameraMetadata.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -31,7 +31,7 @@ camera_status_t ACameraMetadata_getConstEntry( const ACameraMetadata* acm, uint32_t tag, ACameraMetadata_const_entry* entry) { ATRACE_CALL(); if (acm == nullptr || entry == nullptr) { ALOGE("%s: invalid argument! metadata 0x%p, tag 0x%x, entry 0x%p", ALOGE("%s: invalid argument! metadata %p, tag 0x%x, entry %p", __FUNCTION__, acm, tag, entry); return ACAMERA_ERROR_INVALID_PARAMETER; } Loading