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 IonBuffer;
     20 
     21 DvrBuffer* CreateDvrBufferFromIonBuffer(
     22     const std::shared_ptr<IonBuffer>& ion_buffer);
     23 
     24 }  // namespace dvr
     25 }  // namespace android
     26 
     27 extern "C" {
     28 
     29 struct DvrWriteBuffer {
     30   // The slot nubmer of the buffer, a valid slot number must be in the range of
     31   // [0, android::BufferQueueDefs::NUM_BUFFER_SLOTS). This is only valid for
     32   // DvrWriteBuffer acquired from a DvrWriteBufferQueue.
     33   int32_t slot = -1;
     34 
     35   std::shared_ptr<android::dvr::ProducerBuffer> write_buffer;
     36 };
     37 
     38 struct DvrReadBuffer {
     39   // The slot nubmer of the buffer, a valid slot number must be in the range of
     40   // [0, android::BufferQueueDefs::NUM_BUFFER_SLOTS). This is only valid for
     41   // DvrReadBuffer acquired from a DvrReadBufferQueue.
     42   int32_t slot = -1;
     43 
     44   std::shared_ptr<android::dvr::ConsumerBuffer> read_buffer;
     45 };
     46 
     47 struct DvrBuffer {
     48   std::shared_ptr<android::dvr::IonBuffer> buffer;
     49 };
     50 
     51 }  // extern "C"
     52 
     53 #endif  // ANDROID_DVR_INTERNAL_H_
     54