Lines Matching refs:buffer
26 * 1. buffer get / put / reference management / external commit / get info.
37 * 2. user buffer working flow control abstraction.
38 * buffer should attach to certain group, and buffer mode control the buffer usage flow.
49 * 3. buffer allocator management
51 * it will support normal buffer, Android ion buffer, Linux v4l2 vb2 buffer
57 * mpp buffer group support two work flow mode:
59 * normal flow: all buffer are generated by MPP
60 * under this mode, buffer pool is maintained internally
71 * commit flow: all buffer are commited out of MPP
95 * mpp buffer group has two buffer limit mode: normal and limit
97 * normal mode: allows any buffer size and always general new buffer is no unused buffer
99 * This mode normally use with normal flow and is used for table / stream buffer
101 * limit mode : restrict the buffer's size and count in the buffer group. if try to calloc
102 * buffer with different size or extra count it will fail.
103 * This mode normally use with commit flow and is used for frame buffer
117 * the mpp buffer has serval types:
119 * normal : normal malloc buffer for unit test or hardware simulation
140 * DRM CMA buffer : MPP_BUFFER_TYPE_DRM | MPP_BUFFER_FLAGS_CONTIG
142 * DRM SECURE buffer: MPP_BUFFER_TYPE_DRM | MPP_BUFFER_FLAGS_SECURE
158 * index - the buffer index used to track buffer in buffer pool
159 * size - the buffer size
163 * ptr - virtual address of normal malloced buffer
165 * internal buffer counter number
169 * ptr - virtual address of ion buffer in user space
171 * fd - ion buffer file handle for map / unmap
186 * mpp_buffer_import_with_tag(MppBufferGroup group, MppBufferInfo *info, MppBuffer *buffer)
189 * group can be NULL then this buffer will attached to default legecy group
195 * 3. buffer - generated MppBuffer from MppBufferInfo.
196 * buffer can be NULL then the buffer is commit to group with unused status.
197 * Otherwise generated buffer will be directly got and ref_count increased.
202 * Add a external buffer info to group. This buffer will be on unused status.
203 * Typical usage is on Android. MediaPlayer gralloc Graphic buffer then commit these buffer
204 * to decoder's buffer group. Then decoder will recycle these buffer and return buffer reference
209 * Transfer a external buffer info to MppBuffer but it is not expected to attached to certain
210 * buffer group. So the group is set to NULL. Then this buffer can be used for MppFrame/MppPacket.
213 * imported buffer is leak or not and trace its usage inside mpp process. So we attach this kind
214 * of buffer to default misc buffer group for management.
219 #define mpp_buffer_import(buffer, info) \
220 mpp_buffer_import_with_tag(NULL, info, buffer, MODULE_TAG, __FUNCTION__)
222 #define mpp_buffer_get(group, buffer, size) \
223 mpp_buffer_get_with_tag(group, buffer, size, MODULE_TAG, __FUNCTION__)
225 #define mpp_buffer_put(buffer) \
226 mpp_buffer_put_with_caller(buffer, __FUNCTION__)
228 #define mpp_buffer_inc_ref(buffer) \
229 mpp_buffer_inc_ref_with_caller(buffer, __FUNCTION__)
231 #define mpp_buffer_info_get(buffer, info) \
232 mpp_buffer_info_get_with_caller(buffer, info, __FUNCTION__)
234 #define mpp_buffer_read(buffer, offset, data, size) \
235 mpp_buffer_read_with_caller(buffer, offset, data, size, __FUNCTION__)
237 #define mpp_buffer_write(buffer, offset, data, size) \
238 mpp_buffer_write_with_caller(buffer, offset, data, size, __FUNCTION__)
240 #define mpp_buffer_get_ptr(buffer) \
241 mpp_buffer_get_ptr_with_caller(buffer, __FUNCTION__)
243 #define mpp_buffer_get_fd(buffer) \
244 mpp_buffer_get_fd_with_caller(buffer, __FUNCTION__)
246 #define mpp_buffer_get_size(buffer) \
247 mpp_buffer_get_size_with_caller(buffer, __FUNCTION__)
249 #define mpp_buffer_get_index(buffer) \
250 mpp_buffer_get_index_with_caller(buffer, __FUNCTION__)
252 #define mpp_buffer_set_index(buffer, index) \
253 mpp_buffer_set_index_with_caller(buffer, index, __FUNCTION__)
255 #define mpp_buffer_get_offset(buffer) \
256 mpp_buffer_get_offset_with_caller(buffer, __FUNCTION__)
258 #define mpp_buffer_set_offset(buffer, offset) \
259 mpp_buffer_set_offset_with_caller(buffer, offset, __FUNCTION__)
273 * these interface will change value of group and buffer so before calling functions
280 MPP_RET mpp_buffer_import_with_tag(MppBufferGroup group, MppBufferInfo *info, MppBuffer *buffer,
282 MPP_RET mpp_buffer_get_with_tag(MppBufferGroup group, MppBuffer *buffer, size_t size,
284 MPP_RET mpp_buffer_put_with_caller(MppBuffer buffer, const char *caller);
285 MPP_RET mpp_buffer_inc_ref_with_caller(MppBuffer buffer, const char *caller);
287 MPP_RET mpp_buffer_info_get_with_caller(MppBuffer buffer, MppBufferInfo *info, const char *caller);
288 MPP_RET mpp_buffer_read_with_caller(MppBuffer buffer, size_t offset, void *data, size_t size, const char *caller);
289 MPP_RET mpp_buffer_write_with_caller(MppBuffer buffer, size_t offset, void *data, size_t size, const char *caller);
290 void *mpp_buffer_get_ptr_with_caller(MppBuffer buffer, const char *caller);
291 int mpp_buffer_get_fd_with_caller(MppBuffer buffer, const char *caller);
292 size_t mpp_buffer_get_size_with_caller(MppBuffer buffer, const char *caller);
293 int mpp_buffer_get_index_with_caller(MppBuffer buffer, const char *caller);
294 MPP_RET mpp_buffer_set_index_with_caller(MppBuffer buffer, int index, const char *caller);
295 size_t mpp_buffer_get_offset_with_caller(MppBuffer buffer, const char *caller);
296 MPP_RET mpp_buffer_set_offset_with_caller(MppBuffer buffer, size_t offset, const char *caller);
308 * size : 0 - no limit, other - max buffer size
309 * count : 0 - no limit, other - max buffer count