dvr_buffer_queue_internal.h revision 656f406fcb0c45fd3c729a513bdd3f353cc6ec1f
1656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai#ifndef ANDROID_DVR_BUFFER_QUEUE_INTERNAL_H_ 2656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai#define ANDROID_DVR_BUFFER_QUEUE_INTERNAL_H_ 3656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai 4656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai#include <gui/Surface.h> 5656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai#include <private/dvr/buffer_hub_queue_client.h> 6656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai#include <sys/cdefs.h> 7656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai 8656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai#include <memory> 9656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai 10656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Caistruct ANativeWindow; 11656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai 12656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Caistruct DvrWriteBufferQueue { 13656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai using ProducerQueue = android::dvr::ProducerQueue; 14656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai 15656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai // Create a concrete object for DvrWriteBufferQueue. 16656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai // 17656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai // @param producer_queue The BufferHub's ProducerQueue that is used to back 18656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai // this DvrWriteBufferQueue, must not be NULL. 19656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai explicit DvrWriteBufferQueue( 20656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai const std::shared_ptr<ProducerQueue>& producer_queue); 21656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai 22656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai int id() const { return producer_queue_->id(); } 23656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai uint32_t width() const { return width_; }; 24656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai uint32_t height() const { return height_; }; 25656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai uint32_t format() const { return format_; }; 26656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai size_t capacity() const { return producer_queue_->capacity(); } 27656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai const std::shared_ptr<ProducerQueue>& producer_queue() const { 28656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai return producer_queue_; 29656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai } 30656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai 31656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai int GetNativeWindow(ANativeWindow** out_window); 32656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai int CreateReadQueue(DvrReadBufferQueue** out_read_queue); 33656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai int Dequeue(int timeout, DvrWriteBuffer* write_buffer, int* out_fence_fd); 34656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai int ResizeBuffer(uint32_t width, uint32_t height); 35656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai 36656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai private: 37656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai std::shared_ptr<ProducerQueue> producer_queue_; 38656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai 39656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai uint32_t width_; 40656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai uint32_t height_; 41656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai uint32_t format_; 42656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai android::sp<android::Surface> native_window_; 43656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai}; 44656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai 45656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Caistruct DvrReadBufferQueue { 46656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai using ConsumerQueue = android::dvr::ConsumerQueue; 47656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai 48656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai explicit DvrReadBufferQueue( 49656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai const std::shared_ptr<ConsumerQueue>& consumer_queue); 50656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai 51656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai int id() const { return consumer_queue_->id(); } 52656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai size_t capacity() const { return consumer_queue_->capacity(); } 53656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai 54656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai int CreateReadQueue(DvrReadBufferQueue** out_read_queue); 55656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai int Dequeue(int timeout, DvrReadBuffer* read_buffer, int* out_fence_fd, 56656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai void* out_meta, size_t meta_size_bytes); 57656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai 58656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai private: 59656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai std::shared_ptr<ConsumerQueue> consumer_queue_; 60656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai}; 61656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai 62656f406fcb0c45fd3c729a513bdd3f353cc6ec1fJiwen 'Steve' Cai#endif // ANDROID_DVR_BUFFER_QUEUE_INTERNAL_H_ 63