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