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_G722Enc_Utils.h 30 * 31 * This header file contains data and function prototypes for G722 ENCODER OMX 32 * 33 * @path $(OMAPSW_MPU)\linux\audio\src\openmax_il\g722_enc\inc 34 * 35 * @rev 0.1 36 */ 37/* ----------------------------------------------------------------------------- 38 *! 39 *! Revision History 40 *! =================================== 41 *! Date Author(s) Version Description 42 *! --------- ------------------- ------- --------------------------------- 43 *! 08-Mar-2007 A.Donjon 0.1 Code update for G722 ENCODER 44 *! 45 *! 46 * ================================================================================= */ 47 48 49#include <OMX_Component.h> 50#include "LCML_DspCodec.h" 51#include "OMX_G722Encoder.h" 52 53#define NEWSENDCOMMAND_MEMORY 123 54/*#endif*/ 55 56#include <TIDspOmx.h> 57 58/* ComponentThread constant */ 59#define EXIT_COMPONENT_THRD 10 60/* ======================================================================= */ 61/** 62 * @def G722ENC_XXX_VER Component version 63 */ 64/* ======================================================================= */ 65#define G722ENC_MAJOR_VER 1 66#define G722ENC_MINOR_VER 1 67 68/* ======================================================================= */ 69/** 70 * @def NOT_USED Defines a value for "don't care" parameters 71 */ 72/* ======================================================================= */ 73#define NOT_USED 10 74 75/* ======================================================================= */ 76/** 77 * @def NORMAL_BUFFER Defines the flag value with all flags turned off 78 */ 79/* ======================================================================= */ 80#define NORMAL_BUFFER 0 81 82/* ======================================================================= */ 83/** 84 * @def OMX_G722ENC_DEFAULT_SEGMENT Default segment ID for the LCML 85 */ 86/* ======================================================================= */ 87#define OMX_G722ENC_DEFAULT_SEGMENT (0) 88 89 90/* ======================================================================= */ 91/** 92 * @def OMX_G722ENC_SN_TIMEOUT Timeout value for the socket node 93 */ 94/* ======================================================================= */ 95#define OMX_G722ENC_SN_TIMEOUT (-1) 96 97/* ======================================================================= */ 98/** 99 * @def OMX_G722ENC_SN_PRIORITY Priority for the socket node 100 */ 101/* ======================================================================= */ 102#define OMX_G722ENC_SN_PRIORITY (10) 103 104/* ======================================================================= */ 105/** 106 * @def G722ENC_TIMEOUT_MILLISECONDS Timeout value for the component thread 107 */ 108/* ======================================================================= */ 109#define G722ENC_TIMEOUT_MILLISECONDS (1000) 110 111/* ======================================================================= */ 112/** 113 * @def G722ENC_CACHE_ALIGN_MALLOC Value to add to the size needed to 114 * malloc to ensure cache alignment 115 */ 116/* ======================================================================= */ 117#define G722ENC_CACHE_ALIGN_MALLOC 256 118 119/* ======================================================================= */ 120/** 121 * @def G722ENC_CACHE_ALIGN_OFFSET Value to add to the pointer returned 122 * by malloc to ensure cache alignment 123 */ 124/* ======================================================================= */ 125#define G722ENC_CACHE_ALIGN_OFFSET 128 126 127/* ======================================================================= */ 128/** 129 * @def G722ENC_MAX_NUM_OF_BUFS Maximum number of buffers 130 */ 131/* ======================================================================= */ 132#define G722ENC_MAX_NUM_OF_BUFS 10 133 134 135/* ======================================================================= */ 136/** 137 * @def USN_DLL_NAME Path to the USN 138 */ 139/* ======================================================================= */ 140#ifdef UNDER_CE 141#define USN_DLL_NAME "\\windows\\usn.dll64P" 142#else 143#define USN_DLL_NAME "usn.dll64P" 144#endif 145/* ======================================================================= */ 146/** 147 * @def G722ENC_DLL_NAME Path to the G722ENC SN 148 */ 149/* ======================================================================= */ 150#ifdef UNDER_CE 151#define G722ENC_DLL_NAME "\\windows\\g722enc_sn.dll64P" 152#else 153#define G722ENC_DLL_NAME "g722enc_sn.dll64P" 154#endif 155/* ======================================================================= */ 156/** 157 * @def DONT_CARE Don't care value for the LCML initialization params 158 */ 159/* ======================================================================= */ 160#define DONT_CARE 0 161 162 163/* ======================================================================= */ 164/** 165 * @def G722ENC_DEBUG Turns debug messaging on and off 166 */ 167/* ======================================================================= */ 168#undef G722ENC_DEBUG 169/*#define G722ENC_DEBUG*/ 170 171/* ======================================================================= */ 172/** 173 * @def G722ENC_MEMCHECK Turns memory messaging on and off 174 */ 175/* ======================================================================= */ 176#undef G722ENC_MEMCHECK /* try to avoid the time out due to print message */ 177 178 179/* ======================================================================= */ 180/** 181 * @def G722ENC_DPRINT Debug print macro 182 */ 183/* ======================================================================= */ 184 185#ifndef UNDER_CE /* Linux definitions */ 186#ifdef G722ENC_DEBUG 187#define G722ENC_DPRINT(...) fprintf(stdout,__VA_ARGS__) 188#else 189#define G722ENC_DPRINT(...) 190#endif 191 192#ifdef G722ENC_MEMCHECK 193#define G722ENC_MEMPRINT(...) fprintf(stdout,__VA_ARGS__) 194#else 195#define G722ENC_MEMPRINT(...) 196#endif 197 198#else 199#ifdef G722ENC_DEBUG 200#define G722ENC_DPRINT(STR, ARG...) printf() 201#else 202#endif 203 204/* ======================================================================= */ 205/** 206 * @def G722ENC_MEMCHECK Memory print macro 207 */ 208/* ======================================================================= */ 209#ifdef G722ENC_MEMCHECK 210#define G722ENC_MEMPRINT(STR, ARG...) printf() 211#else 212#endif 213#define G722ENC_DPRINT printf 214#define G722ENC_MEMPRINT printf 215 216#endif 217 218#ifdef UNDER_CE 219 220#ifdef DEBUG 221#define G722ENC_DPRINT printf 222#define G722ENC_MEMPRINT printf 223 224#else 225#define G722ENC_DPRINT 226#define G722ENC_MEMPRINT 227#endif 228 229#endif 230 231 232/* ======================================================================= */ 233/** 234 * @def G722ENC_NUM_OF_PORTS Number of ports 235 */ 236/* ======================================================================= */ 237#define G722ENC_NUM_OF_PORTS 2 238 239/* ======================================================================= */ 240/** 241 * @def G722ENC_NUM_STREAMS Number of streams 242 */ 243/* ======================================================================= */ 244#define G722ENC_NUM_STREAMS 2 245 246/* ======================================================================= */ 247/** 248 * @def G722ENC_NUM_INPUT_DASF_BUFFERS Number of input buffers 249 */ 250/* ======================================================================= */ 251#define G722ENC_NUM_INPUT_DASF_BUFFERS 2 252 253 254/* ======================================================================= */ 255/** 256 * @def G722ENC_AM_DEFAULT_RATE Default audio manager rate 257 */ 258/* ======================================================================= */ 259#define G722ENC_AM_DEFAULT_RATE 48000 260 261/* ======================================================================= */ 262/** 263 * @def G722ENC_SAMPLE_RATE G722ENC SN sampling frequency 264 */ 265/* ======================================================================= */ 266#define G722ENC_SAMPLE_RATE 16000 267 268/* ======================================================================= */ 269/** 270 * M A C R O S FOR MALLOC and MEMORY FREE and CLOSING PIPES 271 */ 272/* ======================================================================= */ 273 274#define OMX_G722CONF_INIT_STRUCT(_s_, _name_) \ 275 memset((_s_), 0x0, sizeof(_name_)); \ 276 (_s_)->nSize = sizeof(_name_); \ 277 (_s_)->nVersion.s.nVersionMajor = 0x1; \ 278 (_s_)->nVersion.s.nVersionMinor = 0x1; \ 279 (_s_)->nVersion.s.nRevision = 0x0; \ 280 (_s_)->nVersion.s.nStep = 0x0 281 282#define OMX_G722MEMFREE_STRUCT(_pStruct_) \ 283 if(_pStruct_ != NULL) \ 284 { \ 285 G722ENC_MEMPRINT("%d :: [FREE] %p\n", __LINE__, _pStruct_); \ 286 free(_pStruct_); \ 287 _pStruct_ = NULL; \ 288 } 289 290#define OMX_G722CLOSE_PIPE(_pStruct_,err) \ 291 G722ENC_DPRINT("%d :: CLOSING PIPE \n", __LINE__); \ 292 err = close (_pStruct_); \ 293 if(0 != err && OMX_ErrorNone == eError) \ 294 { \ 295 eError = OMX_ErrorHardware; \ 296 printf("%d :: Error while closing pipe\n", __LINE__); \ 297 goto EXIT; \ 298 } 299 300#define OMX_G722MALLOC_STRUCT(_pStruct_, _sName_) \ 301 _pStruct_ = (_sName_*)malloc(sizeof(_sName_)); \ 302 if(_pStruct_ == NULL) \ 303 { \ 304 printf("***********************************\n"); \ 305 printf("%d :: Malloc Failed\n", __LINE__); \ 306 printf("***********************************\n"); \ 307 eError = OMX_ErrorInsufficientResources; \ 308 goto EXIT; \ 309 } \ 310 memset(_pStruct_,0,sizeof(_sName_)); \ 311 G722ENC_MEMPRINT("%d :: [ALLOC] %p\n", __LINE__, _pStruct_); 312/* ======================================================================= */ 313/** G722ENC_STREAM_TYPE Values for create phase params 314 * 315 * @param G722ENCSTREAMDMM Indicates DMM 316 * 317 * @param G722ENCSTREAMINPUT Sets input stream 318 * 319 * @param G722ENCSTREAMOUTPUT Sets output stream 320 * 321 */ 322/* ==================================================================== */ 323typedef enum { 324 G722ENCSTREAMDMM, 325 G722ENCSTREAMINPUT, 326 G722ENCSTREAMOUTPUT 327} G722ENC_STREAM_TYPE; 328 329/* ======================================================================= */ 330/** IUALG_Cmd Values for create phase params 331 * 332 * @param IULAG_CMD_STOP Socket node stop command 333 * 334 * @param IULAG_CMD_PAUSE Socket node pause command 335 * 336 * @param IULAG_CMD_GETSTATUS Socket node get status command. 337 * 338 * @param IULAG_CMD_SETSTATUS Socket node set status command. 339 * 340 * @param IUALG_CMD_USERCMDSTART Socket node start command. 341 * 342 */ 343/* ==================================================================== */ 344typedef enum { 345 IULAG_CMD_STOP = 0, 346 IULAG_CMD_PAUSE = 1, 347 IULAG_CMD_GETSTATUS = 2, 348 IULAG_CMD_SETSTATUS = 3, 349 IUALG_CMD_USERCMDSTART = 100 350}IUALG_Cmd; 351 352 353/* ======================================================================= */ 354/** G722ENC_COMP_PORT_TYPE Port definition for component 355 * 356 * @param G722ENC_INPUT_PORT Index for input port 357 * 358 * @param G722ENC_OUTPUT_PORT Index for output port 359 * 360 */ 361/* ==================================================================== */ 362typedef enum G722ENC_COMP_PORT_TYPE { 363 G722ENC_INPUT_PORT = 0, 364 G722ENC_OUTPUT_PORT 365}G722ENC_COMP_PORT_TYPE; 366 367 368 369/* =================================================================================== */ 370/** 371 * Socket node input buffer parameters. 372 */ 373/* ================================================================================== */ 374typedef struct G722ENC_UAlgInBufParamStruct { 375 unsigned long bLastBuffer; 376}G722ENC_UAlgInBufParamStruct; 377 378/* =================================================================================== */ 379/** 380 * LCML data header. 381 */ 382/* ================================================================================== */ 383typedef struct G722ENC_LCML_BUFHEADERTYPE { 384 OMX_DIRTYPE eDir; 385 OMX_BUFFERHEADERTYPE *pBufHdr; 386 void *pOtherParams[10]; 387 G722ENC_UAlgInBufParamStruct *pIpParam; 388 /*G722ENC_UAlgOutBufParamStruct *pOpParam; */ 389}G722ENC_LCML_BUFHEADERTYPE; 390 391 392/* =================================================================================== */ 393/** 394 * Socket node audio codec parameters 395 */ 396/* ================================================================================== */ 397typedef struct G722ENC_AudioCodecParams 398{ 399 unsigned long iSamplingRate; 400 unsigned long iStrmId; 401 unsigned short iAudioFormat; 402 403}G722ENC_AudioCodecParams; 404 405/* =================================================================================== */ 406/** 407 * Structure for buffer list 408 */ 409/* ================================================================================== */ 410typedef struct _BUFFERLIST G722ENC_BUFFERLIST; 411struct _BUFFERLIST{ 412 OMX_BUFFERHEADERTYPE *pBufHdr[G722ENC_MAX_NUM_OF_BUFS]; /* records buffer header send by client */ 413 OMX_U32 bufferOwner[G722ENC_MAX_NUM_OF_BUFS]; 414 OMX_U32 numBuffers; 415 OMX_U32 bBufferPending[G722ENC_MAX_NUM_OF_BUFS]; 416}; 417 418/* =================================================================================== */ 419/** 420 * Component private data 421 */ 422/* ================================================================================== */ 423typedef struct G722ENC_COMPONENT_PRIVATE 424{ 425 /** Array of pointers to BUFFERHEADERTYPE structues 426 This pBufHeader[G722ENC_INPUT_PORT] will point to all the 427 BUFFERHEADERTYPE structures related to input port, 428 not just one structure. Same is for output port 429 also. */ 430 OMX_BUFFERHEADERTYPE* pBufHeader[G722ENC_NUM_OF_PORTS]; 431 432 /** Structure of callback pointers */ 433 OMX_CALLBACKTYPE cbInfo; 434 435 /** Handle for use with async callbacks */ 436 OMX_PORT_PARAM_TYPE sPortParam; 437 438 /** Input port parameters */ 439 OMX_AUDIO_PARAM_PORTFORMATTYPE* pInPortFormat; 440 441 /** Output port parameters */ 442 OMX_AUDIO_PARAM_PORTFORMATTYPE* pOutPortFormat; 443 444 /** Keeps track of whether a buffer is owned by the 445 component or by the IL client */ 446 OMX_U32 bIsBufferOwned[G722ENC_NUM_OF_PORTS]; 447 448 /* Audio codec parameters structure */ 449 G722ENC_AudioCodecParams *pParams; 450 451 /** This will contain info like how many buffers 452 are there for input/output ports, their size etc, but not 453 BUFFERHEADERTYPE POINTERS. */ 454 OMX_PARAM_PORTDEFINITIONTYPE* pPortDef[G722ENC_NUM_OF_PORTS]; 455 OMX_AUDIO_PARAM_ADPCMTYPE* g722Params; 456 OMX_AUDIO_PARAM_ADPCMTYPE* pcmParams; 457 OMX_PRIORITYMGMTTYPE* sPriorityMgmt; 458 459 /** This is component handle */ 460 OMX_COMPONENTTYPE* pHandle; 461 462 /** Current state of this component */ 463 OMX_STATETYPE curState; 464 465 /** The component thread handle */ 466 pthread_t ComponentThread; 467 468 /** The pipes for sending buffers to the thread */ 469 int dataPipe[2]; 470 471 /** The pipes for sending command data to the thread */ 472 int cmdDataPipe[2]; 473 474 /** The pipes for sending buffers to the thread */ 475 int cmdPipe[2]; 476 477 /** The pipes for sending buffers to the thread */ 478 int lcml_Pipe[2]; 479 480 /** Set to indicate component is stopping */ 481 OMX_U32 bIsStopping; 482 483 OMX_U32 bIsEOFSent; 484 485 /** Count of number of buffers outstanding with bridge */ 486 OMX_U32 lcml_nIpBuf; 487 488 /** Count of number of buffers outstanding with bridge */ 489 OMX_U32 lcml_nOpBuf; 490 491 /** Count of buffers sent to the LCML */ 492 OMX_U32 lcml_nCntIp; 493 494 /** Count of buffers received from the LCML */ 495 OMX_U32 lcml_nCntOpReceived; 496 497 /** Count of buffers pending from the app */ 498 OMX_U32 app_nBuf; 499 500 /** Flag for DASF mode */ 501 OMX_U32 dasfmode; 502 503 /** Audio Stream ID */ 504 OMX_U32 streamID; 505 506 /** LCML Handle */ 507 OMX_HANDLETYPE pLcmlHandle; 508 509 /** LCML Buffer Header */ 510 G722ENC_LCML_BUFHEADERTYPE *pLcmlBufHeader[2]; 511 512 /** Tee Mode Flag */ 513 OMX_U32 teemode; 514 515 /** Flag set when port definitions are allocated */ 516 OMX_U32 bPortDefsAllocated; 517 518 /** Flag set when component thread is started */ 519 OMX_U32 bCompThreadStarted; 520 521 /** Mark data */ 522 OMX_PTR pMarkData; 523 524 /** Mark buffer */ 525 OMX_MARKTYPE *pMarkBuf; 526 527 /** Mark target component */ 528 OMX_HANDLETYPE hMarkTargetComponent; 529 530 /** Flag set when buffer should not be queued to the DSP */ 531 OMX_U32 bBypassDSP; 532 533 /** Create phase arguments */ 534 OMX_U16 *pCreatePhaseArgs; 535 536 /** Input buffer list */ 537 G722ENC_BUFFERLIST *pInputBufferList; 538 539 /** Output buffer list */ 540 G722ENC_BUFFERLIST *pOutputBufferList; 541 542 /** LCML stream attributes */ 543 LCML_STRMATTR *strmAttr; 544 545 /** Component version */ 546 OMX_U32 nVersion; 547 548 /** LCML Handle */ 549 void *lcml_handle; 550 551 /** Number of initialized input buffers */ 552 int noInitInputBuf; 553 554 /** Number of initialized output buffers */ 555 int noInitOutputBuf; 556 557 /** Flag set when LCML handle is opened */ 558 int bLcmlHandleOpened; 559 560 /** Flag set when initialization params are set */ 561 OMX_U32 bInitParamsInitialized; 562 563 /** Pipe write handle for audio manager */ 564 int fdwrite; 565 566 /** Pipe read handle for audio manager */ 567 int fdread; 568 569 /** Stores input buffers while paused */ 570 OMX_BUFFERHEADERTYPE *pInputBufHdrPending[G722ENC_MAX_NUM_OF_BUFS]; 571 572 /** Number of input buffers received while paused */ 573 OMX_U32 nNumInputBufPending; 574 575 /** Stores output buffers while paused */ 576 OMX_BUFFERHEADERTYPE *pOutputBufHdrPending[G722ENC_MAX_NUM_OF_BUFS]; 577 578 /** Number of output buffers received while paused */ 579 OMX_U32 nNumOutputBufPending; 580 581 /** Keeps track of the number of invalid frames that come from the LCML */ 582 OMX_U32 nInvalidFrameCount; 583 584 /** Flag set when a disable command is pending */ 585 OMX_U32 bDisableCommandPending; 586 587 /** Parameter for pending disable command */ 588 OMX_U32 bDisableCommandParam; 589 590 /** Flag to set when socket node stop callback should not transition 591 component to OMX_StateIdle */ 592 OMX_U32 bNoIdleOnStop; 593 594 /** Flag set when idle command is pending */ 595 OMX_U32 bIdleCommandPending; 596 597 /** Flag set when socket node is stopped */ 598 OMX_U32 bDspStoppedWhileExecuting; 599 600 /** Number of outstanding FillBufferDone() calls */ 601 OMX_U32 nOutStandingFillDones; 602 603 /** Flag set when StrmCtrl has been called */ 604 OMX_U32 bStreamCtrlCalled; 605 606 OMX_PARAM_COMPONENTROLETYPE componentRole; 607 OMX_STRING* sDeviceString; 608 OMX_BOOL bLoadedCommandPending; 609 610 /** Holds the value of RT Mixer mode */ 611 OMX_U32 rtmx; 612 TI_OMX_DSP_DEFINITION tiOmxDspDefinition; 613 614 /* Removing sleep() calls. Definition. */ 615#ifndef UNDER_CE 616 pthread_mutex_t AlloBuf_mutex; 617 pthread_cond_t AlloBuf_threshold; 618 OMX_U8 AlloBuf_waitingsignal; 619 620 pthread_mutex_t InLoaded_mutex; 621 pthread_cond_t InLoaded_threshold; 622 OMX_U8 InLoaded_readytoidle; 623 624 pthread_mutex_t InIdle_mutex; 625 pthread_cond_t InIdle_threshold; 626 OMX_U8 InIdle_goingtoloaded; 627#else 628 OMX_Event AlloBuf_event; 629 OMX_U8 AlloBuf_waitingsignal; 630 631 OMX_Event InLoaded_event; 632 OMX_U8 InLoaded_readytoidle; 633 634 OMX_Event InIdle_event; 635 OMX_U8 InIdle_goingtoloaded; 636#endif 637 638#ifdef __PERF_INSTRUMENTATION__ 639 PERF_OBJHANDLE pPERF, pPERFcomp; 640 OMX_U32 nLcml_nCntIp; 641 OMX_U32 nLcml_nCntOpReceived; 642#endif 643 644 /** Keep buffer timestamps **/ 645 OMX_S64 arrTimestamp[G722ENC_MAX_NUM_OF_BUFS]; 646 /** Keep buffer nTickCounts **/ 647 OMX_S64 arrTickCount[G722ENC_MAX_NUM_OF_BUFS]; 648 /** Index to arrTimestamp[], used for input buffer timestamps */ 649 OMX_U8 IpBufindex; 650 /** Index to arrTimestamp[], used for output buffer timestamps */ 651 OMX_U8 OpBufindex; 652 653 654 OMX_BOOL bPreempted; 655 656} G722ENC_COMPONENT_PRIVATE; 657 658/* =========================================================== */ 659/** 660 * OMX_ComponentInit() Initializes component 661 * 662 * 663 * @param hComp OMX Handle 664 * 665 * @return OMX_ErrorNone = Successful 666 * Other error code = fail 667 * 668 */ 669/*================================================================== */ 670#ifndef UNDER_CE 671OMX_ERRORTYPE OMX_ComponentInit (OMX_HANDLETYPE hComp); 672#else 673/* WinCE Implicit Export Syntax */ 674#define OMX_EXPORT __declspec(dllexport) 675OMX_EXPORT OMX_ERRORTYPE OMX_ComponentInit (OMX_HANDLETYPE hComp); 676#endif 677 678/* =========================================================== */ 679/** 680 * G722ENC_Fill_LCMLInitParams() Fills the parameters needed 681 * to initialize the LCML 682 * 683 * @param pHandle OMX Handle 684 * 685 * @param plcml_Init LCML initialization parameters 686 * 687 * @return OMX_ErrorNone = Successful 688 * Other error code = fail 689 * 690 */ 691/*================================================================== */ 692OMX_ERRORTYPE G722ENC_Fill_LCMLInitParams(OMX_HANDLETYPE pHandle, 693 LCML_DSP *plcml_Init); 694 695/* =========================================================== */ 696/** 697 * G722ENC_GetBufferDirection() Returns direction of pBufHeader 698 * 699 * @param pBufHeader Buffer header 700 * 701 * @param eDir Buffer direction 702 * 703 * @param pComponentPrivate Component private data 704 * 705 * @return OMX_ErrorNone = Successful 706 * Other error code = fail 707 */ 708/*================================================================== */ 709OMX_ERRORTYPE G722ENC_GetBufferDirection(OMX_BUFFERHEADERTYPE *pBufHeader, 710 OMX_DIRTYPE *eDir, 711 G722ENC_COMPONENT_PRIVATE *pComponentPrivate); 712 713/* =========================================================== */ 714/** 715 * G722ENC_LCML_Callback() Callback from LCML 716 * 717 * @param event Codec Event 718 * 719 * @param args Arguments from LCML 720 * 721 * @return OMX_ErrorNone = Successful 722 * Other error code = fail 723 */ 724/*================================================================== */ 725OMX_ERRORTYPE G722ENC_LCML_Callback (TUsnCodecEvent event,void * args [10]); 726 727/* =========================================================== */ 728/** 729 * G722ENC_HandleCommand() Handles commands sent via SendCommand() 730 * 731 * @param pComponentPrivate Component private data 732 * 733 * @return OMX_ErrorNone = Successful 734 * Other error code = fail 735 */ 736/*================================================================== */ 737OMX_U32 G722ENC_HandleCommand (G722ENC_COMPONENT_PRIVATE *pComponentPrivate); 738 739 740/* =========================================================== */ 741/** 742 * G722ENC_HandleDataBuf_FromApp() Handles data buffers received 743 * from application 744 * 745 * @param pBufHeader Buffer header 746 * 747 * @param pComponentPrivate Component private data 748 * 749 * @return OMX_ErrorNone = Successful 750 * Other error code = fail 751 */ 752/*================================================================== */ 753OMX_ERRORTYPE G722ENC_HandleDataBuf_FromApp(OMX_BUFFERHEADERTYPE *pBufHeader, 754 G722ENC_COMPONENT_PRIVATE *pComponentPrivate); 755 756 757 758/* =========================================================== */ 759/** 760 * G722ENC_HandleDataBuf_FromLCML() Handles data buffers received 761 * from LCML 762 * 763 * @param pComponentPrivate Component private data 764 * 765 * @return OMX_ErrorNone = Successful 766 * Other error code = fail 767 */ 768/*================================================================== */ 769/***** NO LCML ******* 770 OMX_ERRORTYPE G722ENC_HandleDataBuf_FromLCML(G722ENC_COMPONENT_PRIVATE* 771 pComponentPrivate); 772**********************/ 773/* =========================================================== */ 774/** 775 * GetLCMLHandle() 776 * 777 * @param 778 * 779 * @return * 780 */ 781/*================================================================== */ 782OMX_HANDLETYPE GetLCMLHandle(); 783 784 785/* =========================================================== */ 786/** 787 * G722ENC_GetCorresponding_LCMLHeader() Returns LCML header 788 * that corresponds to the given buffer 789 * 790 * @param pComponentPrivate Component private data 791 * 792 * @return OMX_ErrorNone = Successful 793 * Other error code = fail 794 */ 795/*================================================================== */ 796OMX_ERRORTYPE G722ENC_GetCorresponding_LCMLHeader(OMX_U8 *pBuffer, 797 OMX_DIRTYPE eDir, 798 G722ENC_LCML_BUFHEADERTYPE **ppLcmlHdr); 799 800 801/* =========================================================== */ 802/** 803 * G722Enc_FreeCompResources() Frees component resources 804 * 805 * @param pComponent OMX Handle 806 * 807 * @return OMX_ErrorNone = Successful 808 * Other error code = fail 809 */ 810/*================================================================== */ 811OMX_ERRORTYPE G722Enc_FreeCompResources(OMX_HANDLETYPE pComponent); 812 813/* =========================================================== */ 814/** 815 * G722Enc_StartCompThread() Starts component thread 816 * 817 * @param pComponent OMX Handle 818 * 819 * @return OMX_ErrorNone = Successful 820 * Other error code = fail 821 */ 822/*================================================================== */ 823OMX_ERRORTYPE G722Enc_StartCompThread(OMX_HANDLETYPE pComponent); 824 825/* =========================================================== */ 826/** 827 * G722ENC_GetLCMLHandle() Returns handle to the LCML 828 * 829 * 830 * @return Handle to the LCML 831 */ 832/*================================================================== */ 833OMX_HANDLETYPE G722ENC_GetLCMLHandle(); 834 835 836/* ========================================================================== */ 837/** 838 * @G722ENC_StopComponentThread() This function is called by the component during 839 * de-init to close component thread. 840 * 841 * @param pComponent handle for this instance of the component 842 * 843 * @pre 844 * 845 * @post 846 * 847 * @return none 848 */ 849/* ========================================================================== */ 850OMX_ERRORTYPE G722ENC_StopComponentThread(OMX_HANDLETYPE pComponent); 851 852/* =========================================================== */ 853/** 854 * G722ENC_FreeLCMLHandle() Frees the handle to the LCML 855 * 856 * 857 * @return OMX_ErrorNone = Successful 858 * Other error code = fail 859 */ 860/*================================================================== */ 861OMX_ERRORTYPE G722ENC_FreeLCMLHandle(); 862 863 864/* =========================================================== */ 865/** 866 * G722ENC_CleanupInitParams() Starts component thread 867 * 868 * @param pComponent OMX Handle 869 * 870 * @return OMX_ErrorNone = Successful 871 * Other error code = fail 872 */ 873/*================================================================== */ 874OMX_ERRORTYPE G722ENC_CleanupInitParams(OMX_HANDLETYPE pComponent); 875 876 877/* =========================================================== */ 878/** 879 * G722ENC_CommandToIdle() Called when the component is commanded 880 * to idle 881 * 882 * @param pComponentPrivate Component private data 883 * 884 * @return OMX_ErrorNone = Successful 885 * Other error code = fail 886 */ 887/*================================================================== */ 888OMX_ERRORTYPE G722ENC_CommandToIdle(G722ENC_COMPONENT_PRIVATE *pComponentPrivate); 889 890/* =========================================================== */ 891/** 892 * G722ENC_CommandToIdle() Called when the component is commanded 893 * to idle 894 * 895 * @param pComponentPrivate Component private data 896 * 897 * @return OMX_ErrorNone = Successful 898 * Other error code = fail 899 */ 900/*================================================================== */ 901OMX_ERRORTYPE G722ENC_CommandToLoaded(G722ENC_COMPONENT_PRIVATE *pComponentPrivate); 902 903/* =========================================================== */ 904/** 905 * G722ENC_CommandToExecuting() Called when the component is commanded 906 * to executing 907 * 908 * @param pComponentPrivate Component private data 909 * 910 * @return OMX_ErrorNone = Successful 911 * Other error code = fail 912 */ 913/*================================================================== */ 914OMX_ERRORTYPE G722ENC_CommandToExecuting(G722ENC_COMPONENT_PRIVATE *pComponentPrivate); 915 916/* =========================================================== */ 917/** 918 * G722ENC_CommandToPause() Called when the component is commanded 919 * to paused 920 * 921 * @param pComponentPrivate Component private data 922 * 923 * @return OMX_ErrorNone = Successful 924 * Other error code = fail 925 */ 926/*================================================================== */ 927OMX_ERRORTYPE G722ENC_CommandToPause(G722ENC_COMPONENT_PRIVATE *pComponentPrivate); 928 929/* =========================================================== */ 930/** 931 * G722ENC_CommandToWaitForResources() Called when the component is commanded 932 * to WaitForResources 933 * 934 * @param pComponentPrivate Component private data 935 * 936 * @return OMX_ErrorNone = Successful 937 * Other error code = fail 938 */ 939/*================================================================== */ 940OMX_ERRORTYPE G722ENC_CommandToWaitForResources(G722ENC_COMPONENT_PRIVATE *pComponentPrivate); 941 942/* =========================================================== */ 943/** 944 * G722ENC_SetPending() Called when the component queues a buffer 945 * to the LCML 946 * 947 * @param pComponentPrivate Component private data 948 * 949 * @param pBufHdr Buffer header 950 * 951 * @param eDir Direction of the buffer 952 * 953 * @return None 954 */ 955/*================================================================== */ 956void G722ENC_SetPending(G722ENC_COMPONENT_PRIVATE *pComponentPrivate, OMX_BUFFERHEADERTYPE *pBufHdr, OMX_DIRTYPE eDir); 957 958/* =========================================================== */ 959/** 960 * G722ENC_ClearPending() Called when a buffer is returned 961 * from the LCML 962 * 963 * @param pComponentPrivate Component private data 964 * 965 * @param pBufHdr Buffer header 966 * 967 * @param eDir Direction of the buffer 968 * 969 * @return None 970 */ 971/*================================================================== */ 972void G722ENC_ClearPending(G722ENC_COMPONENT_PRIVATE *pComponentPrivate, OMX_BUFFERHEADERTYPE *pBufHdr, OMX_DIRTYPE eDir) ; 973 974/* =========================================================== */ 975/** 976 * G722ENC_IsPending() Returns the status of a buffer 977 * 978 * @param pComponentPrivate Component private data 979 * 980 * @param pBufHdr Buffer header 981 * 982 * @param eDir Direction of the buffer 983 * 984 * @return None 985 */ 986/*================================================================== */ 987OMX_U32 G722ENC_IsPending(G722ENC_COMPONENT_PRIVATE *pComponentPrivate, OMX_BUFFERHEADERTYPE *pBufHdr, OMX_DIRTYPE eDir); 988 989/* =========================================================== */ 990/** 991 * G722ENC_Fill_LCMLInitParamsEx() Fills the parameters needed 992 * to initialize the LCML without recreating the socket node 993 * 994 * @param pComponent OMX Handle 995 * 996 * @return None 997 */ 998/*================================================================== */ 999OMX_ERRORTYPE G722ENC_Fill_LCMLInitParamsEx(OMX_HANDLETYPE pComponent); 1000 1001/* =========================================================== */ 1002/** 1003 * G722ENC_IsValid() Returns whether the buffer is a valid buffer 1004 * 1005 * @param pComponentPrivate Component private data 1006 * 1007 * @param pBuffer Buffer 1008 * 1009 * @param eDir Direction of the buffer 1010 * 1011 * @return None 1012 */ 1013/*================================================================== */ 1014OMX_U32 G722ENC_IsValid(G722ENC_COMPONENT_PRIVATE *pComponentPrivate, OMX_U8 *pBuffer, OMX_DIRTYPE eDir) ; 1015 1016/* =========================================================== */ 1017/** 1018 * G722ENC_TransitionToIdle() Transitions component to idle 1019 * 1020 * 1021 * @param pComponentPrivate Component private data 1022 * 1023 * @return OMX_ErrorNone = No error 1024 * OMX Error code = Error 1025 */ 1026/*================================================================== */ 1027OMX_ERRORTYPE G722ENC_TransitionToIdle(G722ENC_COMPONENT_PRIVATE *pComponentPrivate); 1028 1029 1030/*void printEmmEvent (TUsnCodecEvent event);*/ 1031