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 
     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