本文整理汇总了C++中MemoryManager::freeBuffer方法的典型用法代码示例。如果您正苦于以下问题:C++ MemoryManager::freeBuffer方法的具体用法?C++ MemoryManager::freeBuffer怎么用?C++ MemoryManager::freeBuffer使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MemoryManager
的用法示例。
在下文中一共展示了MemoryManager::freeBuffer方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getCaps
status_t OMXCameraAdapter::getCaps(CameraProperties::Properties* params, OMX_HANDLETYPE handle) {
status_t ret = NO_ERROR;
int caps_size = 0;
OMX_ERRORTYPE eError = OMX_ErrorNone;
OMX_TI_CAPTYPE** caps = NULL;;
OMX_TI_CONFIG_SHAREDBUFFER sharedBuffer;
MemoryManager memMgr;
LOG_FUNCTION_NAME;
// allocate tiler (or ion) buffer for caps (size is always a multiple of 4K)
caps_size = ((sizeof(OMX_TI_CAPTYPE)+4095)/4096)*4096;
caps = (OMX_TI_CAPTYPE**) memMgr.allocateBuffer(0, 0, NULL, caps_size, 1);
if (!caps) {
CAMHAL_LOGEB("Error allocating buffer for caps %d", eError);
ret = -ENOMEM;
goto EXIT;
}
// initialize structures to be passed to OMX Camera
OMX_INIT_STRUCT_PTR (caps[0], OMX_TI_CAPTYPE);
caps[0]->nPortIndex = OMX_ALL;
OMX_INIT_STRUCT_PTR (&sharedBuffer, OMX_TI_CONFIG_SHAREDBUFFER);
sharedBuffer.nPortIndex = OMX_ALL;
sharedBuffer.nSharedBuffSize = caps_size;
sharedBuffer.pSharedBuff = (OMX_U8 *) caps[0];
// Get capabilities from OMX Camera
CAMHAL_LOGEB("Calling OMX_GetConfig() for OMX_TI_IndexConfigCamCapabilities %d", 0);
/* FIXME-HASH: Fix this */
eError = OMX_GetConfig(handle, (OMX_INDEXTYPE) OMX_TI_IndexConfigCamCapabilities, &sharedBuffer);
if ( OMX_ErrorNone != eError ) {
CAMHAL_LOGEB("Error during capabilities query 0x%x", eError);
/* FIXME-HASH: Removed the query as it will fail for GB syslink */
// ret = UNKNOWN_ERROR;
// goto EXIT;
} else {
CAMHAL_LOGDA("OMX capability query success");
}
// Translate and insert Ducati capabilities to CameraProperties
if ( NO_ERROR == ret ) {
ret = insertCapabilities(params, *caps[0]);
}
CAMHAL_LOGDB("sen mount id=%u", (unsigned int)caps[0]->tSenMounting.nSenId);
EXIT:
if (caps) {
memMgr.freeBuffer((void*) caps);
caps = NULL;
}
LOG_FUNCTION_NAME_EXIT;
return ret;
}
示例2: setTouchFocus
status_t OMXCameraAdapter::setTouchFocus()
{
status_t ret = NO_ERROR;
OMX_ERRORTYPE eError = OMX_ErrorNone;
OMX_ALGOAREASTYPE **focusAreas;
OMX_TI_CONFIG_SHAREDBUFFER sharedBuffer;
MemoryManager memMgr;
int areasSize = 0;
LOG_FUNCTION_NAME;
if ( OMX_StateInvalid == mComponentState )
{
CAMHAL_LOGEA("OMX component is in invalid state");
ret = -1;
}
if ( NO_ERROR == ret )
{
areasSize = ((sizeof(OMX_ALGOAREASTYPE)+4095)/4096)*4096;
focusAreas = (OMX_ALGOAREASTYPE**) memMgr.allocateBuffer(0, 0, NULL, areasSize, 1);
OMXCameraPortParameters * mPreviewData = NULL;
mPreviewData = &mCameraAdapterParameters.mCameraPortParams[mCameraAdapterParameters.mPrevPortIndex];
if (!focusAreas)
{
CAMHAL_LOGEB("Error allocating buffer for focus areas %d", eError);
return -ENOMEM;
}
OMX_INIT_STRUCT_PTR (focusAreas[0], OMX_ALGOAREASTYPE);
focusAreas[0]->nPortIndex = OMX_ALL;
focusAreas[0]->nNumAreas = mFocusAreas.size();
focusAreas[0]->nAlgoAreaPurpose = OMX_AlgoAreaFocus;
// If the area is the special case of (0, 0, 0, 0, 0), then
// the algorithm needs nNumAreas to be set to 0,
// in order to automatically choose the best fitting areas.
if ( mFocusAreas.itemAt(0)->isZeroArea() )
{
focusAreas[0]->nNumAreas = 0;
}
for ( unsigned int n = 0; n < mFocusAreas.size(); n++)
{
// transform the coordinates to 3A-type coordinates
mFocusAreas.itemAt(n)->transfrom((size_t)mPreviewData->mWidth,
(size_t)mPreviewData->mHeight,
(size_t&)focusAreas[0]->tAlgoAreas[n].nTop,
(size_t&)focusAreas[0]->tAlgoAreas[n].nLeft,
(size_t&)focusAreas[0]->tAlgoAreas[n].nWidth,
(size_t&)focusAreas[0]->tAlgoAreas[n].nHeight);
focusAreas[0]->tAlgoAreas[n].nLeft =
( focusAreas[0]->tAlgoAreas[n].nLeft * TOUCH_FOCUS_RANGE ) / mPreviewData->mWidth;
focusAreas[0]->tAlgoAreas[n].nTop =
( focusAreas[0]->tAlgoAreas[n].nTop* TOUCH_FOCUS_RANGE ) / mPreviewData->mHeight;
focusAreas[0]->tAlgoAreas[n].nWidth =
( focusAreas[0]->tAlgoAreas[n].nWidth * TOUCH_FOCUS_RANGE ) / mPreviewData->mWidth;
focusAreas[0]->tAlgoAreas[n].nHeight =
( focusAreas[0]->tAlgoAreas[n].nHeight * TOUCH_FOCUS_RANGE ) / mPreviewData->mHeight;
focusAreas[0]->tAlgoAreas[n].nPriority = mFocusAreas.itemAt(n)->getWeight();
CAMHAL_LOGDB("Focus area %d : top = %d left = %d width = %d height = %d prio = %d",
n, (int)focusAreas[0]->tAlgoAreas[n].nTop, (int)focusAreas[0]->tAlgoAreas[n].nLeft,
(int)focusAreas[0]->tAlgoAreas[n].nWidth, (int)focusAreas[0]->tAlgoAreas[n].nHeight,
(int)focusAreas[0]->tAlgoAreas[n].nPriority);
}
OMX_INIT_STRUCT_PTR (&sharedBuffer, OMX_TI_CONFIG_SHAREDBUFFER);
sharedBuffer.nPortIndex = OMX_ALL;
sharedBuffer.nSharedBuffSize = areasSize;
sharedBuffer.pSharedBuff = (OMX_U8 *) focusAreas[0];
if ( NULL == sharedBuffer.pSharedBuff )
{
CAMHAL_LOGEA("No resources to allocate OMX shared buffer");
ret = -ENOMEM;
goto EXIT;
}
eError = OMX_SetConfig(mCameraAdapterParameters.mHandleComp,
(OMX_INDEXTYPE) OMX_TI_IndexConfigAlgoAreas, &sharedBuffer);
if ( OMX_ErrorNone != eError )
{
CAMHAL_LOGEB("Error while setting Focus Areas configuration 0x%x", eError);
ret = -EINVAL;
}
EXIT:
if (NULL != focusAreas)
{
memMgr.freeBuffer((void*) focusAreas);
focusAreas = NULL;
//.........这里部分代码省略.........