blob: df8125a414bf6276386ae88ef984b590d900a6a3 [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;
Corey Tabaka2251d822017-04-20 16:04:07 -070013
14} // extern "C"
15
16namespace android {
17namespace dvr {
18
Jiwen 'Steve' Caic6fcf2f2018-09-27 23:34:45 -070019// TODO(b/116855254): Remove this typedef once rename is complete in libdvr.
20// Note that the dvr::BufferProducer and dvr::BufferConsumer were poorly named,
21// they should really be named as ProducerBuffer and ConsumerBuffer.
22typedef class ProducerBuffer BufferProducer;
23typedef class ConsumerBuffer BufferConsumer;
Corey Tabaka2251d822017-04-20 16:04:07 -070024class IonBuffer;
Corey Tabaka2251d822017-04-20 16:04:07 -070025
26DvrBuffer* CreateDvrBufferFromIonBuffer(
27 const std::shared_ptr<IonBuffer>& ion_buffer);
28
29DvrReadBuffer* CreateDvrReadBufferFromBufferConsumer(
30 const std::shared_ptr<BufferConsumer>& buffer_consumer);
31DvrWriteBuffer* CreateDvrWriteBufferFromBufferProducer(
32 const std::shared_ptr<BufferProducer>& buffer_producer);
33
Corey Tabaka2251d822017-04-20 16:04:07 -070034} // namespace dvr
35} // namespace android
36
37extern "C" {
38
Corey Tabaka2251d822017-04-20 16:04:07 -070039struct DvrWriteBuffer {
Jiwen 'Steve' Cai638b7f72017-09-08 11:10:29 -070040 // The slot nubmer of the buffer, a valid slot number must be in the range of
41 // [0, android::BufferQueueDefs::NUM_BUFFER_SLOTS). This is only valid for
42 // DvrWriteBuffer acquired from a DvrWriteBufferQueue.
43 int32_t slot = -1;
44
Corey Tabaka2251d822017-04-20 16:04:07 -070045 std::shared_ptr<android::dvr::BufferProducer> write_buffer;
46};
47
48struct DvrReadBuffer {
Jiwen 'Steve' Cai638b7f72017-09-08 11:10:29 -070049 // The slot nubmer of the buffer, a valid slot number must be in the range of
50 // [0, android::BufferQueueDefs::NUM_BUFFER_SLOTS). This is only valid for
51 // DvrReadBuffer acquired from a DvrReadBufferQueue.
52 int32_t slot = -1;
53
Corey Tabaka2251d822017-04-20 16:04:07 -070054 std::shared_ptr<android::dvr::BufferConsumer> read_buffer;
55};
56
57struct DvrBuffer {
58 std::shared_ptr<android::dvr::IonBuffer> buffer;
59};
60
Corey Tabaka2251d822017-04-20 16:04:07 -070061} // extern "C"
62
63#endif // ANDROID_DVR_INTERNAL_H_