13651aa3f8296eae150590b765fda1d87f49fb5b6Eino-Ville Talvala/*
23651aa3f8296eae150590b765fda1d87f49fb5b6Eino-Ville Talvala * Copyright (C) 2016 The Android Open Source Project
33651aa3f8296eae150590b765fda1d87f49fb5b6Eino-Ville Talvala *
43651aa3f8296eae150590b765fda1d87f49fb5b6Eino-Ville Talvala * Licensed under the Apache License, Version 2.0 (the "License");
53651aa3f8296eae150590b765fda1d87f49fb5b6Eino-Ville Talvala * you may not use this file except in compliance with the License.
63651aa3f8296eae150590b765fda1d87f49fb5b6Eino-Ville Talvala * You may obtain a copy of the License at
73651aa3f8296eae150590b765fda1d87f49fb5b6Eino-Ville Talvala *
83651aa3f8296eae150590b765fda1d87f49fb5b6Eino-Ville Talvala *      http://www.apache.org/licenses/LICENSE-2.0
93651aa3f8296eae150590b765fda1d87f49fb5b6Eino-Ville Talvala *
103651aa3f8296eae150590b765fda1d87f49fb5b6Eino-Ville Talvala * Unless required by applicable law or agreed to in writing, software
113651aa3f8296eae150590b765fda1d87f49fb5b6Eino-Ville Talvala * distributed under the License is distributed on an "AS IS" BASIS,
123651aa3f8296eae150590b765fda1d87f49fb5b6Eino-Ville Talvala * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133651aa3f8296eae150590b765fda1d87f49fb5b6Eino-Ville Talvala * See the License for the specific language governing permissions and
143651aa3f8296eae150590b765fda1d87f49fb5b6Eino-Ville Talvala * limitations under the License.
153651aa3f8296eae150590b765fda1d87f49fb5b6Eino-Ville Talvala */
163651aa3f8296eae150590b765fda1d87f49fb5b6Eino-Ville Talvalapackage com.android.devcamera;
17a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala
18a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvalaimport android.util.Size;
19a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvalaimport android.view.Surface;
20a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala
21a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala/**
22a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * This is a simple camera interface not specific to API1 or API2.
23a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala */
243651aa3f8296eae150590b765fda1d87f49fb5b6Eino-Ville Talvalapublic interface CameraInterface {
25a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala    /**
26a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala     * Return preview size to use pass thru from camera API.
27a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala     */
28a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala    Size getPreviewSize();
29a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala
30a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala    /**
319736d0f3038125c3c4b0cdeacbe18884a70805f2Eino-Ville Talvala     * Get camera field of view, in degrees. Entry 0 is horizontal, entry 1 is vertical FOV.
329736d0f3038125c3c4b0cdeacbe18884a70805f2Eino-Ville Talvala     */
339736d0f3038125c3c4b0cdeacbe18884a70805f2Eino-Ville Talvala    float[] getFieldOfView();
349736d0f3038125c3c4b0cdeacbe18884a70805f2Eino-Ville Talvala
359736d0f3038125c3c4b0cdeacbe18884a70805f2Eino-Ville Talvala    /**
363855bb499fbfc073771fa951babfe1922d90ffc9Eino-Ville Talvala     * Get the camera sensor orientation relative to device native orientation
373855bb499fbfc073771fa951babfe1922d90ffc9Eino-Ville Talvala     * Typically 90 or 270 for phones, 0 or 180 for tablets, though many tables are also
383855bb499fbfc073771fa951babfe1922d90ffc9Eino-Ville Talvala     * portrait-native.
393855bb499fbfc073771fa951babfe1922d90ffc9Eino-Ville Talvala     */
403855bb499fbfc073771fa951babfe1922d90ffc9Eino-Ville Talvala    int getOrientation();
413855bb499fbfc073771fa951babfe1922d90ffc9Eino-Ville Talvala
423855bb499fbfc073771fa951babfe1922d90ffc9Eino-Ville Talvala    /**
43a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala     * Open the camera. Call startPreview() to actually see something.
44a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala     */
45a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala    void openCamera();
46a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala
47a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala    /**
48a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala     * Start preview to a surface. Also need to call openCamera().
49a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala     * @param surface
50a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala     */
51a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala    void startPreview(Surface surface);
52a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala
53a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala    /**
54a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala     * Close the camera.
55a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala     */
56a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala    void closeCamera();
57a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala
58a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala    /**
59a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala     * Take a picture and return data with provided callback.
60a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala     * Preview must be started.
61a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala     */
62a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala    void takePicture();
63a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala
64a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala    /**
65a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala     * Set whether we are continuously taking pictures, or not.
66a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala     */
67a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala    void setBurst(boolean go);
68a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala
69a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala    /**
70a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala     * Take a picture and return data with provided callback.
71a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala     * Preview must be started.
72a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala     */
73a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala    void setCallback(MyCameraCallback callback);
74a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala
75a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala    /**
76a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala     * Is a raw stream available.
77a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala     */
78a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala    boolean isRawAvailable();
79a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala
80a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala    /**
81a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala     * Is a reprocessing available.
82a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala     */
83a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala    boolean isReprocessingAvailable();
84a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala
85a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala    /**
86a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala     * Triggers an AF scan. Leaves camera in AUTO.
87a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala     */
88a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala    void triggerAFScan();
89a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala
90a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala    /**
91a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala     * Runs CAF (continuous picture).
92a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala     */
93a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala    void setCAF();
94a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala
95a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala    /**
96a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala     * Camera picture callbacks.
97a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala     */
98a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala    interface MyCameraCallback {
99a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala        /**
100a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala         * What text to display on the Edge and NR mode buttons.
101a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala         */
102a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala        void setNoiseEdgeText(String s1, String s2);
103a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala
104a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala        /**
105a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala         * What text to display on the Edge and NR mode buttons (reprocessing flow).
106a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala         */
107a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala        void setNoiseEdgeTextForReprocessing(String s1, String s2);
108a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala
109a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala        /**
110a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala         * Full size JPEG is available.
111a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala         * @param jpegData
112a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala         * @param x
113a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala         * @param y
114a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala         */
115a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala        void jpegAvailable(byte[] jpegData, int x, int y);
116a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala
117a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala        /**
118a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala         * Metadata from an image frame.
119a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala         *
120a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala         * @param info Info string we print just under viewfinder.
121a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala         *
122a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala         *             fps, mLastIso, af, ae, awb
123a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala         * @param faces Face coordinates.
124a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala         * @param normExposure Exposure value normalized from 0 to 1.
125a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala         * @param normLensPos Lens position value normalized from 0 to 1.
126a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala         * @param fps
127a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala         * @param iso
128a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala         * @param afState
129a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala         * @param aeState
130a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala         * @param awbState
131a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala         *
132a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala         */
133a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala        void frameDataAvailable(NormalizedFace[] faces, float normExposure, float normLensPos, float fps, int iso, int afState, int aeState, int awbState);
134a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala
135a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala        /**
136a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala         * Misc performance data.
137a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala         */
138a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala        void performanceDataAvailable(Integer timeToFirstFrame, Integer halWaitTime, Float droppedFrameCount);
139a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala
140a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala        /**
141a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala         * Called when camera2 FULL not available.
142a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala         */
143a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala        void noCamera2Full();
144a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala
145a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala        /**
146a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala         * Used to set the preview SurfaceView background color from black to transparent.
147a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala         */
148a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala        void receivedFirstFrame();
149a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala    }
150a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala
151a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala    void setCaptureFlow(Boolean yuv1, Boolean yuv2, Boolean raw10, Boolean nr, Boolean edge, Boolean face);
152a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala
153a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala    void setReprocessingFlow(Boolean nr, Boolean edge);
154a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala
155a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala}
156