Loading services/camera/libcameraservice/Android.mk +2 −1 Original line number Diff line number Diff line Loading @@ -10,7 +10,8 @@ LOCAL_SRC_FILES:= \ CameraService.cpp \ CameraClient.cpp \ Camera2Client.cpp \ Camera2Device.cpp Camera2Device.cpp \ CameraMetadata.cpp LOCAL_SHARED_LIBRARIES:= \ libui \ Loading services/camera/libcameraservice/Camera2Client.cpp +171 −253 File changed.Preview size limit exceeded, changes collapsed. Show changes services/camera/libcameraservice/Camera2Client.h +12 −21 Original line number Diff line number Diff line Loading @@ -84,6 +84,7 @@ public: virtual void notifyAutoWhitebalance(uint8_t newState, int triggerId); virtual void onNewFrameAvailable(); private: enum State { DISCONNECTED, Loading Loading @@ -153,10 +154,10 @@ private: int64_t gpsTimestamp; String8 gpsProcessingMethod; int wbMode; int effectMode; int antibandingMode; int sceneMode; uint8_t wbMode; uint8_t effectMode; uint8_t antibandingMode; uint8_t sceneMode; enum flashMode_t { FLASH_MODE_OFF = 0, Loading Loading @@ -300,12 +301,12 @@ private: /* Output frame metadata processing methods */ status_t processFrameFaceDetect(camera_metadata_t *frame); status_t processFrameFaceDetect(const CameraMetadata &frame); /* Preview related members */ int mPreviewStreamId; camera_metadata_t *mPreviewRequest; CameraMetadata mPreviewRequest; sp<IBinder> mPreviewSurface; sp<ANativeWindow> mPreviewWindow; Loading Loading @@ -351,7 +352,7 @@ private: Camera2Client *mParent; }; sp<CaptureWaiter> mCaptureWaiter; camera_metadata_t *mCaptureRequest; CameraMetadata mCaptureRequest; sp<Camera2Heap> mCaptureHeap; // Handle captured image buffers void onCaptureAvailable(); Loading @@ -375,7 +376,7 @@ private: Camera2Client *mParent; }; sp<RecordingWaiter> mRecordingWaiter; camera_metadata_t *mRecordingRequest; CameraMetadata mRecordingRequest; sp<Camera2Heap> mRecordingHeap; static const size_t kDefaultRecordingHeapCount = 8; Loading Loading @@ -431,8 +432,8 @@ private: // checking the number of values in the entry. 0 for max/minCount means to // do no bounds check in that direction. In case of error, the entry data // pointer is null and the count is 0. camera_metadata_entry_t staticInfo(uint32_t tag, size_t minCount=0, size_t maxCount=0); camera_metadata_ro_entry_t staticInfo(uint32_t tag, size_t minCount=0, size_t maxCount=0) const; // Extract frequently-used camera static information into mDeviceInfo status_t buildDeviceInfo(); Loading @@ -441,7 +442,7 @@ private: status_t buildDefaultParameters(); // Update parameters all requests use, based on mParameters status_t updateRequestCommon(camera_metadata_t *request, const Parameters ¶ms); status_t updateRequestCommon(CameraMetadata *request, const Parameters ¶ms); // Map from sensor active array pixel coordinates to normalized camera // parameter coordinates. The former are (0,0)-(array width - 1, array height Loading @@ -449,16 +450,6 @@ private: int arrayXToNormalized(int width) const; int arrayYToNormalized(int height) const; // Update specific metadata entry with new values. Adds entry if it does not // exist, which will invalidate sorting static status_t updateEntry(camera_metadata_t *buffer, uint32_t tag, const void *data, size_t data_count); // Remove metadata entry. Will invalidate sorting. If entry does not exist, // does nothing. static status_t deleteEntry(camera_metadata_t *buffer, uint32_t tag); // Convert camera1 preview format string to camera2 enum static int formatStringToEnum(const char *format); static const char *formatEnumToString(int format); Loading services/camera/libcameraservice/Camera2Device.cpp +26 −11 Original line number Diff line number Diff line Loading @@ -155,25 +155,28 @@ status_t Camera2Device::dump(int fd, const Vector<String16>& args) { return res; } camera_metadata_t *Camera2Device::info() { const CameraMetadata& Camera2Device::info() const { ALOGVV("%s: E", __FUNCTION__); return mDeviceInfo; } status_t Camera2Device::capture(camera_metadata_t* request) { status_t Camera2Device::capture(CameraMetadata &request) { ALOGV("%s: E", __FUNCTION__); mRequestQueue.enqueue(request); mRequestQueue.enqueue(request.release()); return OK; } status_t Camera2Device::setStreamingRequest(camera_metadata_t* request) { status_t Camera2Device::setStreamingRequest(const CameraMetadata &request) { ALOGV("%s: E", __FUNCTION__); CameraMetadata streamRequest(request); return mRequestQueue.setStreamSlot(streamRequest.release()); } mRequestQueue.setStreamSlot(request); return OK; status_t Camera2Device::clearStreamingRequest() { return mRequestQueue.setStreamSlot(NULL); } status_t Camera2Device::createStream(sp<ANativeWindow> consumer, Loading Loading @@ -269,10 +272,14 @@ status_t Camera2Device::deleteStream(int id) { } status_t Camera2Device::createDefaultRequest(int templateId, camera_metadata_t **request) { CameraMetadata *request) { status_t err; ALOGV("%s: E", __FUNCTION__); return mDevice->ops->construct_default_request( mDevice, templateId, request); camera_metadata_t *rawRequest; err = mDevice->ops->construct_default_request( mDevice, templateId, &rawRequest); request->acquire(rawRequest); return err; } status_t Camera2Device::waitUntilDrained() { Loading Loading @@ -344,8 +351,16 @@ status_t Camera2Device::setFrameListener(FrameListener *listener) { return mFrameQueue.setListener(listener); } status_t Camera2Device::getNextFrame(camera_metadata_t **frame) { return mFrameQueue.dequeue(frame); status_t Camera2Device::getNextFrame(CameraMetadata *frame) { status_t res; camera_metadata_t *rawFrame; res = mFrameQueue.dequeue(&rawFrame); if (rawFrame == NULL) { return NOT_ENOUGH_DATA; } else if (res == OK) { frame->acquire(rawFrame); } return res; } status_t Camera2Device::triggerAutofocus(uint32_t id) { Loading services/camera/libcameraservice/Camera2Device.h +13 −8 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ #include <utils/Vector.h> #include "hardware/camera2.h" #include "CameraMetadata.h" namespace android { Loading @@ -41,21 +42,26 @@ class Camera2Device : public virtual RefBase { status_t dump(int fd, const Vector<String16>& args); /** * Get a pointer to the device's static characteristics metadata buffer * The device's static characteristics metadata buffer */ camera_metadata_t* info(); const CameraMetadata& info() const; /** * Submit request for capture. The Camera2Device takes ownership of the * passed-in buffer. */ status_t capture(camera_metadata_t *request); status_t capture(CameraMetadata &request); /** * Submit request for streaming. The Camera2Device makes a copy of the * passed-in buffer and the caller retains ownership. */ status_t setStreamingRequest(camera_metadata_t *request); status_t setStreamingRequest(const CameraMetadata &request); /** * Clear the streaming request slot. */ status_t clearStreamingRequest(); /** * Create an output stream of the requested size and format. Loading Loading @@ -92,8 +98,7 @@ class Camera2Device : public virtual RefBase { * Create a metadata buffer with fields that the HAL device believes are * best for the given use case */ status_t createDefaultRequest(int templateId, camera_metadata_t **request); status_t createDefaultRequest(int templateId, CameraMetadata *request); /** * Wait until all requests have been processed. Returns INVALID_OPERATION if Loading Loading @@ -142,7 +147,7 @@ class Camera2Device : public virtual RefBase { * Get next metadata frame from the frame queue. Returns NULL if the queue * is empty; caller takes ownership of the metadata buffer. */ status_t getNextFrame(camera_metadata_t **frame); status_t getNextFrame(CameraMetadata *frame); /** * Trigger auto-focus. The latest ID used in a trigger autofocus or cancel Loading Loading @@ -170,7 +175,7 @@ class Camera2Device : public virtual RefBase { const int mId; camera2_device_t *mDevice; camera_metadata_t *mDeviceInfo; CameraMetadata mDeviceInfo; vendor_tag_query_ops_t *mVendorTagOps; /** Loading Loading
services/camera/libcameraservice/Android.mk +2 −1 Original line number Diff line number Diff line Loading @@ -10,7 +10,8 @@ LOCAL_SRC_FILES:= \ CameraService.cpp \ CameraClient.cpp \ Camera2Client.cpp \ Camera2Device.cpp Camera2Device.cpp \ CameraMetadata.cpp LOCAL_SHARED_LIBRARIES:= \ libui \ Loading
services/camera/libcameraservice/Camera2Client.cpp +171 −253 File changed.Preview size limit exceeded, changes collapsed. Show changes
services/camera/libcameraservice/Camera2Client.h +12 −21 Original line number Diff line number Diff line Loading @@ -84,6 +84,7 @@ public: virtual void notifyAutoWhitebalance(uint8_t newState, int triggerId); virtual void onNewFrameAvailable(); private: enum State { DISCONNECTED, Loading Loading @@ -153,10 +154,10 @@ private: int64_t gpsTimestamp; String8 gpsProcessingMethod; int wbMode; int effectMode; int antibandingMode; int sceneMode; uint8_t wbMode; uint8_t effectMode; uint8_t antibandingMode; uint8_t sceneMode; enum flashMode_t { FLASH_MODE_OFF = 0, Loading Loading @@ -300,12 +301,12 @@ private: /* Output frame metadata processing methods */ status_t processFrameFaceDetect(camera_metadata_t *frame); status_t processFrameFaceDetect(const CameraMetadata &frame); /* Preview related members */ int mPreviewStreamId; camera_metadata_t *mPreviewRequest; CameraMetadata mPreviewRequest; sp<IBinder> mPreviewSurface; sp<ANativeWindow> mPreviewWindow; Loading Loading @@ -351,7 +352,7 @@ private: Camera2Client *mParent; }; sp<CaptureWaiter> mCaptureWaiter; camera_metadata_t *mCaptureRequest; CameraMetadata mCaptureRequest; sp<Camera2Heap> mCaptureHeap; // Handle captured image buffers void onCaptureAvailable(); Loading @@ -375,7 +376,7 @@ private: Camera2Client *mParent; }; sp<RecordingWaiter> mRecordingWaiter; camera_metadata_t *mRecordingRequest; CameraMetadata mRecordingRequest; sp<Camera2Heap> mRecordingHeap; static const size_t kDefaultRecordingHeapCount = 8; Loading Loading @@ -431,8 +432,8 @@ private: // checking the number of values in the entry. 0 for max/minCount means to // do no bounds check in that direction. In case of error, the entry data // pointer is null and the count is 0. camera_metadata_entry_t staticInfo(uint32_t tag, size_t minCount=0, size_t maxCount=0); camera_metadata_ro_entry_t staticInfo(uint32_t tag, size_t minCount=0, size_t maxCount=0) const; // Extract frequently-used camera static information into mDeviceInfo status_t buildDeviceInfo(); Loading @@ -441,7 +442,7 @@ private: status_t buildDefaultParameters(); // Update parameters all requests use, based on mParameters status_t updateRequestCommon(camera_metadata_t *request, const Parameters ¶ms); status_t updateRequestCommon(CameraMetadata *request, const Parameters ¶ms); // Map from sensor active array pixel coordinates to normalized camera // parameter coordinates. The former are (0,0)-(array width - 1, array height Loading @@ -449,16 +450,6 @@ private: int arrayXToNormalized(int width) const; int arrayYToNormalized(int height) const; // Update specific metadata entry with new values. Adds entry if it does not // exist, which will invalidate sorting static status_t updateEntry(camera_metadata_t *buffer, uint32_t tag, const void *data, size_t data_count); // Remove metadata entry. Will invalidate sorting. If entry does not exist, // does nothing. static status_t deleteEntry(camera_metadata_t *buffer, uint32_t tag); // Convert camera1 preview format string to camera2 enum static int formatStringToEnum(const char *format); static const char *formatEnumToString(int format); Loading
services/camera/libcameraservice/Camera2Device.cpp +26 −11 Original line number Diff line number Diff line Loading @@ -155,25 +155,28 @@ status_t Camera2Device::dump(int fd, const Vector<String16>& args) { return res; } camera_metadata_t *Camera2Device::info() { const CameraMetadata& Camera2Device::info() const { ALOGVV("%s: E", __FUNCTION__); return mDeviceInfo; } status_t Camera2Device::capture(camera_metadata_t* request) { status_t Camera2Device::capture(CameraMetadata &request) { ALOGV("%s: E", __FUNCTION__); mRequestQueue.enqueue(request); mRequestQueue.enqueue(request.release()); return OK; } status_t Camera2Device::setStreamingRequest(camera_metadata_t* request) { status_t Camera2Device::setStreamingRequest(const CameraMetadata &request) { ALOGV("%s: E", __FUNCTION__); CameraMetadata streamRequest(request); return mRequestQueue.setStreamSlot(streamRequest.release()); } mRequestQueue.setStreamSlot(request); return OK; status_t Camera2Device::clearStreamingRequest() { return mRequestQueue.setStreamSlot(NULL); } status_t Camera2Device::createStream(sp<ANativeWindow> consumer, Loading Loading @@ -269,10 +272,14 @@ status_t Camera2Device::deleteStream(int id) { } status_t Camera2Device::createDefaultRequest(int templateId, camera_metadata_t **request) { CameraMetadata *request) { status_t err; ALOGV("%s: E", __FUNCTION__); return mDevice->ops->construct_default_request( mDevice, templateId, request); camera_metadata_t *rawRequest; err = mDevice->ops->construct_default_request( mDevice, templateId, &rawRequest); request->acquire(rawRequest); return err; } status_t Camera2Device::waitUntilDrained() { Loading Loading @@ -344,8 +351,16 @@ status_t Camera2Device::setFrameListener(FrameListener *listener) { return mFrameQueue.setListener(listener); } status_t Camera2Device::getNextFrame(camera_metadata_t **frame) { return mFrameQueue.dequeue(frame); status_t Camera2Device::getNextFrame(CameraMetadata *frame) { status_t res; camera_metadata_t *rawFrame; res = mFrameQueue.dequeue(&rawFrame); if (rawFrame == NULL) { return NOT_ENOUGH_DATA; } else if (res == OK) { frame->acquire(rawFrame); } return res; } status_t Camera2Device::triggerAutofocus(uint32_t id) { Loading
services/camera/libcameraservice/Camera2Device.h +13 −8 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ #include <utils/Vector.h> #include "hardware/camera2.h" #include "CameraMetadata.h" namespace android { Loading @@ -41,21 +42,26 @@ class Camera2Device : public virtual RefBase { status_t dump(int fd, const Vector<String16>& args); /** * Get a pointer to the device's static characteristics metadata buffer * The device's static characteristics metadata buffer */ camera_metadata_t* info(); const CameraMetadata& info() const; /** * Submit request for capture. The Camera2Device takes ownership of the * passed-in buffer. */ status_t capture(camera_metadata_t *request); status_t capture(CameraMetadata &request); /** * Submit request for streaming. The Camera2Device makes a copy of the * passed-in buffer and the caller retains ownership. */ status_t setStreamingRequest(camera_metadata_t *request); status_t setStreamingRequest(const CameraMetadata &request); /** * Clear the streaming request slot. */ status_t clearStreamingRequest(); /** * Create an output stream of the requested size and format. Loading Loading @@ -92,8 +98,7 @@ class Camera2Device : public virtual RefBase { * Create a metadata buffer with fields that the HAL device believes are * best for the given use case */ status_t createDefaultRequest(int templateId, camera_metadata_t **request); status_t createDefaultRequest(int templateId, CameraMetadata *request); /** * Wait until all requests have been processed. Returns INVALID_OPERATION if Loading Loading @@ -142,7 +147,7 @@ class Camera2Device : public virtual RefBase { * Get next metadata frame from the frame queue. Returns NULL if the queue * is empty; caller takes ownership of the metadata buffer. */ status_t getNextFrame(camera_metadata_t **frame); status_t getNextFrame(CameraMetadata *frame); /** * Trigger auto-focus. The latest ID used in a trigger autofocus or cancel Loading Loading @@ -170,7 +175,7 @@ class Camera2Device : public virtual RefBase { const int mId; camera2_device_t *mDevice; camera_metadata_t *mDeviceInfo; CameraMetadata mDeviceInfo; vendor_tag_query_ops_t *mVendorTagOps; /** Loading