Merge "QCamera2: HAL3: Fix null AF_MODE metadata issue in HFR" into oc-dr1-dev
am: d3a8a95399
Change-Id: I213f03445e05ecee58386e6b19f1bcaf6c4eb215
diff --git a/msm8998/QCamera2/HAL3/QCamera3HWI.cpp b/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
index 40da6dd..56d8d0f 100644
--- a/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
+++ b/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
@@ -3509,6 +3509,9 @@
* which the partial result is being sen
* @lastUrgentMetadataInBatch: Boolean to indicate whether this is the
* last urgent metadata in a batch. Always true for non-batch mode
+ * @isJumpstartMetadata: Whether this is a partial metadata for
+ * jumpstart, i.e. even though it doesn't map to a valid partial
+ * frame number, its metadata entries should be kept.
*
* RETURN :
*
@@ -3517,7 +3520,8 @@
void QCamera3HardwareInterface::sendPartialMetadataWithLock(
metadata_buffer_t *metadata,
const pendingRequestIterator requestIter,
- bool lastUrgentMetadataInBatch)
+ bool lastUrgentMetadataInBatch,
+ bool isJumpstartMetadata)
{
camera3_capture_result_t result;
memset(&result, 0, sizeof(camera3_capture_result_t));
@@ -3526,7 +3530,8 @@
// Extract 3A metadata
result.result = translateCbUrgentMetadataToResultMetadata(
- metadata, lastUrgentMetadataInBatch, requestIter->frame_number);
+ metadata, lastUrgentMetadataInBatch, requestIter->frame_number,
+ isJumpstartMetadata);
// Populate metadata result
result.frame_number = requestIter->frame_number;
result.num_output_buffers = 0;
@@ -3675,7 +3680,8 @@
for (pendingRequestIterator i =
mPendingRequestsList.begin(); i != mPendingRequestsList.end(); i++) {
if (i->bUseFirstPartial) {
- sendPartialMetadataWithLock(metadata, i, lastUrgentMetadataInBatch);
+ sendPartialMetadataWithLock(metadata, i, lastUrgentMetadataInBatch,
+ true /*isJumpstartMetadata*/);
}
}
mFirstMetadataCallback = false;
@@ -3701,7 +3707,8 @@
if (i->frame_number == urgent_frame_number &&
i->partial_result_cnt == 0) {
- sendPartialMetadataWithLock(metadata, i, lastUrgentMetadataInBatch);
+ sendPartialMetadataWithLock(metadata, i, lastUrgentMetadataInBatch,
+ false /*isJumpstartMetadata*/);
if (mResetInstantAEC && mInstantAECSettledFrameNumber == 0) {
// Instant AEC settled for this frame.
LOGH("instant AEC settled for frame number %d", urgent_frame_number);
@@ -8192,19 +8199,21 @@
* urgent metadata in a batch. Always true for
* non-batch mode.
* @frame_number : frame number for this urgent metadata
- *
+ * @isJumpstartMetadata: Whether this is a partial metadata for jumpstart,
+ * i.e. even though it doesn't map to a valid partial
+ * frame number, its metadata entries should be kept.
* RETURN : camera_metadata_t*
* metadata in a format specified by fwk
*==========================================================================*/
camera_metadata_t*
QCamera3HardwareInterface::translateCbUrgentMetadataToResultMetadata
(metadata_buffer_t *metadata, bool lastUrgentMetadataInBatch,
- uint32_t frame_number)
+ uint32_t frame_number, bool isJumpstartMetadata)
{
CameraMetadata camMetadata;
camera_metadata_t *resultMetadata;
- if (!lastUrgentMetadataInBatch) {
+ if (!lastUrgentMetadataInBatch && !isJumpstartMetadata) {
/* In batch mode, use empty metadata if this is not the last in batch
*/
resultMetadata = allocate_camera_metadata(0, 0);
diff --git a/msm8998/QCamera2/HAL3/QCamera3HWI.h b/msm8998/QCamera2/HAL3/QCamera3HWI.h
index a806bd2..fcf7d62 100644
--- a/msm8998/QCamera2/HAL3/QCamera3HWI.h
+++ b/msm8998/QCamera2/HAL3/QCamera3HWI.h
@@ -315,7 +315,7 @@
metadata_buffer_t *hal_metadata, uint32_t snapshotStreamId, int64_t minFrameDuration);
camera_metadata_t* translateCbUrgentMetadataToResultMetadata (
metadata_buffer_t *metadata, bool lastUrgentMetadataInBatch,
- uint32_t frame_number);
+ uint32_t frame_number, bool isJumpstartMetadata);
camera_metadata_t* saveRequestSettings(const CameraMetadata& jpegMetadata,
camera3_capture_request_t *request);
int initParameters();
@@ -743,7 +743,7 @@
bool mFirstMetadataCallback;
void sendPartialMetadataWithLock(metadata_buffer_t *metadata,
const pendingRequestIterator requestIter,
- bool lastUrgentMetadataInBatch);
+ bool lastUrgentMetadataInBatch, bool isJumpstartMetadata);
camera_metadata_t* translateFromHalMetadata(metadata_buffer_t *metadata,
const PendingRequestInfo& pendingRequest,