1d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala/* 2d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * Copyright (C) 2012 The Android Open Source Project 3d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * 4d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * Licensed under the Apache License, Version 2.0 (the "License"); 5d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * you may not use this file except in compliance with the License. 6d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * You may obtain a copy of the License at 7d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * 8d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * http://www.apache.org/licenses/LICENSE-2.0 9d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * 10d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * Unless required by applicable law or agreed to in writing, software 11d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * distributed under the License is distributed on an "AS IS" BASIS, 12d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * See the License for the specific language governing permissions and 14d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * limitations under the License. 15d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala */ 16d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 17d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala/** 18d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * Fake vendor extensions for testing 19d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala */ 20d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 21d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala#ifndef TESTING_CAMERA_METADATA_FAKEVENDOR_H 22d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala#define TESTING_CAMERA_METADATA_FAKEVENDOR_H 23d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 24d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvalaenum vendor_extension_section { 25d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_SENSOR = VENDOR_SECTION, 26d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_SENSOR_INFO, 27d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_COLORCORRECTION, 28d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_SCALER, 29d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_SECTION_END 30d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala}; 31d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 32d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvalaconst int FAKEVENDOR_SECTION_COUNT = FAKEVENDOR_SECTION_END - VENDOR_SECTION; 33d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 34d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvalaenum vendor_extension_section_ranges { 35d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_SENSOR_START = FAKEVENDOR_SENSOR << 16, 36d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_SENSOR_I_START = FAKEVENDOR_SENSOR_INFO << 16, 37d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_COLORCORRECTION_START = FAKEVENDOR_COLORCORRECTION << 16, 38d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_SCALER_START = FAKEVENDOR_SCALER << 16 39d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala}; 40d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 41d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvalaenum vendor_extension_tags { 42d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_SENSOR_SUPERMODE = FAKEVENDOR_SENSOR_START, 43d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_SENSOR_DOUBLE_EXPOSURE, 44d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_SENSOR_END, 45d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 46d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_SENSOR_AVAILABLE_SUPERMODES = FAKEVENDOR_SENSOR_I_START, 47d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_SENSOR_I_END, 48d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 49d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_COLORCORRECTION_3DLUT_MODE = FAKEVENDOR_COLORCORRECTION_START, 50d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_COLORCORRECTION_3DLUT_TABLES, 51d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_COLORCORRECTION_END, 52d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 53d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_SCALER_DOWNSCALE_MODE = FAKEVENDOR_SCALER_START, 54d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_SCALER_DOWNSCALE_COEFF, 55d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_SCALER_END 56d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala}; 57d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 58d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvalatypedef struct vendor_tag_info { 59d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const char *tag_name; 60d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t tag_type; 61d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} vendor_tag_info_t; 62d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 63d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvalaconst char *fakevendor_section_names[FAKEVENDOR_SECTION_COUNT] = { 64d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala "com.fakevendor.sensor", 65d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala "com.fakevendor.sensor.info", 66d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala "com.fakevendor.colorCorrection", 67d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala "com.fakevendor.scaler" 68d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala}; 69d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 70d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvalaunsigned int fakevendor_section_bounds[FAKEVENDOR_SECTION_COUNT][2] = { 71d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala { FAKEVENDOR_SENSOR_START, FAKEVENDOR_SENSOR_END }, 72d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala { FAKEVENDOR_SENSOR_I_START, FAKEVENDOR_SENSOR_I_END }, 73d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala { FAKEVENDOR_COLORCORRECTION_START, FAKEVENDOR_COLORCORRECTION_END }, 74d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala { FAKEVENDOR_SCALER_START, FAKEVENDOR_SCALER_END} 75d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala}; 76d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 77d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvalavendor_tag_info_t fakevendor_sensor[FAKEVENDOR_SENSOR_END - 78d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_SENSOR_START] = { 79d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala { "superMode", TYPE_BYTE }, 80d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala { "doubleExposure", TYPE_INT64 } 81d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala}; 82d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 83d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvalavendor_tag_info_t fakevendor_sensor_info[FAKEVENDOR_SENSOR_I_END - 84d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_SENSOR_I_START] = { 85d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala { "availableSuperModes", TYPE_BYTE } 86d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala}; 87d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 88d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvalavendor_tag_info_t fakevendor_color_correction[FAKEVENDOR_COLORCORRECTION_END - 89d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_COLORCORRECTION_START] = { 90d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala { "3dLutMode", TYPE_BYTE }, 91d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala { "3dLutTables", TYPE_FLOAT } 92d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala}; 93d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 94d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvalavendor_tag_info_t fakevendor_scaler[FAKEVENDOR_SCALER_END - 95d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_SCALER_START] = { 96d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala { "downscaleMode", TYPE_BYTE }, 97d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala { "downscaleCoefficients", TYPE_FLOAT } 98d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala}; 99d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 100d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvalavendor_tag_info_t *fakevendor_tag_info[FAKEVENDOR_SECTION_COUNT] = { 101d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala fakevendor_sensor, 102d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala fakevendor_sensor_info, 103d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala fakevendor_color_correction, 104d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala fakevendor_scaler 105d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala}; 106d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 10794c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvalaconst char *get_fakevendor_section_name(const vendor_tag_query_ops_t *v, 10894c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala uint32_t tag); 10994c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvalaconst char *get_fakevendor_tag_name(const vendor_tag_query_ops_t *v, 11094c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala uint32_t tag); 11194c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvalaint get_fakevendor_tag_type(const vendor_tag_query_ops_t *v, 11294c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala uint32_t tag); 11394c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 11494c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvalastatic const vendor_tag_query_ops_t fakevendor_query_ops = { 11594c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala get_fakevendor_section_name, 11694c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala get_fakevendor_tag_name, 11794c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala get_fakevendor_tag_type 11894c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala}; 11994c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 12094c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvalaconst char *get_fakevendor_section_name(const vendor_tag_query_ops_t *v, 12194c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala uint32_t tag) { 12294c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala if (v != &fakevendor_query_ops) return NULL; 123d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int tag_section = (tag >> 16) - VENDOR_SECTION; 124d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala if (tag_section < 0 || 125d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala tag_section >= FAKEVENDOR_SECTION_COUNT) return NULL; 126d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 127d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala return fakevendor_section_names[tag_section]; 128d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 129d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 13094c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvalaconst char *get_fakevendor_tag_name(const vendor_tag_query_ops_t *v, 13194c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala uint32_t tag) { 13294c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala if (v != &fakevendor_query_ops) return NULL; 133d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int tag_section = (tag >> 16) - VENDOR_SECTION; 134d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala if (tag_section < 0 135d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala || tag_section >= FAKEVENDOR_SECTION_COUNT 136d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala || tag >= fakevendor_section_bounds[tag_section][1]) return NULL; 137d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int tag_index = tag & 0xFFFF; 138d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala return fakevendor_tag_info[tag_section][tag_index].tag_name; 139d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 140d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 14194c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvalaint get_fakevendor_tag_type(const vendor_tag_query_ops_t *v, 14294c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala uint32_t tag) { 14394c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala if (v != &fakevendor_query_ops) return -1; 144d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int tag_section = (tag >> 16) - VENDOR_SECTION; 145d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala if (tag_section < 0 146d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala || tag_section >= FAKEVENDOR_SECTION_COUNT 147d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala || tag >= fakevendor_section_bounds[tag_section][1]) return -1; 148d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int tag_index = tag & 0xFFFF; 149d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala return fakevendor_tag_info[tag_section][tag_index].tag_type; 150d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 151d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 152d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 153d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala#endif 154