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