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 39d7973ba37cea1a9638ded23041c69774ae8cebbcDan Albert#include <sys/cdefs.h> 40d7973ba37cea1a9638ded23041c69774ae8cebbcDan Albert 410dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh#include "NdkCameraError.h" 420dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh#include "NdkCameraMetadataTags.h" 430dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 44d7973ba37cea1a9638ded23041c69774ae8cebbcDan Albert__BEGIN_DECLS 45d7973ba37cea1a9638ded23041c69774ae8cebbcDan Albert 46d7973ba37cea1a9638ded23041c69774ae8cebbcDan Albert#if __ANDROID_API__ >= 24 470dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 481d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh/** 491d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * ACameraMetadata is opaque type that provides access to read-only camera metadata like camera 501d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * characteristics (via {@link ACameraManager_getCameraCharacteristics}) or capture results (via 511d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * {@link ACameraCaptureSession_captureCallback_result}). 521d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 530dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yehtypedef struct ACameraMetadata ACameraMetadata; 540dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 551d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh/** 561d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * Possible data types of a metadata entry. 571d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 581d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * Keep in sync with system/media/include/system/camera_metadata.h 591d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 600dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yehenum { 611d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh /// Unsigned 8-bit integer (uint8_t) 620dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh ACAMERA_TYPE_BYTE = 0, 631d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh /// Signed 32-bit integer (int32_t) 640dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh ACAMERA_TYPE_INT32 = 1, 651d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh /// 32-bit float (float) 660dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh ACAMERA_TYPE_FLOAT = 2, 671d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh /// Signed 64-bit integer (int64_t) 680dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh ACAMERA_TYPE_INT64 = 3, 691d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh /// 64-bit float (double) 700dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh ACAMERA_TYPE_DOUBLE = 4, 711d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh /// A 64-bit fraction (ACameraMetadata_rational) 720dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh ACAMERA_TYPE_RATIONAL = 5, 731d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh /// Number of type fields 740dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh ACAMERA_NUM_TYPES 750dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh}; 760dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 771d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh/** 781d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * Definition of rational data type in {@link ACameraMetadata}. 791d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 800dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yehtypedef struct ACameraMetadata_rational { 810dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh int32_t numerator; 820dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh int32_t denominator; 830dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh} ACameraMetadata_rational; 840dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 851d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh/** 861d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * A single camera metadata entry. 871d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 881d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <p>Each entry is an array of values, though many metadata fields may only have 1 entry in the 891d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * array.</p> 901d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 910dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yehtypedef struct ACameraMetadata_entry { 921d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh /** 931d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * The tag identifying the entry. 941d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 951d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <p> It is one of the values defined in {@link NdkCameraMetadataTags.h}, and defines how the 961d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * entry should be interpreted and which parts of the API provide it. 971d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * See {@link NdkCameraMetadataTags.h} for more details. </p> 981d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 990dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh uint32_t tag; 1001d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh 1011d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh /** 1021d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * The data type of this metadata entry. 1031d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1041d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <p>Must be one of ACAMERA_TYPE_* enum values defined above. A particular tag always has the 1051d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * same type.</p> 1061d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 1070dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh uint8_t type; 1081d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh 1091d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh /** 1101d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * Count of elements (NOT count of bytes) in this metadata entry. 1111d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 1120dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh uint32_t count; 1131d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh 1141d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh /** 1151d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * Pointer to the data held in this metadata entry. 1161d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1171d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <p>The type field above defines which union member pointer is valid. The count field above 1181d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * defines the length of the data in number of elements.</p> 1191d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 1200dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh union { 1210dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh uint8_t *u8; 1220dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh int32_t *i32; 1230dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh float *f; 1240dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh int64_t *i64; 1250dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh double *d; 1260dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh ACameraMetadata_rational* r; 1270dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh } data; 1280dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh} ACameraMetadata_entry; 1290dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 1301d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh/** 1311d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * A single read-only camera metadata entry. 1321d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1331d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <p>Each entry is an array of values, though many metadata fields may only have 1 entry in the 1341d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * array.</p> 1351d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 1360dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yehtypedef struct ACameraMetadata_const_entry { 1371d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh /** 1381d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * The tag identifying the entry. 1391d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1401d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <p> It is one of the values defined in {@link NdkCameraMetadataTags.h}, and defines how the 1411d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * entry should be interpreted and which parts of the API provide it. 1421d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * See {@link NdkCameraMetadataTags.h} for more details. </p> 1431d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 1440dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh uint32_t tag; 1451d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh 1461d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh /** 1471d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * The data type of this metadata entry. 1481d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1491d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <p>Must be one of ACAMERA_TYPE_* enum values defined above. A particular tag always has the 1501d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * same type.</p> 1511d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 1520dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh uint8_t type; 1531d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh 1541d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh /** 1551d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * Count of elements (NOT count of bytes) in this metadata entry. 1561d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 1570dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh uint32_t count; 1581d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh 1591d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh /** 1601d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * Pointer to the data held in this metadata entry. 1611d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1621d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <p>The type field above defines which union member pointer is valid. The count field above 1631d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * defines the length of the data in number of elements.</p> 1641d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 1650dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh union { 1660dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh const uint8_t *u8; 1670dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh const int32_t *i32; 1680dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh const float *f; 1690dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh const int64_t *i64; 1700dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh const double *d; 1710dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh const ACameraMetadata_rational* r; 1720dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh } data; 1730dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh} ACameraMetadata_const_entry; 1740dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 1751d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh/** 1761d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * Get a metadata entry from an input {@link ACameraMetadata}. 1771d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1781d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <p>The memory of the data field in the returned entry is managed by camera framework. Do not 1791d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * attempt to free it.</p> 1801d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1811d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param metadata the {@link ACameraMetadata} of interest. 1821d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param tag the tag value of the camera metadata entry to be get. 1831d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param entry the output {@link ACameraMetadata_const_entry} will be filled here if the method 1841d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * call succeeeds. 1851d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1861d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @return <ul> 1871d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_OK} if the method call succeeds.</li> 1881d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_ERROR_INVALID_PARAMETER} if metadata or entry is NULL.</li> 1891d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_ERROR_METADATA_NOT_FOUND} if input metadata does not contain an entry 1901d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * of input tag value.</li></ul> 1910dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh */ 1920dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yehcamera_status_t ACameraMetadata_getConstEntry( 1931d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh const ACameraMetadata* metadata, uint32_t tag, /*out*/ACameraMetadata_const_entry* entry); 1940dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 1951d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh/** 1961d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * List all the entry tags in input {@link ACameraMetadata}. 1971d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1981d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param metadata the {@link ACameraMetadata} of interest. 1991d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param numEntries number of metadata entries in input {@link ACameraMetadata} 2001d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param tags the tag values of the metadata entries. Length of tags is returned in numEntries 2011d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * argument. The memory is managed by ACameraMetadata itself and must NOT be free/delete 2021d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * by application. Do NOT access tags after calling ACameraMetadata_free. 2031d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 2041d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @return <ul> 2051d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_OK} if the method call succeeds.</li> 2061d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_ERROR_INVALID_PARAMETER} if metadata, numEntries or tags is NULL.</li> 2071d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_ERROR_UNKNOWN} if the method fails for some other reasons.</li></ul> 2088aac03f4d6c66749803d5708086ba5f509aa88c6Yin-Chia Yeh */ 2098aac03f4d6c66749803d5708086ba5f509aa88c6Yin-Chia Yehcamera_status_t ACameraMetadata_getAllTags( 2101d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh const ACameraMetadata* metadata, /*out*/int32_t* numEntries, /*out*/const uint32_t** tags); 2110dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 2120dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh/** 2131d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * Create a copy of input {@link ACameraMetadata}. 2141d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 2151d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <p>The returned ACameraMetadata must be freed by the application by {@link ACameraMetadata_free} 2161d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * after application is done using it.</p> 2171d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 2181d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param src the input {@link ACameraMetadata} to be copied. 2191d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 2201d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @return a valid ACameraMetadata pointer or NULL if the input metadata cannot be copied. 2210dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh */ 2220dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia YehACameraMetadata* ACameraMetadata_copy(const ACameraMetadata* src); 2230dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 2240dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh/** 2251d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * Free a {@link ACameraMetadata} structure. 2261d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 2271d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param metadata the {@link ACameraMetadata} to be freed. 2280dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh */ 2291d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yehvoid ACameraMetadata_free(ACameraMetadata* metadata); 2300dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 231d7973ba37cea1a9638ded23041c69774ae8cebbcDan Albert#endif /* __ANDROID_API__ >= 24 */ 232d7973ba37cea1a9638ded23041c69774ae8cebbcDan Albert 233d7973ba37cea1a9638ded23041c69774ae8cebbcDan Albert__END_DECLS 2340dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 235d7973ba37cea1a9638ded23041c69774ae8cebbcDan Albert#endif /* _NDK_CAMERA_METADATA_H */ 2363e49be17d8c8c53f50bb0d39affbbc36f6a12488Yin-Chia Yeh 2373e49be17d8c8c53f50bb0d39affbbc36f6a12488Yin-Chia Yeh/** @} */ 238