Loading camera/camera2/OutputConfiguration.cpp +6 −2 Original line number Diff line number Diff line Loading @@ -167,19 +167,23 @@ status_t OutputConfiguration::readFromParcel(const android::Parcel* parcel) { } OutputConfiguration::OutputConfiguration(sp<IGraphicBufferProducer>& gbp, int rotation, const String16& physicalId, int surfaceSetID, bool isShared) { mGbps.push_back(gbp); mRotation = rotation; mSurfaceSetID = surfaceSetID; mIsDeferred = false; mIsShared = isShared; mPhysicalCameraId = physicalId; } OutputConfiguration::OutputConfiguration( const std::vector<sp<IGraphicBufferProducer>>& gbps, int rotation, int surfaceSetID, int surfaceType, int width, int height, bool isShared) int rotation, const String16& physicalCameraId, int surfaceSetID, int surfaceType, int width, int height, bool isShared) : mGbps(gbps), mRotation(rotation), mSurfaceSetID(surfaceSetID), mSurfaceType(surfaceType), mWidth(width), mHeight(height), mIsDeferred(false), mIsShared(isShared) { } mWidth(width), mHeight(height), mIsDeferred(false), mIsShared(isShared), mPhysicalCameraId(physicalCameraId) { } status_t OutputConfiguration::writeToParcel(android::Parcel* parcel) const { Loading camera/include/camera/camera2/OutputConfiguration.h +3 −1 Original line number Diff line number Diff line Loading @@ -65,10 +65,12 @@ public: OutputConfiguration(const android::Parcel& parcel); OutputConfiguration(sp<IGraphicBufferProducer>& gbp, int rotation, const String16& physicalCameraId, int surfaceSetID = INVALID_SET_ID, bool isShared = false); OutputConfiguration(const std::vector<sp<IGraphicBufferProducer>>& gbps, int rotation, int surfaceSetID = INVALID_SET_ID, int rotation, const String16& physicalCameraId, int surfaceSetID = INVALID_SET_ID, int surfaceType = OutputConfiguration::SURFACE_TYPE_UNKNOWN, int width = 0, int height = 0, bool isShared = false); Loading camera/ndk/NdkCameraCaptureSession.cpp +49 −1 Original line number Diff line number Diff line Loading @@ -28,6 +28,8 @@ #include <camera/NdkCameraCaptureSession.h> #include "impl/ACameraCaptureSession.h" #include "impl/ACameraCaptureSession.inc" using namespace android; EXPORT Loading Loading @@ -82,7 +84,31 @@ camera_status_t ACameraCaptureSession_capture( return ACAMERA_ERROR_SESSION_CLOSED; } return session->capture(cbs, numRequests, requests, captureSequenceId); return session->capture( cbs, numRequests, requests, captureSequenceId); } EXPORT camera_status_t ACameraCaptureSession_logicalCamera_capture( ACameraCaptureSession* session, /*optional*/ACameraCaptureSession_logicalCamera_captureCallbacks* lcbs, int numRequests, ACaptureRequest** requests, /*optional*/int* captureSequenceId) { ATRACE_CALL(); 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( lcbs, numRequests, requests, captureSequenceId); } EXPORT Loading @@ -106,6 +132,28 @@ camera_status_t ACameraCaptureSession_setRepeatingRequest( return session->setRepeatingRequest(cbs, numRequests, requests, captureSequenceId); } EXPORT camera_status_t ACameraCaptureSession_logicalCamera_setRepeatingRequest( ACameraCaptureSession* session, /*optional*/ACameraCaptureSession_logicalCamera_captureCallbacks* lcbs, int numRequests, ACaptureRequest** requests, /*optional*/int* captureSequenceId) { ATRACE_CALL(); 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(lcbs, numRequests, requests, captureSequenceId); } EXPORT camera_status_t ACameraCaptureSession_stopRepeating(ACameraCaptureSession* session) { ATRACE_CALL(); Loading camera/ndk/NdkCameraDevice.cpp +14 −0 Original line number Diff line number Diff line Loading @@ -128,6 +128,20 @@ camera_status_t ACaptureSessionSharedOutput_create( return ACAMERA_OK; } EXPORT camera_status_t ACaptureSessionPhysicalOutput_create( ACameraWindowType* window, const char* physicalId, /*out*/ACaptureSessionOutput** out) { ATRACE_CALL(); if (window == nullptr || physicalId == nullptr || out == nullptr) { ALOGE("%s: Error: bad argument. window %p, physicalId %p, out %p", __FUNCTION__, window, physicalId, out); return ACAMERA_ERROR_INVALID_PARAMETER; } *out = new ACaptureSessionOutput(window, false, physicalId); return ACAMERA_OK; } EXPORT camera_status_t ACaptureSessionSharedOutput_add(ACaptureSessionOutput *out, ACameraWindowType* window) { Loading camera/ndk/NdkCameraMetadata.cpp +17 −0 Original line number Diff line number Diff line Loading @@ -69,3 +69,20 @@ void ACameraMetadata_free(ACameraMetadata* metadata) { metadata->decStrong((void*) ACameraMetadata_free); } } EXPORT bool ACameraMetadata_isLogicalMultiCamera(const ACameraMetadata* staticMetadata, /*out*/size_t* numPhysicalCameras, /*out*/const char*const** physicalCameraIds) { ATRACE_CALL(); if (numPhysicalCameras == nullptr || physicalCameraIds == nullptr) { ALOGE("%s: Invalid input: numPhysicalCameras %p, physicalCameraIds %p", __FUNCTION__, numPhysicalCameras, physicalCameraIds); return false; } if (staticMetadata == nullptr) { ALOGE("%s: Invalid input: staticMetadata is null.", __FUNCTION__); return false; } return staticMetadata->isLogicalMultiCamera(numPhysicalCameras, physicalCameraIds); } Loading
camera/camera2/OutputConfiguration.cpp +6 −2 Original line number Diff line number Diff line Loading @@ -167,19 +167,23 @@ status_t OutputConfiguration::readFromParcel(const android::Parcel* parcel) { } OutputConfiguration::OutputConfiguration(sp<IGraphicBufferProducer>& gbp, int rotation, const String16& physicalId, int surfaceSetID, bool isShared) { mGbps.push_back(gbp); mRotation = rotation; mSurfaceSetID = surfaceSetID; mIsDeferred = false; mIsShared = isShared; mPhysicalCameraId = physicalId; } OutputConfiguration::OutputConfiguration( const std::vector<sp<IGraphicBufferProducer>>& gbps, int rotation, int surfaceSetID, int surfaceType, int width, int height, bool isShared) int rotation, const String16& physicalCameraId, int surfaceSetID, int surfaceType, int width, int height, bool isShared) : mGbps(gbps), mRotation(rotation), mSurfaceSetID(surfaceSetID), mSurfaceType(surfaceType), mWidth(width), mHeight(height), mIsDeferred(false), mIsShared(isShared) { } mWidth(width), mHeight(height), mIsDeferred(false), mIsShared(isShared), mPhysicalCameraId(physicalCameraId) { } status_t OutputConfiguration::writeToParcel(android::Parcel* parcel) const { Loading
camera/include/camera/camera2/OutputConfiguration.h +3 −1 Original line number Diff line number Diff line Loading @@ -65,10 +65,12 @@ public: OutputConfiguration(const android::Parcel& parcel); OutputConfiguration(sp<IGraphicBufferProducer>& gbp, int rotation, const String16& physicalCameraId, int surfaceSetID = INVALID_SET_ID, bool isShared = false); OutputConfiguration(const std::vector<sp<IGraphicBufferProducer>>& gbps, int rotation, int surfaceSetID = INVALID_SET_ID, int rotation, const String16& physicalCameraId, int surfaceSetID = INVALID_SET_ID, int surfaceType = OutputConfiguration::SURFACE_TYPE_UNKNOWN, int width = 0, int height = 0, bool isShared = false); Loading
camera/ndk/NdkCameraCaptureSession.cpp +49 −1 Original line number Diff line number Diff line Loading @@ -28,6 +28,8 @@ #include <camera/NdkCameraCaptureSession.h> #include "impl/ACameraCaptureSession.h" #include "impl/ACameraCaptureSession.inc" using namespace android; EXPORT Loading Loading @@ -82,7 +84,31 @@ camera_status_t ACameraCaptureSession_capture( return ACAMERA_ERROR_SESSION_CLOSED; } return session->capture(cbs, numRequests, requests, captureSequenceId); return session->capture( cbs, numRequests, requests, captureSequenceId); } EXPORT camera_status_t ACameraCaptureSession_logicalCamera_capture( ACameraCaptureSession* session, /*optional*/ACameraCaptureSession_logicalCamera_captureCallbacks* lcbs, int numRequests, ACaptureRequest** requests, /*optional*/int* captureSequenceId) { ATRACE_CALL(); 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( lcbs, numRequests, requests, captureSequenceId); } EXPORT Loading @@ -106,6 +132,28 @@ camera_status_t ACameraCaptureSession_setRepeatingRequest( return session->setRepeatingRequest(cbs, numRequests, requests, captureSequenceId); } EXPORT camera_status_t ACameraCaptureSession_logicalCamera_setRepeatingRequest( ACameraCaptureSession* session, /*optional*/ACameraCaptureSession_logicalCamera_captureCallbacks* lcbs, int numRequests, ACaptureRequest** requests, /*optional*/int* captureSequenceId) { ATRACE_CALL(); 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(lcbs, numRequests, requests, captureSequenceId); } EXPORT camera_status_t ACameraCaptureSession_stopRepeating(ACameraCaptureSession* session) { ATRACE_CALL(); Loading
camera/ndk/NdkCameraDevice.cpp +14 −0 Original line number Diff line number Diff line Loading @@ -128,6 +128,20 @@ camera_status_t ACaptureSessionSharedOutput_create( return ACAMERA_OK; } EXPORT camera_status_t ACaptureSessionPhysicalOutput_create( ACameraWindowType* window, const char* physicalId, /*out*/ACaptureSessionOutput** out) { ATRACE_CALL(); if (window == nullptr || physicalId == nullptr || out == nullptr) { ALOGE("%s: Error: bad argument. window %p, physicalId %p, out %p", __FUNCTION__, window, physicalId, out); return ACAMERA_ERROR_INVALID_PARAMETER; } *out = new ACaptureSessionOutput(window, false, physicalId); return ACAMERA_OK; } EXPORT camera_status_t ACaptureSessionSharedOutput_add(ACaptureSessionOutput *out, ACameraWindowType* window) { Loading
camera/ndk/NdkCameraMetadata.cpp +17 −0 Original line number Diff line number Diff line Loading @@ -69,3 +69,20 @@ void ACameraMetadata_free(ACameraMetadata* metadata) { metadata->decStrong((void*) ACameraMetadata_free); } } EXPORT bool ACameraMetadata_isLogicalMultiCamera(const ACameraMetadata* staticMetadata, /*out*/size_t* numPhysicalCameras, /*out*/const char*const** physicalCameraIds) { ATRACE_CALL(); if (numPhysicalCameras == nullptr || physicalCameraIds == nullptr) { ALOGE("%s: Invalid input: numPhysicalCameras %p, physicalCameraIds %p", __FUNCTION__, numPhysicalCameras, physicalCameraIds); return false; } if (staticMetadata == nullptr) { ALOGE("%s: Invalid input: staticMetadata is null.", __FUNCTION__); return false; } return staticMetadata->isLogicalMultiCamera(numPhysicalCameras, physicalCameraIds); }