116a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala/* 216a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala * Copyright (C) 2014 The Android Open Source Project 316a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala * 416a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala * Licensed under the Apache License, Version 2.0 (the "License"); 516a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala * you may not use this file except in compliance with the License. 616a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala * You may obtain a copy of the License at 716a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala * 816a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala * http://www.apache.org/licenses/LICENSE-2.0 916a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala * 1016a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala * Unless required by applicable law or agreed to in writing, software 1116a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala * distributed under the License is distributed on an "AS IS" BASIS, 1216a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1316a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala * See the License for the specific language governing permissions and 1416a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala * limitations under the License. 1516a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala */ 1616a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 1716a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala#ifndef ANDROID_SERVERS_CAMERA3_DUMMY_STREAM_H 1816a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala#define ANDROID_SERVERS_CAMERA3_DUMMY_STREAM_H 1916a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 2016a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala#include <utils/RefBase.h> 2116a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala#include <gui/Surface.h> 2216a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 2316a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala#include "Camera3Stream.h" 2416a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala#include "Camera3IOStreamBase.h" 2516a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala#include "Camera3OutputStreamInterface.h" 2616a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 2716a2ada049447c156648812b94d25be07869f284Eino-Ville Talvalanamespace android { 2816a2ada049447c156648812b94d25be07869f284Eino-Ville Talvalanamespace camera3 { 2916a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 3016a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala/** 3116a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala * A dummy output stream class, to be used as a placeholder when no valid 3216a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala * streams are configured by the client. 3316a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala * This is necessary because camera HAL v3.2 or older disallow configuring 3416a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala * 0 output streams, while the public camera2 API allows for it. 3516a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala */ 3616a2ada049447c156648812b94d25be07869f284Eino-Ville Talvalaclass Camera3DummyStream : 3716a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala public Camera3IOStreamBase, 3816a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala public Camera3OutputStreamInterface { 3916a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 4016a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala public: 4116a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala /** 4216a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala * Set up a dummy stream; doesn't actually connect to anything, and uses 4316a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala * a default dummy format and size. 4416a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala */ 4516a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala Camera3DummyStream(int id); 4616a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 4716a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala virtual ~Camera3DummyStream(); 4816a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 4916a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala /** 5016a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala * Camera3Stream interface 5116a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala */ 5216a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 5316a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala virtual void dump(int fd, const Vector<String16> &args) const; 5416a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 5516a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala status_t setTransform(int transform); 5616a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 5716a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala protected: 5816a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 5916a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala /** 6016a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala * Note that we release the lock briefly in this function 6116a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala */ 6216a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala virtual status_t returnBufferCheckedLocked( 6316a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala const camera3_stream_buffer &buffer, 6416a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala nsecs_t timestamp, 6516a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala bool output, 6616a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala /*out*/ 6716a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala sp<Fence> *releaseFenceOut); 6816a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 6916a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala virtual status_t disconnectLocked(); 7016a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 7116a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala private: 7216a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 7316a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala // Default dummy parameters; 320x240 is a required size for all devices, 7416a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala // otherwise act like a SurfaceView would. 7516a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala static const int DUMMY_WIDTH = 320; 7616a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala static const int DUMMY_HEIGHT = 240; 7716a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala static const int DUMMY_FORMAT = HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED; 7816a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala static const uint32_t DUMMY_USAGE = GRALLOC_USAGE_HW_COMPOSER; 7916a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 8016a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala /** 8116a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala * Internal Camera3Stream interface 8216a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala */ 8316a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala virtual status_t getBufferLocked(camera3_stream_buffer *buffer); 8416a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala virtual status_t returnBufferLocked( 8516a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala const camera3_stream_buffer &buffer, 8616a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala nsecs_t timestamp); 8716a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 8816a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala virtual status_t configureQueueLocked(); 8916a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 9016a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala virtual status_t getEndpointUsage(uint32_t *usage); 9116a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 9216a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala}; // class Camera3DummyStream 9316a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 9416a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala} // namespace camera3 9516a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 9616a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala} // namespace android 9716a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 9816a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala#endif 99