1bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Cai#ifndef ANDROID_DVR_API_H_ 2bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Cai#define ANDROID_DVR_API_H_ 3bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Cai 4bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Cai#include <stdbool.h> 5bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Cai#include <stddef.h> 6bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Cai#include <stdint.h> 72251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka#include <sys/cdefs.h> 82251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka#include <unistd.h> 9bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Cai 1037cdc8d0b9803e0c3dc17640534b74cd45fa4bd8Daniel Nicoara#include <dvr/dvr_hardware_composer_defs.h> 112d82ceb8dc1bc9066bd5ad98ee0926289cb0b7ccJiwen 'Steve' Cai 122251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka__BEGIN_DECLS 13bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Cai 14960bcfffefa76d535c5aecd303d755be3fbc59f1Jiwen 'Steve' Caitypedef struct ANativeWindow ANativeWindow; 15960bcfffefa76d535c5aecd303d755be3fbc59f1Jiwen 'Steve' Cai 16bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Caitypedef struct DvrPoseAsync DvrPoseAsync; 17bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Cai 182251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef uint64_t DvrSurfaceUpdateFlags; 192251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef struct DvrDisplayManager DvrDisplayManager; 202251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef struct DvrSurfaceState DvrSurfaceState; 21bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Caitypedef struct DvrPose DvrPose; 222251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef struct DvrVSyncClient DvrVSyncClient; 23bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Caitypedef struct DvrVirtualTouchpad DvrVirtualTouchpad; 24bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Cai 252251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef struct DvrBuffer DvrBuffer; 26bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Caitypedef struct DvrWriteBuffer DvrWriteBuffer; 27bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Caitypedef struct DvrReadBuffer DvrReadBuffer; 28bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Caitypedef struct AHardwareBuffer AHardwareBuffer; 29bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Cai 302d82ceb8dc1bc9066bd5ad98ee0926289cb0b7ccJiwen 'Steve' Caitypedef struct DvrReadBufferQueue DvrReadBufferQueue; 312251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef struct DvrWriteBufferQueue DvrWriteBufferQueue; 322d82ceb8dc1bc9066bd5ad98ee0926289cb0b7ccJiwen 'Steve' Cai 3374cf084cab653537e89f46b90344b3133a94b3a3Jiwen 'Steve' Caitypedef struct DvrSurface DvrSurface; 342251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef uint64_t DvrSurfaceAttributeType; 352251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int32_t DvrSurfaceAttributeKey; 362251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka 372251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef struct DvrSurfaceAttributeValue DvrSurfaceAttributeValue; 382251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef struct DvrSurfaceAttribute DvrSurfaceAttribute; 3974cf084cab653537e89f46b90344b3133a94b3a3Jiwen 'Steve' Cai 4028b58bfdcce253358120d1554755d71c2226f8fdJohn Batesstruct native_handle; 4128b58bfdcce253358120d1554755d71c2226f8fdJohn Bates 422251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka// dvr_display_manager.h 432251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrDisplayManagerCreatePtr)(DvrDisplayManager** client_out); 442251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef void (*DvrDisplayManagerDestroyPtr)(DvrDisplayManager* client); 452251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrDisplayManagerSetupNamedBufferPtr)(DvrDisplayManager* client, 462251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka const char* name, 472251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka size_t size, uint64_t usage, 482251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka DvrBuffer** buffer_out); 492251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrDisplayManagerGetEventFdPtr)(DvrDisplayManager* client); 502251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrDisplayManagerTranslateEpollEventMaskPtr)( 512251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka DvrDisplayManager* client, int in_events, int* out_events); 522251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrDisplayManagerGetSurfaceStatePtr)( 532251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka DvrDisplayManager* client, DvrSurfaceState* surface_state); 542251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrDisplayManagerGetReadBufferQueuePtr)( 552251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka DvrDisplayManager* client, int surface_id, int queue_id, 562251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka DvrReadBufferQueue** queue_out); 572251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrSurfaceStateCreatePtr)(DvrSurfaceState** surface_state); 582251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef void (*DvrSurfaceStateDestroyPtr)(DvrSurfaceState* surface_state); 592251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrSurfaceStateGetSurfaceCountPtr)(DvrSurfaceState* surface_state, 602251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka size_t* count_out); 612251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrSurfaceStateGetUpdateFlagsPtr)( 622251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka DvrSurfaceState* surface_state, size_t surface_index, 632251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka DvrSurfaceUpdateFlags* flags_out); 642251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrSurfaceStateGetSurfaceIdPtr)(DvrSurfaceState* surface_state, 652251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka size_t surface_index, 662251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka int* surface_id_out); 672251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrSurfaceStateGetProcessIdPtr)(DvrSurfaceState* surface_state, 682251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka size_t surface_index, 692251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka int* process_id_out); 702251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrSurfaceStateGetQueueCountPtr)(DvrSurfaceState* surface_state, 712251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka size_t surface_index, 722251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka size_t* count_out); 732251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef ssize_t (*DvrSurfaceStateGetQueueIdsPtr)(DvrSurfaceState* surface_state, 742251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka size_t surface_index, 752251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka int* queue_ids, 762251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka size_t max_count); 772251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrSurfaceStateGetZOrderPtr)(DvrSurfaceState* surface_state, 782251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka size_t surface_index, 792251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka int* z_order_out); 802251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrSurfaceStateGetVisiblePtr)(DvrSurfaceState* surface_state, 812251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka size_t surface_index, 822251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka bool* visible_out); 832251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrSurfaceStateGetAttributeCountPtr)( 842251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka DvrSurfaceState* surface_state, size_t surface_index, size_t* count_out); 852251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef ssize_t (*DvrSurfaceStateGetAttributesPtr)( 862251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka DvrSurfaceState* surface_state, size_t surface_index, 872251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka DvrSurfaceAttribute* attributes, size_t max_attribute_count); 88bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Cai 89bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Cai// dvr_buffer.h 902251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef void (*DvrWriteBufferCreateEmptyPtr)(DvrWriteBuffer** write_buffer_out); 912251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef void (*DvrWriteBufferDestroyPtr)(DvrWriteBuffer* write_buffer); 922251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrWriteBufferIsValidPtr)(DvrWriteBuffer* write_buffer); 932251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrWriteBufferClearPtr)(DvrWriteBuffer* write_buffer); 942251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrWriteBufferGetIdPtr)(DvrWriteBuffer* write_buffer); 95bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Caitypedef int (*DvrWriteBufferGetAHardwareBufferPtr)( 962251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka DvrWriteBuffer* write_buffer, AHardwareBuffer** hardware_buffer); 972251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrWriteBufferPostPtr)(DvrWriteBuffer* write_buffer, 982251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka int ready_fence_fd, const void* meta, 992251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka size_t meta_size_bytes); 1002251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrWriteBufferGainPtr)(DvrWriteBuffer* write_buffer, 101bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Cai int* release_fence_fd); 1022251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrWriteBufferGainAsyncPtr)(DvrWriteBuffer* write_buffer); 1032251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef const struct native_handle* (*DvrWriteBufferGetNativeHandlePtr)( 10428b58bfdcce253358120d1554755d71c2226f8fdJohn Bates DvrWriteBuffer* write_buffer); 105bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Cai 1062251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef void (*DvrReadBufferCreateEmptyPtr)(DvrReadBuffer** read_buffer_out); 1072251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef void (*DvrReadBufferDestroyPtr)(DvrReadBuffer* read_buffer); 1082251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrReadBufferIsValidPtr)(DvrReadBuffer* read_buffer); 1092251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrReadBufferClearPtr)(DvrReadBuffer* read_buffer); 1102251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrReadBufferGetIdPtr)(DvrReadBuffer* read_buffer); 111bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Caitypedef int (*DvrReadBufferGetAHardwareBufferPtr)( 1122251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka DvrReadBuffer* read_buffer, AHardwareBuffer** hardware_buffer); 1132251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrReadBufferAcquirePtr)(DvrReadBuffer* read_buffer, 114bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Cai int* ready_fence_fd, void* meta, 115bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Cai size_t meta_size_bytes); 1162251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrReadBufferReleasePtr)(DvrReadBuffer* read_buffer, 117bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Cai int release_fence_fd); 1182251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrReadBufferReleaseAsyncPtr)(DvrReadBuffer* read_buffer); 1192251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef const struct native_handle* (*DvrReadBufferGetNativeHandlePtr)( 12028b58bfdcce253358120d1554755d71c2226f8fdJohn Bates DvrReadBuffer* read_buffer); 12128b58bfdcce253358120d1554755d71c2226f8fdJohn Bates 1222251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef void (*DvrBufferDestroyPtr)(DvrBuffer* buffer); 1232251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrBufferGetAHardwareBufferPtr)( 1242251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka DvrBuffer* buffer, AHardwareBuffer** hardware_buffer); 1252251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef const struct native_handle* (*DvrBufferGetNativeHandlePtr)( 12628b58bfdcce253358120d1554755d71c2226f8fdJohn Bates DvrBuffer* buffer); 127bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Cai 1282d82ceb8dc1bc9066bd5ad98ee0926289cb0b7ccJiwen 'Steve' Cai// dvr_buffer_queue.h 1292d82ceb8dc1bc9066bd5ad98ee0926289cb0b7ccJiwen 'Steve' Caitypedef void (*DvrWriteBufferQueueDestroyPtr)(DvrWriteBufferQueue* write_queue); 1302251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef ssize_t (*DvrWriteBufferQueueGetCapacityPtr)( 1312d82ceb8dc1bc9066bd5ad98ee0926289cb0b7ccJiwen 'Steve' Cai DvrWriteBufferQueue* write_queue); 1322251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrWriteBufferQueueGetIdPtr)(DvrWriteBufferQueue* write_queue); 133960bcfffefa76d535c5aecd303d755be3fbc59f1Jiwen 'Steve' Caitypedef int (*DvrWriteBufferQueueGetExternalSurfacePtr)( 134960bcfffefa76d535c5aecd303d755be3fbc59f1Jiwen 'Steve' Cai DvrWriteBufferQueue* write_queue, ANativeWindow** out_window); 1352d82ceb8dc1bc9066bd5ad98ee0926289cb0b7ccJiwen 'Steve' Caitypedef int (*DvrWriteBufferQueueCreateReadQueuePtr)( 1362d82ceb8dc1bc9066bd5ad98ee0926289cb0b7ccJiwen 'Steve' Cai DvrWriteBufferQueue* write_queue, DvrReadBufferQueue** out_read_queue); 1372d82ceb8dc1bc9066bd5ad98ee0926289cb0b7ccJiwen 'Steve' Caitypedef int (*DvrWriteBufferQueueDequeuePtr)(DvrWriteBufferQueue* write_queue, 1382d82ceb8dc1bc9066bd5ad98ee0926289cb0b7ccJiwen 'Steve' Cai int timeout, 1392251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka DvrWriteBuffer* out_buffer, 1402d82ceb8dc1bc9066bd5ad98ee0926289cb0b7ccJiwen 'Steve' Cai int* out_fence_fd); 1412d82ceb8dc1bc9066bd5ad98ee0926289cb0b7ccJiwen 'Steve' Caitypedef void (*DvrReadBufferQueueDestroyPtr)(DvrReadBufferQueue* read_queue); 1422251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef ssize_t (*DvrReadBufferQueueGetCapacityPtr)( 1432d82ceb8dc1bc9066bd5ad98ee0926289cb0b7ccJiwen 'Steve' Cai DvrReadBufferQueue* read_queue); 1442251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrReadBufferQueueGetIdPtr)(DvrReadBufferQueue* read_queue); 1452d82ceb8dc1bc9066bd5ad98ee0926289cb0b7ccJiwen 'Steve' Caitypedef int (*DvrReadBufferQueueCreateReadQueuePtr)( 1462d82ceb8dc1bc9066bd5ad98ee0926289cb0b7ccJiwen 'Steve' Cai DvrReadBufferQueue* read_queue, DvrReadBufferQueue** out_read_queue); 1472d82ceb8dc1bc9066bd5ad98ee0926289cb0b7ccJiwen 'Steve' Caitypedef int (*DvrReadBufferQueueDequeuePtr)(DvrReadBufferQueue* read_queue, 1482d82ceb8dc1bc9066bd5ad98ee0926289cb0b7ccJiwen 'Steve' Cai int timeout, 1492251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka DvrReadBuffer* out_buffer, 1502d82ceb8dc1bc9066bd5ad98ee0926289cb0b7ccJiwen 'Steve' Cai int* out_fence_fd, void* out_meta, 1512d82ceb8dc1bc9066bd5ad98ee0926289cb0b7ccJiwen 'Steve' Cai size_t meta_size_bytes); 1522d82ceb8dc1bc9066bd5ad98ee0926289cb0b7ccJiwen 'Steve' Cai 153bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Cai// dvr_surface.h 154eaa5522feac452703a0836310047d4b15702487dHendrik Wagenaartypedef int (*DvrGetNamedBufferPtr)(const char* name, DvrBuffer** out_buffer); 1552251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrSurfaceCreatePtr)(const DvrSurfaceAttribute* attributes, 1562251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka size_t attribute_count, 1572251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka DvrSurface** surface_out); 1582251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef void (*DvrSurfaceDestroyPtr)(DvrSurface* surface); 1592251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrSurfaceGetIdPtr)(DvrSurface* surface); 1602251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrSurfaceSetAttributesPtr)(DvrSurface* surface, 1612251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka const DvrSurfaceAttribute* attributes, 1622251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka size_t attribute_count); 1632251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrSurfaceCreateWriteBufferQueuePtr)( 1642251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka DvrSurface* surface, uint32_t width, uint32_t height, uint32_t format, 165108e84f7e6a9117b66dba000dcf16c6d8c862e16Hendrik Wagenaar uint32_t layer_count, uint64_t usage, size_t capacity, 166108e84f7e6a9117b66dba000dcf16c6d8c862e16Hendrik Wagenaar DvrWriteBufferQueue** queue_out); 167bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Cai 168bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Cai// vsync_client_api.h 1692251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrVSyncClientCreatePtr)(DvrVSyncClient** client_out); 1702251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef void (*DvrVSyncClientDestroyPtr)(DvrVSyncClient* client); 1712251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef int (*DvrVSyncClientGetSchedInfoPtr)(DvrVSyncClient* client, 17284d90f316c01aadd1e6e0acbc94d51be24ec211fHendrik Wagenaar int64_t* vsync_period_ns, 17384d90f316c01aadd1e6e0acbc94d51be24ec211fHendrik Wagenaar int64_t* next_timestamp_ns, 17484d90f316c01aadd1e6e0acbc94d51be24ec211fHendrik Wagenaar uint32_t* next_vsync_count); 175bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Cai 176bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Cai// pose_client.h 1772251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef DvrPose* (*DvrPoseCreatePtr)(void); 1782251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabakatypedef void (*DvrPoseDestroyPtr)(DvrPose* client); 17984d90f316c01aadd1e6e0acbc94d51be24ec211fHendrik Wagenaartypedef int (*DvrPoseGetPtr)(DvrPose* client, uint32_t vsync_count, 18084d90f316c01aadd1e6e0acbc94d51be24ec211fHendrik Wagenaar DvrPoseAsync* out_pose); 18184d90f316c01aadd1e6e0acbc94d51be24ec211fHendrik Wagenaartypedef uint32_t (*DvrPoseGetVsyncCountPtr)(DvrPose* client); 18284d90f316c01aadd1e6e0acbc94d51be24ec211fHendrik Wagenaartypedef int (*DvrPoseGetControllerPtr)(DvrPose* client, int32_t controller_id, 18384d90f316c01aadd1e6e0acbc94d51be24ec211fHendrik Wagenaar uint32_t vsync_count, 18484d90f316c01aadd1e6e0acbc94d51be24ec211fHendrik Wagenaar DvrPoseAsync* out_pose); 185bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Cai 186bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Cai// virtual_touchpad_client.h 18784d90f316c01aadd1e6e0acbc94d51be24ec211fHendrik Wagenaartypedef DvrVirtualTouchpad* (*DvrVirtualTouchpadCreatePtr)(void); 18884d90f316c01aadd1e6e0acbc94d51be24ec211fHendrik Wagenaartypedef void (*DvrVirtualTouchpadDestroyPtr)(DvrVirtualTouchpad* client); 18984d90f316c01aadd1e6e0acbc94d51be24ec211fHendrik Wagenaartypedef int (*DvrVirtualTouchpadAttachPtr)(DvrVirtualTouchpad* client); 19084d90f316c01aadd1e6e0acbc94d51be24ec211fHendrik Wagenaartypedef int (*DvrVirtualTouchpadDetachPtr)(DvrVirtualTouchpad* client); 19184d90f316c01aadd1e6e0acbc94d51be24ec211fHendrik Wagenaartypedef int (*DvrVirtualTouchpadTouchPtr)(DvrVirtualTouchpad* client, 19284d90f316c01aadd1e6e0acbc94d51be24ec211fHendrik Wagenaar int touchpad, float x, float y, 19384d90f316c01aadd1e6e0acbc94d51be24ec211fHendrik Wagenaar float pressure); 19484d90f316c01aadd1e6e0acbc94d51be24ec211fHendrik Wagenaartypedef int (*DvrVirtualTouchpadButtonStatePtr)(DvrVirtualTouchpad* client, 19584d90f316c01aadd1e6e0acbc94d51be24ec211fHendrik Wagenaar int touchpad, int buttons); 196bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Cai 19737cdc8d0b9803e0c3dc17640534b74cd45fa4bd8Daniel Nicoara// dvr_hardware_composer_client.h 19837cdc8d0b9803e0c3dc17640534b74cd45fa4bd8Daniel Nicoaratypedef struct DvrHwcClient DvrHwcClient; 19937cdc8d0b9803e0c3dc17640534b74cd45fa4bd8Daniel Nicoaratypedef struct DvrHwcFrame DvrHwcFrame; 200eaa5522feac452703a0836310047d4b15702487dHendrik Wagenaartypedef int (*DvrHwcOnFrameCallback)(void* client_state, DvrHwcFrame* frame); 20137cdc8d0b9803e0c3dc17640534b74cd45fa4bd8Daniel Nicoaratypedef DvrHwcClient* (*DvrHwcClientCreatePtr)(DvrHwcOnFrameCallback callback, 20237cdc8d0b9803e0c3dc17640534b74cd45fa4bd8Daniel Nicoara void* client_state); 20337cdc8d0b9803e0c3dc17640534b74cd45fa4bd8Daniel Nicoaratypedef void (*DvrHwcClientDestroyPtr)(DvrHwcClient* client); 20437cdc8d0b9803e0c3dc17640534b74cd45fa4bd8Daniel Nicoaratypedef void (*DvrHwcFrameDestroyPtr)(DvrHwcFrame* frame); 205736b6058d8c91ec4ad295c0a04c7b81d8119268cDaniel Nicoaratypedef DvrHwcDisplay (*DvrHwcFrameGetDisplayIdPtr)(DvrHwcFrame* frame); 20637cdc8d0b9803e0c3dc17640534b74cd45fa4bd8Daniel Nicoaratypedef int32_t (*DvrHwcFrameGetDisplayWidthPtr)(DvrHwcFrame* frame); 20737cdc8d0b9803e0c3dc17640534b74cd45fa4bd8Daniel Nicoaratypedef int32_t (*DvrHwcFrameGetDisplayHeightPtr)(DvrHwcFrame* frame); 20837cdc8d0b9803e0c3dc17640534b74cd45fa4bd8Daniel Nicoaratypedef bool (*DvrHwcFrameGetDisplayRemovedPtr)(DvrHwcFrame* frame); 20937cdc8d0b9803e0c3dc17640534b74cd45fa4bd8Daniel Nicoaratypedef size_t (*DvrHwcFrameGetLayerCountPtr)(DvrHwcFrame* frame); 210736b6058d8c91ec4ad295c0a04c7b81d8119268cDaniel Nicoaratypedef DvrHwcLayer (*DvrHwcFrameGetLayerIdPtr)(DvrHwcFrame* frame, 211736b6058d8c91ec4ad295c0a04c7b81d8119268cDaniel Nicoara size_t layer_index); 212730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulktypedef uint32_t (*DvrHwcFrameGetActiveConfigPtr)(DvrHwcFrame* frame); 213730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulktypedef uint32_t (*DvrHwcFrameGetColorModePtr)(DvrHwcFrame* frame); 214730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulktypedef void (*DvrHwcFrameGetColorTransformPtr)(DvrHwcFrame* frame, 215730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk float* out_matrix, 216730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk int32_t* out_hint); 217730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulktypedef uint32_t (*DvrHwcFrameGetPowerModePtr)(DvrHwcFrame* frame); 218730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulktypedef uint32_t (*DvrHwcFrameGetVsyncEnabledPtr)(DvrHwcFrame* frame); 21937cdc8d0b9803e0c3dc17640534b74cd45fa4bd8Daniel Nicoaratypedef AHardwareBuffer* (*DvrHwcFrameGetLayerBufferPtr)(DvrHwcFrame* frame, 22037cdc8d0b9803e0c3dc17640534b74cd45fa4bd8Daniel Nicoara size_t layer_index); 22137cdc8d0b9803e0c3dc17640534b74cd45fa4bd8Daniel Nicoaratypedef int (*DvrHwcFrameGetLayerFencePtr)(DvrHwcFrame* frame, 22237cdc8d0b9803e0c3dc17640534b74cd45fa4bd8Daniel Nicoara size_t layer_index); 223736b6058d8c91ec4ad295c0a04c7b81d8119268cDaniel Nicoaratypedef DvrHwcRecti (*DvrHwcFrameGetLayerDisplayFramePtr)(DvrHwcFrame* frame, 224736b6058d8c91ec4ad295c0a04c7b81d8119268cDaniel Nicoara size_t layer_index); 225736b6058d8c91ec4ad295c0a04c7b81d8119268cDaniel Nicoaratypedef DvrHwcRectf (*DvrHwcFrameGetLayerCropPtr)(DvrHwcFrame* frame, 226736b6058d8c91ec4ad295c0a04c7b81d8119268cDaniel Nicoara size_t layer_index); 227736b6058d8c91ec4ad295c0a04c7b81d8119268cDaniel Nicoaratypedef DvrHwcBlendMode (*DvrHwcFrameGetLayerBlendModePtr)(DvrHwcFrame* frame, 228736b6058d8c91ec4ad295c0a04c7b81d8119268cDaniel Nicoara size_t layer_index); 22937cdc8d0b9803e0c3dc17640534b74cd45fa4bd8Daniel Nicoaratypedef float (*DvrHwcFrameGetLayerAlphaPtr)(DvrHwcFrame* frame, 23037cdc8d0b9803e0c3dc17640534b74cd45fa4bd8Daniel Nicoara size_t layer_index); 23137cdc8d0b9803e0c3dc17640534b74cd45fa4bd8Daniel Nicoaratypedef uint32_t (*DvrHwcFrameGetLayerTypePtr)(DvrHwcFrame* frame, 23237cdc8d0b9803e0c3dc17640534b74cd45fa4bd8Daniel Nicoara size_t layer_index); 23337cdc8d0b9803e0c3dc17640534b74cd45fa4bd8Daniel Nicoaratypedef uint32_t (*DvrHwcFrameGetLayerApplicationIdPtr)(DvrHwcFrame* frame, 23437cdc8d0b9803e0c3dc17640534b74cd45fa4bd8Daniel Nicoara size_t layer_index); 235730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulktypedef uint32_t (*DvrHwcFrameGetLayerZOrderPtr)(DvrHwcFrame* frame, 236730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk size_t layer_index); 237730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk 238730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulktypedef void (*DvrHwcFrameGetLayerCursorPtr)(DvrHwcFrame* frame, 239730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk size_t layer_index, int32_t* out_x, 240730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk int32_t* out_y); 241730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk 242730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulktypedef uint32_t (*DvrHwcFrameGetLayerTransformPtr)(DvrHwcFrame* frame, 243730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk size_t layer_index); 244730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk 245730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulktypedef uint32_t (*DvrHwcFrameGetLayerDataspacePtr)(DvrHwcFrame* frame, 246730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk size_t layer_index); 247730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk 248730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulktypedef uint32_t (*DvrHwcFrameGetLayerColorPtr)(DvrHwcFrame* frame, 249730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk size_t layer_index); 250730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk 251730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulktypedef uint32_t (*DvrHwcFrameGetLayerNumVisibleRegionsPtr)(DvrHwcFrame* frame, 252730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk size_t layer_index); 253730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulktypedef DvrHwcRecti (*DvrHwcFrameGetLayerVisibleRegionPtr)(DvrHwcFrame* frame, 254730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk size_t layer_index, 255730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk size_t index); 256730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk 257730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulktypedef uint32_t (*DvrHwcFrameGetLayerNumDamagedRegionsPtr)(DvrHwcFrame* frame, 258730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk size_t layer_index); 259730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulktypedef DvrHwcRecti (*DvrHwcFrameGetLayerDamagedRegionPtr)(DvrHwcFrame* frame, 260730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk size_t layer_index, 261730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk size_t index); 26237cdc8d0b9803e0c3dc17640534b74cd45fa4bd8Daniel Nicoara 263cb4751c52a5625a22b6a11b4de537ff026d9bfe3Jiwen 'Steve' Cai// The buffer metadata that an Android Surface (a.k.a. ANativeWindow) 264cb4751c52a5625a22b6a11b4de537ff026d9bfe3Jiwen 'Steve' Cai// will populate. A DvrWriteBufferQueue must be created with this metadata iff 26564177e82296a330bdd3c131a020aaffea4905df0Jiwen 'Steve' Cai// ANativeWindow access is needed. Please do not remove, modify, or reorder 26664177e82296a330bdd3c131a020aaffea4905df0Jiwen 'Steve' Cai// existing data members. If new fields need to be added, please take extra care 26764177e82296a330bdd3c131a020aaffea4905df0Jiwen 'Steve' Cai// to make sure that new data field is padded properly the size of the struct 26864177e82296a330bdd3c131a020aaffea4905df0Jiwen 'Steve' Cai// stays same. 269cb4751c52a5625a22b6a11b4de537ff026d9bfe3Jiwen 'Steve' Caistruct DvrNativeBufferMetadata { 270cb4751c52a5625a22b6a11b4de537ff026d9bfe3Jiwen 'Steve' Cai // Timestamp of the frame. 271cb4751c52a5625a22b6a11b4de537ff026d9bfe3Jiwen 'Steve' Cai int64_t timestamp; 272cb4751c52a5625a22b6a11b4de537ff026d9bfe3Jiwen 'Steve' Cai 273cb4751c52a5625a22b6a11b4de537ff026d9bfe3Jiwen 'Steve' Cai // Whether the buffer is using auto timestamp. 274cb4751c52a5625a22b6a11b4de537ff026d9bfe3Jiwen 'Steve' Cai int32_t is_auto_timestamp; 275cb4751c52a5625a22b6a11b4de537ff026d9bfe3Jiwen 'Steve' Cai 276cb4751c52a5625a22b6a11b4de537ff026d9bfe3Jiwen 'Steve' Cai // Must be one of the HAL_DATASPACE_XXX value defined in system/graphics.h 277cb4751c52a5625a22b6a11b4de537ff026d9bfe3Jiwen 'Steve' Cai int32_t dataspace; 278cb4751c52a5625a22b6a11b4de537ff026d9bfe3Jiwen 'Steve' Cai 279cb4751c52a5625a22b6a11b4de537ff026d9bfe3Jiwen 'Steve' Cai // Crop extracted from an ACrop or android::Crop object. 280cb4751c52a5625a22b6a11b4de537ff026d9bfe3Jiwen 'Steve' Cai int32_t crop_left; 281cb4751c52a5625a22b6a11b4de537ff026d9bfe3Jiwen 'Steve' Cai int32_t crop_top; 282cb4751c52a5625a22b6a11b4de537ff026d9bfe3Jiwen 'Steve' Cai int32_t crop_right; 283cb4751c52a5625a22b6a11b4de537ff026d9bfe3Jiwen 'Steve' Cai int32_t crop_bottom; 284cb4751c52a5625a22b6a11b4de537ff026d9bfe3Jiwen 'Steve' Cai 285cb4751c52a5625a22b6a11b4de537ff026d9bfe3Jiwen 'Steve' Cai // Must be one of the NATIVE_WINDOW_SCALING_MODE_XXX value defined in 286cb4751c52a5625a22b6a11b4de537ff026d9bfe3Jiwen 'Steve' Cai // system/window.h. 287cb4751c52a5625a22b6a11b4de537ff026d9bfe3Jiwen 'Steve' Cai int32_t scaling_mode; 288cb4751c52a5625a22b6a11b4de537ff026d9bfe3Jiwen 'Steve' Cai 289cb4751c52a5625a22b6a11b4de537ff026d9bfe3Jiwen 'Steve' Cai // Must be one of the ANATIVEWINDOW_TRANSFORM_XXX value defined in 290cb4751c52a5625a22b6a11b4de537ff026d9bfe3Jiwen 'Steve' Cai // android/native_window.h 291cb4751c52a5625a22b6a11b4de537ff026d9bfe3Jiwen 'Steve' Cai int32_t transform; 292cb4751c52a5625a22b6a11b4de537ff026d9bfe3Jiwen 'Steve' Cai 293cb4751c52a5625a22b6a11b4de537ff026d9bfe3Jiwen 'Steve' Cai // Reserved bytes for so that the struct is forward compatible. 294cb4751c52a5625a22b6a11b4de537ff026d9bfe3Jiwen 'Steve' Cai int32_t reserved[16]; 295cb4751c52a5625a22b6a11b4de537ff026d9bfe3Jiwen 'Steve' Cai}; 296cb4751c52a5625a22b6a11b4de537ff026d9bfe3Jiwen 'Steve' Cai 297bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Caistruct DvrApi_v1 { 2982251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka// Defines an API entry for V1 (no version suffix). 2992251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka#define DVR_V1_API_ENTRY(name) Dvr##name##Ptr name 3002251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka 3012251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka// Include file with API entries. 3022251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka#include "dvr_api_entries.h" 3032251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka 3042251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka// Undefine macro definitions to play nice with Google3 style rules. 3052251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka#undef DVR_V1_API_ENTRY 306bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Cai}; 307bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Cai 308bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Caiint dvrGetApi(void* api, size_t struct_size, int version); 309bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Cai 3102251d822dac2a96aad4184a6fdc2690f0a58af7cCorey Tabaka__END_DECLS 311bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Cai 312bdcee79b0d7e87cb48049907a7ba8201d0288f75Jiwen 'Steve' Cai#endif // ANDROID_DVR_API_H_ 313