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