1634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin/* 2634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin * Copyright (C) 2013 The Android Open Source Project 3634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin * 4634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin * Licensed under the Apache License, Version 2.0 (the "License"); 5634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin * you may not use this file except in compliance with the License. 6634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin * You may obtain a copy of the License at 7634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin * 8634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin * http://www.apache.org/licenses/LICENSE-2.0 9634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin * 10634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin * Unless required by applicable law or agreed to in writing, software 11634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin * distributed under the License is distributed on an "AS IS" BASIS, 12634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin * See the License for the specific language governing permissions and 14634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin * limitations under the License. 15634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin */ 16634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin 17634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin#ifndef ANDROID_HARDWARE_IPROCAMERAUSER_H 18634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin#define ANDROID_HARDWARE_IPROCAMERAUSER_H 19634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin 20634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin#include <utils/RefBase.h> 21634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin#include <binder/IInterface.h> 22634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin#include <binder/Parcel.h> 23634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin#include <binder/IMemory.h> 24634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin#include <utils/String8.h> 25634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin#include <camera/IProCameraCallbacks.h> 26634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin 27634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkinstruct camera_metadata; 28634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin 29634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkinnamespace android { 30634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin 31634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkinclass IProCameraUserClient; 32634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkinclass IGraphicBufferProducer; 33634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkinclass Surface; 34634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin 35634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkinclass IProCameraUser: public IInterface 36634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin{ 37bef3f23f16f2fc575b3f425febcfcc436a7db70fIgor Murashkin /** 38bef3f23f16f2fc575b3f425febcfcc436a7db70fIgor Murashkin * Keep up-to-date with IProCameraUser.aidl in frameworks/base 39bef3f23f16f2fc575b3f425febcfcc436a7db70fIgor Murashkin */ 40634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkinpublic: 41634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin DECLARE_META_INTERFACE(ProCameraUser); 42634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin 43634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin virtual void disconnect() = 0; 44634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin 45634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin // connect to the service, given a callbacks listener 46634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin virtual status_t connect(const sp<IProCameraCallbacks>& callbacks) 47634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin = 0; 48634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin 49634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin /** 50634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin * Locking 51634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin **/ 52634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin virtual status_t exclusiveTryLock() = 0; 53634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin virtual status_t exclusiveLock() = 0; 54634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin virtual status_t exclusiveUnlock() = 0; 55634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin 56634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin virtual bool hasExclusiveLock() = 0; 57634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin 58634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin /** 59634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin * Request Handling 60634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin **/ 61634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin 62634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin // Note that the callee gets a copy of the metadata. 63634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin virtual int submitRequest(struct camera_metadata* metadata, 64634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin bool streaming = false) = 0; 65634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin virtual status_t cancelRequest(int requestId) = 0; 66634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin 67fa4cf9d310685b4c25877cba772ff7da84caf517Igor Murashkin virtual status_t deleteStream(int streamId) = 0; 6876f8b43909817179b317880202360863b8f976d0Igor Murashkin virtual status_t createStream( 6976f8b43909817179b317880202360863b8f976d0Igor Murashkin int width, int height, int format, 7076f8b43909817179b317880202360863b8f976d0Igor Murashkin const sp<IGraphicBufferProducer>& bufferProducer, 7176f8b43909817179b317880202360863b8f976d0Igor Murashkin /*out*/ 7276f8b43909817179b317880202360863b8f976d0Igor Murashkin int* streamId) = 0; 73985fd30a10f6fec4293f071fd258c4726cff5a3dIgor Murashkin 74985fd30a10f6fec4293f071fd258c4726cff5a3dIgor Murashkin // Create a request object from a template. 75985fd30a10f6fec4293f071fd258c4726cff5a3dIgor Murashkin virtual status_t createDefaultRequest(int templateId, 76985fd30a10f6fec4293f071fd258c4726cff5a3dIgor Murashkin /*out*/ 77985fd30a10f6fec4293f071fd258c4726cff5a3dIgor Murashkin camera_metadata** request) 78985fd30a10f6fec4293f071fd258c4726cff5a3dIgor Murashkin = 0; 79634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin 807b33a74bbc514b99c16be7fff9a34e892bc19264Igor Murashkin // Get static camera metadata 817b33a74bbc514b99c16be7fff9a34e892bc19264Igor Murashkin virtual status_t getCameraInfo(int cameraId, 827b33a74bbc514b99c16be7fff9a34e892bc19264Igor Murashkin /*out*/ 837b33a74bbc514b99c16be7fff9a34e892bc19264Igor Murashkin camera_metadata** info) = 0; 847b33a74bbc514b99c16be7fff9a34e892bc19264Igor Murashkin 85634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin}; 86634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin 87634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin// ---------------------------------------------------------------------------- 88634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin 89634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkinclass BnProCameraUser: public BnInterface<IProCameraUser> 90634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin{ 91634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkinpublic: 92634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin virtual status_t onTransact( uint32_t code, 93634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin const Parcel& data, 94634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin Parcel* reply, 95634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin uint32_t flags = 0); 96634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin}; 97634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin 98634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin}; // namespace android 99634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin 100634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin#endif 101