Merge "EmulatedFakeCamera2: Update to match camera_metadata changes"
This commit is contained in:
committed by
Android (Google) Code Review
commit
6d9c46f3ea
@@ -455,81 +455,73 @@ bool EmulatedFakeCamera2::ConfigureThread::threadLoop() {
|
|||||||
|
|
||||||
sort_camera_metadata(mRequest);
|
sort_camera_metadata(mRequest);
|
||||||
|
|
||||||
uint8_t *streams;
|
camera_metadata_entry_t streams;
|
||||||
size_t streamCount;
|
|
||||||
res = find_camera_metadata_entry(mRequest,
|
res = find_camera_metadata_entry(mRequest,
|
||||||
ANDROID_REQUEST_OUTPUT_STREAMS,
|
ANDROID_REQUEST_OUTPUT_STREAMS,
|
||||||
NULL,
|
&streams);
|
||||||
(void**)&streams,
|
|
||||||
&streamCount);
|
|
||||||
if (res != NO_ERROR) {
|
if (res != NO_ERROR) {
|
||||||
ALOGE("%s: error reading output stream tag", __FUNCTION__);
|
ALOGE("%s: error reading output stream tag", __FUNCTION__);
|
||||||
mParent->signalError();
|
mParent->signalError();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// TODO: Only raw stream supported
|
// TODO: Only raw stream supported
|
||||||
if (streamCount != 1 || streams[0] != 0) {
|
if (streams.count != 1 || streams.data.u8[0] != 0) {
|
||||||
ALOGE("%s: TODO: Only raw stream supported", __FUNCTION__);
|
ALOGE("%s: TODO: Only raw stream supported", __FUNCTION__);
|
||||||
mParent->signalError();
|
mParent->signalError();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
camera_metadata_entry_t e;
|
||||||
res = find_camera_metadata_entry(mRequest,
|
res = find_camera_metadata_entry(mRequest,
|
||||||
ANDROID_REQUEST_FRAME_COUNT,
|
ANDROID_REQUEST_FRAME_COUNT,
|
||||||
NULL,
|
&e);
|
||||||
(void**)&mNextFrameNumber,
|
|
||||||
NULL);
|
|
||||||
if (res != NO_ERROR) {
|
if (res != NO_ERROR) {
|
||||||
ALOGE("%s: error reading frame count tag", __FUNCTION__);
|
ALOGE("%s: error reading frame count tag", __FUNCTION__);
|
||||||
mParent->signalError();
|
mParent->signalError();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
mNextFrameNumber = *e.data.i32;
|
||||||
|
|
||||||
res = find_camera_metadata_entry(mRequest,
|
res = find_camera_metadata_entry(mRequest,
|
||||||
ANDROID_SENSOR_EXPOSURE_TIME,
|
ANDROID_SENSOR_EXPOSURE_TIME,
|
||||||
NULL,
|
&e);
|
||||||
(void**)&mNextExposureTime,
|
|
||||||
NULL);
|
|
||||||
if (res != NO_ERROR) {
|
if (res != NO_ERROR) {
|
||||||
ALOGE("%s: error reading exposure time tag", __FUNCTION__);
|
ALOGE("%s: error reading exposure time tag", __FUNCTION__);
|
||||||
mParent->signalError();
|
mParent->signalError();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
mNextExposureTime = *e.data.i64;
|
||||||
|
|
||||||
res = find_camera_metadata_entry(mRequest,
|
res = find_camera_metadata_entry(mRequest,
|
||||||
ANDROID_SENSOR_FRAME_DURATION,
|
ANDROID_SENSOR_FRAME_DURATION,
|
||||||
NULL,
|
&e);
|
||||||
(void**)&mNextFrameDuration,
|
|
||||||
NULL);
|
|
||||||
if (res != NO_ERROR) {
|
if (res != NO_ERROR) {
|
||||||
ALOGE("%s: error reading frame duration tag", __FUNCTION__);
|
ALOGE("%s: error reading frame duration tag", __FUNCTION__);
|
||||||
mParent->signalError();
|
mParent->signalError();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (*mNextFrameDuration <
|
mNextFrameDuration = *e.data.i64;
|
||||||
*mNextExposureTime + Sensor::kMinVerticalBlank) {
|
|
||||||
*mNextFrameDuration = *mNextExposureTime + Sensor::kMinVerticalBlank;
|
if (mNextFrameDuration <
|
||||||
|
mNextExposureTime + Sensor::kMinVerticalBlank) {
|
||||||
|
mNextFrameDuration = mNextExposureTime + Sensor::kMinVerticalBlank;
|
||||||
}
|
}
|
||||||
res = find_camera_metadata_entry(mRequest,
|
res = find_camera_metadata_entry(mRequest,
|
||||||
ANDROID_SENSOR_SENSITIVITY,
|
ANDROID_SENSOR_SENSITIVITY,
|
||||||
NULL,
|
&e);
|
||||||
(void**)&mNextSensitivity,
|
|
||||||
NULL);
|
|
||||||
if (res != NO_ERROR) {
|
if (res != NO_ERROR) {
|
||||||
ALOGE("%s: error reading sensitivity tag", __FUNCTION__);
|
ALOGE("%s: error reading sensitivity tag", __FUNCTION__);
|
||||||
mParent->signalError();
|
mParent->signalError();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
mNextSensitivity = *e.data.i32;
|
||||||
|
|
||||||
uint32_t *hourOfDay;
|
|
||||||
res = find_camera_metadata_entry(mRequest,
|
res = find_camera_metadata_entry(mRequest,
|
||||||
EMULATOR_SCENE_HOUROFDAY,
|
EMULATOR_SCENE_HOUROFDAY,
|
||||||
NULL,
|
&e);
|
||||||
(void**)&hourOfDay,
|
|
||||||
NULL);
|
|
||||||
if (res == NO_ERROR) {
|
if (res == NO_ERROR) {
|
||||||
ALOGV("Setting hour: %d", *hourOfDay);
|
ALOGV("Setting hour: %d", *e.data.i32);
|
||||||
mParent->mSensor->getScene().setHour(*hourOfDay);
|
mParent->mSensor->getScene().setHour(*e.data.i32);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Fetch stride from gralloc
|
// TODO: Fetch stride from gralloc
|
||||||
@@ -541,10 +533,10 @@ bool EmulatedFakeCamera2::ConfigureThread::threadLoop() {
|
|||||||
bool vsync = mParent->mSensor->waitForVSync(kWaitPerLoop);
|
bool vsync = mParent->mSensor->waitForVSync(kWaitPerLoop);
|
||||||
|
|
||||||
if (vsync) {
|
if (vsync) {
|
||||||
ALOGV("Configuring sensor for frame %d", *mNextFrameNumber);
|
ALOGV("Configuring sensor for frame %d", mNextFrameNumber);
|
||||||
mParent->mSensor->setExposureTime(*mNextExposureTime);
|
mParent->mSensor->setExposureTime(mNextExposureTime);
|
||||||
mParent->mSensor->setFrameDuration(*mNextFrameDuration);
|
mParent->mSensor->setFrameDuration(mNextFrameDuration);
|
||||||
mParent->mSensor->setSensitivity(*mNextSensitivity);
|
mParent->mSensor->setSensitivity(mNextSensitivity);
|
||||||
|
|
||||||
/** Get buffer to fill for this frame */
|
/** Get buffer to fill for this frame */
|
||||||
// TODO: Only does raw stream
|
// TODO: Only does raw stream
|
||||||
@@ -684,12 +676,12 @@ bool EmulatedFakeCamera2::ReadoutThread::threadLoop() {
|
|||||||
// Got sensor data, construct frame and send it out
|
// Got sensor data, construct frame and send it out
|
||||||
ALOGV("Readout: Constructing metadata and frames");
|
ALOGV("Readout: Constructing metadata and frames");
|
||||||
|
|
||||||
uint8_t *metadata_mode;
|
camera_metadata_entry_t metadataMode;
|
||||||
res = find_camera_metadata_entry(mRequest,
|
res = find_camera_metadata_entry(mRequest,
|
||||||
ANDROID_REQUEST_METADATA_MODE,
|
ANDROID_REQUEST_METADATA_MODE,
|
||||||
NULL, (void**)&metadata_mode, NULL);
|
&metadataMode);
|
||||||
|
|
||||||
if (*metadata_mode == ANDROID_REQUEST_METADATA_FULL) {
|
if (*metadataMode.data.u8 == ANDROID_REQUEST_METADATA_FULL) {
|
||||||
ALOGV("Metadata requested, constructing");
|
ALOGV("Metadata requested, constructing");
|
||||||
|
|
||||||
camera_metadata_t *frame = NULL;
|
camera_metadata_t *frame = NULL;
|
||||||
@@ -719,12 +711,11 @@ bool EmulatedFakeCamera2::ReadoutThread::threadLoop() {
|
|||||||
&captureTime,
|
&captureTime,
|
||||||
1);
|
1);
|
||||||
|
|
||||||
uint32_t hourOfDay = (uint32_t)mParent->mSensor->getScene().getHour();
|
int32_t hourOfDay = (int32_t)mParent->mSensor->getScene().getHour();
|
||||||
uint32_t *requestedHour;
|
camera_metadata_entry_t requestedHour;
|
||||||
res = find_camera_metadata_entry(frame,
|
res = find_camera_metadata_entry(frame,
|
||||||
EMULATOR_SCENE_HOUROFDAY,
|
EMULATOR_SCENE_HOUROFDAY,
|
||||||
NULL,
|
&requestedHour);
|
||||||
(void**)&requestedHour, NULL);
|
|
||||||
if (res == NAME_NOT_FOUND) {
|
if (res == NAME_NOT_FOUND) {
|
||||||
ALOGV("Adding vendor tag");
|
ALOGV("Adding vendor tag");
|
||||||
res = add_camera_metadata_entry(frame,
|
res = add_camera_metadata_entry(frame,
|
||||||
@@ -735,7 +726,7 @@ bool EmulatedFakeCamera2::ReadoutThread::threadLoop() {
|
|||||||
}
|
}
|
||||||
} else if (res == OK) {
|
} else if (res == OK) {
|
||||||
ALOGV("Replacing value in vendor tag");
|
ALOGV("Replacing value in vendor tag");
|
||||||
*requestedHour = hourOfDay;
|
*requestedHour.data.i32 = hourOfDay;
|
||||||
} else {
|
} else {
|
||||||
ALOGE("Error looking up vendor tag");
|
ALOGE("Error looking up vendor tag");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -151,10 +151,10 @@ private:
|
|||||||
// working on them
|
// working on them
|
||||||
|
|
||||||
camera_metadata_t *mRequest;
|
camera_metadata_t *mRequest;
|
||||||
uint32_t *mNextFrameNumber;
|
int32_t mNextFrameNumber;
|
||||||
uint64_t *mNextExposureTime;
|
int64_t mNextExposureTime;
|
||||||
uint64_t *mNextFrameDuration;
|
int64_t mNextFrameDuration;
|
||||||
uint32_t *mNextSensitivity;
|
int32_t mNextSensitivity;
|
||||||
buffer_handle_t *mNextBuffer;
|
buffer_handle_t *mNextBuffer;
|
||||||
int mNextBufferStride;
|
int mNextBufferStride;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user