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"
27d309fb9c8a2c4564d88fffba19c4e3688e4b862bEino-Ville Talvala//#include "api1/client2/ZslProcessor.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;
37d309fb9c8a2c4564d88fffba19c4e3688e4b862bEino-Ville Talvalaclass ZslProcessor;
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
46d309fb9c8a2c4564d88fffba19c4e3688e4b862bEino-Ville Talvala * CAMERA_DEVICE_API_VERSION_3_0 and above.
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
56d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    virtual binder::Status  disconnect();
57d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    virtual status_t        connect(const sp<hardware::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();
698cca0750a84c2d97224c0cfef7cf255308ee80b3Chien-Yu Chen    virtual status_t        setVideoBufferMode(int32_t videoBufferMode);
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);
742d13b1d3eeaba31d8c15acc6037fd68b150a9a66Chien-Yu Chen    virtual void            releaseRecordingFrameHandle(native_handle_t *handle);
75b5df547bce900fa5764d735bee304e79c001d60dYin-Chia Yeh    virtual void            releaseRecordingFrameHandleBatch(
76b5df547bce900fa5764d735bee304e79c001d60dYin-Chia Yeh                                    const std::vector<native_handle_t*>& handles);
7761ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala    virtual status_t        autoFocus();
7861ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala    virtual status_t        cancelAutoFocus();
7961ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala    virtual status_t        takePicture(int msgType);
8061ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala    virtual status_t        setParameters(const String8& params);
8161ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala    virtual String8         getParameters() const;
8261ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala    virtual status_t        sendCommand(int32_t cmd, int32_t arg1, int32_t arg2);
83d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    virtual void            notifyError(int32_t errorCode,
84a485dfec4ad98283b911cf983566b0ce947343b6Ruben Brunk                                        const CaptureResultExtras& resultExtras);
858cca0750a84c2d97224c0cfef7cf255308ee80b3Chien-Yu Chen    virtual status_t        setVideoTarget(const sp<IGraphicBufferProducer>& bufferProducer);
8661ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala
87ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala    /**
88ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala     * Interface used by CameraService
89ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala     */
90160d4af9d933fe9461bb213e5876fc5c8c2178c2Eino-Ville Talvala
9161ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala    Camera2Client(const sp<CameraService>& cameraService,
92d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala            const sp<hardware::ICameraClient>& cameraClient,
93ceb388d6c03c38b96dc41c0ea4804b749aa077c4Eino-Ville Talvala            const String16& clientPackageName,
94c3e9d6f704f7bf9e94c8447aa2f0f21e750c08beYin-Chia Yeh            const String8& cameraDeviceId,
95c3e9d6f704f7bf9e94c8447aa2f0f21e750c08beYin-Chia Yeh            int api1CameraId,
9661ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala            int cameraFacing,
97ecf17e82505fdb60d59e00b6dd59036df93de655Igor Murashkin            int clientPid,
98ceb388d6c03c38b96dc41c0ea4804b749aa077c4Eino-Ville Talvala            uid_t clientUid,
99a858ea0495c887621a2fd9c0afc13780deccb597Igor Murashkin            int servicePid,
100a858ea0495c887621a2fd9c0afc13780deccb597Igor Murashkin            bool legacyMode);
101b99c5b8eebb35133a08c46b015624bd4c4a6c477Eino-Ville Talvala
102160d4af9d933fe9461bb213e5876fc5c8c2178c2Eino-Ville Talvala    virtual ~Camera2Client();
10361ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala
104bd8c503398d6b483b7abba594c7838a4c93b6e23Emilian Peev    virtual status_t initialize(sp<CameraProviderManager> manager,
105bd8c503398d6b483b7abba594c7838a4c93b6e23Emilian Peev            const String8& monitorTags) override;
106f69c70ded4316ea3ee504ac779bd024433ed4ef7Eino-Ville Talvala
10761ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala    virtual status_t dump(int fd, const Vector<String16>& args);
10861ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala
109c4003965258404a19b99280ac0f475e2f290bf27Eino-Ville Talvala    virtual status_t dumpClient(int fd, const Vector<String16>& args);
110c4003965258404a19b99280ac0f475e2f290bf27Eino-Ville Talvala
111ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala    /**
112b99c5b8eebb35133a08c46b015624bd4c4a6c477Eino-Ville Talvala     * Interface used by CameraDeviceBase
113ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala     */
114160d4af9d933fe9461bb213e5876fc5c8c2178c2Eino-Ville Talvala
115160d4af9d933fe9461bb213e5876fc5c8c2178c2Eino-Ville Talvala    virtual void notifyAutoFocus(uint8_t newState, int triggerId);
116160d4af9d933fe9461bb213e5876fc5c8c2178c2Eino-Ville Talvala    virtual void notifyAutoExposure(uint8_t newState, int triggerId);
117216db7455a19a2f1a5b29e3a9610231365b6c778Yin-Chia Yeh    virtual void notifyShutter(const CaptureResultExtras& resultExtras,
118216db7455a19a2f1a5b29e3a9610231365b6c778Yin-Chia Yeh                               nsecs_t timestamp);
119160d4af9d933fe9461bb213e5876fc5c8c2178c2Eino-Ville Talvala
120ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala    /**
121ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala     * Interface used by independent components of Camera2Client.
122ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala     */
123a16733eeb9c40db4793bec408f29b4204e5f23b1Eino-Ville Talvala
124a16733eeb9c40db4793bec408f29b4204e5f23b1Eino-Ville Talvala    camera2::SharedParameters& getParameters();
125a16733eeb9c40db4793bec408f29b4204e5f23b1Eino-Ville Talvala
126da6665cbd06ca58d3357c3002b7366d13e23f152Eino-Ville Talvala    int getPreviewStreamId() const;
127da6665cbd06ca58d3357c3002b7366d13e23f152Eino-Ville Talvala    int getCaptureStreamId() const;
128da6665cbd06ca58d3357c3002b7366d13e23f152Eino-Ville Talvala    int getCallbackStreamId() const;
129da6665cbd06ca58d3357c3002b7366d13e23f152Eino-Ville Talvala    int getRecordingStreamId() const;
130da6665cbd06ca58d3357c3002b7366d13e23f152Eino-Ville Talvala    int getZslStreamId() const;
131da6665cbd06ca58d3357c3002b7366d13e23f152Eino-Ville Talvala
1324865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala    status_t registerFrameListener(int32_t minId, int32_t maxId,
1338b0b971b1416738f22488a80be726d1ec12552a8Chih-Hung Hsieh            const wp<camera2::FrameProcessor::FilteredListener>& listener,
13425a0aef19e170d2695f64b4c48296e7914155a88Zhijun He            bool sendPartials = true);
1354865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala    status_t removeFrameListener(int32_t minId, int32_t maxId,
1368b0b971b1416738f22488a80be726d1ec12552a8Chih-Hung Hsieh            const wp<camera2::FrameProcessor::FilteredListener>& listener);
1374865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala
1384865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala    status_t stopStream();
139da6665cbd06ca58d3357c3002b7366d13e23f152Eino-Ville Talvala
140355d9c6b74cd22a88fc7d1c9ba2e928ba566c69eYin-Chia Yeh    // For the slowJpegMode to create jpeg stream when precapture sequence is done
141355d9c6b74cd22a88fc7d1c9ba2e928ba566c69eYin-Chia Yeh    status_t createJpegStreamL(camera2::Parameters &params);
142355d9c6b74cd22a88fc7d1c9ba2e928ba566c69eYin-Chia Yeh
143ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala    static size_t calculateBufferSize(int width, int height,
144ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala            int format, int stride);
145ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala
1464865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala    static const int32_t kPreviewRequestIdStart = 10000000;
1474865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala    static const int32_t kPreviewRequestIdEnd   = 20000000;
1484865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala
1494865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala    static const int32_t kRecordingRequestIdStart  = 20000000;
1504865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala    static const int32_t kRecordingRequestIdEnd    = 30000000;
1514865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala
1524865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala    static const int32_t kCaptureRequestIdStart = 30000000;
1534865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala    static const int32_t kCaptureRequestIdEnd   = 40000000;
154da6665cbd06ca58d3357c3002b7366d13e23f152Eino-Ville Talvala
1552b07e0207da44d7b3cc63c369fd10c9f12a5e2cdEino-Ville Talvala    // Constant strings for ATRACE logging
1562b07e0207da44d7b3cc63c369fd10c9f12a5e2cdEino-Ville Talvala    static const char* kAutofocusLabel;
1572b07e0207da44d7b3cc63c369fd10c9f12a5e2cdEino-Ville Talvala    static const char* kTakepictureLabel;
1582b07e0207da44d7b3cc63c369fd10c9f12a5e2cdEino-Ville Talvala
159355d9c6b74cd22a88fc7d1c9ba2e928ba566c69eYin-Chia Yeh    // Used with stream IDs
160355d9c6b74cd22a88fc7d1c9ba2e928ba566c69eYin-Chia Yeh    static const int NO_STREAM = -1;
161355d9c6b74cd22a88fc7d1c9ba2e928ba566c69eYin-Chia Yeh
16261ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvalaprivate:
1633cca136b73b0f4d058019230eb2070cc23e2bbb0Eino-Ville Talvala    /** ICamera interface-related private members */
1642e19c3c02957208371cdd491e6342ea7ddb440d9Eino-Ville Talvala    typedef camera2::Parameters Parameters;
165228a53805808a24cb19fcf13b1f0bdc2ed89bbe1Eino-Ville Talvala
16636cdfb185877a7f573621d19ed2b2e1cac13d62eEino-Ville Talvala    status_t setPreviewWindowL(const sp<IBinder>& binder,
1678b0b971b1416738f22488a80be726d1ec12552a8Chih-Hung Hsieh            const sp<Surface>& window);
168228a53805808a24cb19fcf13b1f0bdc2ed89bbe1Eino-Ville Talvala    status_t startPreviewL(Parameters &params, bool restart);
169228a53805808a24cb19fcf13b1f0bdc2ed89bbe1Eino-Ville Talvala    void     stopPreviewL();
170228a53805808a24cb19fcf13b1f0bdc2ed89bbe1Eino-Ville Talvala    status_t startRecordingL(Parameters &params, bool restart);
171228a53805808a24cb19fcf13b1f0bdc2ed89bbe1Eino-Ville Talvala    bool     recordingEnabledL();
1728da4cd7d706d9f551bf2d08cd8b61907a10cd38dJames Dong
17336cdfb185877a7f573621d19ed2b2e1cac13d62eEino-Ville Talvala    // Individual commands for sendCommand()
17436cdfb185877a7f573621d19ed2b2e1cac13d62eEino-Ville Talvala    status_t commandStartSmoothZoomL();
17536cdfb185877a7f573621d19ed2b2e1cac13d62eEino-Ville Talvala    status_t commandStopSmoothZoomL();
17636cdfb185877a7f573621d19ed2b2e1cac13d62eEino-Ville Talvala    status_t commandSetDisplayOrientationL(int degrees);
17736cdfb185877a7f573621d19ed2b2e1cac13d62eEino-Ville Talvala    status_t commandEnableShutterSoundL(bool enable);
17836cdfb185877a7f573621d19ed2b2e1cac13d62eEino-Ville Talvala    status_t commandPlayRecordingSoundL();
17936cdfb185877a7f573621d19ed2b2e1cac13d62eEino-Ville Talvala    status_t commandStartFaceDetectionL(int type);
180228a53805808a24cb19fcf13b1f0bdc2ed89bbe1Eino-Ville Talvala    status_t commandStopFaceDetectionL(Parameters &params);
18136cdfb185877a7f573621d19ed2b2e1cac13d62eEino-Ville Talvala    status_t commandEnableFocusMoveMsgL(bool enable);
18236cdfb185877a7f573621d19ed2b2e1cac13d62eEino-Ville Talvala    status_t commandPingL();
18336cdfb185877a7f573621d19ed2b2e1cac13d62eEino-Ville Talvala    status_t commandSetVideoBufferCountL(size_t count);
184d46a6b9fd8b2a4f9098757384711e2cd03a91651Eino-Ville Talvala    status_t commandSetVideoFormatL(int format, android_dataspace dataSpace);
185ac45eb3dfa7347f7b8c98be1111b2a5f9e344c46Eino-Ville Talvala
1862e19c3c02957208371cdd491e6342ea7ddb440d9Eino-Ville Talvala    // Current camera device configuration
1872e19c3c02957208371cdd491e6342ea7ddb440d9Eino-Ville Talvala    camera2::SharedParameters mParameters;
1888ce89d9e2b132bf58a030acec88acf0a998926a1Eino-Ville Talvala
1893cca136b73b0f4d058019230eb2070cc23e2bbb0Eino-Ville Talvala    /** Camera device-related private members */
1903cca136b73b0f4d058019230eb2070cc23e2bbb0Eino-Ville Talvala
191228a53805808a24cb19fcf13b1f0bdc2ed89bbe1Eino-Ville Talvala    void     setPreviewCallbackFlagL(Parameters &params, int flag);
1925a4f93eaaab7518fd734fdc9f0f686d632f31a59Eino-Ville Talvala    status_t updateRequests(Parameters &params);
1938ce89d9e2b132bf58a030acec88acf0a998926a1Eino-Ville Talvala
194dca254aef0c09867e50fe6613c6fad405de72842Igor Murashkin    template <typename ProcessorT>
195dca254aef0c09867e50fe6613c6fad405de72842Igor Murashkin    status_t updateProcessorStream(sp<ProcessorT> processor, Parameters params);
19682db9e6126812dd2ee74e33e4c475cae2c7e48f6Igor Murashkin    template <typename ProcessorT,
19782db9e6126812dd2ee74e33e4c475cae2c7e48f6Igor Murashkin              status_t (ProcessorT::*updateStreamF)(const Parameters &)>
19882db9e6126812dd2ee74e33e4c475cae2c7e48f6Igor Murashkin    status_t updateProcessorStream(sp<ProcessorT> processor, Parameters params);
199dca254aef0c09867e50fe6613c6fad405de72842Igor Murashkin
200a16733eeb9c40db4793bec408f29b4204e5f23b1Eino-Ville Talvala    sp<camera2::FrameProcessor> mFrameProcessor;
2018ce89d9e2b132bf58a030acec88acf0a998926a1Eino-Ville Talvala
20273bbd1f1c493835f191ea2b0b72439292496b40aEino-Ville Talvala    /* Preview/Recording related members */
203be0573b93e2d6fa133579c885583af9ed16bc29dEino-Ville Talvala
2049cca4c6d976d2d4127286e9eaa54d1b99880c25cEino-Ville Talvala    sp<IBinder> mPreviewSurface;
2058cca0750a84c2d97224c0cfef7cf255308ee80b3Chien-Yu Chen    sp<IBinder> mVideoSurface;
20673bbd1f1c493835f191ea2b0b72439292496b40aEino-Ville Talvala    sp<camera2::StreamingProcessor> mStreamingProcessor;
2079cca4c6d976d2d4127286e9eaa54d1b99880c25cEino-Ville Talvala
208228a53805808a24cb19fcf13b1f0bdc2ed89bbe1Eino-Ville Talvala    /** Preview callback related members */
209228a53805808a24cb19fcf13b1f0bdc2ed89bbe1Eino-Ville Talvala
210d86a6880fe86bda21a9b53b240996fc410a512a5Eino-Ville Talvala    sp<camera2::CallbackProcessor> mCallbackProcessor;
211228a53805808a24cb19fcf13b1f0bdc2ed89bbe1Eino-Ville Talvala
2129cca4c6d976d2d4127286e9eaa54d1b99880c25cEino-Ville Talvala    /* Still image capture related members */
2136db981c45a964f0d9df4c3451f064dff7954d78eEino-Ville Talvala
214da6665cbd06ca58d3357c3002b7366d13e23f152Eino-Ville Talvala    sp<camera2::CaptureSequencer> mCaptureSequencer;
215da6665cbd06ca58d3357c3002b7366d13e23f152Eino-Ville Talvala    sp<camera2::JpegProcessor> mJpegProcessor;
216d309fb9c8a2c4564d88fffba19c4e3688e4b862bEino-Ville Talvala    sp<camera2::ZslProcessor> mZslProcessor;
217174181eec57c963a2a17bd156d81c3f18b3ba75cEino-Ville Talvala
2189cca4c6d976d2d4127286e9eaa54d1b99880c25cEino-Ville Talvala    /** Utility members */
219a858ea0495c887621a2fd9c0afc13780deccb597Igor Murashkin    bool mLegacyMode;
2209cca4c6d976d2d4127286e9eaa54d1b99880c25cEino-Ville Talvala
2214865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala    // Wait until the camera device has received the latest control settings
2224865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala    status_t syncWithDevice();
223a53021f776d0c82271727e5817388936513feb92Yin-Chia Yeh
224a53021f776d0c82271727e5817388936513feb92Yin-Chia Yeh    // Video snapshot jpeg size overriding helper function
225a53021f776d0c82271727e5817388936513feb92Yin-Chia Yeh    status_t overrideVideoSnapshotSize(Parameters &params);
226dce65c8103a8e8c3267590e90c5141d6bf842872Yin-Chia Yeh
227dce65c8103a8e8c3267590e90c5141d6bf842872Yin-Chia Yeh    template<typename TProviderPtr>
228bd8c503398d6b483b7abba594c7838a4c93b6e23Emilian Peev    status_t initializeImpl(TProviderPtr providerPtr, const String8& monitorTags);
229fa52c0fd3ce1bb23450b9b9a188aa3e66e36d613Chien-Yu Chen
230fa52c0fd3ce1bb23450b9b9a188aa3e66e36d613Chien-Yu Chen    bool isZslEnabledInStillTemplate();
23161ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala};
23261ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala
23361ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala}; // namespace android
23461ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala
23561ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala#endif
236