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_G729Decoder.h
     30  *
     31  * This header file contains data and function prototypes for G729 DECODER OMX
     32  *
     33  * @path  $(OMAPSW_MPU)\linux\audio\src\openmax_il\g729_dec\inc
     34  *
     35  * @rev  0.3
     36  */
     37 /* -----------------------------------------------------------------------------
     38  *!
     39  *! Revision History
     40  *! ===================================
     41  *! Date         Author(s)            Version  Description
     42  *! ---------    -------------------  -------  ---------------------------------
     43  *! 03-Jan-2007  A.Donjon             0.1      Code update for G729 DECODER
     44  *! 16-Feb-2007  A.Donjon             0.2      Frame Lost
     45  *! 08-Jun-2007  A.Donjon             0.3      Variable input buffer size
     46  *!
     47  *!
     48  * ================================================================================= */
     49 /* ------compilation control switches -------------------------*/
     50 #ifndef OMX_G729DECODER_H
     51 #define OMX_G729DECODER_H
     52 
     53 #include <LCML_DspCodec.h>
     54 #include <OMX_Component.h>
     55 #include <pthread.h>
     56 
     57 #ifdef RESOURCE_MANAGER_ENABLED
     58 #include <ResourceManagerProxyAPI.h>
     59 #endif
     60 
     61 #ifdef __PERF_INSTRUMENTATION__
     62 #include "perf.h"
     63 #endif
     64 
     65 #undef G729DEC_PRINT
     66 #undef G729DEC_DEBUG
     67 #undef G729DEC_MEMCHECK
     68 
     69 /* ======================================================================= */
     70 /**
     71  * @def    G729D_TIMEOUT   Default timeout used to come out of blocking calls
     72  */
     73 /* ======================================================================= */
     74 #define G729D_TIMEOUT (1000) /* millisecs */
     75 
     76 
     77 /* ======================================================================= */
     78 /**
     79  * @def    NUM_G729DEC_INPUT_BUFFERS              Number of Input Buffers
     80  */
     81 /* ======================================================================= */
     82 #define NUM_G729DEC_INPUT_BUFFERS 1
     83 
     84 /* ======================================================================= */
     85 /**
     86  * @def    NUM_G729DEC_OUTPUT_BUFFERS              Number of Output Buffers
     87  */
     88 /* ======================================================================= */
     89 #define NUM_G729DEC_OUTPUT_BUFFERS 1
     90 
     91 /* ======================================================================= */
     92 /**
     93  * @def    G729DEC_PACKETS_PER_BUFFER             Number of PACKETS PER BUFFER
     94  */
     95 /* ======================================================================= */
     96 #define G729DEC_PACKETS_PER_BUFFER 1
     97 
     98 /* ======================================================================= */
     99 /**
    100  * @def    NUM_G729DEC_OUTPUT_BUFFERS_DASF         Number of Output Buffers
    101  *                                                  in DASF mode
    102  */
    103 /* ======================================================================= */
    104 #define NUM_G729DEC_OUTPUT_BUFFERS_DASF 2
    105 
    106 /* ======================================================================= */
    107 /**
    108  * @def    INPUT_G729DEC_BUFFER_SIZE             Standart Input Buffer Size
    109  *                                                (1 packet)
    110  */
    111 /* ======================================================================= */
    112 #define INPUT_G729DEC_BUFFER_SIZE_MIN 11
    113 
    114 /* ======================================================================= */
    115 /**
    116  * @def    OUTPUT_G729DEC_BUFFER_SIZE           Standart Output Buffer Size
    117  *                                               (1 frame)
    118  */
    119 /* ======================================================================= */
    120 #define OUTPUT_G729DEC_BUFFER_SIZE_MIN 80<<1
    121 
    122 /* ======================================================================= */
    123 /**
    124  * @def    G729DEC_SHIFT_OFFSET           Shift Amount to move low 8 bits to high 8 bits in 32 bit field
    125  */
    126 /* ======================================================================= */
    127 #define G729DEC_SHIFT_OFFSET 24
    128 
    129 /* ======================================================================= */
    130 /**
    131  * @def    STREAM_COUNT                         Stream Count value for
    132  *                                              LCML init.
    133  */
    134 /* ======================================================================= */
    135 #define STREAM_COUNT 2
    136 
    137 /* ======================================================================= */
    138 /**
    139  * @def    INPUT_STREAM_ID                      Input Stream ID
    140  */
    141 /* ======================================================================= */
    142 #define INPUT_STREAM_ID 0
    143 
    144 /* ======================================================================= */
    145 /**
    146  * @def    G729DEC_SAMPLING_FREQUENCY          Sampling Frequency
    147  */
    148 /* ======================================================================= */
    149 #define G729DEC_SAMPLING_FREQUENCY 8000
    150 
    151 /* ======================================================================= */
    152 /**
    153  * @def    MAX_NUM_OF_BUFS                      Max Num of Bufs Allowed
    154  */
    155 /* ======================================================================= */
    156 #define MAX_NUM_OF_BUFS 10
    157 
    158 /* ======================================================================= */
    159 /**
    160  * @def    EXTRA_BUFFBYTES                Num of Extra Bytes to be allocated
    161  */
    162 /* ======================================================================= */
    163 #define EXTRA_BUFFBYTES (256)
    164 
    165 /* ======================================================================= */
    166 /**
    167  * @def  CACHE_ALIGNMENT                           Buffer Cache Alignment
    168  */
    169 /* ======================================================================= */
    170 #define CACHE_ALIGNMENT 128
    171 
    172 /* ======================================================================= */
    173 /**
    174  * @def    NUM_OF_PORTS                       Number of Comunication Port
    175  */
    176 /* ======================================================================= */
    177 #define NUM_OF_PORTS 2
    178 
    179 /* ======================================================================= */
    180 #define G729DEC_CPU 50 /* TBD, 50MHz for the moment */
    181 /* =======================================================================
    182  * @def OMX_G729MALLOC_STRUCT                          structure allocation macro
    183  */
    184 /* ======================================================================= */
    185 #define OMX_G729MALLOC_STRUCT(_pStruct_, _sName_)               \
    186     _pStruct_ = (_sName_*)malloc(sizeof(_sName_));              \
    187     if(_pStruct_ == NULL){                                      \
    188         printf("***********************************\n");        \
    189         printf("%d :: Malloc Failed\n",__LINE__);               \
    190         printf("***********************************\n");        \
    191         eError = OMX_ErrorInsufficientResources;                \
    192         goto EXIT;                                              \
    193     }                                                           \
    194     memset(_pStruct_, 0x0, sizeof(_sName_));                    \
    195     G729DEC_MEMPRINT("%d :: [ALLOC] %p\n",__LINE__,_pStruct_);
    196 
    197 #define OMX_G729CONF_INIT_STRUCT(_s_, _name_)   \
    198     memset((_s_), 0x0, sizeof(_name_));         \
    199     (_s_)->nSize = sizeof(_name_);              \
    200     (_s_)->nVersion.s.nVersionMajor = 0x1;      \
    201     (_s_)->nVersion.s.nVersionMinor = 0x1;      \
    202     (_s_)->nVersion.s.nRevision = 0x0;          \
    203     (_s_)->nVersion.s.nStep = 0x0;
    204 
    205 #define OMX_G729MEMFREE_STRUCT(_pStruct_)                       \
    206     if(_pStruct_ != NULL)                                       \
    207     {                                                           \
    208         G729DEC_MEMPRINT("%d :: [FREE] %p\n", __LINE__, _pStruct_); \
    209         free(_pStruct_);                                        \
    210         _pStruct_ = NULL;                                       \
    211     }
    212 
    213 /****************************************************************
    214  *  INCLUDE FILES
    215  ****************************************************************/
    216 /* ----- system and platform files ----------------------------*/
    217 /*-------program files ----------------------------------------*/
    218 
    219 /****************************************************************
    220  * EXTERNAL REFERENCES NOTE : only use if not found in header file
    221  ****************************************************************/
    222 /*--------data declarations -----------------------------------*/
    223 /*--------function prototypes ---------------------------------*/
    224 
    225 /****************************************************************
    226  * PUBLIC DECLARATIONS Defined here, used elsewhere
    227  ****************************************************************/
    228 /*--------data declarations -----------------------------------*/
    229 
    230 /*--------function prototypes ---------------------------------*/
    231 
    232 /****************************************************************
    233  * PRIVATE DECLARATIONS Defined here, used only here
    234  ****************************************************************/
    235 /*--------data declarations -----------------------------------*/
    236 /* ======================================================================= */
    237 /** G729DEC_COMP_PORT_TYPE  Port Type
    238  *
    239  *  @param  G729DEC_INPUT_PORT                   Port Type Input
    240  *
    241  *  @param  G729DEC_OUTPUT_PORT                  Port Type Output
    242  *
    243  */
    244 /*  ==================================================================== */
    245 typedef enum G729DEC_COMP_PORT_TYPE {
    246     G729DEC_INPUT_PORT = 0,
    247     G729DEC_OUTPUT_PORT
    248 }G729DEC_COMP_PORT_TYPE;
    249 
    250 /* ======================================================================= */
    251 /** G729DEC_StreamType  StreamType
    252  *
    253  *  @param  G729DEC_DMM                  Stream Type DMM
    254  *
    255  *  @param  G729DEC_INSTRM               Stream Type Input
    256  *
    257  *  @param  G729DEC_OUTSTRM              Stream Type Output
    258  */
    259 /*  ==================================================================== */
    260 enum G729DEC_StreamType
    261     {
    262         G729DEC_DMM,
    263         G729DEC_INSTRM,
    264         G729DEC_OUTSTRM
    265     };
    266 
    267 
    268 /* ======================================================================= */
    269 /** G729DEC_BUFFER_Dir  Direction of the Buffer
    270  *
    271  *  @param  G729DEC_DIRECTION_INPUT              Direction Input
    272  *
    273  *  @param  G729DEC_DIRECTION_INPUT              Direction Output
    274  */
    275 /*  ==================================================================== */
    276 typedef enum {
    277     G729DEC_DIRECTION_INPUT,
    278     G729DEC_DIRECTION_OUTPUT
    279 }G729DEC_BUFFER_Dir;
    280 
    281 /* =================================================================================== */
    282 /**
    283  *  Buffer Information.
    284  */
    285 /* ================================================================================== */
    286 typedef struct BUFFS
    287 {
    288     OMX_S8 BufHeader;
    289     OMX_S8 Buffer;
    290 }BUFFS;
    291 
    292 /* =================================================================================== */
    293 /**
    294  * NBAMR Buffer Header Type Info.
    295  */
    296 /* ================================================================================== */
    297 typedef struct BUFFERHEADERTYPE_INFO
    298 {
    299     OMX_BUFFERHEADERTYPE* pBufHeader[MAX_NUM_OF_BUFS];
    300     BUFFS bBufOwner[MAX_NUM_OF_BUFS];
    301 }BUFFERHEADERTYPE_INFO;
    302 
    303 /* =================================================================================== */
    304 /**
    305  * Socket node input parameters.
    306  */
    307 /* ================================================================================== */
    308 typedef struct G729DEC_AudioCodecParams
    309 {
    310     unsigned long iSamplingRate;
    311     unsigned long iStrmId;
    312     unsigned short iAudioFormat;
    313 }G729DEC_AudioCodecParams;
    314 
    315 /* =================================================================================== */
    316 /**
    317  * Socket node alg parameters..
    318  */
    319 /* ================================================================================== */
    320 typedef struct G729DEC_UAlgBufParamStruct
    321 {
    322     unsigned long usLastFrame;      /* Last frame to decode */
    323     unsigned long usFrameLost;      /* Lost frame flag */
    324 }G729DEC_UAlgBufParamStruct;
    325 
    326 /* =================================================================================== */
    327 /**
    328  * LCML_G729DEC_BUFHEADERTYPE
    329  */
    330 /* ================================================================================== */
    331 typedef struct LCML_G729DEC_BUFHEADERTYPE {
    332     G729DEC_BUFFER_Dir eDir;
    333     OMX_BUFFERHEADERTYPE* buffer;
    334     G729DEC_UAlgBufParamStruct *pIpParam;
    335 }LCML_G729DEC_BUFHEADERTYPE;
    336 
    337 
    338 typedef struct _G729DEC_BUFFERLIST G729DEC_BUFFERLIST;
    339 
    340 /* =================================================================================== */
    341 /**
    342  * Structure for buffer list
    343  */
    344 /* ================================================================================== */
    345 struct _G729DEC_BUFFERLIST{
    346     OMX_BUFFERHEADERTYPE sBufHdr;
    347     OMX_BUFFERHEADERTYPE *pBufHdr[MAX_NUM_OF_BUFS];  /* records buffer header send by client */
    348     OMX_U32 bufferOwner[MAX_NUM_OF_BUFS];
    349     OMX_U32 bBufferPending[MAX_NUM_OF_BUFS];
    350     OMX_U32 numBuffers;
    351     G729DEC_BUFFERLIST *pNextBuf;
    352     G729DEC_BUFFERLIST *pPrevBuf;
    353 };
    354 
    355 /* =================================================================================== */
    356 /**
    357  * Component private data
    358  */
    359 /* ================================================================================== */
    360 typedef struct G729DEC_COMPONENT_PRIVATE
    361 {
    362     /** Array of pointers to BUFFERHEADERTYPE structures
    363         This pBufHeader[G729DEC_INPUT_PORT] will point to all the
    364         BUFFERHEADERTYPE structures related to input port,
    365         not just one structure. Same is for output port
    366         also. */
    367 
    368     OMX_BUFFERHEADERTYPE* pBufHeader[NUM_OF_PORTS];
    369 
    370     BUFFERHEADERTYPE_INFO BufInfo[NUM_OF_PORTS];
    371 
    372     /** Structure of callback pointers */
    373     OMX_CALLBACKTYPE cbInfo;
    374 
    375     /** Handle for use with async callbacks */
    376     OMX_PORT_PARAM_TYPE sPortParam;
    377 
    378     OMX_PRIORITYMGMTTYPE* sPriorityMgmt;
    379 
    380     /** Input port parameters */
    381     OMX_AUDIO_PARAM_PORTFORMATTYPE* pInPortFormat;
    382 
    383     /** Output port parameters */
    384     OMX_AUDIO_PARAM_PORTFORMATTYPE* pOutPortFormat;
    385 
    386     /** This will contain info like how many buffers
    387         are there for input/output ports, their size etc, but not
    388         BUFFERHEADERTYPE POINTERS. */
    389     OMX_PARAM_PORTDEFINITIONTYPE* pPortDef[NUM_OF_PORTS];
    390 
    391     /** G729 Component Parameters */
    392     OMX_AUDIO_PARAM_G729TYPE* g729Params;
    393     OMX_AUDIO_PARAM_PCMMODETYPE* pcmParams;
    394 
    395     /** This is component handle */
    396     OMX_COMPONENTTYPE* pHandle;
    397 
    398     /** Current state of this component */
    399     OMX_STATETYPE curState;
    400 
    401     /** The component thread handle */
    402     pthread_t ComponentThread;
    403 
    404     /** The pipes for sending buffers to the thread */
    405     int dataPipe[2];
    406 
    407     /** The pipes for sending buffers to the thread */
    408     int cmdPipe[2];
    409 
    410     /** The pipes for sending buffers to the thread */
    411     int cmdDataPipe[2];
    412 
    413     /** The pipes for sending buffers to the thread */
    414     int lcml_Pipe[2];
    415 
    416     /** Set to indicate component is stopping */
    417     OMX_U32 bIsStopping;
    418 
    419     /** Flag set when the EOF marker is sent */
    420     OMX_U32 bIsEOFSent;
    421 
    422     /** Count of number of buffers outstanding with bridge */
    423     OMX_U32 lcml_nIpBuf;
    424 
    425     /** Count of number of buffers outstanding with bridge */
    426     OMX_U32 lcml_nOpBuf;
    427 
    428     /** Number of Buffers In the Application*/
    429     OMX_U32 app_nBuf;
    430 
    431     /** LCML Number Input Buffer Received*/
    432     OMX_U32 lcml_nCntIp;
    433 
    434     /** LCML Number Output Buffer Received*/
    435     OMX_U32 lcml_nCntOpReceived;
    436 
    437     /** Num Reclaimed OutPut Buff    */
    438     OMX_U32 num_Reclaimed_Op_Buff;
    439 
    440     /** Num Sent Input Buff   */
    441     OMX_U32 num_Sent_Ip_Buff;
    442 
    443     /** Num Sent Output Buff Issued   */
    444     OMX_U32 num_Op_Issued;
    445 
    446     /** LCML Handle */
    447     OMX_HANDLETYPE pLcmlHandle;
    448 
    449     /** LCML Buffer Header */
    450     LCML_G729DEC_BUFHEADERTYPE *pLcmlBufHeader[2];
    451 
    452     /** Sampling Frequeny */
    453     OMX_S16 iG729SamplingFrequeny;
    454 
    455     /** Number of channels */
    456     OMX_S16 iG729Channels;
    457 
    458     /** Flag for Post Filter mode */
    459     OMX_S16 iPostFilt;
    460 
    461     /** Flag for DASF mode */
    462     OMX_S16 dasfmode;
    463 
    464     /** Flag for ACDN mode */
    465     OMX_S16 acdnmode;
    466 
    467     /** Writing pipe Used for DSP_RENDERING_ON */
    468     int fdwrite;
    469 
    470     /** Reading pipe Used for DSP_RENDERING_ON */
    471     int fdread;
    472 
    473     /* ID stream ID*/
    474     OMX_U32 streamID;
    475 
    476     /* Flag for Port Defs Allocated*/
    477     OMX_U32 bPortDefsAllocated;
    478 
    479     /* Flag for Component Thread Started*/
    480     OMX_U32 bCompThreadStarted;
    481 
    482     /* Flag for Component Thread Stopping*/
    483     OMX_U32 bCompThreadStop;
    484 
    485     /** Mark data */
    486     OMX_PTR pMarkData;
    487 
    488     /** Mark buffer */
    489     OMX_MARKTYPE *pMarkBuf;
    490 
    491     /** Mark target component */
    492     OMX_HANDLETYPE hMarkTargetComponent;
    493 
    494     /** Flag set when buffer should not be queued to the DSP */
    495     OMX_U32 bBypassDSP;
    496 
    497     /** Input buffer list */
    498     G729DEC_BUFFERLIST *pInputBufferList;
    499 
    500     /** Output buffer list */
    501     G729DEC_BUFFERLIST *pOutputBufferList;
    502 
    503     /** LCML stream attributes */
    504     LCML_STRMATTR *strmAttr;
    505 
    506     /** Component version */
    507     OMX_U32 nVersion;
    508 
    509     /** Play Complete Flag */
    510     OMX_U32 bPlayCompleteFlag;
    511 
    512     /** Number of Bytes holding to be sent*/
    513     OMX_U32 nHoldLength;
    514 
    515     /** Pointer to the data holding to be sent*/
    516     OMX_U8* pHoldBuffer;
    517 
    518     /** Flag set when LCML handle is opened */
    519     OMX_S16 bLcmlHandleOpened;
    520 
    521     /** Keeps track of the number of nFillThisBufferCount() calls */
    522     OMX_U32 nFillThisBufferCount;
    523 
    524     /** Keeps track of the number of nFillBufferDoneCount() calls */
    525     OMX_U32 nFillBufferDoneCount;
    526 
    527     /** Keeps track of the number of nEmptyThisBufferCount() calls */
    528     OMX_U32 nEmptyThisBufferCount;
    529 
    530     /** Keeps track of the number of nEmptyBufferDoneCount() calls */
    531     OMX_U32 nEmptyBufferDoneCount;
    532 
    533     /** Parameters for the Audio Codec */
    534     G729DEC_AudioCodecParams *pParams;
    535 
    536     /** Flag for Init Params Initialized */
    537     OMX_U32 bInitParamsInitialized;
    538 
    539     /** Flag for bIdleCommandPending */
    540     OMX_U32 bIdleCommandPending;
    541 
    542     /** Array of Input Buffers that are pending to sent due State = Idle */
    543     OMX_BUFFERHEADERTYPE *pInputBufHdrPending[MAX_NUM_OF_BUFS];
    544 
    545     /** Number of Input Buffers that are pending to sent due State = Idle */
    546     OMX_U32 nNumInputBufPending;
    547 
    548     /** Array of Output Buffers that are pending to sent due State = Idle */
    549     OMX_BUFFERHEADERTYPE *pOutputBufHdrPending[MAX_NUM_OF_BUFS];
    550 
    551     /** Number of Output Buffers that are pending to sent due State = Idle */
    552     OMX_U32 nNumOutputBufPending;
    553 
    554     /** Flag for Reenabling Ports*/
    555     OMX_U32 bJustReenabled;
    556 
    557     /** Flag for Invalid Frame Count*/
    558     OMX_U32 nInvalidFrameCount;
    559 
    560     /** Flag for Writes While Paused   */
    561     OMX_U32 nDataWritesWhilePaused;
    562 
    563     /** Flag for bDisableCommandPending*/
    564     OMX_U32 bDisableCommandPending;
    565     OMX_U32 bEnableCommandPending;
    566 
    567     /** Flag for bDisableCommandParam*/
    568     OMX_U32 bDisableCommandParam;
    569     OMX_U32 bEnableCommandParam;
    570 
    571     /** Flag to set when socket node stop callback should not transition
    572         component to OMX_StateIdle */
    573     OMX_U32 bNoIdleOnStop;
    574 
    575     /** Flag set when socket node is stopped */
    576     OMX_U32 bDspStoppedWhileExecuting;
    577 
    578     /** Number of outstanding FillBufferDone() calls */
    579     OMX_S32 nOutStandingFillDones;
    580 
    581     /** Stop Codec Command Sent Flag*/
    582     OMX_U8 bStopSent;
    583 
    584     OMX_U32 nRuntimeInputBuffers;
    585     OMX_U32 nRuntimeOutputBuffers;
    586 
    587     OMX_STRING* sDeviceString;
    588 
    589     OMX_U32 nPacketsPerBuffer;
    590 
    591 #ifndef UNDER_CE
    592     pthread_mutex_t AlloBuf_mutex;
    593     pthread_cond_t AlloBuf_threshold;
    594     OMX_U8 AlloBuf_waitingsignal;
    595 
    596     pthread_mutex_t InLoaded_mutex;
    597     pthread_cond_t InLoaded_threshold;
    598     OMX_U8 InLoaded_readytoidle;
    599 
    600     pthread_mutex_t InIdle_mutex;
    601     pthread_cond_t InIdle_threshold;
    602     OMX_U8 InIdle_goingtoloaded;
    603 #else
    604     OMX_Event AlloBuf_event;
    605     OMX_U8 AlloBuf_waitingsignal;
    606 
    607     OMX_Event InLoaded_event;
    608     OMX_U8 InLoaded_readytoidle;
    609 
    610     OMX_Event InIdle_event;
    611     OMX_U8 InIdle_goingtoloaded;
    612 #endif
    613 
    614     /** Holds the value of RT Mixer mode  */
    615     OMX_U32 rtmx;
    616 
    617     OMX_BOOL bLoadedCommandPending;
    618     OMX_BOOL bFlushEventPending;
    619 
    620     OMX_PARAM_COMPONENTROLETYPE componentRole;
    621 
    622     /** Keep buffer timestamps **/
    623     OMX_S64 arrTimestamp[MAX_NUM_OF_BUFS];
    624 
    625     /** Keep buffer timestamps **/
    626     OMX_S64 arrTickCount[MAX_NUM_OF_BUFS];
    627 
    628     /** Index to arrBufIndex[], used for input buffer timestamps */
    629     OMX_U8 IpBufindex;
    630 
    631     /** Index to arrBufIndex[], used for output buffer timestamps */
    632     OMX_U8 OpBufindex;
    633 
    634     OMX_U8 nUnhandledFillThisBuffers;
    635     OMX_U8 nUnhandledEmptyThisBuffers;
    636     OMX_BOOL bFlushOutputPortCommandPending;
    637     OMX_BOOL bFlushInputPortCommandPending;
    638 
    639     /* array to hold buffer parameters */
    640     unsigned long int* bufParamsArray;
    641 
    642     OMX_BOOL bPreempted;
    643 
    644     /** Pointer to RM callback **/
    645 #ifdef RESOURCE_MANAGER_ENABLED
    646     RMPROXY_CALLBACKTYPE rmproxyCallback;
    647 #endif
    648 
    649 
    650 #ifdef __PERF_INSTRUMENTATION__
    651     PERF_OBJHANDLE pPERF, pPERFcomp;
    652     OMX_U32 nLcml_nCntIp;
    653     OMX_U32 nLcml_nCntOpReceived;
    654 #endif
    655 
    656 
    657 } G729DEC_COMPONENT_PRIVATE;
    658 
    659 /* ===========================================================================*/
    660 /**
    661  *   Private data that application associates with buffer
    662  */
    663 /* ===========================================================================*/
    664 
    665 typedef struct G729DEC_BufParamStruct
    666 {
    667     OMX_U16 frameLost;      /* Lost frame flag from GPP */
    668     unsigned long int numPackets;
    669     unsigned long int packetLength[6];
    670     OMX_BOOL bNoUseDefaults;
    671 
    672 } G729DEC_BufParamStruct;
    673 
    674 
    675 typedef enum OMX_G729DEC_INDEXAUDIOTYPE {
    676     OMX_IndexCustomG729DecModeAcdnConfig = 0xFF000001,
    677     OMX_IndexCustomG729DecModeDasfConfig,
    678     OMX_IndexCustomG729DecHeaderInfoConfig,
    679     OMX_IndexCustomG729DecDataPath
    680 }OMX_G729DEC_INDEXAUDIOTYPE;
    681 
    682 
    683 /*--------function prototypes ---------------------------------*/
    684 #ifndef UNDER_CE
    685 
    686 OMX_ERRORTYPE OMX_ComponentInit (OMX_HANDLETYPE hComp);
    687 
    688 #else
    689 /* =================================================================================== */
    690 /**
    691  *   OMX_EXPORT                                           WinCE Implicit Export Syntax
    692  */
    693 /* ================================================================================== */
    694 #define OMX_EXPORT __declspec(dllexport)
    695 
    696 OMX_EXPORT OMX_ERRORTYPE OMX_ComponentInit (OMX_HANDLETYPE hComp);
    697 
    698 #endif
    699 
    700 
    701 OMX_ERRORTYPE G729DEC_StartComponentThread(OMX_HANDLETYPE pHandle);
    702 OMX_ERRORTYPE G729DEC_StopComponentThread(OMX_HANDLETYPE pHandle);
    703 OMX_ERRORTYPE G729DEC_FreeCompResources(OMX_HANDLETYPE pComponent);
    704 void SendFlushCompleteEvent(G729DEC_COMPONENT_PRIVATE *pComponentPrivate, int port);
    705 
    706 #ifdef RESOURCE_MANAGER_ENABLED
    707 /***********************************
    708  *  Callback to the RM                                       *
    709  ***********************************/
    710 void G729DEC_ResourceManagerCallback(RMPROXY_COMMANDDATATYPE cbData);
    711 #endif
    712 
    713 /*--------macros ----------------------------------------------*/
    714 #ifndef UNDER_CE
    715 #ifdef  G729DEC_DEBUG
    716 #define G729DEC_DPRINT(...)    fprintf(stderr,__VA_ARGS__)
    717 #define G729DEC_EPRINT(...)    fprintf(stderr,__VA_ARGS__)
    718 #else
    719 #define G729DEC_DPRINT(...)
    720 #define G729DEC_EPRINT(...)
    721 #endif
    722 
    723 #ifdef  G729DEC_MEMCHECK
    724 #define G729DEC_MEMPRINT(...)    fprintf(stderr,__VA_ARGS__)
    725 #else
    726 #define G729DEC_MEMPRINT(...)
    727 #endif
    728 
    729 
    730 #ifdef  G729DEC_DEBUG_MCP
    731 #define G729DEC_MCP_DPRINT(...)    fprintf(stderr,__VA_ARGS__)
    732 #else
    733 #define G729DEC_MCP_DPRINT(...)
    734 #endif
    735 
    736 #ifdef  G729DEC_PRINT
    737 #define G729DEC_PRINT_INFO(...)    fprintf(stderr,__VA_ARGS__)
    738 #else
    739 #define G729DEC_PRINT_INFO(...)
    740 #endif
    741 
    742 
    743 #else /*UNDER_CE*/
    744 #ifdef DEBUG
    745 #define G729DEC_DPRINT   printf
    746 #define G729DEC_EPRINT   printf
    747 #define G729DEC_MEMPRINT   printf
    748 #define G729DEC_PRINT_INFO printf
    749 #else
    750 #define G729DEC_DPRINT
    751 #define G729DEC_EPRINT
    752 #define G729DEC_MEMPRINT
    753 #define G729DEC_PRINT_INFO
    754 #endif
    755 
    756 #endif
    757 
    758 
    759 
    760 
    761 #endif /* OMX_G729DECODER_H */
    762