这是一个经典问题,下面是 OMX_UseBuffer 和 OMX_AllocateBuffer 的本质区别、使用场景对比,以及内存管理责任划分。
✅ 一句话总结:
OMX_UseBuffer:你(客户端)分配内存,然后交给 OMX 使用。
OMX_AllocateBuffer:OMX 组件自己分配内存,你只拿到指针。
🔹 接口定义简要说明:
OMX_AllocateBuffer
OMX_ERRORTYPE OMX_AllocateBuffer(
OMX_HANDLETYPE hComponent,
OMX_BUFFERHEADERTYPE** ppBufferHdr,
OMX_U32 nPortIndex,
OMX_PTR pAppPrivate,
OMX_U32 nSizeBytes);
-
OMX 自己调用
malloc或 ION(甚至 gralloc)来分配内存 -
你只拿到 buffer header,内部 buffer 归组件所有
OMX_UseBuffer
OMX_ERRORTYPE OMX_UseBuffer(
OMX_HANDLETYPE hComponent,
OMX_BUFFERHEADERTYPE** ppBufferHdr,
OMX_U32 nPortIndex,
OMX_PTR pAppPrivate,
OMX_U8* pBuffer,
OMX_U32 nSizeBytes);
-
你先分配好内存(如
malloc()、ION_alloc()、gralloc_alloc()),然后告诉 OMX 用这块内存 -
组件不会再调用自己的分配器,而是直接使用你提供的 buffer
🔍 详细对比表
| 项目 |
|---|

最低0.47元/天 解锁文章
3678

被折叠的 条评论
为什么被折叠?



