IProCameraUser.h revision d127c2c8a8b68dae2f8743c310c2547e8f46d967
1eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch/* 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Copyright (C) 2013 The Android Open Source Project 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Licensed under the Apache License, Version 2.0 (the "License"); 5eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * you may not use this file except in compliance with the License. 6eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * You may obtain a copy of the License at 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * 8868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) * http://www.apache.org/licenses/LICENSE-2.0 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Unless required by applicable law or agreed to in writing, software 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * distributed under the License is distributed on an "AS IS" BASIS, 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * See the License for the specific language governing permissions and 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * limitations under the License. 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef ANDROID_HARDWARE_IPROCAMERAUSER_H 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define ANDROID_HARDWARE_IPROCAMERAUSER_H 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <utils/RefBase.h> 21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include <binder/IInterface.h> 22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include <binder/Parcel.h> 23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include <binder/IMemory.h> 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <utils/String8.h> 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <camera/IProCameraCallbacks.h> 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)struct camera_metadata; 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace android { 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class IProCameraUserClient; 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class IGraphicBufferProducer; 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class Surface; 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class IProCameraUser: public IInterface 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles){ 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)public: 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DECLARE_META_INTERFACE(ProCameraUser); 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void disconnect() = 0; 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // connect to the service, given a callbacks listener 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual status_t connect(const sp<IProCameraCallbacks>& callbacks) 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) = 0; 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * Locking 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) **/ 49a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual status_t exclusiveTryLock() = 0; 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual status_t exclusiveLock() = 0; 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual status_t exclusiveUnlock() = 0; 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 53eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual bool hasExclusiveLock() = 0; 54 55 /** 56 * Request Handling 57 **/ 58 59 // Note that the callee gets a copy of the metadata. 60 virtual int submitRequest(struct camera_metadata* metadata, 61 bool streaming = false) = 0; 62 virtual status_t cancelRequest(int requestId) = 0; 63 64 virtual status_t requestStream(int streamId) = 0; 65 virtual status_t cancelStream(int streamId) = 0; 66 virtual status_t createStream( 67 int width, int height, int format, 68 const sp<IGraphicBufferProducer>& bufferProducer, 69 /*out*/ 70 int* streamId) = 0; 71 72 // Create a request object from a template. 73 virtual status_t createDefaultRequest(int templateId, 74 /*out*/ 75 camera_metadata** request) 76 = 0; 77 78 // Get static camera metadata 79 virtual status_t getCameraInfo(int cameraId, 80 /*out*/ 81 camera_metadata** info) = 0; 82 83}; 84 85// ---------------------------------------------------------------------------- 86 87class BnProCameraUser: public BnInterface<IProCameraUser> 88{ 89public: 90 virtual status_t onTransact( uint32_t code, 91 const Parcel& data, 92 Parcel* reply, 93 uint32_t flags = 0); 94}; 95 96}; // namespace android 97 98#endif 99