|  | #ifndef ANDROID_DVR_INTERNAL_H_ | 
|  | #define ANDROID_DVR_INTERNAL_H_ | 
|  |  | 
|  | #include <sys/cdefs.h> | 
|  |  | 
|  | #include <memory> | 
|  |  | 
|  | extern "C" { | 
|  |  | 
|  | typedef struct DvrBuffer DvrBuffer; | 
|  | typedef struct DvrReadBuffer DvrReadBuffer; | 
|  | typedef struct DvrWriteBuffer DvrWriteBuffer; | 
|  |  | 
|  | }  // extern "C" | 
|  |  | 
|  | namespace android { | 
|  | namespace dvr { | 
|  |  | 
|  | class BufferProducer; | 
|  | class BufferConsumer; | 
|  | class IonBuffer; | 
|  |  | 
|  | DvrBuffer* CreateDvrBufferFromIonBuffer( | 
|  | const std::shared_ptr<IonBuffer>& ion_buffer); | 
|  |  | 
|  | DvrReadBuffer* CreateDvrReadBufferFromBufferConsumer( | 
|  | const std::shared_ptr<BufferConsumer>& buffer_consumer); | 
|  | DvrWriteBuffer* CreateDvrWriteBufferFromBufferProducer( | 
|  | const std::shared_ptr<BufferProducer>& buffer_producer); | 
|  |  | 
|  | }  // namespace dvr | 
|  | }  // namespace android | 
|  |  | 
|  | extern "C" { | 
|  |  | 
|  | struct DvrWriteBuffer { | 
|  | std::shared_ptr<android::dvr::BufferProducer> write_buffer; | 
|  | }; | 
|  |  | 
|  | struct DvrReadBuffer { | 
|  | std::shared_ptr<android::dvr::BufferConsumer> read_buffer; | 
|  | }; | 
|  |  | 
|  | struct DvrBuffer { | 
|  | std::shared_ptr<android::dvr::IonBuffer> buffer; | 
|  | }; | 
|  |  | 
|  | }  // extern "C" | 
|  |  | 
|  | #endif  // ANDROID_DVR_INTERNAL_H_ |