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 typedef struct DvrWriteBufferQueue DvrWriteBufferQueue; 14 typedef struct DvrReadBufferQueue DvrReadBufferQueue; 15 16 } // extern "C" 17 18 namespace android { 19 namespace dvr { 20 21 class BufferProducer; 22 class BufferConsumer; 23 class ConsumerQueue; 24 class IonBuffer; 25 class ProducerQueue; 26 27 DvrBuffer* CreateDvrBufferFromIonBuffer( 28 const std::shared_ptr<IonBuffer>& ion_buffer); 29 30 DvrReadBuffer* CreateDvrReadBufferFromBufferConsumer( 31 const std::shared_ptr<BufferConsumer>& buffer_consumer); 32 DvrWriteBuffer* CreateDvrWriteBufferFromBufferProducer( 33 const std::shared_ptr<BufferProducer>& buffer_producer); 34 35 DvrReadBufferQueue* CreateDvrReadBufferQueueFromConsumerQueue( 36 const std::shared_ptr<ConsumerQueue>& consumer_queue); 37 DvrWriteBufferQueue* CreateDvrWriteBufferQueueFromProducerQueue( 38 const std::shared_ptr<ProducerQueue>& producer_queue); 39 ProducerQueue* GetProducerQueueFromDvrWriteBufferQueue( 40 DvrWriteBufferQueue* write_queue); 41 42 } // namespace dvr 43 } // namespace android 44 45 extern "C" { 46 47 struct DvrWriteBuffer { 48 std::shared_ptr<android::dvr::BufferProducer> write_buffer; 49 }; 50 51 struct DvrReadBuffer { 52 std::shared_ptr<android::dvr::BufferConsumer> read_buffer; 53 }; 54 55 struct DvrBuffer { 56 std::shared_ptr<android::dvr::IonBuffer> buffer; 57 }; 58 59 struct DvrWriteBufferQueue { 60 std::shared_ptr<android::dvr::ProducerQueue> producer_queue; 61 ANativeWindow* native_window{nullptr}; 62 }; 63 64 struct DvrReadBufferQueue { 65 std::shared_ptr<android::dvr::ConsumerQueue> consumer_queue; 66 }; 67 68 } // extern "C" 69 70 #endif // ANDROID_DVR_INTERNAL_H_ 71