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_G711Decoder.h 30 * 31 * This is an header file for an audio PCM decoder that is fully 32 * compliant with the OMX Audio specification. 33 * This the file that the application that uses OMX would include 34 * in its code. 35 * 36 * @path $(CSLPATH)\ 37 * 38 * @rev 0.1 39 */ 40/* --------------------------------------------------------------------------- */ 41 42#ifndef OMX_G711DECODER_H 43#define OMX_G711DECODER_H 44 45#include "LCML_DspCodec.h" 46#include <OMX_Component.h> 47#include <pthread.h> 48 49#ifndef UNDER_CE 50 51#ifdef DSP_RENDERING_ON 52#include <AudioManagerAPI.h> 53#endif 54 55#ifdef RESOURCE_MANAGER_ENABLED 56#include <ResourceManagerProxyAPI.h> 57#endif 58 59#endif 60 61 62/* ======================================================================= */ 63/** 64 * @def EXTRA_BUFFBYTES Num of Extra Bytes to be allocated 65 */ 66/* ======================================================================= */ 67#define EXTRA_BUFFBYTES (256) 68 69/* ======================================================================= */ 70/** 71 * @def G711D_TIMEOUT Default timeout used to come out of blocking calls 72 */ 73/* ======================================================================= */ 74#define G711D_TIMEOUT (1000) /* millisecs */ 75 76/* ======================================================================= */ 77/** 78 * @def NUM_G711DEC_INPUT_BUFFERS Number of Input Buffers 79 */ 80/* ======================================================================= */ 81#define NUM_G711DEC_INPUT_BUFFERS 1 82 83/* ======================================================================= */ 84/** 85 * @def NUM_G711DEC_OUTPUT_BUFFERS Number of Output Buffers 86 */ 87/* ======================================================================= */ 88#define NUM_G711DEC_OUTPUT_BUFFERS 1 89 90/* ======================================================================= */ 91/** 92 * @def NUM_G711DEC_OUTPUT_BUFFERS_DASF Number of Output Buffers 93 * on DASF mode 94 */ 95/* ======================================================================= */ 96#define NUM_G711DEC_OUTPUT_BUFFERS_DASF 2 97 98/* ======================================================================= */ 99/** 100 * @def OUTPUT_G711DEC_BUFFER_SIZE Standart Output Buffer Size 101 */ 102/* ======================================================================= */ 103#define OUTPUT_G711DEC_BUFFER_SIZE 160 104 105/* ======================================================================= */ 106/** 107 * @def INPUT_G711DEC_BUFFER_SIZE Standart Input Buffer Size 108 * 109 */ 110/* ======================================================================= */ 111#define INPUT_G711DEC_BUFFER_SIZE 80 112/* ========================================================================== */ 113/** 114 * @def RTP_Framesize Size in Bytes of determined 115 * frame. Not change it 116 */ 117/* ========================================================================== */ 118#define RTP_Framesize 80 119/* ========================================================================== */ 120/** 121 * @def STD_GSMFRDEC_BUF_SIZE Standart Input Buffer Size 122 */ 123/* ========================================================================== */ 124#define STD_G711DEC_BUF_SIZE 80 125 126/* ======================================================================= */ 127/** 128 * @def STREAM_COUNT Stream Count value for 129 * LCML init. 130 */ 131/* ======================================================================= */ 132#define STREAM_COUNT 2 133 134/* ======================================================================= */ 135/** 136 * @def INPUT_STREAM_ID Input Stream ID 137 */ 138/* ======================================================================= */ 139#define INPUT_STREAM_ID 0 140 141/* ======================================================================= */ 142/** 143 * @def MAX_NUM_OF_BUFS Max Num of Bufs Allowed 144 */ 145/* ======================================================================= */ 146#define MAX_NUM_OF_BUFS 10 147 148/*#define G711DEC_DEBUG 149 #define G711DEC_MEMCHECK*/ 150#undef G711DEC_DEBUG 151#undef G711DEC_MEMCHECK 152 153#if 0 154#define FillBufferDone(handle, appPrivate, buffer) FillBufferDone(handle, appPrivate, buffer); \ 155 printf("FillBufferDone :: line %d, buffer %p\n", __LINE__, buffer) 156#endif 157#if 0 158#define EmptyBufferDone(handle, appPrivate, buffer) EmptyBufferDone(handle, appPrivate, buffer); \ 159 printf("EmptyBufferDone :: line %d, buffer %p\n", __LINE__, buffer) 160#endif 161#ifndef UNDER_CE 162#ifdef G711DEC_DEBUG 163#define G711DEC_DPRINT(...) fprintf(stderr,__VA_ARGS__) 164#else 165#define G711DEC_DPRINT(...) 166#endif 167 168#ifdef G711DEC_MEMCHECK 169#define G711DEC_MEMPRINT(...) fprintf(stderr,__VA_ARGS__) 170#else 171#define G711DEC_MEMPRINT(...) 172#endif 173 174 175#ifdef G711DEC_DEBUG_MCP 176#define G711DEC_MCP_DPRINT(...) fprintf(stderr,__VA_ARGS__) 177#else 178#define G711DEC_MCP_DPRINT(...) 179#endif 180#else /*UNDER_CE*/ 181#ifdef G711DEC_DEBUG 182#define G711DEC_DPRINT(STR, ARG...) printf() 183#else 184#endif 185 186#ifdef G711DEC_MEMCHECK 187#define G711DEC_MEMPRINT(STR, ARG...) printf() 188#else 189#endif 190#ifdef UNDER_CE 191 192#ifdef DEBUG 193#define G711DEC_DPRINT printf 194#define G711DEC_MEMPRINT printf 195 196#else 197#define G711DEC_DPRINT 198#define G711DEC_MEMPRINT 199#endif 200 201#endif //UNDER_CE 202 203#endif 204 205/* ======================================================================= */ 206/** 207 * @def WMADEC_MEMDEBUG Enable memory leaks debuf info 208 */ 209/* ======================================================================= */ 210#undef G711DEC_MEMDEBUG 211 212/* ======================================================================= */ 213/** 214 * @def CACHE_ALIGNMENT Buffer Cache Alignment 215 */ 216/* ======================================================================= */ 217#define CACHE_ALIGNMENT 128 218 219/* ======================================================================= */ 220/** 221 * @def NUM_OF_PORTS Number of Comunication Port 222 */ 223/* ======================================================================= */ 224#define NUM_OF_PORTS 2 225 226 227/* ======================================================================= */ 228/** 229 * M A C R O S FOR MALLOC and MEMORY FREE and CLOSING PIPES 230 */ 231/* ======================================================================= */ 232 233#define OMX_NBCONF_INIT_STRUCT(_s_, _name_) \ 234 memset((_s_), 0x0, sizeof(_name_)); \ 235 (_s_)->nSize = sizeof(_name_); \ 236 (_s_)->nVersion.s.nVersionMajor = 0x1; \ 237 (_s_)->nVersion.s.nVersionMinor = 0x0; \ 238 (_s_)->nVersion.s.nRevision = 0x0; \ 239 (_s_)->nVersion.s.nStep = 0x0 240 241#define G711D_OMX_MALLOC(_pStruct_, _sName_) \ 242 _pStruct_ = (_sName_*)newmalloc(sizeof(_sName_)); \ 243 if(_pStruct_ == NULL){ \ 244 printf("***********************************\n"); \ 245 printf("%d :: Malloc Failed\n",__LINE__); \ 246 printf("***********************************\n"); \ 247 eError = OMX_ErrorInsufficientResources; \ 248 goto EXIT; \ 249 } \ 250 memset(_pStruct_,0,sizeof(_sName_)); \ 251 G711DEC_MEMPRINT("%d :: Malloced = %p\n",__LINE__,_pStruct_); 252 253#define G711D_OMX_MALLOC_SIZE(_ptr_, _size_,_name_) \ 254 _ptr_ = (_name_ *)newmalloc(_size_); \ 255 if(_ptr_ == NULL){ \ 256 printf("***********************************\n"); \ 257 printf("%d :: Malloc Failed\n",__LINE__); \ 258 printf("***********************************\n"); \ 259 eError = OMX_ErrorInsufficientResources; \ 260 goto EXIT; \ 261 } \ 262 memset(_ptr_,0,_size_); \ 263 G711DEC_MEMPRINT("%d :: Malloced = %p\n",__LINE__,_ptr_); 264 265#define OMX_G711DECMEMFREE_STRUCT(_pStruct_) \ 266 if(_pStruct_ != NULL){ \ 267 G711DEC_MEMPRINT("%d :: [FREE] %p\n",__LINE__,_pStruct_); \ 268 newfree(_pStruct_); \ 269 _pStruct_ = NULL; \ 270 } 271 272 273 274 275#define OMX_NBCLOSE_PIPE(_pStruct_,err) \ 276 G711DEC_DPRINT("%d :: CLOSING PIPE \n",__LINE__); \ 277 err = close (_pStruct_); \ 278 if(0 != err && OMX_ErrorNone == eError){ \ 279 eError = OMX_ErrorHardware; \ 280 printf("%d :: Error while closing pipe\n",__LINE__); \ 281 goto EXIT; \ 282 } 283 284/* ======================================================================= */ 285/** G711DEC_COMP_PORT_TYPE Port Type 286 * 287 * @param G711DEC_INPUT_PORT Port Type Input 288 * 289 * @param G711DEC_OUTPUT_PORT Port Type Output 290 * 291 */ 292/* ==================================================================== */ 293typedef enum G711DEC_COMP_PORT_TYPE { 294 G711DEC_INPUT_PORT = 0, 295 G711DEC_OUTPUT_PORT 296}G711DEC_COMP_PORT_TYPE; 297 298/* ======================================================================= */ 299/** G711DEC_StreamType StreamType 300 * 301 * @param G711DEC_DMM Stream Type DMM 302 * 303 * @param G711DEC_INSTRM Stream Type Input 304 * 305 * @param G711DEC_OUTSTRM Stream Type Output 306 */ 307/* ==================================================================== */ 308enum G711DEC_StreamType 309 { 310 G711DEC_DMM, 311 G711DEC_INSTRM, 312 G711DEC_OUTSTRM 313 }; 314 315/* ======================================================================= */ 316/** G711DEC_BUFFER_Dir Direction of the Buffer 317 * 318 * @param G711DEC_DIRECTION_INPUT Direction Input 319 * 320 * @param G711DEC_DIRECTION_INPUT Direction Output 321 */ 322/* ==================================================================== */ 323typedef enum { 324 G711DEC_DIRECTION_INPUT, 325 G711DEC_DIRECTION_OUTPUT 326}G711DEC_BUFFER_Dir; 327 328 329/* =================================================================================== */ 330/** 331 * 332 */ 333/* ================================================================================== */ 334typedef struct G711DEC_FTYPES{ 335 OMX_S16 FrameSizeType; 336 OMX_S16 NmuNLvl; 337 OMX_S16 NoiseLp; 338 OMX_S16 dBmNoise; 339 OMX_S16 plc; 340}G711DEC_FTYPES; 341/* =================================================================================== */ 342/** 343 * Socket node input parameters. 344 */ 345/* ================================================================================== */ 346typedef struct G711DEC_AudioCodecParams 347{ 348 unsigned long iSamplingRate; 349 unsigned long iStrmId; 350 unsigned short iAudioFormat; 351 // unsigned short iFrameFormat; 352}G711DEC_AudioCodecParams; 353 354/* =================================================================================== */ 355/** 356 * Socket node alg parameters.. 357 */ 358/* ================================================================================== */ 359typedef struct { 360 unsigned long usEndOfFile; 361 unsigned long usFrameLost; 362}G711DEC_UAlgInBufParamStruct; 363 364/* ========================================================================== */ 365/** 366 * Socket node alg parameters.. 367 */ 368/* ========================================================================== */ 369typedef struct G711DEC_FrameStruct{ 370 unsigned long usLastFrame; 371 unsigned long usFrameLost; 372 unsigned long frameType; /* 0: voice frame (80 bytes), 1: SID frame (22 bytes), 2: No Data (0 bytes), 3: Frame lost */ 373} G711DEC_FrameStruct; 374 375typedef struct G711DEC_ParamStruct{ 376 unsigned long int usNbFrames; 377 G711DEC_FrameStruct *pParamElem; 378} G711DEC_ParamStruct; 379 380/* =================================================================================== */ 381/** 382 * LCML_G711DEC_BUFHEADERTYPE 383 */ 384/* ================================================================================== */ 385typedef struct LCML_G711DEC_BUFHEADERTYPE { 386 G711DEC_BUFFER_Dir eDir; 387 OMX_BUFFERHEADERTYPE* buffer; 388 G711DEC_UAlgInBufParamStruct *pIpParam; 389 G711DEC_FrameStruct *pFrameParam; 390 G711DEC_ParamStruct *pBufferParam; 391 DMM_BUFFER_OBJ* pDmmBuf; 392}LCML_G711DEC_BUFHEADERTYPE; 393 394#ifndef UNDER_CE 395 396OMX_ERRORTYPE OMX_ComponentInit (OMX_HANDLETYPE hComp); 397 398#else 399/* =================================================================================== */ 400/** 401 * OMX_EXPORT WinCE Implicit Export Syntax 402 */ 403/* ================================================================================== */ 404#define OMX_EXPORT __declspec(dllexport) 405 406OMX_EXPORT OMX_ERRORTYPE OMX_ComponentInit (OMX_HANDLETYPE hComp); 407 408#endif 409 410OMX_ERRORTYPE G711DEC_StartComponentThread(OMX_HANDLETYPE pHandle); 411OMX_ERRORTYPE G711DEC_StopComponentThread(OMX_HANDLETYPE pHandle); 412OMX_ERRORTYPE G711DEC_FreeCompResources(OMX_HANDLETYPE pComponent); 413 414typedef struct _G711DEC_BUFFERLIST G711DEC_BUFFERLIST; 415 416/* =================================================================================== */ 417/** 418 * Structure for buffer list 419 */ 420/* ================================================================================== */ 421struct _G711DEC_BUFFERLIST{ 422 OMX_BUFFERHEADERTYPE *pBufHdr[MAX_NUM_OF_BUFS]; /* records buffer header send by client */ 423 OMX_U32 bufferOwner[MAX_NUM_OF_BUFS]; 424 OMX_U32 bBufferPending[MAX_NUM_OF_BUFS]; 425 OMX_U32 numBuffers; 426}; 427 428/* =================================================================================== */ 429/** 430 * G711ENC_PORT_TYPE Structure for PortFormat details 431 */ 432/* =================================================================================== */ 433typedef struct G711DEC_PORT_TYPE { 434 OMX_HANDLETYPE hTunnelComponent; 435 OMX_U32 nTunnelPort; 436 OMX_BUFFERSUPPLIERTYPE eSupplierSetting; 437 OMX_U8 nBufferCnt; 438 OMX_AUDIO_PARAM_PORTFORMATTYPE* pPortFormat; 439} G711DEC_PORT_TYPE; 440 441OMX_ERRORTYPE OMX_DmmMap(DSP_HPROCESSOR ProcHandle, int size, 442 void* pArmPtr, DMM_BUFFER_OBJ* pDmmBuf); 443OMX_ERRORTYPE OMX_DmmUnMap(DSP_HPROCESSOR ProcHandle, void* pMapPtr, 444 void* pResPtr); 445/* =================================================================================== */ 446/** 447 * Component private data 448 */ 449/* ================================================================================== */ 450typedef struct G711DEC_COMPONENT_PRIVATE 451{ 452#ifdef UNDER_CE 453 OMX_BUFFERHEADERTYPE* pBufHeader[NUM_OF_PORTS]; 454#endif 455 456 /** Structure of callback pointers */ 457 OMX_CALLBACKTYPE cbInfo; 458 459 G711DEC_PORT_TYPE *pCompPort[NUM_OF_PORTS]; 460 461 /** Handle for use with async callbacks */ 462 OMX_PORT_PARAM_TYPE sPortParam; 463 464 /** Input port parameters */ 465 OMX_AUDIO_PARAM_PORTFORMATTYPE sInPortFormat; 466 467 /** Output port parameters */ 468 OMX_AUDIO_PARAM_PORTFORMATTYPE sOutPortFormat; 469 470 /** This will contain info like how many buffers 471 are there for input/output ports, their size etc, but not 472 BUFFERHEADERTYPE POINTERS. */ 473 OMX_PARAM_PORTDEFINITIONTYPE* pPortDef[NUM_OF_PORTS]; 474 475 /** G711 Component Parameters */ 476 OMX_AUDIO_PARAM_PCMMODETYPE* g711Params[NUM_OF_PORTS]; 477 478 /** This is component handle */ 479 OMX_COMPONENTTYPE* pHandle; 480 481 /** Current state of this component */ 482 OMX_STATETYPE curState; 483 484 /** The component thread handle */ 485 pthread_t ComponentThread; 486 487 /** The pipes for sending buffers to the thread */ 488 int dataPipe[2]; 489 490 /** The pipes for sending buffers to the thread */ 491 int cmdPipe[2]; 492 493 /** The pipes for sending buffers to the thread */ 494 int cmdDataPipe[2]; 495 496 /** Set to indicate component is stopping */ 497 OMX_U32 bIsStopping; 498 499 /** Flag set when the EOS marker is sent */ 500 OMX_U32 bIsEOFSent; 501 502 /** Count of number of buffers outstanding with bridge */ 503 OMX_U32 lcml_nIpBuf; 504 505 /** Count of number of buffers outstanding with bridge */ 506 OMX_U32 lcml_nOpBuf; 507 508 /** Number of Buffers In the Application*/ 509 OMX_U32 app_nBuf; 510 511 /** LCML Number Input Buffer Received*/ 512 OMX_U32 lcml_nCntIp; 513 514 /** LCML Number Output Buffer Received*/ 515 OMX_U32 lcml_nCntOpReceived; 516 517 /** Num Reclaimed OutPut Buff */ 518 OMX_U32 num_Reclaimed_Op_Buff; 519 520 /** Num Sent Input Buff */ 521 OMX_U32 num_Sent_Ip_Buff; 522 523 /** Num Sent Output Buff Issued */ 524 OMX_U32 num_Op_Issued; 525 526 /** LCML Handle */ 527 OMX_HANDLETYPE pLcmlHandle; 528 529 /** LCML Buffer Header */ 530 LCML_G711DEC_BUFHEADERTYPE *pLcmlBufHeader[2]; 531 532 /** Flag for G711 mode */ 533 OMX_S16 iG711Mode; 534 535 /** Flag for DASF mode */ 536 OMX_S16 dasfmode; 537 538 /** Flag for ACDN mode */ 539 OMX_S16 acdnmode; 540 541 /** Flag for frame size type mode */ 542 OMX_S16 fsizemode; 543 /** Flag for fram type mode */ 544 OMX_S16 ftype; 545 /** Flag for Noise Level NMU */ 546 OMX_S16 nmulevel; 547 /** Flag for Noise LP */ 548 OMX_S16 noiselp; 549 /** Flag for Noise level in dBm */ 550 OMX_S16 dbmnoise; 551 /** Flag for Noise level in dBm */ 552 OMX_S16 packetlostc; 553 554 /** Writing pipe Used for DSP_RENDERING_ON */ 555 int fdwrite; 556 557 /** Reading pipe Used for DSP_RENDERING_ON */ 558 int fdread; 559 560 /* ID stream ID*/ 561 OMX_U32 streamID; 562 563 /* Flag for Port Defs Allocated*/ 564 OMX_U32 bPortDefsAllocated; 565 566 /* Flag for Component Thread Started*/ 567 OMX_U32 bCompThreadStarted; 568 569 /** Mark data */ 570 OMX_PTR pMarkData; 571 572 /** Mark buffer */ 573 OMX_MARKTYPE *pMarkBuf; 574 575 /** Mark target component */ 576 OMX_HANDLETYPE hMarkTargetComponent; 577 578 /** Flag set when buffer should not be queued to the DSP */ 579 OMX_U32 bBypassDSP; 580 581 /** Input buffer list */ 582 G711DEC_BUFFERLIST *pInputBufferList; 583 584 /** Output buffer list */ 585 G711DEC_BUFFERLIST *pOutputBufferList; 586 587 /** LCML stream attributes */ 588 LCML_STRMATTR *strmAttr; 589 590 /** Component version */ 591 OMX_U32 nVersion; 592 593 /** Play Complete Flag */ 594 OMX_U32 bPlayCompleteFlag; 595 596 /** Number of Bytes holding to be sent*/ 597 OMX_U32 nHoldLength; 598 599 /** Pointer to the data holding to be sent*/ 600 OMX_U8* pHoldBuffer; 601 602 /** Flag set when LCML handle is opened */ 603 OMX_S16 bLcmlHandleOpened; 604 605 /** Keeps track of the number of nFillThisBufferCount() calls */ 606 OMX_U32 nFillThisBufferCount; 607 608 /** Keeps track of the number of nFillBufferDoneCount() calls */ 609 OMX_U32 nFillBufferDoneCount; 610 611 /** Keeps track of the number of nEmptyThisBufferCount() calls */ 612 OMX_U32 nEmptyThisBufferCount; 613 614 /** Keeps track of the number of nEmptyBufferDoneCount() calls */ 615 OMX_U32 nEmptyBufferDoneCount; 616 617 /** Parameters for the Audio Codec */ 618 G711DEC_AudioCodecParams *pParams; 619 620 /** Flag for Init Params Initialized */ 621 OMX_U32 bInitParamsInitialized; 622 623 /** Flag for bIdleCommandPending */ 624 OMX_U32 bIdleCommandPending; 625 626 /** Array of Input Buffers that are pending to sent due State = Idle */ 627 OMX_BUFFERHEADERTYPE *pInputBufHdrPending[MAX_NUM_OF_BUFS]; 628 629 /** Number of Input Buffers that are pending to sent due State = Idle */ 630 OMX_U32 nNumInputBufPending; 631 632 /** Array of Output Buffers that are pending to sent due State = Idle */ 633 OMX_BUFFERHEADERTYPE *pOutputBufHdrPending[MAX_NUM_OF_BUFS]; 634 635 /** Number of Output Buffers that are pending to sent due State = Idle */ 636 OMX_U32 nNumOutputBufPending; 637 638 /** Flag for Reenabling Ports*/ 639 OMX_U32 bJustReenabled; 640 641 /** Flag for Invalid Frame Count*/ 642 OMX_U32 nInvalidFrameCount; 643 644 /** Flag for Writes While Paused */ 645 OMX_U32 nDataWritesWhilePaused; 646 647 /** Flag for bDisableCommandPending*/ 648 OMX_U32 bDisableCommandPending; 649 650 /** Flag for bDisableCommandParam*/ 651 OMX_U32 bDisableCommandParam; 652 653 /** Flag for Enabling the port*/ 654 OMX_U32 bEnableCommandPending; 655 656 /** Flag for Enabling the port*/ 657 OMX_U32 bEnableCommandParam; 658 659 /** Flag to set when socket node stop callback should not transition 660 component to OMX_StateIdle */ 661 OMX_U32 bNoIdleOnStop; 662 663 /** Flag set when socket node is stopped */ 664 OMX_U32 bDspStoppedWhileExecuting; 665 666 /** Number of outstanding FillBufferDone() calls */ 667 OMX_S32 nOutStandingFillDones; 668 669 /** Stop Codec Command Sent Flag*/ 670 OMX_U8 bStopSent; 671 672 OMX_BOOL bLoadedCommandPending; 673 674 OMX_PARAM_COMPONENTROLETYPE componentRole; 675 676 /* Device string */ 677 OMX_STRING* sDeviceString; 678 /* Removing sleep() calls. Definition. */ 679#ifndef UNDER_CE 680 pthread_mutex_t AlloBuf_mutex; 681 pthread_cond_t AlloBuf_threshold; 682 OMX_U8 AlloBuf_waitingsignal; 683 684 pthread_mutex_t InLoaded_mutex; 685 pthread_cond_t InLoaded_threshold; 686 OMX_U8 InLoaded_readytoidle; 687 688 pthread_mutex_t InIdle_mutex; 689 pthread_cond_t InIdle_threshold; 690 OMX_U8 InIdle_goingtoloaded; 691#else 692 OMX_Event AlloBuf_event; 693 OMX_U8 AlloBuf_waitingsignal; 694 695 OMX_Event InLoaded_event; 696 OMX_U8 InLoaded_readytoidle; 697 698 OMX_Event InIdle_event; 699 OMX_U8 InIdle_goingtoloaded; 700#endif 701 // /**************************/ 702 OMX_U8 nUnhandledFillThisBuffers; 703 704 /**Keep buffer tickcount*/ 705 OMX_U32 arrBufIndexTick[MAX_NUM_OF_BUFS]; 706 707 /** Keep buffer timestamps **/ 708 OMX_U32 arrBufIndex[MAX_NUM_OF_BUFS]; 709 710 /** Index to arrBufIndex[], used for input buffer timestamps */ 711 OMX_U8 IpBufindex; 712 713 /** Index to arrBufIndex[], used for output buffer timestamps */ 714 OMX_U8 OpBufindex; 715 716 /** Pointer to RM callback **/ 717#ifdef RESOURCE_MANAGER_ENABLED 718 RMPROXY_CALLBACKTYPE rmproxyCallback; 719#endif 720 721 OMX_BOOL bPreempted; 722 723 724} G711DEC_COMPONENT_PRIVATE; 725 726typedef enum OMX_G711DEC_INDEXAUDIOTYPE { 727 OMX_IndexCustomG711DecModeAcdnConfig = 0xFF000001, 728 OMX_IndexCustomG711DecModeDasfConfig, 729 OMX_IndexCustomG711DecHeaderInfoConfig, 730 OMX_IndexCustomG711DecFrameParams, 731 OMX_IndexCustomG711DecDataPath 732}OMX_G711DEC_INDEXAUDIOTYPE; 733 734#ifdef RESOURCE_MANAGER_ENABLED 735void G711DEC_ResourceManagerCallback(RMPROXY_COMMANDDATATYPE cbData); 736#endif 737 738#endif /* OMX_G711DECODER_H */ 739