116a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala/* 2c28189a64a6ef65aecccb6e3bb980f1afc189a1cShuzhen Wang * Copyright (C) 2014-2018 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#define LOG_TAG "Camera3-DummyStream" 1816a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala#define ATRACE_TAG ATRACE_TAG_CAMERA 1916a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala//#define LOG_NDEBUG 0 2016a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 2116a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala#include <utils/Log.h> 2216a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala#include <utils/Trace.h> 2316a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala#include "Camera3DummyStream.h" 2416a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 2516a2ada049447c156648812b94d25be07869f284Eino-Ville Talvalanamespace android { 2616a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 2716a2ada049447c156648812b94d25be07869f284Eino-Ville Talvalanamespace camera3 { 2816a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 29c28189a64a6ef65aecccb6e3bb980f1afc189a1cShuzhen Wangconst String8 Camera3DummyStream::DUMMY_ID; 30c28189a64a6ef65aecccb6e3bb980f1afc189a1cShuzhen Wang 3116a2ada049447c156648812b94d25be07869f284Eino-Ville TalvalaCamera3DummyStream::Camera3DummyStream(int id) : 3216a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala Camera3IOStreamBase(id, CAMERA3_STREAM_OUTPUT, DUMMY_WIDTH, DUMMY_HEIGHT, 33c28189a64a6ef65aecccb6e3bb980f1afc189a1cShuzhen Wang /*maxSize*/0, DUMMY_FORMAT, DUMMY_DATASPACE, DUMMY_ROTATION, 34c28189a64a6ef65aecccb6e3bb980f1afc189a1cShuzhen Wang DUMMY_ID) { 3516a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 3616a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala} 3716a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 3816a2ada049447c156648812b94d25be07869f284Eino-Ville TalvalaCamera3DummyStream::~Camera3DummyStream() { 3916a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 4016a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala} 4116a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 42bee0f0a5e7aa19aa7c59de03b508985b68bc6b5eShuzhen Wangstatus_t Camera3DummyStream::getBufferLocked(camera3_stream_buffer *, 43bee0f0a5e7aa19aa7c59de03b508985b68bc6b5eShuzhen Wang const std::vector<size_t>&) { 4416a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala ATRACE_CALL(); 45125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He ALOGE("%s: Stream %d: Dummy stream cannot produce buffers!", __FUNCTION__, mId); 4616a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala return INVALID_OPERATION; 4716a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala} 4816a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 4916a2ada049447c156648812b94d25be07869f284Eino-Ville Talvalastatus_t Camera3DummyStream::returnBufferLocked( 5002bf03287652923b5bb5316667b065423565d6b4Eino-Ville Talvala const camera3_stream_buffer &, 5102bf03287652923b5bb5316667b065423565d6b4Eino-Ville Talvala nsecs_t) { 5216a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala ATRACE_CALL(); 53125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He ALOGE("%s: Stream %d: Dummy stream cannot return buffers!", __FUNCTION__, mId); 5416a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala return INVALID_OPERATION; 5516a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala} 5616a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 5716a2ada049447c156648812b94d25be07869f284Eino-Ville Talvalastatus_t Camera3DummyStream::returnBufferCheckedLocked( 5802bf03287652923b5bb5316667b065423565d6b4Eino-Ville Talvala const camera3_stream_buffer &, 5902bf03287652923b5bb5316667b065423565d6b4Eino-Ville Talvala nsecs_t, 6002bf03287652923b5bb5316667b065423565d6b4Eino-Ville Talvala bool, 6116a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala /*out*/ 6202bf03287652923b5bb5316667b065423565d6b4Eino-Ville Talvala sp<Fence>*) { 6316a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala ATRACE_CALL(); 64125684aba1a11b7adbf5f9d607ee2bcc9449081cZhijun He ALOGE("%s: Stream %d: Dummy stream cannot return buffers!", __FUNCTION__, mId); 6516a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala return INVALID_OPERATION; 6616a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala} 6716a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 6816a2ada049447c156648812b94d25be07869f284Eino-Ville Talvalavoid Camera3DummyStream::dump(int fd, const Vector<String16> &args) const { 6916a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala (void) args; 7016a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala String8 lines; 7116a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala lines.appendFormat(" Stream[%d]: Dummy\n", mId); 7216a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala write(fd, lines.string(), lines.size()); 7316a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 7416a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala Camera3IOStreamBase::dump(fd, args); 7516a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala} 7616a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 7702bf03287652923b5bb5316667b065423565d6b4Eino-Ville Talvalastatus_t Camera3DummyStream::setTransform(int) { 7816a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala ATRACE_CALL(); 7916a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala // Do nothing 8016a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala return OK; 8116a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala} 8216a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 8377c1a3554275a51ac8eb9fbe86f476afc8983192Eino-Ville Talvalastatus_t Camera3DummyStream::detachBuffer(sp<GraphicBuffer>* buffer, int* fenceFd) { 8477c1a3554275a51ac8eb9fbe86f476afc8983192Eino-Ville Talvala (void) buffer; 8577c1a3554275a51ac8eb9fbe86f476afc8983192Eino-Ville Talvala (void) fenceFd; 8677c1a3554275a51ac8eb9fbe86f476afc8983192Eino-Ville Talvala // Do nothing 8777c1a3554275a51ac8eb9fbe86f476afc8983192Eino-Ville Talvala return OK; 8877c1a3554275a51ac8eb9fbe86f476afc8983192Eino-Ville Talvala} 8977c1a3554275a51ac8eb9fbe86f476afc8983192Eino-Ville Talvala 9016a2ada049447c156648812b94d25be07869f284Eino-Ville Talvalastatus_t Camera3DummyStream::configureQueueLocked() { 9116a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala // Do nothing 9216a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala return OK; 9316a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala} 9416a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 9516a2ada049447c156648812b94d25be07869f284Eino-Ville Talvalastatus_t Camera3DummyStream::disconnectLocked() { 9616a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala mState = (mState == STATE_IN_RECONFIG) ? STATE_IN_CONFIG 9716a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala : STATE_CONSTRUCTED; 9816a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala return OK; 9916a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala} 10016a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 101050f5dcf7d1903926b165ebdd2dd30f7a2e83c02Emilian Peevstatus_t Camera3DummyStream::getEndpointUsage(uint64_t *usage) const { 10216a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala *usage = DUMMY_USAGE; 10316a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala return OK; 10416a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala} 10516a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 10685a6455f269d79adf9bf48d757a4b1b3c81cf760Chien-Yu Chenbool Camera3DummyStream::isVideoStream() const { 10785a6455f269d79adf9bf48d757a4b1b3c81cf760Chien-Yu Chen return false; 10885a6455f269d79adf9bf48d757a4b1b3c81cf760Chien-Yu Chen} 10985a6455f269d79adf9bf48d757a4b1b3c81cf760Chien-Yu Chen 1100129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wangbool Camera3DummyStream::isConsumerConfigurationDeferred(size_t /*surface_id*/) const { 1115d677d1f0879d5101e38df480a38228a64d63959Zhijun He return false; 1125d677d1f0879d5101e38df480a38228a64d63959Zhijun He} 1135d677d1f0879d5101e38df480a38228a64d63959Zhijun He 114a936ac26464263367b7342a3501f3b6db2736888Chien-Yu Chenstatus_t Camera3DummyStream::dropBuffers(bool /*dropping*/) { 115a936ac26464263367b7342a3501f3b6db2736888Chien-Yu Chen return OK; 116a936ac26464263367b7342a3501f3b6db2736888Chien-Yu Chen} 117a936ac26464263367b7342a3501f3b6db2736888Chien-Yu Chen 1185c22c15ed8c593189ed9bb8fcbccace2ca63b82aShuzhen Wangconst String8& Camera3DummyStream::getPhysicalCameraId() const { 1195c22c15ed8c593189ed9bb8fcbccace2ca63b82aShuzhen Wang return DUMMY_ID; 1205c22c15ed8c593189ed9bb8fcbccace2ca63b82aShuzhen Wang} 1215c22c15ed8c593189ed9bb8fcbccace2ca63b82aShuzhen Wang 122758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wangstatus_t Camera3DummyStream::setConsumers(const std::vector<sp<Surface>>& /*consumers*/) { 123758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang ALOGE("%s: Stream %d: Dummy stream doesn't support set consumer surface!", 124758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang __FUNCTION__, mId); 1255d677d1f0879d5101e38df480a38228a64d63959Zhijun He return INVALID_OPERATION; 1265d677d1f0879d5101e38df480a38228a64d63959Zhijun He} 12740ead60d7163c2d5577099d49f11da7afa6124d1Emilian Peev 12840ead60d7163c2d5577099d49f11da7afa6124d1Emilian Peevstatus_t Camera3DummyStream::updateStream(const std::vector<sp<Surface>> &/*outputSurfaces*/, 12940ead60d7163c2d5577099d49f11da7afa6124d1Emilian Peev const std::vector<OutputStreamInfo> &/*outputInfo*/, 13040ead60d7163c2d5577099d49f11da7afa6124d1Emilian Peev const std::vector<size_t> &/*removedSurfaceIds*/, 13140ead60d7163c2d5577099d49f11da7afa6124d1Emilian Peev KeyedVector<sp<Surface>, size_t> * /*outputMap*/) { 13240ead60d7163c2d5577099d49f11da7afa6124d1Emilian Peev ALOGE("%s: this method is not supported!", __FUNCTION__); 13340ead60d7163c2d5577099d49f11da7afa6124d1Emilian Peev return INVALID_OPERATION; 13440ead60d7163c2d5577099d49f11da7afa6124d1Emilian Peev} 13540ead60d7163c2d5577099d49f11da7afa6124d1Emilian Peev 13616a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala}; // namespace camera3 13716a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala 13816a2ada049447c156648812b94d25be07869f284Eino-Ville Talvala}; // namespace android 139