Beispiel #1
0
 bool HasElementInArrayFromStaticTag(uint32_t tag, int32_t element) const {
     camera_metadata_ro_entry entry;
     EXPECT_EQ(OK, find_camera_metadata_ro_entry(mStaticInfo, tag, &entry));
     for (size_t i = 0; i < entry.count; ++i) {
         if (entry.data.i32[i] == element)
             return true;
     }
     return false;
 }
camera_metadata_ro_entry_t CameraMetadata::find(uint32_t tag) const {
    status_t res;
    camera_metadata_ro_entry entry;
    res = find_camera_metadata_ro_entry(mBuffer, tag, &entry);
    if (CC_UNLIKELY( res != OK )) {
        entry.count = 0;
        entry.data.u8 = NULL;
    }
    return entry;
}
Beispiel #3
0
void Camera3Device::getResolutionList(int32_t format,
                                      const int32_t **list,
                                      size_t *count) {
    ALOGV("Getting resolutions for format %x", format);
    status_t res;
    if (format != HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED) {
        camera_metadata_ro_entry_t availableConfig;
        res = find_camera_metadata_ro_entry(mStaticInfo,
                                            ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS,
                                            &availableConfig);
        ASSERT_EQ(OK, res);

        uint32_t formatIdx;
        for (formatIdx=0; formatIdx < availableConfig.count; formatIdx+=4) {
            if (availableConfig.data.i32[formatIdx] == format) {
                *list = availableConfig.data.i32;
                *count = availableConfig.count;
                break;
            }
        }
        ASSERT_NE(availableConfig.count, formatIdx)
                << "No support found for format 0x" << std::hex << format;
    }
}
const void * getMetadataValues(const camera_metadata_t * metadata, uint32_t tag, int type, int * count)
{
    status_t res = NO_ERROR;
    camera_metadata_ro_entry entry;
    res = find_camera_metadata_ro_entry(metadata, tag, &entry);
    if (res != OK) {
        LOGE("Failed to find %s.%s",
            get_camera_metadata_section_name(tag),
            get_camera_metadata_tag_name(tag));
        return NULL;
    }
    if (entry.type != type) {
        LOGE("Bad type %d for tag %s.%s! Should be %d",
            type,
            get_camera_metadata_section_name(tag),
            get_camera_metadata_tag_name(tag),
            entry.type);
        return NULL;
    }
    if (count)
        * count = entry.count;

    return entry.data.u8;
}
Beispiel #5
0
void Camera3Device::getStaticEntry(int tag, camera_metadata_ro_entry *result) {
    ASSERT_EQ(OK, find_camera_metadata_ro_entry(mStaticInfo, tag, result));
}
bool CameraMetadata::exists(uint32_t tag) const {
    camera_metadata_ro_entry entry;
    return find_camera_metadata_ro_entry(mBuffer, tag, &entry) == 0;
}
Beispiel #7
0
 int GetEntryCountFromStaticTag(uint32_t tag) const {
     camera_metadata_ro_entry entry;
     EXPECT_EQ(OK, find_camera_metadata_ro_entry(mStaticInfo, tag, &entry));
     return entry.count;
 }