1 2/* 3 * Copyright (C) Texas Instruments - http://www.ti.com/ 4 * 5 * This library is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU Lesser General Public 7 * License as published by the Free Software Foundation; either 8 * version 2.1 of the License, or (at your option) any later version. 9 * 10 * 11 * This library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * 17 * You should have received a copy of the GNU Lesser General Public 18 * License along with this library; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20 */ 21/* ============================================================================= 22* Texas Instruments OMAP(TM) Platform Software 23* (c) Copyright Texas Instruments, Incorporated. All Rights Reserved. 24* 25* Use of this software is controlled by the terms and conditions found 26* in the license agreement under which this software has been supplied. 27* =========================================================================== */ 28/** OMX_TI_Common.h 29 * The LCML header file contains the definitions used by both the 30 * application and the component to access common items. 31 */ 32 33#ifndef __OMX_TI_COMMON_H__ 34#define __OMX_TI_COMMON_H__ 35 36#include "OMX_Component.h" 37#include "OMX_TI_Debug.h" 38 39/* OMX_TI_SEVERITYTYPE enumeration is used to indicate severity level of errors 40 returned by TI OpenMax components. 41 Critical Requires reboot/reset DSP 42 Severe Have to unload components and free memory and try again 43 Major Can be handled without unloading the component 44 Minor Essentially informational 45 */ 46typedef enum OMX_TI_SEVERITYTYPE { 47 OMX_TI_ErrorCritical = 1, 48 OMX_TI_ErrorSevere, 49 OMX_TI_ErrorMajor, 50 OMX_TI_ErrorMinor 51} OMX_TI_SEVERITYTYPE; 52 53/* ======================================================================= */ 54/** 55 * @def EXTRA_BYTES For Cache alignment 56 DSP_CACHE_ALIGNMENT For Cache alignment 57 * 58 */ 59/* ======================================================================= */ 60#define EXTRA_BYTES 256 61#define DSP_CACHE_ALIGNMENT 128 62 63/* ======================================================================= */ 64/** 65 * @def OMX_MALLOC_GENERIC Macro to allocate Memory 66 */ 67/* ======================================================================= */ 68#define OMX_MALLOC_GENERIC(_pStruct_, _sName_) \ 69 OMX_MALLOC_SIZE(_pStruct_,sizeof(_sName_),_sName_) 70 71/* ======================================================================= */ 72/** 73 * @def OMX_MALLOC_SIZE Macro to allocate Memory 74 */ 75/* ======================================================================= */ 76#define OMX_MALLOC_SIZE(_ptr_, _size_,_name_) \ 77 _ptr_ = (_name_*)newmalloc(_size_); \ 78 if(_ptr_ == NULL){ \ 79 OMXDBG_PRINT(stderr, ERROR, 4, 0, "***********************************\n"); \ 80 OMXDBG_PRINT(stderr, ERROR, 4, 0, "%d :: Malloc Failed\n",__LINE__); \ 81 OMXDBG_PRINT(stderr, ERROR, 4, 0, "***********************************\n"); \ 82 eError = OMX_ErrorInsufficientResources; \ 83 goto EXIT; \ 84 } \ 85 memset(_ptr_,0,_size_); \ 86 OMXDBG_PRINT(stderr, BUFFER, 2, OMX_DBG_BASEMASK, "%d :: Malloced = %p\n",__LINE__,_ptr_); 87 88/* ======================================================================= */ 89/** 90 * @def OMX_MALLOC_SIZE_DSPALIGN Macro to allocate Memory with cache alignment protection 91 */ 92/* ======================================================================= */ 93#define OMX_MALLOC_SIZE_DSPALIGN(_ptr_, _size_,_name_) \ 94 OMX_MALLOC_SIZE(_ptr_, _size_ + EXTRA_BYTES, _name_); \ 95 _ptr_ = (_name_*)(((OMX_U8*)_ptr_ + DSP_CACHE_ALIGNMENT)); 96 97/* ======================================================================= */ 98/** 99 * M A C R O FOR MEMORY FREE 100 */ 101/* ======================================================================= */ 102#define OMX_MEMFREE_STRUCT(_pStruct_)\ 103 OMXDBG_PRINT(stderr, BUFFER, 2, OMX_DBG_BASEMASK, "%d :: [FREE] %p\n",__LINE__,_pStruct_); \ 104 if(_pStruct_ != NULL){\ 105 newfree(_pStruct_);\ 106 _pStruct_ = NULL;\ 107 } 108 109/* ======================================================================= */ 110/** 111 * M A C R O FOR MEMORY FREE 112 */ 113/* ======================================================================= */ 114#define OMX_MEMFREE_STRUCT_DSPALIGN(_pStruct_,_name_)\ 115 if(_pStruct_ != NULL){\ 116 _pStruct_ = (_name_*)(((OMX_U8*)_pStruct_ - DSP_CACHE_ALIGNMENT));\ 117 OMX_MEMFREE_STRUCT(_pStruct_);\ 118 } 119 120#endif /* end of #ifndef __OMX_TI_COMMON_H__ */ 121/* File EOF */ 122