Camera3OutputStream.h revision 2fba584544e8687b526e3388bf7160b696da1dba
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> 21fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala#include <gui/Surface.h> 22fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 23fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala#include "Camera3Stream.h" 242fba584544e8687b526e3388bf7160b696da1dbaIgor Murashkin#include "Camera3OutputStreamInterface.h" 25fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 26fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvalanamespace android { 27fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 28fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvalanamespace camera3 { 29fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 30fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala/** 31fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala * A class for managing a single stream of output data from the camera device. 32fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala */ 332fba584544e8687b526e3388bf7160b696da1dbaIgor Murashkinclass Camera3OutputStream : 342fba584544e8687b526e3388bf7160b696da1dbaIgor Murashkin public Camera3Stream, 352fba584544e8687b526e3388bf7160b696da1dbaIgor Murashkin public Camera3OutputStreamInterface { 36fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala public: 37fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala /** 38fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala * Set up a stream for formats that have 2 dimensions, such as RAW and YUV. 39fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala */ 40fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala Camera3OutputStream(int id, sp<ANativeWindow> consumer, 41fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala uint32_t width, uint32_t height, int format); 42fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 43fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala /** 44fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala * Set up a stream for formats that have a variable buffer size for the same 45fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala * dimensions, such as compressed JPEG. 46fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala */ 47fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala Camera3OutputStream(int id, sp<ANativeWindow> consumer, 48fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala uint32_t width, uint32_t height, size_t maxSize, int format); 49fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 50fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala virtual ~Camera3OutputStream(); 51fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 52fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala /** 53fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala * Camera3Stream interface 54fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala */ 55fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 56fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala virtual status_t waitUntilIdle(nsecs_t timeout); 57fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala virtual void dump(int fd, const Vector<String16> &args) const; 58fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 59fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala /** 60fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala * Set the transform on the output stream; one of the 61fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala * HAL_TRANSFORM_* / NATIVE_WINDOW_TRANSFORM_* constants. 62fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala */ 63fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala status_t setTransform(int transform); 64fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 65fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala private: 66fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala sp<ANativeWindow> mConsumer; 67fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala int mTransform; 68fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala size_t mTotalBufferCount; 69fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala size_t mDequeuedBufferCount; 70fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala Condition mBufferReturnedSignal; 71fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala uint32_t mFrameCount; 72fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala nsecs_t mLastTimestamp; 73fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 74fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala // The merged release fence for all returned buffers 75fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala sp<Fence> mCombinedFence; 76fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 77fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala status_t setTransformLocked(int transform); 78fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 79fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala /** 80fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala * Internal Camera3Stream interface 81fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala */ 82fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala virtual status_t getBufferLocked(camera3_stream_buffer *buffer); 83fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala virtual status_t returnBufferLocked( 84fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala const camera3_stream_buffer &buffer, 85fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala nsecs_t timestamp); 86fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala virtual bool hasOutstandingBuffersLocked() const; 87fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 88fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala virtual status_t configureQueueLocked(); 89fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala virtual size_t getBufferCountLocked(); 90fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala virtual status_t disconnectLocked(); 91fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 92fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala}; // class Camera3OutputStream 93fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 94fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala} // namespace camera3 95fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 96fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala} // namespace android 97fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala 98fd58f1a10a749ca72fec1012920d6e94a664cd70Eino-Ville Talvala#endif 99