1 /* 2 * Copyright (c) 2022 Huawei Device Co., Ltd. 3 * 4 * HDF is dual licensed: you can use it either under the terms of 5 * the GPL, or the BSD license, at your option. 6 * See the LICENSE file in the root of this repository for complete details. 7 */ 8 9 #ifndef CAMERA_BUFFER_MANAGER_H 10 #define CAMERA_BUFFER_MANAGER_H 11 12 #include <hdf_dlist.h> 13 #include <osal_atomic.h> 14 #include <osal_mutex.h> 15 #include <osal_spinlock.h> 16 #include <camera/camera_product.h> 17 #include "camera_buffer_manager_adapter.h" 18 #include "camera_buffer.h" 19 20 /* extern used function */ 21 int32_t BufferQueueFindPlaneByOffset(struct BufferQueue *queue, 22 unsigned long off, uint32_t *bufferId, uint32_t *planeId); 23 void CameraBufferDone(struct CameraBuffer *buffer, enum BufferState state); 24 void *CameraBufferGetPlaneVaddr(struct CameraBuffer *buffer, uint32_t planeId); 25 26 /* init queue */ 27 int32_t BufferQueueInit(struct BufferQueue *queue); 28 /* request buffers */ 29 int32_t BufferQueueRequest(struct BufferQueue *queue, struct UserCameraReq *userRequest); 30 /* query buffer */ 31 int32_t BufferQueueQueryBuffer(struct BufferQueue *queue, struct UserCameraBuffer *userBuffer); 32 /* return buffer */ 33 int32_t BufferQueueReturnBuffer(struct BufferQueue *queue, struct UserCameraBuffer *userBuffer); 34 /* acquire buffer */ 35 int32_t BufferQueueAcquireBuffer(struct BufferQueue *queue, struct UserCameraBuffer *userBuffer); 36 /* stream on */ 37 int32_t BufferQueueStreamOn(struct BufferQueue *queue); 38 /* stream off */ 39 int32_t BufferQueueStreamOff(struct BufferQueue *queue); 40 /* set curent queue for mmap */ 41 void BufferQueueSetQueueForMmap(struct BufferQueue *queue); 42 /* get curent queue for mmap */ 43 struct BufferQueue *BufferQueueGetQueueForMmap(void); 44 45 #endif // CAMERA_BUFFER_MANAGER_H