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