camera_metadata_tests.cpp revision d8afb4d1a4245b2a9d722cbb358a4d6febed89cf
1d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala/* 2d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * Copyright (C) 2012 The Android Open Source Project 3d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * 4d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * Licensed under the Apache License, Version 2.0 (the "License"); 5d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * you may not use this file except in compliance with the License. 6d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * You may obtain a copy of the License at 7d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * 8d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * http://www.apache.org/licenses/LICENSE-2.0 9d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * 10d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * Unless required by applicable law or agreed to in writing, software 11d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * distributed under the License is distributed on an "AS IS" BASIS, 12d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * See the License for the specific language governing permissions and 14d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * limitations under the License. 15d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala */ 16d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 17d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala#include "gtest/gtest.h" 18d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala#include "system/camera_metadata.h" 19d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 20d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala#include "camera_metadata_tests_fake_vendor.h" 21d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 22d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala#define EXPECT_NULL(x) EXPECT_EQ((void*)0, x) 23d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala#define EXPECT_NOT_NULL(x) EXPECT_NE((void*)0, x) 24d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 25d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala#define OK 0 26d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala#define ERROR 1 27d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 28d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, allocate_normal) { 29d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 30d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 5; 31d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 32; 32d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 33d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 34d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 35d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(m); 36d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, get_camera_metadata_entry_count(m)); 37d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(entry_capacity, get_camera_metadata_entry_capacity(m)); 38d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, get_camera_metadata_data_count(m)); 39d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_capacity, get_camera_metadata_data_capacity(m)); 40d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 41d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 42d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 43d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 44d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, allocate_nodata) { 45d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 46d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 47d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(1, 0); 48d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 49d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(m); 50d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, get_camera_metadata_entry_count(m)); 51d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)1, get_camera_metadata_entry_capacity(m)); 52d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, get_camera_metadata_data_count(m)); 53d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, get_camera_metadata_data_capacity(m)); 54d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 55d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 56d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 57d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 58d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, allocate_nothing) { 59d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 60d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 61d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(0, 0); 62d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 63d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NULL(m); 64d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 65d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 66d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, place_normal) { 67d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 68d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala void *buf = NULL; 69d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 70d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 5; 71d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 32; 72d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 73d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t buf_size = calculate_camera_metadata_size(entry_capacity, 74d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_capacity); 75d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 76d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_TRUE(buf_size > 0); 77d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 78d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala buf = malloc(buf_size); 79d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 80d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(buf); 81d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 82d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = place_camera_metadata(buf, buf_size, entry_capacity, data_capacity); 83d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 84d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(buf, (uint8_t*)m); 85d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, get_camera_metadata_entry_count(m)); 86d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(entry_capacity, get_camera_metadata_entry_capacity(m)); 87d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, get_camera_metadata_data_count(m)); 88d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_capacity, get_camera_metadata_data_capacity(m)); 89d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 90d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free(buf); 91d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 92d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 93d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, place_nospace) { 94d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 95d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala void *buf = NULL; 96d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 97d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 5; 98d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 32; 99d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 100d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t buf_size = calculate_camera_metadata_size(entry_capacity, 101d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_capacity); 102d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 103d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_GT(buf_size, (size_t)0); 104d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 105d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala buf_size--; 106d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 107d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala buf = malloc(buf_size); 108d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 109d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(buf); 110d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 111d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = place_camera_metadata(buf, buf_size, entry_capacity, data_capacity); 112d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 113d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NULL(m); 114d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 115d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free(buf); 116d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 117d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 118d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, place_extraspace) { 119d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 120d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t *buf = NULL; 121d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 122d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 5; 123d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 32; 124d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t extra_space = 10; 125d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 126d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t buf_size = calculate_camera_metadata_size(entry_capacity, 127d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_capacity); 128d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 129d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_GT(buf_size, (size_t)0); 130d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 131d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala buf_size += extra_space; 132d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 133d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala buf = (uint8_t*)malloc(buf_size); 134d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 135d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(buf); 136d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 137d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = place_camera_metadata(buf, buf_size, entry_capacity, data_capacity); 138d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 139d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((uint8_t*)m, buf); 140d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, get_camera_metadata_entry_count(m)); 141d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(entry_capacity, get_camera_metadata_entry_capacity(m)); 142d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, get_camera_metadata_data_count(m)); 143d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_capacity, get_camera_metadata_data_capacity(m)); 144d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(buf + buf_size - extra_space, (uint8_t*)m + get_camera_metadata_size(m)); 145d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 146d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free(buf); 147d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 148d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 149d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, get_size) { 150d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 151d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 5; 152d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 32; 153d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 154d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 155d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 156d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(calculate_camera_metadata_size(entry_capacity, data_capacity), 157d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_size(m) ); 158d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 159d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(calculate_camera_metadata_size(0,0), 160d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_compact_size(m) ); 161d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 162d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 163d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 164d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 165d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, add_get_normal) { 166d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 167d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 5; 168d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 80; 169d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 170d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 171d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 172d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 173d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t data_used = 0; 174d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t entries_used = 0; 175d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 176d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala // INT64 177d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 178d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int64_t exposure_time = 1000000000; 179d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 180d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ANDROID_SENSOR_EXPOSURE_TIME, 181d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &exposure_time, 1); 182d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 183d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_used += calculate_camera_metadata_entry_data_size( 184d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_tag_type(ANDROID_SENSOR_EXPOSURE_TIME), 1); 185d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala entries_used++; 186d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 187d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala // INT32 188d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 189d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int32_t sensitivity = 800; 190d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 191d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ANDROID_SENSOR_SENSITIVITY, 192d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &sensitivity, 1); 193d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 194d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_used += calculate_camera_metadata_entry_data_size( 195d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_tag_type(ANDROID_SENSOR_SENSITIVITY), 1); 196d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala entries_used++; 197d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 198d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala // FLOAT 199d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 200d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala float focusDistance = 0.5f; 201d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 202d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ANDROID_LENS_FOCUS_DISTANCE, 203d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &focusDistance, 1); 204d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 205d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_used += calculate_camera_metadata_entry_data_size( 206d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_tag_type(ANDROID_LENS_FOCUS_DISTANCE), 1); 207d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala entries_used++; 208d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 209d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala // Array of FLOAT 210d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 211d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala float colorTransform[9] = { 212d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 0.9f, 0.0f, 0.0f, 213d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 0.2f, 0.5f, 0.0f, 214d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 0.0f, 0.1f, 0.7f 215d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala }; 216d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 217d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ANDROID_COLOR_TRANSFORM, 218d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala colorTransform, 9); 219d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 220d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_used += calculate_camera_metadata_entry_data_size( 221d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_tag_type(ANDROID_COLOR_TRANSFORM), 9); 222d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala entries_used++; 223d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 224d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala // Check added entries 225d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 226d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint32_t tag = 0; 227d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t type = 0; 228d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int32_t *data_int32; 229d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int64_t *data_int64; 230d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala float *data_float; 231d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t data_count = 0; 232d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 233d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m, 234d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 0, &tag, &type, (void**)&data_int64, &data_count); 235d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 236d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(ANDROID_SENSOR_EXPOSURE_TIME, tag); 237d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(TYPE_INT64, type); 238d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)1, data_count); 239d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(exposure_time, *data_int64); 240d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 241d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m, 242d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 1, &tag, &type, (void**)&data_int32, &data_count); 243d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 244d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(ANDROID_SENSOR_SENSITIVITY, tag); 245d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(TYPE_INT32, type); 246d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)1, data_count); 247d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(sensitivity, *data_int32); 248d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 249d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m, 250d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 2, &tag, &type, (void**)&data_float, &data_count); 251d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 252d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(ANDROID_LENS_FOCUS_DISTANCE, tag); 253d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(TYPE_FLOAT, type); 254d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)1, data_count); 255d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(focusDistance, *data_float); 256d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 257d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m, 258d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 3, &tag, &type, (void**)&data_float, &data_count); 259d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 260d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(ANDROID_COLOR_TRANSFORM, tag); 261d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(TYPE_FLOAT, type); 262d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)9, data_count); 263d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int i=0; i < data_count; i++) { 264d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(colorTransform[i], data_float[i] ); 265d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 266d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 267d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(calculate_camera_metadata_size(entry_capacity, data_capacity), 268d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_size(m) ); 269d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 270d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(calculate_camera_metadata_size(entries_used, data_used), 271d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_compact_size(m) ); 272d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 273d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala dump_camera_metadata(m, 2); 274d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 275d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 276d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 277d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 278d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvalavoid add_test_metadata(camera_metadata_t *m, int entry_count) { 279d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 280d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(m); 281d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 282d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 283d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t data_used = 0; 284d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t entries_used = 0; 285d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int64_t exposure_time; 286d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (int i=0; i < entry_count; i++ ) { 287d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala exposure_time = 100 + i * 100; 288d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 289d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ANDROID_SENSOR_EXPOSURE_TIME, 290d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &exposure_time, 1); 291d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 292d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_used += calculate_camera_metadata_entry_data_size( 293d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_tag_type(ANDROID_SENSOR_EXPOSURE_TIME), 1); 294d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala entries_used++; 295d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 296d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_used, get_camera_metadata_data_count(m)); 297d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(entries_used, get_camera_metadata_entry_count(m)); 298d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_GT(get_camera_metadata_data_capacity(m), 299d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_data_count(m)); 300d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 301d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 302d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, add_get_toomany) { 303d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 304d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 5; 305d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 50; 306d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 307d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 308d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 309d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 310d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala add_test_metadata(m, entry_capacity); 311d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 312d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int32_t sensitivity = 100; 313d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 314d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ANDROID_SENSOR_SENSITIVITY, 315d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &sensitivity, 1); 316d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 317d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(ERROR, result); 318d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 319d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint32_t tag = 0; 320d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t type = 0; 321d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int32_t *data_int32; 322d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t data_count = 0; 323d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int i=0; i < entry_capacity; i++) { 324d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int64_t exposure_time = 100 + i * 100; 325d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m, 326d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala i, &tag, &type, (void**)&data_int32, &data_count); 327d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 328d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(ANDROID_SENSOR_EXPOSURE_TIME, tag); 329d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(TYPE_INT64, type); 330d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)1, data_count); 331d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(exposure_time, *data_int32); 332d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 333d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala tag = 0; 334d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala type = 0; 335d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_int32 = NULL; 336d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_count = 0; 337d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m, 338d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala entry_capacity, &tag, &type, (void**)&data_int32, &data_count); 339d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(ERROR, result); 340d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((uint32_t)0, tag); 341d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((uint8_t)0, type); 342d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, data_count); 343d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(NULL, data_int32); 344d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 345d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala dump_camera_metadata(m, 2); 346d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 347d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 348d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 349d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 350d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, copy_metadata) { 351d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 352d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 50; 353d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 450; 354d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 355d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 356d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 357d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 358d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 359d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala add_test_metadata(m, entry_capacity); 360d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 361d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t buf_size = get_camera_metadata_compact_size(m); 362d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_LT((size_t)0, buf_size); 363d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 364d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t *buf = (uint8_t*)malloc(buf_size); 365d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(buf); 366d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 367d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m2 = copy_camera_metadata(buf, buf_size, m); 368d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(m2); 369d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(buf, (uint8_t*)m2); 370d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_entry_count(m), 371d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_entry_count(m2)); 372d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_data_count(m), 373d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_data_count(m2)); 374d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_entry_capacity(m2), 375d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_entry_count(m2)); 376d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_data_capacity(m2), 377d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_data_count(m2)); 378d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 379d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int i=0; i < get_camera_metadata_entry_count(m); i++) { 380d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint32_t tag, tag2; 381d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t type, type2; 382d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t *data, *data2; 383d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t data_count, data_count2; 384d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 385d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 386d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m, 387d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala i, &tag, &type, (void**)&data, &data_count); 388d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 389d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m2, 390d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala i, &tag2, &type2, (void**)&data2, &data_count2); 391d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 392d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(tag, tag2); 393d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(type, type2); 394d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_count, data_count2); 395d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int j=0; j < data_count; j++) { 396d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data[j], data2[j]); 397d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 398d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 399d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 400d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free(buf); 401d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 402d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 403d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 404d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 405d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, copy_metadata_extraspace) { 406d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 407d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 12; 408d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 100; 409d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 410d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t extra_space = 10; 411d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 412d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 413d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 414d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 415d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 416d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala add_test_metadata(m, entry_capacity); 417d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 418d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t buf_size = get_camera_metadata_compact_size(m); 419d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_LT((size_t)0, buf_size); 420d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala buf_size += extra_space; 421d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 422d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t *buf = (uint8_t*)malloc(buf_size); 423d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(buf); 424d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 425d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m2 = copy_camera_metadata(buf, buf_size, m); 426d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(m2); 427d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(buf, (uint8_t*)m2); 428d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_entry_count(m), 429d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_entry_count(m2)); 430d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_data_count(m), 431d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_data_count(m2)); 432d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_entry_capacity(m2), 433d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_entry_count(m2)); 434d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_data_capacity(m2), 435d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_data_count(m2)); 436d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(buf + buf_size - extra_space, 437d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala (uint8_t*)m2 + get_camera_metadata_size(m2) ); 438d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 439d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int i=0; i < get_camera_metadata_entry_count(m); i++) { 440d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint32_t tag, tag2; 441d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t type, type2; 442d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t *data, *data2; 443d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t data_count, data_count2; 444d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 445d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 446d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m, 447d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala i, &tag, &type, (void**)&data, &data_count); 448d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 449d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m2, 450d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala i, &tag2, &type2, (void**)&data2, &data_count2); 451d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 452d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(tag, tag2); 453d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(type, type2); 454d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_count, data_count2); 455d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int j=0; j < data_count; j++) { 456d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data[j], data2[j]); 457d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 458d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 459d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 460d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free(buf); 461d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 462d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 463d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 464d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 465d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, copy_metadata_nospace) { 466d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 467d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 5; 468d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 50; 469d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 470d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 471d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 472d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 473d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 474d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala add_test_metadata(m, entry_capacity); 475d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 476d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t buf_size = get_camera_metadata_compact_size(m); 477d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_LT((size_t)0, buf_size); 478d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 479d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala buf_size--; 480d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 481d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t *buf = (uint8_t*)malloc(buf_size); 482d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(buf); 483d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 484d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m2 = copy_camera_metadata(buf, buf_size, m); 485d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NULL(m2); 486d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 487d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free(buf); 488d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 489d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 490d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 491d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 492d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, append_metadata) { 493d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 494d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 5; 495d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 50; 496d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 497d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 498d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 499d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 500d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 501d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala add_test_metadata(m, entry_capacity); 502d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 503d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m2 = NULL; 504d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 505d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m2 = allocate_camera_metadata(entry_capacity*2, data_capacity*2); 506d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(m2); 507d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 508d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = append_camera_metadata(m2, m); 509d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 510d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 511d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 512d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_entry_count(m), get_camera_metadata_entry_count(m2)); 513d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_data_count(m), get_camera_metadata_data_count(m2)); 514d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(entry_capacity*2, get_camera_metadata_entry_capacity(m2)); 515d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_capacity*2, get_camera_metadata_data_capacity(m2)); 516d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 517d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int i=0; i < get_camera_metadata_entry_count(m); i++) { 518d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint32_t tag, tag2; 519d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t type, type2; 520d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t *data, *data2; 521d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t data_count, data_count2; 522d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 523d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 524d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m, 525d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala i, &tag, &type, (void**)&data, &data_count); 526d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 527d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m2, 528d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala i, &tag2, &type2, (void**)&data2, &data_count2); 529d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 530d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(tag, tag2); 531d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(type, type2); 532d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_count, data_count2); 533d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int j=0; j < data_count; j++) { 534d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data[j], data2[j]); 535d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 536d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 537d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 538d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = append_camera_metadata(m2, m); 539d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 540d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 541d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 542d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_entry_count(m)*2, get_camera_metadata_entry_count(m2)); 543d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_data_count(m)*2, get_camera_metadata_data_count(m2)); 544d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(entry_capacity*2, get_camera_metadata_entry_capacity(m2)); 545d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_capacity*2, get_camera_metadata_data_capacity(m2)); 546d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 547d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int i=0; i < get_camera_metadata_entry_count(m2); i++) { 548d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint32_t tag, tag2; 549d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t type, type2; 550d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t *data, *data2; 551d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t data_count, data_count2; 552d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 553d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 554d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m, 555d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala i % entry_capacity, &tag, &type, (void**)&data, &data_count); 556d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 557d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m2, 558d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala i, &tag2, &type2, (void**)&data2, &data_count2); 559d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 560d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(tag, tag2); 561d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(type, type2); 562d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_count, data_count2); 563d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int j=0; j < data_count; j++) { 564d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data[j], data2[j]); 565d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 566d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 567d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 568d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 569d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m2); 570d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 571d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 572d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, append_metadata_nospace) { 573d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 574d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 5; 575d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 50; 576d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 577d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 578d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 579d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 580d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 581d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala add_test_metadata(m, entry_capacity); 582d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 583d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m2 = NULL; 584d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 585d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m2 = allocate_camera_metadata(entry_capacity-1, data_capacity); 586d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(m2); 587d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 588d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = append_camera_metadata(m2, m); 589d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 590d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(ERROR, result); 591d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, get_camera_metadata_entry_count(m2)); 592d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ((size_t)0, get_camera_metadata_data_count(m2)); 593d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 594d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 595d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m2); 596d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 597d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 598d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, append_metadata_onespace) { 599d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 600d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 5; 601d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 50; 602d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity2 = entry_capacity * 2 - 2; 603d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity2 = data_capacity * 2; 604d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 605d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 606d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 607d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 608d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala add_test_metadata(m, entry_capacity); 609d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 610d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m2 = NULL; 611d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 612d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m2 = allocate_camera_metadata(entry_capacity2, data_capacity2); 613d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NOT_NULL(m2); 614d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 615d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = append_camera_metadata(m2, m); 616d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 617d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 618d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 619d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_entry_count(m), get_camera_metadata_entry_count(m2)); 620d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_data_count(m), get_camera_metadata_data_count(m2)); 621d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(entry_capacity2, get_camera_metadata_entry_capacity(m2)); 622d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_capacity2, get_camera_metadata_data_capacity(m2)); 623d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 624d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int i=0; i < get_camera_metadata_entry_count(m); i++) { 625d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint32_t tag, tag2; 626d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t type, type2; 627d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t *data, *data2; 628d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t data_count, data_count2; 629d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 630d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 631d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m, 632d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala i, &tag, &type, (void**)&data, &data_count); 633d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 634d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m2, 635d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala i, &tag2, &type2, (void**)&data2, &data_count2); 636d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 637d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(tag, tag2); 638d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(type, type2); 639d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_count, data_count2); 640d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int j=0; j < data_count; j++) { 641d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data[j], data2[j]); 642d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 643d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 644d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 645d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = append_camera_metadata(m2, m); 646d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 647d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(ERROR, result); 648d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(entry_capacity, get_camera_metadata_entry_count(m2)); 649d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(get_camera_metadata_data_count(m), 650d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_data_count(m2)); 651d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(entry_capacity2, get_camera_metadata_entry_capacity(m2)); 652d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_capacity2, get_camera_metadata_data_capacity(m2)); 653d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 654d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int i=0; i < get_camera_metadata_entry_count(m2); i++) { 655d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint32_t tag, tag2; 656d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t type, type2; 657d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t *data, *data2; 658d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala size_t data_count, data_count2; 659d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 660d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 661d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m, 662d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala i % entry_capacity, &tag, &type, (void**)&data, &data_count); 663d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 664d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = get_camera_metadata_entry(m2, 665d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala i, &tag2, &type2, (void**)&data2, &data_count2); 666d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 667d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(tag, tag2); 668d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(type, type2); 669d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data_count, data_count2); 670d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (unsigned int j=0; j < data_count; j++) { 671d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(data[j], data2[j]); 672d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 673d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 674d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 675d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 676d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m2); 677d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 678d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 679d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, vendor_tags) { 680d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = NULL; 681d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t entry_capacity = 5; 682d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala const size_t data_capacity = 50; 683d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 684d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 685d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala m = allocate_camera_metadata(entry_capacity, data_capacity); 686d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 687d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t superMode = 5; 688d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 689d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_SENSOR_SUPERMODE, 690d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &superMode, 1); 691d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(ERROR, result); 692d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 693d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 694d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ANDROID_REQUEST_METADATA_MODE, 695d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &superMode, 1); 696d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 697d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 698d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NULL(get_camera_metadata_section_name(FAKEVENDOR_SENSOR_SUPERMODE)); 699d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NULL(get_camera_metadata_tag_name(FAKEVENDOR_SENSOR_SUPERMODE)); 700d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(-1, get_camera_metadata_tag_type(FAKEVENDOR_SENSOR_SUPERMODE)); 701d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 702d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala set_camera_metadata_vendor_tag_ops(&fakevendor_query_ops); 703d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 704d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 705d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_SENSOR_SUPERMODE, 706d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &superMode, 1); 707d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 708d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 709d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 710d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ANDROID_REQUEST_METADATA_MODE, 711d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &superMode, 1); 712d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 713d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 714d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 715d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_SCALER_END, 716d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &superMode, 1); 717d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(ERROR, result); 718d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 719d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_STREQ("com.fakevendor.sensor", 720d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_section_name(FAKEVENDOR_SENSOR_SUPERMODE)); 721d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_STREQ("superMode", 722d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_tag_name(FAKEVENDOR_SENSOR_SUPERMODE)); 723d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(TYPE_BYTE, 724d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_tag_type(FAKEVENDOR_SENSOR_SUPERMODE)); 725d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 726d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_STREQ("com.fakevendor.scaler", 727d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala get_camera_metadata_section_name(FAKEVENDOR_SCALER_END)); 728d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NULL(get_camera_metadata_tag_name(FAKEVENDOR_SCALER_END)); 729d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(-1, get_camera_metadata_tag_type(FAKEVENDOR_SCALER_END)); 730d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 731d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala set_camera_metadata_vendor_tag_ops(NULL); 732d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 733d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 734d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAKEVENDOR_SENSOR_SUPERMODE, 735d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &superMode, 1); 736d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(ERROR, result); 737d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 738d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 739d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ANDROID_REQUEST_METADATA_MODE, 740d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala &superMode, 1); 741d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(OK, result); 742d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 743d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NULL(get_camera_metadata_section_name(FAKEVENDOR_SENSOR_SUPERMODE)); 744d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_NULL(get_camera_metadata_tag_name(FAKEVENDOR_SENSOR_SUPERMODE)); 745d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala EXPECT_EQ(-1, get_camera_metadata_tag_type(FAKEVENDOR_SENSOR_SUPERMODE)); 746d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 747d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 748d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 749d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 750d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville TalvalaTEST(camera_metadata, add_all_tags) { 751d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int total_tag_count = 0; 752d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (int i = 0; i < ANDROID_SECTION_COUNT; i++) { 753d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala total_tag_count += camera_metadata_section_bounds[i][1] - 754d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_section_bounds[i][0]; 755d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 756d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int entry_data_count = 3; 757d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int conservative_data_space = total_tag_count * entry_data_count * 8; 758d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala uint8_t data[entry_data_count * 8]; 759d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int32_t *data_int32 = (int32_t *)data; 760d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala float *data_float = (float *)data; 761d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int64_t *data_int64 = (int64_t *)data; 762d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala double *data_double = (double *)data; 763d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_rational_t *data_rational = (camera_metadata_rational_t *)data; 764d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 765d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala camera_metadata_t *m = allocate_camera_metadata(total_tag_count, conservative_data_space); 766d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 767d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ASSERT_NE((void*)NULL, (void*)m); 768d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 769d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int result; 770d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 771d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int counter = 0; 772d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (int i = 0; i < ANDROID_SECTION_COUNT; i++) { 773d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala for (uint32_t tag = camera_metadata_section_bounds[i][0]; 774d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala tag < camera_metadata_section_bounds[i][1]; 775d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala tag++, counter++) { 776d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int type = get_camera_metadata_tag_type(tag); 777d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ASSERT_NE(-1, type); 778d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 779d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala switch (type) { 780d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala case TYPE_BYTE: 781d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data[0] = tag & 0xFF; 782d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data[1] = (tag >> 8) & 0xFF; 783d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data[2] = (tag >> 16) & 0xFF; 784d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala break; 785d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala case TYPE_INT32: 786d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_int32[0] = tag; 787d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_int32[1] = i; 788d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_int32[2] = counter; 789d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala break; 790d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala case TYPE_FLOAT: 791d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_float[0] = tag; 792d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_float[1] = i; 793d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_float[2] = counter / (float)total_tag_count; 794d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala break; 795d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala case TYPE_INT64: 796d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_int64[0] = (int64_t)tag | ( (int64_t)tag << 32); 797d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_int64[1] = i; 798d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_int64[2] = counter; 799d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala break; 800d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala case TYPE_DOUBLE: 801d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_double[0] = tag; 802d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_double[1] = i; 803d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_double[2] = counter / (double)total_tag_count; 804d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala break; 805d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala case TYPE_RATIONAL: 806d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_rational[0].numerator = tag; 807d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_rational[0].denominator = 1; 808d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_rational[1].numerator = i; 809d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_rational[1].denominator = 1; 810d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_rational[2].numerator = counter; 811d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data_rational[2].denominator = total_tag_count; 812d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala break; 813d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala default: 814d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala FAIL() << "Unknown type field encountered:" << type; 815d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala break; 816d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 817d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala result = add_camera_metadata_entry(m, 818d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala tag, 819d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala data, 820d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala entry_data_count); 821d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ASSERT_EQ(OK, result); 822d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 823d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 824d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 825d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 826d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala dump_camera_metadata(m, 2); 827d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 828d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala free_camera_metadata(m); 829d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala} 830