[go: nahoru, domu]

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