Home | History | Annotate | Download | only in libdvr
      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