1 #ifndef ANDROID_DVR_INTERNAL_H_ 2 #define ANDROID_DVR_INTERNAL_H_ 3 4 #include <sys/cdefs.h> 5 6 #include <memory> 7 8 extern "C" { 9 10 typedef struct DvrBuffer DvrBuffer; 11 typedef struct DvrReadBuffer DvrReadBuffer; 12 typedef struct DvrWriteBuffer DvrWriteBuffer; 13 14 } // extern "C" 15 16 namespace android { 17 namespace dvr { 18 19 class BufferProducer; 20 class BufferConsumer; 21 class IonBuffer; 22 23 DvrBuffer* CreateDvrBufferFromIonBuffer( 24 const std::shared_ptr<IonBuffer>& ion_buffer); 25 26 DvrReadBuffer* CreateDvrReadBufferFromBufferConsumer( 27 const std::shared_ptr<BufferConsumer>& buffer_consumer); 28 DvrWriteBuffer* CreateDvrWriteBufferFromBufferProducer( 29 const std::shared_ptr<BufferProducer>& buffer_producer); 30 31 } // namespace dvr 32 } // namespace android 33 34 extern "C" { 35 36 struct 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 45 struct 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 54 struct DvrBuffer { 55 std::shared_ptr<android::dvr::IonBuffer> buffer; 56 }; 57 58 } // extern "C" 59 60 #endif // ANDROID_DVR_INTERNAL_H_ 61