• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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