Home | History | Annotate | Download | only in inc
      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 /**
     29 * @file OMX_AmrEnc_Utils.h
     30 *
     31 * This is an header file for an NBAMR Encoder that is fully
     32 * compliant with the OMX Audio specification 1.5.
     33 * This the file that the application that uses OMX would include in its code.
     34 *
     35 * @path $(CSLPATH)\OMAPSW_MPU\linux\audio\src\openmax_il\nbamr_enc\inc
     36 *
     37 * @rev 1.0
     38 */
     39 /* --------------------------------------------------------------------------- */
     40 /* ----------------------------------------------------------------------------
     41 *!
     42 *! Revision History
     43 *! ===================================
     44 *! 21-sept-2006 bk: updated review findings for alpha release
     45 *! 24-Aug-2006 bk: Khronos OpenMAX (TM) 1.0 Conformance tests some more
     46 *! 18-July-2006 bk: Khronos OpenMAX (TM) 1.0 Conformance tests validated for few cases
     47 *! 21-Jun-2006 bk: Khronos OpenMAX (TM) 1.0 migration done
     48 *! 22-May-2006 bk: DASF recording quality improved
     49 *! 19-Apr-2006 bk: DASF recording speed issue resloved
     50 *! 23-Feb-2006 bk: DASF functionality added
     51 *! 18-Jan-2006 bk: Repated recording issue fixed and LCML changes taken care
     52 *! 14-Dec-2005 bk: Initial Version
     53 *! 16-Nov-2005 bk: Initial Version
     54 *! 23-Sept-2005 bk: Initial Version
     55 *! 10-Sept-2005 bk: Initial Version
     56 *! 10-Sept-2005 bk:
     57 *! This is newest file
     58 * =========================================================================== */
     59 #ifndef OMX_AMRENC_UTILS__H
     60 #define OMX_AMRENC_UTILS__H
     61 
     62 #include <pthread.h>
     63 #include "LCML_DspCodec.h"
     64 #include <OMX_Component.h>
     65 #include "OMX_TI_Common.h"
     66 #include "OMX_TI_Debug.h"
     67 #include <TIDspOmx.h>
     68 
     69 #ifdef RESOURCE_MANAGER_ENABLED
     70 #include <ResourceManagerProxyAPI.h>
     71 #endif
     72 
     73 #ifdef __PERF_INSTRUMENTATION__
     74     #include "perf.h"
     75 #endif
     76 
     77 #ifdef DSP_RENDERING_ON
     78     #include <AudioManagerAPI.h>
     79 #endif
     80 
     81 #ifdef UNDER_CE
     82     #define sleep Sleep
     83 #endif
     84 
     85 #ifndef ANDROID
     86     #define ANDROID
     87 #endif
     88 
     89 #ifdef ANDROID
     90     #undef LOG_TAG
     91     #define LOG_TAG "OMX_NBAMRENC"
     92 //    #define LOG_TAG "nbamr_enc"
     93     /* PV opencore capability custom parameter index */
     94     #define PV_OMX_COMPONENT_CAPABILITY_TYPE_INDEX 0xFF7A347
     95 #endif
     96 
     97 /* ======================================================================= */
     98 /**
     99  * @def    AMRENC_DEBUG   Turns debug messaging on and off
    100  */
    101 /* ======================================================================= */
    102 #define AMRENC_DEBUG
    103 /* ======================================================================= */
    104 /**
    105  * @def    AMRENC_MEMCHECK   Turns memory messaging on and off
    106  */
    107 /* ======================================================================= */
    108 #undef AMRENC_MEMCHECK
    109 
    110 /* ======================================================================= */
    111 /**
    112  * @def    NBAMRENC_DEBUGMEM   Turns memory leaks messaging on and off.
    113  *         APP_DEBUGMEM must be defined in Test App in order to get
    114  *         this functionality On.
    115  */
    116 /* ======================================================================= */
    117 #undef NBAMRENC_DEBUGMEM
    118 
    119 /* ======================================================================= */
    120 /**
    121  * @def    AMRENC_EPRINT   Error print macro
    122  */
    123 /* ======================================================================= */
    124 #ifndef UNDER_CE
    125     #ifdef ANDROID
    126         #define AMRENC_EPRINT LOGE
    127     #else
    128         #define AMRENC_EPRINT(...)    fprintf(stderr,__VA_ARGS__)
    129     #endif
    130 #else
    131         #define AMRENC_EPRINT
    132 #endif
    133 
    134 
    135 
    136 /* ======================================================================= */
    137 /**
    138  * @def    AMRENC_DEBUG   Debug print macro
    139  */
    140 /* ======================================================================= */
    141 #ifndef UNDER_CE
    142 
    143 #ifdef  AMRENC_DEBUG
    144         #define AMRENC_DPRINT(...)    fprintf(stderr,__VA_ARGS__)
    145 
    146     #ifdef ANDROID
    147         #undef AMRENC_DPRINT
    148         #define AMRENC_DPRINT LOGW
    149     #endif
    150 
    151 #else
    152         #define AMRENC_DPRINT(...)
    153 #endif
    154 
    155 
    156 /* ======================================================================= */
    157 /**
    158  * @def    AMRENC_MEMCHECK   Memory print macro
    159  */
    160 /* ======================================================================= */
    161 #ifdef  AMRENC_MEMCHECK
    162     #define AMRENC_MEMPRINT(...)    fprintf(stderr,__VA_ARGS__)
    163 
    164     #ifdef ANDROID
    165         #undef AMRENC_MEMPRINT
    166         #define AMRENC_MEMPRINT LOGW
    167     #endif
    168 
    169 #else
    170         #define AMRENC_MEMPRINT(...)    printf
    171 #endif
    172 
    173 #else   /*UNDER_CE*/
    174 /* ======================================================================= */
    175 /**
    176  * @def    AMRENC_DEBUG   Debug print macro
    177  */
    178 /* ======================================================================= */
    179 #ifdef  AMRENC_DEBUG
    180         #define AMRENC_DPRINT(STR, ARG...) printf()
    181 #else
    182 
    183 #endif
    184 /* ======================================================================= */
    185 /**
    186  * @def    AMRENC_MEMCHECK   Memory print macro
    187  */
    188 /* ======================================================================= */
    189 #ifdef  AMRENC_MEMCHECK
    190         #define AMRENC_MEMPRINT(STR, ARG...) printf()
    191 #else
    192 
    193 #endif
    194 
    195 #ifdef UNDER_CE
    196 
    197 #ifdef DEBUG
    198     #ifdef ANDROID
    199         #define AMRENC_DPRINT     LOGW
    200         #define AMRENC_MEMPRINT   LOGW
    201     #else
    202         #define AMRENC_DPRINT     printf
    203         #define AMRENC_MEMPRINT   printf
    204     #endif
    205 #else
    206         #define AMRENC_DPRINT
    207         #define AMRENC_MEMPRINT
    208 #endif
    209 
    210 #endif  /*UNDER_CE*/
    211 
    212 #endif
    213 
    214 /* ======================================================================= */
    215 /**
    216  *  M A C R O S FOR MALLOC and MEMORY FREE and CLOSING PIPES
    217  */
    218 /* ======================================================================= */
    219 
    220 #define OMX_NBCONF_INIT_STRUCT(_s_, _name_) \
    221     memset((_s_), 0x0, sizeof(_name_)); \
    222     (_s_)->nSize = sizeof(_name_);      \
    223     (_s_)->nVersion.s.nVersionMajor = 0x1;  \
    224     (_s_)->nVersion.s.nVersionMinor = 0x0;  \
    225     (_s_)->nVersion.s.nRevision = 0x0;      \
    226     (_s_)->nVersion.s.nStep = 0x0
    227 
    228 #define OMX_NBCLOSE_PIPE(_pStruct_,err)\
    229     OMXDBG_PRINT(stderr, COMM, 2, OMX_DBG_BASEMASK, "%d :: CLOSING PIPE \n",__LINE__); \
    230     err = close (_pStruct_);\
    231     if(0 != err && OMX_ErrorNone == eError){\
    232         eError = OMX_ErrorHardware;\
    233         OMXDBG_PRINT(stderr, ERROR, 4, 0, "%d :: Error while closing pipe\n",__LINE__);\
    234         goto EXIT;\
    235     }
    236 
    237 #define NBAMRENC_OMX_ERROR_EXIT(_e_, _c_, _s_)\
    238     _e_ = _c_;\
    239     OMXDBG_PRINT(stderr, ERROR, 4, 0, "\n**************** OMX ERROR ************************\n");\
    240     OMXDBG_PRINT(stderr, ERROR, 4, 0, "%d : Error Name: %s : Error Num = %x",__LINE__, _s_, _e_);\
    241     OMXDBG_PRINT(stderr, ERROR, 4, 0, "\n**************** OMX ERROR ************************\n");\
    242     goto EXIT;
    243 
    244 /* ======================================================================= */
    245 /**
    246  * @def NBAMRENC_NUM_INPUT_BUFFERS   Default number of input buffers
    247  */
    248 /* ======================================================================= */
    249 #define NBAMRENC_NUM_INPUT_BUFFERS 1
    250 /* ======================================================================= */
    251 /**
    252  * @def NBAMRENC_NUM_INPUT_BUFFERS_DASF  Default No.of input buffers DASF
    253  */
    254 /* ======================================================================= */
    255 #define NBAMRENC_NUM_INPUT_BUFFERS_DASF 2
    256 /* ======================================================================= */
    257 /**
    258  * @def NBAMRENC_NUM_OUTPUT_BUFFERS   Default number of output buffers
    259  */
    260 /* ======================================================================= */
    261 #define NBAMRENC_NUM_OUTPUT_BUFFERS 1
    262 /* ======================================================================= */
    263 /**
    264  * @def NBAMRENC_INPUT_BUFFER_SIZE       Default input buffer size
    265  *      NBAMRENC_INPUT_BUFFER_SIZE_DASF  Default input buffer size DASF
    266  *      NBAMRENC_INPUT_FRAME_SIZE        Default input Frame Size
    267  */
    268 /* ======================================================================= */
    269 #define NBAMRENC_INPUT_BUFFER_SIZE 320
    270 #define NBAMRENC_INPUT_BUFFER_SIZE_DASF 320
    271 #define NBAMRENC_INPUT_FRAME_SIZE 320
    272 /* ======================================================================= */
    273 /**
    274  * @def NBAMRENC_OUTPUT_BUFFER_SIZE   Default output buffer size
    275  *      NBAMRENC_OUTPUT_FRAME_SIZE    Default output frame size
    276  */
    277 /* ======================================================================= */
    278 #define NBAMRENC_OUTPUT_BUFFER_SIZE 118
    279 #define NBAMRENC_OUTPUT_FRAME_SIZE 118
    280 /* ======================================================================= */
    281 /**
    282  * @def NBAMRENC_OUTPUT_BUFFER_SIZE_MIME  Default input buffer size MIME
    283  */
    284 /* ======================================================================= */
    285 #define NBAMRENC_OUTPUT_BUFFER_SIZE_MIME 34
    286 
    287 /* ======================================================================= */
    288 /**
    289  * @def NBAMRENC_OUTPUT_BUFFER_SIZE_MIME  Default input buffer size IF2
    290  */
    291 /* ======================================================================= */
    292 #define NBAMRENC_OUTPUT_BUFFER_SIZE_IF2 32
    293 
    294 /* ======================================================================= */
    295 /**
    296  * @def NBAMRENC_OUTPUT_BUFFER_SIZE_EFR  Default input buffer size EFR
    297  */
    298 /* ======================================================================= */
    299 #define NBAMRENC_OUTPUT_BUFFER_SIZE_EFR 120
    300 
    301 /* ======================================================================= */
    302 /*
    303  * @def NBAMRENC_APP_ID  App ID Value setting
    304  */
    305 /* ======================================================================= */
    306 #define NBAMRENC_APP_ID 100
    307 
    308 /* ======================================================================= */
    309 /**
    310  * @def    NBAMRENC_SAMPLING_FREQUENCY   Sampling frequency
    311  */
    312 /* ======================================================================= */
    313 #define NBAMRENC_SAMPLING_FREQUENCY 8000
    314 /* ======================================================================= */
    315 /**
    316  * @def    NBAMRENC_CPU_LOAD                    CPU Load in MHz
    317  */
    318 /* ======================================================================= */
    319 #define NBAMRENC_CPU_LOAD 12
    320 /* ======================================================================= */
    321 /**
    322  * @def    NBAMRENC_MAX_NUM_OF_BUFS   Maximum number of buffers
    323  */
    324 /* ======================================================================= */
    325 #define NBAMRENC_MAX_NUM_OF_BUFS 15
    326 /* ======================================================================= */
    327 /**
    328  * @def    NBAMRENC_NUM_OF_PORTS   Number of ports
    329  */
    330 /* ======================================================================= */
    331 #define NBAMRENC_NUM_OF_PORTS 2
    332 /* ======================================================================= */
    333 /**
    334  * @def    NBAMRENC_XXX_VER    Component version
    335  */
    336 /* ======================================================================= */
    337 #define NBAMRENC_MAJOR_VER 0x1
    338 #define NBAMRENC_MINOR_VER 0x1
    339 /* ======================================================================= */
    340 /**
    341  * @def    NBAMRENC_NOT_USED    Defines a value for "don't care" parameters
    342  */
    343 /* ======================================================================= */
    344 #define NBAMRENC_NOT_USED 10
    345 /* ======================================================================= */
    346 /**
    347  * @def    NBAMRENC_NORMAL_BUFFER  Defines flag value with all flags off
    348  */
    349 /* ======================================================================= */
    350 #define NBAMRENC_NORMAL_BUFFER 0
    351 /* ======================================================================= */
    352 /**
    353  * @def    OMX_NBAMRENC_DEFAULT_SEGMENT    Default segment ID for the LCML
    354  */
    355 /* ======================================================================= */
    356 #define NBAMRENC_DEFAULT_SEGMENT (0)
    357 /* ======================================================================= */
    358 /**
    359  * @def    OMX_NBAMRENC_SN_TIMEOUT    Timeout value for the socket node
    360  */
    361 /* ======================================================================= */
    362 #define NBAMRENC_SN_TIMEOUT (-1)
    363 /* ======================================================================= */
    364 /**
    365  * @def    OMX_NBAMRENC_SN_PRIORITY   Priority for the socket node
    366  */
    367 /* ======================================================================= */
    368 #define NBAMRENC_SN_PRIORITY (10)
    369 /* ======================================================================= */
    370 /**
    371  * @def    OMX_NBAMRENC_NUM_DLLS   number of DLL's
    372  */
    373 /* ======================================================================= */
    374 #define NBAMRENC_NUM_DLLS (2)
    375 /* ======================================================================= */
    376 /**
    377  * @def    NBAMRENC_USN_DLL_NAME   USN DLL name
    378  */
    379 /* ======================================================================= */
    380 #ifdef UNDER_CE
    381     #define NBAMRENC_USN_DLL_NAME "\\windows\\usn.dll64P"
    382 #else
    383     #define NBAMRENC_USN_DLL_NAME "usn.dll64P"
    384 #endif
    385 
    386 /* ======================================================================= */
    387 /**
    388  * @def    NBAMRENC_DLL_NAME   NBAMR Encoder socket node dll name
    389  */
    390 /* ======================================================================= */
    391 #ifdef UNDER_CE
    392     #define NBAMRENC_DLL_NAME "\\windows\\nbamrenc_sn.dll64P"
    393 #else
    394     #define NBAMRENC_DLL_NAME "nbamrenc_sn.dll64P"
    395 #endif
    396 
    397 /* ======================================================================= */
    398 /** NBAMRENC_StreamType  Stream types
    399 *
    400 *  @param  NBAMRENC_DMM                 DMM
    401 *
    402 *  @param  NBAMRENC_INSTRM              Input stream
    403 *
    404 *  @param  NBAMRENC_OUTSTRM             Output stream
    405 */
    406 /* ======================================================================= */
    407 enum NBAMRENC_StreamType {
    408     NBAMRENC_DMM = 0,
    409     NBAMRENC_INSTRM,
    410     NBAMRENC_OUTSTRM
    411 };
    412 /* ======================================================================= */
    413 /** NBAMRENC_EncodeType  coding types
    414 *
    415 *  @param  NBAMRENC_NBAMR           NBAMR mode
    416 *
    417 *  @param  NBAMRENC_EFR             EFR mode
    418 *
    419 */
    420 /* ======================================================================= */
    421 enum NBAMRENC_EncodeType {
    422     NBAMRENC_NBAMR = 0,
    423     NBAMRENC_EFR
    424 };
    425 /* ======================================================================= */
    426 /** NBAMRENC_MimeMode  format types
    427 *
    428 *  @param  NBAMRENC_MIMEMODE                MIME
    429 *
    430 *  @param  NBAMRENC_FORMATCONFORMANCE       NBAMR mode
    431 *
    432 *  @param  NBAMRENC_IF2                     IF2
    433 *
    434 */
    435 /* ======================================================================= */
    436 enum NBAMRENC_MimeMode {
    437     NBAMRENC_FORMATCONFORMANCE = 0,
    438     NBAMRENC_MIMEMODE,
    439     NBAMRENC_IF2
    440 };
    441 
    442 /* ======================================================================= */
    443 /*
    444  * Different Frame sizes for different index in MIME Mode
    445  */
    446 /* ======================================================================= */
    447 #define NBAMRENC_FRAME_SIZE_0   0
    448 #define NBAMRENC_FRAME_SIZE_1   1
    449 #define NBAMRENC_FRAME_SIZE_6   6
    450 #define NBAMRENC_FRAME_SIZE_13  13
    451 #define NBAMRENC_FRAME_SIZE_14  14
    452 #define NBAMRENC_FRAME_SIZE_16  16
    453 #define NBAMRENC_FRAME_SIZE_18  18
    454 #define NBAMRENC_FRAME_SIZE_19  19
    455 #define NBAMRENC_FRAME_SIZE_20  20
    456 #define NBAMRENC_FRAME_SIZE_21  21
    457 #define NBAMRENC_FRAME_SIZE_26  26
    458 #define NBAMRENC_FRAME_SIZE_27  27
    459 #define NBAMRENC_FRAME_SIZE_31  31
    460 #define NBAMRENC_FRAME_SIZE_32  32
    461 
    462 
    463 
    464 /* ======================================================================= */
    465 /**
    466  * @def NBAMRENC_TIMEOUT Default timeout used to come out of blocking calls
    467  */
    468 /* ======================================================================= */
    469 #define NBAMRENC_TIMEOUT 1000
    470 /* ======================================================================= */
    471 /*
    472  * @def NBAMRENC_OMX_MAX_TIMEOUTS   Max Time Outs
    473  * @def NBAMRENC_DONT_CARE          Dont Care Condition
    474  * @def NBAMRENC_NUM_CHANNELS       Number of Channels
    475  * @def NBAMRENC_APP_ID             App ID Value setting
    476  */
    477 /* ======================================================================= */
    478 #define NBAMRENC_OMX_MAX_TIMEOUTS 20
    479 #define NBAMRENC_DONT_CARE 0
    480 #define NBAMRENC_NUM_CHANNELS 1
    481 /* ======================================================================= */
    482 /**
    483  * @def    NBAMRENC_STREAM_COUNT    Number of streams
    484  *         NBAMRENC_INPUT_STREAM_ID Stream ID for Input Buffer
    485  */
    486 /* ======================================================================= */
    487 #define NBAMRENC_STREAM_COUNT 2
    488 #define NBAMRENC_INPUT_STREAM_ID 0
    489 
    490 /* ======================================================================= */
    491 /**
    492  * @def _ERROR_PROPAGATION__     Allow Logic to Detec&Report Arm Errors
    493  */
    494 /* ======================================================================= */
    495 #define _ERROR_PROPAGATION__
    496 
    497 
    498 typedef struct PV_OMXComponentCapabilityFlagsType
    499 {
    500         ////////////////// OMX COMPONENT CAPABILITY RELATED MEMBERS (for opencore compatability)
    501         OMX_BOOL iIsOMXComponentMultiThreaded;
    502         OMX_BOOL iOMXComponentSupportsExternalOutputBufferAlloc;
    503         OMX_BOOL iOMXComponentSupportsExternalInputBufferAlloc;
    504         OMX_BOOL iOMXComponentSupportsMovableInputBuffers;
    505         OMX_BOOL iOMXComponentSupportsPartialFrames;
    506         OMX_BOOL iOMXComponentNeedsNALStartCode;
    507         OMX_BOOL iOMXComponentCanHandleIncompleteFrames;
    508 } PV_OMXComponentCapabilityFlagsType;
    509 /* ======================================================================= */
    510 /** NBAMRENC_COMP_PORT_TYPE  Port types
    511  *
    512  *  @param  NBAMRENC_INPUT_PORT             Input port
    513  *
    514  *  @param  NBAMRENC_OUTPUT_PORT            Output port
    515  */
    516 /*  ====================================================================== */
    517 /*This enum must not be changed. */
    518 typedef enum NBAMRENC_COMP_PORT_TYPE {
    519     NBAMRENC_INPUT_PORT = 0,
    520     NBAMRENC_OUTPUT_PORT
    521 }NBAMRENC_COMP_PORT_TYPE;
    522 
    523 /* ======================================================================= */
    524 /** NBAMRENC_BUFFER_Dir  Buffer Direction
    525 *
    526 *  @param  NBAMRENC_DIRECTION_INPUT     Input direction
    527 *
    528 *  @param  NBAMRENC_DIRECTION_OUTPUT    Output direction
    529 *
    530 */
    531 /* ======================================================================= */
    532 typedef enum {
    533     NBAMRENC_DIRECTION_INPUT,
    534     NBAMRENC_DIRECTION_OUTPUT
    535 }NBAMRENC_BUFFER_Dir;
    536 
    537 /* ======================================================================= */
    538 /** AUDIO_SN_AMRBANDMODETYPE            BitRate Enum on the format used by
    539 *                                       the SN
    540 *  @param  SN_AUDIO_BR_X
    541 */
    542 /* ======================================================================= */
    543 typedef enum AUDIO_SN_AMRBANDMODETYPE {
    544      SN_AUDIO_BR122 = 0,
    545      SN_AUDIO_BR102,
    546      SN_AUDIO_BR795,
    547      SN_AUDIO_BR74,
    548      SN_AUDIO_BR67,
    549      SN_AUDIO_BR59,
    550      SN_AUDIO_BR515,
    551      SN_AUDIO_475,
    552      SN_AUDIO_AMRBandModeMax = 0x7FFFFFFF
    553 }AUDIO_SN_AMRBANDMODETYPE;
    554 
    555 /* ======================================================================= */
    556 /** NBAMRENC_BUFFS  Buffer details
    557 *
    558 *  @param  BufHeader Buffer header
    559 *
    560 *  @param  Buffer   Buffer
    561 *
    562 */
    563 /* ======================================================================= */
    564 typedef struct NBAMRENC_BUFFS {
    565     char BufHeader;
    566     char Buffer;
    567 }NBAMRENC_BUFFS;
    568 
    569 /* ======================================================================= */
    570 /** NBAMRENC_BUFFERHEADERTYPE_INFO
    571 *
    572 *  @param  pBufHeader
    573 *
    574 *  @param  bBufOwner
    575 *
    576 */
    577 /* ======================================================================= */
    578 typedef struct NBAMRENC_BUFFERHEADERTYPE_INFO {
    579     OMX_BUFFERHEADERTYPE* pBufHeader[NBAMRENC_MAX_NUM_OF_BUFS];
    580     NBAMRENC_BUFFS bBufOwner[NBAMRENC_MAX_NUM_OF_BUFS];
    581 }NBAMRENC_BUFFERHEADERTYPE_INFO;
    582 
    583 
    584 typedef OMX_ERRORTYPE (*NBAMRENC_fpo)(OMX_HANDLETYPE);
    585 
    586 /* =================================================================================== */
    587 /**
    588 * Socket node Audio Codec Configuration parameters.
    589 */
    590 /* =================================================================================== */
    591 typedef struct NBAMRENC_AudioCodecParams {
    592     unsigned long  iSamplingRate;
    593     unsigned long  iStrmId;
    594     unsigned short iAudioFormat;
    595 }NBAMRENC_AudioCodecParams;
    596 
    597 /* =================================================================================== */
    598 /**
    599 * NBAMRENC_TALGCtrl                 Socket Node Alg Control parameters.
    600 * NBAMRENC_TALGCtrlDTX                 Socket Node Alg Control parameters (DTX).
    601 * NBAMRENC_UAlgInBufParamStruct     Input Buffer Param Structure
    602 * NBAMRENC_UAlgOutBufParamStruct    Output Buffer Param Structure
    603 */
    604 /* =================================================================================== */
    605 /* Algorithm specific command parameters */
    606 typedef struct {
    607     int iSize;
    608     unsigned int iBitrate;
    609 
    610 }NBAMRENC_TALGCtrl;
    611 
    612 typedef struct {
    613     int iSize;
    614     unsigned int iVADFlag;
    615 
    616 }NBAMRENC_TALGCtrlDTX;
    617 /* =================================================================================== */
    618 /**
    619 * NBAMRENC_UAlgInBufParamStruct     Input Buffer Param Structure
    620 * usLastFrame                       To Send Last Buufer Flag
    621 */
    622 /* =================================================================================== */
    623 typedef struct {
    624         unsigned long int usLastFrame;
    625 }NBAMRENC_FrameStruct;
    626 
    627 typedef struct{
    628          unsigned long int usNbFrames;
    629          NBAMRENC_FrameStruct *pParamElem;
    630 }NBAMRENC_ParamStruct;
    631 
    632 /* =================================================================================== */
    633 /**
    634 * NBAMRENC_LCML_BUFHEADERTYPE Buffer Header Type
    635 */
    636 /* =================================================================================== */
    637 typedef struct NBAMRENC_LCML_BUFHEADERTYPE {
    638       NBAMRENC_BUFFER_Dir eDir;
    639       NBAMRENC_FrameStruct *pFrameParam;
    640       NBAMRENC_ParamStruct *pBufferParam;
    641       DMM_BUFFER_OBJ* pDmmBuf;
    642       OMX_BUFFERHEADERTYPE* buffer;
    643 }NBAMRENC_LCML_BUFHEADERTYPE;
    644 
    645 typedef struct _NBAMRENC_BUFFERLIST NBAMRENC_BUFFERLIST;
    646 
    647 /* =================================================================================== */
    648 /**
    649 * _NBAMRENC_BUFFERLIST Structure for buffer list
    650 */
    651 /* ================================================================================== */
    652 struct _NBAMRENC_BUFFERLIST{
    653     OMX_BUFFERHEADERTYPE sBufHdr;
    654     OMX_BUFFERHEADERTYPE *pBufHdr[NBAMRENC_MAX_NUM_OF_BUFS];
    655     OMX_U32 bufferOwner[NBAMRENC_MAX_NUM_OF_BUFS];
    656     OMX_U32 bBufferPending[NBAMRENC_MAX_NUM_OF_BUFS];
    657     OMX_U16 numBuffers;
    658     NBAMRENC_BUFFERLIST *pNextBuf;
    659     NBAMRENC_BUFFERLIST *pPrevBuf;
    660 };
    661 
    662 /* =================================================================================== */
    663 /**
    664 * NBAMRENC_PORT_TYPE Structure for PortFormat details
    665 */
    666 /* =================================================================================== */
    667 typedef struct NBAMRENC_PORT_TYPE {
    668     OMX_HANDLETYPE hTunnelComponent;
    669     OMX_U32 nTunnelPort;
    670     OMX_BUFFERSUPPLIERTYPE eSupplierSetting;
    671     OMX_U8 nBufferCnt;
    672     OMX_AUDIO_PARAM_PORTFORMATTYPE* pPortFormat;
    673 } NBAMRENC_PORT_TYPE;
    674 
    675 #ifdef UNDER_CE
    676     #ifndef _OMX_EVENT_
    677         #define _OMX_EVENT_
    678         typedef struct OMX_Event {
    679             HANDLE event;
    680         } OMX_Event;
    681     #endif
    682     int OMX_CreateEvent(OMX_Event *event);
    683     int OMX_SignalEvent(OMX_Event *event);
    684     int OMX_WaitForEvent(OMX_Event *event);
    685     int OMX_DestroyEvent(OMX_Event *event);
    686 #endif
    687 
    688 /* =================================================================================== */
    689 /**
    690 * NBAMRENC_BUFDATA
    691 */
    692 /* =================================================================================== */
    693 typedef struct NBAMRENC_BUFDATA {
    694    OMX_U8 nFrames;
    695 }NBAMRENC_BUFDATA;
    696 
    697 /* =================================================================================== */
    698 /**
    699 * AMRENC_COMPONENT_PRIVATE Component private data Structure
    700 */
    701 /* =================================================================================== */
    702 typedef struct AMRENC_COMPONENT_PRIVATE
    703 {
    704     /** Array of pointers to BUFFERHEADERTYPE structues
    705        This pBufHeader[INPUT_PORT] will point to all the
    706        BUFFERHEADERTYPE structures related to input port,
    707        not just one structure. Same is the case for output
    708        port also. */
    709     OMX_BUFFERHEADERTYPE* pBufHeader[NBAMRENC_NUM_OF_PORTS];
    710     OMX_U32 nRuntimeInputBuffers;
    711 
    712     OMX_U32 nRuntimeOutputBuffers;
    713     OMX_CALLBACKTYPE cbInfo;
    714     OMX_PORT_PARAM_TYPE* sPortParam;
    715     OMX_PRIORITYMGMTTYPE* sPriorityMgmt;
    716 
    717 #ifdef RESOURCE_MANAGER_ENABLED
    718     RMPROXY_CALLBACKTYPE rmproxyCallback;
    719 #endif
    720 
    721     OMX_BOOL bPreempted;
    722 
    723     OMX_PARAM_PORTDEFINITIONTYPE* pPortDef[NBAMRENC_NUM_OF_PORTS];
    724     OMX_PORT_PARAM_TYPE* pPortParamType;
    725     OMX_AUDIO_PARAM_AMRTYPE* amrParams;
    726     OMX_AUDIO_PARAM_PCMMODETYPE* pcmParams;
    727     NBAMRENC_BUFFERHEADERTYPE_INFO BufInfo[NBAMRENC_NUM_OF_PORTS];
    728     NBAMRENC_PORT_TYPE *pCompPort[NBAMRENC_NUM_OF_PORTS];
    729     NBAMRENC_LCML_BUFHEADERTYPE *pLcmlBufHeader[NBAMRENC_NUM_OF_PORTS];
    730     /** This is component handle */
    731     OMX_COMPONENTTYPE* pHandle;
    732     /** Current state of this component */
    733     OMX_STATETYPE curState;
    734     /** The component thread handle */
    735     pthread_t ComponentThread;
    736     /** The pipes for sending buffers to the thread */
    737     int dataPipe[2];
    738     /** The pipes for sending command to the thread */
    739     int cmdPipe[2];
    740     /** The pipes for sending cmd data to the thread */
    741     int cmdDataPipe[2];
    742 
    743     OMX_U32 efrMode;
    744 
    745     OMX_U32 amrMode;
    746 
    747     OMX_U32 dasfMode;
    748 
    749     OMX_U32 frameMode;
    750 
    751     OMX_U32 acdnMode;
    752 
    753     OMX_U32 nMultiFrameMode;
    754 
    755     OMX_S32 fdwrite;
    756 
    757     OMX_S32 fdread;
    758 
    759     /** Set to indicate component is stopping */
    760     OMX_U32 bIsStopping;
    761 
    762     OMX_U32 bIsThreadstop;
    763 
    764     /** Count of number of buffers outstanding with bridge */
    765     OMX_U32 lcml_nIpBuf;
    766 
    767     /** Count of number of buffers outstanding with bridge */
    768     OMX_U32 lcml_nOpBuf;
    769 
    770     OMX_U32 app_nBuf;
    771 
    772     OMX_U32 num_Op_Issued;
    773 
    774     OMX_U32 streamID;
    775 
    776     OMX_U32 bCompThreadStarted;
    777 
    778     OMX_U32 nVersion;
    779 
    780     OMX_U32 amrMimeBytes[16];
    781 
    782     OMX_U32 amrIf2Bytes[16];
    783 
    784     OMX_U32 iHoldLen;
    785 
    786     OMX_U32 nHoldLength;
    787 
    788     OMX_U32 nFillThisBufferCount;
    789 
    790     OMX_U32 nFillBufferDoneCount;
    791 
    792     OMX_U32 nEmptyThisBufferCount;
    793 
    794     OMX_U32 nEmptyBufferDoneCount;
    795 
    796     OMX_U32 bInitParamsInitialized;
    797 
    798     OMX_U32 nNumInputBufPending;
    799 
    800     OMX_U32 nNumOutputBufPending;
    801 
    802     OMX_U32 bDisableCommandPending;
    803 
    804     OMX_U32 bEnableCommandPending;
    805 
    806     OMX_U32 bDisableCommandParam;
    807 
    808     OMX_U32 bEnableCommandParam;
    809 
    810     OMX_HANDLETYPE pLcmlHandle;
    811 
    812     OMX_PTR pMarkData;
    813 
    814     OMX_MARKTYPE *pMarkBuf;
    815 
    816     OMX_HANDLETYPE hMarkTargetComponent;
    817 
    818     NBAMRENC_BUFFERLIST *pInputBufferList;
    819 
    820     NBAMRENC_BUFFERLIST *pOutputBufferList;
    821 
    822     LCML_STRMATTR *strmAttr;
    823 
    824     NBAMRENC_TALGCtrl *pAlgParam;
    825 
    826     NBAMRENC_TALGCtrlDTX *pAlgParamDTX;
    827 
    828     NBAMRENC_AudioCodecParams *pParams;
    829 
    830     OMX_STRING cComponentName;
    831 
    832     OMX_VERSIONTYPE ComponentVersion;
    833 
    834     OMX_BUFFERHEADERTYPE *pInputBufHdrPending[NBAMRENC_MAX_NUM_OF_BUFS];
    835 
    836     OMX_BUFFERHEADERTYPE *pOutputBufHdrPending[NBAMRENC_MAX_NUM_OF_BUFS];
    837 
    838     OMX_BUFFERHEADERTYPE *iMMFDataLastBuffer;
    839 
    840     OMX_U8 *pHoldBuffer,*pHoldBuffer2;
    841 
    842     OMX_U8* iHoldBuffer;
    843 
    844 
    845     /** Flag to set when socket node stop callback should not transition
    846         component to OMX_StateIdle */
    847     OMX_U32 bNoIdleOnStop;
    848 
    849     /** Flag set when socket node is stopped */
    850     OMX_U32 bDspStoppedWhileExecuting;
    851 
    852     /** Number of outstanding FillBufferDone() calls */
    853     OMX_S32 nOutStandingFillDones;
    854     OMX_S32 nOutStandingEmptyDones;
    855 
    856 #ifndef UNDER_CE
    857     pthread_mutex_t AlloBuf_mutex;
    858     pthread_cond_t AlloBuf_threshold;
    859     OMX_U8 AlloBuf_waitingsignal;
    860 
    861     pthread_mutex_t codecStop_mutex;
    862     pthread_cond_t codecStop_threshold;
    863     OMX_U8 codecStop_waitingsignal;
    864 
    865     pthread_mutex_t InLoaded_mutex;
    866     pthread_cond_t InLoaded_threshold;
    867     OMX_U8 InLoaded_readytoidle;
    868 
    869     pthread_mutex_t InIdle_mutex;
    870     pthread_cond_t InIdle_threshold;
    871     OMX_U8 InIdle_goingtoloaded;
    872 
    873     OMX_U8 nUnhandledFillThisBuffers;
    874     OMX_U8 nUnhandledEmptyThisBuffers;
    875     OMX_BOOL bFlushOutputPortCommandPending;
    876     OMX_BOOL bFlushInputPortCommandPending;
    877 
    878     pthread_mutex_t ToLoaded_mutex;
    879 #else
    880     OMX_Event AlloBuf_event;
    881     OMX_U8 AlloBuf_waitingsignal;
    882 
    883     OMX_Event InLoaded_event;
    884     OMX_U8 InLoaded_readytoidle;
    885 
    886     OMX_Event InIdle_event;
    887     OMX_U8 InIdle_goingtoloaded;
    888 #endif
    889 
    890     OMX_U8 nNumOfFramesSent;
    891 
    892     OMX_U8 InBuf_Eos_alreadysent;
    893 
    894     OMX_U8 PendingPausedBufs;
    895     OMX_BUFFERHEADERTYPE *pOutputBufHdrPausedPending[NBAMRENC_MAX_NUM_OF_BUFS];
    896 
    897 #ifdef __PERF_INSTRUMENTATION__
    898     PERF_OBJHANDLE pPERF, pPERFcomp;
    899     OMX_U32 nLcml_nCntIp;
    900     OMX_U32 nLcml_nCntOpReceived;
    901 #endif
    902     OMX_BUFFERHEADERTYPE *LastOutbuf;
    903     OMX_BOOL bIsInvalidState;
    904 
    905     OMX_STRING* sDeviceString;
    906 
    907     void* ptrLibLCML;
    908 
    909     /** Circular array to keep buffer timestamps */
    910     OMX_S64 arrBufIndex[NBAMRENC_MAX_NUM_OF_BUFS];
    911     /** Circular array to keep buffer nTickCounts */
    912     OMX_S64 arrTickCount[NBAMRENC_MAX_NUM_OF_BUFS];
    913     /** Index to arrBufIndex[], used for input buffer timestamps */
    914     OMX_U8 IpBufindex;
    915     /** Index to arrBufIndex[], used for output buffer timestamps */
    916     OMX_U8 OpBufindex;
    917     OMX_TICKS TimeStamp;
    918     OMX_BOOL bFirstInputBufReceived;
    919 
    920     OMX_S8 ProcessingInputBuf;
    921     OMX_S8 ProcessingOutputBuf;
    922 
    923     OMX_BOOL bLoadedCommandPending;
    924     OMX_BOOL bLoadedWaitingFreeBuffers;
    925 
    926     OMX_PARAM_COMPONENTROLETYPE componentRole;
    927     OMX_U32 teeMode;
    928     PV_OMXComponentCapabilityFlagsType iPVCapabilityFlags;
    929 
    930     struct OMX_TI_Debug dbg;
    931 
    932     /* Reference count for pending state change requests */
    933     OMX_U32 nPendingStateChangeRequests;
    934     pthread_mutex_t mutexStateChangeRequest;
    935     pthread_cond_t StateChangeCondition;
    936 } AMRENC_COMPONENT_PRIVATE;
    937 
    938 
    939 #ifndef UNDER_CE
    940     OMX_ERRORTYPE OMX_ComponentInit (OMX_HANDLETYPE hComp);
    941 #else
    942 /*  WinCE Implicit Export Syntax */
    943 #define OMX_EXPORT __declspec(dllexport)
    944 /* =================================================================================== */
    945 /**
    946 *  OMX_ComponentInit()  Initializes component
    947 *
    948 *
    949 *  @param hComp         OMX Handle
    950 *
    951 *  @return OMX_ErrorNone = Successful
    952 *          Other error code = fail
    953 *
    954 */
    955 /* =================================================================================== */
    956 OMX_EXPORT OMX_ERRORTYPE OMX_ComponentInit (OMX_HANDLETYPE hComp);
    957 #endif
    958 /* =================================================================================== */
    959 /**
    960 *  NBAMRENC_StartComponentThread()  Starts component thread
    961 *
    962 *
    963 *  @param hComp         OMX Handle
    964 *
    965 *  @return OMX_ErrorNone = Successful
    966 *          Other error code = fail
    967 *
    968 */
    969 /* =================================================================================== */
    970 OMX_ERRORTYPE NBAMRENC_StartComponentThread(OMX_HANDLETYPE pHandle);
    971 /* =================================================================================== */
    972 /**
    973 *  NBAMRENC_StopComponentThread()  Stops component thread
    974 *
    975 *
    976 *  @param hComp         OMX Handle
    977 *
    978 *  @return OMX_ErrorNone = Successful
    979 *          Other error code = fail
    980 *
    981 */
    982 /* =================================================================================== */
    983 OMX_ERRORTYPE NBAMRENC_StopComponentThread(OMX_HANDLETYPE pHandle);
    984 /* =================================================================================== */
    985 /**
    986 *  NBAMRENC_FreeCompResources()  Frees allocated memory
    987 *
    988 *
    989 *  @param hComp         OMX Handle
    990 *
    991 *  @return OMX_ErrorNone = Successful
    992 *          Other error code = fail
    993 *
    994 */
    995 /* =================================================================================== */
    996 OMX_ERRORTYPE NBAMRENC_FreeCompResources(OMX_HANDLETYPE pComponent);
    997 /* =================================================================================== */
    998 /**
    999 *  NBAMRENC_GetCorrespondingLCMLHeader()  Returns LCML header
   1000 * that corresponds to the given buffer
   1001 *
   1002 *  @param pComponentPrivate Component private data
   1003 *
   1004 *  @return OMX_ErrorNone = Successful
   1005 *          Other error code = fail
   1006 */
   1007 /* =================================================================================== */
   1008 OMX_ERRORTYPE NBAMRENC_GetCorrespondingLCMLHeader(AMRENC_COMPONENT_PRIVATE *pComponentPrivate,
   1009                                                   OMX_U8 *pBuffer,
   1010                                                   OMX_DIRTYPE eDir,
   1011                                                   NBAMRENC_LCML_BUFHEADERTYPE **ppLcmlHdr);
   1012 /* =================================================================================== */
   1013 /**
   1014 *  NBAMRENC_LCMLCallback() Callback from LCML
   1015 *
   1016 *  @param event     Codec Event
   1017 *
   1018 *  @param args      Arguments from LCML
   1019 *
   1020 *  @return OMX_ErrorNone = Successful
   1021 *          Other error code = fail
   1022 */
   1023 /* =================================================================================== */
   1024 OMX_ERRORTYPE NBAMRENC_LCMLCallback(TUsnCodecEvent event,
   1025                                     void * args [10]);
   1026 /* =================================================================================== */
   1027 /**
   1028 *  NBAMRENC_FillLCMLInitParams() Fills the parameters needed
   1029 * to initialize the LCML
   1030 *
   1031 *  @param pHandle OMX Handle
   1032 *
   1033 *  @param plcml_Init LCML initialization parameters
   1034 *
   1035 *  @return OMX_ErrorNone = Successful
   1036 *          Other error code = fail
   1037 *
   1038 */
   1039 /* =================================================================================== */
   1040 OMX_ERRORTYPE NBAMRENC_FillLCMLInitParams(OMX_HANDLETYPE pHandle,
   1041                                           LCML_DSP *plcml_Init,
   1042                                           OMX_U16 arr[]);
   1043 /* =================================================================================== */
   1044 /**
   1045 *  NBAMRENC_GetBufferDirection() Returns direction of pBufHeader
   1046 *
   1047 *  @param pBufHeader        Buffer header
   1048 *
   1049 *  @param eDir              Buffer direction
   1050 *
   1051 *  @param pComponentPrivate Component private data
   1052 *
   1053 *  @return OMX_ErrorNone = Successful
   1054 *          Other error code = fail
   1055 */
   1056 /* =================================================================================== */
   1057 OMX_ERRORTYPE NBAMRENC_GetBufferDirection(OMX_BUFFERHEADERTYPE *pBufHeader,
   1058                                           OMX_DIRTYPE *eDir);
   1059 /* ===========================================================  */
   1060 /**
   1061 *  NBAMRENC_HandleCommand()  Handles commands sent via SendCommand()
   1062 *
   1063 *  @param pComponentPrivate Component private data
   1064 *
   1065 *  @return OMX_ErrorNone = Successful
   1066 *          Other error code = fail
   1067 *  @return OMX_ErrorNone = Successful
   1068 *          Other error code = fail
   1069 */
   1070 /* =================================================================================== */
   1071 OMX_U32 NBAMRENC_HandleCommand(AMRENC_COMPONENT_PRIVATE *pComponentPrivate);
   1072 /* =================================================================================== */
   1073 /**
   1074 *  NBAMRENC_HandleDataBufFromApp()  Handles data buffers received
   1075 * from the IL Client
   1076 *
   1077 *  @param pComponentPrivate Component private data
   1078 *
   1079 *  @return OMX_ErrorNone = Successful
   1080 *          Other error code = fail
   1081 *  @return OMX_ErrorNone = Successful
   1082 *          Other error code = fail
   1083 */
   1084 /* =================================================================================== */
   1085 OMX_ERRORTYPE NBAMRENC_HandleDataBufFromApp(OMX_BUFFERHEADERTYPE *pBufHeader,
   1086                                             AMRENC_COMPONENT_PRIVATE *pComponentPrivate);
   1087 /* =================================================================================== */
   1088 /**
   1089 *  NBAMRENC_GetLCMLHandle()  Get the handle to the LCML
   1090 *
   1091 *
   1092 *  @return OMX_ErrorNone = Successful
   1093 *          Other error code = fail
   1094 */
   1095 /* =================================================================================== */
   1096 OMX_HANDLETYPE NBAMRENC_GetLCMLHandle(AMRENC_COMPONENT_PRIVATE *pComponentPrivate);
   1097 /* =================================================================================== */
   1098 /**
   1099 *  NBAMRENC_FreeLCMLHandle()  Frees the handle to the LCML
   1100 *
   1101 *
   1102 *  @return OMX_ErrorNone = Successful
   1103 *          Other error code = fail
   1104 */
   1105 /* =================================================================================== */
   1106 OMX_ERRORTYPE NBAMRENC_FreeLCMLHandle(AMRENC_COMPONENT_PRIVATE *pComponentPrivate);
   1107 /* =================================================================================== */
   1108 /**
   1109 *  NBAMRENC_CleanupInitParams()  Starts component thread
   1110 *
   1111 *  @param pComponent        OMX Handle
   1112 *
   1113 *  @return OMX_ErrorNone = Successful
   1114 *          Other error code = fail
   1115 */
   1116 /* =================================================================================== */
   1117 OMX_ERRORTYPE NBAMRENC_CleanupInitParams(OMX_HANDLETYPE pHandle);
   1118 /* =================================================================================== */
   1119 /**
   1120 *  NBAMRENC_SetPending()  Called when the component queues a buffer
   1121 * to the LCML
   1122 *
   1123 *  @param pComponentPrivate     Component private data
   1124 *
   1125 *  @param pBufHdr               Buffer header
   1126 *
   1127 *  @param eDir                  Direction of the buffer
   1128 *
   1129 *  @return None
   1130 */
   1131 /* =================================================================================== */
   1132 void NBAMRENC_SetPending(AMRENC_COMPONENT_PRIVATE *pComponentPrivate,
   1133                          OMX_BUFFERHEADERTYPE *pBufHdr,
   1134                          OMX_DIRTYPE eDir,
   1135                          OMX_U32 lineNumber);
   1136 /* =================================================================================== */
   1137 /**
   1138 *  NBAMRENC_ClearPending()  Called when a buffer is returned
   1139 * from the LCML
   1140 *
   1141 *  @param pComponentPrivate     Component private data
   1142 *
   1143 *  @param pBufHdr               Buffer header
   1144 *
   1145 *  @param eDir                  Direction of the buffer
   1146 *
   1147 *  @return None
   1148 */
   1149 /* =================================================================================== */
   1150 void NBAMRENC_ClearPending(AMRENC_COMPONENT_PRIVATE *pComponentPrivate,
   1151                            OMX_BUFFERHEADERTYPE *pBufHdr,
   1152                            OMX_DIRTYPE eDir,
   1153                            OMX_U32 lineNumber);
   1154 /* =================================================================================== */
   1155 /**
   1156 *  NBAMRENC_IsPending()
   1157 *
   1158 *
   1159 *  @param pComponentPrivate     Component private data
   1160 *
   1161 *  @return OMX_ErrorNone = Successful
   1162 *          Other error code = fail
   1163 */
   1164 /* =================================================================================== */
   1165 OMX_U32 NBAMRENC_IsPending(AMRENC_COMPONENT_PRIVATE *pComponentPrivate,
   1166                            OMX_BUFFERHEADERTYPE *pBufHdr,
   1167                            OMX_DIRTYPE eDir);
   1168 /* =================================================================================== */
   1169 /**
   1170 *  NBAMRENC_FillLCMLInitParamsEx()  Fills the parameters needed
   1171 * to initialize the LCML without recreating the socket node
   1172 *
   1173 *  @param pComponent            OMX Handle
   1174 *
   1175 *  @return None
   1176 */
   1177 /* =================================================================================== */
   1178 OMX_ERRORTYPE NBAMRENC_FillLCMLInitParamsEx(OMX_HANDLETYPE pComponent);
   1179 /* =================================================================================== */
   1180 /**
   1181 *  NBAMRENC_IsValid() Returns whether a buffer is valid
   1182 *
   1183 *
   1184 *  @param pComponentPrivate     Component private data
   1185 *
   1186 *  @param pBuffer               Data buffer
   1187 *
   1188 *  @param eDir                  Buffer direction
   1189 *
   1190 *  @return OMX_True = Valid
   1191 *          OMX_False= Invalid
   1192 */
   1193 /* =================================================================================== */
   1194 OMX_U32 NBAMRENC_IsValid(AMRENC_COMPONENT_PRIVATE *pComponentPrivate,
   1195                          OMX_U8 *pBuffer,
   1196                          OMX_DIRTYPE eDir);
   1197 
   1198 #ifdef RESOURCE_MANAGER_ENABLED
   1199 void NBAMRENC_ResourceManagerCallback(RMPROXY_COMMANDDATATYPE cbData);
   1200 #endif
   1201 /* ======================================================================= */
   1202 /** OMX_NBAMRENC_INDEXAUDIOTYPE  Defines the custom configuration settings
   1203 *                              for the component
   1204 *
   1205 *  @param  OMX_IndexCustomNBAMRENCModeConfig      Sets the DASF mode
   1206 *
   1207 *
   1208 */
   1209 /*  ==================================================================== */
   1210 typedef enum OMX_NBAMRENC_INDEXAUDIOTYPE {
   1211     OMX_IndexCustomNBAMRENCModeConfig = 0xFF000001,
   1212     OMX_IndexCustomNBAMRENCStreamIDConfig,
   1213     OMX_IndexCustomNBAMRENCDataPath,
   1214     OMX_IndexCustomDebug
   1215 }OMX_NBAMRENC_INDEXAUDIOTYPE;
   1216 
   1217 OMX_ERRORTYPE OMX_DmmMap(DSP_HPROCESSOR ProcHandle, int size, void* pArmPtr, DMM_BUFFER_OBJ* pDmmBuf, struct OMX_TI_Debug dbg);
   1218 OMX_ERRORTYPE OMX_DmmUnMap(DSP_HPROCESSOR ProcHandle, void* pMapPtr, void* pResPtr, struct OMX_TI_Debug dbg);
   1219 
   1220 void NBAMRENC_HandleUSNError (AMRENC_COMPONENT_PRIVATE *pComponentPrivate, OMX_U32 arg);
   1221 OMX_ERRORTYPE AddStateTransition(AMRENC_COMPONENT_PRIVATE *pComponentPrivate);
   1222 OMX_ERRORTYPE RemoveStateTransition(AMRENC_COMPONENT_PRIVATE *pComponentPrivate, OMX_BOOL bEnableSignal);
   1223 
   1224 /*===============================================================*/
   1225 
   1226 typedef enum {
   1227     IUALG_CMD_STOP             = 0,
   1228     IUALG_CMD_PAUSE            = 1,
   1229     IUALG_CMD_GETSTATUS        = 2,
   1230     IUALG_CMD_SETSTATUS        = 3,
   1231     IUALG_CMD_USERSETCMDSTART  = 100,
   1232     IUALG_CMD_USERGETCMDSTART  = 150,
   1233     IUALG_CMD_FLUSH            = 0x100
   1234 }IUALG_Cmd;
   1235 
   1236 typedef enum
   1237 {
   1238     ALGCMD_BITRATE = IUALG_CMD_USERSETCMDSTART,
   1239     ALGCMD_DTX
   1240 
   1241 } eSPEECHENCODE_AlgCmd;
   1242 
   1243 #endif  /* OMX_AMRENC_UTILS__H */
   1244