10dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh/* 20dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh * Copyright (C) 2015 The Android Open Source Project 30dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh * 40dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh * Licensed under the Apache License, Version 2.0 (the "License"); 50dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh * you may not use this file except in compliance with the License. 60dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh * You may obtain a copy of the License at 70dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh * 80dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh * http://www.apache.org/licenses/LICENSE-2.0 90dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh * 100dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh * Unless required by applicable law or agreed to in writing, software 110dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh * distributed under the License is distributed on an "AS IS" BASIS, 120dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh * See the License for the specific language governing permissions and 140dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh * limitations under the License. 150dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh */ 160dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 173e49be17d8c8c53f50bb0d39affbbc36f6a12488Yin-Chia Yeh/** 183e49be17d8c8c53f50bb0d39affbbc36f6a12488Yin-Chia Yeh * @addtogroup Camera 193e49be17d8c8c53f50bb0d39affbbc36f6a12488Yin-Chia Yeh * @{ 203e49be17d8c8c53f50bb0d39affbbc36f6a12488Yin-Chia Yeh */ 213e49be17d8c8c53f50bb0d39affbbc36f6a12488Yin-Chia Yeh 223e49be17d8c8c53f50bb0d39affbbc36f6a12488Yin-Chia Yeh/** 233e49be17d8c8c53f50bb0d39affbbc36f6a12488Yin-Chia Yeh * @file NdkCameraMetadata.h 243e49be17d8c8c53f50bb0d39affbbc36f6a12488Yin-Chia Yeh */ 253e49be17d8c8c53f50bb0d39affbbc36f6a12488Yin-Chia Yeh 260dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh/* 270dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh * This file defines an NDK API. 280dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh * Do not remove methods. 290dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh * Do not change method signatures. 300dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh * Do not change the value of constants. 310dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh * Do not change the size of any of the classes defined in here. 320dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh * Do not reference types that are not part of the NDK. 330dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh * Do not #include files that aren't part of the NDK. 340dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh */ 350dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 360dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh#ifndef _NDK_CAMERA_METADATA_H 370dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh#define _NDK_CAMERA_METADATA_H 380dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 390dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh#include "NdkCameraError.h" 400dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh#include "NdkCameraMetadataTags.h" 410dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 420dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh#ifdef __cplusplus 430dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yehextern "C" { 440dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh#endif 450dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 461d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh/** 471d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * ACameraMetadata is opaque type that provides access to read-only camera metadata like camera 481d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * characteristics (via {@link ACameraManager_getCameraCharacteristics}) or capture results (via 491d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * {@link ACameraCaptureSession_captureCallback_result}). 501d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 510dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yehtypedef struct ACameraMetadata ACameraMetadata; 520dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 531d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh/** 541d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * Possible data types of a metadata entry. 551d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 561d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * Keep in sync with system/media/include/system/camera_metadata.h 571d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 580dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yehenum { 591d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh /// Unsigned 8-bit integer (uint8_t) 600dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh ACAMERA_TYPE_BYTE = 0, 611d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh /// Signed 32-bit integer (int32_t) 620dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh ACAMERA_TYPE_INT32 = 1, 631d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh /// 32-bit float (float) 640dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh ACAMERA_TYPE_FLOAT = 2, 651d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh /// Signed 64-bit integer (int64_t) 660dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh ACAMERA_TYPE_INT64 = 3, 671d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh /// 64-bit float (double) 680dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh ACAMERA_TYPE_DOUBLE = 4, 691d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh /// A 64-bit fraction (ACameraMetadata_rational) 700dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh ACAMERA_TYPE_RATIONAL = 5, 711d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh /// Number of type fields 720dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh ACAMERA_NUM_TYPES 730dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh}; 740dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 751d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh/** 761d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * Definition of rational data type in {@link ACameraMetadata}. 771d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 780dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yehtypedef struct ACameraMetadata_rational { 790dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh int32_t numerator; 800dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh int32_t denominator; 810dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh} ACameraMetadata_rational; 820dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 831d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh/** 841d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * A single camera metadata entry. 851d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 861d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <p>Each entry is an array of values, though many metadata fields may only have 1 entry in the 871d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * array.</p> 881d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 890dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yehtypedef struct ACameraMetadata_entry { 901d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh /** 911d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * The tag identifying the entry. 921d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 931d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <p> It is one of the values defined in {@link NdkCameraMetadataTags.h}, and defines how the 941d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * entry should be interpreted and which parts of the API provide it. 951d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * See {@link NdkCameraMetadataTags.h} for more details. </p> 961d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 970dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh uint32_t tag; 981d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh 991d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh /** 1001d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * The data type of this metadata entry. 1011d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1021d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <p>Must be one of ACAMERA_TYPE_* enum values defined above. A particular tag always has the 1031d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * same type.</p> 1041d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 1050dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh uint8_t type; 1061d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh 1071d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh /** 1081d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * Count of elements (NOT count of bytes) in this metadata entry. 1091d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 1100dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh uint32_t count; 1111d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh 1121d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh /** 1131d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * Pointer to the data held in this metadata entry. 1141d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1151d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <p>The type field above defines which union member pointer is valid. The count field above 1161d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * defines the length of the data in number of elements.</p> 1171d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 1180dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh union { 1190dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh uint8_t *u8; 1200dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh int32_t *i32; 1210dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh float *f; 1220dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh int64_t *i64; 1230dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh double *d; 1240dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh ACameraMetadata_rational* r; 1250dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh } data; 1260dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh} ACameraMetadata_entry; 1270dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 1281d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh/** 1291d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * A single read-only camera metadata entry. 1301d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1311d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <p>Each entry is an array of values, though many metadata fields may only have 1 entry in the 1321d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * array.</p> 1331d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 1340dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yehtypedef struct ACameraMetadata_const_entry { 1351d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh /** 1361d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * The tag identifying the entry. 1371d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1381d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <p> It is one of the values defined in {@link NdkCameraMetadataTags.h}, and defines how the 1391d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * entry should be interpreted and which parts of the API provide it. 1401d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * See {@link NdkCameraMetadataTags.h} for more details. </p> 1411d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 1420dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh uint32_t tag; 1431d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh 1441d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh /** 1451d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * The data type of this metadata entry. 1461d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1471d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <p>Must be one of ACAMERA_TYPE_* enum values defined above. A particular tag always has the 1481d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * same type.</p> 1491d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 1500dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh uint8_t type; 1511d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh 1521d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh /** 1531d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * Count of elements (NOT count of bytes) in this metadata entry. 1541d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 1550dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh uint32_t count; 1561d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh 1571d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh /** 1581d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * Pointer to the data held in this metadata entry. 1591d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1601d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <p>The type field above defines which union member pointer is valid. The count field above 1611d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * defines the length of the data in number of elements.</p> 1621d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 1630dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh union { 1640dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh const uint8_t *u8; 1650dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh const int32_t *i32; 1660dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh const float *f; 1670dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh const int64_t *i64; 1680dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh const double *d; 1690dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh const ACameraMetadata_rational* r; 1700dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh } data; 1710dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh} ACameraMetadata_const_entry; 1720dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 1731d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh/** 1741d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * Get a metadata entry from an input {@link ACameraMetadata}. 1751d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1761d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <p>The memory of the data field in the returned entry is managed by camera framework. Do not 1771d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * attempt to free it.</p> 1781d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1791d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param metadata the {@link ACameraMetadata} of interest. 1801d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param tag the tag value of the camera metadata entry to be get. 1811d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param entry the output {@link ACameraMetadata_const_entry} will be filled here if the method 1821d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * call succeeeds. 1831d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1841d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @return <ul> 1851d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_OK} if the method call succeeds.</li> 1861d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_ERROR_INVALID_PARAMETER} if metadata or entry is NULL.</li> 1871d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_ERROR_METADATA_NOT_FOUND} if input metadata does not contain an entry 1881d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * of input tag value.</li></ul> 1890dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh */ 1900dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yehcamera_status_t ACameraMetadata_getConstEntry( 1911d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh const ACameraMetadata* metadata, uint32_t tag, /*out*/ACameraMetadata_const_entry* entry); 1920dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 1931d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh/** 1941d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * List all the entry tags in input {@link ACameraMetadata}. 1951d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1961d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param metadata the {@link ACameraMetadata} of interest. 1971d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param numEntries number of metadata entries in input {@link ACameraMetadata} 1981d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param tags the tag values of the metadata entries. Length of tags is returned in numEntries 1991d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * argument. The memory is managed by ACameraMetadata itself and must NOT be free/delete 2001d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * by application. Do NOT access tags after calling ACameraMetadata_free. 2011d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 2021d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @return <ul> 2031d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_OK} if the method call succeeds.</li> 2041d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_ERROR_INVALID_PARAMETER} if metadata, numEntries or tags is NULL.</li> 2051d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_ERROR_UNKNOWN} if the method fails for some other reasons.</li></ul> 2068aac03f4d6c66749803d5708086ba5f509aa88c6Yin-Chia Yeh */ 2078aac03f4d6c66749803d5708086ba5f509aa88c6Yin-Chia Yehcamera_status_t ACameraMetadata_getAllTags( 2081d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh const ACameraMetadata* metadata, /*out*/int32_t* numEntries, /*out*/const uint32_t** tags); 2090dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 2100dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh/** 2111d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * Create a copy of input {@link ACameraMetadata}. 2121d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 2131d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <p>The returned ACameraMetadata must be freed by the application by {@link ACameraMetadata_free} 2141d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * after application is done using it.</p> 2151d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 2161d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param src the input {@link ACameraMetadata} to be copied. 2171d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 2181d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @return a valid ACameraMetadata pointer or NULL if the input metadata cannot be copied. 2190dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh */ 2200dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia YehACameraMetadata* ACameraMetadata_copy(const ACameraMetadata* src); 2210dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 2220dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh/** 2231d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * Free a {@link ACameraMetadata} structure. 2241d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 2251d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param metadata the {@link ACameraMetadata} to be freed. 2260dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh */ 2271d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yehvoid ACameraMetadata_free(ACameraMetadata* metadata); 2280dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 2290dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh#ifdef __cplusplus 2300dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh} // extern "C" 2310dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh#endif 2320dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 2330dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh#endif //_NDK_CAMERA_METADATA_H 2343e49be17d8c8c53f50bb0d39affbbc36f6a12488Yin-Chia Yeh 2353e49be17d8c8c53f50bb0d39affbbc36f6a12488Yin-Chia Yeh/** @} */ 236