blob: 6431f1cfd818a6a4e60f3fe45c74f6ffd921ea0a [file] [log] [blame]
Corey Tabaka2251d822017-04-20 16:04:07 -07001#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;
13typedef struct DvrWriteBufferQueue DvrWriteBufferQueue;
14typedef struct DvrReadBufferQueue DvrReadBufferQueue;
15
16} // extern "C"
17
18namespace android {
19namespace dvr {
20
21class BufferProducer;
22class BufferConsumer;
23class ConsumerQueue;
24class IonBuffer;
25class ProducerQueue;
26
27DvrBuffer* CreateDvrBufferFromIonBuffer(
28 const std::shared_ptr<IonBuffer>& ion_buffer);
29
30DvrReadBuffer* CreateDvrReadBufferFromBufferConsumer(
31 const std::shared_ptr<BufferConsumer>& buffer_consumer);
32DvrWriteBuffer* CreateDvrWriteBufferFromBufferProducer(
33 const std::shared_ptr<BufferProducer>& buffer_producer);
34
35DvrReadBufferQueue* CreateDvrReadBufferQueueFromConsumerQueue(
36 const std::shared_ptr<ConsumerQueue>& consumer_queue);
37DvrWriteBufferQueue* CreateDvrWriteBufferQueueFromProducerQueue(
38 const std::shared_ptr<ProducerQueue>& producer_queue);
39ProducerQueue* GetProducerQueueFromDvrWriteBufferQueue(
40 DvrWriteBufferQueue* write_queue);
41
42} // namespace dvr
43} // namespace android
44
45extern "C" {
46
Mathias Agopian6a3c05b2017-04-27 20:06:55 -070047struct ANativeWindow;
48
Corey Tabaka2251d822017-04-20 16:04:07 -070049struct DvrWriteBuffer {
50 std::shared_ptr<android::dvr::BufferProducer> write_buffer;
51};
52
53struct DvrReadBuffer {
54 std::shared_ptr<android::dvr::BufferConsumer> read_buffer;
55};
56
57struct DvrBuffer {
58 std::shared_ptr<android::dvr::IonBuffer> buffer;
59};
60
61struct DvrWriteBufferQueue {
62 std::shared_ptr<android::dvr::ProducerQueue> producer_queue;
63 ANativeWindow* native_window{nullptr};
64};
65
66struct DvrReadBufferQueue {
67 std::shared_ptr<android::dvr::ConsumerQueue> consumer_queue;
68};
69
70} // extern "C"
71
72#endif // ANDROID_DVR_INTERNAL_H_