summaryrefslogtreecommitdiff
path: root/src/com/android/devcamera/CameraInterface.java
blob: 61c1a63423a3fef887d444552960051b812a3943 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
/*
 * Copyright (C) 2016 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.android.devcamera;

import android.util.Size;
import android.view.Surface;

/**
 * This is a simple camera interface not specific to API1 or API2.
 */
public interface CameraInterface {
    /**
     * Return preview size to use pass thru from camera API.
     */
    Size getPreviewSize();

    /**
     * Open the camera. Call startPreview() to actually see something.
     */
    void openCamera();

    /**
     * Start preview to a surface. Also need to call openCamera().
     * @param surface
     */
    void startPreview(Surface surface);

    /**
     * Close the camera.
     */
    void closeCamera();

    /**
     * Take a picture and return data with provided callback.
     * Preview must be started.
     */
    void takePicture();

    /**
     * Set whether we are continuously taking pictures, or not.
     */
    void setBurst(boolean go);

    /**
     * Take a picture and return data with provided callback.
     * Preview must be started.
     */
    void setCallback(MyCameraCallback callback);

    /**
     * Is a raw stream available.
     */
    boolean isRawAvailable();

    /**
     * Is a reprocessing available.
     */
    boolean isReprocessingAvailable();

    /**
     * Triggers an AF scan. Leaves camera in AUTO.
     */
    void triggerAFScan();

    /**
     * Runs CAF (continuous picture).
     */
    void setCAF();

    /**
     * Camera picture callbacks.
     */
    interface MyCameraCallback {
        /**
         * What text to display on the Edge and NR mode buttons.
         */
        void setNoiseEdgeText(String s1, String s2);

        /**
         * What text to display on the Edge and NR mode buttons (reprocessing flow).
         */
        void setNoiseEdgeTextForReprocessing(String s1, String s2);

        /**
         * Full size JPEG is available.
         * @param jpegData
         * @param x
         * @param y
         */
        void jpegAvailable(byte[] jpegData, int x, int y);

        /**
         * Metadata from an image frame.
         *
         * @param info Info string we print just under viewfinder.
         *
         *             fps, mLastIso, af, ae, awb
         * @param faces Face coordinates.
         * @param normExposure Exposure value normalized from 0 to 1.
         * @param normLensPos Lens position value normalized from 0 to 1.
         * @param fps
         * @param iso
         * @param afState
         * @param aeState
         * @param awbState
         *
         */
        void frameDataAvailable(NormalizedFace[] faces, float normExposure, float normLensPos, float fps, int iso, int afState, int aeState, int awbState);

        /**
         * Misc performance data.
         */
        void performanceDataAvailable(Integer timeToFirstFrame, Integer halWaitTime, Float droppedFrameCount);

        /**
         * Called when camera2 FULL not available.
         */
        void noCamera2Full();

        /**
         * Used to set the preview SurfaceView background color from black to transparent.
         */
        void receivedFirstFrame();
    }

    void setCaptureFlow(Boolean yuv1, Boolean yuv2, Boolean raw10, Boolean nr, Boolean edge, Boolean face);

    void setReprocessingFlow(Boolean nr, Boolean edge);

}