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