1f62ea8018813951e8f6a182880cadb3217e4ce37Pawin Vongmasa/*
2f62ea8018813951e8f6a182880cadb3217e4ce37Pawin Vongmasa * Copyright 2016, The Android Open Source Project
3f62ea8018813951e8f6a182880cadb3217e4ce37Pawin Vongmasa *
4f62ea8018813951e8f6a182880cadb3217e4ce37Pawin Vongmasa * Licensed under the Apache License, Version 2.0 (the "License");
5f62ea8018813951e8f6a182880cadb3217e4ce37Pawin Vongmasa * you may not use this file except in compliance with the License.
6f62ea8018813951e8f6a182880cadb3217e4ce37Pawin Vongmasa * You may obtain a copy of the License at
7f62ea8018813951e8f6a182880cadb3217e4ce37Pawin Vongmasa *
8f62ea8018813951e8f6a182880cadb3217e4ce37Pawin Vongmasa *      http://www.apache.org/licenses/LICENSE-2.0
9f62ea8018813951e8f6a182880cadb3217e4ce37Pawin Vongmasa *
10f62ea8018813951e8f6a182880cadb3217e4ce37Pawin Vongmasa * Unless required by applicable law or agreed to in writing, software
11f62ea8018813951e8f6a182880cadb3217e4ce37Pawin Vongmasa * distributed under the License is distributed on an "AS IS" BASIS,
12f62ea8018813951e8f6a182880cadb3217e4ce37Pawin Vongmasa * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f62ea8018813951e8f6a182880cadb3217e4ce37Pawin Vongmasa * See the License for the specific language governing permissions and
14f62ea8018813951e8f6a182880cadb3217e4ce37Pawin Vongmasa * limitations under the License.
15f62ea8018813951e8f6a182880cadb3217e4ce37Pawin Vongmasa */
16f62ea8018813951e8f6a182880cadb3217e4ce37Pawin Vongmasa
17ac7d4125516299b8a3e6f2b25822a692bdd96311Pawin Vongmasa#include <media/omx/1.0/WGraphicBufferSource.h>
18ac7d4125516299b8a3e6f2b25822a692bdd96311Pawin Vongmasa#include <media/omx/1.0/WOmxNode.h>
19ac7d4125516299b8a3e6f2b25822a692bdd96311Pawin Vongmasa#include <media/omx/1.0/Conversion.h>
20517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa
21517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasanamespace android {
22517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasanamespace hardware {
23517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasanamespace media {
24517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasanamespace omx {
25517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasanamespace V1_0 {
26eeac97b18ca5c939bf2ac59334d36d54f705af3dPawin Vongmasanamespace utils {
27517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa
28517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa// LWGraphicBufferSource
29517b0e090680e378f056677201426ed9dc325c65Pawin VongmasaLWGraphicBufferSource::LWGraphicBufferSource(
30517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa        sp<TGraphicBufferSource> const& base) : mBase(base) {
31517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa}
32517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa
33d095e65c8c125c555046c60539a0f7abf0ccf271Robert ShihBnStatus LWGraphicBufferSource::configure(
34517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa        const sp<IOMXNode>& omxNode, int32_t dataSpace) {
35ac7d4125516299b8a3e6f2b25822a692bdd96311Pawin Vongmasa    sp<IOmxNode> hOmxNode = omxNode->getHalInterface();
36517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa    return toBinderStatus(mBase->configure(
37ac7d4125516299b8a3e6f2b25822a692bdd96311Pawin Vongmasa            hOmxNode == nullptr ? new TWOmxNode(omxNode) : hOmxNode,
38ac7d4125516299b8a3e6f2b25822a692bdd96311Pawin Vongmasa            toHardwareDataspace(dataSpace)));
39517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa}
40517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa
41d095e65c8c125c555046c60539a0f7abf0ccf271Robert ShihBnStatus LWGraphicBufferSource::setSuspend(
42764d945bfdb9dec60f2b482fbf6c5e83824ed950Hangyu Kuang        bool suspend, int64_t timeUs) {
43764d945bfdb9dec60f2b482fbf6c5e83824ed950Hangyu Kuang    return toBinderStatus(mBase->setSuspend(suspend, timeUs));
44517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa}
45517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa
46d095e65c8c125c555046c60539a0f7abf0ccf271Robert ShihBnStatus LWGraphicBufferSource::setRepeatPreviousFrameDelayUs(
47517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa        int64_t repeatAfterUs) {
48517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa    return toBinderStatus(mBase->setRepeatPreviousFrameDelayUs(repeatAfterUs));
49517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa}
50517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa
51d095e65c8c125c555046c60539a0f7abf0ccf271Robert ShihBnStatus LWGraphicBufferSource::setMaxFps(float maxFps) {
52517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa    return toBinderStatus(mBase->setMaxFps(maxFps));
53517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa}
54517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa
55d095e65c8c125c555046c60539a0f7abf0ccf271Robert ShihBnStatus LWGraphicBufferSource::setTimeLapseConfig(
5622dc508717c7767927064ec7c152def99e54adcbPawin Vongmasa        double fps, double captureFps) {
5722dc508717c7767927064ec7c152def99e54adcbPawin Vongmasa    return toBinderStatus(mBase->setTimeLapseConfig(fps, captureFps));
58517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa}
59517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa
60d095e65c8c125c555046c60539a0f7abf0ccf271Robert ShihBnStatus LWGraphicBufferSource::setStartTimeUs(
61517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa        int64_t startTimeUs) {
62517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa    return toBinderStatus(mBase->setStartTimeUs(startTimeUs));
63517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa}
64517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa
65d095e65c8c125c555046c60539a0f7abf0ccf271Robert ShihBnStatus LWGraphicBufferSource::setStopTimeUs(
66764d945bfdb9dec60f2b482fbf6c5e83824ed950Hangyu Kuang        int64_t stopTimeUs) {
67764d945bfdb9dec60f2b482fbf6c5e83824ed950Hangyu Kuang    return toBinderStatus(mBase->setStopTimeUs(stopTimeUs));
68764d945bfdb9dec60f2b482fbf6c5e83824ed950Hangyu Kuang}
69764d945bfdb9dec60f2b482fbf6c5e83824ed950Hangyu Kuang
70f72cefddf378909f360998852e41f49042711299Hangyu KuangBnStatus LWGraphicBufferSource::getStopTimeOffsetUs(
71f72cefddf378909f360998852e41f49042711299Hangyu Kuang        int64_t *stopTimeOffsetUs) {
72f72cefddf378909f360998852e41f49042711299Hangyu Kuang    return toBinderStatus(mBase->getStopTimeOffsetUs(
73f72cefddf378909f360998852e41f49042711299Hangyu Kuang            [stopTimeOffsetUs](auto, auto offsetUs) {
74f72cefddf378909f360998852e41f49042711299Hangyu Kuang                *stopTimeOffsetUs = offsetUs;
75f72cefddf378909f360998852e41f49042711299Hangyu Kuang            }));
76f72cefddf378909f360998852e41f49042711299Hangyu Kuang}
77f72cefddf378909f360998852e41f49042711299Hangyu Kuang
78d095e65c8c125c555046c60539a0f7abf0ccf271Robert ShihBnStatus LWGraphicBufferSource::setColorAspects(
79517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa        int32_t aspects) {
80517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa    return toBinderStatus(mBase->setColorAspects(
81517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa            toHardwareColorAspects(aspects)));
82517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa}
83517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa
84d095e65c8c125c555046c60539a0f7abf0ccf271Robert ShihBnStatus LWGraphicBufferSource::setTimeOffsetUs(
85517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa        int64_t timeOffsetsUs) {
86517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa    return toBinderStatus(mBase->setTimeOffsetUs(timeOffsetsUs));
87517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa}
88517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa
89d095e65c8c125c555046c60539a0f7abf0ccf271Robert ShihBnStatus LWGraphicBufferSource::signalEndOfInputStream() {
90517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa    return toBinderStatus(mBase->signalEndOfInputStream());
91517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa}
92517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa
93eeac97b18ca5c939bf2ac59334d36d54f705af3dPawin Vongmasa}  // namespace utils
94517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa}  // namespace V1_0
95517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa}  // namespace omx
96517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa}  // namespace media
97517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa}  // namespace hardware
98517b0e090680e378f056677201426ed9dc325c65Pawin Vongmasa}  // namespace android
99