1#ifndef ANDROID_DVR_INTERNAL_H_
2#define ANDROID_DVR_INTERNAL_H_
3
4#include <sys/cdefs.h>
5
6#include <memory>
7
8extern "C" {
9
10typedef struct DvrBuffer DvrBuffer;
11typedef struct DvrReadBuffer DvrReadBuffer;
12typedef struct DvrWriteBuffer DvrWriteBuffer;
13
14}  // extern "C"
15
16namespace android {
17namespace dvr {
18
19class BufferProducer;
20class BufferConsumer;
21class IonBuffer;
22
23DvrBuffer* CreateDvrBufferFromIonBuffer(
24    const std::shared_ptr<IonBuffer>& ion_buffer);
25
26DvrReadBuffer* CreateDvrReadBufferFromBufferConsumer(
27    const std::shared_ptr<BufferConsumer>& buffer_consumer);
28DvrWriteBuffer* CreateDvrWriteBufferFromBufferProducer(
29    const std::shared_ptr<BufferProducer>& buffer_producer);
30
31}  // namespace dvr
32}  // namespace android
33
34extern "C" {
35
36struct 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
45struct 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
54struct DvrBuffer {
55  std::shared_ptr<android::dvr::IonBuffer> buffer;
56};
57
58}  // extern "C"
59
60#endif  // ANDROID_DVR_INTERNAL_H_
61