Camera: Correct partial result entry count query

Use the partial tag count instead of the
size of the metadata buffer.
Additionally initialize 'collectedResult' to avoid
false positives when checking partial result entries
against invalid/uninitialized accumulated results.

Bug: 187156343
Test: Partner verified
Change-Id: Iff55f53952c7b06bc2a0b9786247d8ec04227705
This commit is contained in:
Emilian Peev
2021-05-12 12:35:16 -07:00
parent df759a0324
commit 3177f58e30

View File

@@ -997,7 +997,8 @@ protected:
frameNumber(0),
partialResultCount(0),
errorStreamId(-1),
hasInputBuffer(false) {}
hasInputBuffer(false),
collectedResult(1, 10) {}
InFlightRequest(ssize_t numBuffers, bool hasInput,
bool partialResults, uint32_t partialCount,
@@ -1013,7 +1014,8 @@ protected:
frameNumber(0),
partialResultCount(0),
errorStreamId(-1),
hasInputBuffer(hasInput) {}
hasInputBuffer(hasInput),
collectedResult(1, 10) {}
InFlightRequest(ssize_t numBuffers, bool hasInput,
bool partialResults, uint32_t partialCount,
@@ -1031,6 +1033,7 @@ protected:
partialResultCount(0),
errorStreamId(-1),
hasInputBuffer(hasInput),
collectedResult(1, 10),
expectedPhysicalResults(extraPhysicalResult) {}
};
@@ -1313,7 +1316,7 @@ bool CameraHidlTest::DeviceCb::processCaptureResultLocked(const CaptureResult& r
reinterpret_cast<const camera_metadata_t*>(resultMetadata.data());
const camera_metadata_t* collectedMetadata = request->collectedResult.getAndLock();
camera_metadata_ro_entry_t searchEntry, foundEntry;
for (size_t i = 0; i < get_camera_metadata_size(partialMetadata); i++) {
for (size_t i = 0; i < get_camera_metadata_entry_count(partialMetadata); i++) {
if (0 != get_camera_metadata_ro_entry(partialMetadata, i, &searchEntry)) {
ADD_FAILURE();
request->collectedResult.unlock(collectedMetadata);