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 #ifndef OMX_WBAMR_DEC_UTILS__H 22 #define OMX_WBAMR_DEC_UTILS__H 23 24 #include <OMX_Component.h> 25 #include "OMX_TI_Common.h" 26 #include "OMX_WbAmrDecoder.h" 27 #ifdef RESOURCE_MANAGER_ENABLED 28 #include <ResourceManagerProxyAPI.h> 29 #endif 30 31 32 /* ======================================================================= */ 33 /** 34 * @def WBAMR_DEC__XXX_VER Component version 35 */ 36 /* ======================================================================= */ 37 #define WBAMR_DEC_MAJOR_VER 0xF1 38 #define WBAMR_DEC_MINOR_VER 0xF2 39 /* ======================================================================= */ 40 /** 41 * @def WBAMR_DEC_NOT_USED Defines a value for "don't care" parameters 42 */ 43 /* ======================================================================= */ 44 #define WBAMR_DEC_NOT_USED 10 45 /* ======================================================================= */ 46 /** 47 * @def WBAMR_DEC_NORMAL_BUFFER Defines the flag value with all flags turned off 48 */ 49 /* ======================================================================= */ 50 #define WBAMR_DEC_NORMAL_BUFFER 0 51 /* ======================================================================= */ 52 /** 53 * @def OMX_WBAMR_DEC_DEFAULT_SEGMENT Default segment ID for the LCML 54 */ 55 /* ======================================================================= */ 56 #define OMX_WBAMR_DEC_DEFAULT_SEGMENT (0) 57 /* ======================================================================= */ 58 /** 59 * @def OMX_WBAMR_DEC_SN_TIMEOUT Timeout value for the socket node 60 */ 61 /* ======================================================================= */ 62 #define OMX_WBAMR_DEC_SN_TIMEOUT (-1) 63 /* ======================================================================= */ 64 /** 65 * @def OMX_WBAMR_DEC_SN_PRIORITY Priority for the socket node 66 */ 67 /* ======================================================================= */ 68 #define OMX_WBAMR_DEC_SN_PRIORITY (10) 69 /* ======================================================================= */ 70 /** 71 * @def OMX_WBAMR_DEC_NUM_DLLS number of DLL's 72 */ 73 /* =================================================================================== */ 74 /* 75 * Different Frame sizes 76 */ 77 /* ================================================================================== */ 78 #define WBAMR_DEC_FRAME_SIZE_18 18 79 #define WBAMR_DEC_FRAME_SIZE_23 23 80 #define WBAMR_DEC_FRAME_SIZE_24 24 81 #define WBAMR_DEC_FRAME_SIZE_33 33 82 #define WBAMR_DEC_FRAME_SIZE_37 37 83 #define WBAMR_DEC_FRAME_SIZE_41 41 84 #define WBAMR_DEC_FRAME_SIZE_47 47 85 #define WBAMR_DEC_FRAME_SIZE_51 51 86 #define WBAMR_DEC_FRAME_SIZE_59 59 87 #define WBAMR_DEC_FRAME_SIZE_61 61 88 #define WBAMR_DEC_FRAME_SIZE_6 6 89 #define WBAMR_DEC_FRAME_SIZE_1 1 90 #define WBAMR_DEC_FRAME_SIZE_0 0 91 92 #define WBAMRDEC_APP_ID 100 93 94 95 /* ======================================================================= */ 96 /** 97 * @def INPUT_WBAMRDEC_BUFFER_SIZE_IF2 Default input buffer size IF2 98 * 99 */ 100 /* ======================================================================= */ 101 #define INPUT_WBAMRDEC_BUFFER_SIZE_IF2 61 102 103 /* ======================================================================= */ 104 /** WBAMRENC_MimeMode format types 105 * 106 * @param WBAMRENC_MIMEMODE MIME 107 * 108 * @param WBAMRENC_NONMIMEMODE WBAMR mode 109 * 110 */ 111 /* ======================================================================= */ 112 enum WBAMRDEC_MimeMode { 113 WBAMRDEC_FORMATCONFORMANCE = 0, 114 WBAMRDEC_MIMEMODE, 115 WBAMRDEC_IF2 116 }; 117 118 /* ======================================================================= */ 119 #define OMX_WBAMR_DEC_NUM_DLLS (2) 120 /* ======================================================================= */ 121 /** 122 * @def WBAMR_DEC_USN_DLL_NAME USN DLL name 123 */ 124 /* ======================================================================= */ 125 #ifdef UNDER_CE 126 #define WBAMR_DEC_USN_DLL_NAME "\\windows\\usn.dll64P" 127 #else 128 #define WBAMR_DEC_USN_DLL_NAME "usn.dll64P" 129 #endif 130 131 /* ======================================================================= */ 132 /** 133 * @def WBAMR_DEC_DLL_NAME WB AMR Decoder socket node dll name 134 */ 135 /* ======================================================================= */ 136 #ifdef UNDER_CE 137 #define WBAMR_DEC_DLL_NAME "\\windows\\wbamrdec_sn.dll64P" 138 #else 139 #define WBAMR_DEC_DLL_NAME "wbamrdec_sn.dll64P" 140 #endif 141 142 /* =========================================================== */ 143 /** 144 * WBAMR_DEC_StartComponentThread() Starts component thread 145 * 146 * 147 * @param hComp OMX Handle 148 * 149 * @return OMX_ErrorNone = Successful 150 * Other error code = fail 151 * 152 */ 153 /*================================================================== */ 154 OMX_ERRORTYPE WBAMR_DEC_StartComponentThread(OMX_HANDLETYPE pHandle); 155 /* =========================================================== */ 156 /** 157 * WBAMR_DEC_StopComponentThread() Stops component thread 158 * 159 * 160 * @param hComp OMX Handle 161 * 162 * @return OMX_ErrorNone = Successful 163 * Other error code = fail 164 * 165 */ 166 /*================================================================== */ 167 OMX_ERRORTYPE WBAMR_DEC_StopComponentThread(OMX_HANDLETYPE pHandle); 168 /* =========================================================== */ 169 /** 170 * WBAMR_DEC_FreeCompResources() Frees allocated memory 171 * 172 * 173 * @param hComp OMX Handle 174 * 175 * @return OMX_ErrorNone = Successful 176 * Other error code = fail 177 * 178 */ 179 /*================================================================== */ 180 OMX_ERRORTYPE WBAMR_DEC_FreeCompResources(OMX_HANDLETYPE pComponent); 181 /* =========================================================== */ 182 /** 183 * WBAMR_DEC_GetCorresponding_LCMLHeader() Returns LCML header 184 * that corresponds to the given buffer 185 * 186 * @param pComponentPrivate Component private data 187 * 188 * @return OMX_ErrorNone = Successful 189 * Other error code = fail 190 */ 191 /*================================================================== */ 192 OMX_ERRORTYPE WBAMR_DEC_GetCorresponding_LCMLHeader(WBAMR_DEC_COMPONENT_PRIVATE *pComponentPrivate, 193 OMX_U8 *pBuffer, 194 OMX_DIRTYPE eDir, 195 LCML_WBAMR_DEC_BUFHEADERTYPE **ppLcmlHdr); 196 /* =========================================================== */ 197 /** 198 * WBAMR_DEC_LCML_Callback() Callback from LCML 199 * 200 * @param event Codec Event 201 * 202 * @param args Arguments from LCML 203 * 204 * @return OMX_ErrorNone = Successful 205 * Other error code = fail 206 */ 207 /*================================================================== */ 208 OMX_ERRORTYPE WBAMR_DEC_LCML_Callback (TUsnCodecEvent event,void * args [10]); 209 /* =========================================================== */ 210 /** 211 * WBAMR_DEC_Fill_LCMLInitParams() Fills the parameters needed 212 * to initialize the LCML 213 * 214 * @param pHandle OMX Handle 215 * 216 * @param plcml_Init LCML initialization parameters 217 * 218 * @return OMX_ErrorNone = Successful 219 * Other error code = fail 220 * 221 */ 222 /*================================================================== */ 223 OMX_ERRORTYPE WBAMR_DEC_Fill_LCMLInitParams(OMX_HANDLETYPE pHandle, 224 LCML_DSP *plcml_Init,OMX_U16 arr[]); 225 /* =========================================================== */ 226 /** 227 * WBAMR_DEC_GetBufferDirection() Returns direction of pBufHeader 228 * 229 * @param pBufHeader Buffer header 230 * 231 * @param eDir Buffer direction 232 * 233 * @param pComponentPrivate Component private data 234 * 235 * @return OMX_ErrorNone = Successful 236 * Other error code = fail 237 */ 238 /*================================================================== */ 239 OMX_ERRORTYPE WBAMR_DEC_GetBufferDirection(OMX_BUFFERHEADERTYPE *pBufHeader, OMX_DIRTYPE *eDir); 240 /* =========================================================== */ 241 /** 242 * WBAMR_DEC_HandleCommand() Handles commands sent via SendCommand() 243 * 244 * @param pComponentPrivate Component private data 245 * 246 * @return OMX_ErrorNone = Successful 247 * Other error code = fail 248 * @return OMX_ErrorNone = Successful 249 * Other error code = fail 250 */ 251 /*================================================================== */ 252 OMX_U32 WBAMR_DEC_HandleCommand (WBAMR_DEC_COMPONENT_PRIVATE *pComponentPrivate); 253 /* =========================================================== */ 254 /** 255 * WBAMR_DEC_HandleDataBuf_FromApp() Handles data buffers received 256 * from the IL Client 257 * 258 * @param pComponentPrivate Component private data 259 * 260 * @return OMX_ErrorNone = Successful 261 * Other error code = fail 262 * @return OMX_ErrorNone = Successful 263 * Other error code = fail 264 */ 265 /*================================================================== */ 266 OMX_ERRORTYPE WBAMR_DEC_HandleDataBuf_FromApp(OMX_BUFFERHEADERTYPE *pBufHeader, 267 WBAMR_DEC_COMPONENT_PRIVATE *pComponentPrivate); 268 /* =========================================================== */ 269 /** 270 * WBAMR_DEC_GetLCMLHandle() Get the handle to the LCML 271 * 272 * 273 * @return OMX_ErrorNone = Successful 274 * Other error code = fail 275 */ 276 /*================================================================== */ 277 OMX_HANDLETYPE WBAMR_DEC_GetLCMLHandle(WBAMR_DEC_COMPONENT_PRIVATE *pComponentPrivate); 278 /* =========================================================== */ 279 /** 280 * WBAMR_DEC_FreeLCMLHandle() Frees the handle to the LCML 281 * 282 * 283 * @return OMX_ErrorNone = Successful 284 * Other error code = fail 285 */ 286 /*================================================================== */ 287 OMX_ERRORTYPE WBAMR_DEC_FreeLCMLHandle(WBAMR_DEC_COMPONENT_PRIVATE *pComponentPrivate); 288 /* =========================================================== */ 289 /** 290 * WBAMR_DEC_CleanupInitParams() Starts component thread 291 * 292 * @param pComponent OMX Handle 293 * 294 * @return OMX_ErrorNone = Successful 295 * Other error code = fail 296 */ 297 /*================================================================== */ 298 OMX_ERRORTYPE WBAMR_DEC_CleanupInitParams(OMX_HANDLETYPE pComponent); 299 /* =========================================================== */ 300 /** 301 * WBAMR_DEC_SetPending() Called when the component queues a buffer 302 * to the LCML 303 * 304 * @param pComponentPrivate Component private data 305 * 306 * @param pBufHdr Buffer header 307 * 308 * @param eDir Direction of the buffer 309 * 310 * @return None 311 */ 312 /*================================================================== */ 313 void WBAMR_DEC_SetPending(WBAMR_DEC_COMPONENT_PRIVATE *pComponentPrivate, OMX_BUFFERHEADERTYPE *pBufHdr, OMX_DIRTYPE eDir, OMX_U32 lineNumber); 314 /* =========================================================== */ 315 /** 316 * WBAMR_DEC_ClearPending() Called when a buffer is returned 317 * from the LCML 318 * 319 * @param pComponentPrivate Component private data 320 * 321 * @param pBufHdr Buffer header 322 * 323 * @param eDir Direction of the buffer 324 * 325 * @return None 326 */ 327 /*================================================================== */ 328 void WBAMR_DEC_ClearPending(WBAMR_DEC_COMPONENT_PRIVATE *pComponentPrivate, OMX_BUFFERHEADERTYPE *pBufHdr, OMX_DIRTYPE eDir, OMX_U32 lineNumber) ; 329 /* =========================================================== */ 330 /** 331 * WMADEC_IsPending() 332 * 333 * 334 * @param pComponentPrivate Component private data 335 * 336 * @return OMX_ErrorNone = Successful 337 * Other error code = fail 338 */ 339 /*================================================================== */ 340 OMX_U32 WBAMR_DEC_IsPending(WBAMR_DEC_COMPONENT_PRIVATE *pComponentPrivate, OMX_BUFFERHEADERTYPE *pBufHdr, OMX_DIRTYPE eDir); 341 /* =========================================================== */ 342 /** 343 * WMADEC_Fill_LCMLInitParamsEx() Fills the parameters needed 344 * to initialize the LCML without recreating the socket node 345 * 346 * @param pComponent OMX Handle 347 * 348 * @return None 349 */ 350 351 /*================================================================== */ 352 OMX_ERRORTYPE WBAMR_DEC_Fill_LCMLInitParamsEx(OMX_HANDLETYPE pComponent); 353 /* =========================================================== */ 354 /** 355 * WMADEC_IsValid() Returns whether a buffer is valid 356 * 357 * 358 * @param pComponentPrivate Component private data 359 * 360 * @param pBuffer Data buffer 361 * 362 * @param eDir Buffer direction 363 * 364 * @return OMX_True = Valid 365 * OMX_False= Invalid 366 */ 367 /*================================================================== */ 368 OMX_U32 WBAMR_DEC_IsValid(WBAMR_DEC_COMPONENT_PRIVATE *pComponentPrivate, OMX_U8 *pBuffer, OMX_DIRTYPE eDir) ; 369 370 #ifdef RESOURCE_MANAGER_ENABLED 371 void WBAMRDEC_ResourceManagerCallback(RMPROXY_COMMANDDATATYPE cbData); 372 #endif 373 374 OMX_ERRORTYPE OMX_DmmMap(DSP_HPROCESSOR ProcHandle, int size, void* pArmPtr, DMM_BUFFER_OBJ* pDmmBuf, struct OMX_TI_Debug dbg); 375 376 OMX_ERRORTYPE OMX_DmmUnMap(DSP_HPROCESSOR ProcHandle, void* pMapPtr, void* pResPtr, struct OMX_TI_Debug dbg); 377 378 void WBAMRDEC_HandleUSNError (WBAMR_DEC_COMPONENT_PRIVATE *pComponentPrivate, OMX_U32 arg); 379 380 #ifdef UNDER_CE 381 #ifndef _OMX_EVENT_ 382 #define _OMX_EVENT_ 383 typedef struct OMX_Event { 384 HANDLE event; 385 } OMX_Event; 386 #endif 387 int OMX_CreateEvent(OMX_Event *event); 388 int OMX_SignalEvent(OMX_Event *event); 389 int OMX_WaitForEvent(OMX_Event *event); 390 int OMX_DestroyEvent(OMX_Event *event); 391 #endif 392 393 #endif 394