1/* 2 * Copyright 2016, The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17#ifndef ANDROID_HARDWARE_MEDIA_OMX_V1_0_WGRAPHICBUFFERPRODUCER_H 18#define ANDROID_HARDWARE_MEDIA_OMX_V1_0_WGRAPHICBUFFERPRODUCER_H 19 20#include <hidl/MQDescriptor.h> 21#include <hidl/Status.h> 22 23#include <binder/Binder.h> 24#include <gui/IGraphicBufferProducer.h> 25#include <gui/IProducerListener.h> 26 27#include <android/hardware/graphics/bufferqueue/1.0/IGraphicBufferProducer.h> 28 29namespace android { 30namespace hardware { 31namespace media { 32namespace omx { 33namespace V1_0 { 34namespace implementation { 35 36using ::android::hardware::graphics::common::V1_0::PixelFormat; 37using ::android::hardware::media::V1_0::AnwBuffer; 38using ::android::hidl::base::V1_0::IBase; 39using ::android::hardware::hidl_array; 40using ::android::hardware::hidl_memory; 41using ::android::hardware::hidl_string; 42using ::android::hardware::hidl_vec; 43using ::android::hardware::Return; 44using ::android::hardware::Void; 45using ::android::sp; 46 47typedef ::android::hardware::graphics::bufferqueue::V1_0:: 48 IGraphicBufferProducer HGraphicBufferProducer; 49typedef ::android::hardware::graphics::bufferqueue::V1_0:: 50 IProducerListener HProducerListener; 51 52typedef ::android::IGraphicBufferProducer BGraphicBufferProducer; 53typedef ::android::IProducerListener BProducerListener; 54using ::android::BnGraphicBufferProducer; 55 56struct TWGraphicBufferProducer : public HGraphicBufferProducer { 57 sp<BGraphicBufferProducer> mBase; 58 TWGraphicBufferProducer(sp<BGraphicBufferProducer> const& base); 59 Return<void> requestBuffer(int32_t slot, requestBuffer_cb _hidl_cb) 60 override; 61 Return<int32_t> setMaxDequeuedBufferCount(int32_t maxDequeuedBuffers) 62 override; 63 Return<int32_t> setAsyncMode(bool async) override; 64 Return<void> dequeueBuffer( 65 uint32_t width, uint32_t height, PixelFormat format, uint32_t usage, 66 bool getFrameTimestamps, dequeueBuffer_cb _hidl_cb) override; 67 Return<int32_t> detachBuffer(int32_t slot) override; 68 Return<void> detachNextBuffer(detachNextBuffer_cb _hidl_cb) override; 69 Return<void> attachBuffer(const AnwBuffer& buffer, attachBuffer_cb _hidl_cb) 70 override; 71 Return<void> queueBuffer( 72 int32_t slot, const HGraphicBufferProducer::QueueBufferInput& input, 73 queueBuffer_cb _hidl_cb) override; 74 Return<int32_t> cancelBuffer(int32_t slot, const hidl_handle& fence) 75 override; 76 Return<void> query(int32_t what, query_cb _hidl_cb) override; 77 Return<void> connect(const sp<HProducerListener>& listener, 78 int32_t api, bool producerControlledByApp, 79 connect_cb _hidl_cb) override; 80 Return<int32_t> disconnect( 81 int32_t api, 82 HGraphicBufferProducer::DisconnectMode mode) override; 83 Return<int32_t> setSidebandStream(const hidl_handle& stream) override; 84 Return<void> allocateBuffers( 85 uint32_t width, uint32_t height, 86 PixelFormat format, uint32_t usage) override; 87 Return<int32_t> allowAllocation(bool allow) override; 88 Return<int32_t> setGenerationNumber(uint32_t generationNumber) override; 89 Return<void> getConsumerName(getConsumerName_cb _hidl_cb) override; 90 Return<int32_t> setSharedBufferMode(bool sharedBufferMode) override; 91 Return<int32_t> setAutoRefresh(bool autoRefresh) override; 92 Return<int32_t> setDequeueTimeout(int64_t timeoutNs) override; 93 Return<void> getLastQueuedBuffer(getLastQueuedBuffer_cb _hidl_cb) override; 94 Return<void> getFrameTimestamps(getFrameTimestamps_cb _hidl_cb) override; 95 Return<void> getUniqueId(getUniqueId_cb _hidl_cb) override; 96}; 97 98} // namespace implementation 99} // namespace V1_0 100} // namespace omx 101} // namespace media 102} // namespace hardware 103} // namespace android 104 105#endif // ANDROID_HARDWARE_MEDIA_OMX_V1_0_WOMXBUFFERPRODUCER_H 106