blob: 89bef09871cdbf3e8bd26c43a456ea95b0de8ad3 [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
47struct DvrWriteBuffer {
48 std::shared_ptr<android::dvr::BufferProducer> write_buffer;
49};
50
51struct DvrReadBuffer {
52 std::shared_ptr<android::dvr::BufferConsumer> read_buffer;
53};
54
55struct DvrBuffer {
56 std::shared_ptr<android::dvr::IonBuffer> buffer;
57};
58
59struct DvrWriteBufferQueue {
60 std::shared_ptr<android::dvr::ProducerQueue> producer_queue;
61 ANativeWindow* native_window{nullptr};
62};
63
64struct DvrReadBufferQueue {
65 std::shared_ptr<android::dvr::ConsumerQueue> consumer_queue;
66};
67
68} // extern "C"
69
70#endif // ANDROID_DVR_INTERNAL_H_