17cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden/* 27cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden * Copyright (C) 2013 The Android Open Source Project 37cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden * 47cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden * Licensed under the Apache License, Version 2.0 (the "License"); 57cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden * you may not use this file except in compliance with the License. 67cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden * You may obtain a copy of the License at 77cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden * 87cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden * http://www.apache.org/licenses/LICENSE-2.0 97cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden * 107cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden * Unless required by applicable law or agreed to in writing, software 117cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden * distributed under the License is distributed on an "AS IS" BASIS, 127cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden * See the License for the specific language governing permissions and 147cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden * limitations under the License. 157cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden */ 167cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden 177cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden#ifndef BUFFER_PRODUCER_WRAPPER_H_ 187cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden 197cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden#define BUFFER_PRODUCER_WRAPPER_H_ 207cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden 217cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden#include <gui/IGraphicBufferProducer.h> 22f22e0d8849dd8bd0581297288c2597d0666382aaChih-Hung Hsieh#include <media/stagefright/foundation/ABase.h> 237cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden 247cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFaddennamespace android { 257cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden 267cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden// Can't use static_cast to cast a RefBase back to an IGraphicBufferProducer, 277cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden// because IGBP's parent (IInterface) uses virtual inheritance. This class 287cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden// wraps IGBP while we pass it through AMessage. 297cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden 307cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFaddenstruct BufferProducerWrapper : RefBase { 317cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden BufferProducerWrapper( 327cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden const sp<IGraphicBufferProducer>& bufferProducer) : 337cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden mBufferProducer(bufferProducer) { } 347cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden 357cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden sp<IGraphicBufferProducer> getBufferProducer() const { 367cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden return mBufferProducer; 377cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden } 387cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden 397cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFaddenprivate: 407cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden const sp<IGraphicBufferProducer> mBufferProducer; 417cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden 427cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden DISALLOW_EVIL_CONSTRUCTORS(BufferProducerWrapper); 437cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden}; 447cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden 457cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden} // namespace android 467cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden 477cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden#endif // BUFFER_PRODUCER_WRAPPER_H_ 48