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 17f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala#define LOG_NDEBUG 1 18f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala#define LOG_TAG "camera_metadata_tests" 19f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala#include "cutils/log.h" 20f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 2194c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala#include <errno.h> 2294c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 23d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala#include "gtest/gtest.h" 24d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala#include "system/camera_metadata.h" 25d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 26d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala#include "camera_metadata_tests_fake_vendor.h" 27d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 28d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala#define EXPECT_NULL(x) EXPECT_EQ((void*)0, x) 29d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala#define EXPECT_NOT_NULL(x) EXPECT_NE((void*)0, x) 30d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 31d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala#define OK 0 32d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala#define ERROR 1 3394c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala#define NOT_FOUND (-ENOENT) 34d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 35d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, allocate_normal) { 36d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 37d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 5; 38d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 32; 39d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 40d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 41d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 42d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(m); 43d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, get_camera_metadata_entry_count(m)); 44d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(entry_capacity, get_camera_metadata_entry_capacity(m)); 45d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, get_camera_metadata_data_count(m)); 46d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_capacity, get_camera_metadata_data_capacity(m)); 47d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 48d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 49d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 50d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 51d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, allocate_nodata) { 52d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 53d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 54d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(1, 0); 55d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 56d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(m); 57d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, get_camera_metadata_entry_count(m)); 58d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)1, get_camera_metadata_entry_capacity(m)); 59d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, get_camera_metadata_data_count(m)); 60d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, get_camera_metadata_data_capacity(m)); 61d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 62d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 63d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 64d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 65d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, allocate_nothing) { 66d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 67d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 68d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(0, 0); 69d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 70d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NULL(m); 71d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 72d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 73d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, place_normal) { 74d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 75d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala void *buf = NULL; 76d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 77d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 5; 78d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 32; 79d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 80d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t buf_size = calculate_camera_metadata_size(entry_capacity, 81d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_capacity); 82d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 83d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_TRUE(buf_size > 0); 84d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 85d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala buf = malloc(buf_size); 86d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 87d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(buf); 88d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 89d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = place_camera_metadata(buf, buf_size, entry_capacity, data_capacity); 90d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 91d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(buf, (uint8_t*)m); 92d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, get_camera_metadata_entry_count(m)); 93d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(entry_capacity, get_camera_metadata_entry_capacity(m)); 94d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, get_camera_metadata_data_count(m)); 95d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_capacity, get_camera_metadata_data_capacity(m)); 96d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 97d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free(buf); 98d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 99d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 100d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, place_nospace) { 101d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 102d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala void *buf = NULL; 103d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 104d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 5; 105d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 32; 106d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 107d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t buf_size = calculate_camera_metadata_size(entry_capacity, 108d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_capacity); 109d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 110d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_GT(buf_size, (size_t)0); 111d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 112d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala buf_size--; 113d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 114d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala buf = malloc(buf_size); 115d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 116d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(buf); 117d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 118d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = place_camera_metadata(buf, buf_size, entry_capacity, data_capacity); 119d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 120d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NULL(m); 121d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 122d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free(buf); 123d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 124d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 125d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, place_extraspace) { 126d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 127d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t *buf = NULL; 128d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 129d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 5; 130d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 32; 131d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t extra_space = 10; 132d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 133d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t buf_size = calculate_camera_metadata_size(entry_capacity, 134d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_capacity); 135d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 136d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_GT(buf_size, (size_t)0); 137d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 138d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala buf_size += extra_space; 139d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 140d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala buf = (uint8_t*)malloc(buf_size); 141d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 142d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(buf); 143d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 144d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = place_camera_metadata(buf, buf_size, entry_capacity, data_capacity); 145d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 146d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((uint8_t*)m, buf); 147d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, get_camera_metadata_entry_count(m)); 148d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(entry_capacity, get_camera_metadata_entry_capacity(m)); 149d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, get_camera_metadata_data_count(m)); 150d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_capacity, get_camera_metadata_data_capacity(m)); 151d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(buf + buf_size - extra_space, (uint8_t*)m + get_camera_metadata_size(m)); 152d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 153d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free(buf); 154d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 155d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 156d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, get_size) { 157d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 158d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 5; 159d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 32; 160d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 161d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 162d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 163d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(calculate_camera_metadata_size(entry_capacity, data_capacity), 164d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_size(m) ); 165d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 166d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(calculate_camera_metadata_size(0,0), 167d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_compact_size(m) ); 168d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 169d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 170d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 171d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 172d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, add_get_normal) { 173d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 174d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 5; 175d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 80; 176d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 177d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 178d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 179d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 180d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t data_used = 0; 181d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t entries_used = 0; 182d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 183d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala // INT64 184d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 185d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int64_t exposure_time = 1000000000; 186d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 187d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ANDROID_SENSOR_EXPOSURE_TIME, 188d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &exposure_time, 1); 189d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 190d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_used += calculate_camera_metadata_entry_data_size( 191d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_tag_type(ANDROID_SENSOR_EXPOSURE_TIME), 1); 192d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala entries_used++; 193d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 194d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala // INT32 195d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 196d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int32_t sensitivity = 800; 197d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 198d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ANDROID_SENSOR_SENSITIVITY, 199d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &sensitivity, 1); 200d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 201d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_used += calculate_camera_metadata_entry_data_size( 202d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_tag_type(ANDROID_SENSOR_SENSITIVITY), 1); 203d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala entries_used++; 204d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 205d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala // FLOAT 206d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 207d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala float focusDistance = 0.5f; 208d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 209d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ANDROID_LENS_FOCUS_DISTANCE, 210d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &focusDistance, 1); 211d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 212d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_used += calculate_camera_metadata_entry_data_size( 213d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_tag_type(ANDROID_LENS_FOCUS_DISTANCE), 1); 214d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala entries_used++; 215d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 216d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala // Array of FLOAT 217d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 218d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala float colorTransform[9] = { 219d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 0.9f, 0.0f, 0.0f, 220d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 0.2f, 0.5f, 0.0f, 221d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 0.0f, 0.1f, 0.7f 222d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala }; 223d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 224d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ANDROID_COLOR_TRANSFORM, 225d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala colorTransform, 9); 226d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 227d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_used += calculate_camera_metadata_entry_data_size( 228d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_tag_type(ANDROID_COLOR_TRANSFORM), 9); 229d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala entries_used++; 230d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 231d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala // Check added entries 232d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 233f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala camera_metadata_entry entry; 234d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m, 235f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 0, &entry); 236d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 237f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(0, (int)entry.index); 238f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_SENSOR_EXPOSURE_TIME, entry.tag); 239f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT64, entry.type); 240f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)1, entry.count); 241f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(exposure_time, *entry.data.i64); 242d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 243d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m, 244f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1, &entry); 245d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 246f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)1, entry.index); 247f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_SENSOR_SENSITIVITY, entry.tag); 248f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT32, entry.type); 249f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)1, entry.count); 250f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(sensitivity, *entry.data.i32); 251d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 252d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m, 253f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 2, &entry); 254d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 255f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)2, entry.index); 256f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_LENS_FOCUS_DISTANCE, entry.tag); 257f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_FLOAT, entry.type); 258f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)1, entry.count); 259f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(focusDistance, *entry.data.f); 260d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 261d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m, 262f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 3, &entry); 263d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 264f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)3, entry.index); 265f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_COLOR_TRANSFORM, entry.tag); 266f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_FLOAT, entry.type); 267f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)9, entry.count); 268f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala for (unsigned int i=0; i < entry.count; i++) { 269f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(colorTransform[i], entry.data.f[i] ); 270d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 271d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 272d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(calculate_camera_metadata_size(entry_capacity, data_capacity), 273d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_size(m) ); 274d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 275d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(calculate_camera_metadata_size(entries_used, data_used), 276d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_compact_size(m) ); 277d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 278f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala IF_ALOGV() { 279f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala dump_camera_metadata(m, 0, 2); 280f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala } 281d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 282d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 283d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 284d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 285d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvalavoid add_test_metadata(camera_metadata_t *m, int entry_count) { 286d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 287d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(m); 288d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 289d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 290d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t data_used = 0; 291d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t entries_used = 0; 292d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int64_t exposure_time; 293d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (int i=0; i < entry_count; i++ ) { 294d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala exposure_time = 100 + i * 100; 295d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 296d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ANDROID_SENSOR_EXPOSURE_TIME, 297d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &exposure_time, 1); 298d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 299d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_used += calculate_camera_metadata_entry_data_size( 300d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_tag_type(ANDROID_SENSOR_EXPOSURE_TIME), 1); 301d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala entries_used++; 302d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 303d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_used, get_camera_metadata_data_count(m)); 304d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(entries_used, get_camera_metadata_entry_count(m)); 305d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_GT(get_camera_metadata_data_capacity(m), 306d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_data_count(m)); 307d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 308d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 309d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, add_get_toomany) { 310d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 311d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 5; 312d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 50; 313d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 314d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 315d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 316d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 317d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala add_test_metadata(m, entry_capacity); 318d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 319d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int32_t sensitivity = 100; 320d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 321d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ANDROID_SENSOR_SENSITIVITY, 322d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &sensitivity, 1); 323d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 324d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(ERROR, result); 325d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 326f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala camera_metadata_entry entry; 327d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int i=0; i < entry_capacity; i++) { 328d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int64_t exposure_time = 100 + i * 100; 329d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m, 330f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala i, &entry); 331d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 332f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(i, entry.index); 333f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_SENSOR_EXPOSURE_TIME, entry.tag); 334f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT64, entry.type); 335f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)1, entry.count); 336f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(exposure_time, *entry.data.i64); 337d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 338f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala entry.tag = 1234; 339f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala entry.type = 56; 340f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala entry.data.u8 = NULL; 341f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala entry.count = 7890; 342d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m, 343f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala entry_capacity, &entry); 344d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(ERROR, result); 345f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((uint32_t)1234, entry.tag); 346f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((uint8_t)56, entry.type); 347f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(NULL, entry.data.u8); 348f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)7890, entry.count); 349d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 350f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala IF_ALOGV() { 351f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala dump_camera_metadata(m, 0, 2); 352f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala } 353d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 354d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 355d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 356d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 357d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, copy_metadata) { 358d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 359d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 50; 360d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 450; 361d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 362d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 363d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 364d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 365d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 366d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala add_test_metadata(m, entry_capacity); 367d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 368d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t buf_size = get_camera_metadata_compact_size(m); 369d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_LT((size_t)0, buf_size); 370d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 371d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t *buf = (uint8_t*)malloc(buf_size); 372d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(buf); 373d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 374d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m2 = copy_camera_metadata(buf, buf_size, m); 375d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(m2); 376d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(buf, (uint8_t*)m2); 377d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_entry_count(m), 378d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_entry_count(m2)); 379d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_data_count(m), 380d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_data_count(m2)); 381d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_entry_capacity(m2), 382d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_entry_count(m2)); 383d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_data_capacity(m2), 384d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_data_count(m2)); 385d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 386d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int i=0; i < get_camera_metadata_entry_count(m); i++) { 387f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala camera_metadata_entry e1, e2; 388d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 389f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = get_camera_metadata_entry(m, i, &e1); 390d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 391f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = get_camera_metadata_entry(m2, i, &e2); 392d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 393f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(e1.index, e2.index); 394f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(e1.tag, e2.tag); 395f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(e1.type, e2.type); 396f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(e1.count, e2.count); 397f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala for (unsigned int j=0; 398f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala j < e1.count * camera_metadata_type_size[e1.type]; 399f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala j++) { 400f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(e1.data.u8[j], e2.data.u8[j]); 401d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 402d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 403d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 404d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free(buf); 405d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 406d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 407d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 408d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 409d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, copy_metadata_extraspace) { 410d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 411d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 12; 412d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 100; 413d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 414d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t extra_space = 10; 415d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 416d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 417d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 418d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 419d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 420d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala add_test_metadata(m, entry_capacity); 421d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 422d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t buf_size = get_camera_metadata_compact_size(m); 423d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_LT((size_t)0, buf_size); 424d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala buf_size += extra_space; 425d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 426d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t *buf = (uint8_t*)malloc(buf_size); 427d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(buf); 428d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 429d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m2 = copy_camera_metadata(buf, buf_size, m); 430d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(m2); 431d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(buf, (uint8_t*)m2); 432d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_entry_count(m), 433d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_entry_count(m2)); 434d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_data_count(m), 435d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_data_count(m2)); 436d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_entry_capacity(m2), 437d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_entry_count(m2)); 438d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_data_capacity(m2), 439d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_data_count(m2)); 440d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(buf + buf_size - extra_space, 441d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala (uint8_t*)m2 + get_camera_metadata_size(m2) ); 442d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 443d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int i=0; i < get_camera_metadata_entry_count(m); i++) { 444f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala camera_metadata_entry e1, e2; 445d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 446d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 447f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = get_camera_metadata_entry(m, i, &e1); 448d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 449f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(i, e1.index); 450f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = get_camera_metadata_entry(m2, i, &e2); 451d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 452f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(e1.index, e2.index); 453f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(e1.tag, e2.tag); 454f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(e1.type, e2.type); 455f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(e1.count, e2.count); 456f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala for (unsigned int j=0; 457f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala j < e1.count * camera_metadata_type_size[e1.type]; 458f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala j++) { 459f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(e1.data.u8[j], e2.data.u8[j]); 460d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 461d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 462d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 463d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free(buf); 464d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 465d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 466d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 467d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 468d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, copy_metadata_nospace) { 469d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 470d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 5; 471d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 50; 472d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 473d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 474d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 475d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 476d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 477d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala add_test_metadata(m, entry_capacity); 478d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 479d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t buf_size = get_camera_metadata_compact_size(m); 480d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_LT((size_t)0, buf_size); 481d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 482d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala buf_size--; 483d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 484d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t *buf = (uint8_t*)malloc(buf_size); 485d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(buf); 486d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 487d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m2 = copy_camera_metadata(buf, buf_size, m); 488d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NULL(m2); 489d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 490d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free(buf); 491d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 492d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 493d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 494d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 495d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, append_metadata) { 496d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 497d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 5; 498d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 50; 499d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 500d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 501d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 502d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 503d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 504d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala add_test_metadata(m, entry_capacity); 505d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 506d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m2 = NULL; 507d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 508d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m2 = allocate_camera_metadata(entry_capacity*2, data_capacity*2); 509d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(m2); 510d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 511d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = append_camera_metadata(m2, m); 512d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 513d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 514d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 515f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(get_camera_metadata_entry_count(m), 516f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala get_camera_metadata_entry_count(m2)); 517f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(get_camera_metadata_data_count(m), 518f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala get_camera_metadata_data_count(m2)); 519d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(entry_capacity*2, get_camera_metadata_entry_capacity(m2)); 520d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_capacity*2, get_camera_metadata_data_capacity(m2)); 521d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 522d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int i=0; i < get_camera_metadata_entry_count(m); i++) { 523f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala camera_metadata_entry e1, e2; 524d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 525f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = get_camera_metadata_entry(m, i, &e1); 526d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 527f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(i, e1.index); 528f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = get_camera_metadata_entry(m2, i, &e2); 529d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 530f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(e1.index, e2.index); 531f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(e1.tag, e2.tag); 532f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(e1.type, e2.type); 533f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(e1.count, e2.count); 534f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala for (unsigned int j=0; 535f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala j < e1.count * camera_metadata_type_size[e1.type]; 536f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala j++) { 537f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(e1.data.u8[j], e2.data.u8[j]); 538d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 539d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 540d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 541d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = append_camera_metadata(m2, m); 542d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 543d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 544d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 545f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(get_camera_metadata_entry_count(m)*2, 546f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala get_camera_metadata_entry_count(m2)); 547f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(get_camera_metadata_data_count(m)*2, 548f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala get_camera_metadata_data_count(m2)); 549d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(entry_capacity*2, get_camera_metadata_entry_capacity(m2)); 550d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_capacity*2, get_camera_metadata_data_capacity(m2)); 551d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 552d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int i=0; i < get_camera_metadata_entry_count(m2); i++) { 553f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala camera_metadata_entry e1, e2; 554d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 555d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 556d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m, 557f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala i % entry_capacity, &e1); 558d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 559f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(i % entry_capacity, e1.index); 560d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m2, 561f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala i, &e2); 562d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 563f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(i, e2.index); 564f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(e1.tag, e2.tag); 565f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(e1.type, e2.type); 566f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(e1.count, e2.count); 567f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala for (unsigned int j=0; 568f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala j < e1.count * camera_metadata_type_size[e1.type]; 569f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala j++) { 570f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(e1.data.u8[j], e2.data.u8[j]); 571d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 572d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 573d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 574d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 575d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m2); 576d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 577d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 578d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, append_metadata_nospace) { 579d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 580d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 5; 581d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 50; 582d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 583d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 584d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 585d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 586d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 587d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala add_test_metadata(m, entry_capacity); 588d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 589d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m2 = NULL; 590d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 591d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m2 = allocate_camera_metadata(entry_capacity-1, data_capacity); 592d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(m2); 593d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 594d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = append_camera_metadata(m2, m); 595d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 596d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(ERROR, result); 597d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, get_camera_metadata_entry_count(m2)); 598d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, get_camera_metadata_data_count(m2)); 599d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 600d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 601d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m2); 602d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 603d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 604d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, append_metadata_onespace) { 605d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 606d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 5; 607d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 50; 608d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity2 = entry_capacity * 2 - 2; 609d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity2 = data_capacity * 2; 610d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 611d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 612d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 613d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 614d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala add_test_metadata(m, entry_capacity); 615d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 616d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m2 = NULL; 617d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 618d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m2 = allocate_camera_metadata(entry_capacity2, data_capacity2); 619d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(m2); 620d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 621d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = append_camera_metadata(m2, m); 622d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 623d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 624d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 625f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(get_camera_metadata_entry_count(m), 626f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala get_camera_metadata_entry_count(m2)); 627f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(get_camera_metadata_data_count(m), 628f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala get_camera_metadata_data_count(m2)); 629d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(entry_capacity2, get_camera_metadata_entry_capacity(m2)); 630d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_capacity2, get_camera_metadata_data_capacity(m2)); 631d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 632d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int i=0; i < get_camera_metadata_entry_count(m); i++) { 633f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala camera_metadata_entry e1, e2; 634d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 635d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 636f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = get_camera_metadata_entry(m, i, &e1); 637d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 638f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(i, e1.index); 639f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = get_camera_metadata_entry(m2, i, &e2); 640d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 641f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(e1.index, e2.index); 642f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(e1.tag, e2.tag); 643f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(e1.type, e2.type); 644f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(e1.count, e2.count); 645f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala for (unsigned int j=0; 646f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala j < e1.count * camera_metadata_type_size[e1.type]; 647f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala j++) { 648f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(e1.data.u8[j], e2.data.u8[j]); 649d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 650d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 651d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 652d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = append_camera_metadata(m2, m); 653d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 654d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(ERROR, result); 655d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(entry_capacity, get_camera_metadata_entry_count(m2)); 656d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_data_count(m), 657d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_data_count(m2)); 658d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(entry_capacity2, get_camera_metadata_entry_capacity(m2)); 659d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_capacity2, get_camera_metadata_data_capacity(m2)); 660d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 661d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int i=0; i < get_camera_metadata_entry_count(m2); i++) { 662f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala camera_metadata_entry e1, e2; 663d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 664d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 665d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m, 666f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala i % entry_capacity, &e1); 667d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 668f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(i % entry_capacity, e1.index); 669f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = get_camera_metadata_entry(m2, i, &e2); 670d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 671f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(i, e2.index); 672f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(e1.tag, e2.tag); 673f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(e1.type, e2.type); 674f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(e1.count, e2.count); 675f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala for (unsigned int j=0; 676f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala j < e1.count * camera_metadata_type_size[e1.type]; 677f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala j++) { 678f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(e1.data.u8[j], e2.data.u8[j]); 679d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 680d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 681d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 682d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 683d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m2); 684d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 685d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 686d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, vendor_tags) { 687d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 688d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 5; 689d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 50; 690d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 691d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 692d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 693d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 694d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t superMode = 5; 695d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 696d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_SENSOR_SUPERMODE, 697d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &superMode, 1); 698d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(ERROR, result); 699d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 700d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 701d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ANDROID_REQUEST_METADATA_MODE, 702d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &superMode, 1); 703d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 704d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 705d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NULL(get_camera_metadata_section_name(FAKEVENDOR_SENSOR_SUPERMODE)); 706d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NULL(get_camera_metadata_tag_name(FAKEVENDOR_SENSOR_SUPERMODE)); 707d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(-1, get_camera_metadata_tag_type(FAKEVENDOR_SENSOR_SUPERMODE)); 708d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 709d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala set_camera_metadata_vendor_tag_ops(&fakevendor_query_ops); 710d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 711d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 712d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_SENSOR_SUPERMODE, 713d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &superMode, 1); 714d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 715d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 716d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 717d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ANDROID_REQUEST_METADATA_MODE, 718d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &superMode, 1); 719d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 720d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 721d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 722d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_SCALER_END, 723d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &superMode, 1); 724d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(ERROR, result); 725d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 726d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_STREQ("com.fakevendor.sensor", 727d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_section_name(FAKEVENDOR_SENSOR_SUPERMODE)); 728d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_STREQ("superMode", 729d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_tag_name(FAKEVENDOR_SENSOR_SUPERMODE)); 730d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(TYPE_BYTE, 731d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_tag_type(FAKEVENDOR_SENSOR_SUPERMODE)); 732d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 733d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_STREQ("com.fakevendor.scaler", 734d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_section_name(FAKEVENDOR_SCALER_END)); 735d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NULL(get_camera_metadata_tag_name(FAKEVENDOR_SCALER_END)); 736d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(-1, get_camera_metadata_tag_type(FAKEVENDOR_SCALER_END)); 737d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 738d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala set_camera_metadata_vendor_tag_ops(NULL); 739d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 740d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 741d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_SENSOR_SUPERMODE, 742d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &superMode, 1); 743d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(ERROR, result); 744d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 745d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 746d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ANDROID_REQUEST_METADATA_MODE, 747d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &superMode, 1); 748d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 749d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 750d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NULL(get_camera_metadata_section_name(FAKEVENDOR_SENSOR_SUPERMODE)); 751d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NULL(get_camera_metadata_tag_name(FAKEVENDOR_SENSOR_SUPERMODE)); 752d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(-1, get_camera_metadata_tag_type(FAKEVENDOR_SENSOR_SUPERMODE)); 753d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 754d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 755d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 756d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 757d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, add_all_tags) { 758d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int total_tag_count = 0; 759d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (int i = 0; i < ANDROID_SECTION_COUNT; i++) { 760d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala total_tag_count += camera_metadata_section_bounds[i][1] - 761d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_section_bounds[i][0]; 762d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 763d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int entry_data_count = 3; 764d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int conservative_data_space = total_tag_count * entry_data_count * 8; 765d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t data[entry_data_count * 8]; 766d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int32_t *data_int32 = (int32_t *)data; 767d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala float *data_float = (float *)data; 768d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int64_t *data_int64 = (int64_t *)data; 769d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala double *data_double = (double *)data; 770f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala camera_metadata_rational_t *data_rational = 771f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala (camera_metadata_rational_t *)data; 772d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 773f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala camera_metadata_t *m = allocate_camera_metadata(total_tag_count, 774f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala conservative_data_space); 775d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 776d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ASSERT_NE((void*)NULL, (void*)m); 777d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 778d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 779d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 780d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int counter = 0; 781d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (int i = 0; i < ANDROID_SECTION_COUNT; i++) { 782d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (uint32_t tag = camera_metadata_section_bounds[i][0]; 783d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala tag < camera_metadata_section_bounds[i][1]; 784d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala tag++, counter++) { 785d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int type = get_camera_metadata_tag_type(tag); 786d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ASSERT_NE(-1, type); 787d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 788d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala switch (type) { 789d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala case TYPE_BYTE: 790d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data[0] = tag & 0xFF; 791d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data[1] = (tag >> 8) & 0xFF; 792d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data[2] = (tag >> 16) & 0xFF; 793d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala break; 794d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala case TYPE_INT32: 795d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_int32[0] = tag; 796d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_int32[1] = i; 797d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_int32[2] = counter; 798d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala break; 799d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala case TYPE_FLOAT: 800d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_float[0] = tag; 801d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_float[1] = i; 802d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_float[2] = counter / (float)total_tag_count; 803d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala break; 804d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala case TYPE_INT64: 805d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_int64[0] = (int64_t)tag | ( (int64_t)tag << 32); 806d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_int64[1] = i; 807d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_int64[2] = counter; 808d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala break; 809d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala case TYPE_DOUBLE: 810d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_double[0] = tag; 811d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_double[1] = i; 812d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_double[2] = counter / (double)total_tag_count; 813d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala break; 814d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala case TYPE_RATIONAL: 815d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_rational[0].numerator = tag; 816d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_rational[0].denominator = 1; 817d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_rational[1].numerator = i; 818d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_rational[1].denominator = 1; 819d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_rational[2].numerator = counter; 820d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_rational[2].denominator = total_tag_count; 821d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala break; 822d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala default: 823d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAIL() << "Unknown type field encountered:" << type; 824d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala break; 825d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 826d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 827d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala tag, 828d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data, 829d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala entry_data_count); 830d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ASSERT_EQ(OK, result); 831d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 832d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 833d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 834d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 835f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala IF_ALOGV() { 836f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala dump_camera_metadata(m, 0, 2); 837f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala } 83894c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 83994c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala free_camera_metadata(m); 84094c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala} 84194c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 84294c1901a96c268f55012809f8261f2ec89c16deaEino-Ville TalvalaTEST(camera_metadata, sort_metadata) { 84394c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala camera_metadata_t *m = NULL; 84494c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala const size_t entry_capacity = 5; 84594c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala const size_t data_capacity = 100; 84694c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 84794c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala int result; 84894c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 84994c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 85094c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 85194c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala // Add several unique entries in non-sorted order 85294c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 85394c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala float colorTransform[9] = { 85494c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 0.9f, 0.0f, 0.0f, 85594c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 0.2f, 0.5f, 0.0f, 85694c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 0.0f, 0.1f, 0.7f 85794c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala }; 85894c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala result = add_camera_metadata_entry(m, 85994c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala ANDROID_COLOR_TRANSFORM, 86094c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala colorTransform, 9); 86194c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala EXPECT_EQ(OK, result); 86294c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 86394c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala float focus_distance = 0.5f; 86494c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala result = add_camera_metadata_entry(m, 86594c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala ANDROID_LENS_FOCUS_DISTANCE, 86694c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala &focus_distance, 1); 86794c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala EXPECT_EQ(OK, result); 86894c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 86994c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala int64_t exposure_time = 1000000000; 87094c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala result = add_camera_metadata_entry(m, 87194c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala ANDROID_SENSOR_EXPOSURE_TIME, 87294c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala &exposure_time, 1); 87394c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala EXPECT_EQ(OK, result); 87494c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 87594c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala int32_t sensitivity = 800; 87694c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala result = add_camera_metadata_entry(m, 87794c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala ANDROID_SENSOR_SENSITIVITY, 87894c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala &sensitivity, 1); 87994c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala EXPECT_EQ(OK, result); 88094c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 88194c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala // Test unsorted find 882f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala camera_metadata_entry_t entry; 88394c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala result = find_camera_metadata_entry(m, 88494c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala ANDROID_LENS_FOCUS_DISTANCE, 885f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala &entry); 88694c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala EXPECT_EQ(OK, result); 887f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_LENS_FOCUS_DISTANCE, entry.tag); 888f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)1, entry.index); 889f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_FLOAT, entry.type); 890f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)1, entry.count); 891f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(focus_distance, *entry.data.f); 89294c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 89394c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala result = find_camera_metadata_entry(m, 89494c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala ANDROID_NOISE_STRENGTH, 895f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala &entry); 89694c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala EXPECT_EQ(NOT_FOUND, result); 897f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)1, entry.index); 898f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_LENS_FOCUS_DISTANCE, entry.tag); 899f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_FLOAT, entry.type); 900f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)1, entry.count); 901f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(focus_distance, *entry.data.f); 90294c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 90394c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala // Sort 904f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala IF_ALOGV() { 905f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala std::cout << "Pre-sorted metadata" << std::endl; 906f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala dump_camera_metadata(m, 0, 2); 907f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala } 90894c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 90994c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala result = sort_camera_metadata(m); 91094c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala EXPECT_EQ(OK, result); 91194c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 912f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala IF_ALOGV() { 913f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala std::cout << "Sorted metadata" << std::endl; 914f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala dump_camera_metadata(m, 0, 2); 915f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala } 91694c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 91794c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala // Test sorted find 91894c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 91994c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala result = find_camera_metadata_entry(m, 92094c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala ANDROID_LENS_FOCUS_DISTANCE, 921f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala &entry); 92294c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala EXPECT_EQ(OK, result); 923f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)0, entry.index); 924f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_LENS_FOCUS_DISTANCE, entry.tag); 925f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_FLOAT, entry.type); 926f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)1, (size_t)entry.count); 927f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(focus_distance, *entry.data.f); 92894c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 92994c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala result = find_camera_metadata_entry(m, 93094c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala ANDROID_NOISE_STRENGTH, 931f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala &entry); 93294c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala EXPECT_EQ(NOT_FOUND, result); 933f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)0, entry.index); 934f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_LENS_FOCUS_DISTANCE, entry.tag); 935f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_FLOAT, entry.type); 936f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)1, entry.count); 937f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(focus_distance, *entry.data.f); 93894c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 939d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 940d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 941d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 942f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 943f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville TalvalaTEST(camera_metadata, delete_metadata) { 944f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala camera_metadata_t *m = NULL; 945f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala const size_t entry_capacity = 50; 946f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala const size_t data_capacity = 450; 947f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 948f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala int result; 949f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 950f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 951f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 952f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala size_t num_entries = 5; 953f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala size_t data_per_entry = 954f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala calculate_camera_metadata_entry_data_size(TYPE_INT64, 1); 955f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala size_t num_data = num_entries * data_per_entry; 956f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 957f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala // Delete an entry with data 958f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 959f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala add_test_metadata(m, num_entries); 960f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_entries, get_camera_metadata_entry_count(m)); 961f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_data, get_camera_metadata_data_count(m)); 962f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 963f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = delete_camera_metadata_entry(m, 1); 964f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 965f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala num_entries--; 966f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala num_data -= data_per_entry; 967f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 968f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_entries, get_camera_metadata_entry_count(m)); 969f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(entry_capacity, get_camera_metadata_entry_capacity(m)); 970f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_data, get_camera_metadata_data_count(m)); 971f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(data_capacity, get_camera_metadata_data_capacity(m)); 972f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 973f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = delete_camera_metadata_entry(m, 4); 974f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ERROR, result); 975f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 976f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_entries, get_camera_metadata_entry_count(m)); 977f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(entry_capacity, get_camera_metadata_entry_capacity(m)); 978f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_data, get_camera_metadata_data_count(m)); 979f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(data_capacity, get_camera_metadata_data_capacity(m)); 980f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 981f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala for (size_t i = 0; i < num_entries; i++) { 982f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala camera_metadata_entry e; 983f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = get_camera_metadata_entry(m, i, &e); 984f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 985f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(i, e.index); 986f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_SENSOR_EXPOSURE_TIME, e.tag); 987f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT64, e.type); 988f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala int64_t exposureTime = i < 1 ? 100 : 200 + 100 * i; 989f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(exposureTime, *e.data.i64); 990f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala } 991f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 992f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala // Delete an entry with no data, at end of array 993f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 994f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala int32_t frameCount = 12; 995f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = add_camera_metadata_entry(m, 996f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala ANDROID_REQUEST_FRAME_COUNT, 997f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala &frameCount, 1); 998f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 999f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala num_entries++; 1000f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1001f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_entries, get_camera_metadata_entry_count(m)); 1002f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(entry_capacity, get_camera_metadata_entry_capacity(m)); 1003f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_data, get_camera_metadata_data_count(m)); 1004f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(data_capacity, get_camera_metadata_data_capacity(m)); 1005f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1006f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala camera_metadata_entry e; 1007f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = get_camera_metadata_entry(m, 4, &e); 1008f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1009f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1010f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)4, e.index); 1011f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_REQUEST_FRAME_COUNT, e.tag); 1012f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT32, e.type); 1013f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)1, e.count); 1014f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(frameCount, *e.data.i32); 1015f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1016f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = delete_camera_metadata_entry(m, 4); 1017f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1018f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1019f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala num_entries--; 1020f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_entries, get_camera_metadata_entry_count(m)); 1021f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(entry_capacity, get_camera_metadata_entry_capacity(m)); 1022f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_data, get_camera_metadata_data_count(m)); 1023f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(data_capacity, get_camera_metadata_data_capacity(m)); 1024f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1025f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = delete_camera_metadata_entry(m, 4); 1026f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ERROR, result); 1027f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1028f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = get_camera_metadata_entry(m, 4, &e); 1029f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ERROR, result); 1030f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1031f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_entries, get_camera_metadata_entry_count(m)); 1032f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(entry_capacity, get_camera_metadata_entry_capacity(m)); 1033f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_data, get_camera_metadata_data_count(m)); 1034f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(data_capacity, get_camera_metadata_data_capacity(m)); 1035f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1036f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala // Delete with extra data on end of array 1037f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = delete_camera_metadata_entry(m, 3); 1038f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1039f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala num_entries--; 1040f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala num_data -= data_per_entry; 1041f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1042f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala for (size_t i = 0; i < num_entries; i++) { 1043f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala camera_metadata_entry e2; 1044f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = get_camera_metadata_entry(m, i, &e2); 1045f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1046f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(i, e2.index); 1047f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_SENSOR_EXPOSURE_TIME, e2.tag); 1048f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT64, e2.type); 1049f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala int64_t exposureTime = i < 1 ? 100 : 200 + 100 * i; 1050f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(exposureTime, *e2.data.i64); 1051f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala } 1052f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1053f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala // Delete without extra data in front of array 1054f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1055f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala frameCount = 1001; 1056f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = add_camera_metadata_entry(m, 1057f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala ANDROID_REQUEST_FRAME_COUNT, 1058f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala &frameCount, 1); 1059f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1060f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala num_entries++; 1061f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1062f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_entries, get_camera_metadata_entry_count(m)); 1063f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(entry_capacity, get_camera_metadata_entry_capacity(m)); 1064f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_data, get_camera_metadata_data_count(m)); 1065f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(data_capacity, get_camera_metadata_data_capacity(m)); 1066f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1067f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = sort_camera_metadata(m); 1068f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1069f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1070f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = find_camera_metadata_entry(m, 1071f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala ANDROID_REQUEST_FRAME_COUNT, &e); 1072f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1073f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)0, e.index); 1074f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_REQUEST_FRAME_COUNT, e.tag); 1075f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT32, e.type); 1076f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)1, e.count); 1077f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(frameCount, *e.data.i32); 1078f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1079f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = delete_camera_metadata_entry(m, e.index); 1080f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1081f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala num_entries--; 1082f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1083f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_entries, get_camera_metadata_entry_count(m)); 1084f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(entry_capacity, get_camera_metadata_entry_capacity(m)); 1085f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_data, get_camera_metadata_data_count(m)); 1086f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(data_capacity, get_camera_metadata_data_capacity(m)); 1087f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1088f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala for (size_t i = 0; i < num_entries; i++) { 1089f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala camera_metadata_entry e2; 1090f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = get_camera_metadata_entry(m, i, &e2); 1091f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1092f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(i, e2.index); 1093f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_SENSOR_EXPOSURE_TIME, e2.tag); 1094f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT64, e2.type); 1095f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala int64_t exposureTime = i < 1 ? 100 : 200 + 100 * i; 1096f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(exposureTime, *e2.data.i64); 1097f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala } 1098f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala} 1099f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1100f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville TalvalaTEST(camera_metadata, update_metadata) { 1101f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala camera_metadata_t *m = NULL; 1102f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala const size_t entry_capacity = 50; 1103f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala const size_t data_capacity = 450; 1104f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1105f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala int result; 1106f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1107f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 1108f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1109f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala size_t num_entries = 5; 1110f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala size_t data_per_entry = 1111f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala calculate_camera_metadata_entry_data_size(TYPE_INT64, 1); 1112f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala size_t num_data = num_entries * data_per_entry; 1113f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1114f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala add_test_metadata(m, num_entries); 1115f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_entries, get_camera_metadata_entry_count(m)); 1116f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_data, get_camera_metadata_data_count(m)); 1117f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1118f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala // Update with same-size data, doesn't fit in entry 1119f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1120f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala int64_t newExposureTime = 1000; 1121f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala camera_metadata_entry_t e; 1122f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = update_camera_metadata_entry(m, 1123f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 0, &newExposureTime, 1, &e); 1124f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1125f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1126f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)0, e.index); 1127f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_SENSOR_EXPOSURE_TIME, e.tag); 1128f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT64, e.type); 1129f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)1, e.count); 1130f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(newExposureTime, *e.data.i64); 1131f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1132f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala e.count = 0; 1133f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = get_camera_metadata_entry(m, 1134f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 0, &e); 1135f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1136f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)0, e.index); 1137f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_SENSOR_EXPOSURE_TIME, e.tag); 1138f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT64, e.type); 1139f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)1, e.count); 1140f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(newExposureTime, *e.data.i64); 1141f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1142f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala for (size_t i = 1; i < num_entries; i++) { 1143f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala camera_metadata_entry e2; 1144f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = get_camera_metadata_entry(m, i, &e2); 1145f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1146f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(i, e2.index); 1147f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_SENSOR_EXPOSURE_TIME, e2.tag); 1148f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT64, e2.type); 1149f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala int64_t exposureTime = 100 + 100 * i; 1150f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(exposureTime, *e2.data.i64); 1151f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala } 1152f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1153f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala // Update with larger data 1154f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala int64_t newExposures[2] = { 5000, 6000 }; 1155f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = update_camera_metadata_entry(m, 1156f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 0, newExposures, 2, &e); 1157f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1158f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala num_data += data_per_entry; 1159f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1160f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_entries, get_camera_metadata_entry_count(m)); 1161f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_data, get_camera_metadata_data_count(m)); 1162f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1163f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)0, e.index); 1164f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_SENSOR_EXPOSURE_TIME, e.tag); 1165f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT64, e.type); 1166f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)2, e.count); 1167f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(newExposures[0], e.data.i64[0]); 1168f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(newExposures[1], e.data.i64[1]); 1169f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1170f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala e.count = 0; 1171f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = get_camera_metadata_entry(m, 1172f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 0, &e); 1173f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1174f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)0, e.index); 1175f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_SENSOR_EXPOSURE_TIME, e.tag); 1176f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT64, e.type); 1177f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)2, e.count); 1178f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(newExposures[0], e.data.i64[0]); 1179f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(newExposures[1], e.data.i64[1]); 1180f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1181f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala for (size_t i = 1; i < num_entries; i++) { 1182f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala camera_metadata_entry e2; 1183f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = get_camera_metadata_entry(m, i, &e2); 1184f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1185f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(i, e2.index); 1186f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_SENSOR_EXPOSURE_TIME, e2.tag); 1187f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT64, e2.type); 1188f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala int64_t exposureTime = 100 + 100 * i; 1189f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(exposureTime, *e2.data.i64); 1190f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala } 1191f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1192f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala // Update with smaller data 1193f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala newExposureTime = 100; 1194f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = update_camera_metadata_entry(m, 1195f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 0, &newExposureTime, 1, &e); 1196f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1197f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1198f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala num_data -= data_per_entry; 1199f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1200f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_entries, get_camera_metadata_entry_count(m)); 1201f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_data, get_camera_metadata_data_count(m)); 1202f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1203f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)0, e.index); 1204f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_SENSOR_EXPOSURE_TIME, e.tag); 1205f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT64, e.type); 1206f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)1, e.count); 1207f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(newExposureTime, *e.data.i64); 1208f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1209f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala e.count = 0; 1210f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = get_camera_metadata_entry(m, 1211f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 0, &e); 1212f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1213f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)0, e.index); 1214f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_SENSOR_EXPOSURE_TIME, e.tag); 1215f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT64, e.type); 1216f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)1, e.count); 1217f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(newExposureTime, *e.data.i64); 1218f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1219f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala for (size_t i = 1; i < num_entries; i++) { 1220f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala camera_metadata_entry e2; 1221f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = get_camera_metadata_entry(m, i, &e2); 1222f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1223f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(i, e2.index); 1224f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_SENSOR_EXPOSURE_TIME, e2.tag); 1225f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT64, e2.type); 1226f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala int64_t exposureTime = 100 + 100 * i; 1227f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(exposureTime, *e2.data.i64); 1228f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala } 1229f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1230f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala // Update with size fitting in entry 1231f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1232f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala int32_t frameCount = 1001; 1233f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = add_camera_metadata_entry(m, 1234f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala ANDROID_REQUEST_FRAME_COUNT, 1235f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala &frameCount, 1); 1236f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1237f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala num_entries++; 1238f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1239f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_entries, get_camera_metadata_entry_count(m)); 1240f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(entry_capacity, get_camera_metadata_entry_capacity(m)); 1241f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_data, get_camera_metadata_data_count(m)); 1242f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(data_capacity, get_camera_metadata_data_capacity(m)); 1243f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1244f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = sort_camera_metadata(m); 1245f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1246f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1247f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = find_camera_metadata_entry(m, 1248f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala ANDROID_REQUEST_FRAME_COUNT, &e); 1249f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1250f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)0, e.index); 1251f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_REQUEST_FRAME_COUNT, e.tag); 1252f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT32, e.type); 1253f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)1, e.count); 1254f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(frameCount, *e.data.i32); 1255f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1256f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala int32_t newFrameCount = 0x12349876; 1257f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = update_camera_metadata_entry(m, 1258f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 0, &newFrameCount, 1, &e); 1259f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1260f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1261f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)0, e.index); 1262f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_REQUEST_FRAME_COUNT, e.tag); 1263f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT32, e.type); 1264f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)1, e.count); 1265f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(newFrameCount, *e.data.i32); 1266f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1267f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = find_camera_metadata_entry(m, 1268f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala ANDROID_REQUEST_FRAME_COUNT, &e); 1269f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1270f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1271f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)0, e.index); 1272f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_REQUEST_FRAME_COUNT, e.tag); 1273f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT32, e.type); 1274f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)1, e.count); 1275f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(newFrameCount, *e.data.i32); 1276f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1277f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala for (size_t i = 1; i < num_entries; i++) { 1278f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala camera_metadata_entry e2; 1279f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = get_camera_metadata_entry(m, i, &e2); 1280f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1281f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(i, e2.index); 1282f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_SENSOR_EXPOSURE_TIME, e2.tag); 1283f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT64, e2.type); 1284f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala int64_t exposureTime = 100 * i; 1285f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(exposureTime, *e2.data.i64); 1286f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala } 1287f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1288f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala // Update to bigger than entry 1289f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1290f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala int32_t newFrameCounts[4] = { 0x0, 0x1, 0x10, 0x100 }; 1291f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1292f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = update_camera_metadata_entry(m, 1293f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 0, &newFrameCounts, 4, &e); 1294f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1295f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1296f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1297f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala num_data += calculate_camera_metadata_entry_data_size(TYPE_INT32, 1298f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 4); 1299f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1300f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_entries, get_camera_metadata_entry_count(m)); 1301f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_data, get_camera_metadata_data_count(m)); 1302f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1303f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)0, e.index); 1304f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_REQUEST_FRAME_COUNT, e.tag); 1305f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT32, e.type); 1306f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)4, e.count); 1307f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(newFrameCounts[0], e.data.i32[0]); 1308f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(newFrameCounts[1], e.data.i32[1]); 1309f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(newFrameCounts[2], e.data.i32[2]); 1310f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(newFrameCounts[3], e.data.i32[3]); 1311f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1312f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala e.count = 0; 1313f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1314f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = find_camera_metadata_entry(m, 1315f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala ANDROID_REQUEST_FRAME_COUNT, &e); 1316f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1317f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1318f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)0, e.index); 1319f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_REQUEST_FRAME_COUNT, e.tag); 1320f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT32, e.type); 1321f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)4, e.count); 1322f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(newFrameCounts[0], e.data.i32[0]); 1323f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(newFrameCounts[1], e.data.i32[1]); 1324f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(newFrameCounts[2], e.data.i32[2]); 1325f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(newFrameCounts[3], e.data.i32[3]); 1326f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1327f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala for (size_t i = 1; i < num_entries; i++) { 1328f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala camera_metadata_entry e2; 1329f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = get_camera_metadata_entry(m, i, &e2); 1330f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1331f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(i, e2.index); 1332f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_SENSOR_EXPOSURE_TIME, e2.tag); 1333f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT64, e2.type); 1334f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala int64_t exposureTime = 100 * i; 1335f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(exposureTime, *e2.data.i64); 1336f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala } 1337f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1338f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala // Update to smaller than entry 1339f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = update_camera_metadata_entry(m, 1340f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 0, &newFrameCount, 1, &e); 1341f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1342f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1343f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1344f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala num_data -= camera_metadata_type_size[TYPE_INT32] * 4; 1345f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1346f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_entries, get_camera_metadata_entry_count(m)); 1347f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_data, get_camera_metadata_data_count(m)); 1348f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1349f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)0, e.index); 1350f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_REQUEST_FRAME_COUNT, e.tag); 1351f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT32, e.type); 1352f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)1, e.count); 1353f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(newFrameCount, *e.data.i32); 1354f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1355f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = find_camera_metadata_entry(m, 1356f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala ANDROID_REQUEST_FRAME_COUNT, &e); 1357f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1358f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1359f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)0, e.index); 1360f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_REQUEST_FRAME_COUNT, e.tag); 1361f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT32, e.type); 1362f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)1, e.count); 1363f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(newFrameCount, *e.data.i32); 1364f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1365f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala for (size_t i = 1; i < num_entries; i++) { 1366f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala camera_metadata_entry_t e2; 1367f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = get_camera_metadata_entry(m, i, &e2); 1368f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1369f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(i, e2.index); 1370f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_SENSOR_EXPOSURE_TIME, e2.tag); 1371f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT64, e2.type); 1372f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala int64_t exposureTime = 100 * i; 1373f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(exposureTime, *e2.data.i64); 1374f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala } 1375f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1376f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala // Setup new buffer with no spare data space 1377f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1378f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = update_camera_metadata_entry(m, 1379f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1, newExposures, 2, &e); 1380f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1381f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1382f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala num_data += data_per_entry; 1383f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1384f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_entries, get_camera_metadata_entry_count(m)); 1385f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_data, get_camera_metadata_data_count(m)); 1386f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1387f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)1, e.index); 1388f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_SENSOR_EXPOSURE_TIME, e.tag); 1389f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT64, e.type); 1390f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)2, e.count); 1391f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(newExposures[0], e.data.i64[0]); 1392f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(newExposures[1], e.data.i64[1]); 1393f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1394f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala camera_metadata_t *m2; 1395f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala m2 = allocate_camera_metadata(get_camera_metadata_entry_count(m), 1396f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala get_camera_metadata_data_count(m)); 1397f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_NOT_NULL(m2); 1398f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1399f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = append_camera_metadata(m2, m); 1400f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1401f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1402f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = find_camera_metadata_entry(m2, 1403f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala ANDROID_REQUEST_FRAME_COUNT, &e); 1404f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1405f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1406f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)0, e.index); 1407f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_REQUEST_FRAME_COUNT, e.tag); 1408f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT32, e.type); 1409f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)1, e.count); 1410f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(newFrameCount, *e.data.i32); 1411f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1412f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala // Update when there's no more room 1413f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1414f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = update_camera_metadata_entry(m2, 1415f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 0, &newFrameCounts, 4, &e); 1416f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ERROR, result); 1417f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1418f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_entries, get_camera_metadata_entry_count(m2)); 1419f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_data, get_camera_metadata_data_count(m2)); 1420f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1421f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)0, e.index); 1422f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_REQUEST_FRAME_COUNT, e.tag); 1423f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT32, e.type); 1424f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)1, e.count); 1425f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(newFrameCount, *e.data.i32); 1426f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1427f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala // Update when there's no data room, but change fits into entry 1428f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1429f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala newFrameCount = 5; 1430f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = update_camera_metadata_entry(m2, 1431f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 0, &newFrameCount, 1, &e); 1432f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1433f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1434f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_entries, get_camera_metadata_entry_count(m2)); 1435f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_data, get_camera_metadata_data_count(m2)); 1436f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1437f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)0, e.index); 1438f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_REQUEST_FRAME_COUNT, e.tag); 1439f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT32, e.type); 1440f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)1, e.count); 1441f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(newFrameCount, *e.data.i32); 1442f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1443f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = find_camera_metadata_entry(m2, 1444f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala ANDROID_REQUEST_FRAME_COUNT, &e); 1445f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1446f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1447f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)0, e.index); 1448f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_REQUEST_FRAME_COUNT, e.tag); 1449f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT32, e.type); 1450f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)1, e.count); 1451f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(newFrameCount, *e.data.i32); 1452f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1453f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = get_camera_metadata_entry(m2, 1, &e); 1454f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)1, e.index); 1455f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_SENSOR_EXPOSURE_TIME, e.tag); 1456f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT64, e.type); 1457f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)2, e.count); 1458f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(newExposures[0], e.data.i64[0]); 1459f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(newExposures[1], e.data.i64[1]); 1460f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1461f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala for (size_t i = 2; i < num_entries; i++) { 1462f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala camera_metadata_entry_t e2; 1463f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = get_camera_metadata_entry(m2, i, &e2); 1464f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1465f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(i, e2.index); 1466f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_SENSOR_EXPOSURE_TIME, e2.tag); 1467f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT64, e2.type); 1468f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala int64_t exposureTime = 100 * i; 1469f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(exposureTime, *e2.data.i64); 1470f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala } 1471f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1472f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala // Update when there's no data room, but data size doesn't change 1473f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1474f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala newExposures[0] = 1000; 1475f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1476f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = update_camera_metadata_entry(m2, 1477f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1, newExposures, 2, &e); 1478f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1479f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1480f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_entries, get_camera_metadata_entry_count(m2)); 1481f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_data, get_camera_metadata_data_count(m2)); 1482f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1483f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)1, e.index); 1484f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_SENSOR_EXPOSURE_TIME, e.tag); 1485f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT64, e.type); 1486f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)2, e.count); 1487f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(newExposures[0], e.data.i64[0]); 1488f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(newExposures[1], e.data.i64[1]); 1489f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1490f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = find_camera_metadata_entry(m2, 1491f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala ANDROID_REQUEST_FRAME_COUNT, &e); 1492f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1493f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1494f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)0, e.index); 1495f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_REQUEST_FRAME_COUNT, e.tag); 1496f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT32, e.type); 1497f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)1, e.count); 1498f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(newFrameCount, *e.data.i32); 1499f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1500f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala for (size_t i = 2; i < num_entries; i++) { 1501f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala camera_metadata_entry_t e2; 1502f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = get_camera_metadata_entry(m2, i, &e2); 1503f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1504f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(i, e2.index); 1505f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_SENSOR_EXPOSURE_TIME, e2.tag); 1506f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT64, e2.type); 1507f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala int64_t exposureTime = 100 * i; 1508f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(exposureTime, *e2.data.i64); 1509f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala } 1510f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1511f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala // Update when there's no data room, but data size shrinks 1512f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1513f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = update_camera_metadata_entry(m2, 1514f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1, &newExposureTime, 1, &e); 1515f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1516f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1517f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala num_data -= calculate_camera_metadata_entry_data_size(TYPE_INT64, 2); 1518f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala num_data += calculate_camera_metadata_entry_data_size(TYPE_INT64, 1); 1519f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1520f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_entries, get_camera_metadata_entry_count(m2)); 1521f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(num_data, get_camera_metadata_data_count(m2)); 1522f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1523f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)1, e.index); 1524f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_SENSOR_EXPOSURE_TIME, e.tag); 1525f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT64, e.type); 1526f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)1, e.count); 1527f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(newExposureTime, e.data.i64[0]); 1528f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1529f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = find_camera_metadata_entry(m2, 1530f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala ANDROID_REQUEST_FRAME_COUNT, &e); 1531f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1532f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1533f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)0, e.index); 1534f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_REQUEST_FRAME_COUNT, e.tag); 1535f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT32, e.type); 1536f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ((size_t)1, e.count); 1537f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(newFrameCount, *e.data.i32); 1538f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1539f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala for (size_t i = 2; i < num_entries; i++) { 1540f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala camera_metadata_entry_t e2; 1541f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala result = get_camera_metadata_entry(m2, i, &e2); 1542f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(OK, result); 1543f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(i, e2.index); 1544f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(ANDROID_SENSOR_EXPOSURE_TIME, e2.tag); 1545f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(TYPE_INT64, e2.type); 1546f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala int64_t exposureTime = 100 * i; 1547f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala EXPECT_EQ(exposureTime, *e2.data.i64); 1548f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala } 1549f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala 1550f5fb8a5516876c5a48cc44b4f1c99504e0b9f245Eino-Ville Talvala} 155198d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala 155298d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville TalvalaTEST(camera_metadata, user_pointer) { 155398d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala camera_metadata_t *m = NULL; 155498d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala const size_t entry_capacity = 50; 155598d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala const size_t data_capacity = 450; 155698d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala 155798d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala int result; 155898d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala 155998d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 156098d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala 156198d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala size_t num_entries = 5; 156298d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala size_t data_per_entry = 156398d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala calculate_camera_metadata_entry_data_size(TYPE_INT64, 1); 156498d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala size_t num_data = num_entries * data_per_entry; 156598d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala 156698d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala add_test_metadata(m, num_entries); 156798d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala EXPECT_EQ(num_entries, get_camera_metadata_entry_count(m)); 156898d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala EXPECT_EQ(num_data, get_camera_metadata_data_count(m)); 156998d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala 157098d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala void* ptr; 157198d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala result = get_camera_metadata_user_pointer(m, &ptr); 157298d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala EXPECT_EQ(OK, result); 157398d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala EXPECT_NULL(ptr); 157498d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala 157598d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala int testValue = 10; 157698d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala result = set_camera_metadata_user_pointer(m, &testValue); 157798d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala EXPECT_EQ(OK, result); 157898d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala 157998d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala result = get_camera_metadata_user_pointer(m, &ptr); 158098d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala EXPECT_EQ(OK, result); 158198d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala EXPECT_EQ(&testValue, (int*)ptr); 158298d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala EXPECT_EQ(testValue, *(int*)ptr); 158398d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala 158498d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala size_t buf_size = get_camera_metadata_compact_size(m); 158598d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala EXPECT_LT((size_t)0, buf_size); 158698d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala 158798d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala uint8_t *buf = (uint8_t*)malloc(buf_size); 158898d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala EXPECT_NOT_NULL(buf); 158998d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala 159098d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala camera_metadata_t *m2 = copy_camera_metadata(buf, buf_size, m); 159198d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala EXPECT_NOT_NULL(m2); 159298d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala 159398d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala result = get_camera_metadata_user_pointer(m2, &ptr); 159498d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala EXPECT_NULL(ptr); 159598d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala 159698d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala free(buf); 159798d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala free_camera_metadata(m); 159898d02fd0be8cd09479262959a542dd2620bf6074Eino-Ville Talvala} 1599