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