|
7 | 7 | #include <zephyr/kernel.h>
|
8 | 8 | #include <zephyr/drivers/video.h>
|
9 | 9 |
|
10 |
| -K_HEAP_DEFINE(video_buffer_pool, |
11 |
| - CONFIG_VIDEO_BUFFER_POOL_SZ_MAX * |
12 |
| - CONFIG_VIDEO_BUFFER_POOL_NUM_MAX); |
| 10 | +#if defined(CONFIG_VIDEO_BUFFER_USE_SHARED_MULTI_HEAP) |
| 11 | +#include <zephyr/multi_heap/shared_multi_heap.h> |
| 12 | + |
| 13 | +#define VIDEO_COMMON_HEAP_ALLOC(align, size, timeout) \ |
| 14 | + shared_multi_heap_aligned_alloc(CONFIG_VIDEO_BUFFER_SMH_ATTRIBUTE, align, size) |
| 15 | +#define VIDEO_COMMON_FREE(block) shared_multi_heap_free(block) |
| 16 | +#else |
| 17 | +K_HEAP_DEFINE(video_buffer_pool, CONFIG_VIDEO_BUFFER_POOL_SZ_MAX*CONFIG_VIDEO_BUFFER_POOL_NUM_MAX); |
| 18 | +#define VIDEO_COMMON_HEAP_ALLOC(align, size, timeout) \ |
| 19 | + k_heap_aligned_alloc(&video_buffer_pool, align, size, timeout); |
| 20 | +#define VIDEO_COMMON_FREE(block) k_heap_free(&video_buffer_pool, block) |
| 21 | +#endif |
13 | 22 |
|
14 | 23 | static struct video_buffer video_buf[CONFIG_VIDEO_BUFFER_POOL_NUM_MAX];
|
15 | 24 |
|
@@ -39,7 +48,7 @@ struct video_buffer *video_buffer_aligned_alloc(size_t size, size_t align)
|
39 | 48 | }
|
40 | 49 |
|
41 | 50 | /* Alloc buffer memory */
|
42 |
| - block->data = k_heap_aligned_alloc(&video_buffer_pool, align, size, K_FOREVER); |
| 51 | + block->data = VIDEO_COMMON_HEAP_ALLOC(align, size, K_FOREVER); |
43 | 52 | if (block->data == NULL) {
|
44 | 53 | return NULL;
|
45 | 54 | }
|
@@ -71,6 +80,6 @@ void video_buffer_release(struct video_buffer *vbuf)
|
71 | 80 |
|
72 | 81 | vbuf->buffer = NULL;
|
73 | 82 | if (block) {
|
74 |
| - k_heap_free(&video_buffer_pool, block->data); |
| 83 | + VIDEO_COMMON_FREE(block->data); |
75 | 84 | }
|
76 | 85 | }
|
0 commit comments