Camera3ZslStream.h revision 8be20f50711a94426f1394ec113672e41c1224e8
18be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala/* 28be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala * Copyright (C) 2013 The Android Open Source Project 38be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala * 48be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala * Licensed under the Apache License, Version 2.0 (the "License"); 58be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala * you may not use this file except in compliance with the License. 68be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala * You may obtain a copy of the License at 78be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala * 88be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala * http://www.apache.org/licenses/LICENSE-2.0 98be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala * 108be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala * Unless required by applicable law or agreed to in writing, software 118be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala * distributed under the License is distributed on an "AS IS" BASIS, 128be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala * See the License for the specific language governing permissions and 148be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala * limitations under the License. 158be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala */ 168be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala 178be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala#ifndef ANDROID_SERVERS_CAMERA3_ZSL_STREAM_H 188be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala#define ANDROID_SERVERS_CAMERA3_ZSL_STREAM_H 198be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala 208be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala#include <utils/RefBase.h> 218be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala#include <gui/Surface.h> 228be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala 238be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala#include "Camera3Stream.h" 248be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala 258be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvalanamespace android { 268be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala 278be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvalanamespace camera3 { 288be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala 298be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala/** 308be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala * A class for managing a single opaque ZSL stream to/from the camera device. 318be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala * This acts as a bidirectional stream at the HAL layer, caching and discarding 328be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala * most output buffers, and when directed, pushes a buffer back to the HAL for 338be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala * processing. 348be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala */ 358be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvalaclass Camera3ZslStream: public Camera3Stream { 368be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala public: 378be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala /** 388be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala * Set up a ZSL stream of a given resolution. Depth is the number of buffers 398be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala * cached within the stream that can be retrieved for input. 408be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala */ 418be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala Camera3ZslStream(int id, uint32_t width, uint32_t height, int depth); 428be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala 438be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala virtual status_t waitUntilIdle(nsecs_t timeout); 448be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala virtual void dump(int fd, const Vector<String16> &args) const; 458be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala 468be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala /** 478be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala * Get an input buffer matching a specific timestamp. If no buffer matching 488be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala * the timestamp is available, NO_MEMORY is returned. 498be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala */ 508be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala status_t getInputBuffer(camera3_stream_buffer *buffer, nsecs_t timestamp); 518be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala 528be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala /** 538be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala * Return input buffer from HAL. The buffer is then marked as unfilled, and 548be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala * returned to the output-side stream for refilling. 558be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala */ 568be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala status_t returnInputBuffer(const camera3_stream_buffer &buffer); 578be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala 588be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala private: 598be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala 608be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala int mDepth; 618be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala 628be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala /** 638be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala * Camera3Stream interface 648be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala */ 658be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala 668be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala // getBuffer/returnBuffer operate the output stream side of the ZslStream. 678be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala virtual status_t getBufferLocked(camera3_stream_buffer *buffer); 688be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala virtual status_t returnBufferLocked(const camera3_stream_buffer &buffer, 698be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala nsecs_t timestamp); 708be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala virtual bool hasOutstandingBuffersLocked() const; 718be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala virtual status_t disconnectLocked(); 728be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala 738be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala}; // class Camera3ZslStream 748be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala 758be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala}; // namespace camera3 768be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala 778be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala}; // namespace android 788be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala 798be20f50711a94426f1394ec113672e41c1224e8Eino-Ville Talvala#endif 80