1#ifndef ANDROID_DVR_INTERNAL_H_ 2#define ANDROID_DVR_INTERNAL_H_ 3 4#include <sys/cdefs.h> 5 6#include <memory> 7 8extern "C" { 9 10typedef struct DvrBuffer DvrBuffer; 11typedef struct DvrReadBuffer DvrReadBuffer; 12typedef struct DvrWriteBuffer DvrWriteBuffer; 13 14} // extern "C" 15 16namespace android { 17namespace dvr { 18 19class BufferProducer; 20class BufferConsumer; 21class IonBuffer; 22 23DvrBuffer* CreateDvrBufferFromIonBuffer( 24 const std::shared_ptr<IonBuffer>& ion_buffer); 25 26DvrReadBuffer* CreateDvrReadBufferFromBufferConsumer( 27 const std::shared_ptr<BufferConsumer>& buffer_consumer); 28DvrWriteBuffer* CreateDvrWriteBufferFromBufferProducer( 29 const std::shared_ptr<BufferProducer>& buffer_producer); 30 31} // namespace dvr 32} // namespace android 33 34extern "C" { 35 36struct DvrWriteBuffer { 37 // The slot nubmer of the buffer, a valid slot number must be in the range of 38 // [0, android::BufferQueueDefs::NUM_BUFFER_SLOTS). This is only valid for 39 // DvrWriteBuffer acquired from a DvrWriteBufferQueue. 40 int32_t slot = -1; 41 42 std::shared_ptr<android::dvr::BufferProducer> write_buffer; 43}; 44 45struct DvrReadBuffer { 46 // The slot nubmer of the buffer, a valid slot number must be in the range of 47 // [0, android::BufferQueueDefs::NUM_BUFFER_SLOTS). This is only valid for 48 // DvrReadBuffer acquired from a DvrReadBufferQueue. 49 int32_t slot = -1; 50 51 std::shared_ptr<android::dvr::BufferConsumer> read_buffer; 52}; 53 54struct DvrBuffer { 55 std::shared_ptr<android::dvr::IonBuffer> buffer; 56}; 57 58} // extern "C" 59 60#endif // ANDROID_DVR_INTERNAL_H_ 61