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