diff options
author | Younghwan Joo <yhwan.joo@samsung.com> | 2012-09-20 13:56:59 -0700 |
---|---|---|
committer | Rebecca Schultz Zavin <rebecca@android.com> | 2012-09-20 14:39:18 -0700 |
commit | f3312f8b250f3d2774564123ca0d7802f5016df5 (patch) | |
tree | 2d5f100969b82467d4eb98b10e2ec36d76303031 /libcamera2 | |
parent | 4a9565ae8328e47faae2e91c8b9e8eb4f0ff51f6 (diff) | |
download | exynos5-f3312f8b250f3d2774564123ca0d7802f5016df5.tar.gz |
hardware: samsung_slsi: libcamera2: add classification of FD meta data
This commit is to add classification of FD meta data by
fd scores
Change-Id: I593383eca67b7a84421ef8d69f532878923db5eb
Signed-off-by: Younghwan Joo <yhwan.joo@samsung.com>
Diffstat (limited to 'libcamera2')
-rw-r--r-- | libcamera2/ExynosCamera2.cpp | 2 | ||||
-rw-r--r-- | libcamera2/ExynosCamera2.h | 1 | ||||
-rw-r--r-- | libcamera2/MetadataConverter.cpp | 40 | ||||
-rw-r--r-- | libcamera2/MetadataConverter.h | 6 | ||||
-rw-r--r-- | libcamera2/fimc-is-metadata.h | 2 |
5 files changed, 36 insertions, 15 deletions
diff --git a/libcamera2/ExynosCamera2.cpp b/libcamera2/ExynosCamera2.cpp index 1184abf..c6b6140 100644 --- a/libcamera2/ExynosCamera2.cpp +++ b/libcamera2/ExynosCamera2.cpp @@ -459,7 +459,7 @@ status_t ExynosCamera2::constructStaticInfo(camera_metadata_t **info, availableFaceDetectModes, sizeof(availableFaceDetectModes)); - m_curCameraInfo->maxFaceCount = 16; + m_curCameraInfo->maxFaceCount = CAMERA2_MAX_FACES; ADD_OR_SIZE(ANDROID_STATS_MAX_FACE_COUNT, &(m_curCameraInfo->maxFaceCount), 1); diff --git a/libcamera2/ExynosCamera2.h b/libcamera2/ExynosCamera2.h index f743064..2f62d2e 100644 --- a/libcamera2/ExynosCamera2.h +++ b/libcamera2/ExynosCamera2.h @@ -32,6 +32,7 @@ #include <camera/Camera.h> #include <camera/CameraParameters.h> #include "exynos_format.h" +#include "fimc-is-metadata.h" //#define VDIS_ENABLE diff --git a/libcamera2/MetadataConverter.cpp b/libcamera2/MetadataConverter.cpp index 167c553..75c6a93 100644 --- a/libcamera2/MetadataConverter.cpp +++ b/libcamera2/MetadataConverter.cpp @@ -539,26 +539,40 @@ status_t MetadataConverter::ToDynamicMetadata(struct camera2_shot_ext * metadata &byteData, 1)) return NO_MEMORY; - int maxFacecount = 16; + int maxFacecount = CAMERA2_MAX_FACES; if (0 != add_camera_metadata_entry(dst, ANDROID_STATS_MAX_FACE_COUNT, &maxFacecount, 1)) return NO_MEMORY; - if (0 != add_camera_metadata_entry(dst, ANDROID_STATS_FACE_RECTANGLES, - &metadata->dm.stats.faceRectangles, 4 * maxFacecount)) - return NO_MEMORY; + int tempFaceCount = 0; + for (int i = 0; i < CAMERA2_MAX_FACES; i++) { + if (metadata->dm.stats.faceScores[i] >= CAMERA2_FACE_DETECTION_THRESHOLD) { + mataFaceIds[tempFaceCount] = metadata->dm.stats.faceIds[i]; + metaFaceScores[tempFaceCount] = metadata->dm.stats.faceScores[i]; - if (0 != add_camera_metadata_entry(dst, ANDROID_STATS_FACE_LANDMARKS, - &metadata->dm.stats.faceLandmarks, 6 * maxFacecount)) - return NO_MEMORY; + memcpy(&mataFaceLandmarks[tempFaceCount][0], &metadata->dm.stats.faceLandmarks[i][0], 6*sizeof(uint32_t)); + memcpy(&metaFaceRectangles[tempFaceCount][0], &metadata->dm.stats.faceRectangles[i][0], 4*sizeof(uint32_t)); + tempFaceCount++; + } + } - if (0 != add_camera_metadata_entry(dst, ANDROID_STATS_FACE_IDS, - &metadata->dm.stats.faceIds, maxFacecount)) - return NO_MEMORY; + if (tempFaceCount > 0) { + if (0 != add_camera_metadata_entry(dst, ANDROID_STATS_FACE_RECTANGLES, + &metaFaceRectangles, 4 * tempFaceCount)) + return NO_MEMORY; - if (0 != add_camera_metadata_entry(dst, ANDROID_STATS_FACE_SCORES, - &metadata->dm.stats.faceScores, maxFacecount)) - return NO_MEMORY; + if (0 != add_camera_metadata_entry(dst, ANDROID_STATS_FACE_LANDMARKS, + &mataFaceLandmarks, 6 * tempFaceCount)) + return NO_MEMORY; + + if (0 != add_camera_metadata_entry(dst, ANDROID_STATS_FACE_IDS, + &mataFaceIds, tempFaceCount)) + return NO_MEMORY; + + if (0 != add_camera_metadata_entry(dst, ANDROID_STATS_FACE_SCORES, + &metaFaceScores, tempFaceCount)) + return NO_MEMORY; + } if (0 != add_camera_metadata_entry(dst, ANDROID_SCALER_CROP_REGION, &metadata->ctl.scaler.cropRegion, 3)) diff --git a/libcamera2/MetadataConverter.h b/libcamera2/MetadataConverter.h index 0778609..2d637d0 100644 --- a/libcamera2/MetadataConverter.h +++ b/libcamera2/MetadataConverter.h @@ -53,7 +53,11 @@ private: status_t CheckEntryTypeMismatch(camera_metadata_entry_t * entry, uint8_t type); status_t CheckEntryTypeMismatch(camera_metadata_entry_t * entry, uint8_t type, size_t count); status_t ApplySceneModeParameters(camera_metadata_t * request, struct camera2_shot_ext * dst_ext); - + + uint32_t metaFaceRectangles[CAMERA2_MAX_FACES][4]; + uint8_t metaFaceScores[CAMERA2_MAX_FACES]; + uint32_t mataFaceLandmarks[CAMERA2_MAX_FACES][6]; + uint32_t mataFaceIds[CAMERA2_MAX_FACES]; }; }; // namespace android diff --git a/libcamera2/fimc-is-metadata.h b/libcamera2/fimc-is-metadata.h index 0de6c3a..8cb9141 100644 --- a/libcamera2/fimc-is-metadata.h +++ b/libcamera2/fimc-is-metadata.h @@ -29,6 +29,8 @@ struct rational { #define CAMERA2_MAX_AVAILABLE_MODE 21 #define CAMERA2_MAX_FACES 16 +#define CAMERA2_FACE_DETECTION_THRESHOLD 100 + /* *controls/dynamic metadata */ |