Camera: Cache physical camera id values

A pointer to data within CameraMetadata can become
invalid after each metadata modification. Cache any
values that could potentially point to the raw
internal metadata buffer.

Bug: 123954417
Test: Camera CTS
Change-Id: Ie5ac9600ff454af551c4cf8e0f25ba5a6a6e897d
gugelfrei
Emilian Peev 5 years ago
parent 612be7ff33
commit 1da379a140

@ -104,7 +104,8 @@ ACameraMetadata::derivePhysicalCameraIds() {
for (size_t i = 0; i < entry.count; ++i) {
if (ids[i] == '\0') {
if (start != i) {
mStaticPhysicalCameraIds.push_back((const char*)ids+start);
mStaticPhysicalCameraIdValues.push_back(String8((const char *)ids+start));
mStaticPhysicalCameraIds.push_back(mStaticPhysicalCameraIdValues.back().string());
}
start = i+1;
}

@ -117,6 +117,7 @@ struct ACameraMetadata : public RefBase {
static std::unordered_set<uint32_t> sSystemTags;
std::vector<const char*> mStaticPhysicalCameraIds;
std::vector<String8> mStaticPhysicalCameraIdValues;
};
#endif // _ACAMERA_METADATA_H

Loading…
Cancel
Save