camera_metadata_tests.cpp revision 94c1901a96c268f55012809f8261f2ec89c16dea
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 1794c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala#include <errno.h> 1894c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 19d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala#include "gtest/gtest.h" 20d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala#include "system/camera_metadata.h" 21d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 22d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala#include "camera_metadata_tests_fake_vendor.h" 23d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 24d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala#define EXPECT_NULL(x) EXPECT_EQ((void*)0, x) 25d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala#define EXPECT_NOT_NULL(x) EXPECT_NE((void*)0, x) 26d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 27d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala#define OK 0 28d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala#define ERROR 1 2994c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala#define NOT_FOUND (-ENOENT) 30d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 31d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, allocate_normal) { 32d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 33d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 5; 34d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 32; 35d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 36d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 37d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 38d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(m); 39d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, get_camera_metadata_entry_count(m)); 40d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(entry_capacity, get_camera_metadata_entry_capacity(m)); 41d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, get_camera_metadata_data_count(m)); 42d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_capacity, get_camera_metadata_data_capacity(m)); 43d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 44d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 45d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 46d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 47d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, allocate_nodata) { 48d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 49d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 50d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(1, 0); 51d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 52d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(m); 53d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, get_camera_metadata_entry_count(m)); 54d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)1, get_camera_metadata_entry_capacity(m)); 55d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, get_camera_metadata_data_count(m)); 56d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, get_camera_metadata_data_capacity(m)); 57d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 58d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 59d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 60d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 61d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, allocate_nothing) { 62d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 63d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 64d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(0, 0); 65d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 66d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NULL(m); 67d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 68d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 69d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, place_normal) { 70d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 71d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala void *buf = NULL; 72d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 73d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 5; 74d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 32; 75d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 76d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t buf_size = calculate_camera_metadata_size(entry_capacity, 77d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_capacity); 78d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 79d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_TRUE(buf_size > 0); 80d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 81d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala buf = malloc(buf_size); 82d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 83d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(buf); 84d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 85d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = place_camera_metadata(buf, buf_size, entry_capacity, data_capacity); 86d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 87d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(buf, (uint8_t*)m); 88d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, get_camera_metadata_entry_count(m)); 89d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(entry_capacity, get_camera_metadata_entry_capacity(m)); 90d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, get_camera_metadata_data_count(m)); 91d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_capacity, get_camera_metadata_data_capacity(m)); 92d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 93d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free(buf); 94d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 95d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 96d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, place_nospace) { 97d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 98d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala void *buf = NULL; 99d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 100d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 5; 101d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 32; 102d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 103d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t buf_size = calculate_camera_metadata_size(entry_capacity, 104d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_capacity); 105d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 106d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_GT(buf_size, (size_t)0); 107d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 108d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala buf_size--; 109d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 110d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala buf = malloc(buf_size); 111d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 112d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(buf); 113d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 114d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = place_camera_metadata(buf, buf_size, entry_capacity, data_capacity); 115d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 116d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NULL(m); 117d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 118d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free(buf); 119d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 120d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 121d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, place_extraspace) { 122d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 123d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t *buf = NULL; 124d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 125d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 5; 126d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 32; 127d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t extra_space = 10; 128d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 129d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t buf_size = calculate_camera_metadata_size(entry_capacity, 130d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_capacity); 131d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 132d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_GT(buf_size, (size_t)0); 133d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 134d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala buf_size += extra_space; 135d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 136d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala buf = (uint8_t*)malloc(buf_size); 137d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 138d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(buf); 139d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 140d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = place_camera_metadata(buf, buf_size, entry_capacity, data_capacity); 141d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 142d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((uint8_t*)m, buf); 143d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, get_camera_metadata_entry_count(m)); 144d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(entry_capacity, get_camera_metadata_entry_capacity(m)); 145d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, get_camera_metadata_data_count(m)); 146d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_capacity, get_camera_metadata_data_capacity(m)); 147d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(buf + buf_size - extra_space, (uint8_t*)m + get_camera_metadata_size(m)); 148d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 149d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free(buf); 150d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 151d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 152d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, get_size) { 153d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 154d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 5; 155d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 32; 156d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 157d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 158d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 159d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(calculate_camera_metadata_size(entry_capacity, data_capacity), 160d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_size(m) ); 161d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 162d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(calculate_camera_metadata_size(0,0), 163d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_compact_size(m) ); 164d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 165d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 166d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 167d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 168d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, add_get_normal) { 169d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 170d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 5; 171d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 80; 172d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 173d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 174d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 175d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 176d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t data_used = 0; 177d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t entries_used = 0; 178d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 179d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala // INT64 180d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 181d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int64_t exposure_time = 1000000000; 182d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 183d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ANDROID_SENSOR_EXPOSURE_TIME, 184d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &exposure_time, 1); 185d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 186d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_used += calculate_camera_metadata_entry_data_size( 187d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_tag_type(ANDROID_SENSOR_EXPOSURE_TIME), 1); 188d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala entries_used++; 189d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 190d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala // INT32 191d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 192d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int32_t sensitivity = 800; 193d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 194d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ANDROID_SENSOR_SENSITIVITY, 195d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &sensitivity, 1); 196d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 197d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_used += calculate_camera_metadata_entry_data_size( 198d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_tag_type(ANDROID_SENSOR_SENSITIVITY), 1); 199d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala entries_used++; 200d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 201d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala // FLOAT 202d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 203d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala float focusDistance = 0.5f; 204d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 205d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ANDROID_LENS_FOCUS_DISTANCE, 206d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &focusDistance, 1); 207d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 208d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_used += calculate_camera_metadata_entry_data_size( 209d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_tag_type(ANDROID_LENS_FOCUS_DISTANCE), 1); 210d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala entries_used++; 211d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 212d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala // Array of FLOAT 213d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 214d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala float colorTransform[9] = { 215d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 0.9f, 0.0f, 0.0f, 216d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 0.2f, 0.5f, 0.0f, 217d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 0.0f, 0.1f, 0.7f 218d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala }; 219d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 220d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ANDROID_COLOR_TRANSFORM, 221d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala colorTransform, 9); 222d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 223d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_used += calculate_camera_metadata_entry_data_size( 224d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_tag_type(ANDROID_COLOR_TRANSFORM), 9); 225d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala entries_used++; 226d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 227d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala // Check added entries 228d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 229d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint32_t tag = 0; 230d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t type = 0; 231d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int32_t *data_int32; 232d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int64_t *data_int64; 233d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala float *data_float; 234d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t data_count = 0; 235d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 236d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m, 237d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 0, &tag, &type, (void**)&data_int64, &data_count); 238d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 239d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(ANDROID_SENSOR_EXPOSURE_TIME, tag); 240d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(TYPE_INT64, type); 241d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)1, data_count); 242d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(exposure_time, *data_int64); 243d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 244d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m, 245d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 1, &tag, &type, (void**)&data_int32, &data_count); 246d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 247d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(ANDROID_SENSOR_SENSITIVITY, tag); 248d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(TYPE_INT32, type); 249d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)1, data_count); 250d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(sensitivity, *data_int32); 251d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 252d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m, 253d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 2, &tag, &type, (void**)&data_float, &data_count); 254d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 255d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(ANDROID_LENS_FOCUS_DISTANCE, tag); 256d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(TYPE_FLOAT, type); 257d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)1, data_count); 258d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(focusDistance, *data_float); 259d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 260d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m, 261d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 3, &tag, &type, (void**)&data_float, &data_count); 262d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 263d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(ANDROID_COLOR_TRANSFORM, tag); 264d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(TYPE_FLOAT, type); 265d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)9, data_count); 266d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int i=0; i < data_count; i++) { 267d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(colorTransform[i], data_float[i] ); 268d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 269d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 270d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(calculate_camera_metadata_size(entry_capacity, data_capacity), 271d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_size(m) ); 272d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 273d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(calculate_camera_metadata_size(entries_used, data_used), 274d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_compact_size(m) ); 275d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 27694c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala dump_camera_metadata(m, 0, 2); 277d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 278d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 279d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 280d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 281d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvalavoid add_test_metadata(camera_metadata_t *m, int entry_count) { 282d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 283d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(m); 284d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 285d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 286d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t data_used = 0; 287d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t entries_used = 0; 288d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int64_t exposure_time; 289d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (int i=0; i < entry_count; i++ ) { 290d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala exposure_time = 100 + i * 100; 291d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 292d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ANDROID_SENSOR_EXPOSURE_TIME, 293d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &exposure_time, 1); 294d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 295d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_used += calculate_camera_metadata_entry_data_size( 296d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_tag_type(ANDROID_SENSOR_EXPOSURE_TIME), 1); 297d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala entries_used++; 298d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 299d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_used, get_camera_metadata_data_count(m)); 300d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(entries_used, get_camera_metadata_entry_count(m)); 301d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_GT(get_camera_metadata_data_capacity(m), 302d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_data_count(m)); 303d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 304d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 305d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, add_get_toomany) { 306d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 307d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 5; 308d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 50; 309d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 310d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 311d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 312d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 313d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala add_test_metadata(m, entry_capacity); 314d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 315d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int32_t sensitivity = 100; 316d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 317d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ANDROID_SENSOR_SENSITIVITY, 318d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &sensitivity, 1); 319d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 320d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(ERROR, result); 321d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 322d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint32_t tag = 0; 323d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t type = 0; 324d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int32_t *data_int32; 325d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t data_count = 0; 326d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int i=0; i < entry_capacity; i++) { 327d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int64_t exposure_time = 100 + i * 100; 328d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m, 329d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala i, &tag, &type, (void**)&data_int32, &data_count); 330d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 331d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(ANDROID_SENSOR_EXPOSURE_TIME, tag); 332d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(TYPE_INT64, type); 333d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)1, data_count); 334d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(exposure_time, *data_int32); 335d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 336d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala tag = 0; 337d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala type = 0; 338d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_int32 = NULL; 339d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_count = 0; 340d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m, 341d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala entry_capacity, &tag, &type, (void**)&data_int32, &data_count); 342d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(ERROR, result); 343d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((uint32_t)0, tag); 344d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((uint8_t)0, type); 345d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, data_count); 346d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(NULL, data_int32); 347d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 34894c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala dump_camera_metadata(m, 0, 2); 349d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 350d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 351d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 352d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 353d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, copy_metadata) { 354d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 355d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 50; 356d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 450; 357d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 358d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 359d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 360d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 361d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 362d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala add_test_metadata(m, entry_capacity); 363d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 364d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t buf_size = get_camera_metadata_compact_size(m); 365d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_LT((size_t)0, buf_size); 366d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 367d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t *buf = (uint8_t*)malloc(buf_size); 368d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(buf); 369d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 370d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m2 = copy_camera_metadata(buf, buf_size, m); 371d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(m2); 372d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(buf, (uint8_t*)m2); 373d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_entry_count(m), 374d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_entry_count(m2)); 375d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_data_count(m), 376d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_data_count(m2)); 377d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_entry_capacity(m2), 378d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_entry_count(m2)); 379d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_data_capacity(m2), 380d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_data_count(m2)); 381d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 382d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int i=0; i < get_camera_metadata_entry_count(m); i++) { 383d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint32_t tag, tag2; 384d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t type, type2; 385d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t *data, *data2; 386d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t data_count, data_count2; 387d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 388d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 389d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m, 390d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala i, &tag, &type, (void**)&data, &data_count); 391d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 392d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m2, 393d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala i, &tag2, &type2, (void**)&data2, &data_count2); 394d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 395d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(tag, tag2); 396d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(type, type2); 397d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_count, data_count2); 398d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int j=0; j < data_count; j++) { 399d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data[j], data2[j]); 400d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 401d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 402d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 403d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free(buf); 404d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 405d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 406d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 407d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 408d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, copy_metadata_extraspace) { 409d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 410d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 12; 411d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 100; 412d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 413d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t extra_space = 10; 414d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 415d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 416d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 417d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 418d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 419d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala add_test_metadata(m, entry_capacity); 420d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 421d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t buf_size = get_camera_metadata_compact_size(m); 422d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_LT((size_t)0, buf_size); 423d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala buf_size += extra_space; 424d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 425d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t *buf = (uint8_t*)malloc(buf_size); 426d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(buf); 427d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 428d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m2 = copy_camera_metadata(buf, buf_size, m); 429d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(m2); 430d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(buf, (uint8_t*)m2); 431d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_entry_count(m), 432d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_entry_count(m2)); 433d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_data_count(m), 434d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_data_count(m2)); 435d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_entry_capacity(m2), 436d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_entry_count(m2)); 437d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_data_capacity(m2), 438d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_data_count(m2)); 439d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(buf + buf_size - extra_space, 440d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala (uint8_t*)m2 + get_camera_metadata_size(m2) ); 441d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 442d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int i=0; i < get_camera_metadata_entry_count(m); i++) { 443d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint32_t tag, tag2; 444d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t type, type2; 445d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t *data, *data2; 446d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t data_count, data_count2; 447d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 448d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 449d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m, 450d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala i, &tag, &type, (void**)&data, &data_count); 451d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 452d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m2, 453d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala i, &tag2, &type2, (void**)&data2, &data_count2); 454d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 455d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(tag, tag2); 456d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(type, type2); 457d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_count, data_count2); 458d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int j=0; j < data_count; j++) { 459d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data[j], data2[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 515d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_entry_count(m), get_camera_metadata_entry_count(m2)); 516d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_data_count(m), get_camera_metadata_data_count(m2)); 517d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(entry_capacity*2, get_camera_metadata_entry_capacity(m2)); 518d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_capacity*2, get_camera_metadata_data_capacity(m2)); 519d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 520d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int i=0; i < get_camera_metadata_entry_count(m); i++) { 521d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint32_t tag, tag2; 522d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t type, type2; 523d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t *data, *data2; 524d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t data_count, data_count2; 525d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 526d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 527d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m, 528d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala i, &tag, &type, (void**)&data, &data_count); 529d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 530d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m2, 531d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala i, &tag2, &type2, (void**)&data2, &data_count2); 532d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 533d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(tag, tag2); 534d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(type, type2); 535d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_count, data_count2); 536d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int j=0; j < data_count; j++) { 537d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data[j], data2[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 545d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_entry_count(m)*2, get_camera_metadata_entry_count(m2)); 546d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_data_count(m)*2, get_camera_metadata_data_count(m2)); 547d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(entry_capacity*2, get_camera_metadata_entry_capacity(m2)); 548d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_capacity*2, get_camera_metadata_data_capacity(m2)); 549d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 550d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int i=0; i < get_camera_metadata_entry_count(m2); i++) { 551d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint32_t tag, tag2; 552d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t type, type2; 553d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t *data, *data2; 554d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t data_count, data_count2; 555d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 556d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 557d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m, 558d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala i % entry_capacity, &tag, &type, (void**)&data, &data_count); 559d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 560d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m2, 561d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala i, &tag2, &type2, (void**)&data2, &data_count2); 562d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 563d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(tag, tag2); 564d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(type, type2); 565d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_count, data_count2); 566d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int j=0; j < data_count; j++) { 567d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data[j], data2[j]); 568d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 569d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 570d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 571d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 572d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m2); 573d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 574d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 575d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, append_metadata_nospace) { 576d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 577d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 5; 578d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 50; 579d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 580d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 581d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 582d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 583d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 584d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala add_test_metadata(m, entry_capacity); 585d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 586d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m2 = NULL; 587d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 588d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m2 = allocate_camera_metadata(entry_capacity-1, data_capacity); 589d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(m2); 590d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 591d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = append_camera_metadata(m2, m); 592d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 593d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(ERROR, result); 594d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, get_camera_metadata_entry_count(m2)); 595d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, get_camera_metadata_data_count(m2)); 596d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 597d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 598d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m2); 599d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 600d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 601d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, append_metadata_onespace) { 602d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 603d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 5; 604d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 50; 605d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity2 = entry_capacity * 2 - 2; 606d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity2 = data_capacity * 2; 607d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 608d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 609d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 610d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 611d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala add_test_metadata(m, entry_capacity); 612d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 613d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m2 = NULL; 614d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 615d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m2 = allocate_camera_metadata(entry_capacity2, data_capacity2); 616d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(m2); 617d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 618d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = append_camera_metadata(m2, m); 619d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 620d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 621d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 622d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_entry_count(m), get_camera_metadata_entry_count(m2)); 623d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_data_count(m), get_camera_metadata_data_count(m2)); 624d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(entry_capacity2, get_camera_metadata_entry_capacity(m2)); 625d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_capacity2, get_camera_metadata_data_capacity(m2)); 626d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 627d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int i=0; i < get_camera_metadata_entry_count(m); i++) { 628d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint32_t tag, tag2; 629d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t type, type2; 630d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t *data, *data2; 631d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t data_count, data_count2; 632d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 633d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 634d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m, 635d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala i, &tag, &type, (void**)&data, &data_count); 636d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 637d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m2, 638d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala i, &tag2, &type2, (void**)&data2, &data_count2); 639d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 640d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(tag, tag2); 641d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(type, type2); 642d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_count, data_count2); 643d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int j=0; j < data_count; j++) { 644d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data[j], data2[j]); 645d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 646d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 647d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 648d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = append_camera_metadata(m2, m); 649d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 650d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(ERROR, result); 651d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(entry_capacity, get_camera_metadata_entry_count(m2)); 652d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_data_count(m), 653d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_data_count(m2)); 654d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(entry_capacity2, get_camera_metadata_entry_capacity(m2)); 655d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_capacity2, get_camera_metadata_data_capacity(m2)); 656d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 657d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int i=0; i < get_camera_metadata_entry_count(m2); i++) { 658d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint32_t tag, tag2; 659d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t type, type2; 660d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t *data, *data2; 661d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t data_count, data_count2; 662d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 663d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 664d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m, 665d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala i % entry_capacity, &tag, &type, (void**)&data, &data_count); 666d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 667d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m2, 668d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala i, &tag2, &type2, (void**)&data2, &data_count2); 669d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 670d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(tag, tag2); 671d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(type, type2); 672d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_count, data_count2); 673d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int j=0; j < data_count; j++) { 674d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data[j], data2[j]); 675d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 676d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 677d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 678d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 679d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m2); 680d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 681d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 682d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, vendor_tags) { 683d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 684d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 5; 685d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 50; 686d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 687d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 688d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 689d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 690d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t superMode = 5; 691d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 692d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_SENSOR_SUPERMODE, 693d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &superMode, 1); 694d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(ERROR, result); 695d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 696d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 697d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ANDROID_REQUEST_METADATA_MODE, 698d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &superMode, 1); 699d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 700d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 701d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NULL(get_camera_metadata_section_name(FAKEVENDOR_SENSOR_SUPERMODE)); 702d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NULL(get_camera_metadata_tag_name(FAKEVENDOR_SENSOR_SUPERMODE)); 703d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(-1, get_camera_metadata_tag_type(FAKEVENDOR_SENSOR_SUPERMODE)); 704d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 705d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala set_camera_metadata_vendor_tag_ops(&fakevendor_query_ops); 706d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 707d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 708d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_SENSOR_SUPERMODE, 709d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &superMode, 1); 710d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 711d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 712d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 713d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ANDROID_REQUEST_METADATA_MODE, 714d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &superMode, 1); 715d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 716d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 717d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 718d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_SCALER_END, 719d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &superMode, 1); 720d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(ERROR, result); 721d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 722d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_STREQ("com.fakevendor.sensor", 723d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_section_name(FAKEVENDOR_SENSOR_SUPERMODE)); 724d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_STREQ("superMode", 725d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_tag_name(FAKEVENDOR_SENSOR_SUPERMODE)); 726d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(TYPE_BYTE, 727d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_tag_type(FAKEVENDOR_SENSOR_SUPERMODE)); 728d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 729d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_STREQ("com.fakevendor.scaler", 730d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_section_name(FAKEVENDOR_SCALER_END)); 731d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NULL(get_camera_metadata_tag_name(FAKEVENDOR_SCALER_END)); 732d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(-1, get_camera_metadata_tag_type(FAKEVENDOR_SCALER_END)); 733d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 734d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala set_camera_metadata_vendor_tag_ops(NULL); 735d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 736d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 737d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_SENSOR_SUPERMODE, 738d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &superMode, 1); 739d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(ERROR, result); 740d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 741d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 742d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ANDROID_REQUEST_METADATA_MODE, 743d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &superMode, 1); 744d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 745d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 746d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NULL(get_camera_metadata_section_name(FAKEVENDOR_SENSOR_SUPERMODE)); 747d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NULL(get_camera_metadata_tag_name(FAKEVENDOR_SENSOR_SUPERMODE)); 748d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(-1, get_camera_metadata_tag_type(FAKEVENDOR_SENSOR_SUPERMODE)); 749d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 750d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 751d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 752d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 753d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, add_all_tags) { 754d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int total_tag_count = 0; 755d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (int i = 0; i < ANDROID_SECTION_COUNT; i++) { 756d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala total_tag_count += camera_metadata_section_bounds[i][1] - 757d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_section_bounds[i][0]; 758d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 759d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int entry_data_count = 3; 760d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int conservative_data_space = total_tag_count * entry_data_count * 8; 761d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t data[entry_data_count * 8]; 762d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int32_t *data_int32 = (int32_t *)data; 763d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala float *data_float = (float *)data; 764d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int64_t *data_int64 = (int64_t *)data; 765d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala double *data_double = (double *)data; 766d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_rational_t *data_rational = (camera_metadata_rational_t *)data; 767d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 768d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = allocate_camera_metadata(total_tag_count, conservative_data_space); 769d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 770d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ASSERT_NE((void*)NULL, (void*)m); 771d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 772d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 773d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 774d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int counter = 0; 775d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (int i = 0; i < ANDROID_SECTION_COUNT; i++) { 776d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (uint32_t tag = camera_metadata_section_bounds[i][0]; 777d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala tag < camera_metadata_section_bounds[i][1]; 778d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala tag++, counter++) { 779d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int type = get_camera_metadata_tag_type(tag); 780d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ASSERT_NE(-1, type); 781d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 782d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala switch (type) { 783d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala case TYPE_BYTE: 784d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data[0] = tag & 0xFF; 785d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data[1] = (tag >> 8) & 0xFF; 786d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data[2] = (tag >> 16) & 0xFF; 787d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala break; 788d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala case TYPE_INT32: 789d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_int32[0] = tag; 790d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_int32[1] = i; 791d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_int32[2] = counter; 792d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala break; 793d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala case TYPE_FLOAT: 794d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_float[0] = tag; 795d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_float[1] = i; 796d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_float[2] = counter / (float)total_tag_count; 797d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala break; 798d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala case TYPE_INT64: 799d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_int64[0] = (int64_t)tag | ( (int64_t)tag << 32); 800d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_int64[1] = i; 801d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_int64[2] = counter; 802d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala break; 803d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala case TYPE_DOUBLE: 804d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_double[0] = tag; 805d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_double[1] = i; 806d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_double[2] = counter / (double)total_tag_count; 807d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala break; 808d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala case TYPE_RATIONAL: 809d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_rational[0].numerator = tag; 810d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_rational[0].denominator = 1; 811d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_rational[1].numerator = i; 812d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_rational[1].denominator = 1; 813d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_rational[2].numerator = counter; 814d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_rational[2].denominator = total_tag_count; 815d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala break; 816d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala default: 817d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAIL() << "Unknown type field encountered:" << type; 818d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala break; 819d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 820d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 821d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala tag, 822d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data, 823d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala entry_data_count); 824d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ASSERT_EQ(OK, result); 825d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 826d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 827d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 828d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 82994c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala dump_camera_metadata(m, 0, 2); 83094c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 83194c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala free_camera_metadata(m); 83294c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala} 83394c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 83494c1901a96c268f55012809f8261f2ec89c16deaEino-Ville TalvalaTEST(camera_metadata, sort_metadata) { 83594c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala camera_metadata_t *m = NULL; 83694c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala const size_t entry_capacity = 5; 83794c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala const size_t data_capacity = 100; 83894c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 83994c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala int result; 84094c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 84194c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 84294c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 84394c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala // Add several unique entries in non-sorted order 84494c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 84594c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala float colorTransform[9] = { 84694c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 0.9f, 0.0f, 0.0f, 84794c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 0.2f, 0.5f, 0.0f, 84894c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 0.0f, 0.1f, 0.7f 84994c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala }; 85094c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala result = add_camera_metadata_entry(m, 85194c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala ANDROID_COLOR_TRANSFORM, 85294c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala colorTransform, 9); 85394c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala EXPECT_EQ(OK, result); 85494c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 85594c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala float focus_distance = 0.5f; 85694c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala result = add_camera_metadata_entry(m, 85794c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala ANDROID_LENS_FOCUS_DISTANCE, 85894c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala &focus_distance, 1); 85994c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala EXPECT_EQ(OK, result); 86094c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 86194c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala int64_t exposure_time = 1000000000; 86294c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala result = add_camera_metadata_entry(m, 86394c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala ANDROID_SENSOR_EXPOSURE_TIME, 86494c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala &exposure_time, 1); 86594c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala EXPECT_EQ(OK, result); 86694c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 86794c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala int32_t sensitivity = 800; 86894c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala result = add_camera_metadata_entry(m, 86994c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala ANDROID_SENSOR_SENSITIVITY, 87094c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala &sensitivity, 1); 87194c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala EXPECT_EQ(OK, result); 87294c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 87394c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala // Test unsorted find 87494c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala uint8_t type; 87594c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala float *f; 87694c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala size_t data_count; 87794c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala result = find_camera_metadata_entry(m, 87894c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala ANDROID_LENS_FOCUS_DISTANCE, 87994c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala &type, 88094c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala (void**)&f, 88194c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala &data_count); 88294c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala EXPECT_EQ(OK, result); 88394c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala EXPECT_EQ(TYPE_FLOAT, type); 88494c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala EXPECT_EQ(1, (int)data_count); 88594c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala EXPECT_EQ(focus_distance, *f); 88694c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 88794c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala result = find_camera_metadata_entry(m, 88894c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala ANDROID_NOISE_STRENGTH, 88994c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala &type, 89094c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala (void**)&f, 89194c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala &data_count); 89294c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala EXPECT_EQ(NOT_FOUND, result); 89394c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 89494c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala // Sort 89594c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala std::cout << "Pre-sorted metadata" << std::endl; 89694c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala dump_camera_metadata(m, 0, 2); 89794c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 89894c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala result = sort_camera_metadata(m); 89994c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala EXPECT_EQ(OK, result); 90094c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 90194c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala std::cout << "Sorted metadata" << std::endl; 90294c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala dump_camera_metadata(m, 0, 2); 90394c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 90494c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala // Test sorted find 90594c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 90694c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala result = find_camera_metadata_entry(m, 90794c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala ANDROID_LENS_FOCUS_DISTANCE, 90894c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala &type, 90994c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala (void**)&f, 91094c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala &data_count); 91194c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala EXPECT_EQ(OK, result); 91294c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala EXPECT_EQ(TYPE_FLOAT, type); 91394c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala EXPECT_EQ(1, (int)data_count); 91494c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala EXPECT_EQ(focus_distance, *f); 91594c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 91694c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala result = find_camera_metadata_entry(m, 91794c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala ANDROID_NOISE_STRENGTH, 91894c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala &type, 91994c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala (void**)&f, 92094c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala &data_count); 92194c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala EXPECT_EQ(NOT_FOUND, result); 92294c1901a96c268f55012809f8261f2ec89c16deaEino-Ville Talvala 923d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 924d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 925d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 926