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