161ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala/*
261ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala * Copyright (C) 2012 The Android Open Source Project
361ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala *
461ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala * Licensed under the Apache License, Version 2.0 (the "License");
561ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala * you may not use this file except in compliance with the License.
661ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala * You may obtain a copy of the License at
761ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala *
861ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala *      http://www.apache.org/licenses/LICENSE-2.0
961ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala *
1061ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala * Unless required by applicable law or agreed to in writing, software
1161ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala * distributed under the License is distributed on an "AS IS" BASIS,
1261ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1361ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala * See the License for the specific language governing permissions and
1461ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala * limitations under the License.
1561ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala */
1661ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala
1761ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala#ifndef ANDROID_SERVERS_CAMERA_CAMERA2CLIENT_H
1861ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala#define ANDROID_SERVERS_CAMERA_CAMERA2CLIENT_H
1961ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala
2061ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala#include "CameraService.h"
217b82efe7a376c882f8f938e1c41b8311a8cdda4aEino-Ville Talvala#include "common/CameraDeviceBase.h"
227b82efe7a376c882f8f938e1c41b8311a8cdda4aEino-Ville Talvala#include "common/Camera2ClientBase.h"
237b82efe7a376c882f8f938e1c41b8311a8cdda4aEino-Ville Talvala#include "api1/client2/Parameters.h"
247b82efe7a376c882f8f938e1c41b8311a8cdda4aEino-Ville Talvala#include "api1/client2/FrameProcessor.h"
257b82efe7a376c882f8f938e1c41b8311a8cdda4aEino-Ville Talvala//#include "api1/client2/StreamingProcessor.h"
267b82efe7a376c882f8f938e1c41b8311a8cdda4aEino-Ville Talvala//#include "api1/client2/JpegProcessor.h"
277b82efe7a376c882f8f938e1c41b8311a8cdda4aEino-Ville Talvala//#include "api1/client2/ZslProcessorInterface.h"
287b82efe7a376c882f8f938e1c41b8311a8cdda4aEino-Ville Talvala//#include "api1/client2/CaptureSequencer.h"
297b82efe7a376c882f8f938e1c41b8311a8cdda4aEino-Ville Talvala//#include "api1/client2/CallbackProcessor.h"
3061ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala
3161ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvalanamespace android {
3261ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala
337b82efe7a376c882f8f938e1c41b8311a8cdda4aEino-Ville Talvalanamespace camera2 {
347b82efe7a376c882f8f938e1c41b8311a8cdda4aEino-Ville Talvala
357b82efe7a376c882f8f938e1c41b8311a8cdda4aEino-Ville Talvalaclass StreamingProcessor;
367b82efe7a376c882f8f938e1c41b8311a8cdda4aEino-Ville Talvalaclass JpegProcessor;
377b82efe7a376c882f8f938e1c41b8311a8cdda4aEino-Ville Talvalaclass ZslProcessorInterface;
387b82efe7a376c882f8f938e1c41b8311a8cdda4aEino-Ville Talvalaclass CaptureSequencer;
397b82efe7a376c882f8f938e1c41b8311a8cdda4aEino-Ville Talvalaclass CallbackProcessor;
407b82efe7a376c882f8f938e1c41b8311a8cdda4aEino-Ville Talvala
417b82efe7a376c882f8f938e1c41b8311a8cdda4aEino-Ville Talvala}
427b82efe7a376c882f8f938e1c41b8311a8cdda4aEino-Ville Talvala
4373bbd1f1c493835f191ea2b0b72439292496b40aEino-Ville Talvalaclass IMemory;
4461ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala/**
45b99c5b8eebb35133a08c46b015624bd4c4a6c477Eino-Ville Talvala * Interface between android.hardware.Camera API and Camera HAL device for versions
46b99c5b8eebb35133a08c46b015624bd4c4a6c477Eino-Ville Talvala * CAMERA_DEVICE_API_VERSION_2_0 and 3_0.
4761ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala */
488ce89d9e2b132bf58a030acec88acf0a998926a1Eino-Ville Talvalaclass Camera2Client :
4944cfcf00b9008c1c04f4c8277c6c06af039fd976Igor Murashkin        public Camera2ClientBase<CameraService::Client>
5061ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala{
5161ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvalapublic:
52ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala    /**
53ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala     * ICamera interface (see ICamera for details)
54ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala     */
55160d4af9d933fe9461bb213e5876fc5c8c2178c2Eino-Ville Talvala
5661ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala    virtual void            disconnect();
5761ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala    virtual status_t        connect(const sp<ICameraClient>& client);
5861ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala    virtual status_t        lock();
5961ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala    virtual status_t        unlock();
601ce7c34e67c2cf58dd88c31f36f4bd62e375f7f0Eino-Ville Talvala    virtual status_t        setPreviewTarget(
618ba01021b573889802e67e029225a96f0dfa471aAndy McFadden        const sp<IGraphicBufferProducer>& bufferProducer);
6261ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala    virtual void            setPreviewCallbackFlag(int flag);
633ee3550a2f529cbf56d87d8503f59a8f45dccf32Eino-Ville Talvala    virtual status_t        setPreviewCallbackTarget(
643ee3550a2f529cbf56d87d8503f59a8f45dccf32Eino-Ville Talvala        const sp<IGraphicBufferProducer>& callbackProducer);
653ee3550a2f529cbf56d87d8503f59a8f45dccf32Eino-Ville Talvala
6661ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala    virtual status_t        startPreview();
6761ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala    virtual void            stopPreview();
6861ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala    virtual bool            previewEnabled();
6961ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala    virtual status_t        storeMetaDataInBuffers(bool enabled);
7061ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala    virtual status_t        startRecording();
7161ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala    virtual void            stopRecording();
7261ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala    virtual bool            recordingEnabled();
7361ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala    virtual void            releaseRecordingFrame(const sp<IMemory>& mem);
7461ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala    virtual status_t        autoFocus();
7561ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala    virtual status_t        cancelAutoFocus();
7661ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala    virtual status_t        takePicture(int msgType);
7761ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala    virtual status_t        setParameters(const String8& params);
7861ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala    virtual String8         getParameters() const;
7961ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala    virtual status_t        sendCommand(int32_t cmd, int32_t arg1, int32_t arg2);
8061ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala
81ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala    /**
82ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala     * Interface used by CameraService
83ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala     */
84160d4af9d933fe9461bb213e5876fc5c8c2178c2Eino-Ville Talvala
8561ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala    Camera2Client(const sp<CameraService>& cameraService,
8661ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala            const sp<ICameraClient>& cameraClient,
87ceb388d6c03c38b96dc41c0ea4804b749aa077c4Eino-Ville Talvala            const String16& clientPackageName,
8861ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala            int cameraId,
8961ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala            int cameraFacing,
90ecf17e82505fdb60d59e00b6dd59036df93de655Igor Murashkin            int clientPid,
91ceb388d6c03c38b96dc41c0ea4804b749aa077c4Eino-Ville Talvala            uid_t clientUid,
92b99c5b8eebb35133a08c46b015624bd4c4a6c477Eino-Ville Talvala            int servicePid,
93b99c5b8eebb35133a08c46b015624bd4c4a6c477Eino-Ville Talvala            int deviceVersion);
94b99c5b8eebb35133a08c46b015624bd4c4a6c477Eino-Ville Talvala
95160d4af9d933fe9461bb213e5876fc5c8c2178c2Eino-Ville Talvala    virtual ~Camera2Client();
9661ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala
97f69c70ded4316ea3ee504ac779bd024433ed4ef7Eino-Ville Talvala    status_t initialize(camera_module_t *module);
98f69c70ded4316ea3ee504ac779bd024433ed4ef7Eino-Ville Talvala
9961ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala    virtual status_t dump(int fd, const Vector<String16>& args);
10061ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala
101ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala    /**
102b99c5b8eebb35133a08c46b015624bd4c4a6c477Eino-Ville Talvala     * Interface used by CameraDeviceBase
103ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala     */
104160d4af9d933fe9461bb213e5876fc5c8c2178c2Eino-Ville Talvala
105160d4af9d933fe9461bb213e5876fc5c8c2178c2Eino-Ville Talvala    virtual void notifyAutoFocus(uint8_t newState, int triggerId);
106160d4af9d933fe9461bb213e5876fc5c8c2178c2Eino-Ville Talvala    virtual void notifyAutoExposure(uint8_t newState, int triggerId);
107160d4af9d933fe9461bb213e5876fc5c8c2178c2Eino-Ville Talvala
108ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala    /**
109ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala     * Interface used by independent components of Camera2Client.
110ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala     */
111a16733eeb9c40db4793bec408f29b4204e5f23b1Eino-Ville Talvala
112a16733eeb9c40db4793bec408f29b4204e5f23b1Eino-Ville Talvala    camera2::SharedParameters& getParameters();
113a16733eeb9c40db4793bec408f29b4204e5f23b1Eino-Ville Talvala
114da6665cbd06ca58d3357c3002b7366d13e23f152Eino-Ville Talvala    int getPreviewStreamId() const;
115da6665cbd06ca58d3357c3002b7366d13e23f152Eino-Ville Talvala    int getCaptureStreamId() const;
116da6665cbd06ca58d3357c3002b7366d13e23f152Eino-Ville Talvala    int getCallbackStreamId() const;
117da6665cbd06ca58d3357c3002b7366d13e23f152Eino-Ville Talvala    int getRecordingStreamId() const;
118da6665cbd06ca58d3357c3002b7366d13e23f152Eino-Ville Talvala    int getZslStreamId() const;
119da6665cbd06ca58d3357c3002b7366d13e23f152Eino-Ville Talvala
1204865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala    status_t registerFrameListener(int32_t minId, int32_t maxId,
121da6665cbd06ca58d3357c3002b7366d13e23f152Eino-Ville Talvala            wp<camera2::FrameProcessor::FilteredListener> listener);
1224865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala    status_t removeFrameListener(int32_t minId, int32_t maxId,
1234865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala            wp<camera2::FrameProcessor::FilteredListener> listener);
1244865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala
1254865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala    status_t stopStream();
126da6665cbd06ca58d3357c3002b7366d13e23f152Eino-Ville Talvala
127ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala    static size_t calculateBufferSize(int width, int height,
128ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala            int format, int stride);
129ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala
1304865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala    static const int32_t kPreviewRequestIdStart = 10000000;
1314865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala    static const int32_t kPreviewRequestIdEnd   = 20000000;
1324865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala
1334865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala    static const int32_t kRecordingRequestIdStart  = 20000000;
1344865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala    static const int32_t kRecordingRequestIdEnd    = 30000000;
1354865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala
1364865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala    static const int32_t kCaptureRequestIdStart = 30000000;
1374865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala    static const int32_t kCaptureRequestIdEnd   = 40000000;
138da6665cbd06ca58d3357c3002b7366d13e23f152Eino-Ville Talvala
1392b07e0207da44d7b3cc63c369fd10c9f12a5e2cdEino-Ville Talvala    // Constant strings for ATRACE logging
1402b07e0207da44d7b3cc63c369fd10c9f12a5e2cdEino-Ville Talvala    static const char* kAutofocusLabel;
1412b07e0207da44d7b3cc63c369fd10c9f12a5e2cdEino-Ville Talvala    static const char* kTakepictureLabel;
1422b07e0207da44d7b3cc63c369fd10c9f12a5e2cdEino-Ville Talvala
14361ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvalaprivate:
1443cca136b73b0f4d058019230eb2070cc23e2bbb0Eino-Ville Talvala    /** ICamera interface-related private members */
1452e19c3c02957208371cdd491e6342ea7ddb440d9Eino-Ville Talvala    typedef camera2::Parameters Parameters;
146228a53805808a24cb19fcf13b1f0bdc2ed89bbe1Eino-Ville Talvala
14736cdfb185877a7f573621d19ed2b2e1cac13d62eEino-Ville Talvala    status_t setPreviewWindowL(const sp<IBinder>& binder,
148be0573b93e2d6fa133579c885583af9ed16bc29dEino-Ville Talvala            sp<ANativeWindow> window);
149228a53805808a24cb19fcf13b1f0bdc2ed89bbe1Eino-Ville Talvala    status_t startPreviewL(Parameters &params, bool restart);
150228a53805808a24cb19fcf13b1f0bdc2ed89bbe1Eino-Ville Talvala    void     stopPreviewL();
151228a53805808a24cb19fcf13b1f0bdc2ed89bbe1Eino-Ville Talvala    status_t startRecordingL(Parameters &params, bool restart);
152228a53805808a24cb19fcf13b1f0bdc2ed89bbe1Eino-Ville Talvala    bool     recordingEnabledL();
1538da4cd7d706d9f551bf2d08cd8b61907a10cd38dJames Dong
15436cdfb185877a7f573621d19ed2b2e1cac13d62eEino-Ville Talvala    // Individual commands for sendCommand()
15536cdfb185877a7f573621d19ed2b2e1cac13d62eEino-Ville Talvala    status_t commandStartSmoothZoomL();
15636cdfb185877a7f573621d19ed2b2e1cac13d62eEino-Ville Talvala    status_t commandStopSmoothZoomL();
15736cdfb185877a7f573621d19ed2b2e1cac13d62eEino-Ville Talvala    status_t commandSetDisplayOrientationL(int degrees);
15836cdfb185877a7f573621d19ed2b2e1cac13d62eEino-Ville Talvala    status_t commandEnableShutterSoundL(bool enable);
15936cdfb185877a7f573621d19ed2b2e1cac13d62eEino-Ville Talvala    status_t commandPlayRecordingSoundL();
16036cdfb185877a7f573621d19ed2b2e1cac13d62eEino-Ville Talvala    status_t commandStartFaceDetectionL(int type);
161228a53805808a24cb19fcf13b1f0bdc2ed89bbe1Eino-Ville Talvala    status_t commandStopFaceDetectionL(Parameters &params);
16236cdfb185877a7f573621d19ed2b2e1cac13d62eEino-Ville Talvala    status_t commandEnableFocusMoveMsgL(bool enable);
16336cdfb185877a7f573621d19ed2b2e1cac13d62eEino-Ville Talvala    status_t commandPingL();
16436cdfb185877a7f573621d19ed2b2e1cac13d62eEino-Ville Talvala    status_t commandSetVideoBufferCountL(size_t count);
165ac45eb3dfa7347f7b8c98be1111b2a5f9e344c46Eino-Ville Talvala
1662e19c3c02957208371cdd491e6342ea7ddb440d9Eino-Ville Talvala    // Current camera device configuration
1672e19c3c02957208371cdd491e6342ea7ddb440d9Eino-Ville Talvala    camera2::SharedParameters mParameters;
1688ce89d9e2b132bf58a030acec88acf0a998926a1Eino-Ville Talvala
1693cca136b73b0f4d058019230eb2070cc23e2bbb0Eino-Ville Talvala    /** Camera device-related private members */
1703cca136b73b0f4d058019230eb2070cc23e2bbb0Eino-Ville Talvala
171228a53805808a24cb19fcf13b1f0bdc2ed89bbe1Eino-Ville Talvala    void     setPreviewCallbackFlagL(Parameters &params, int flag);
1725a4f93eaaab7518fd734fdc9f0f686d632f31a59Eino-Ville Talvala    status_t updateRequests(Parameters &params);
173ae500e53efa1d26eb7c13e62d0ecc8d75db2473aIgor Murashkin    int mDeviceVersion;
1748ce89d9e2b132bf58a030acec88acf0a998926a1Eino-Ville Talvala
1759cca4c6d976d2d4127286e9eaa54d1b99880c25cEino-Ville Talvala    // Used with stream IDs
176d4bcfde6bf3e7b28e36f6ec66e6d9e5adebfa949Eino-Ville Talvala    static const int NO_STREAM = -1;
1776db981c45a964f0d9df4c3451f064dff7954d78eEino-Ville Talvala
178dca254aef0c09867e50fe6613c6fad405de72842Igor Murashkin    template <typename ProcessorT>
179dca254aef0c09867e50fe6613c6fad405de72842Igor Murashkin    status_t updateProcessorStream(sp<ProcessorT> processor, Parameters params);
18082db9e6126812dd2ee74e33e4c475cae2c7e48f6Igor Murashkin    template <typename ProcessorT,
18182db9e6126812dd2ee74e33e4c475cae2c7e48f6Igor Murashkin              status_t (ProcessorT::*updateStreamF)(const Parameters &)>
18282db9e6126812dd2ee74e33e4c475cae2c7e48f6Igor Murashkin    status_t updateProcessorStream(sp<ProcessorT> processor, Parameters params);
183dca254aef0c09867e50fe6613c6fad405de72842Igor Murashkin
184a16733eeb9c40db4793bec408f29b4204e5f23b1Eino-Ville Talvala    sp<camera2::FrameProcessor> mFrameProcessor;
1858ce89d9e2b132bf58a030acec88acf0a998926a1Eino-Ville Talvala
18673bbd1f1c493835f191ea2b0b72439292496b40aEino-Ville Talvala    /* Preview/Recording related members */
187be0573b93e2d6fa133579c885583af9ed16bc29dEino-Ville Talvala
1889cca4c6d976d2d4127286e9eaa54d1b99880c25cEino-Ville Talvala    sp<IBinder> mPreviewSurface;
18973bbd1f1c493835f191ea2b0b72439292496b40aEino-Ville Talvala    sp<camera2::StreamingProcessor> mStreamingProcessor;
1909cca4c6d976d2d4127286e9eaa54d1b99880c25cEino-Ville Talvala
191228a53805808a24cb19fcf13b1f0bdc2ed89bbe1Eino-Ville Talvala    /** Preview callback related members */
192228a53805808a24cb19fcf13b1f0bdc2ed89bbe1Eino-Ville Talvala
193d86a6880fe86bda21a9b53b240996fc410a512a5Eino-Ville Talvala    sp<camera2::CallbackProcessor> mCallbackProcessor;
194228a53805808a24cb19fcf13b1f0bdc2ed89bbe1Eino-Ville Talvala
1959cca4c6d976d2d4127286e9eaa54d1b99880c25cEino-Ville Talvala    /* Still image capture related members */
1966db981c45a964f0d9df4c3451f064dff7954d78eEino-Ville Talvala
197da6665cbd06ca58d3357c3002b7366d13e23f152Eino-Ville Talvala    sp<camera2::CaptureSequencer> mCaptureSequencer;
198da6665cbd06ca58d3357c3002b7366d13e23f152Eino-Ville Talvala    sp<camera2::JpegProcessor> mJpegProcessor;
199ae500e53efa1d26eb7c13e62d0ecc8d75db2473aIgor Murashkin    sp<camera2::ZslProcessorInterface> mZslProcessor;
200ae500e53efa1d26eb7c13e62d0ecc8d75db2473aIgor Murashkin    sp<Thread> mZslProcessorThread;
2019cca4c6d976d2d4127286e9eaa54d1b99880c25cEino-Ville Talvala
202174181eec57c963a2a17bd156d81c3f18b3ba75cEino-Ville Talvala    /** Notification-related members */
203174181eec57c963a2a17bd156d81c3f18b3ba75cEino-Ville Talvala
204174181eec57c963a2a17bd156d81c3f18b3ba75cEino-Ville Talvala    bool mAfInMotion;
205174181eec57c963a2a17bd156d81c3f18b3ba75cEino-Ville Talvala
2069cca4c6d976d2d4127286e9eaa54d1b99880c25cEino-Ville Talvala    /** Utility members */
2079cca4c6d976d2d4127286e9eaa54d1b99880c25cEino-Ville Talvala
2084865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala    // Wait until the camera device has received the latest control settings
2094865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala    status_t syncWithDevice();
21061ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala};
21161ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala
21261ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala}; // namespace android
21361ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala
21461ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala#endif
215