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, 9461ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala int cameraId, 9561ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala int cameraFacing, 96ecf17e82505fdb60d59e00b6dd59036df93de655Igor Murashkin int clientPid, 97ceb388d6c03c38b96dc41c0ea4804b749aa077c4Eino-Ville Talvala uid_t clientUid, 98a858ea0495c887621a2fd9c0afc13780deccb597Igor Murashkin int servicePid, 99a858ea0495c887621a2fd9c0afc13780deccb597Igor Murashkin bool legacyMode); 100b99c5b8eebb35133a08c46b015624bd4c4a6c477Eino-Ville Talvala 101160d4af9d933fe9461bb213e5876fc5c8c2178c2Eino-Ville Talvala virtual ~Camera2Client(); 10261ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala 103dce65c8103a8e8c3267590e90c5141d6bf842872Yin-Chia Yeh virtual status_t initialize(sp<CameraProviderManager> manager) override; 104f69c70ded4316ea3ee504ac779bd024433ed4ef7Eino-Ville Talvala 10561ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala virtual status_t dump(int fd, const Vector<String16>& args); 10661ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala 107c4003965258404a19b99280ac0f475e2f290bf27Eino-Ville Talvala virtual status_t dumpClient(int fd, const Vector<String16>& args); 108c4003965258404a19b99280ac0f475e2f290bf27Eino-Ville Talvala 109ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala /** 110b99c5b8eebb35133a08c46b015624bd4c4a6c477Eino-Ville Talvala * Interface used by CameraDeviceBase 111ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala */ 112160d4af9d933fe9461bb213e5876fc5c8c2178c2Eino-Ville Talvala 113160d4af9d933fe9461bb213e5876fc5c8c2178c2Eino-Ville Talvala virtual void notifyAutoFocus(uint8_t newState, int triggerId); 114160d4af9d933fe9461bb213e5876fc5c8c2178c2Eino-Ville Talvala virtual void notifyAutoExposure(uint8_t newState, int triggerId); 115216db7455a19a2f1a5b29e3a9610231365b6c778Yin-Chia Yeh virtual void notifyShutter(const CaptureResultExtras& resultExtras, 116216db7455a19a2f1a5b29e3a9610231365b6c778Yin-Chia Yeh nsecs_t timestamp); 117160d4af9d933fe9461bb213e5876fc5c8c2178c2Eino-Ville Talvala 118ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala /** 119ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala * Interface used by independent components of Camera2Client. 120ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala */ 121a16733eeb9c40db4793bec408f29b4204e5f23b1Eino-Ville Talvala 122a16733eeb9c40db4793bec408f29b4204e5f23b1Eino-Ville Talvala camera2::SharedParameters& getParameters(); 123a16733eeb9c40db4793bec408f29b4204e5f23b1Eino-Ville Talvala 124da6665cbd06ca58d3357c3002b7366d13e23f152Eino-Ville Talvala int getPreviewStreamId() const; 125da6665cbd06ca58d3357c3002b7366d13e23f152Eino-Ville Talvala int getCaptureStreamId() const; 126da6665cbd06ca58d3357c3002b7366d13e23f152Eino-Ville Talvala int getCallbackStreamId() const; 127da6665cbd06ca58d3357c3002b7366d13e23f152Eino-Ville Talvala int getRecordingStreamId() const; 128da6665cbd06ca58d3357c3002b7366d13e23f152Eino-Ville Talvala int getZslStreamId() const; 129da6665cbd06ca58d3357c3002b7366d13e23f152Eino-Ville Talvala 1304865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala status_t registerFrameListener(int32_t minId, int32_t maxId, 1318b0b971b1416738f22488a80be726d1ec12552a8Chih-Hung Hsieh const wp<camera2::FrameProcessor::FilteredListener>& listener, 13225a0aef19e170d2695f64b4c48296e7914155a88Zhijun He bool sendPartials = true); 1334865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala status_t removeFrameListener(int32_t minId, int32_t maxId, 1348b0b971b1416738f22488a80be726d1ec12552a8Chih-Hung Hsieh const wp<camera2::FrameProcessor::FilteredListener>& listener); 1354865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala 1364865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala status_t stopStream(); 137da6665cbd06ca58d3357c3002b7366d13e23f152Eino-Ville Talvala 138355d9c6b74cd22a88fc7d1c9ba2e928ba566c69eYin-Chia Yeh // For the slowJpegMode to create jpeg stream when precapture sequence is done 139355d9c6b74cd22a88fc7d1c9ba2e928ba566c69eYin-Chia Yeh status_t createJpegStreamL(camera2::Parameters ¶ms); 140355d9c6b74cd22a88fc7d1c9ba2e928ba566c69eYin-Chia Yeh 141ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala static size_t calculateBufferSize(int width, int height, 142ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala int format, int stride); 143ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala 1444865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala static const int32_t kPreviewRequestIdStart = 10000000; 1454865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala static const int32_t kPreviewRequestIdEnd = 20000000; 1464865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala 1474865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala static const int32_t kRecordingRequestIdStart = 20000000; 1484865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala static const int32_t kRecordingRequestIdEnd = 30000000; 1494865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala 1504865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala static const int32_t kCaptureRequestIdStart = 30000000; 1514865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala static const int32_t kCaptureRequestIdEnd = 40000000; 152da6665cbd06ca58d3357c3002b7366d13e23f152Eino-Ville Talvala 1532b07e0207da44d7b3cc63c369fd10c9f12a5e2cdEino-Ville Talvala // Constant strings for ATRACE logging 1542b07e0207da44d7b3cc63c369fd10c9f12a5e2cdEino-Ville Talvala static const char* kAutofocusLabel; 1552b07e0207da44d7b3cc63c369fd10c9f12a5e2cdEino-Ville Talvala static const char* kTakepictureLabel; 1562b07e0207da44d7b3cc63c369fd10c9f12a5e2cdEino-Ville Talvala 157355d9c6b74cd22a88fc7d1c9ba2e928ba566c69eYin-Chia Yeh // Used with stream IDs 158355d9c6b74cd22a88fc7d1c9ba2e928ba566c69eYin-Chia Yeh static const int NO_STREAM = -1; 159355d9c6b74cd22a88fc7d1c9ba2e928ba566c69eYin-Chia Yeh 16061ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvalaprivate: 1613cca136b73b0f4d058019230eb2070cc23e2bbb0Eino-Ville Talvala /** ICamera interface-related private members */ 1622e19c3c02957208371cdd491e6342ea7ddb440d9Eino-Ville Talvala typedef camera2::Parameters Parameters; 163228a53805808a24cb19fcf13b1f0bdc2ed89bbe1Eino-Ville Talvala 16436cdfb185877a7f573621d19ed2b2e1cac13d62eEino-Ville Talvala status_t setPreviewWindowL(const sp<IBinder>& binder, 1658b0b971b1416738f22488a80be726d1ec12552a8Chih-Hung Hsieh const sp<Surface>& window); 166228a53805808a24cb19fcf13b1f0bdc2ed89bbe1Eino-Ville Talvala status_t startPreviewL(Parameters ¶ms, bool restart); 167228a53805808a24cb19fcf13b1f0bdc2ed89bbe1Eino-Ville Talvala void stopPreviewL(); 168228a53805808a24cb19fcf13b1f0bdc2ed89bbe1Eino-Ville Talvala status_t startRecordingL(Parameters ¶ms, bool restart); 169228a53805808a24cb19fcf13b1f0bdc2ed89bbe1Eino-Ville Talvala bool recordingEnabledL(); 1708da4cd7d706d9f551bf2d08cd8b61907a10cd38dJames Dong 17136cdfb185877a7f573621d19ed2b2e1cac13d62eEino-Ville Talvala // Individual commands for sendCommand() 17236cdfb185877a7f573621d19ed2b2e1cac13d62eEino-Ville Talvala status_t commandStartSmoothZoomL(); 17336cdfb185877a7f573621d19ed2b2e1cac13d62eEino-Ville Talvala status_t commandStopSmoothZoomL(); 17436cdfb185877a7f573621d19ed2b2e1cac13d62eEino-Ville Talvala status_t commandSetDisplayOrientationL(int degrees); 17536cdfb185877a7f573621d19ed2b2e1cac13d62eEino-Ville Talvala status_t commandEnableShutterSoundL(bool enable); 17636cdfb185877a7f573621d19ed2b2e1cac13d62eEino-Ville Talvala status_t commandPlayRecordingSoundL(); 17736cdfb185877a7f573621d19ed2b2e1cac13d62eEino-Ville Talvala status_t commandStartFaceDetectionL(int type); 178228a53805808a24cb19fcf13b1f0bdc2ed89bbe1Eino-Ville Talvala status_t commandStopFaceDetectionL(Parameters ¶ms); 17936cdfb185877a7f573621d19ed2b2e1cac13d62eEino-Ville Talvala status_t commandEnableFocusMoveMsgL(bool enable); 18036cdfb185877a7f573621d19ed2b2e1cac13d62eEino-Ville Talvala status_t commandPingL(); 18136cdfb185877a7f573621d19ed2b2e1cac13d62eEino-Ville Talvala status_t commandSetVideoBufferCountL(size_t count); 182d46a6b9fd8b2a4f9098757384711e2cd03a91651Eino-Ville Talvala status_t commandSetVideoFormatL(int format, android_dataspace dataSpace); 183ac45eb3dfa7347f7b8c98be1111b2a5f9e344c46Eino-Ville Talvala 1842e19c3c02957208371cdd491e6342ea7ddb440d9Eino-Ville Talvala // Current camera device configuration 1852e19c3c02957208371cdd491e6342ea7ddb440d9Eino-Ville Talvala camera2::SharedParameters mParameters; 1868ce89d9e2b132bf58a030acec88acf0a998926a1Eino-Ville Talvala 1873cca136b73b0f4d058019230eb2070cc23e2bbb0Eino-Ville Talvala /** Camera device-related private members */ 1883cca136b73b0f4d058019230eb2070cc23e2bbb0Eino-Ville Talvala 189228a53805808a24cb19fcf13b1f0bdc2ed89bbe1Eino-Ville Talvala void setPreviewCallbackFlagL(Parameters ¶ms, int flag); 1905a4f93eaaab7518fd734fdc9f0f686d632f31a59Eino-Ville Talvala status_t updateRequests(Parameters ¶ms); 1918ce89d9e2b132bf58a030acec88acf0a998926a1Eino-Ville Talvala 192dca254aef0c09867e50fe6613c6fad405de72842Igor Murashkin template <typename ProcessorT> 193dca254aef0c09867e50fe6613c6fad405de72842Igor Murashkin status_t updateProcessorStream(sp<ProcessorT> processor, Parameters params); 19482db9e6126812dd2ee74e33e4c475cae2c7e48f6Igor Murashkin template <typename ProcessorT, 19582db9e6126812dd2ee74e33e4c475cae2c7e48f6Igor Murashkin status_t (ProcessorT::*updateStreamF)(const Parameters &)> 19682db9e6126812dd2ee74e33e4c475cae2c7e48f6Igor Murashkin status_t updateProcessorStream(sp<ProcessorT> processor, Parameters params); 197dca254aef0c09867e50fe6613c6fad405de72842Igor Murashkin 198a16733eeb9c40db4793bec408f29b4204e5f23b1Eino-Ville Talvala sp<camera2::FrameProcessor> mFrameProcessor; 1998ce89d9e2b132bf58a030acec88acf0a998926a1Eino-Ville Talvala 20073bbd1f1c493835f191ea2b0b72439292496b40aEino-Ville Talvala /* Preview/Recording related members */ 201be0573b93e2d6fa133579c885583af9ed16bc29dEino-Ville Talvala 2029cca4c6d976d2d4127286e9eaa54d1b99880c25cEino-Ville Talvala sp<IBinder> mPreviewSurface; 2038cca0750a84c2d97224c0cfef7cf255308ee80b3Chien-Yu Chen sp<IBinder> mVideoSurface; 20473bbd1f1c493835f191ea2b0b72439292496b40aEino-Ville Talvala sp<camera2::StreamingProcessor> mStreamingProcessor; 2059cca4c6d976d2d4127286e9eaa54d1b99880c25cEino-Ville Talvala 206228a53805808a24cb19fcf13b1f0bdc2ed89bbe1Eino-Ville Talvala /** Preview callback related members */ 207228a53805808a24cb19fcf13b1f0bdc2ed89bbe1Eino-Ville Talvala 208d86a6880fe86bda21a9b53b240996fc410a512a5Eino-Ville Talvala sp<camera2::CallbackProcessor> mCallbackProcessor; 209228a53805808a24cb19fcf13b1f0bdc2ed89bbe1Eino-Ville Talvala 2109cca4c6d976d2d4127286e9eaa54d1b99880c25cEino-Ville Talvala /* Still image capture related members */ 2116db981c45a964f0d9df4c3451f064dff7954d78eEino-Ville Talvala 212da6665cbd06ca58d3357c3002b7366d13e23f152Eino-Ville Talvala sp<camera2::CaptureSequencer> mCaptureSequencer; 213da6665cbd06ca58d3357c3002b7366d13e23f152Eino-Ville Talvala sp<camera2::JpegProcessor> mJpegProcessor; 214d309fb9c8a2c4564d88fffba19c4e3688e4b862bEino-Ville Talvala sp<camera2::ZslProcessor> mZslProcessor; 215174181eec57c963a2a17bd156d81c3f18b3ba75cEino-Ville Talvala 2169cca4c6d976d2d4127286e9eaa54d1b99880c25cEino-Ville Talvala /** Utility members */ 217a858ea0495c887621a2fd9c0afc13780deccb597Igor Murashkin bool mLegacyMode; 2189cca4c6d976d2d4127286e9eaa54d1b99880c25cEino-Ville Talvala 2194865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala // Wait until the camera device has received the latest control settings 2204865c526e681366481b0ab242ffa1ead57bb02ccEino-Ville Talvala status_t syncWithDevice(); 221a53021f776d0c82271727e5817388936513feb92Yin-Chia Yeh 222a53021f776d0c82271727e5817388936513feb92Yin-Chia Yeh // Video snapshot jpeg size overriding helper function 223a53021f776d0c82271727e5817388936513feb92Yin-Chia Yeh status_t overrideVideoSnapshotSize(Parameters ¶ms); 224dce65c8103a8e8c3267590e90c5141d6bf842872Yin-Chia Yeh 225dce65c8103a8e8c3267590e90c5141d6bf842872Yin-Chia Yeh template<typename TProviderPtr> 226dce65c8103a8e8c3267590e90c5141d6bf842872Yin-Chia Yeh status_t initializeImpl(TProviderPtr providerPtr); 22761ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala}; 22861ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala 22961ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala}; // namespace android 23061ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala 23161ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala#endif 232