1a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai/*
2a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai * Copyright 2018 The Android Open Source Project
3a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai *
4a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai * Licensed under the Apache License, Version 2.0 (the "License");
5a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai * you may not use this file except in compliance with the License.
6a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai * You may obtain a copy of the License at
7a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai *
8a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai *      http://www.apache.org/licenses/LICENSE-2.0
9a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai *
10a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai * Unless required by applicable law or agreed to in writing, software
11a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai * distributed under the License is distributed on an "AS IS" BASIS,
12a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai * See the License for the specific language governing permissions and
14a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai * limitations under the License.
15a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai */
16a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai
17a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai#include <gui/BufferHubConsumer.h>
18a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai
19a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cainamespace android {
20a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai
21a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Caiusing namespace dvr;
22a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai
23a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai/* static */
24a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Caisp<BufferHubConsumer> BufferHubConsumer::Create(const std::shared_ptr<ConsumerQueue>& queue) {
25a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    sp<BufferHubConsumer> consumer = new BufferHubConsumer;
26a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    consumer->mQueue = queue;
27a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    return consumer;
28a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai}
29a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai
30a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai/* static */ sp<BufferHubConsumer> BufferHubConsumer::Create(ConsumerQueueParcelable parcelable) {
31a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    if (!parcelable.IsValid()) {
32a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai        ALOGE("BufferHubConsumer::Create: Invalid consumer parcelable.");
33a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai        return nullptr;
34a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    }
35a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai
36a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    sp<BufferHubConsumer> consumer = new BufferHubConsumer;
37a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    consumer->mQueue = ConsumerQueue::Import(parcelable.TakeChannelHandle());
38a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    return consumer;
39a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai}
40a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai
41a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Caistatus_t BufferHubConsumer::acquireBuffer(BufferItem* /*buffer*/, nsecs_t /*presentWhen*/,
42a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai                                          uint64_t /*maxFrameNumber*/) {
43a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    ALOGE("BufferHubConsumer::acquireBuffer: not implemented.");
44a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    return INVALID_OPERATION;
45a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai}
46a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai
47a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Caistatus_t BufferHubConsumer::detachBuffer(int /*slot*/) {
48a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    ALOGE("BufferHubConsumer::detachBuffer: not implemented.");
49a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    return INVALID_OPERATION;
50a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai}
51a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai
52a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Caistatus_t BufferHubConsumer::attachBuffer(int* /*outSlot*/, const sp<GraphicBuffer>& /*buffer*/) {
53a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    ALOGE("BufferHubConsumer::attachBuffer: not implemented.");
54a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    return INVALID_OPERATION;
55a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai}
56a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai
57a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Caistatus_t BufferHubConsumer::releaseBuffer(int /*buf*/, uint64_t /*frameNumber*/,
58a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai                                          EGLDisplay /*display*/, EGLSyncKHR /*fence*/,
59a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai                                          const sp<Fence>& /*releaseFence*/) {
60a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    ALOGE("BufferHubConsumer::releaseBuffer: not implemented.");
61a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    return INVALID_OPERATION;
62a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai}
63a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai
64a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Caistatus_t BufferHubConsumer::consumerConnect(const sp<IConsumerListener>& /*consumer*/,
65a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai                                            bool /*controlledByApp*/) {
66a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    ALOGE("BufferHubConsumer::consumerConnect: not implemented.");
67a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai
68a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    // TODO(b/73267953): Make BufferHub honor producer and consumer connection. Returns NO_ERROR to
69a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    // make IGraphicBufferConsumer_test happy.
70a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    return NO_ERROR;
71a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai}
72a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai
73a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Caistatus_t BufferHubConsumer::consumerDisconnect() {
74a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    ALOGE("BufferHubConsumer::consumerDisconnect: not implemented.");
75a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai
76a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    // TODO(b/73267953): Make BufferHub honor producer and consumer connection. Returns NO_ERROR to
77a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    // make IGraphicBufferConsumer_test happy.
78a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    return NO_ERROR;
79a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai}
80a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai
81a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Caistatus_t BufferHubConsumer::getReleasedBuffers(uint64_t* /*slotMask*/) {
82a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    ALOGE("BufferHubConsumer::getReleasedBuffers: not implemented.");
83a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    return INVALID_OPERATION;
84a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai}
85a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai
86a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Caistatus_t BufferHubConsumer::setDefaultBufferSize(uint32_t /*w*/, uint32_t /*h*/) {
87a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    ALOGE("BufferHubConsumer::setDefaultBufferSize: not implemented.");
88a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    return INVALID_OPERATION;
89a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai}
90a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai
91a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Caistatus_t BufferHubConsumer::setMaxBufferCount(int /*bufferCount*/) {
92a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    ALOGE("BufferHubConsumer::setMaxBufferCount: not implemented.");
93a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    return INVALID_OPERATION;
94a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai}
95a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai
96a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Caistatus_t BufferHubConsumer::setMaxAcquiredBufferCount(int /*maxAcquiredBuffers*/) {
97a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    ALOGE("BufferHubConsumer::setMaxAcquiredBufferCount: not implemented.");
98a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai
99a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    // TODO(b/73267953): Make BufferHub honor producer and consumer connection. Returns NO_ERROR to
100a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    // make IGraphicBufferConsumer_test happy.
101a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    return NO_ERROR;
102a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai}
103a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai
104a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Caistatus_t BufferHubConsumer::setConsumerName(const String8& /*name*/) {
105a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    ALOGE("BufferHubConsumer::setConsumerName: not implemented.");
106a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    return INVALID_OPERATION;
107a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai}
108a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai
109a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Caistatus_t BufferHubConsumer::setDefaultBufferFormat(PixelFormat /*defaultFormat*/) {
110a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    ALOGE("BufferHubConsumer::setDefaultBufferFormat: not implemented.");
111a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    return INVALID_OPERATION;
112a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai}
113a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai
114a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Caistatus_t BufferHubConsumer::setDefaultBufferDataSpace(android_dataspace /*defaultDataSpace*/) {
115a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    ALOGE("BufferHubConsumer::setDefaultBufferDataSpace: not implemented.");
116a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    return INVALID_OPERATION;
117a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai}
118a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai
119a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Caistatus_t BufferHubConsumer::setConsumerUsageBits(uint64_t /*usage*/) {
120a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    ALOGE("BufferHubConsumer::setConsumerUsageBits: not implemented.");
121a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    return INVALID_OPERATION;
122a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai}
123a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai
124a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Caistatus_t BufferHubConsumer::setConsumerIsProtected(bool /*isProtected*/) {
125a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    ALOGE("BufferHubConsumer::setConsumerIsProtected: not implemented.");
126a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    return INVALID_OPERATION;
127a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai}
128a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai
129a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Caistatus_t BufferHubConsumer::setTransformHint(uint32_t /*hint*/) {
130a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    ALOGE("BufferHubConsumer::setTransformHint: not implemented.");
131a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    return INVALID_OPERATION;
132a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai}
133a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai
134a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Caistatus_t BufferHubConsumer::getSidebandStream(sp<NativeHandle>* /*outStream*/) const {
135a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    ALOGE("BufferHubConsumer::getSidebandStream: not implemented.");
136a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    return INVALID_OPERATION;
137a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai}
138a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai
139a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Caistatus_t BufferHubConsumer::getOccupancyHistory(
140a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai        bool /*forceFlush*/, std::vector<OccupancyTracker::Segment>* /*outHistory*/) {
141a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    ALOGE("BufferHubConsumer::getOccupancyHistory: not implemented.");
142a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    return INVALID_OPERATION;
143a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai}
144a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai
145a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Caistatus_t BufferHubConsumer::discardFreeBuffers() {
146a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    ALOGE("BufferHubConsumer::discardFreeBuffers: not implemented.");
147a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    return INVALID_OPERATION;
148a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai}
149a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai
150a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Caistatus_t BufferHubConsumer::dumpState(const String8& /*prefix*/, String8* /*outResult*/) const {
151a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    ALOGE("BufferHubConsumer::dumpState: not implemented.");
152a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    return INVALID_OPERATION;
153a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai}
154a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai
155a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' CaiIBinder* BufferHubConsumer::onAsBinder() {
156a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    ALOGE("BufferHubConsumer::onAsBinder: BufferHubConsumer should never be used as an Binder "
157a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai          "object.");
158a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai    return nullptr;
159a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai}
160a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai
161a2a27b2679bcfd204090a89234e9751eafe23231Jiwen 'Steve' Cai} // namespace android
162