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