Merge "Add some move constructors and assignment operators to CameraMetadata."

gugelfrei
Jayant Chowdhary 4 years ago committed by Android (Google) Code Review
commit e03cebc75e

@ -50,6 +50,15 @@ CameraMetadata::CameraMetadata(const CameraMetadata &other) :
mBuffer = clone_camera_metadata(other.mBuffer);
}
CameraMetadata::CameraMetadata(CameraMetadata &&other) :mBuffer(NULL), mLocked(false) {
acquire(other);
}
CameraMetadata &CameraMetadata::operator=(CameraMetadata &&other) {
acquire(other);
return *this;
}
CameraMetadata::CameraMetadata(camera_metadata_t *buffer) :
mBuffer(NULL), mLocked(false) {
acquire(buffer);

@ -117,6 +117,12 @@ CaptureResult::CaptureResult() :
mMetadata(), mResultExtras() {
}
CaptureResult::CaptureResult(CaptureResult &&otherResult) {
mMetadata = std::move(otherResult.mMetadata);
mResultExtras = otherResult.mResultExtras;
mPhysicalMetadatas = std::move(otherResult.mPhysicalMetadatas);
}
CaptureResult::CaptureResult(const CaptureResult &otherResult) {
mResultExtras = otherResult.mResultExtras;
mMetadata = otherResult.mMetadata;

@ -40,6 +40,11 @@ class CameraMetadata: public Parcelable {
* dataCapacity extra storage */
CameraMetadata(size_t entryCapacity, size_t dataCapacity = 10);
/**
* Move constructor, acquires other's metadata buffer
*/
CameraMetadata(CameraMetadata &&other);
~CameraMetadata();
/** Takes ownership of passed-in buffer */
@ -53,6 +58,11 @@ class CameraMetadata: public Parcelable {
CameraMetadata &operator=(const CameraMetadata &other);
CameraMetadata &operator=(const camera_metadata_t *buffer);
/**
* Move assignment operator, acquires other's metadata buffer
*/
CameraMetadata &operator=(CameraMetadata &&other);
/**
* Get reference to the underlying metadata buffer. Ownership remains with
* the CameraMetadata object, but non-const CameraMetadata methods will not

@ -135,6 +135,8 @@ struct CaptureResult : public virtual LightRefBase<CaptureResult> {
CaptureResult(const CaptureResult& otherResult);
CaptureResult(CaptureResult &&captureResult);
status_t readFromParcel(android::Parcel* parcel);
status_t writeToParcel(android::Parcel* parcel) const;
};

@ -1101,7 +1101,7 @@ class Camera3Device :
uint32_t mNextReprocessShutterFrameNumber;
// the minimal frame number of the next ZSL still capture shutter
uint32_t mNextZslStillShutterFrameNumber;
List<CaptureResult> mResultQueue;
std::list<CaptureResult> mResultQueue;
std::condition_variable mResultSignal;
wp<NotificationListener> mListener;

@ -212,7 +212,7 @@ class Camera3OfflineSession :
const uint32_t mNumPartialResults;
std::mutex mOutputLock;
List<CaptureResult> mResultQueue;
std::list<CaptureResult> mResultQueue;
std::condition_variable mResultSignal;
// the minimal frame number of the next non-reprocess result
uint32_t mNextResultFrameNumber;

@ -153,9 +153,9 @@ void insertResultLocked(CaptureOutputStates& states, CaptureResult *result, uint
}
// Valid result, insert into queue
List<CaptureResult>::iterator queuedResult =
std::list<CaptureResult>::iterator queuedResult =
states.resultQueue.insert(states.resultQueue.end(), CaptureResult(*result));
ALOGVV("%s: result requestId = %" PRId32 ", frameNumber = %" PRId64
ALOGV("%s: result requestId = %" PRId32 ", frameNumber = %" PRId64
", burstId = %" PRId32, __FUNCTION__,
queuedResult->mResultExtras.requestId,
queuedResult->mResultExtras.frameNumber,

@ -62,7 +62,7 @@ namespace camera3 {
std::mutex& inflightLock;
InFlightRequestMap& inflightMap; // end of inflightLock scope
std::mutex& outputLock;
List<CaptureResult>& resultQueue;
std::list<CaptureResult>& resultQueue;
std::condition_variable& resultSignal;
uint32_t& nextShutterFrameNum;
uint32_t& nextReprocShutterFrameNum;

Loading…
Cancel
Save