PersistentSurface.h revision addf2cbb120346ae42e78fa739245a353db5edad
1/* 2 * Copyright 2015 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 PERSISTENT_SURFACE_H_ 18 19#define PERSISTENT_SURFACE_H_ 20 21#include <gui/IGraphicBufferProducer.h> 22#include <android/IGraphicBufferSource.h> 23#include <media/stagefright/foundation/ABase.h> 24#include <binder/Parcel.h> 25 26namespace android { 27 28struct PersistentSurface : public RefBase { 29 PersistentSurface() {} 30 31 PersistentSurface( 32 const sp<IGraphicBufferProducer>& bufferProducer, 33 const sp<IGraphicBufferSource>& bufferSource) : 34 mBufferProducer(bufferProducer), 35 mBufferSource(bufferSource) { } 36 37 sp<IGraphicBufferProducer> getBufferProducer() const { 38 return mBufferProducer; 39 } 40 41 sp<IGraphicBufferSource> getBufferSource() const { 42 return mBufferSource; 43 } 44 45 status_t writeToParcel(Parcel *parcel) const { 46 parcel->writeStrongBinder(IInterface::asBinder(mBufferProducer)); 47 parcel->writeStrongBinder(IInterface::asBinder(mBufferSource)); 48 return NO_ERROR; 49 } 50 51 status_t readFromParcel(const Parcel *parcel) { 52 mBufferProducer = interface_cast<IGraphicBufferProducer>( 53 parcel->readStrongBinder()); 54 mBufferSource = interface_cast<IGraphicBufferSource>( 55 parcel->readStrongBinder()); 56 return NO_ERROR; 57 } 58 59private: 60 sp<IGraphicBufferProducer> mBufferProducer; 61 sp<IGraphicBufferSource> mBufferSource; 62 63 DISALLOW_EVIL_CONSTRUCTORS(PersistentSurface); 64}; 65 66} // namespace android 67 68#endif // PERSISTENT_SURFACE_H_ 69