1 /* 2 * Copyright (C) 2013 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #ifndef ANDROID_SERVERS_CAMERA3_OUTPUT_STREAM_INTERFACE_H 18 #define ANDROID_SERVERS_CAMERA3_OUTPUT_STREAM_INTERFACE_H 19 20 #include "Camera3StreamInterface.h" 21 22 namespace android { 23 24 namespace camera3 { 25 26 /** 27 * An interface for managing a single stream of output data from the camera 28 * device. 29 */ 30 class Camera3OutputStreamInterface : public virtual Camera3StreamInterface { 31 public: 32 /** 33 * Set the transform on the output stream; one of the 34 * HAL_TRANSFORM_* / NATIVE_WINDOW_TRANSFORM_* constants. 35 */ 36 virtual status_t setTransform(int transform) = 0; 37 38 /** 39 * Return if this output stream is for video encoding. 40 */ 41 virtual bool isVideoStream() const = 0; 42 43 /** 44 * Return if the consumer configuration of this stream is deferred. 45 */ 46 virtual bool isConsumerConfigurationDeferred() const = 0; 47 48 /** 49 * Set the consumer surface to the output stream. 50 */ 51 virtual status_t setConsumer(sp<Surface> consumer) = 0; 52 53 /** 54 * Detach an unused buffer from the stream. 55 * 56 * buffer must be non-null; fenceFd may null, and if it is non-null, but 57 * there is no valid fence associated with the detached buffer, it will be 58 * set to -1. 59 * 60 */ 61 virtual status_t detachBuffer(sp<GraphicBuffer>* buffer, int* fenceFd) = 0; 62 }; 63 64 } // namespace camera3 65 66 } // namespace android 67 68 #endif 69