1fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala/* 2fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala * Copyright (C) 2013 The Android Open Source Project 3fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala * 4fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala * Licensed under the Apache License, Version 2.0 (the "License"); 5fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala * you may not use this file except in compliance with the License. 6fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala * You may obtain a copy of the License at 7fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala * 8fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala * http://www.apache.org/licenses/LICENSE-2.0 9fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala * 10fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala * Unless required by applicable law or agreed to in writing, software 11fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala * distributed under the License is distributed on an "AS IS" BASIS, 12fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala * See the License for the specific language governing permissions and 14fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala * limitations under the License. 15fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala */ 16fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 17fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala#ifndef ANDROID_SERVERS_CAMERA3_OUTPUT_STREAM_H 18fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala#define ANDROID_SERVERS_CAMERA3_OUTPUT_STREAM_H 19fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 20fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala#include <utils/RefBase.h> 21125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He#include <gui/IProducerListener.h> 22fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala#include <gui/Surface.h> 23fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 24fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala#include "Camera3Stream.h" 25e3a9f964d7ebb6f269e6df2ba9c24b7c8b9ccefdIgor Murashkin#include "Camera3IOStreamBase.h" 262fba584544e8687b526e3388bf7160b696da1dbaIgor Murashkin#include "Camera3OutputStreamInterface.h" 27125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He#include "Camera3BufferManager.h" 28fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 29fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvalanamespace android { 30fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 31fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvalanamespace camera3 { 32fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 33125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun Heclass Camera3BufferManager; 34125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He 35125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He/** 36125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He * Stream info structure that holds the necessary stream info for buffer manager to use for 37125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He * buffer allocation and management. 38125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He */ 39125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun Hestruct StreamInfo { 40125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He int streamId; 41125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He int streamSetId; 42125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He uint32_t width; 43125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He uint32_t height; 44125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He uint32_t format; 45125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He android_dataspace dataSpace; 46125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He uint32_t combinedUsage; 47125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He size_t totalBufferCount; 48125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He bool isConfigured; 49125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He StreamInfo(int id = CAMERA3_STREAM_ID_INVALID, 50125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He int setId = CAMERA3_STREAM_SET_ID_INVALID, 51125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He uint32_t w = 0, 52125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He uint32_t h = 0, 53125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He uint32_t fmt = 0, 54125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He android_dataspace ds = HAL_DATASPACE_UNKNOWN, 55125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He uint32_t usage = 0, 56125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He size_t bufferCount = 0, 57125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He bool configured = false) : 58125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He streamId(id), 59125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He streamSetId(setId), 60125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He width(w), 61125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He height(h), 62125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He format(fmt), 63125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He dataSpace(ds), 64125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He combinedUsage(usage), 65125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He totalBufferCount(bufferCount), 66125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He isConfigured(configured){} 67125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He}; 68125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He 69fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala/** 70fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala * A class for managing a single stream of output data from the camera device. 71fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala */ 722fba584544e8687b526e3388bf7160b696da1dbaIgor Murashkinclass Camera3OutputStream : 73e3a9f964d7ebb6f269e6df2ba9c24b7c8b9ccefdIgor Murashkin public Camera3IOStreamBase, 742fba584544e8687b526e3388bf7160b696da1dbaIgor Murashkin public Camera3OutputStreamInterface { 75fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala public: 76fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala /** 77fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala * Set up a stream for formats that have 2 dimensions, such as RAW and YUV. 78125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He * A valid stream set id needs to be set to support buffer sharing between multiple 79125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He * streams. 80fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala */ 81727d172137b4f32681c098de8e2623c0b65a6406Eino-Ville Talvala Camera3OutputStream(int id, sp<Surface> consumer, 823d82c0d9ed2b3e956ad699a9ca2c8a70c9d24678Eino-Ville Talvala uint32_t width, uint32_t height, int format, 83125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He android_dataspace dataSpace, camera3_stream_rotation_t rotation, 84c28dcccb9bc0a94950a7475f9bd8a6a38be34419Shuzhen Wang nsecs_t timestampOffset, int setId = CAMERA3_STREAM_SET_ID_INVALID); 85fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 86fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala /** 87fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala * Set up a stream for formats that have a variable buffer size for the same 88fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala * dimensions, such as compressed JPEG. 89125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He * A valid stream set id needs to be set to support buffer sharing between multiple 90125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He * streams. 91fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala */ 92727d172137b4f32681c098de8e2623c0b65a6406Eino-Ville Talvala Camera3OutputStream(int id, sp<Surface> consumer, 933d82c0d9ed2b3e956ad699a9ca2c8a70c9d24678Eino-Ville Talvala uint32_t width, uint32_t height, size_t maxSize, int format, 94125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He android_dataspace dataSpace, camera3_stream_rotation_t rotation, 95c28dcccb9bc0a94950a7475f9bd8a6a38be34419Shuzhen Wang nsecs_t timestampOffset, int setId = CAMERA3_STREAM_SET_ID_INVALID); 96fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 975d677d1f0879d5101e38df480a38228a64d63959Zhijun He /** 985d677d1f0879d5101e38df480a38228a64d63959Zhijun He * Set up a stream with deferred consumer for formats that have 2 dimensions, such as 995d677d1f0879d5101e38df480a38228a64d63959Zhijun He * RAW and YUV. The consumer must be set before using this stream for output. A valid 1005d677d1f0879d5101e38df480a38228a64d63959Zhijun He * stream set id needs to be set to support buffer sharing between multiple streams. 1015d677d1f0879d5101e38df480a38228a64d63959Zhijun He */ 1025d677d1f0879d5101e38df480a38228a64d63959Zhijun He Camera3OutputStream(int id, uint32_t width, uint32_t height, int format, 1035d677d1f0879d5101e38df480a38228a64d63959Zhijun He uint32_t consumerUsage, android_dataspace dataSpace, 1045d677d1f0879d5101e38df480a38228a64d63959Zhijun He camera3_stream_rotation_t rotation, nsecs_t timestampOffset, 1055d677d1f0879d5101e38df480a38228a64d63959Zhijun He int setId = CAMERA3_STREAM_SET_ID_INVALID); 1065d677d1f0879d5101e38df480a38228a64d63959Zhijun He 107fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala virtual ~Camera3OutputStream(); 108fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 109fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala /** 110fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala * Camera3Stream interface 111fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala */ 112fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 113fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala virtual void dump(int fd, const Vector<String16> &args) const; 114fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 115fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala /** 116fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala * Set the transform on the output stream; one of the 117fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala * HAL_TRANSFORM_* / NATIVE_WINDOW_TRANSFORM_* constants. 118fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala */ 119fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala status_t setTransform(int transform); 120fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 12185a6455f269d79adf9bf48d757a4b1b3c81cf760Chien-Yu Chen /** 12285a6455f269d79adf9bf48d757a4b1b3c81cf760Chien-Yu Chen * Return if this output stream is for video encoding. 12385a6455f269d79adf9bf48d757a4b1b3c81cf760Chien-Yu Chen */ 12485a6455f269d79adf9bf48d757a4b1b3c81cf760Chien-Yu Chen bool isVideoStream() const; 12513a69633108f40f56aa47f1bcbb406cd5173c245Shuzhen Wang /** 12613a69633108f40f56aa47f1bcbb406cd5173c245Shuzhen Wang * Return if this output stream is consumed by hardware composer. 12713a69633108f40f56aa47f1bcbb406cd5173c245Shuzhen Wang */ 12813a69633108f40f56aa47f1bcbb406cd5173c245Shuzhen Wang bool isConsumedByHWComposer() const; 12985a6455f269d79adf9bf48d757a4b1b3c81cf760Chien-Yu Chen 1305d677d1f0879d5101e38df480a38228a64d63959Zhijun He /** 131f0645c19a8c8433766f4cb6edff7fca5db8017bfZhijun He * Return if this output stream is consumed by hardware texture. 132f0645c19a8c8433766f4cb6edff7fca5db8017bfZhijun He */ 133f0645c19a8c8433766f4cb6edff7fca5db8017bfZhijun He bool isConsumedByHWTexture() const; 134f0645c19a8c8433766f4cb6edff7fca5db8017bfZhijun He 135f0645c19a8c8433766f4cb6edff7fca5db8017bfZhijun He /** 1365d677d1f0879d5101e38df480a38228a64d63959Zhijun He * Return if the consumer configuration of this stream is deferred. 1375d677d1f0879d5101e38df480a38228a64d63959Zhijun He */ 1385d677d1f0879d5101e38df480a38228a64d63959Zhijun He virtual bool isConsumerConfigurationDeferred() const; 1395d677d1f0879d5101e38df480a38228a64d63959Zhijun He 1405d677d1f0879d5101e38df480a38228a64d63959Zhijun He /** 1415d677d1f0879d5101e38df480a38228a64d63959Zhijun He * Set the consumer surface to the output stream. 1425d677d1f0879d5101e38df480a38228a64d63959Zhijun He */ 1435d677d1f0879d5101e38df480a38228a64d63959Zhijun He virtual status_t setConsumer(sp<Surface> consumer); 1445d677d1f0879d5101e38df480a38228a64d63959Zhijun He 145125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He class BufferReleasedListener : public BnProducerListener { 146125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He public: 147125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He BufferReleasedListener(wp<Camera3OutputStream> parent) : mParent(parent) {} 148125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He 149125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He /** 150125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He * Implementation of IProducerListener, used to notify this stream that the consumer 151125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He * has returned a buffer and it is ready to return to Camera3BufferManager for reuse. 152125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He */ 153125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He virtual void onBufferReleased(); 154125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He 155125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He private: 156125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He wp<Camera3OutputStream> mParent; 157125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He }; 158125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He 15977c1a3554275a51ac8eb9fbe86f476afc8983192Eino-Ville Talvala virtual status_t detachBuffer(sp<GraphicBuffer>* buffer, int* fenceFd); 16077c1a3554275a51ac8eb9fbe86f476afc8983192Eino-Ville Talvala 161125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He /** 162125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He * Set the graphic buffer manager to get/return the stream buffers. 163125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He * 164125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He * It is only legal to call this method when stream is in STATE_CONSTRUCTED state. 165125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He */ 166125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He status_t setBufferManager(sp<Camera3BufferManager> bufferManager); 167125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He 168e3a9f964d7ebb6f269e6df2ba9c24b7c8b9ccefdIgor Murashkin protected: 169e3a9f964d7ebb6f269e6df2ba9c24b7c8b9ccefdIgor Murashkin Camera3OutputStream(int id, camera3_stream_type_t type, 1703d82c0d9ed2b3e956ad699a9ca2c8a70c9d24678Eino-Ville Talvala uint32_t width, uint32_t height, int format, 171125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He android_dataspace dataSpace, camera3_stream_rotation_t rotation, 172125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He int setId = CAMERA3_STREAM_SET_ID_INVALID); 173e3a9f964d7ebb6f269e6df2ba9c24b7c8b9ccefdIgor Murashkin 174124ccf4b5023a40c57b49981123e6c9b61408a5dZhijun He /** 175124ccf4b5023a40c57b49981123e6c9b61408a5dZhijun He * Note that we release the lock briefly in this function 176124ccf4b5023a40c57b49981123e6c9b61408a5dZhijun He */ 177e3a9f964d7ebb6f269e6df2ba9c24b7c8b9ccefdIgor Murashkin virtual status_t returnBufferCheckedLocked( 178e3a9f964d7ebb6f269e6df2ba9c24b7c8b9ccefdIgor Murashkin const camera3_stream_buffer &buffer, 179e3a9f964d7ebb6f269e6df2ba9c24b7c8b9ccefdIgor Murashkin nsecs_t timestamp, 180e3a9f964d7ebb6f269e6df2ba9c24b7c8b9ccefdIgor Murashkin bool output, 181e3a9f964d7ebb6f269e6df2ba9c24b7c8b9ccefdIgor Murashkin /*out*/ 182e3a9f964d7ebb6f269e6df2ba9c24b7c8b9ccefdIgor Murashkin sp<Fence> *releaseFenceOut); 183e3a9f964d7ebb6f269e6df2ba9c24b7c8b9ccefdIgor Murashkin 1840a21051b91c2e07e49eb6fa568c505aee967ab9dZhijun He virtual status_t disconnectLocked(); 1850a21051b91c2e07e49eb6fa568c505aee967ab9dZhijun He 186727d172137b4f32681c098de8e2623c0b65a6406Eino-Ville Talvala sp<Surface> mConsumer; 1875d677d1f0879d5101e38df480a38228a64d63959Zhijun He 188e3a9f964d7ebb6f269e6df2ba9c24b7c8b9ccefdIgor Murashkin private: 189f0645c19a8c8433766f4cb6edff7fca5db8017bfZhijun He 190f0645c19a8c8433766f4cb6edff7fca5db8017bfZhijun He static const nsecs_t kDequeueBufferTimeout = 1000000000; // 1 sec 191f0645c19a8c8433766f4cb6edff7fca5db8017bfZhijun He 192fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala int mTransform; 193fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 194e3a9f964d7ebb6f269e6df2ba9c24b7c8b9ccefdIgor Murashkin virtual status_t setTransformLocked(int transform); 195fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 196e0711f2651121754a10c784e3b149024d17fa4d5Ruchit Sharma bool mTraceFirstBuffer; 197e0711f2651121754a10c784e3b149024d17fa4d5Ruchit Sharma 198727d172137b4f32681c098de8e2623c0b65a6406Eino-Ville Talvala // Name of Surface consumer 199727d172137b4f32681c098de8e2623c0b65a6406Eino-Ville Talvala String8 mConsumerName; 200727d172137b4f32681c098de8e2623c0b65a6406Eino-Ville Talvala 201c28dcccb9bc0a94950a7475f9bd8a6a38be34419Shuzhen Wang // Whether consumer assumes MONOTONIC timestamp 202c28dcccb9bc0a94950a7475f9bd8a6a38be34419Shuzhen Wang bool mUseMonoTimestamp; 20313a69633108f40f56aa47f1bcbb406cd5173c245Shuzhen Wang 204fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala /** 205125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He * GraphicBuffer manager this stream is registered to. Used to replace the buffer 206125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He * allocation/deallocation role of BufferQueue. 207125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He */ 208125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He sp<Camera3BufferManager> mBufferManager; 209125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He 210125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He /** 211125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He * Buffer released listener, used to notify the buffer manager that a buffer is released 212125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He * from consumer side. 213125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He */ 214125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He sp<BufferReleasedListener> mBufferReleasedListener; 215125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He 216125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He /** 217125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He * Flag indicating if the buffer manager is used to allocate the stream buffers 218125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He */ 219125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He bool mUseBufferManager; 220c28dcccb9bc0a94950a7475f9bd8a6a38be34419Shuzhen Wang 221c28dcccb9bc0a94950a7475f9bd8a6a38be34419Shuzhen Wang /** 222c28dcccb9bc0a94950a7475f9bd8a6a38be34419Shuzhen Wang * Timestamp offset for video and hardware composer consumed streams 223c28dcccb9bc0a94950a7475f9bd8a6a38be34419Shuzhen Wang */ 224c28dcccb9bc0a94950a7475f9bd8a6a38be34419Shuzhen Wang nsecs_t mTimestampOffset; 225c28dcccb9bc0a94950a7475f9bd8a6a38be34419Shuzhen Wang 226125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He /** 2275d677d1f0879d5101e38df480a38228a64d63959Zhijun He * Consumer end point usage flag set by the constructor for the deferred 2285d677d1f0879d5101e38df480a38228a64d63959Zhijun He * consumer case. 2295d677d1f0879d5101e38df480a38228a64d63959Zhijun He */ 2305d677d1f0879d5101e38df480a38228a64d63959Zhijun He uint32_t mConsumerUsage; 2315d677d1f0879d5101e38df480a38228a64d63959Zhijun He 2325d677d1f0879d5101e38df480a38228a64d63959Zhijun He /** 233fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala * Internal Camera3Stream interface 234fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala */ 235fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala virtual status_t getBufferLocked(camera3_stream_buffer *buffer); 236fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala virtual status_t returnBufferLocked( 237fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala const camera3_stream_buffer &buffer, 238fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala nsecs_t timestamp); 239fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 240fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala virtual status_t configureQueueLocked(); 241b2f5b19e5b6e1408a259add23dba91037756a943Eino-Ville Talvala 2424d44cad22ea925a651463f2d51d6586c14d4b787Eino-Ville Talvala virtual status_t getEndpointUsage(uint32_t *usage) const; 243b2f5b19e5b6e1408a259add23dba91037756a943Eino-Ville Talvala 244fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala}; // class Camera3OutputStream 245fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 246fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala} // namespace camera3 247fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 248fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala} // namespace android 249fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 250fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala#endif 251