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 NdkCaptureRequest.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 */ 35d7973ba37cea1a9638ded23041c69774ae8cebbcDan Albert 36d7973ba37cea1a9638ded23041c69774ae8cebbcDan Albert#include <sys/cdefs.h> 37d7973ba37cea1a9638ded23041c69774ae8cebbcDan Albert 380dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh#include <android/native_window.h> 390dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh#include "NdkCameraError.h" 400dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh#include "NdkCameraMetadata.h" 410dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 420dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh#ifndef _NDK_CAPTURE_REQUEST_H 430dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh#define _NDK_CAPTURE_REQUEST_H 440dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 45d7973ba37cea1a9638ded23041c69774ae8cebbcDan Albert__BEGIN_DECLS 46d7973ba37cea1a9638ded23041c69774ae8cebbcDan Albert 47d7973ba37cea1a9638ded23041c69774ae8cebbcDan Albert#if __ANDROID_API__ >= 24 480dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 490dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh// Container for output targets 500dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yehtypedef struct ACameraOutputTargets ACameraOutputTargets; 510dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 520dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh// Container for a single output target 530dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yehtypedef struct ACameraOutputTarget ACameraOutputTarget; 540dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 551d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh/** 561d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * ACaptureRequest is an opaque type that contains settings and output targets needed to capture 571d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * a single image from camera device. 581d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 591d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <p>ACaptureRequest contains the configuration for the capture hardware (sensor, lens, flash), 601d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * the processing pipeline, the control algorithms, and the output buffers. Also 611d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * contains the list of target {@link ANativeWindow}s to send image data to for this 621d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * capture.</p> 631d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 641d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <p>ACaptureRequest is created by {@link ACameraDevice_createCaptureRequest}. 651d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 661d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <p>ACaptureRequest is given to {@link ACameraCaptureSession_capture} or 671d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * {@link ACameraCaptureSession_setRepeatingRequest} to capture images from a camera.</p> 681d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 691d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <p>Each request can specify a different subset of target {@link ANativeWindow}s for the 701d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * camera to send the captured data to. All the {@link ANativeWindow}s used in a request must 711d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * be part of the {@link ANativeWindow} list given to the last call to 721d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * {@link ACameraDevice_createCaptureSession}, when the request is submitted to the 731d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * session.</p> 741d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 751d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <p>For example, a request meant for repeating preview might only include the 761d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * {@link ANativeWindow} for the preview SurfaceView or SurfaceTexture, while a 771d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * high-resolution still capture would also include a {@link ANativeWindow} from a 781d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * {@link AImageReader} configured for high-resolution JPEG images.</p> 791d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 801d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @see ACameraDevice_createCaptureRequest 811d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @see ACameraCaptureSession_capture 821d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @see ACameraCaptureSession_setRepeatingRequest 831d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 840dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yehtypedef struct ACaptureRequest ACaptureRequest; 850dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 861d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh/** 871d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * Create a ACameraOutputTarget object. 881d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 891d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <p>The ACameraOutputTarget is used in {@link ACaptureRequest_addTarget} method to add an output 901d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * {@link ANativeWindow} to ACaptureRequest. Use {@link ACameraOutputTarget_free} to free the object 911d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * and its memory after application no longer needs the {@link ACameraOutputTarget}.</p> 921d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 931d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param window the {@link ANativeWindow} to be associated with the {@link ACameraOutputTarget} 941d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param output the output {@link ACameraOutputTarget} will be stored here if the 951d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * method call succeeds. 961d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 971d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @return <ul> 981d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_OK} if the method call succeeds. The created ACameraOutputTarget will 991d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * be filled in the output argument.</li> 1001d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_ERROR_INVALID_PARAMETER} if window or output is NULL.</li></ul> 1011d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1021d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @see ACaptureRequest_addTarget 1031d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 1041d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yehcamera_status_t ACameraOutputTarget_create(ANativeWindow* window, ACameraOutputTarget** output); 1050dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 1061d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh/** 1071d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * Free a ACameraOutputTarget object. 1081d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1091d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param output the {@link ACameraOutputTarget} to be freed. 1101d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1111d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @see ACameraOutputTarget_create 1121d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 1131d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yehvoid ACameraOutputTarget_free(ACameraOutputTarget* output); 1140dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 1151d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh/** 1161d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * Add an {@link ACameraOutputTarget} object to {@link ACaptureRequest}. 1171d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1181d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param request the {@link ACaptureRequest} of interest. 1191d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param output the output {@link ACameraOutputTarget} to be added to capture request. 1201d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1211d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @return <ul> 1221d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_OK} if the method call succeeds.</li> 1231d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_ERROR_INVALID_PARAMETER} if request or output is NULL.</li></ul> 1241d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 1251d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yehcamera_status_t ACaptureRequest_addTarget(ACaptureRequest* request, 1261d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh const ACameraOutputTarget* output); 1271d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh 1281d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh/** 1291d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * Remove an {@link ACameraOutputTarget} object from {@link ACaptureRequest}. 1301d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1311d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <p>This method has no effect if the ACameraOutputTarget does not exist in ACaptureRequest.</p> 1321d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1331d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param request the {@link ACaptureRequest} of interest. 1341d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param output the output {@link ACameraOutputTarget} to be removed from capture request. 1351d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1361d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @return <ul> 1371d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_OK} if the method call succeeds.</li> 1381d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_ERROR_INVALID_PARAMETER} if request or output is NULL.</li></ul> 1391d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 1401d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yehcamera_status_t ACaptureRequest_removeTarget(ACaptureRequest* request, 1411d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh const ACameraOutputTarget* output); 1421d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh 1431d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh/** 1441d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * Get a metadata entry from input {@link ACaptureRequest}. 1451d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1461d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <p>The memory of the data field in returned entry is managed by camera framework. Do not 1471d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * attempt to free it.</p> 1481d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1491d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param request the {@link ACaptureRequest} of interest. 1501d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param tag the tag value of the camera metadata entry to be get. 1511d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param entry the output {@link ACameraMetadata_const_entry} will be filled here if the method 1521d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * call succeeeds. 1531d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1541d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @return <ul> 1551d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_OK} if the method call succeeds.</li> 1561d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_ERROR_INVALID_PARAMETER} if metadata or entry is NULL.</li> 1571d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_ERROR_METADATA_NOT_FOUND} if the capture request does not contain an 1581d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * entry of input tag value.</li></ul> 1590dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh */ 1600dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yehcamera_status_t ACaptureRequest_getConstEntry( 1611d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh const ACaptureRequest* request, uint32_t tag, ACameraMetadata_const_entry* entry); 1628aac03f4d6c66749803d5708086ba5f509aa88c6Yin-Chia Yeh 1638aac03f4d6c66749803d5708086ba5f509aa88c6Yin-Chia Yeh/* 1641d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * List all the entry tags in input {@link ACaptureRequest}. 1651d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1661d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param request the {@link ACaptureRequest} of interest. 1671d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param numEntries number of metadata entries in input {@link ACaptureRequest} 1681d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param tags the tag values of the metadata entries. Length of tags is returned in numEntries 1691d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * argument. The memory is managed by ACaptureRequest itself and must NOT be free/delete 1701d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * by application. Calling ACaptureRequest_setEntry_* methods will invalidate previous 1711d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * output of ACaptureRequest_getAllTags. Do not access tags after calling 1721d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * ACaptureRequest_setEntry_*. To get new list of tags after updating capture request, 1731d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * application must call ACaptureRequest_getAllTags again. Do NOT access tags after 1741d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * calling ACaptureRequest_free. 1751d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1761d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @return <ul> 1771d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_OK} if the method call succeeds.</li> 1781d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_ERROR_INVALID_PARAMETER} if request, numEntries or tags is NULL.</li> 1791d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_ERROR_UNKNOWN} if the method fails for some other reasons.</li></ul> 1808aac03f4d6c66749803d5708086ba5f509aa88c6Yin-Chia Yeh */ 1818aac03f4d6c66749803d5708086ba5f509aa88c6Yin-Chia Yehcamera_status_t ACaptureRequest_getAllTags( 1821d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh const ACaptureRequest* request, /*out*/int32_t* numTags, /*out*/const uint32_t** tags); 1838aac03f4d6c66749803d5708086ba5f509aa88c6Yin-Chia Yeh 1841d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh/** 1851d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * Set/change a camera capture control entry with unsigned 8 bits data type. 1861d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1871d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <p>Set count to 0 and data to NULL to remove a tag from the capture request.</p> 1881d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1891d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param request the {@link ACaptureRequest} of interest. 1901d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param tag the tag value of the camera metadata entry to be set. 1911d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param count number of elements to be set in data argument 1921d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param data the entries to be set/change in the capture request. 1931d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 1941d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @return <ul> 1951d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_OK} if the method call succeeds.</li> 1961d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_ERROR_INVALID_PARAMETER} if request is NULL, count is larger than 1971d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * zero while data is NULL, the data type of the tag is not unsigned 8 bits, or 1981d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * the tag is not controllable by application.</li></ul> 1990dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh */ 2000dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yehcamera_status_t ACaptureRequest_setEntry_u8( 2011d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh ACaptureRequest* request, uint32_t tag, uint32_t count, const uint8_t* data); 2021d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh 2031d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh/** 2041d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * Set/change a camera capture control entry with signed 32 bits data type. 2051d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 2061d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <p>Set count to 0 and data to NULL to remove a tag from the capture request.</p> 2071d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 2081d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param request the {@link ACaptureRequest} of interest. 2091d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param tag the tag value of the camera metadata entry to be set. 2101d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param count number of elements to be set in data argument 2111d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param data the entries to be set/change in the capture request. 2121d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 2131d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @return <ul> 2141d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_OK} if the method call succeeds.</li> 2151d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_ERROR_INVALID_PARAMETER} if request is NULL, count is larger than 2161d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * zero while data is NULL, the data type of the tag is not signed 32 bits, or 2171d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * the tag is not controllable by application.</li></ul> 2181d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 2190dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yehcamera_status_t ACaptureRequest_setEntry_i32( 2201d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh ACaptureRequest* request, uint32_t tag, uint32_t count, const int32_t* data); 2211d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh 2221d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh/** 2231d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * Set/change a camera capture control entry with float data type. 2241d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 2251d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <p>Set count to 0 and data to NULL to remove a tag from the capture request.</p> 2261d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 2271d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param request the {@link ACaptureRequest} of interest. 2281d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param tag the tag value of the camera metadata entry to be set. 2291d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param count number of elements to be set in data argument 2301d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param data the entries to be set/change in the capture request. 2311d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 2321d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @return <ul> 2331d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_OK} if the method call succeeds.</li> 2341d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_ERROR_INVALID_PARAMETER} if request is NULL, count is larger than 2351d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * zero while data is NULL, the data type of the tag is not float, or 2361d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * the tag is not controllable by application.</li></ul> 2371d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 2380dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yehcamera_status_t ACaptureRequest_setEntry_float( 2391d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh ACaptureRequest* request, uint32_t tag, uint32_t count, const float* data); 2401d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh 2411d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh/** 2421d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * Set/change a camera capture control entry with signed 64 bits data type. 2431d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 2441d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <p>Set count to 0 and data to NULL to remove a tag from the capture request.</p> 2451d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 2461d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param request the {@link ACaptureRequest} of interest. 2471d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param tag the tag value of the camera metadata entry to be set. 2481d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param count number of elements to be set in data argument 2491d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param data the entries to be set/change in the capture request. 2501d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 2511d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @return <ul> 2521d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_OK} if the method call succeeds.</li> 2531d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_ERROR_INVALID_PARAMETER} if request is NULL, count is larger than 2541d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * zero while data is NULL, the data type of the tag is not signed 64 bits, or 2551d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * the tag is not controllable by application.</li></ul> 2561d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 2570dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yehcamera_status_t ACaptureRequest_setEntry_i64( 2581d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh ACaptureRequest* request, uint32_t tag, uint32_t count, const int64_t* data); 2591d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh 2601d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh/** 2611d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * Set/change a camera capture control entry with double data type. 2621d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 2631d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <p>Set count to 0 and data to NULL to remove a tag from the capture request.</p> 2641d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 2651d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param request the {@link ACaptureRequest} of interest. 2661d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param tag the tag value of the camera metadata entry to be set. 2671d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param count number of elements to be set in data argument 2681d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param data the entries to be set/change in the capture request. 2691d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 2701d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @return <ul> 2711d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_OK} if the method call succeeds.</li> 2721d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_ERROR_INVALID_PARAMETER} if request is NULL, count is larger than 2731d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * zero while data is NULL, the data type of the tag is not double, or 2741d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * the tag is not controllable by application.</li></ul> 2751d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 2760dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yehcamera_status_t ACaptureRequest_setEntry_double( 2771d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh ACaptureRequest* request, uint32_t tag, uint32_t count, const double* data); 2781d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh 2791d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh/** 2801d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * Set/change a camera capture control entry with rational data type. 2811d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 2821d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <p>Set count to 0 and data to NULL to remove a tag from the capture request.</p> 2831d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 2841d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param request the {@link ACaptureRequest} of interest. 2851d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param tag the tag value of the camera metadata entry to be set. 2861d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param count number of elements to be set in data argument 2871d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param data the entries to be set/change in the capture request. 2881d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 2891d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @return <ul> 2901d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_OK} if the method call succeeds.</li> 2911d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * <li>{@link ACAMERA_ERROR_INVALID_PARAMETER} if request is NULL, count is larger than 2921d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * zero while data is NULL, the data type of the tag is not rational, or 2931d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * the tag is not controllable by application.</li></ul> 2941d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 2950dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yehcamera_status_t ACaptureRequest_setEntry_rational( 2961d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh ACaptureRequest* request, uint32_t tag, uint32_t count, 2971d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh const ACameraMetadata_rational* data); 2980dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 2991d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh/** 3001d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * Free a {@link ACaptureRequest} structure. 3011d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * 3021d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh * @param request the {@link ACaptureRequest} to be freed. 3031d0955cb5257a59f0ae435fefe26c05af4f4fbb6Yin-Chia Yeh */ 3040dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yehvoid ACaptureRequest_free(ACaptureRequest* request); 3050dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 306d7973ba37cea1a9638ded23041c69774ae8cebbcDan Albert#endif /* __ANDROID_API__ >= 24 */ 307d7973ba37cea1a9638ded23041c69774ae8cebbcDan Albert 308d7973ba37cea1a9638ded23041c69774ae8cebbcDan Albert__END_DECLS 3090dea57fd9fc4b2ccaab97d9477359fbd5a626f5cYin-Chia Yeh 310d7973ba37cea1a9638ded23041c69774ae8cebbcDan Albert#endif /* _NDK_CAPTURE_REQUEST_H */ 3113e49be17d8c8c53f50bb0d39affbbc36f6a12488Yin-Chia Yeh 3123e49be17d8c8c53f50bb0d39affbbc36f6a12488Yin-Chia Yeh/** @} */ 313