• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef ANDROID_DVR_BUFFER_QUEUE_H_
2 #define ANDROID_DVR_BUFFER_QUEUE_H_
3 
4 #include <sys/cdefs.h>
5 
6 #include <dvr/dvr_buffer.h>
7 
8 __BEGIN_DECLS
9 
10 typedef struct ANativeWindow ANativeWindow;
11 
12 typedef struct DvrWriteBufferQueue DvrWriteBufferQueue;
13 typedef struct DvrReadBufferQueue DvrReadBufferQueue;
14 
15 // WriteBufferQueue
16 void dvrWriteBufferQueueDestroy(DvrWriteBufferQueue* write_queue);
17 ssize_t dvrWriteBufferQueueGetCapacity(DvrWriteBufferQueue* write_queue);
18 int dvrWriteBufferQueueGetId(DvrWriteBufferQueue* write_queue);
19 
20 // Returns ANativeWindow. Can be casted to a Java Surface using
21 // ANativeWindow_toSurface NDK API. Note that this method does not acquire an
22 // additional reference to the ANativeWindow returned, don't call
23 // ANativeWindow_release on it.
24 int dvrWriteBufferQueueGetExternalSurface(DvrWriteBufferQueue* write_queue,
25                                           ANativeWindow** out_window);
26 
27 int dvrWriteBufferQueueCreateReadQueue(DvrWriteBufferQueue* write_queue,
28                                        DvrReadBufferQueue** out_read_queue);
29 int dvrWriteBufferQueueDequeue(DvrWriteBufferQueue* write_queue, int timeout,
30                                DvrWriteBuffer* out_buffer, int* out_fence_fd);
31 
32 // ReadeBufferQueue
33 void dvrReadBufferQueueDestroy(DvrReadBufferQueue* read_queue);
34 ssize_t dvrReadBufferQueueGetCapacity(DvrReadBufferQueue* read_queue);
35 int dvrReadBufferQueueGetId(DvrReadBufferQueue* read_queue);
36 int dvrReadBufferQueueCreateReadQueue(DvrReadBufferQueue* read_queue,
37                                       DvrReadBufferQueue** out_read_queue);
38 int dvrReadBufferQueueDequeue(DvrReadBufferQueue* read_queue, int timeout,
39                               DvrReadBuffer* out_buffer, int* out_fence_fd,
40                               void* out_meta, size_t meta_size_bytes);
41 
42 __END_DECLS
43 
44 #endif  // ANDROID_DVR_BUFFER_QUEUE_H_
45