1d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih/*
2d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih * Copyright 2017, The Android Open Source Project
3d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih *
4d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih * Licensed under the Apache License, Version 2.0 (the "License");
5d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih * you may not use this file except in compliance with the License.
6d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih * You may obtain a copy of the License at
7d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih *
8d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih *      http://www.apache.org/licenses/LICENSE-2.0
9d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih *
10d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih * Unless required by applicable law or agreed to in writing, software
11d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih * distributed under the License is distributed on an "AS IS" BASIS,
12d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih * See the License for the specific language governing permissions and
14d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih * limitations under the License.
15d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih */
16d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih
17d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih#ifndef BWGRAPHIC_BUFFER_SOURCE_H_
18d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih#define BWGRAPHIC_BUFFER_SOURCE_H_
19d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih
20d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih#include <binder/Binder.h>
21d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih#include <binder/Status.h>
22d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih#include <android/BnGraphicBufferSource.h>
23d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih#include <android/BnOMXBufferSource.h>
24d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih#include <IOMX.h>
25d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih
26d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih#include "GraphicBufferSource.h"
27d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih#include "IOmxNodeWrapper.h"
28d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih
29d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shihnamespace android {
30d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih
31d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shihusing ::android::binder::Status;
32d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shihusing ::android::BnGraphicBufferSource;
33d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shihusing ::android::GraphicBufferSource;
34d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shihusing ::android::IOMXNode;
35d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shihusing ::android::sp;
36d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih
37d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shihstruct BWGraphicBufferSource : public BnGraphicBufferSource {
38d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih    struct BWOMXBufferSource;
39d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih    struct BWOmxNodeWrapper;
40d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih
41d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih    sp<GraphicBufferSource> mBase;
42d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih    sp<IOMXBufferSource> mOMXBufferSource;
43d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih
44d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih    BWGraphicBufferSource(sp<GraphicBufferSource> const &base);
45d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih
46d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih    Status configure(
47d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih            const sp<IOMXNode>& omxNode, int32_t dataSpace) override;
48d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih    Status setSuspend(bool suspend, int64_t timeUs) override;
49d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih    Status setRepeatPreviousFrameDelayUs(
50d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih            int64_t repeatAfterUs) override;
51d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih    Status setMaxFps(float maxFps) override;
52d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih    Status setTimeLapseConfig(
5322dc508717c7767927064ec7c152def99e54adcbPawin Vongmasa            double fps, double captureFps) override;
54d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih    Status setStartTimeUs(int64_t startTimeUs) override;
55d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih    Status setStopTimeUs(int64_t stopTimeUs) override;
56d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih    Status setColorAspects(int32_t aspects) override;
57d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih    Status setTimeOffsetUs(int64_t timeOffsetsUs) override;
58d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih    Status signalEndOfInputStream() override;
59d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih};
60d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih
61d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih}  // namespace android
62d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih
63d095e65c8c125c555046c60539a0f7abf0ccf271Robert Shih#endif  // ANDROID_HARDWARE_MEDIA_OMX_V1_0_WGRAPHICBUFFERSOURCE_H
64