12251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka#ifndef ANDROID_DVR_INTERNAL_H_
22251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka#define ANDROID_DVR_INTERNAL_H_
32251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka
42251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka#include <sys/cdefs.h>
52251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka
62251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka#include <memory>
72251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka
82251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakaextern "C" {
92251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka
102251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef struct DvrBuffer DvrBuffer;
112251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef struct DvrReadBuffer DvrReadBuffer;
122251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef struct DvrWriteBuffer DvrWriteBuffer;
132251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka
142251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka}  // extern "C"
152251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka
162251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakanamespace android {
172251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakanamespace dvr {
182251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka
192251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakaclass BufferProducer;
202251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakaclass BufferConsumer;
212251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakaclass IonBuffer;
222251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka
232251d822dac2a96aad4184a6fdc2690f0a58af7cCorey TabakaDvrBuffer* CreateDvrBufferFromIonBuffer(
242251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka    const std::shared_ptr<IonBuffer>& ion_buffer);
252251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka
262251d822dac2a96aad4184a6fdc2690f0a58af7cCorey TabakaDvrReadBuffer* CreateDvrReadBufferFromBufferConsumer(
272251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka    const std::shared_ptr<BufferConsumer>& buffer_consumer);
282251d822dac2a96aad4184a6fdc2690f0a58af7cCorey TabakaDvrWriteBuffer* CreateDvrWriteBufferFromBufferProducer(
292251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka    const std::shared_ptr<BufferProducer>& buffer_producer);
302251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka
312251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka}  // namespace dvr
322251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka}  // namespace android
332251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka
342251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakaextern "C" {
352251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka
362251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakastruct DvrWriteBuffer {
37638b7f747df50374d1e91c2496da41f293394e19Jiwen 'Steve' Cai  // The slot nubmer of the buffer, a valid slot number must be in the range of
38638b7f747df50374d1e91c2496da41f293394e19Jiwen 'Steve' Cai  // [0, android::BufferQueueDefs::NUM_BUFFER_SLOTS). This is only valid for
39638b7f747df50374d1e91c2496da41f293394e19Jiwen 'Steve' Cai  // DvrWriteBuffer acquired from a DvrWriteBufferQueue.
40638b7f747df50374d1e91c2496da41f293394e19Jiwen 'Steve' Cai  int32_t slot = -1;
41638b7f747df50374d1e91c2496da41f293394e19Jiwen 'Steve' Cai
422251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka  std::shared_ptr<android::dvr::BufferProducer> write_buffer;
432251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka};
442251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka
452251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakastruct DvrReadBuffer {
46638b7f747df50374d1e91c2496da41f293394e19Jiwen 'Steve' Cai  // The slot nubmer of the buffer, a valid slot number must be in the range of
47638b7f747df50374d1e91c2496da41f293394e19Jiwen 'Steve' Cai  // [0, android::BufferQueueDefs::NUM_BUFFER_SLOTS). This is only valid for
48638b7f747df50374d1e91c2496da41f293394e19Jiwen 'Steve' Cai  // DvrReadBuffer acquired from a DvrReadBufferQueue.
49638b7f747df50374d1e91c2496da41f293394e19Jiwen 'Steve' Cai  int32_t slot = -1;
50638b7f747df50374d1e91c2496da41f293394e19Jiwen 'Steve' Cai
512251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka  std::shared_ptr<android::dvr::BufferConsumer> read_buffer;
522251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka};
532251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka
542251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakastruct DvrBuffer {
552251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka  std::shared_ptr<android::dvr::IonBuffer> buffer;
562251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka};
572251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka
582251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka}  // extern "C"
592251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka
602251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka#endif  // ANDROID_DVR_INTERNAL_H_
61