Lines Matching refs:pComponentPrivate

63 OMX_U32 VIDDEC_GetRMFrecuency(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate)
67 OMX_PRINT1(pComponentPrivate->dbg, "+++ENTERING\n");
70 if ((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth > VIDDEC_CIF_WIDTH) ||
71 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight > VIDDEC_CIF_HEIGHT)) {
72 if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC) {
75 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingWMV) {
78 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4) {
79 if ((OMX_U16)pComponentPrivate->pInPortDef->format.video.nFrameHeight > VIDDEC_D1MAX_HEIGHT ||
80 (OMX_U16)pComponentPrivate->pInPortDef->format.video.nFrameWidth > VIDDEC_D1MAX_WIDTH)
89 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG2) {
92 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingH263) {
105 else if (((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth <= VIDDEC_CIF_WIDTH) &&
106 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth > VIDDEC_QCIF_WIDTH)) ||
107 ((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight <= VIDDEC_CIF_HEIGHT) &&
108 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight > VIDDEC_QCIF_HEIGHT))) {
109 if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC) {
112 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingWMV) {
115 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4) {
118 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG2) {
121 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingH263) {
134 else if (((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth <= VIDDEC_QCIF_WIDTH) &&
135 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth >= VIDDEC_MIN_WIDTH)) ||
136 ((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight <= VIDDEC_QCIF_HEIGHT) &&
137 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight >= VIDDEC_MIN_HEIGHT))) {
138 if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC) {
141 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingWMV) {
144 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4) {
147 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG2) {
150 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingH263) {
165 OMX_PRDSP2(pComponentPrivate->dbg, "Used RM Frec value = %d\n",(int)nReturnValue);
167 OMX_PRDSP2(pComponentPrivate->dbg, "Used RM Frec defaulted value = %d\n",(int)nReturnValue);
169 OMX_PRINT1(pComponentPrivate->dbg, "---EXITING\n");
529 OMX_ERRORTYPE VIDDEC_CircBuf_Init(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate, VIDDEC_CBUFFER_TYPE nTypeIndex, VIDDEC_PORT_INDEX nPortIndex)
536 pTempCBuffer = &pComponentPrivate->pCompPort[nPortIndex]->eTimeStamp;
547 OMX_MALLOC_STRUCT(pTempCBuffer->m_lock, pthread_mutex_t,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel3]);
567 OMX_ERRORTYPE VIDDEC_CircBuf_Flush(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate, VIDDEC_CBUFFER_TYPE nTypeIndex, VIDDEC_PORT_INDEX nPortIndex)
574 pTempCBuffer = &pComponentPrivate->pCompPort[nPortIndex]->eTimeStamp;
607 OMX_ERRORTYPE VIDDEC_CircBuf_DeInit(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate, VIDDEC_CBUFFER_TYPE nTypeIndex, VIDDEC_PORT_INDEX nPortIndex)
614 pTempCBuffer = &pComponentPrivate->pCompPort[nPortIndex]->eTimeStamp;
638 OMX_ERRORTYPE VIDDEC_CircBuf_Add(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate, VIDDEC_CBUFFER_TYPE nTypeIndex, VIDDEC_PORT_INDEX nPortIndex, OMX_PTR pElement)
644 pTempCBuffer = &pComponentPrivate->pCompPort[nPortIndex]->eTimeStamp;
676 OMX_ERRORTYPE VIDDEC_CircBuf_Remove(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate, VIDDEC_CBUFFER_TYPE nTypeIndex, VIDDEC_PORT_INDEX nPortIndex, OMX_PTR* pElement)
682 pTempCBuffer = &pComponentPrivate->pCompPort[nPortIndex]->eTimeStamp;
722 OMX_ERRORTYPE VIDDEC_CircBuf_Count(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate, VIDDEC_CBUFFER_TYPE nTypeIndex, VIDDEC_PORT_INDEX nPortIndex, OMX_U8* pCount)
728 pTempCBuffer = &pComponentPrivate->pCompPort[nPortIndex]->eTimeStamp;
759 OMX_U8 VIDDEC_CircBuf_GetHead(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate, VIDDEC_CBUFFER_TYPE nTypeIndex, VIDDEC_PORT_INDEX nPortIndex)
766 pTempCBuffer = &pComponentPrivate->pCompPort[nPortIndex]->eTimeStamp;
794 * @param pComponentPrivate Pointer to the pComponentPrivatePrivate
800 OMX_ERRORTYPE VIDDEC_Load_Defaults (VIDDEC_COMPONENT_PRIVATE* pComponentPrivate, OMX_S32 nPassing)
808 pComponentPrivate->nInBufIndex = 0;
809 pComponentPrivate->nOutBufIndex = 0;
810 pComponentPrivate->nInMarkBufIndex = 0;
811 pComponentPrivate->nOutMarkBufIndex = 0;
812 pComponentPrivate->nInCmdMarkBufIndex = 0;
813 pComponentPrivate->nOutCmdMarkBufIndex = 0;
815 pComponentPrivate->pCompPort[0]->hTunnelComponent = NULL;
816 pComponentPrivate->pCompPort[1]->hTunnelComponent = NULL;
819 pComponentPrivate->pComponentVersion.s.nVersionMajor = VERSION_MAJOR;
820 pComponentPrivate->pComponentVersion.s.nVersionMinor = VERSION_MINOR;
821 pComponentPrivate->pComponentVersion.s.nRevision = VERSION_REVISION;
822 pComponentPrivate->pComponentVersion.s.nStep = VERSION_STEP;
825 pComponentPrivate->pSpecVersion.s.nVersionMajor = VERSION_MAJOR;
826 pComponentPrivate->pSpecVersion.s.nVersionMinor = VERSION_MINOR;
827 pComponentPrivate->pSpecVersion.s.nRevision = VERSION_REVISION;
828 pComponentPrivate->pSpecVersion.s.nStep = VERSION_STEP;
830 pComponentPrivate->pHandle->pApplicationPrivate = NULL;
832 OMX_CONF_INIT_STRUCT(pComponentPrivate->pPortParamType, OMX_PORT_PARAM_TYPE, pComponentPrivate->dbg);
833 pComponentPrivate->pPortParamType->nPorts = NUM_OF_PORTS;
834 pComponentPrivate->pPortParamType->nStartPortNumber = VIDDEC_INPUT_PORT;
836 OMX_CONF_INIT_STRUCT(pComponentPrivate->pPortParamTypeAudio, OMX_PORT_PARAM_TYPE, pComponentPrivate->dbg);
837 pComponentPrivate->pPortParamTypeAudio->nPorts = VIDDEC_ZERO;
838 pComponentPrivate->pPortParamTypeAudio->nStartPortNumber = VIDDEC_ZERO;
839 OMX_CONF_INIT_STRUCT(pComponentPrivate->pPortParamTypeImage, OMX_PORT_PARAM_TYPE, pComponentPrivate->dbg);
840 pComponentPrivate->pPortParamTypeImage->nPorts = VIDDEC_ZERO;
841 pComponentPrivate->pPortParamTypeImage->nStartPortNumber = VIDDEC_ZERO;
842 OMX_CONF_INIT_STRUCT(pComponentPrivate->pPortParamTypeOthers, OMX_PORT_PARAM_TYPE, pComponentPrivate->dbg);
843 pComponentPrivate->pPortParamTypeOthers->nPorts = VIDDEC_ZERO;
844 pComponentPrivate->pPortParamTypeOthers->nStartPortNumber = VIDDEC_ZERO;
847 pComponentPrivate->pCompPort[VIDDEC_INPUT_PORT]->nBufferCnt = 0;
848 pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->nBufferCnt = 0;
851 OMX_CONF_INIT_STRUCT(pComponentPrivate->pInPortDef, OMX_PARAM_PORTDEFINITIONTYPE, pComponentPrivate->dbg);
852 pComponentPrivate->pInPortDef->nPortIndex = VIDDEC_INPUT_PORT;
853 pComponentPrivate->pInPortDef->eDir = OMX_DirInput;
854 pComponentPrivate->pInPortDef->nBufferCountActual = MAX_PRIVATE_IN_BUFFERS;
855 pComponentPrivate->pInPortDef->nBufferCountMin = VIDDEC_BUFFERMINCOUNT;
856 pComponentPrivate->pInPortDef->nBufferSize = VIDDEC_DEFAULT_INPUT_BUFFER_SIZE;
857 pComponentPrivate->pInPortDef->bEnabled = VIDDEC_PORT_ENABLED;
858 pComponentPrivate->pInPortDef->bPopulated = VIDDEC_PORT_POPULATED;
859 pComponentPrivate->pInPortDef->eDomain = VIDDEC_PORT_DOMAIN;
861 pComponentPrivate->pInPortDef->bBuffersContiguous = OMX_FALSE;
862 pComponentPrivate->pInPortDef->nBufferAlignment = OMX_FALSE;
864 pComponentPrivate->pInPortDef->format.video.pNativeRender = VIDDEC_INPUT_PORT_NATIVERENDER;
865 pComponentPrivate->pInPortDef->format.video.nFrameWidth = VIDDEC_DEFAULT_WIDTH;
866 pComponentPrivate->pInPortDef->format.video.nFrameHeight = VIDDEC_DEFAULT_HEIGHT;
867 pComponentPrivate->pInPortDef->format.video.nStride = VIDDEC_INPUT_PORT_STRIDE;
868 pComponentPrivate->pInPortDef->format.video.nSliceHeight = VIDDEC_INPUT_PORT_SLICEHEIGHT;
869 pComponentPrivate->pInPortDef->format.video.nBitrate = VIDDEC_INPUT_PORT_BITRATE;
870 pComponentPrivate->pInPortDef->format.video.xFramerate = VIDDEC_INPUT_PORT_FRAMERATE;
871 pComponentPrivate->pInPortDef->format.video.cMIMEType = VIDDEC_MIMETYPEMPEG4;
872 pComponentPrivate->pInPortDef->format.video.bFlagErrorConcealment = VIDDEC_INPUT_PORT_FLAGERRORCONCEALMENT;
873 pComponentPrivate->pInPortDef->format.video.eCompressionFormat = VIDDEC_INPUT_PORT_COMPRESSIONFORMAT;
874 pComponentPrivate->pInPortDef->format.video.eColorFormat = VIDDEC_COLORFORMATUNUSED;
876 pComponentPrivate->pInPortDef->format.video.pNativeWindow = 0;
880 OMX_CONF_INIT_STRUCT(pComponentPrivate->pOutPortDef, OMX_PARAM_PORTDEFINITIONTYPE, pComponentPrivate->dbg);
881 pComponentPrivate->pOutPortDef->nPortIndex = VIDDEC_OUTPUT_PORT;
882 pComponentPrivate->pOutPortDef->eDir = OMX_DirOutput;
883 pComponentPrivate->pOutPortDef->nBufferCountActual = MAX_PRIVATE_OUT_BUFFERS;
884 pComponentPrivate->pOutPortDef->nBufferCountMin = VIDDEC_BUFFERMINCOUNT;
885 pComponentPrivate->pOutPortDef->nBufferSize = VIDDEC_DEFAULT_OUTPUT_BUFFER_SIZE;
886 pComponentPrivate->pOutPortDef->bEnabled = VIDDEC_PORT_ENABLED;
887 pComponentPrivate->pOutPortDef->bPopulated = VIDDEC_PORT_POPULATED;
888 pComponentPrivate->pOutPortDef->eDomain = VIDDEC_PORT_DOMAIN;
890 pComponentPrivate->pInPortDef->bBuffersContiguous = OMX_FALSE;
891 pComponentPrivate->pInPortDef->nBufferAlignment = OMX_FALSE;
893 pComponentPrivate->pOutPortDef->format.video.cMIMEType = VIDDEC_MIMETYPEYUV;
894 pComponentPrivate->pOutPortDef->format.video.pNativeRender = VIDDEC_OUTPUT_PORT_NATIVERENDER;
895 pComponentPrivate->pOutPortDef->format.video.nFrameWidth = VIDDEC_DEFAULT_WIDTH;
896 pComponentPrivate->pOutPortDef->format.video.nFrameHeight = VIDDEC_DEFAULT_HEIGHT;
897 pComponentPrivate->pOutPortDef->format.video.nStride = VIDDEC_OUTPUT_PORT_STRIDE;
898 pComponentPrivate->pOutPortDef->format.video.nSliceHeight = VIDDEC_OUTPUT_PORT_SLICEHEIGHT;
899 pComponentPrivate->pOutPortDef->format.video.nBitrate = VIDDEC_OUTPUT_PORT_BITRATE;
900 pComponentPrivate->pOutPortDef->format.video.xFramerate = VIDDEC_OUTPUT_PORT_FRAMERATE;
901 pComponentPrivate->pOutPortDef->format.video.bFlagErrorConcealment = VIDDEC_OUTPUT_PORT_FLAGERRORCONCEALMENT;
902 pComponentPrivate->pOutPortDef->format.video.eCompressionFormat = VIDDEC_OUTPUT_PORT_COMPRESSIONFORMAT;
903 pComponentPrivate->pOutPortDef->format.video.eColorFormat = VIDDEC_COLORFORMAT420;
905 pComponentPrivate->pOutPortDef->format.video.pNativeWindow = 0;
908 OMX_MALLOC_STRUCT(pComponentPrivate->pCompPort[VIDDEC_INPUT_PORT]->pBufferPrivate[iCount], VIDDEC_BUFFER_PRIVATE,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel0]);
909 pComponentPrivate->pCompPort[VIDDEC_INPUT_PORT]->pBufferPrivate[iCount]->pBufferHdr = NULL;
913 OMX_MALLOC_STRUCT(pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->pBufferPrivate[iCount], VIDDEC_BUFFER_PRIVATE,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel0]);
914 pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->pBufferPrivate[iCount]->pBufferHdr = NULL;
918 OMX_CONF_INIT_STRUCT(pComponentPrivate->pInPortFormat, OMX_VIDEO_PARAM_PORTFORMATTYPE, pComponentPrivate->dbg);
919 pComponentPrivate->pInPortFormat->nPortIndex = VIDDEC_INPUT_PORT;
920 pComponentPrivate->pInPortFormat->nIndex = VIDDEC_DEFAULT_INPUT_INDEX_MPEG4;
921 pComponentPrivate->pInPortFormat->eCompressionFormat = VIDDEC_INPUT_PORT_COMPRESSIONFORMAT;
922 pComponentPrivate->pInPortFormat->eColorFormat = VIDDEC_COLORFORMATUNUSED;
924 pComponentPrivate->pInPortFormat->xFramerate = VIDDEC_INPUT_PORT_FRAMERATE;
928 OMX_CONF_INIT_STRUCT(pComponentPrivate->pOutPortFormat, OMX_VIDEO_PARAM_PORTFORMATTYPE, pComponentPrivate->dbg);
929 pComponentPrivate->pOutPortFormat->nPortIndex = VIDDEC_OUTPUT_PORT;
930 pComponentPrivate->pOutPortFormat->nIndex = VIDDEC_DEFAULT_OUTPUT_INDEX_PLANAR420;
931 pComponentPrivate->pOutPortFormat->eCompressionFormat = VIDDEC_OUTPUT_PORT_COMPRESSIONFORMAT;
932 pComponentPrivate->pOutPortFormat->eColorFormat = VIDDEC_COLORFORMAT420;
934 pComponentPrivate->pOutPortFormat->xFramerate = VIDDEC_INPUT_PORT_FRAMERATE;
937 OMX_CONF_INIT_STRUCT(pComponentPrivate->pPriorityMgmt, OMX_PRIORITYMGMTTYPE, pComponentPrivate->dbg);
938 pComponentPrivate->pPriorityMgmt->nGroupPriority = -1;
939 pComponentPrivate->pPriorityMgmt->nGroupID = -1;
942 pComponentPrivate->pCompPort[VIDDEC_INPUT_PORT]->eSupplierSetting = OMX_BufferSupplyOutput;
945 OMX_CONF_INIT_STRUCT(pComponentPrivate->pInBufSupplier, OMX_PARAM_BUFFERSUPPLIERTYPE , pComponentPrivate->dbg);
946 pComponentPrivate->pInBufSupplier->nPortIndex = VIDDEC_INPUT_PORT;
947 pComponentPrivate->pInBufSupplier->eBufferSupplier = VIDDEC_INPUT_PORT_BUFFERSUPPLIER;
950 OMX_CONF_INIT_STRUCT(pComponentPrivate->pOutBufSupplier, OMX_PARAM_BUFFERSUPPLIERTYPE , pComponentPrivate->dbg);
951 pComponentPrivate->pOutBufSupplier->nPortIndex = VIDDEC_OUTPUT_PORT;
952 pComponentPrivate->pOutBufSupplier->eBufferSupplier = VIDDEC_OUTPUT_PORT_BUFFERSUPPLIER;
957 OMX_CONF_INIT_STRUCT(&pComponentPrivate->eMBErrorReport, OMX_CONFIG_MBERRORREPORTINGTYPE , pComponentPrivate->dbg);
958 pComponentPrivate->eMBErrorReport.nPortIndex = VIDDEC_OUTPUT_PORT;
959 pComponentPrivate->eMBErrorReport.bEnabled = OMX_FALSE;
963 OMX_CONF_INIT_STRUCT(&pComponentPrivate->eMBErrorMapType[iCount], OMX_CONFIG_MACROBLOCKERRORMAPTYPE_TI , pComponentPrivate->dbg);
964 pComponentPrivate->eMBErrorMapType[iCount].nPortIndex = VIDDEC_OUTPUT_PORT;
965 pComponentPrivate->eMBErrorMapType[iCount].nErrMapSize = (VIDDEC_DEFAULT_WIDTH * VIDDEC_DEFAULT_HEIGHT) / 256;
967 pComponentPrivate->cMBErrorIndexIn = 0;
968 pComponentPrivate->cMBErrorIndexOut = 0;
972 pComponentPrivate->nPendingStateChangeRequests = 0;
973 if(pthread_mutex_init(&pComponentPrivate->mutexStateChangeRequest, NULL)) {
976 if(pthread_cond_init (&pComponentPrivate->StateChangeCondition, NULL)) {
981 OMX_CONF_INIT_STRUCT (pComponentPrivate->pMpeg4, OMX_VIDEO_PARAM_MPEG4TYPE, pComponentPrivate->dbg);
982 pComponentPrivate->pMpeg4->nPortIndex = VIDDEC_DEFAULT_MPEG4_PORTINDEX;
983 pComponentPrivate->pMpeg4->nSliceHeaderSpacing = VIDDEC_DEFAULT_MPEG4_SLICEHEADERSPACING;
984 pComponentPrivate->pMpeg4->bSVH = VIDDEC_DEFAULT_MPEG4_SVH;
985 pComponentPrivate->pMpeg4->bGov = VIDDEC_DEFAULT_MPEG4_GOV;
986 pComponentPrivate->pMpeg4->nPFrames = VIDDEC_DEFAULT_MPEG4_PFRAMES;
987 pComponentPrivate->pMpeg4->nBFrames = VIDDEC_DEFAULT_MPEG4_BFRAMES;
988 pComponentPrivate->pMpeg4->nIDCVLCThreshold = VIDDEC_DEFAULT_MPEG4_IDCVLCTHRESHOLD;
989 pComponentPrivate->pMpeg4->bACPred = VIDDEC_DEFAULT_MPEG4_ACPRED;
990 pComponentPrivate->pMpeg4->nMaxPacketSize = VIDDEC_DEFAULT_MPEG4_MAXPACKETSIZE;
991 pComponentPrivate->pMpeg4->nTimeIncRes = VIDDEC_DEFAULT_MPEG4_TIMEINCRES;
992 pComponentPrivate->pMpeg4->eProfile = VIDDEC_DEFAULT_MPEG4_PROFILE;
993 pComponentPrivate->pMpeg4->eLevel = VIDDEC_DEFAULT_MPEG4_LEVEL;
994 pComponentPrivate->pMpeg4->nAllowedPictureTypes = VIDDEC_DEFAULT_MPEG4_ALLOWEDPICTURETYPES;
995 pComponentPrivate->pMpeg4->nHeaderExtension = VIDDEC_DEFAULT_MPEG4_HEADEREXTENSION;
996 pComponentPrivate->pMpeg4->bReversibleVLC = VIDDEC_DEFAULT_MPEG4_REVERSIBLEVLC;
999 OMX_CONF_INIT_STRUCT (pComponentPrivate->pMpeg2, OMX_VIDEO_PARAM_MPEG2TYPE, pComponentPrivate->dbg);
1000 pComponentPrivate->pMpeg2->nPortIndex = VIDDEC_DEFAULT_MPEG2_PORTINDEX;
1001 pComponentPrivate->pMpeg2->nPFrames = VIDDEC_DEFAULT_MPEG2_PFRAMES;
1002 pComponentPrivate->pMpeg2->nBFrames = VIDDEC_DEFAULT_MPEG2_BFRAMES;
1003 pComponentPrivate->pMpeg2->eProfile = VIDDEC_DEFAULT_MPEG2_PROFILE;
1004 pComponentPrivate->pMpeg2->eLevel = VIDDEC_DEFAULT_MPEG2_LEVEL;
1007 OMX_CONF_INIT_STRUCT(pComponentPrivate->pH264, OMX_VIDEO_PARAM_AVCTYPE, pComponentPrivate->dbg);
1008 pComponentPrivate->pH264->nPortIndex = VIDDEC_DEFAULT_H264_PORTINDEX;
1009 pComponentPrivate->pH264->nSliceHeaderSpacing = VIDDEC_DEFAULT_H264_SLICEHEADERSPACING;
1010 pComponentPrivate->pH264->nPFrames = VIDDEC_DEFAULT_H264_PFRAMES;
1011 pComponentPrivate->pH264->nBFrames = VIDDEC_DEFAULT_H264_BFRAMES;
1012 pComponentPrivate->pH264->bUseHadamard = VIDDEC_DEFAULT_H264_USEHADAMARD;
1013 pComponentPrivate->pH264->nRefFrames = VIDDEC_DEFAULT_H264_REFFRAMES;
1014 pComponentPrivate->pH264->nRefIdx10ActiveMinus1 = VIDDEC_DEFAULT_H264_REFIDX10ACTIVEMINUS1;
1015 pComponentPrivate->pH264->nRefIdx11ActiveMinus1 = VIDDEC_DEFAULT_H264_REFIDX11ACTIVEMINUS1;
1016 pComponentPrivate->pH264->bEnableUEP = VIDDEC_DEFAULT_H264_ENABLEUEP;
1017 pComponentPrivate->pH264->bEnableFMO = VIDDEC_DEFAULT_H264_ENABLEFMO;
1018 pComponentPrivate->pH264->bEnableASO = VIDDEC_DEFAULT_H264_ENABLEASO;
1019 pComponentPrivate->pH264->bEnableRS = VIDDEC_DEFAULT_H264_ENABLERS;
1020 pComponentPrivate->pH264->eProfile = VIDDEC_DEFAULT_H264_PROFILE;
1021 pComponentPrivate->pH264->eLevel = VIDDEC_DEFAULT_H264_LEVEL;
1022 pComponentPrivate->pH264->nAllowedPictureTypes = VIDDEC_DEFAULT_H264_ALLOWEDPICTURETYPES;
1023 pComponentPrivate->pH264->bFrameMBsOnly = VIDDEC_DEFAULT_H264_FRAMEMBSONLY;
1024 pComponentPrivate->pH264->bMBAFF = VIDDEC_DEFAULT_H264_MBAFF;
1025 pComponentPrivate->pH264->bEntropyCodingCABAC = VIDDEC_DEFAULT_H264_ENTROPYCODINGCABAC;
1026 pComponentPrivate->pH264->bWeightedPPrediction = VIDDEC_DEFAULT_H264_WEIGHTEDPPREDICTION;
1027 pComponentPrivate->pH264->nWeightedBipredicitonMode = VIDDEC_DEFAULT_H264_WEIGHTEDBIPREDICITONMODE;
1028 pComponentPrivate->pH264->bconstIpred = VIDDEC_DEFAULT_H264_CONSTIPRED;
1029 pComponentPrivate->pH264->bDirect8x8Inference = VIDDEC_DEFAULT_H264_DIRECT8X8INFERENCE;
1030 pComponentPrivate->pH264->bDirectSpatialTemporal = VIDDEC_DEFAULT_H264_DIRECTSPATIALTEMPORAL;
1031 pComponentPrivate->pH264->nCabacInitIdc = VIDDEC_DEFAULT_H264_CABACINITIDC;
1032 pComponentPrivate->pH264->eLoopFilterMode = VIDDEC_DEFAULT_H264_LOOPFILTERMODE;
1033 pComponentPrivate->H264BitStreamFormat = VIDDEC_DEFAULT_H264BITSTRMFMT;
1035 pComponentPrivate->pH263->nPortIndex = VIDDEC_DEFAULT_H263_PORTINDEX;
1036 pComponentPrivate->pH263->nPFrames = VIDDEC_DEFAULT_H263_PFRAMES;
1037 pComponentPrivate->pH263->nBFrames = VIDDEC_DEFAULT_H263_BFRAMES;
1038 pComponentPrivate->pH263->eProfile = VIDDEC_DEFAULT_H263_PROFILE;
1039 pComponentPrivate->pH263->eLevel = VIDDEC_DEFAULT_H263_LEVEL;
1040 pComponentPrivate->pH263->bPLUSPTYPEAllowed = VIDDEC_DEFAULT_H263_PLUSPTYPEALLOWED;
1041 pComponentPrivate->pH263->nAllowedPictureTypes = VIDDEC_DEFAULT_H263_ALLOWEDPICTURETYPES;
1042 pComponentPrivate->pH263->bForceRoundingTypeToZero = VIDDEC_DEFAULT_H263_FORCEROUNDINGTYPETOZERO;
1043 pComponentPrivate->pH263->nPictureHeaderRepetition = VIDDEC_DEFAULT_H263_PICTUREHEADERREPETITION;
1044 pComponentPrivate->pH263->nGOBHeaderInterval = VIDDEC_DEFAULT_H263_GOBHEADERINTERVAL;
1046 OMX_CONF_INIT_STRUCT(pComponentPrivate->pWMV, OMX_VIDEO_PARAM_WMVTYPE, pComponentPrivate->dbg);
1047 pComponentPrivate->pWMV->nPortIndex = VIDDEC_DEFAULT_WMV_PORTINDEX;
1048 pComponentPrivate->pWMV->eFormat = VIDDEC_DEFAULT_WMV_FORMAT;
1049 pComponentPrivate->nWMVFileType = VIDDEC_WMV_RCVSTREAM; /* RCVSTREAM must be the default value*/
1050 pComponentPrivate->wmvProfile = VIDDEC_WMV_PROFILEMAX;
1052 pComponentPrivate->bIsNALBigEndian = OMX_TRUE;
1054 pComponentPrivate->bIsNALBigEndian = OMX_FALSE;
1056 pComponentPrivate->eLCMLState = VidDec_LCML_State_Unload;
1057 pComponentPrivate->bLCMLHalted = OMX_TRUE;
1059 pComponentPrivate->bLCMLOut = OMX_FALSE;
1061 pComponentPrivate->eRMProxyState = VidDec_RMPROXY_State_Unload;
1062 pComponentPrivate->ProcessMode = VIDDEC_DEFAULT_PROCESSMODE;
1063 pComponentPrivate->bParserEnabled = OMX_TRUE;
1065 VIDDEC_CircBuf_Init(pComponentPrivate, VIDDEC_CBUFFER_TIMESTAMP, VIDDEC_INPUT_PORT);
1067 VIDDEC_PTHREAD_MUTEX_INIT(pComponentPrivate->sMutex);
1068 VIDDEC_PTHREAD_SEMAPHORE_INIT(pComponentPrivate->sInSemaphore);
1069 VIDDEC_PTHREAD_SEMAPHORE_INIT(pComponentPrivate->sOutSemaphore);
1072 pComponentPrivate->aBufferFlags[iCount].nTimeStamp = 0;
1073 pComponentPrivate->aBufferFlags[iCount].nFlags = 0;
1074 pComponentPrivate->aBufferFlags[iCount].pMarkData = NULL;
1075 pComponentPrivate->aBufferFlags[iCount].hMarkTargetComponent = NULL;
1077 pComponentPrivate->pBufferRCV.sStructRCV.nNumFrames = 0xFFFFFF; /*Infinite frame number*/
1078 pComponentPrivate->pBufferRCV.sStructRCV.nFrameType = 0x85; /*85*/
1079 pComponentPrivate->pBufferRCV.sStructRCV.nID = 0x04; /*WMV3*/
1080 pComponentPrivate->pBufferRCV.sStructRCV.nStructData = 0x018a3106; /*0x06318a01zero fill 0x018a3106*/
1081 pComponentPrivate->pBufferRCV.sStructRCV.nVertSize = 352; /*720*/
1082 pComponentPrivate->pBufferRCV.sStructRCV.nHorizSize = 288; /*576*/
1083 OMX_CONF_INIT_STRUCT( &pComponentPrivate->pBufferTemp, OMX_BUFFERHEADERTYPE, pComponentPrivate->dbg);
1084 pComponentPrivate->pBufferTemp.nFilledLen = sizeof(VIDDEC_WMV_RCV_header);
1085 pComponentPrivate->pBufferTemp.nAllocLen = sizeof(VIDDEC_WMV_RCV_header);
1089 pComponentPrivate->pPVCapabilityFlags->iIsOMXComponentMultiThreaded = OMX_TRUE;
1090 pComponentPrivate->pPVCapabilityFlags->iOMXComponentSupportsExternalOutputBufferAlloc = OMX_TRUE;
1091 pComponentPrivate->pPVCapabilityFlags->iOMXComponentSupportsExternalInputBufferAlloc = OMX_FALSE;
1092 pComponentPrivate->pPVCapabilityFlags->iOMXComponentSupportsMovableInputBuffers = OMX_FALSE;
1093 pComponentPrivate->pPVCapabilityFlags->iOMXComponentSupportsPartialFrames = OMX_FALSE;
1094 pComponentPrivate->pPVCapabilityFlags->iOMXComponentCanHandleIncompleteFrames = OMX_FALSE;
1097 if (pComponentPrivate->ProcessMode == 0 && pComponentPrivate->H264BitStreamFormat == 0) {
1099 pComponentPrivate->pPVCapabilityFlags->iOMXComponentUsesNALStartCodes = OMX_TRUE;
1101 else if (pComponentPrivate->ProcessMode == 0 && pComponentPrivate->H264BitStreamFormat >= 1) {
1103 pComponentPrivate->pPVCapabilityFlags->iOMXComponentUsesNALStartCodes = OMX_FALSE;
1105 else if (pComponentPrivate->ProcessMode == 1 && pComponentPrivate->H264BitStreamFormat == 0) {
1107 pComponentPrivate->pPVCapabilityFlags->iOMXComponentUsesNALStartCodes = OMX_TRUE;
1109 else if (pComponentPrivate->ProcessMode == 1 && pComponentPrivate->H264BitStreamFormat >= 1) {
1116 if (pComponentPrivate->ProcessMode == 0 && pComponentPrivate->H264BitStreamFormat == 0) {
1118 pComponentPrivate->pPVCapabilityFlags->iOMXComponentUsesFullAVCFrames = OMX_TRUE;
1120 else if (pComponentPrivate->ProcessMode == 0 && pComponentPrivate->H264BitStreamFormat >= 1) {
1122 pComponentPrivate->pPVCapabilityFlags->iOMXComponentUsesFullAVCFrames = OMX_TRUE;
1124 else if (pComponentPrivate->ProcessMode == 1 && pComponentPrivate->H264BitStreamFormat == 0) {
1126 pComponentPrivate->pPVCapabilityFlags->iOMXComponentUsesFullAVCFrames = OMX_FALSE;
1128 else if (pComponentPrivate->ProcessMode == 1 && pComponentPrivate->H264BitStreamFormat >= 1) {
1136 OMX_CONF_INIT_STRUCT(pComponentPrivate->pDeblockingParamType, OMX_PARAM_DEBLOCKINGTYPE, pComponentPrivate->dbg);
1137 pComponentPrivate->pDeblockingParamType->nPortIndex = VIDDEC_OUTPUT_PORT;
1138 pComponentPrivate->pDeblockingParamType->bDeblocking = OMX_FALSE;
1143 VIDDEC_CircBuf_Flush(pComponentPrivate, VIDDEC_CBUFFER_TIMESTAMP, VIDDEC_INPUT_PORT);
1144 pComponentPrivate->bIsPaused = 0;
1145 pComponentPrivate->bIsStopping = 0;
1146 pComponentPrivate->bFirstBuffer = 1;
1147 pComponentPrivate->eIdleToLoad = OMX_StateInvalid;
1148 pComponentPrivate->iEndofInputSent = 0;
1149 pComponentPrivate->nCountInputBFromDsp = 0;
1150 pComponentPrivate->nCountOutputBFromDsp = 0;
1151 pComponentPrivate->nCountInputBFromApp = 0;
1152 pComponentPrivate->nCountOutputBFromApp = 0;
1153 pComponentPrivate->frameCounter = 0;
1154 pComponentPrivate->bMult16Size = OMX_FALSE;
1155 pComponentPrivate->bFlushOut = OMX_FALSE;
1156 pComponentPrivate->nBytesConsumed = 0;
1157 pComponentPrivate->bBuffMarkTaked = OMX_FALSE;
1158 pComponentPrivate->bBuffalreadyMarked = OMX_FALSE;
1159 pComponentPrivate->bFirstHeader = OMX_FALSE;
1160 pComponentPrivate->nDisplayWidth = 0;
1161 pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel1] = 0;
1162 pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel2] = 0;
1163 pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel3] = 0;
1164 pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel4] = 0;
1165 pComponentPrivate->bVC1Fix = OMX_TRUE;
1166 pComponentPrivate->eFirstBuffer.pFirstBufferSaved = NULL;
1167 pComponentPrivate->eFirstBuffer.bSaveFirstBuffer = OMX_FALSE;
1168 pComponentPrivate->eFirstBuffer.nFilledLen = 0;
1169 pComponentPrivate->bDynamicConfigurationInProgress = OMX_FALSE;
1170 pComponentPrivate->nInternalConfigBufferFilledAVC = 0;
1171 pComponentPrivate->eMBErrorReport.bEnabled = OMX_FALSE;
1172 pComponentPrivate->firstBufferEos = OMX_FALSE;
1177 pComponentPrivate->bIsPaused = 0;
1178 pComponentPrivate->bIsStopping = 0;
1179 pComponentPrivate->bFirstBuffer = 1;
1180 pComponentPrivate->iEndofInputSent = 0;
1181 pComponentPrivate->nCountInputBFromDsp = 0;
1182 pComponentPrivate->nCountOutputBFromDsp = 0;
1183 pComponentPrivate->nCountInputBFromApp = 0;
1184 pComponentPrivate->nCountOutputBFromApp = 0;
1185 pComponentPrivate->frameCounter = 0;
1186 pComponentPrivate->bMult16Size = OMX_FALSE;
1187 pComponentPrivate->bFlushOut = OMX_FALSE;
1188 pComponentPrivate->bFirstHeader = OMX_FALSE;
1189 pComponentPrivate->nInBufIndex = 0;
1190 pComponentPrivate->nOutBufIndex = 0;
1191 pComponentPrivate->nInMarkBufIndex = 0;
1192 pComponentPrivate->nOutMarkBufIndex = 0;
1193 pComponentPrivate->nInCmdMarkBufIndex = 0;
1194 pComponentPrivate->nOutCmdMarkBufIndex = 0;
1198 pComponentPrivate->pH263->nPortIndex = VIDDEC_DEFAULT_H263_PORTINDEX;
1199 pComponentPrivate->pH263->nPFrames = VIDDEC_DEFAULT_H263_PFRAMES;
1200 pComponentPrivate->pH263->nBFrames = VIDDEC_DEFAULT_H263_BFRAMES;
1201 pComponentPrivate->pH263->eProfile = OMX_VIDEO_H263ProfileBaseline;
1202 pComponentPrivate->pH263->eLevel = OMX_VIDEO_H263Level10;
1203 pComponentPrivate->pH263->bPLUSPTYPEAllowed = VIDDEC_DEFAULT_H263_PLUSPTYPEALLOWED;
1204 pComponentPrivate->pH263->nAllowedPictureTypes = VIDDEC_DEFAULT_H263_ALLOWEDPICTURETYPES;
1205 pComponentPrivate->pH263->bForceRoundingTypeToZero = VIDDEC_DEFAULT_H263_FORCEROUNDINGTYPETOZERO;
1206 pComponentPrivate->pH263->nPictureHeaderRepetition = VIDDEC_DEFAULT_H263_PICTUREHEADERREPETITION;
1207 pComponentPrivate->pH263->nGOBHeaderInterval = VIDDEC_DEFAULT_H263_GOBHEADERINTERVAL;
1209 pComponentPrivate->pInPortFormat->nPortIndex = VIDDEC_INPUT_PORT;
1210 pComponentPrivate->pInPortFormat->nIndex = VIDDEC_DEFAULT_INPUT_INDEX_H263;
1211 pComponentPrivate->pInPortFormat->eCompressionFormat = OMX_VIDEO_CodingH263;
1212 pComponentPrivate->pInPortFormat->eColorFormat = OMX_COLOR_FormatUnused;
1214 pComponentPrivate->pInPortFormat->xFramerate = VIDDEC_INPUT_PORT_FRAMERATE;
1216 pComponentPrivate->pInPortDef->format.video.nFrameWidth = VIDDEC_DEFAULT_WIDTH;
1217 pComponentPrivate->pInPortDef->format.video.nFrameHeight = VIDDEC_DEFAULT_HEIGHT;
1218 pComponentPrivate->pInPortDef->format.video.nBitrate = VIDDEC_INPUT_PORT_BITRATE;
1219 pComponentPrivate->pInPortDef->format.video.xFramerate = VIDDEC_INPUT_PORT_FRAMERATE;
1220 pComponentPrivate->pInPortDef->format.video.eCompressionFormat = OMX_VIDEO_CodingH263;
1221 pComponentPrivate->pInPortDef->format.video.eColorFormat = OMX_COLOR_FormatUnused;
1222 pComponentPrivate->pInPortDef->nBufferSize = pComponentPrivate->pInPortDef->format.video.nFrameWidth *
1223 pComponentPrivate->pInPortDef->format.video.nFrameHeight *
1225 pComponentPrivate->pDeblockingParamType->bDeblocking = OMX_FALSE;
1226 pComponentPrivate->bIsSparkInput = OMX_FALSE;
1230 pComponentPrivate->pInPortFormat->nPortIndex = VIDDEC_INPUT_PORT;
1231 pComponentPrivate->pInPortFormat->nIndex = VIDDEC_DEFAULT_INPUT_INDEX_H263;
1232 pComponentPrivate->pInPortFormat->eCompressionFormat = OMX_VIDEO_CodingUnused;
1233 pComponentPrivate->pInPortFormat->eColorFormat = OMX_COLOR_FormatUnused;
1235 pComponentPrivate->pInPortFormat->xFramerate = VIDDEC_INPUT_PORT_FRAMERATE;
1237 pComponentPrivate->pInPortDef->format.video.nFrameWidth = VIDDEC_DEFAULT_WIDTH;
1238 pComponentPrivate->pInPortDef->format.video.nFrameHeight = VIDDEC_DEFAULT_HEIGHT;
1239 pComponentPrivate->pInPortDef->format.video.nBitrate = VIDDEC_INPUT_PORT_BITRATE;
1240 pComponentPrivate->pInPortDef->format.video.xFramerate = VIDDEC_INPUT_PORT_FRAMERATE;
1241 pComponentPrivate->pInPortDef->format.video.eCompressionFormat = pComponentPrivate->pInPortFormat->eCompressionFormat;
1242 pComponentPrivate->pInPortDef->format.video.eColorFormat = pComponentPrivate->pInPortFormat->eColorFormat;
1243 pComponentPrivate->pInPortDef->nBufferSize = pComponentPrivate->pInPortDef->format.video.nFrameWidth *
1244 pComponentPrivate->pInPortDef->format.video.nFrameHeight *
1246 pComponentPrivate->pDeblockingParamType->bDeblocking = OMX_FALSE;
1247 pComponentPrivate->bIsSparkInput = OMX_TRUE;
1252 pComponentPrivate->pH264->nPortIndex = VIDDEC_DEFAULT_H264_PORTINDEX;
1253 pComponentPrivate->pH264->nPFrames = VIDDEC_DEFAULT_H264_PFRAMES;
1254 pComponentPrivate->pH264->nBFrames = VIDDEC_DEFAULT_H264_BFRAMES;
1255 pComponentPrivate->pH264->eProfile = OMX_VIDEO_AVCProfileBaseline;
1256 pComponentPrivate->pH264->eLevel = OMX_VIDEO_AVCLevelMax;
1258 pComponentPrivate->pInPortFormat->nPortIndex = VIDDEC_INPUT_PORT;
1259 pComponentPrivate->pInPortFormat->nIndex = VIDDEC_DEFAULT_INPUT_INDEX_H264;
1260 pComponentPrivate->pInPortFormat->eCompressionFormat = OMX_VIDEO_CodingAVC;
1261 pComponentPrivate->pInPortFormat->eColorFormat = OMX_COLOR_FormatUnused;
1263 pComponentPrivate->pInPortFormat->xFramerate = VIDDEC_INPUT_PORT_FRAMERATE;
1265 pComponentPrivate->pInPortDef->format.video.nFrameWidth = VIDDEC_DEFAULT_WIDTH;
1266 pComponentPrivate->pInPortDef->format.video.nFrameHeight = VIDDEC_DEFAULT_HEIGHT;
1267 pComponentPrivate->pInPortDef->format.video.nBitrate = VIDDEC_INPUT_PORT_BITRATE;
1268 pComponentPrivate->pInPortDef->format.video.xFramerate = VIDDEC_INPUT_PORT_FRAMERATE;
1269 pComponentPrivate->pInPortDef->format.video.eCompressionFormat = OMX_VIDEO_CodingAVC;
1270 pComponentPrivate->pInPortDef->format.video.eColorFormat = OMX_COLOR_FormatUnused;
1271 pComponentPrivate->pInPortDef->nBufferSize = pComponentPrivate->pInPortDef->format.video.nFrameWidth *
1272 pComponentPrivate->pInPortDef->format.video.nFrameHeight *
1274 pComponentPrivate->pDeblockingParamType->bDeblocking = OMX_TRUE; /* Always enable */
1275 pComponentPrivate->bIsSparkInput = OMX_FALSE;
1279 pComponentPrivate->pMpeg2->nPortIndex = VIDDEC_DEFAULT_MPEG2_PORTINDEX;
1280 pComponentPrivate->pMpeg2->nPFrames = VIDDEC_DEFAULT_MPEG2_PFRAMES;
1281 pComponentPrivate->pMpeg2->nBFrames = VIDDEC_DEFAULT_MPEG2_BFRAMES;
1282 pComponentPrivate->pMpeg2->eProfile = OMX_VIDEO_MPEG2ProfileSimple;
1283 pComponentPrivate->pMpeg2->eLevel = OMX_VIDEO_MPEG2LevelLL;
1285 pComponentPrivate->pInPortFormat->nPortIndex = VIDDEC_INPUT_PORT;
1286 pComponentPrivate->pInPortFormat->nIndex = VIDDEC_DEFAULT_INPUT_INDEX_MPEG2;
1287 pComponentPrivate->pInPortFormat->eCompressionFormat = OMX_VIDEO_CodingMPEG2;
1288 pComponentPrivate->pInPortFormat->eColorFormat = OMX_COLOR_FormatUnused;
1290 pComponentPrivate->pInPortFormat->xFramerate = VIDDEC_INPUT_PORT_FRAMERATE;
1292 pComponentPrivate->pInPortDef->format.video.nFrameWidth = VIDDEC_DEFAULT_WIDTH;
1293 pComponentPrivate->pInPortDef->format.video.nFrameHeight = VIDDEC_DEFAULT_HEIGHT;
1294 pComponentPrivate->pInPortDef->format.video.nBitrate = VIDDEC_INPUT_PORT_BITRATE;
1295 pComponentPrivate->pInPortDef->format.video.xFramerate = VIDDEC_INPUT_PORT_FRAMERATE;
1296 pComponentPrivate->pInPortDef->format.video.eCompressionFormat = OMX_VIDEO_CodingMPEG2;
1297 pComponentPrivate->pInPortDef->format.video.eColorFormat = OMX_COLOR_FormatUnused;
1298 pComponentPrivate->pInPortDef->nBufferSize = pComponentPrivate->pInPortDef->format.video.nFrameWidth *
1299 pComponentPrivate->pInPortDef->format.video.nFrameHeight *
1301 pComponentPrivate->pDeblockingParamType->bDeblocking = OMX_FALSE; /*TODO: Verify with algo team*/
1302 pComponentPrivate->bIsSparkInput = OMX_FALSE;
1306 pComponentPrivate->pMpeg4->nPortIndex = VIDDEC_DEFAULT_MPEG4_PORTINDEX;
1307 pComponentPrivate->pMpeg4->nPFrames = VIDDEC_DEFAULT_MPEG4_PFRAMES;
1308 pComponentPrivate->pMpeg4->nBFrames = VIDDEC_DEFAULT_MPEG4_BFRAMES;
1309 pComponentPrivate->pMpeg4->eProfile = OMX_VIDEO_MPEG4ProfileSimple;
1311 pComponentPrivate->pMpeg4->eLevel = OMX_VIDEO_MPEG4Level1;
1313 pComponentPrivate->pMpeg4->eLevel = OMX_VIDEO_MPEG4Levell;
1315 pComponentPrivate->pInPortFormat->nPortIndex = VIDDEC_INPUT_PORT;
1316 pComponentPrivate->pInPortFormat->nIndex = VIDDEC_DEFAULT_INPUT_INDEX_MPEG4;
1317 pComponentPrivate->pInPortFormat->eCompressionFormat = OMX_VIDEO_CodingMPEG4;
1318 pComponentPrivate->pInPortFormat->eColorFormat = OMX_COLOR_FormatUnused;
1320 pComponentPrivate->pInPortFormat->xFramerate = VIDDEC_INPUT_PORT_FRAMERATE;
1322 pComponentPrivate->pInPortDef->format.video.nFrameWidth = VIDDEC_DEFAULT_WIDTH;
1323 pComponentPrivate->pInPortDef->format.video.nFrameHeight = VIDDEC_DEFAULT_HEIGHT;
1324 pComponentPrivate->pInPortDef->format.video.nBitrate = VIDDEC_INPUT_PORT_BITRATE;
1325 pComponentPrivate->pInPortDef->format.video.xFramerate = VIDDEC_INPUT_PORT_FRAMERATE;
1326 pComponentPrivate->pInPortDef->format.video.eCompressionFormat = OMX_VIDEO_CodingMPEG4;
1327 pComponentPrivate->pInPortDef->format.video.eColorFormat = OMX_COLOR_FormatUnused;
1328 pComponentPrivate->pInPortDef->nBufferSize = pComponentPrivate->pInPortDef->format.video.nFrameWidth *
1329 pComponentPrivate->pInPortDef->format.video.nFrameHeight *
1331 pComponentPrivate->pDeblockingParamType->bDeblocking = OMX_FALSE;
1332 pComponentPrivate->bIsSparkInput = OMX_FALSE;
1336 pComponentPrivate->pWMV->nPortIndex = VIDDEC_DEFAULT_WMV_PORTINDEX;
1337 pComponentPrivate->pWMV->eFormat = OMX_VIDEO_WMVFormat9;
1339 pComponentPrivate->pInPortFormat->nPortIndex = VIDDEC_INPUT_PORT;
1340 pComponentPrivate->pInPortFormat->nIndex = VIDDEC_DEFAULT_INPUT_INDEX_WMV9;
1341 pComponentPrivate->pInPortFormat->eCompressionFormat = OMX_VIDEO_CodingWMV;
1342 pComponentPrivate->pInPortFormat->eColorFormat = OMX_COLOR_FormatUnused;
1344 pComponentPrivate->pInPortFormat->xFramerate = VIDDEC_INPUT_PORT_FRAMERATE;
1346 pComponentPrivate->pInPortDef->format.video.nFrameWidth = VIDDEC_DEFAULT_WIDTH;
1347 pComponentPrivate->pInPortDef->format.video.nFrameHeight = VIDDEC_DEFAULT_HEIGHT;
1348 pComponentPrivate->pInPortDef->format.video.nBitrate = VIDDEC_INPUT_PORT_BITRATE;
1349 pComponentPrivate->pInPortDef->format.video.xFramerate = VIDDEC_INPUT_PORT_FRAMERATE;
1350 pComponentPrivate->pInPortDef->format.video.eCompressionFormat = OMX_VIDEO_CodingWMV;
1351 pComponentPrivate->pInPortDef->format.video.eColorFormat = OMX_COLOR_FormatUnused;
1352 pComponentPrivate->pInPortDef->nBufferSize = pComponentPrivate->pInPortDef->format.video.nFrameWidth *
1353 pComponentPrivate->pInPortDef->format.video.nFrameHeight *
1356 pComponentPrivate->nWMVFileType = VIDDEC_WMV_RCVSTREAM; /* RCVSTREAM must be the default value*/
1357 pComponentPrivate->pDeblockingParamType->bDeblocking = OMX_TRUE; /* Always enable */
1358 pComponentPrivate->bIsSparkInput = OMX_FALSE;
1363 pComponentPrivate->pOutPortFormat->nPortIndex = VIDDEC_OUTPUT_PORT;
1364 pComponentPrivate->pOutPortFormat->nIndex = VIDDEC_DEFAULT_OUTPUT_INDEX_PLANAR420;
1365 pComponentPrivate->pOutPortFormat->eCompressionFormat = OMX_VIDEO_CodingUnused;
1366 pComponentPrivate->pOutPortFormat->eColorFormat = VIDDEC_COLORFORMAT420;
1368 pComponentPrivate->pOutPortFormat->xFramerate = VIDDEC_INPUT_PORT_FRAMERATE;
1370 pComponentPrivate->pOutPortDef->format.video.nFrameWidth = VIDDEC_DEFAULT_WIDTH;
1371 pComponentPrivate->pOutPortDef->format.video.nFrameHeight = VIDDEC_DEFAULT_HEIGHT;
1372 pComponentPrivate->pOutPortDef->format.video.nBitrate = VIDDEC_OUTPUT_PORT_BITRATE;
1373 pComponentPrivate->pOutPortDef->format.video.xFramerate = VIDDEC_OUTPUT_PORT_FRAMERATE;
1374 pComponentPrivate->pOutPortDef->format.video.eCompressionFormat = VIDDEC_OUTPUT_PORT_COMPRESSIONFORMAT;
1375 pComponentPrivate->pOutPortDef->format.video.eColorFormat = VIDDEC_COLORFORMAT420;
1376 pComponentPrivate->pOutPortDef->nBufferSize = pComponentPrivate->pOutPortDef->format.video.nFrameWidth *
1377 pComponentPrivate->pOutPortDef->format.video.nFrameHeight *
1383 pComponentPrivate->pOutPortFormat->nPortIndex = VIDDEC_OUTPUT_PORT;
1384 pComponentPrivate->pOutPortFormat->nIndex = VIDDEC_DEFAULT_OUTPUT_INDEX_INTERLEAVED422;
1385 pComponentPrivate->pOutPortFormat->eCompressionFormat = OMX_VIDEO_CodingUnused;
1386 pComponentPrivate->pOutPortFormat->eColorFormat = VIDDEC_COLORFORMAT422;
1388 pComponentPrivate->pOutPortFormat->xFramerate = VIDDEC_INPUT_PORT_FRAMERATE;
1390 pComponentPrivate->pOutPortDef->format.video.nFrameWidth = VIDDEC_DEFAULT_WIDTH;
1391 pComponentPrivate->pOutPortDef->format.video.nFrameHeight = VIDDEC_DEFAULT_HEIGHT;
1392 pComponentPrivate->pOutPortDef->format.video.nBitrate = VIDDEC_OUTPUT_PORT_BITRATE;
1393 pComponentPrivate->pOutPortDef->format.video.xFramerate = VIDDEC_OUTPUT_PORT_FRAMERATE;
1394 pComponentPrivate->pOutPortDef->format.video.eCompressionFormat = VIDDEC_OUTPUT_PORT_COMPRESSIONFORMAT;
1395 pComponentPrivate->pOutPortDef->format.video.eColorFormat = VIDDEC_COLORFORMAT422;
1396 pComponentPrivate->pOutPortDef->nBufferSize = pComponentPrivate->pOutPortDef->format.video.nFrameWidth *
1397 pComponentPrivate->pOutPortDef->format.video.nFrameHeight *
1419 VIDDEC_COMPONENT_PRIVATE* pComponentPrivate = (VIDDEC_COMPONENT_PRIVATE*)pComp->pComponentPrivate;
1421 pComponentPrivate->bIsStopping = 0;
1423 OMX_PRINT1(pComponentPrivate->dbg, "+++ENTERING\n");
1425 eError = pipe(pComponentPrivate->free_inpBuf_Q);
1432 eError = pipe(pComponentPrivate->free_outBuf_Q);
1439 eError = pipe(pComponentPrivate->filled_inpBuf_Q);
1446 eError = pipe(pComponentPrivate->filled_outBuf_Q);
1453 eError = pipe(pComponentPrivate->cmdPipe);
1460 eError = pipe(pComponentPrivate->cmdDataPipe);
1467 eError = pthread_create(&(pComponentPrivate->ComponentThread),
1470 pComponentPrivate);
1472 OMX_TRACE2(pComponentPrivate->dbg, "pthread_create 0x%lx\n",(OMX_U32) pComponentPrivate->ComponentThread);
1473 if (eError || !pComponentPrivate->ComponentThread) {
1474 OMX_TRACE4(pComponentPrivate->dbg, "pthread_create 0x%x\n",eError);
1480 PERF_ThreadCreated(pComponentPrivate->pPERF,
1481 pComponentPrivate->ComponentThread,
1486 OMX_PRINT1(pComponentPrivate->dbg, "---EXITING(0x%x)\n",eError);
1508 VIDDEC_COMPONENT_PRIVATE* pComponentPrivate = (VIDDEC_COMPONENT_PRIVATE*)pHandle->pComponentPrivate;
1514 OMX_PRINT1(pComponentPrivate->dbg, "+++ENTERING\n");
1515 OMX_TRACE2(pComponentPrivate->dbg, "pthread_join 0x%lx\n",(OMX_U32) pComponentPrivate->ComponentThread);
1518 pthreadError = pthread_join(pComponentPrivate->ComponentThread, (void*)&threadError);
1523 if(pComponentPrivate->bLCMLOut == OMX_TRUE) {
1524 /*pthreadError = pthread_cancel(pComponentPrivate->ComponentThread);*/
1530 pthreadError = pthread_join(pComponentPrivate->ComponentThread, (void*)&threadError);
1539 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
1540 pComponentPrivate->pHandle->pApplicationPrivate,
1548 err = close(pComponentPrivate->free_inpBuf_Q[VIDDEC_PIPE_READ]);
1551 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
1552 pComponentPrivate->pHandle->pApplicationPrivate,
1559 err = close(pComponentPrivate->free_outBuf_Q[VIDDEC_PIPE_READ]);
1562 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
1563 pComponentPrivate->pHandle->pApplicationPrivate,
1570 err = close(pComponentPrivate->filled_inpBuf_Q[VIDDEC_PIPE_READ]);
1573 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
1574 pComponentPrivate->pHandle->pApplicationPrivate,
1581 err = close(pComponentPrivate->filled_outBuf_Q[VIDDEC_PIPE_READ]);
1584 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
1585 pComponentPrivate->pHandle->pApplicationPrivate,
1592 err = close(pComponentPrivate->free_inpBuf_Q[VIDDEC_PIPE_WRITE]);
1595 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
1596 pComponentPrivate->pHandle->pApplicationPrivate,
1603 err = close(pComponentPrivate->free_outBuf_Q[VIDDEC_PIPE_WRITE]);
1606 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
1607 pComponentPrivate->pHandle->pApplicationPrivate,
1614 err = close(pComponentPrivate->filled_inpBuf_Q[VIDDEC_PIPE_WRITE]);
1617 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
1618 pComponentPrivate->pHandle->pApplicationPrivate,
1625 err = close(pComponentPrivate->filled_outBuf_Q[VIDDEC_PIPE_WRITE]);
1628 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
1629 pComponentPrivate->pHandle->pApplicationPrivate,
1637 err = close(pComponentPrivate->cmdPipe[VIDDEC_PIPE_READ]);
1640 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
1641 pComponentPrivate->pHandle->pApplicationPrivate,
1648 err = close(pComponentPrivate->cmdPipe[VIDDEC_PIPE_WRITE]);
1651 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
1652 pComponentPrivate->pHandle->pApplicationPrivate,
1660 err = close (pComponentPrivate->cmdDataPipe[VIDDEC_PIPE_READ]);
1663 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
1664 pComponentPrivate->pHandle->pApplicationPrivate,
1671 err = close (pComponentPrivate->cmdDataPipe[VIDDEC_PIPE_WRITE]);
1674 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
1675 pComponentPrivate->pHandle->pApplicationPrivate,
1681 OMX_PRINT1(pComponentPrivate->dbg, "---EXITING(0x%x)\n",eError);
1698 OMX_ERRORTYPE VIDDEC_DisablePort (VIDDEC_COMPONENT_PRIVATE* pComponentPrivate, OMX_U32 nParam1)
1702 OMX_PRINT1(pComponentPrivate->dbg, "+++ENTERING\n");
1703 OMX_PRINT1(pComponentPrivate->dbg, "pComponentPrivate 0x%p nParam1 0x%lx\n",pComponentPrivate, nParam1);
1706 if(pComponentPrivate->bDynamicConfigurationInProgress && bFirstTimeToUnLoadCodec){
1707 OMX_PRINT1(pComponentPrivate->dbg, "VIDDEC_UnloadCodec\n");
1708 eError = VIDDEC_UnloadCodec(pComponentPrivate);
1715 eError = VIDDEC_HandleCommandFlush(pComponentPrivate, -1, OMX_FALSE);
1721 if (nParam1 == VIDDEC_INPUT_PORT && !pComponentPrivate->pInPortDef->bPopulated) {
1723 OMX_PRBUFFER2(pComponentPrivate->dbg, "Unpopulated VIDDEC_INPUT_PORT IN 0x%x\n",pComponentPrivate->pInPortDef->bPopulated);
1724 pComponentPrivate->cbInfo.EventHandler (pComponentPrivate->pHandle,
1725 pComponentPrivate->pHandle->pApplicationPrivate,
1732 else if (nParam1 == VIDDEC_OUTPUT_PORT && !pComponentPrivate->pOutPortDef->bPopulated) {
1734 OMX_PRBUFFER2(pComponentPrivate->dbg, "Unpopulated VIDDEC_OUTPUT_PORT OUT 0x%x\n",pComponentPrivate->pOutPortDef->bPopulated);
1735 pComponentPrivate->cbInfo.EventHandler (pComponentPrivate->pHandle,
1736 pComponentPrivate->pHandle->pApplicationPrivate,
1743 else if (nParam1 == VIDDEC_BOTH_PORT && !pComponentPrivate->pInPortDef->bPopulated &&
1744 !pComponentPrivate->pOutPortDef->bPopulated) {
1746 OMX_PRBUFFER2(pComponentPrivate->dbg, "Unpopulated VIDDEC_INPUT_PORT IN 0x%x\n",pComponentPrivate->pInPortDef->bPopulated);
1747 pComponentPrivate->cbInfo.EventHandler (pComponentPrivate->pHandle,
1748 pComponentPrivate->pHandle->pApplicationPrivate,
1753 OMX_PRBUFFER2(pComponentPrivate->dbg, "Unpopulated VIDDEC_OUTPUT_PORT OUT 0x%x\n",pComponentPrivate->pOutPortDef->bPopulated);
1754 pComponentPrivate->cbInfo.EventHandler (pComponentPrivate->pHandle,
1755 pComponentPrivate->pHandle->pApplicationPrivate,
1762 else if (nParam1 == VIDDEC_BOTH_PORT && !pComponentPrivate->pInPortDef->bPopulated &&
1763 (pComponentPrivate->pCompPort[1]->hTunnelComponent != NULL)) {
1765 OMX_PRBUFFER2(pComponentPrivate->dbg, "Unpopulated VIDDEC_INPUT_PORT IN 0x%x\n",pComponentPrivate->pInPortDef->bPopulated);
1766 pComponentPrivate->cbInfo.EventHandler (pComponentPrivate->pHandle,
1767 pComponentPrivate->pHandle->pApplicationPrivate,
1778 if((!(pComponentPrivate->eState == OMX_StateLoaded) && pComponentPrivate->pInPortDef->bPopulated) ||
1779 pComponentPrivate->sInSemaphore.bSignaled) {
1780 VIDDEC_PTHREAD_SEMAPHORE_WAIT(pComponentPrivate->sInSemaphore);
1782 OMX_PRBUFFER2(pComponentPrivate->dbg, "Unpopulated VIDDEC_INPUT_PORT IN 0x%x\n",pComponentPrivate->pInPortDef->bPopulated);
1783 pComponentPrivate->bInPortSettingsChanged = OMX_FALSE;
1784 OMX_PRBUFFER1(pComponentPrivate->dbg, "bInPortSettingsChanged = OMX_FALSE;\n");
1785 pComponentPrivate->cbInfo.EventHandler (pComponentPrivate->pHandle,
1786 pComponentPrivate->pHandle->pApplicationPrivate,
1793 if((!(pComponentPrivate->eState == OMX_StateLoaded) && pComponentPrivate->pOutPortDef->bPopulated) ||
1794 pComponentPrivate->sOutSemaphore.bSignaled) {
1795 VIDDEC_PTHREAD_SEMAPHORE_WAIT(pComponentPrivate->sOutSemaphore);
1798 OMX_PRBUFFER2(pComponentPrivate->dbg, "Unpopulated VIDDEC_OUTPUT_PORT OUT 0x%x\n",pComponentPrivate->pOutPortDef->bPopulated);
1799 OMX_PRBUFFER1(pComponentPrivate->dbg, "bOutPortSettingsChanged = OMX_FALSE;\n");
1800 pComponentPrivate->bOutPortSettingsChanged = OMX_FALSE;
1801 pComponentPrivate->cbInfo.EventHandler (pComponentPrivate->pHandle,
1802 pComponentPrivate->pHandle->pApplicationPrivate,
1809 if(pComponentPrivate->pCompPort[1]->hTunnelComponent != NULL) {
1810 if((!(pComponentPrivate->eState == OMX_StateLoaded) && pComponentPrivate->pInPortDef->bPopulated) ||
1811 pComponentPrivate->sInSemaphore.bSignaled) {
1812 VIDDEC_PTHREAD_SEMAPHORE_WAIT(pComponentPrivate->sInSemaphore);
1814 OMX_PRBUFFER2(pComponentPrivate->dbg, "Unpopulated VIDDEC_INPUT_PORT IN 0x%x\n",pComponentPrivate->pInPortDef->bPopulated);
1815 pComponentPrivate->bInPortSettingsChanged = OMX_FALSE;
1816 pComponentPrivate->cbInfo.EventHandler (pComponentPrivate->pHandle,
1817 pComponentPrivate->pHandle->pApplicationPrivate,
1824 if((!(pComponentPrivate->eState == OMX_StateLoaded) && pComponentPrivate->pInPortDef->bPopulated) ||
1825 pComponentPrivate->sInSemaphore.bSignaled) {
1826 VIDDEC_PTHREAD_SEMAPHORE_WAIT(pComponentPrivate->sInSemaphore);
1828 OMX_PRBUFFER2(pComponentPrivate->dbg, "Populated VIDDEC_INPUT_PORT IN 0x%x\n",pComponentPrivate->pInPortDef->bPopulated);
1829 pComponentPrivate->bInPortSettingsChanged = OMX_FALSE;
1830 pComponentPrivate->cbInfo.EventHandler (pComponentPrivate->pHandle,
1831 pComponentPrivate->pHandle->pApplicationPrivate,
1836 if((!(pComponentPrivate->eState == OMX_StateLoaded) && pComponentPrivate->pOutPortDef->bPopulated) ||
1837 pComponentPrivate->sOutSemaphore.bSignaled) {
1838 VIDDEC_PTHREAD_SEMAPHORE_WAIT(pComponentPrivate->sOutSemaphore);
1840 OMX_PRBUFFER2(pComponentPrivate->dbg, "Populated VIDDEC_OUTPUT_PORT IN 0x%x\n",pComponentPrivate->pInPortDef->bPopulated);
1841 pComponentPrivate->bOutPortSettingsChanged = OMX_FALSE;
1842 pComponentPrivate->cbInfo.EventHandler (pComponentPrivate->pHandle,
1843 pComponentPrivate->pHandle->pApplicationPrivate,
1853 if(pComponentPrivate->bDynamicConfigurationInProgress){
1854 if(pComponentPrivate->bOutPortSettingsChanged == OMX_FALSE && pComponentPrivate->bInPortSettingsChanged == OMX_FALSE){
1855 pComponentPrivate->bDynamicConfigurationInProgress = OMX_FALSE;
1857 OMX_PRBUFFER1(pComponentPrivate->dbg, "bDynamicConfigurationInProgress = OMX_FALSE;\n");
1862 OMX_PRINT1(pComponentPrivate->dbg, "---EXITING(0x%x)\n",eError);
1866 OMX_ERRORTYPE VIDDEC_EmptyBufferDone(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate, OMX_BUFFERHEADERTYPE* pBufferHeader)
1873 OMX_ERRORTYPE ret = pComponentPrivate->cbInfo.EmptyBufferDone(pComponentPrivate->pHandle,
1874 pComponentPrivate->pHandle->pApplicationPrivate,
1877 VIDDEC_PTHREAD_MUTEX_LOCK(pComponentPrivate->inputFlushCompletionMutex);
1879 pthread_mutex_lock(&pComponentPrivate->mutexInputBFromDSP);
1880 nCountInputBFromDsp = pComponentPrivate->nCountInputBFromDsp;
1881 pthread_mutex_unlock(&pComponentPrivate->mutexInputBFromDSP);
1882 if (pComponentPrivate->bIsInputFlushPending && nCountInputBFromDsp == 0) {
1883 VIDDEC_PTHREAD_MUTEX_SIGNAL(pComponentPrivate->inputFlushCompletionMutex);
1885 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->inputFlushCompletionMutex);
1890 OMX_ERRORTYPE VIDDEC_FillBufferDone(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate, OMX_BUFFERHEADERTYPE* pBufferHeader)
1898 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
1899 pComponentPrivate->pHandle->pApplicationPrivate,
1906 OMX_ERRORTYPE ret = pComponentPrivate->cbInfo.FillBufferDone(pComponentPrivate->pHandle,
1907 pComponentPrivate->pHandle->pApplicationPrivate,
1910 VIDDEC_PTHREAD_MUTEX_LOCK(pComponentPrivate->outputFlushCompletionMutex);
1912 pthread_mutex_lock(&pComponentPrivate->mutexOutputBFromDSP);
1913 nCountOutputBFromDsp = pComponentPrivate->nCountOutputBFromDsp;
1914 pthread_mutex_unlock(&pComponentPrivate->mutexOutputBFromDSP);
1915 if (pComponentPrivate->bIsOutputFlushPending && nCountOutputBFromDsp == 0) {
1916 VIDDEC_PTHREAD_MUTEX_SIGNAL(pComponentPrivate->outputFlushCompletionMutex);
1918 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->outputFlushCompletionMutex);
1934 OMX_ERRORTYPE VIDDEC_ReturnBuffers (VIDDEC_COMPONENT_PRIVATE* pComponentPrivate, OMX_U32 nParam1, OMX_BOOL bRetDSP)
1940 OMX_PRBUFFER1(pComponentPrivate->dbg, "+++ENTERING\n");
1941 OMX_PRBUFFER1(pComponentPrivate->dbg, "pComponentPrivate 0x%p nParam1 0x%lx bRetDSP 0x%x\n",pComponentPrivate,nParam1,bRetDSP);
1942 OMX_VidDec_Return(pComponentPrivate);
1943 if (nParam1 == pComponentPrivate->pInPortFormat->nPortIndex || nParam1 == OMX_ALL) {
1944 for (i = 0; i < pComponentPrivate->pInPortDef->nBufferCountActual; i++) {
1945 if((pComponentPrivate->pCompPort[VIDDEC_INPUT_PORT]->pBufferPrivate[i]->eBufferOwner == VIDDEC_BUFFER_WITH_DSP) && bRetDSP){
1946 OMX_PRBUFFER1(pComponentPrivate->dbg, "inBuffer 0x%p eBufferOwner 0x%x\n",pComponentPrivate->pCompPort[VIDDEC_INPUT_PORT]->pBufferPrivate[i]->pBufferHdr,
1947 pComponentPrivate->pCompPort[VIDDEC_INPUT_PORT]->pBufferPrivate[i]->eBufferOwner);
1948 pComponentPrivate->pCompPort[VIDDEC_INPUT_PORT]->pBufferPrivate[i]->eBufferOwner = VIDDEC_BUFFER_WITH_CLIENT;
1949 pComponentPrivate->pCompPort[VIDDEC_INPUT_PORT]->pBufferPrivate[i]->pBufferHdr->nFilledLen = 0;
1952 PERF_SendingFrame(pComponentPrivate->pPERFcomp,
1953 pComponentPrivate->pCompPort[VIDDEC_INPUT_PORT]->pBufferPrivate[i]->pBufferHdr->pBuffer,
1954 pComponentPrivate->pCompPort[VIDDEC_INPUT_PORT]->pBufferPrivate[i]->pBufferHdr->nFilledLen,
1958 eError = VIDDEC_EmptyBufferDone(pComponentPrivate, pComponentPrivate->pCompPort[VIDDEC_INPUT_PORT]->pBufferPrivate[i]->pBufferHdr);
1962 if (nParam1 == pComponentPrivate->pOutPortFormat->nPortIndex || nParam1 == OMX_ALL) {
1963 if (pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->hTunnelComponent != NULL) {
1964 for (i = 0; i < pComponentPrivate->pOutPortDef->nBufferCountActual; i++) {
1965 OMX_PRBUFFER1(pComponentPrivate->dbg, "tunnelVideoDecBuffer[%x]=%x-%lx\n",i,
1966 pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->pBufferPrivate[i]->eBufferOwner,pComponentPrivate->pOutPortDef->nBufferCountActual);
1967 OMX_PRBUFFER1(pComponentPrivate->dbg, "enter return %lx\n",pComponentPrivate->pOutPortDef->nBufferCountActual);
1968 if((pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->pBufferPrivate[i]->eBufferOwner == VIDDEC_BUFFER_WITH_DSP) && bRetDSP){
1969 pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->pBufferPrivate[i]->eBufferOwner = VIDDEC_BUFFER_WITH_TUNNELEDCOMP;
1970 OMX_PRBUFFER1(pComponentPrivate->dbg, "Buffer 0x%x eBufferOwner 0x%x\n",(int)pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->pBufferPrivate[i]->pBufferHdr
1971 ,pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->pBufferPrivate[i]->eBufferOwner);
1972 pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->pBufferPrivate[i]->pBufferHdr->nFilledLen = 0;
1975 PERF_SendingFrame(pComponentPrivate->pPERFcomp,
1976 pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->pBufferPrivate[i]->pBufferHdr->pBuffer,
1977 pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->pBufferPrivate[i]->pBufferHdr->nFilledLen,
1981 OMX_PRBUFFER1(pComponentPrivate->dbg, "VideDec->PostProc EmptyThisBuffer\n");
1982 OMX_PRBUFFER1(pComponentPrivate->dbg, "wait to return buffer\n");
1983 pBuffHead = (OMX_BUFFERHEADERTYPE*)pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->pBufferPrivate[i]->pBufferHdr;
1984 VIDDEC_Propagate_Mark(pComponentPrivate, pBuffHead);
1985 eError = OMX_EmptyThisBuffer(pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->hTunnelComponent, pBuffHead);
1990 OMX_PRINT1(pComponentPrivate->dbg, "non tunneling\n");
1991 for (i = 0; i < pComponentPrivate->pOutPortDef->nBufferCountActual; i++) {
1992 if((pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->pBufferPrivate[i]->eBufferOwner == VIDDEC_BUFFER_WITH_DSP) && bRetDSP){
1993 OMX_PRBUFFER1(pComponentPrivate->dbg, "xBuffer 0x%p eBufferOwner 0x%x\n",pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->pBufferPrivate[i]->pBufferHdr,
1994 pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->pBufferPrivate[i]->eBufferOwner);
1995 pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->pBufferPrivate[i]->eBufferOwner = VIDDEC_BUFFER_WITH_CLIENT;
1996 pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->pBufferPrivate[i]->pBufferHdr->nFilledLen = 0;
1999 PERF_SendingFrame(pComponentPrivate->pPERFcomp,
2000 pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->pBufferPrivate[i]->pBufferHdr->pBuffer,
2001 pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->pBufferPrivate[i]->pBufferHdr->nFilledLen,
2005 pBuffHead = (OMX_BUFFERHEADERTYPE*)pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->pBufferPrivate[i]->pBufferHdr;
2006 VIDDEC_Propagate_Mark(pComponentPrivate, pBuffHead);
2007 eError = VIDDEC_FillBufferDone(pComponentPrivate, pBuffHead);
2012 OMX_PRBUFFER1(pComponentPrivate->dbg, "---EXITING(0x%x)\n",eError);
2029 OMX_ERRORTYPE VIDDEC_EnablePort (VIDDEC_COMPONENT_PRIVATE* pComponentPrivate, OMX_U32 nParam1)
2032 OMX_PRINT1(pComponentPrivate->dbg, "+++ENTERING\n");
2033 OMX_PRINT1(pComponentPrivate->dbg, "pComponentPrivate 0x%p nParam1 0x%lx\n",pComponentPrivate, nParam1);
2037 if (nParam1 == VIDDEC_INPUT_PORT && (pComponentPrivate->eState == OMX_StateLoaded || pComponentPrivate->pInPortDef->bPopulated)) {
2039 OMX_PRBUFFER2(pComponentPrivate->dbg, "Populated VIDDEC_INPUT_PORT 0x%x\n",pComponentPrivate->pInPortDef->bEnabled);
2040 pComponentPrivate->cbInfo.EventHandler (pComponentPrivate->pHandle,
2041 pComponentPrivate->pHandle->pApplicationPrivate,
2048 else if (nParam1 == VIDDEC_OUTPUT_PORT && (pComponentPrivate->eState == OMX_StateLoaded ||
2049 pComponentPrivate->pOutPortDef->bPopulated)) {
2051 OMX_PRBUFFER2(pComponentPrivate->dbg, "Populated VIDDEC_OUTPUT_PORT 0x%x\n",pComponentPrivate->pOutPortDef->bEnabled);
2052 pComponentPrivate->cbInfo.EventHandler (pComponentPrivate->pHandle,
2053 pComponentPrivate->pHandle->pApplicationPrivate,
2060 else if (nParam1 == VIDDEC_BOTH_PORT && (pComponentPrivate->eState == OMX_StateLoaded ||
2061 (pComponentPrivate->pInPortDef->bPopulated &&
2062 pComponentPrivate->pOutPortDef->bPopulated))) {
2064 OMX_PRBUFFER2(pComponentPrivate->dbg, "Enabling VIDDEC_OUTPUT_PORT 0x%x\n",pComponentPrivate->pOutPortDef->bEnabled);
2065 OMX_PRBUFFER2(pComponentPrivate->dbg, "Populated VIDDEC_INPUT_PORT 0x%x\n",pComponentPrivate->pOutPortDef->bEnabled);
2066 pComponentPrivate->cbInfo.EventHandler (pComponentPrivate->pHandle,
2067 pComponentPrivate->pHandle->pApplicationPrivate,
2072 OMX_PRBUFFER2(pComponentPrivate->dbg, "Populated VIDDEC_OUTPUT_PORT 0x%x\n",pComponentPrivate->pOutPortDef->bEnabled);
2073 pComponentPrivate->cbInfo.EventHandler (pComponentPrivate->pHandle,
2074 pComponentPrivate->pHandle->pApplicationPrivate,
2081 else if (nParam1 == OMX_ALL && && (pComponentPrivate->eState == OMX_StateLoaded ||
2082 pComponentPrivate->pInPortDef->bPopulated) &&
2083 (pComponentPrivate->pCompPort[1]->hTunnelComponent != NULL)) {
2085 OMX_PRBUFFER2(pComponentPrivate->dbg, "Enabling VIDDEC_OUTPUT_PORT 0x%x\n",pComponentPrivate->pOutPortDef->bEnabled);
2086 OMX_PRBUFFER2(pComponentPrivate->dbg, "Populated VIDDEC_INPUT_PORT 0x%x\n",pComponentPrivate->pOutPortDef->bEnabled);
2087 pComponentPrivate->cbInfo.EventHandler (pComponentPrivate->pHandle,
2088 pComponentPrivate->pHandle->pApplicationPrivate,
2099 OMX_PRBUFFER2(pComponentPrivate->dbg, "Populated VIDDEC_INPUT_PORT IN 0x%x\n",pComponentPrivate->pInPortDef->bPopulated);
2100 if((!(pComponentPrivate->eState == OMX_StateLoaded) && !pComponentPrivate->pInPortDef->bPopulated) ||
2101 pComponentPrivate->sInSemaphore.bSignaled) {
2102 VIDDEC_PTHREAD_SEMAPHORE_WAIT(pComponentPrivate->sInSemaphore);
2106 if(pComponentPrivate->eLCMLState == VidDec_LCML_State_Unload &&
2107 pComponentPrivate->bDynamicConfigurationInProgress == OMX_FALSE &&
2108 pComponentPrivate->pInPortDef->bEnabled == OMX_TRUE &&
2109 pComponentPrivate->pOutPortDef->bEnabled == OMX_TRUE){
2110 OMX_PRBUFFER1(pComponentPrivate->dbg, "BSC VIDDEC_INPUT_PORT\n");
2111 eError = VIDDEC_LoadCodec(pComponentPrivate);
2116 pComponentPrivate->cbInfo.EventHandler (pComponentPrivate->pHandle,
2117 pComponentPrivate->pHandle->pApplicationPrivate,
2125 OMX_PRBUFFER2(pComponentPrivate->dbg, "Populated VIDDEC_OUTPUT_PORT OUT 0x%x\n",pComponentPrivate->pOutPortDef->bPopulated);
2126 if((!(pComponentPrivate->eState == OMX_StateLoaded) && !pComponentPrivate->pOutPortDef->bPopulated) ||
2127 pComponentPrivate->sOutSemaphore.bSignaled) {
2128 VIDDEC_PTHREAD_SEMAPHORE_WAIT(pComponentPrivate->sOutSemaphore);
2131 if(pComponentPrivate->eLCMLState == VidDec_LCML_State_Unload &&
2132 pComponentPrivate->bDynamicConfigurationInProgress == OMX_FALSE &&
2133 pComponentPrivate->pInPortDef->bEnabled == OMX_TRUE &&
2134 pComponentPrivate->pOutPortDef->bEnabled == OMX_TRUE){
2135 OMX_PRBUFFER1(pComponentPrivate->dbg, "BSC VIDDEC_OUTPUT_PORT\n");
2136 eError = VIDDEC_LoadCodec(pComponentPrivate);
2141 pComponentPrivate->cbInfo.EventHandler (pComponentPrivate->pHandle,
2142 pComponentPrivate->pHandle->pApplicationPrivate,
2149 if(pComponentPrivate->pCompPort[1]->hTunnelComponent != NULL) {
2150 OMX_PRBUFFER2(pComponentPrivate->dbg, "Populated VIDDEC_INPUT_PORT IN 0x%x\n",pComponentPrivate->pInPortDef->bPopulated);
2151 if((!(pComponentPrivate->eState == OMX_StateLoaded) && !pComponentPrivate->pInPortDef->bPopulated) ||
2152 pComponentPrivate->sInSemaphore.bSignaled) {
2153 VIDDEC_PTHREAD_SEMAPHORE_WAIT(pComponentPrivate->sInSemaphore);
2156 if(pComponentPrivate->eLCMLState == VidDec_LCML_State_Unload){
2157 eError = VIDDEC_LoadCodec(pComponentPrivate);
2162 pComponentPrivate->cbInfo.EventHandler (pComponentPrivate->pHandle,
2163 pComponentPrivate->pHandle->pApplicationPrivate,
2170 if((!(pComponentPrivate->eState == OMX_StateLoaded) && !pComponentPrivate->pInPortDef->bPopulated) ||
2171 pComponentPrivate->sInSemaphore.bSignaled) {
2172 VIDDEC_PTHREAD_SEMAPHORE_WAIT(pComponentPrivate->sInSemaphore);
2174 if(pComponentPrivate->eLCMLState == VidDec_LCML_State_Unload){
2175 OMX_PRBUFFER1(pComponentPrivate->dbg, "BSC OMX_ALL\n");
2176 eError = VIDDEC_LoadCodec(pComponentPrivate);
2181 OMX_PRBUFFER2(pComponentPrivate->dbg, "Populated VIDDEC_INPUT_PORT IN 0x%x\n",pComponentPrivate->pInPortDef->bPopulated);
2182 pComponentPrivate->cbInfo.EventHandler (pComponentPrivate->pHandle,
2183 pComponentPrivate->pHandle->pApplicationPrivate,
2188 if((!(pComponentPrivate->eState == OMX_StateLoaded) && !pComponentPrivate->pOutPortDef->bPopulated) ||
2189 pComponentPrivate->sOutSemaphore.bSignaled) {
2190 VIDDEC_PTHREAD_SEMAPHORE_WAIT(pComponentPrivate->sOutSemaphore);
2192 OMX_PRBUFFER2(pComponentPrivate->dbg, "Populated VIDDEC_INPUT_PORT IN 0x%x\n",pComponentPrivate->pInPortDef->bPopulated);
2193 pComponentPrivate->cbInfo.EventHandler (pComponentPrivate->pHandle,
2194 pComponentPrivate->pHandle->pApplicationPrivate,
2203 OMX_PRINT1(pComponentPrivate->dbg, "---EXITING(0x%x)\n",eError);
2220 OMX_ERRORTYPE VIDDEC_HandleCommandFlush(VIDDEC_COMPONENT_PRIVATE *pComponentPrivate, OMX_U32 nParam1, OMX_BOOL bPass)
2226 OMX_PRINT1(pComponentPrivate->dbg, "+++ENTERING\n");
2227 OMX_PRINT1(pComponentPrivate->dbg, "pComponentPrivate 0x%p nParam1 0x%lx\n",pComponentPrivate, nParam1);
2231 OMX_VidDec_Return(pComponentPrivate);
2234 if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload &&
2235 pComponentPrivate->eLCMLState != VidDec_LCML_State_Destroy &&
2236 pComponentPrivate->pLCML != NULL && pComponentPrivate->bLCMLHalted != OMX_TRUE){
2240 VIDDEC_PTHREAD_MUTEX_LOCK(pComponentPrivate->sMutex);
2241 pLcmlHandle = (LCML_DSP_INTERFACE*)pComponentPrivate->pLCML;
2245 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->sMutex);
2248 VIDDEC_PTHREAD_MUTEX_WAIT(pComponentPrivate->sMutex);
2249 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->sMutex);
2252 VIDDEC_CircBuf_Flush(pComponentPrivate, VIDDEC_CBUFFER_TIMESTAMP, VIDDEC_INPUT_PORT);
2253 OMX_VidDec_Return(pComponentPrivate);
2255 VIDDEC_PTHREAD_MUTEX_LOCK(pComponentPrivate->inputFlushCompletionMutex);
2256 pComponentPrivate->bIsInputFlushPending = OMX_TRUE;
2258 pthread_mutex_lock(&pComponentPrivate->mutexInputBFromDSP);
2259 nCountInputBFromDsp = pComponentPrivate->nCountInputBFromDsp;
2260 pthread_mutex_unlock(&pComponentPrivate->mutexInputBFromDSP);
2262 VIDDEC_PTHREAD_MUTEX_WAIT(pComponentPrivate->inputFlushCompletionMutex);
2264 pComponentPrivate->bIsInputFlushPending = OMX_FALSE;
2265 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->inputFlushCompletionMutex);
2266 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
2267 pComponentPrivate->pHandle->pApplicationPrivate,
2277 OMX_VidDec_Return(pComponentPrivate);
2279 if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload &&
2280 pComponentPrivate->eLCMLState != VidDec_LCML_State_Destroy &&
2281 pComponentPrivate->pLCML != NULL && pComponentPrivate->bLCMLHalted != OMX_TRUE){
2285 VIDDEC_PTHREAD_MUTEX_LOCK(pComponentPrivate->sMutex);
2286 pLcmlHandle = (LCML_DSP_INTERFACE*)pComponentPrivate->pLCML;
2290 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->sMutex);
2293 VIDDEC_PTHREAD_MUTEX_WAIT(pComponentPrivate->sMutex);
2294 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->sMutex);
2296 OMX_VidDec_Return(pComponentPrivate);
2298 VIDDEC_PTHREAD_MUTEX_LOCK(pComponentPrivate->outputFlushCompletionMutex);
2299 pComponentPrivate->bIsOutputFlushPending = OMX_TRUE;
2301 pthread_mutex_lock(&pComponentPrivate->mutexOutputBFromDSP);
2302 nCountOutputBFromDsp = pComponentPrivate->nCountOutputBFromDsp;
2303 pthread_mutex_unlock(&pComponentPrivate->mutexOutputBFromDSP);
2305 VIDDEC_PTHREAD_MUTEX_WAIT(pComponentPrivate->outputFlushCompletionMutex);
2307 pComponentPrivate->bIsOutputFlushPending = OMX_FALSE;
2308 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->outputFlushCompletionMutex);
2309 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
2310 pComponentPrivate->pHandle->pApplicationPrivate,
2319 OMX_PRINT1(pComponentPrivate->dbg, "---EXITING(0x%x)\n",eError);
2337 OMX_ERRORTYPE VIDDEC_HandleCommandMarkBuffer(VIDDEC_COMPONENT_PRIVATE *pComponentPrivate, OMX_U32 nParam1, OMX_PTR pCmdData)
2340 OMX_PRBUFFER1(pComponentPrivate->dbg, "+++ENTERING\n");
2341 OMX_PRBUFFER1(pComponentPrivate->dbg, "pComponentPrivate 0x%p nParam1 0x%lx pCmdData 0x%p\n",pComponentPrivate, nParam1, pCmdData);
2342 OMX_PRBUFFER1(pComponentPrivate->dbg, "---EXITING(0x%x)\n",eError);
2358 VIDDEC_COMPONENT_PRIVATE* pComponentPrivate = (VIDDEC_COMPONENT_PRIVATE*)phandle;
2360 OMX_PARAM_PORTDEFINITIONTYPE* pPortDefIn = pComponentPrivate->pInPortDef;
2361 OMX_PARAM_PORTDEFINITIONTYPE* pPortDefOut = pComponentPrivate->pOutPortDef;
2377 OMX_PRINT1(pComponentPrivate->dbg, "+++ENTERING\n");
2378 OMX_PRINT1(pComponentPrivate->dbg, "pComponentPrivate 0x%p phandle 0x%lx\n",pComponentPrivate, nParam1);
2379 pComponentPrivate->frameCounter = 0;
2389 ALOGD("Handle request for state transition: %d => OMX_StateIdle", pComponentPrivate->eState);
2390 if (pComponentPrivate->eState == OMX_StateIdle) {
2392 OMX_PRSTATE4(pComponentPrivate->dbg, "Same State 0x%x\n", eError);
2393 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
2394 pComponentPrivate->pHandle->pApplicationPrivate,
2401 else if (( pComponentPrivate->eState == OMX_StateLoaded) || pComponentPrivate->eState == OMX_StateWaitForResources ) {
2403 PERF_Boundary(pComponentPrivate->pPERFcomp,
2408 (pPortDefIn->bEnabled == OMX_TRUE && pComponentPrivate->pCompPort[1]->hTunnelComponent != NULL)) {
2409 OMX_PRBUFFER1(pComponentPrivate->dbg, "Before pPortDefIn->bEnabled 0x%x pPortDefOut->bEnabled 0x%x\n",pPortDefIn->bEnabled, pPortDefOut->bEnabled);
2412 if (pPortDefIn->bPopulated && pComponentPrivate->pCompPort[1]->hTunnelComponent != NULL) {
2413 OMX_PRBUFFER1(pComponentPrivate->dbg, "tunneling pPortDefIn->bEnabled 0x%x pPortDefOut->bEnabled 0x%x\n",
2418 OMX_PRINT1(pComponentPrivate->dbg, "Standalone pPortDefIn->bEnabled 0x%x pPortDefOut->bEnabled 0x%x\n",
2426 if(pComponentPrivate->pCompPort[1]->hTunnelComponent != NULL) {
2427 if((!pComponentPrivate->pInPortDef->bPopulated) || pComponentPrivate->sInSemaphore.bSignaled) {
2428 VIDDEC_PTHREAD_SEMAPHORE_WAIT(pComponentPrivate->sInSemaphore);
2429 OMX_PRBUFFER1(pComponentPrivate->dbg, "tunneling pPortDefIn->bEnabled 0x%x pPortDefOut->bEnabled 0x%x\n",
2434 if((!pComponentPrivate->pOutPortDef->bPopulated) || pComponentPrivate->sOutSemaphore.bSignaled) {
2435 VIDDEC_PTHREAD_SEMAPHORE_WAIT(pComponentPrivate->sInSemaphore);
2436 VIDDEC_PTHREAD_SEMAPHORE_WAIT(pComponentPrivate->sOutSemaphore);
2437 OMX_PRBUFFER1(pComponentPrivate->dbg, "Standalone pPortDefIn->bEnabled 0x%x pPortDefOut->bEnabled 0x%x\n",
2442 OMX_PRBUFFER1(pComponentPrivate->dbg, "After pPortDefIn->bEnabled 0x%x pPortDefOut->bEnabled 0x%x\n",pPortDefIn->bEnabled, pPortDefOut->bEnabled);
2446 if(pComponentPrivate->pCompPort[1]->hTunnelComponent != NULL) {
2447 if(pComponentPrivate->sInSemaphore.bSignaled){
2448 VIDDEC_PTHREAD_SEMAPHORE_WAIT(pComponentPrivate->sInSemaphore);
2452 if(pComponentPrivate->sInSemaphore.bSignaled){
2453 VIDDEC_PTHREAD_SEMAPHORE_WAIT(pComponentPrivate->sInSemaphore);
2455 if(pComponentPrivate->sOutSemaphore.bSignaled){
2456 VIDDEC_PTHREAD_SEMAPHORE_WAIT(pComponentPrivate->sOutSemaphore);
2466 OMX_PRDSP4(pComponentPrivate->dbg, "OMX_ErrorBadParameter\n");
2473 OMX_PRDSP4(pComponentPrivate->dbg, "OMX_ErrorBadParameter\n");
2482 OMX_PRDSP4(pComponentPrivate->dbg, "OMX_ErrorBadParameter\n");
2488 pComponentPrivate->pModLCML = pMyLCML;
2492 OMX_PRDSP4(pComponentPrivate->dbg, "BML Load Failed!!!\n");
2499 OMX_PRDSP4(pComponentPrivate->dbg, "OMX_ErrorBadParameter\n");
2508 OMX_PRDSP4(pComponentPrivate->dbg, "OMX_ErrorBadParameter\n");
2514 pComponentPrivate->pModLCML = hDLL;
2517 pComponentPrivate->eLCMLState = VidDec_LCML_State_Load;
2518 OMX_PRDSP2(pComponentPrivate->dbg, "LCML Handler 0x%p\n",hLCML);
2519 /*(LCML_DSP_INTERFACE*)pComponentPrivate->pLCML = (LCML_DSP_INTERFACE*)hLCML;*/
2520 pComponentPrivate->pLCML = (LCML_DSP_INTERFACE*)hLCML;
2521 pComponentPrivate->pLCML->pComponentPrivate = pComponentPrivate;
2525 pComponentPrivate->lcml_nCntOpReceived = 0;
2529 pComponentPrivate->bLCMLOut = OMX_TRUE;
2531 if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC) {
2532 eError = VIDDEC_InitDSP_H264Dec(pComponentPrivate);
2534 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4 ||
2535 pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingH263) {
2536 eError = VIDDEC_InitDSP_Mpeg4Dec(pComponentPrivate);
2538 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG2) {
2539 eError = VIDDEC_InitDSP_Mpeg2Dec(pComponentPrivate);
2541 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingWMV) {
2542 eError = VIDDEC_InitDSP_WMVDec(pComponentPrivate);
2546 eError = VIDDEC_InitDSP_SparkDec(pComponentPrivate);
2550 OMX_ERROR4(pComponentPrivate->dbg, "OMX_ErrorUnsupportedSetting\n");
2552 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
2553 pComponentPrivate->pHandle->pApplicationPrivate,
2564 if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload &&
2565 pComponentPrivate->pModLCML != NULL){
2567 if(pComponentPrivate->pModLCML != NULL){
2568 dlclose(pComponentPrivate->pModLCML);
2569 pComponentPrivate->pModLCML = NULL;
2570 pComponentPrivate->pLCML = NULL;
2571 pComponentPrivate->eLCMLState = VidDec_LCML_State_Unload;
2574 if(pComponentPrivate->pModLCML != NULL){
2575 FreeLibrary(pComponentPrivate->pModLCML);
2576 pComponentPrivate->pModLCML = NULL;
2577 pComponentPrivate->pLCML = NULL;
2578 pComponentPrivate->eLCMLState = VidDec_LCML_State_Unload;
2582 pComponentPrivate->bLCMLHalted = OMX_TRUE;
2584 OMX_PRDSP4(pComponentPrivate->dbg, "LCML Error %x\n", pComponentPrivate->eState);
2585 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
2586 pComponentPrivate->pHandle->pApplicationPrivate,
2595 pComponentPrivate->bLCMLOut = OMX_FALSE;
2597 pComponentPrivate->bLCMLHalted = OMX_FALSE;
2598 pLcmlHandle = (LCML_DSP_INTERFACE*)pComponentPrivate->pLCML;
2600 OMX_PRDSP4(pComponentPrivate->dbg, "OMX_ErrorBadParameter\n");
2602 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
2603 pComponentPrivate->pHandle->pApplicationPrivate,
2610 pComponentPrivate->eLCMLState = VidDec_LCML_State_Init;
2611 OMX_PRINT1(pComponentPrivate->dbg, "OUTPUT width=%lu height=%lu\n", pComponentPrivate->pOutPortDef->format.video.nFrameWidth, pComponentPrivate->pOutPortDef->format.video.nFrameHeight);
2612 OMX_PRINT1(pComponentPrivate->dbg, "INPUT width=%lu height=%lu\n", pComponentPrivate->pInPortDef->format.video.nFrameWidth, pComponentPrivate->pInPortDef->format.video.nFrameHeight);
2617 pComponentPrivate->rmproxyCallback.RMPROXY_Callback = (void *) VIDDEC_ResourceManagerCallback;
2618 if(pComponentPrivate->eRMProxyState != VidDec_RMPROXY_State_Unload){
2619 OMX_PRMGR2(pComponentPrivate->dbg, "memory usage 1 %u : %u bytes\n",(unsigned int)pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel0],(unsigned int)VIDDEC_MEMUSAGE);
2620 if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC) {
2621 eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_RequestResource, OMX_H264_Decode_COMPONENT, VIDDEC_GetRMFrecuency(pComponentPrivate), VIDDEC_MEMUSAGE, &(pComponentPrivate->rmproxyCallback));
2623 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4) {
2624 eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_RequestResource, OMX_MPEG4_Decode_COMPONENT, VIDDEC_GetRMFrecuency(pComponentPrivate), VIDDEC_MEMUSAGE, &(pComponentPrivate->rmproxyCallback));
2626 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingH263) {
2627 eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_RequestResource, OMX_H263_Decode_COMPONENT, VIDDEC_GetRMFrecuency(pComponentPrivate), VIDDEC_MEMUSAGE, &(pComponentPrivate->rmproxyCallback));
2629 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG2) {
2630 eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_RequestResource, OMX_MPEG2_Decode_COMPONENT, VIDDEC_GetRMFrecuency(pComponentPrivate), VIDDEC_MEMUSAGE, &(pComponentPrivate->rmproxyCallback));
2632 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingWMV) {
2633 eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_RequestResource, OMX_WMV_Decode_COMPONENT, VIDDEC_GetRMFrecuency(pComponentPrivate), VIDDEC_MEMUSAGE, &(pComponentPrivate->rmproxyCallback));
2637 eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_RequestResource, OMX_MPEG4_Decode_COMPONENT, VIDDEC_GetRMFrecuency(pComponentPrivate), VIDDEC_MEMUSAGE, &(pComponentPrivate->rmproxyCallback));
2642 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
2643 pComponentPrivate->pHandle->pApplicationPrivate,
2648 OMX_PRMGR4(pComponentPrivate->dbg, "OMX_ErrorUnsupportedSetting 0x%x\n",eError);
2652 pComponentPrivate->eState = OMX_StateLoaded;
2653 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
2654 pComponentPrivate->pHandle->pApplicationPrivate,
2659 OMX_PRMGR4(pComponentPrivate->dbg, "OMX_ErrorUnsupportedSetting 0x%x\n",eError);
2662 pComponentPrivate->eRMProxyState = VidDec_RMPROXY_State_Registered;
2667 if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload &&
2668 pComponentPrivate->eLCMLState != VidDec_LCML_State_Destroy &&
2669 pComponentPrivate->pLCML != NULL &&
2670 pComponentPrivate->bLCMLHalted != OMX_TRUE){
2671 OMX_PRDSP2(pComponentPrivate->dbg, "LCML_ControlCodec called EMMCodecControlUsnEos 0x%p\n",pLcmlHandle);
2674 OMX_PRDSP4(pComponentPrivate->dbg, "error in EMMCodecControlUsnEos %x\n",eError);
2676 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
2677 pComponentPrivate->pHandle->pApplicationPrivate,
2682 OMX_ERROR4(pComponentPrivate->dbg, "OMX_ErrorHardware 0x%x\n",eError);
2686 if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat != OMX_VIDEO_CodingWMV) {
2687 if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload &&
2688 pComponentPrivate->eLCMLState != VidDec_LCML_State_Destroy &&
2689 pComponentPrivate->pLCML != NULL &&
2690 pComponentPrivate->bLCMLHalted != OMX_TRUE){
2691 if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC) {
2700 VIDDEC_PTHREAD_MUTEX_LOCK(pComponentPrivate->sMutex);
2701 OMX_PRDSP2(pComponentPrivate->dbg, "LCML_ControlCodec called EMMCodecControlSendDspMessage 0x%p\n",pLcmlHandle);
2704 OMX_PRDSP4(pComponentPrivate->dbg, "error in EMMCodecControlSendDspMessage %x\n",eError);
2706 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
2707 pComponentPrivate->pHandle->pApplicationPrivate,
2712 OMX_ERROR4(pComponentPrivate->dbg, "OMX_ErrorHardware 0x%x\n",eError);
2713 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->sMutex);
2716 VIDDEC_PTHREAD_MUTEX_WAIT(pComponentPrivate->sMutex);
2717 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->sMutex);
2721 pComponentPrivate->eState = OMX_StateIdle;
2722 pComponentPrivate->bIsPaused = 0;
2725 if(RemoveStateTransition(pComponentPrivate, OMX_TRUE) != OMX_ErrorNone) {
2729 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
2730 pComponentPrivate->pHandle->pApplicationPrivate,
2733 pComponentPrivate->eState,
2738 else if (pComponentPrivate->eState == OMX_StateExecuting || pComponentPrivate->eState == OMX_StatePause) {
2740 if (pComponentPrivate->bDynamicConfigurationInProgress == OMX_TRUE) {
2741 pComponentPrivate->bDynamicConfigurationInProgress = OMX_FALSE;
2742 OMX_PRSTATE1(pComponentPrivate->dbg, "We were doing DynamicConfiguration, canceling it. %d \n",pComponentPrivate->bDynamicConfigurationInProgress);
2744 pComponentPrivate->bIsStopping = 1;
2745 OMX_PRSTATE1(pComponentPrivate->dbg, "bIsStopping 0x%lx\n",pComponentPrivate->bIsStopping);
2746 OMX_PRSTATE1(pComponentPrivate->dbg, "eExecuteToIdle 0x%x\n",pComponentPrivate->eExecuteToIdle);
2747 OMX_VidDec_Return(pComponentPrivate);
2750 PERF_Boundary(pComponentPrivate->pPERFcomp,
2753 pComponentPrivate->bIsPaused = 0;
2754 pComponentPrivate->iEndofInputSent = 0;
2756 if (pComponentPrivate->bIsStopping == OMX_TRUE) {
2757 pComponentPrivate->bIsPaused = OMX_FALSE;
2758 if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload &&
2759 pComponentPrivate->eLCMLState != VidDec_LCML_State_Destroy &&
2760 pComponentPrivate->pLCML != NULL &&
2761 pComponentPrivate->bLCMLHalted != OMX_TRUE){
2762 VIDDEC_PTHREAD_MUTEX_LOCK(pComponentPrivate->sMutex);
2763 pLcmlHandle = (LCML_DSP_INTERFACE *)pComponentPrivate->pLCML;
2767 OMX_PRDSP4(pComponentPrivate->dbg, "Error Occurred in Codec Stop...\n");
2768 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->sMutex);
2771 pComponentPrivate->eLCMLState = VidDec_LCML_State_Stop;
2772 VIDDEC_PTHREAD_MUTEX_WAIT(pComponentPrivate->sMutex);
2773 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->sMutex);
2775 VIDDEC_HandleCommandFlush(pComponentPrivate, -1, OMX_FALSE);
2779 if(pComponentPrivate->eRMProxyState != VidDec_RMPROXY_State_Unload){
2780 OMX_PRMGR2(pComponentPrivate->dbg, "memory usage 2 %d : %d bytes\n",(unsigned int)pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel0],(unsigned int)VIDDEC_MEMUSAGE);
2781 if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC) {
2782 eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_StateSet, OMX_H264_Decode_COMPONENT, OMX_StateIdle, VIDDEC_MEMUSAGE, NULL);
2784 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4) {
2785 eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_StateSet, OMX_MPEG4_Decode_COMPONENT, OMX_StateIdle, VIDDEC_MEMUSAGE, NULL);
2787 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingH263) {
2788 eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_StateSet, OMX_H263_Decode_COMPONENT, OMX_StateIdle, VIDDEC_MEMUSAGE, NULL);
2790 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG2) {
2791 eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_StateSet, OMX_MPEG2_Decode_COMPONENT, OMX_StateIdle, VIDDEC_MEMUSAGE, NULL);
2793 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingWMV) {
2794 eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_StateSet, OMX_WMV_Decode_COMPONENT, OMX_StateIdle, VIDDEC_MEMUSAGE, NULL);
2798 eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_StateSet, OMX_MPEG4_Decode_COMPONENT, OMX_StateIdle, VIDDEC_MEMUSAGE, NULL);
2804 OMX_MEMFREE_STRUCT_DSPALIGN(pComponentPrivate->pUalgParams,OMX_PTR);
2806 pComponentPrivate->bIsStopping = OMX_FALSE;
2807 pComponentPrivate->eState = OMX_StateIdle;
2809 if(RemoveStateTransition(pComponentPrivate, OMX_TRUE) != OMX_ErrorNone) {
2812 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
2813 pComponentPrivate->pHandle->pApplicationPrivate,
2816 pComponentPrivate->eState,
2820 pComponentPrivate->bTransPause = 0;
2821 pComponentPrivate->bIsPaused = 0;
2822 pComponentPrivate->eExecuteToIdle = OMX_StateInvalid;
2829 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
2830 pComponentPrivate->pHandle->pApplicationPrivate,
2835 OMX_ERROR4(pComponentPrivate->dbg, "OMX_ErrorHardware 0x%x\n",eError);
2837 pComponentPrivate->eExecuteToIdle = OMX_StateInvalid;
2838 OMX_PRSTATE1(pComponentPrivate->dbg, "Passing bIsStopping 0x%lx\n",pComponentPrivate->bIsStopping);
2839 OMX_PRSTATE1(pComponentPrivate->dbg, "Passing eExecuteToIdle 0x%x\n",pComponentPrivate->eExecuteToIdle);
2844 pComponentPrivate->lcml_nCntOpReceived = 0;
2846 OMX_PRSTATE2(pComponentPrivate->dbg, "Transitioning to OMX_StateExecuting C 0x%x N 0x%lx\n",pComponentPrivate->eState, nParam1);
2847 if (pComponentPrivate->eState == OMX_StateExecuting) {
2849 pComponentPrivate->cbInfo.EventHandler (pComponentPrivate->pHandle,
2850 pComponentPrivate->pHandle->pApplicationPrivate,
2855 OMX_PRSTATE4(pComponentPrivate->dbg, "OMX_ErrorSameState 0x%x\n",eError);
2857 else if (pComponentPrivate->eState == OMX_StateIdle || pComponentPrivate->eState == OMX_StatePause) {
2858 pLcmlHandle = (LCML_DSP_INTERFACE*)pComponentPrivate->pLCML;
2859 pComponentPrivate->bIsPaused = 0;
2860 pComponentPrivate->bFirstBuffer = 1;
2861 if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload &&
2862 pComponentPrivate->eLCMLState != VidDec_LCML_State_Destroy &&
2863 pComponentPrivate->pLCML != NULL &&
2864 pComponentPrivate->bLCMLHalted != OMX_TRUE){
2865 OMX_PRDSP2(pComponentPrivate->dbg, "LCML_ControlCodec called EMMCodecControlStart 0x%p\n",pLcmlHandle);
2869 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
2870 pComponentPrivate->pHandle->pApplicationPrivate,
2876 OMX_PRDSP4(pComponentPrivate->dbg, "Occurred in Codec Start... 0x%x\n",eError);
2879 pComponentPrivate->eLCMLState = VidDec_LCML_State_Start;
2880 if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC &&
2881 pComponentPrivate->eState == OMX_StateIdle) {
2886 VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_IDLEEXECUTING);
2887 OMX_PRDSP2(pComponentPrivate->dbg, "Initializing DSP for h264 eCompressionFormat 0x%x\n",
2888 pComponentPrivate->pInPortDef->format.video.eCompressionFormat);
2889 OMX_MALLOC_STRUCT_SIZED(pDynParams, H264_Iualg_Cmd_SetStatus, sizeof(H264_Iualg_Cmd_SetStatus) + VIDDEC_PADDING_FULL,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel4]);
2891 OMX_TRACE4(pComponentPrivate->dbg, "Error: Malloc failed\n");
2912 if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload &&
2913 pComponentPrivate->eLCMLState != VidDec_LCML_State_Destroy &&
2914 pComponentPrivate->pLCML != NULL &&
2915 pComponentPrivate->bLCMLHalted != OMX_TRUE){
2916 VIDDEC_PTHREAD_MUTEX_LOCK(pComponentPrivate->sMutex);
2922 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->sMutex);
2926 VIDDEC_PTHREAD_MUTEX_WAIT(pComponentPrivate->sMutex);
2927 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->sMutex);
2933 OMX_PRDSP4(pComponentPrivate->dbg, "Codec AlgCtrl 0x%x\n",eError);
2937 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG2 &&
2938 pComponentPrivate->eState == OMX_StateIdle) {
2943 VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_IDLEEXECUTING);
2944 OMX_PRDSP2(pComponentPrivate->dbg, "Initializing DSP for wmv9 eCompressionFormat 0x%x\n",
2945 pComponentPrivate->pInPortDef->format.video.eCompressionFormat);
2946 OMX_MALLOC_STRUCT_SIZED(pDynParams, MP2VDEC_UALGDynamicParams, sizeof(MP2VDEC_UALGDynamicParams) + VIDDEC_PADDING_FULL,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel4]);
2955 if (pComponentPrivate->nDisplayWidth > 0) {
2956 if (pComponentPrivate->pInPortDef->format.video.nFrameWidth > pComponentPrivate->nDisplayWidth) {
2957 pComponentPrivate->nDisplayWidth = pComponentPrivate->pInPortDef->format.video.nFrameWidth;
2959 pDynParams->ulDisplayWidth = (((pComponentPrivate->nDisplayWidth + 15) >> 4) << 4);
2960 if (pComponentPrivate->nDisplayWidth != pDynParams->ulDisplayWidth ) {
2961 pComponentPrivate->nDisplayWidth = pDynParams->ulDisplayWidth;
2962 OMX_PRINT2(pComponentPrivate->dbg, "warning Display Width adjusted to %lu\n",pDynParams->ulDisplayWidth);
2965 else if (pComponentPrivate->pCompPort[1]->hTunnelComponent != NULL){
2966 if (pComponentPrivate->pInPortDef->format.video.nFrameWidth > pComponentPrivate->nDisplayWidth) {
2967 pComponentPrivate->nDisplayWidth = pComponentPrivate->pInPortDef->format.video.nFrameWidth;
2969 pDynParams->ulDisplayWidth = (((pComponentPrivate->nDisplayWidth + 15) >> 4) << 4);
2970 if (pComponentPrivate->nDisplayWidth != pDynParams->ulDisplayWidth ) {
2971 pComponentPrivate->nDisplayWidth = pDynParams->ulDisplayWidth;
2972 OMX_PRINT2(pComponentPrivate->dbg, "warning Display Width adjusted to %lu\n",pDynParams->ulDisplayWidth);
2982 if (pComponentPrivate->pOutPortDef->format.video.eColorFormat == VIDDEC_COLORFORMAT422) {
2993 pComponentPrivate->bTransPause = 0;
2995 if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload &&
2996 pComponentPrivate->eLCMLState != VidDec_LCML_State_Destroy &&
2997 pComponentPrivate->pLCML != NULL &&
2998 pComponentPrivate->bLCMLHalted != OMX_TRUE){
3004 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
3005 pComponentPrivate->pHandle->pApplicationPrivate,
3014 if(pComponentPrivate->bTransPause != 0) {
3015 pComponentPrivate->bTransPause = 0;
3025 OMX_PRDSP4(pComponentPrivate->dbg, "Codec AlgCtrl 0x%x\n",eError);
3031 if(pComponentPrivate->eState == OMX_StateIdle) {
3036 VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_IDLEEXECUTING);
3037 OMX_PRDSP2(pComponentPrivate->dbg, "Initializing DSP for mpeg4 and h263 eCompressionFormat 0x%x\n",
3038 pComponentPrivate->pInPortDef->format.video.eCompressionFormat);
3039 OMX_MALLOC_STRUCT_SIZED(pDynParams, SPARKVDEC_UALGDynamicParams, sizeof(SPARKVDEC_UALGDynamicParams) + VIDDEC_PADDING_FULL,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel4]);
3041 OMX_TRACE4(pComponentPrivate->dbg, "Error: Malloc failed\n");
3061 /*pComponentPrivate->bTransPause = 0;*//*flag to wait for the generated event*/
3062 VIDDEC_PTHREAD_MUTEX_LOCK(pComponentPrivate->sMutex);
3064 if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload &&
3065 pComponentPrivate->eLCMLState != VidDec_LCML_State_Destroy &&
3066 pComponentPrivate->pLCML != NULL &&
3067 pComponentPrivate->bLCMLHalted != OMX_TRUE){
3076 VIDDEC_PTHREAD_MUTEX_WAIT(pComponentPrivate->sMutex);
3077 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->sMutex);
3083 OMX_PRDSP4(pComponentPrivate->dbg, "Codec AlgCtrl 0x%x\n",eError);
3090 if(pComponentPrivate->eState == OMX_StateIdle) {
3091 eError = VIDDEC_SetMpeg4_Parameters(pComponentPrivate);
3101 if(pComponentPrivate->eRMProxyState != VidDec_RMPROXY_State_Unload){
3102 OMX_PRMGR2(pComponentPrivate->dbg, "memory usage 3 %d : %d bytes\n",(unsigned int)pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel0],(unsigned int)VIDDEC_MEMUSAGE);
3103 if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC) {
3104 eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_StateSet, OMX_H264_Decode_COMPONENT, OMX_StateExecuting, VIDDEC_MEMUSAGE, NULL);
3106 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4) {
3107 eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_StateSet, OMX_MPEG4_Decode_COMPONENT, OMX_StateExecuting, VIDDEC_MEMUSAGE, NULL);
3109 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingH263) {
3110 eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_StateSet, OMX_H263_Decode_COMPONENT, OMX_StateExecuting, VIDDEC_MEMUSAGE, NULL);
3112 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG2) {
3113 eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_StateSet, OMX_MPEG2_Decode_COMPONENT, OMX_StateExecuting, VIDDEC_MEMUSAGE, NULL);
3115 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingWMV) {
3116 eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_StateSet, OMX_WMV_Decode_COMPONENT, OMX_StateExecuting, VIDDEC_MEMUSAGE, NULL);
3120 eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_StateSet, OMX_MPEG4_Decode_COMPONENT, OMX_StateExecuting, VIDDEC_MEMUSAGE, NULL);
3125 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
3126 pComponentPrivate->pHandle->pApplicationPrivate,
3131 OMX_ERROR4(pComponentPrivate->dbg, "OMX_ErrorUnsupportedSetting 0x%x\n",eError);
3135 pComponentPrivate->eState = OMX_StateLoaded;
3136 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
3137 pComponentPrivate->pHandle->pApplicationPrivate,
3142 OMX_PRMGR4(pComponentPrivate->dbg, "OMX_ErrorUnsupportedSetting 0x%x\n",eError);
3150 pComponentPrivate->bIsPaused = 0;
3151 pComponentPrivate->iEndofInputSent = 0;
3152 pComponentPrivate->eState = OMX_StateExecuting;
3154 if(RemoveStateTransition(pComponentPrivate, OMX_TRUE) != OMX_ErrorNone) {
3157 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
3158 pComponentPrivate->pHandle->pApplicationPrivate,
3161 pComponentPrivate->eState,
3163 OMX_PRSTATE2(pComponentPrivate->dbg, "Transition to OMX_StateExecuting\n");
3167 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
3168 pComponentPrivate->pHandle->pApplicationPrivate,
3173 OMX_PRSTATE4(pComponentPrivate->dbg, "OMX_ErrorIncorrectStateTransition 0x%x\n",eError);
3177 OMX_PRSTATE2(pComponentPrivate->dbg, "Transitioning to OMX_StateLoaded C 0x%x N 0x%lx\n",pComponentPrivate->eState, nParam1);
3178 if (pComponentPrivate->eState == OMX_StateLoaded) {
3180 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
3181 pComponentPrivate->pHandle->pApplicationPrivate,
3186 OMX_PRSTATE4(pComponentPrivate->dbg, "OMX_ErrorSameState 0x%x\n",eError);
3188 else if (pComponentPrivate->eState == OMX_StateIdle) {
3190 PERF_Boundary(pComponentPrivate->pPERFcomp,
3193 OMX_VidDec_Return(pComponentPrivate);
3194 pComponentPrivate->eIdleToLoad = OMX_StateLoaded;
3195 if(pComponentPrivate->eFirstBuffer.pFirstBufferSaved){
3196 free(pComponentPrivate->eFirstBuffer.pFirstBufferSaved);
3197 pComponentPrivate->eFirstBuffer.pFirstBufferSaved = NULL;
3198 pComponentPrivate->eFirstBuffer.bSaveFirstBuffer = OMX_FALSE;
3199 pComponentPrivate->eFirstBuffer.nFilledLen = 0;
3202 if(pComponentPrivate->eRMProxyState == VidDec_RMPROXY_State_Registered){
3203 OMX_PRMGR2(pComponentPrivate->dbg, "memory usage 4 %d : %d bytes\n",(unsigned int)pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel0],(unsigned int)VIDDEC_MEMUSAGE);
3204 if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC) {
3205 eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_FreeResource, OMX_H264_Decode_COMPONENT, 0, VIDDEC_MEMUSAGE, NULL);
3207 OMX_PRMGR4(pComponentPrivate->dbg, "Error returned from destroy ResourceManagerProxy thread\n");
3210 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingWMV) {
3211 eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_FreeResource, OMX_WMV_Decode_COMPONENT, 0, VIDDEC_MEMUSAGE, NULL);
3213 OMX_PRMGR4(pComponentPrivate->dbg, "Error returned from destroy ResourceManagerProxy thread\n");
3216 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4) {
3217 eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_FreeResource, OMX_MPEG4_Decode_COMPONENT, 0, VIDDEC_MEMUSAGE, NULL);
3219 OMX_PRMGR4(pComponentPrivate->dbg, "Error returned from destroy ResourceManagerProxy thread\n");
3222 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingH263) {
3223 eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_FreeResource, OMX_H263_Decode_COMPONENT, 0, VIDDEC_MEMUSAGE, NULL);
3225 OMX_PRMGR4(pComponentPrivate->dbg, "Error returned from destroy ResourceManagerProxy thread\n");
3228 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG2) {
3229 eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_FreeResource, OMX_MPEG2_Decode_COMPONENT, 0, VIDDEC_MEMUSAGE, NULL);
3231 OMX_PRMGR4(pComponentPrivate->dbg, "Error returned from destroy ResourceManagerProxy thread\n");
3236 eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_FreeResource, OMX_MPEG4_Decode_COMPONENT, 0, VIDDEC_MEMUSAGE, NULL);
3238 OMX_PRMGR4(pComponentPrivate->dbg, "Error returned from destroy ResourceManagerProxy thread\n");
3246 pComponentPrivate->eRMProxyState = VidDec_RMPROXY_State_Load;
3249 if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload &&
3250 pComponentPrivate->pLCML != NULL){
3251 OMX_PRDSP2(pComponentPrivate->dbg, "LCML_ControlCodec called EMMCodecControlDestroy 0x%p\n",pLcmlHandle);
3252 pLcmlHandle = (LCML_DSP_INTERFACE*)pComponentPrivate->pLCML;
3255 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
3256 pComponentPrivate->pHandle->pApplicationPrivate,
3261 OMX_PRDSP4(pComponentPrivate->dbg, "OMX_ErrorHardware 0x%x\n",eError);
3264 pComponentPrivate->eLCMLState = VidDec_LCML_State_Destroy;
3265 OMX_PRDSP2(pComponentPrivate->dbg, "LCML_ControlCodec called EMMCodecControlDestroy 0x%p\n",pLcmlHandle);
3268 OMX_PRDSP2(pComponentPrivate->dbg, "Closing LCML lib 0x%p\n",pComponentPrivate->pModLCML);
3271 if(pComponentPrivate->pModLCML != NULL){
3272 dlclose(pComponentPrivate->pModLCML);
3273 pComponentPrivate->pModLCML = NULL;
3274 pComponentPrivate->pLCML = NULL;
3277 if(pComponentPrivate->pModLCML != NULL){
3278 FreeLibrary(pComponentPrivate->pModLCML);
3279 pComponentPrivate->pModLCML = NULL;
3280 pComponentPrivate->pLCML = NULL;
3283 pComponentPrivate->eLCMLState = VidDec_LCML_State_Unload;
3285 OMX_PRDSP1(pComponentPrivate->dbg, "Closed LCML lib 0x%p\n",pComponentPrivate->pModLCML);
3286 OMX_PRBUFFER2(pComponentPrivate->dbg, "Waiting for unpopulate ports IN 0x%x OUT 0x%x\n",pPortDefIn->bEnabled,pPortDefOut->bEnabled);
3287 OMX_PRBUFFER1(pComponentPrivate->dbg, "Tunneling 0x%p\n",(pComponentPrivate->pCompPort[1]->hTunnelComponent));
3289 (pPortDefIn->bEnabled == OMX_TRUE && pComponentPrivate->pCompPort[1]->hTunnelComponent != NULL)) {
3293 OMX_PRBUFFER2(pComponentPrivate->dbg, "Standalone unpopulated ports IN 0x%x OUT 0x%x\n",pPortDefIn->bEnabled,pPortDefOut->bEnabled);
3295 pComponentPrivate->bIsPaused = 0;
3296 pComponentPrivate->eState = OMX_StateLoaded;
3298 if(RemoveStateTransition(pComponentPrivate, OMX_TRUE) != OMX_ErrorNone) {
3301 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
3302 pComponentPrivate->pHandle->pApplicationPrivate,
3305 pComponentPrivate->eState,
3307 OMX_PRSTATE2(pComponentPrivate->dbg, "Transition to OMX_StateLoaded\n");
3308 VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_VARS);
3309 pComponentPrivate->eIdleToLoad = OMX_StateInvalid;
3312 else if(!pPortDefIn->bPopulated && (pComponentPrivate->pCompPort[1]->hTunnelComponent != NULL)) {
3313 OMX_PRBUFFER2(pComponentPrivate->dbg, "Tunneling unpopulated ports IN 0x%x TUNNEL 0x%x\n",
3314 pPortDefIn->bEnabled,pComponentPrivate->pCompPort[1]->hTunnelComponent);
3316 pComponentPrivate->bIsPaused = 0;
3317 pComponentPrivate->eState = OMX_StateLoaded;
3319 if(RemoveStateTransition(pComponentPrivate, OMX_TRUE) != OMX_ErrorNone) {
3322 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
3323 pComponentPrivate->pHandle->pApplicationPrivate,
3326 pComponentPrivate->eState,
3328 OMX_PRSTATE2(pComponentPrivate->dbg, "Transition to OMX_StateLoaded\n");
3329 VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_VARS);
3330 pComponentPrivate->eIdleToLoad = OMX_StateInvalid;
3336 if(pComponentPrivate->pCompPort[1]->hTunnelComponent != NULL) {
3337 if((!(pComponentPrivate->eState == OMX_StateLoaded) && pComponentPrivate->pInPortDef->bPopulated) ||
3338 pComponentPrivate->sInSemaphore.bSignaled) {
3339 VIDDEC_PTHREAD_SEMAPHORE_WAIT(pComponentPrivate->sInSemaphore);
3341 OMX_PRBUFFER2(pComponentPrivate->dbg, "Tunneling unpopulated ports IN 0x%x TUNNEL 0x%p\n",
3342 pPortDefIn->bEnabled,pComponentPrivate->pCompPort[1]->hTunnelComponent);
3344 pComponentPrivate->bIsPaused = 0;
3345 pComponentPrivate->eState = OMX_StateLoaded;
3347 if(RemoveStateTransition(pComponentPrivate, OMX_TRUE) != OMX_ErrorNone) {
3350 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
3351 pComponentPrivate->pHandle->pApplicationPrivate,
3354 pComponentPrivate->eState,
3356 OMX_PRSTATE2(pComponentPrivate->dbg, "Transition to OMX_StateLoaded\n");
3357 VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_VARS);
3358 pComponentPrivate->eIdleToLoad = OMX_StateInvalid;
3361 if((!(pComponentPrivate->eState == OMX_StateLoaded) && pComponentPrivate->pInPortDef->bPopulated) ||
3362 pComponentPrivate->sInSemaphore.bSignaled) {
3363 VIDDEC_PTHREAD_SEMAPHORE_WAIT(pComponentPrivate->sInSemaphore);
3365 if((!(pComponentPrivate->eState == OMX_StateLoaded) && pComponentPrivate->pOutPortDef->bPopulated) ||
3366 pComponentPrivate->sOutSemaphore.bSignaled) {
3367 VIDDEC_PTHREAD_SEMAPHORE_WAIT(pComponentPrivate->sOutSemaphore);
3369 OMX_PRBUFFER2(pComponentPrivate->dbg, "Standalone unpopulated ports IN 0x%x OUT 0x%x\n",pPortDefIn->bEnabled,pPortDefOut->bEnabled);
3371 pComponentPrivate->bIsPaused = 0;
3372 pComponentPrivate->eState = OMX_StateLoaded;
3374 if(RemoveStateTransition(pComponentPrivate, OMX_TRUE) != OMX_ErrorNone) {
3377 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
3378 pComponentPrivate->pHandle->pApplicationPrivate,
3381 pComponentPrivate->eState,
3383 OMX_PRSTATE2(pComponentPrivate->dbg, "Transition to OMX_StateLoaded\n");
3384 VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_VARS);
3385 pComponentPrivate->eIdleToLoad = OMX_StateInvalid;
3392 PERF_Boundary(pComponentPrivate->pPERFcomp,
3399 if(pComponentPrivate->pCompPort[1]->hTunnelComponent != NULL) {
3400 if(pComponentPrivate->sInSemaphore.bSignaled){
3401 VIDDEC_PTHREAD_SEMAPHORE_WAIT(pComponentPrivate->sInSemaphore);
3405 if(pComponentPrivate->sInSemaphore.bSignaled){
3406 VIDDEC_PTHREAD_SEMAPHORE_WAIT(pComponentPrivate->sInSemaphore);
3408 if(pComponentPrivate->sOutSemaphore.bSignaled){
3409 VIDDEC_PTHREAD_SEMAPHORE_WAIT(pComponentPrivate->sOutSemaphore);
3412 pComponentPrivate->eState = OMX_StateLoaded;
3413 pComponentPrivate->bIsPaused = 0;
3415 if(RemoveStateTransition(pComponentPrivate, OMX_TRUE) != OMX_ErrorNone) {
3418 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
3419 pComponentPrivate->pHandle->pApplicationPrivate,
3422 pComponentPrivate->eState,
3424 pComponentPrivate->eIdleToLoad = OMX_StateInvalid;
3425 VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_VARS);
3426 OMX_PRSTATE2(pComponentPrivate->dbg, "Transition to OMX_StateLoaded\n");
3431 else if (pComponentPrivate->eState == OMX_StateWaitForResources) {
3432 pComponentPrivate->eState = OMX_StateLoaded;
3433 pComponentPrivate->bIsPaused = 0;
3435 if(RemoveStateTransition(pComponentPrivate, OMX_TRUE) != OMX_ErrorNone) {
3438 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
3439 pComponentPrivate->pHandle->pApplicationPrivate,
3442 pComponentPrivate->eState,
3444 OMX_PRSTATE2(pComponentPrivate->dbg, "Transition to OMX_StateLoaded\n");
3449 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
3450 pComponentPrivate->pHandle->pApplicationPrivate,
3455 OMX_PRSTATE2(pComponentPrivate->dbg, "Incorrect State Transition 0x%x\n",eError);
3459 OMX_VidDec_Return(pComponentPrivate);
3460 OMX_PRSTATE2(pComponentPrivate->dbg, "Transitioning to OMX_StatePause C 0x%x N 0x%lx\n",pComponentPrivate->eState, nParam1);
3461 if (pComponentPrivate->eState == OMX_StatePause) {
3463 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
3464 pComponentPrivate->pHandle->pApplicationPrivate,
3469 OMX_PRSTATE4(pComponentPrivate->dbg, "Same State 0x%x\n",eError);
3472 else if (pComponentPrivate->eState == OMX_StateExecuting) {
3474 pComponentPrivate->lcml_nCntOpReceived = 0;
3475 PERF_Boundary(pComponentPrivate->pPERFcomp,
3479 VIDDEC_PTHREAD_MUTEX_LOCK(pComponentPrivate->sMutex);
3480 pComponentPrivate->bIsPaused = 1;
3481 OMX_VidDec_Return(pComponentPrivate);
3482 if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload &&
3483 pComponentPrivate->eLCMLState != VidDec_LCML_State_Destroy &&
3484 pComponentPrivate->pLCML != NULL &&
3485 pComponentPrivate->bLCMLHalted != OMX_TRUE){
3486 pLcmlHandle = (LCML_DSP_INTERFACE*)pComponentPrivate->pLCML;
3487 OMX_PRDSP2(pComponentPrivate->dbg, "LCML_ControlCodec called EMMCodecControlPause 0x%p\n",pLcmlHandle);
3491 OMX_PRDSP4(pComponentPrivate->dbg, "Error during EMMCodecControlPause...\n");
3492 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
3493 pComponentPrivate->pHandle->pApplicationPrivate,
3498 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->sMutex);
3502 VIDDEC_PTHREAD_MUTEX_WAIT(pComponentPrivate->sMutex);
3503 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->sMutex);
3505 pComponentPrivate->eLCMLState = VidDec_LCML_State_Pause;
3506 OMX_VidDec_Return(pComponentPrivate);
3507 pComponentPrivate->eLCMLState = VidDec_LCML_State_Pause;
3509 pComponentPrivate->bIsPaused = 1;
3510 pComponentPrivate->eState = OMX_StatePause;
3512 if(RemoveStateTransition(pComponentPrivate, OMX_TRUE) != OMX_ErrorNone) {
3515 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
3516 pComponentPrivate->pHandle->pApplicationPrivate,
3519 pComponentPrivate->eState,
3524 else if (pComponentPrivate->eState == OMX_StateIdle) {
3525 pComponentPrivate->bIsPaused = 1;
3526 if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload &&
3527 pComponentPrivate->eLCMLState != VidDec_LCML_State_Destroy &&
3528 pComponentPrivate->pLCML != NULL &&
3529 pComponentPrivate->bLCMLHalted != OMX_TRUE){
3530 VIDDEC_PTHREAD_MUTEX_LOCK(pComponentPrivate->sMutex);
3531 pLcmlHandle = (LCML_DSP_INTERFACE*)pComponentPrivate->pLCML;
3532 OMX_PRDSP2(pComponentPrivate->dbg, "LCML_ControlCodec called EMMCodecControlPause 0x%p\n",pLcmlHandle);
3535 OMX_PRDSP4(pComponentPrivate->dbg, "During EMMCodecControlPause...\n");
3537 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
3538 pComponentPrivate->pHandle->pApplicationPrivate,
3543 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->sMutex);
3547 VIDDEC_PTHREAD_MUTEX_WAIT(pComponentPrivate->sMutex);
3548 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->sMutex);
3550 pComponentPrivate->eLCMLState = VidDec_LCML_State_Pause;
3552 pComponentPrivate->bIsPaused = 1;
3553 pComponentPrivate->eState = OMX_StatePause;
3555 if(RemoveStateTransition(pComponentPrivate, OMX_TRUE) != OMX_ErrorNone) {
3558 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
3559 pComponentPrivate->pHandle->pApplicationPrivate,
3562 pComponentPrivate->eState,
3564 OMX_PRSTATE2(pComponentPrivate->dbg, "Transition to OMX_StatePause\n");
3568 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
3569 pComponentPrivate->pHandle->pApplicationPrivate,
3574 OMX_PRSTATE4(pComponentPrivate->dbg, "Incorrect State Transition\n");
3578 OMX_PRINT1(pComponentPrivate->dbg, "Transitioning to OMX_StateInvalid C 0x%x N 0x%lx\n",pComponentPrivate->eState, nParam1);
3579 if (pComponentPrivate->eState == OMX_StateInvalid) {
3581 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
3582 pComponentPrivate->pHandle->pApplicationPrivate,
3587 OMX_PRSTATE4(pComponentPrivate->dbg, "Same State...\n");
3590 else if (pComponentPrivate->eState == OMX_StateIdle || pComponentPrivate->eState == OMX_StateExecuting) {
3591 pLcmlHandle = (LCML_DSP_INTERFACE*)pComponentPrivate->pLCML;
3592 if (pComponentPrivate->eState == OMX_StateExecuting) {
3593 if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload &&
3594 pComponentPrivate->eLCMLState != VidDec_LCML_State_Destroy &&
3595 pComponentPrivate->pLCML != NULL &&
3596 pComponentPrivate->bLCMLHalted != OMX_TRUE) {
3597 VIDDEC_PTHREAD_MUTEX_LOCK(pComponentPrivate->sMutex);
3598 OMX_PRDSP2(pComponentPrivate->dbg, "LCML_ControlCodec called MMCodecControlStop 0x%x\n",eError);
3601 OMX_PRDSP4(pComponentPrivate->dbg, "Occurred in Codec Stop...\n");
3603 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
3604 pComponentPrivate->pHandle->pApplicationPrivate,
3609 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->sMutex);
3612 VIDDEC_PTHREAD_MUTEX_WAIT(pComponentPrivate->sMutex);
3613 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->sMutex);
3616 pComponentPrivate->eLCMLState = VidDec_LCML_State_Stop;
3618 if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload &&
3619 pComponentPrivate->pLCML != NULL){
3621 OMX_PRDSP2(pComponentPrivate->dbg, "LCML_ControlCodec called EMMCodecControlDestroy 0x%p\n",pLcmlHandle);
3623 OMX_PRDSP4(pComponentPrivate->dbg, "Occurred in Codec Destroy...\n");
3625 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
3626 pComponentPrivate->pHandle->pApplicationPrivate,
3631 OMX_PRSTATE4(pComponentPrivate->dbg, "Incorrect State Transition 0x%x\n", eError);
3636 pComponentPrivate->eLCMLState = VidDec_LCML_State_Destroy;
3637 if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload) {
3639 if(pComponentPrivate->pModLCML != NULL){
3640 dlclose(pComponentPrivate->pModLCML);
3641 pComponentPrivate->pModLCML = NULL;
3642 pComponentPrivate->pLCML = NULL;
3643 pComponentPrivate->eLCMLState = VidDec_LCML_State_Unload;
3646 if(pComponentPrivate->pModLCML != NULL){
3647 FreeLibrary(pComponentPrivate->pModLCML);
3648 pComponentPrivate->pModLCML = NULL;
3649 pComponentPrivate->pLCML = NULL;
3650 pComponentPrivate->eLCMLState = VidDec_LCML_State_Unload;
3655 if(pComponentPrivate->pCompPort[VIDDEC_INPUT_PORT]->pBufferPrivate[iCount]->bAllocByComponent == OMX_TRUE){
3656 if(pComponentPrivate->pCompPort[VIDDEC_INPUT_PORT]->pBufferPrivate[iCount]->pBufferHdr != NULL) {
3658 pBuffHead = pComponentPrivate->pCompPort[VIDDEC_INPUT_PORT]->pBufferPrivate[iCount]->pBufferHdr;
3665 if(pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->pBufferPrivate[iCount]->bAllocByComponent == OMX_TRUE){
3666 if(pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->pBufferPrivate[iCount]->pBufferHdr != NULL) {
3668 pBuffHead = pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->pBufferPrivate[iCount]->pBufferHdr;
3674 if(pComponentPrivate->eRMProxyState == VidDec_RMPROXY_State_Registered){
3675 OMX_PRMGR2(pComponentPrivate->dbg, "memory usage 4 %d : %d bytes\n",(unsigned int)pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel0],(unsigned int)VIDDEC_MEMUSAGE);
3676 if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC) {
3677 eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_FreeResource, OMX_H264_Decode_COMPONENT, 0, VIDDEC_MEMUSAGE, NULL);
3679 OMX_PRMGR4(pComponentPrivate->dbg, "Error returned from destroy ResourceManagerProxy thread\n");
3682 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingWMV) {
3683 eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_FreeResource, OMX_WMV_Decode_COMPONENT, 0, VIDDEC_MEMUSAGE, NULL);
3685 OMX_PRMGR4(pComponentPrivate->dbg, "Error returned from destroy ResourceManagerProxy thread\n");
3688 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4) {
3689 eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_FreeResource, OMX_MPEG4_Decode_COMPONENT, 0, VIDDEC_MEMUSAGE, NULL);
3691 OMX_PRMGR4(pComponentPrivate->dbg, "Error returned from destroy ResourceManagerProxy thread\n");
3694 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingH263) {
3695 eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_FreeResource, OMX_H263_Decode_COMPONENT, 0, VIDDEC_MEMUSAGE, NULL);
3697 OMX_PRMGR4(pComponentPrivate->dbg, "Error returned from destroy ResourceManagerProxy thread\n");
3700 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG2) {
3701 eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_FreeResource, OMX_MPEG2_Decode_COMPONENT, 0, VIDDEC_MEMUSAGE, NULL);
3703 OMX_PRMGR4(pComponentPrivate->dbg, "Error returned from destroy ResourceManagerProxy thread\n");
3708 eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_FreeResource, OMX_MPEG4_Decode_COMPONENT, 0, VIDDEC_MEMUSAGE, NULL);
3710 OMX_PRMGR4(pComponentPrivate->dbg, "Error returned from destroy ResourceManagerProxy thread\n");
3718 pComponentPrivate->eRMProxyState = VidDec_RMPROXY_State_Load;
3720 if(pComponentPrivate->eRMProxyState != VidDec_RMPROXY_State_Unload){
3723 OMX_PRMGR4(pComponentPrivate->dbg, "Error returned from destroy ResourceManagerProxy thread\n");
3725 pComponentPrivate->eRMProxyState = VidDec_RMPROXY_State_Unload;
3729 pComponentPrivate->eState = OMX_StateInvalid;
3730 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
3731 pComponentPrivate->pHandle->pApplicationPrivate,
3736 OMX_PRSTATE4(pComponentPrivate->dbg, "Incorrect State Transition 0x%x\n", eError);
3741 pComponentPrivate->eState = OMX_StateInvalid;
3742 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
3743 pComponentPrivate->pHandle->pApplicationPrivate,
3748 OMX_PRSTATE4(pComponentPrivate->dbg, "Incorrect State Transition 0x%x\n", eError);
3749 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
3750 pComponentPrivate->pHandle->pApplicationPrivate,
3753 pComponentPrivate->eState,
3759 OMX_PRSTATE2(pComponentPrivate->dbg, "Transitioning to OMX_StateWaitForResources C 0x%x N 0x%lx\n",pComponentPrivate->eState, nParam1);
3760 if (pComponentPrivate->eState == OMX_StateWaitForResources) {
3762 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
3763 pComponentPrivate->pHandle->pApplicationPrivate,
3768 OMX_PRSTATE4(pComponentPrivate->dbg, "Same State 0x%x\n", eError);
3770 else if (pComponentPrivate->eState == OMX_StateLoaded) {
3773 pComponentPrivate->bIsPaused = 0;
3774 pComponentPrivate->eState = OMX_StateWaitForResources;
3775 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
3776 pComponentPrivate->pHandle->pApplicationPrivate,
3779 pComponentPrivate->eState,
3784 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
3785 pComponentPrivate->pHandle->pApplicationPrivate,
3790 OMX_PRSTATE4(pComponentPrivate->dbg, "Incorrect State Transition 0x%x\n", eError);
3796 OMX_PRSTATE2(pComponentPrivate->dbg, "Transitioning to OMX_StateMax C 0x%x N 0x%lx\n",pComponentPrivate->eState, nParam1);
3798 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
3799 pComponentPrivate->pHandle->pApplicationPrivate,
3804 OMX_PRSTATE4(pComponentPrivate->dbg, "Incorrect State Transition 0x%x\n", eError);
3807 OMX_PRSTATE2(pComponentPrivate->dbg, "Transitioning to default C 0x%x N 0x%lx\n",pComponentPrivate->eState, nParam1);
3809 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
3810 pComponentPrivate->pHandle->pApplicationPrivate,
3815 OMX_PRSTATE4(pComponentPrivate->dbg, "Incorrect State Transition 0x%x\n", eError);
3822 OMX_PRINT1(pComponentPrivate->dbg, "---EXITING(0x%x)\n",eError);
3832 OMX_ERRORTYPE VIDDEC_HandleFreeOutputBufferFromApp(VIDDEC_COMPONENT_PRIVATE *pComponentPrivate)
3840 OMX_PRBUFFER1(pComponentPrivate->dbg, "+++ENTERING\n");
3841 OMX_PRBUFFER1(pComponentPrivate->dbg, "pComponentPrivate 0x%p\n", pComponentPrivate);
3842 size_out_buf = (OMX_U32)pComponentPrivate->pOutPortDef->nBufferSize;
3843 pLcmlHandle = (LCML_DSP_INTERFACE*)(pComponentPrivate->pLCML);
3844 ret = read(pComponentPrivate->free_outBuf_Q[0], &pBuffHead, sizeof(pBuffHead));
3848 OMX_PRCOMM4(pComponentPrivate->dbg, "Error while reading from the pipe\n");
3853 eError = DecrementCount (&(pComponentPrivate->nCountOutputBFromApp), &(pComponentPrivate->mutexOutputBFromApp));
3857 OMX_PRBUFFER1(pComponentPrivate->dbg, "pBuffHead 0x%p eExecuteToIdle 0x%x\n", pBuffHead, pComponentPrivate->eExecuteToIdle);
3860 if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload &&
3861 pComponentPrivate->eLCMLState != VidDec_LCML_State_Destroy &&
3862 pComponentPrivate->pLCML != NULL) {
3864 if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4 ||
3865 pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingH263) {
3868 if (pComponentPrivate->eMBErrorReport.bEnabled) {
3875 if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC) {
3878 if (pComponentPrivate->eMBErrorReport.bEnabled) {
3887 OMX_PRBUFFER1(pComponentPrivate->dbg, "eBufferOwner 0x%x\n", pBufferPrivate->eBufferOwner);
3890 PERF_SendingFrame(pComponentPrivate->pPERFcomp,
3896 OMX_PRDSP1(pComponentPrivate->dbg, "LCML_QueueBuffer(OUTPUT)\n");
3906 OMX_PRDSP4(pComponentPrivate->dbg, "LCML_QueueBuffer 0x%x\n", eError);
3917 OMX_PRBUFFER2(pComponentPrivate->dbg, "null element *************n\n");
3921 OMX_PRBUFFER1(pComponentPrivate->dbg, "---EXITING(0x%x)\n",eError);
4562 OMX_ERRORTYPE VIDDEC_ParseVideo_H264(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate,
4608 OMX_PRINT2(pComponentPrivate->dbg, "Setting bConfigBufferCompleteAVC = OMX_FALSE");
4609 pComponentPrivate->bConfigBufferCompleteAVC = OMX_FALSE;
4611 if(pComponentPrivate->pInternalConfigBufferAVC == NULL){
4612 pComponentPrivate->pInternalConfigBufferAVC = malloc(pComponentPrivate->pInPortDef->nBufferSize);
4613 if(pComponentPrivate->pInternalConfigBufferAVC == NULL){
4619 if(pComponentPrivate->pInPortDef->nBufferSize >= pComponentPrivate->nInternalConfigBufferFilledAVC + pBuffHead->nFilledLen){
4621 if(memcpy((OMX_U8*)(pComponentPrivate->pInternalConfigBufferAVC + pComponentPrivate->nInternalConfigBufferFilledAVC),
4633 pComponentPrivate->nInternalConfigBufferFilledAVC += pBuffHead->nFilledLen;
4639 OMX_PRINT2(pComponentPrivate->dbg, "Setting bConfigBufferCompleteAVC = OMX_TRUE");
4640 pComponentPrivate->bConfigBufferCompleteAVC = OMX_TRUE;
4642 if(pComponentPrivate->pInternalConfigBufferAVC != NULL){
4644 if(pComponentPrivate->pInPortDef->nBufferSize >=
4645 pComponentPrivate->nInternalConfigBufferFilledAVC + pBuffHead->nFilledLen){
4647 if(memcpy((OMX_U8*)(pBuffHead->pBuffer + pComponentPrivate->nInternalConfigBufferFilledAVC),
4655 pComponentPrivate->pInternalConfigBufferAVC,
4656 pComponentPrivate->nInternalConfigBufferFilledAVC) == NULL){
4667 pBuffHead->nFilledLen = pComponentPrivate->nInternalConfigBufferFilledAVC + pBuffHead->nFilledLen;
4669 if (pComponentPrivate->pInternalConfigBufferAVC != NULL)
4670 free(pComponentPrivate->pInternalConfigBufferAVC);
4672 pComponentPrivate->pInternalConfigBufferAVC = NULL;
4673 pComponentPrivate->nInternalConfigBufferFilledAVC = 0;
4743 OMX_PRINT2(pComponentPrivate->dbg, "nal_unit_type does not specify parameter information need to look for next startcode\n");
4753 if (pComponentPrivate->H264BitStreamFormat == 1) {
4754 if (pComponentPrivate->bIsNALBigEndian) {
4761 else if (pComponentPrivate->H264BitStreamFormat == 2) {
4762 if (pComponentPrivate>bIsNALBigEndian) {
4769 else if (pComponentPrivate->H264BitStreamFormat == 4){
4770 if (pComponentPrivate->bIsNALBigEndian) {
4814 OMX_PRINT2(pComponentPrivate->dbg, "discard emulation prev byte\n");
4995 OMX_ERRORTYPE VIDDEC_ParseHeader(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate, OMX_BUFFERHEADERTYPE *pBuffHead)
5012 OMX_PRINT1(pComponentPrivate->dbg, "IN\n");
5013 if(!pComponentPrivate) {
5017 bInPortSettingsChanged = pComponentPrivate->bInPortSettingsChanged;
5018 bOutPortSettingsChanged = pComponentPrivate->bOutPortSettingsChanged;
5020 nOutPortActualAllocLen = pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->pBufferPrivate[0]->pBufferHdr->nAllocLen;
5022 OMX_PRINT1(pComponentPrivate->dbg, "pBuffHead %x, Original resolution IN %dx%d : OUT %dx%d\n",
5024 (unsigned int)pComponentPrivate->pInPortDef->format.video.nFrameWidth,
5025 (unsigned int)pComponentPrivate->pInPortDef->format.video.nFrameHeight,
5026 (unsigned int)pComponentPrivate->pOutPortDef->format.video.nFrameWidth,
5027 (unsigned int)pComponentPrivate->pOutPortDef->format.video.nFrameHeight);
5030 if( pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC) {
5031 eError = VIDDEC_ParseVideo_H264( pComponentPrivate, pBuffHead, &nWidth, &nHeight,
5032 &nCropWidth, &nCropHeight, pComponentPrivate->H264BitStreamFormat);
5035 if(pComponentPrivate->bConfigBufferCompleteAVC == OMX_FALSE &&
5036 pComponentPrivate->ProcessMode == 0 && pComponentPrivate->H264BitStreamFormat == 0){
5040 VIDDEC_EmptyBufferDone(pComponentPrivate, pBuffHead);
5047 else if( pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4 ||
5048 pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingH263) {
5053 else if( pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG2) {
5056 else if( pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingWMV) {
5057 if (pComponentPrivate->nWMVFileType == VIDDEC_WMV_ELEMSTREAM) {
5076 if(pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4 ||
5077 pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingH263){
5090 if (pComponentPrivate->pInPortDef->format.video.nFrameWidth != nWidth ||
5091 pComponentPrivate->pInPortDef->format.video.nFrameHeight != nHeight) {
5093 pComponentPrivate->pInPortDef->format.video.nFrameHeight = 576;
5094 pComponentPrivate->pInPortDef->format.video.nFrameWidth = 720;
5099 pComponentPrivate->pInPortDef->format.video.nFrameHeight = 576;
5100 pComponentPrivate->pInPortDef->format.video.nFrameWidth = 720;
5104 pComponentPrivate->pInPortDef->format.video.nFrameWidth = nPadWidth;
5105 pComponentPrivate->pInPortDef->format.video.nFrameHeight = nPadHeight;
5109 OMX_PRINT1(pComponentPrivate->dbg, "Input port setting change, Force reload component !!!!!!\n");
5116 if(pComponentPrivate->pInPortDef->format.video.eCompressionFormat != OMX_VIDEO_CodingAVC &&
5117 pComponentPrivate->pInPortDef->format.video.eCompressionFormat != OMX_VIDEO_CodingMPEG4 &&
5118 pComponentPrivate->pInPortDef->format.video.eCompressionFormat != OMX_VIDEO_CodingH263){
5119 if(pComponentPrivate->pOutPortDef->format.video.nFrameWidth != nWidth ||
5120 pComponentPrivate->pOutPortDef->format.video.nFrameHeight != nHeight) {
5122 pComponentPrivate->pOutPortDef->format.video.nFrameWidth = nPadWidth;
5123 pComponentPrivate->pOutPortDef->format.video.nFrameHeight = nPadHeight;
5125 OMX_PRINT1(pComponentPrivate->dbg, "Resolution: default new: %dx%d\n", nPadWidth, nPadHeight);
5128 else if(pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4 ||
5129 pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingH263){
5130 if(pComponentPrivate->pOutPortDef->format.video.nFrameWidth != nWidth ||
5131 pComponentPrivate->pOutPortDef->format.video.nFrameHeight != nHeight) {
5133 pComponentPrivate->pOutPortDef->format.video.nFrameWidth = nWidth;
5134 pComponentPrivate->pOutPortDef->format.video.nFrameHeight = nHeight;
5136 OMX_PRINT1(pComponentPrivate->dbg, "Resolution: new MPEG4: %dx%d\n", nWidth, nHeight);
5149 if(pComponentPrivate->pOutPortDef->format.video.nFrameWidth != nCroppedWidth ||
5150 pComponentPrivate->pOutPortDef->format.video.nFrameHeight != nCroppedHeight) {
5152 pComponentPrivate->pOutPortDef->format.video.nFrameWidth = nCroppedWidth;
5153 pComponentPrivate->pOutPortDef->format.video.nFrameHeight = nCroppedHeight;
5155 OMX_PRINT1(pComponentPrivate->dbg, "Resolution: AVC new: %dx%d \n", nCroppedWidth, nCroppedHeight);
5161 nOutMinBufferSize = pComponentPrivate->pOutPortDef->format.video.nFrameWidth *
5162 pComponentPrivate->pOutPortDef->format.video.nFrameHeight *
5163 ((pComponentPrivate->pOutPortFormat->eColorFormat == VIDDEC_COLORFORMAT420) ? VIDDEC_FACTORFORMAT420 : VIDDEC_FACTORFORMAT422);
5166 pComponentPrivate->pOutPortDef->nBufferSize = nOutMinBufferSize;
5168 OMX_PRINT1(pComponentPrivate->dbg, "NEW output BUFFSIZE:0x%x \n", nOutMinBufferSize);
5172 OMX_PRINT1(pComponentPrivate->dbg, "pBuffHead %x, Resolution after parser: IN %dx%d : OUT %dx%d\n",
5174 (unsigned int)pComponentPrivate->pInPortDef->format.video.nFrameWidth,
5175 (unsigned int)pComponentPrivate->pInPortDef->format.video.nFrameHeight,
5176 (unsigned int)pComponentPrivate->pOutPortDef->format.video.nFrameWidth,
5177 (unsigned int)pComponentPrivate->pOutPortDef->format.video.nFrameHeight);
5179 pComponentPrivate->bInPortSettingsChanged |= bInPortSettingsChanged;
5180 pComponentPrivate->bOutPortSettingsChanged |= bOutPortSettingsChanged;
5183 OMX_PRINT1(pComponentPrivate->dbg, "bDynamicConfigurationInProgress = OMX_TRUE\n");
5184 pComponentPrivate->bDynamicConfigurationInProgress = OMX_TRUE;
5187 OMX_PRBUFFER2(pComponentPrivate->dbg, "sending OMX_EventPortSettingsChanged to both ports\n");
5192 VIDDEC_PTHREAD_MUTEX_LOCK(pComponentPrivate->sDynConfigMutex);
5195 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
5196 pComponentPrivate->pHandle->pApplicationPrivate,
5202 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
5203 pComponentPrivate->pHandle->pApplicationPrivate,
5210 VIDDEC_PTHREAD_MUTEX_WAIT(pComponentPrivate->sDynConfigMutex);
5216 OMX_PRBUFFER2(pComponentPrivate->dbg, "sending OMX_EventPortSettingsChanged SINGLE port\n");
5217 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
5218 pComponentPrivate->pHandle->pApplicationPrivate,
5231 if (pComponentPrivate)
5232 OMX_PRINT1(pComponentPrivate->dbg, "OUT\n");
5243 OMX_ERRORTYPE VIDDEC_HandleDataBuf_FromApp(VIDDEC_COMPONENT_PRIVATE *pComponentPrivate)
5261 OMX_PRBUFFER1(pComponentPrivate->dbg, "+++ENTERING\n");
5262 OMX_PRBUFFER1(pComponentPrivate->dbg, "pComponentPrivate 0x%p iEndofInputSent 0x%x\n", pComponentPrivate, pComponentPrivate->iEndofInputSent);
5263 inpBufSize = pComponentPrivate->pInPortDef->nBufferSize;
5264 pLcmlHandle = (LCML_DSP_INTERFACE*)pComponentPrivate->pLCML;
5265 ret = read(pComponentPrivate->filled_inpBuf_Q[0], &(pBuffHead), sizeof(pBuffHead));
5267 OMX_PRCOMM4(pComponentPrivate->dbg, "Error while reading from the pipe\n");
5271 eError = DecrementCount (&(pComponentPrivate->nCountInputBFromApp), &(pComponentPrivate->mutexInputBFromApp));
5275 if( pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingWMV &&
5276 pComponentPrivate->ProcessMode == 0 &&
5279 if (pComponentPrivate->bFirstHeader == OMX_FALSE) {
5289 if((nWidth != (OMX_U32)pComponentPrivate->pOutPortDef->format.video.nFrameWidth) ||
5290 (nHeight != (OMX_U32)pComponentPrivate->pOutPortDef->format.video.nFrameHeight)){
5291 pComponentPrivate->pOutPortDef->format.video.nFrameWidth = nWidth;
5292 pComponentPrivate->pOutPortDef->format.video.nFrameHeight = nHeight;
5293 pComponentPrivate->bOutPortSettingsChanged = OMX_TRUE;
5301 OMX_PRINT2(pComponentPrivate->dbg, "Compressions: WMV1=%lu, WMV2=%lu, WMV3=%lu, WVC1=%lu. Actual=%lu\n",
5303 if(pComponentPrivate->nWMVFileType == VIDDEC_WMV_RCVSTREAM && nActualCompression == FOURCC_WVC1){
5304 pComponentPrivate->nWMVFileType = VIDDEC_WMV_ELEMSTREAM;
5307 eError = VIDDEC_Set_SN_StreamType(pComponentPrivate);
5321 if (pComponentPrivate->nWMVFileType == VIDDEC_WMV_RCVSTREAM) {
5322 if(pComponentPrivate->pUalgParams == NULL) {
5324 OMX_MALLOC_STRUCT_SIZED(pComponentPrivate->pUalgParams, WMV9DEC_UALGInputParam,
5326 pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel1]);
5327 pTemp = (OMX_U8*)(pComponentPrivate->pUalgParams);
5329 pComponentPrivate->pUalgParams = (OMX_PTR*)pTemp;
5332 if (pComponentPrivate->bIsNALBigEndian) {
5333 pComponentPrivate->pBufferRCV.sStructRCV.nStructData = (OMX_U32)pCSD[0] << 24 |
5339 pComponentPrivate->pBufferRCV.sStructRCV.nStructData = (OMX_U32)pCSD[0] << 0 |
5345 ((WMV9DEC_UALGInputParam*)pComponentPrivate->pUalgParams)->lBuffCount = ++pComponentPrivate->frameCounter;
5346 pUalgInpParams = pComponentPrivate->pUalgParams;
5351 (OMX_U8*)&pComponentPrivate->pBufferRCV.pBuffer,
5356 (OMX_U8*)&pComponentPrivate->pBufferTemp);
5357 OMX_PRBUFFER1(pComponentPrivate->dbg, "Returning First Input Buffer to test application\n");
5360 OMX_PRBUFFER1(pComponentPrivate->dbg, "eBufferOwner 0x%x\n", pBufferPrivate->eBufferOwner);
5362 PERF_SendingFrame(pComponentPrivate->pPERFcomp,
5367 VIDDEC_EmptyBufferDone(pComponentPrivate, pBuffHead);
5368 pComponentPrivate->bFirstHeader = OMX_TRUE;
5373 if (pComponentPrivate->pCodecData == NULL ||
5382 if (pComponentPrivate->pCodecData != NULL) {
5383 free(pComponentPrivate->pCodecData);
5384 pComponentPrivate->pCodecData = NULL;
5387 pComponentPrivate->pCodecData = malloc (pBuffHead->nFilledLen);
5389 memcpy (pComponentPrivate->pCodecData, pBuffHead->pBuffer, pBuffHead->nFilledLen);
5391 memcpy (pComponentPrivate->pCodecData, pBuffHead->pBuffer + pBuffHead->nOffset, pBuffHead->nFilledLen);
5393 pComponentPrivate->nCodecDataSize = pBuffHead->nFilledLen;
5394 if(pComponentPrivate->nCodecDataSize > VIDDEC_WMV_BUFFER_OFFSET){
5395 OMX_ERROR4(pComponentPrivate->dbg, "Insufficient space in buffer pbuffer %p - nCodecDataSize %u\n",
5396 (void *)pBuffHead->pBuffer,pComponentPrivate->nCodecDataSize);
5401 eError = VIDDEC_ParseHeader( pComponentPrivate, pBuffHead);
5403 OMX_PRBUFFER1(pComponentPrivate->dbg, "Returning First Input Buffer to test application %x\n",eError);
5406 OMX_PRBUFFER1(pComponentPrivate->dbg, "eBufferOwner 0x%x\n", pBufferPrivate->eBufferOwner);
5408 PERF_SendingFrame(pComponentPrivate->pPERFcomp,
5414 OMX_PRBUFFER1(pComponentPrivate->dbg, "restoring buffer pointer 0x%p >> pBuffer 0x%p\n",
5420 VIDDEC_EmptyBufferDone(pComponentPrivate, pBuffHead);
5425 pComponentPrivate->bFirstHeader = OMX_TRUE;
5426 OMX_WMV_INSERT_CODEC_DATA(pBuffHead, pComponentPrivate);
5433 if (pComponentPrivate->bFirstHeader == OMX_FALSE) {
5434 pComponentPrivate->bFirstHeader = OMX_TRUE;
5435 eError = VIDDEC_ParseHeader(pComponentPrivate, pBuffHead);
5437 OMX_PRBUFFER1(pComponentPrivate->dbg, "Returning First Input Buffer to test application\n");
5438 pComponentPrivate->bFirstHeader = OMX_TRUE;
5441 OMX_PRBUFFER1(pComponentPrivate->dbg, "eBufferOwner 0x%x\n", pBufferPrivate->eBufferOwner);
5443 PERF_SendingFrame(pComponentPrivate->pPERFcomp,
5449 OMX_PRBUFFER1(pComponentPrivate->dbg, "restoring buffer pointer 0x%p >> pBuffer 0x%p\n",
5455 VIDDEC_EmptyBufferDone(pComponentPrivate, pBuffHead);
5466 else if (pComponentPrivate->nWMVFileType == VIDDEC_WMV_ELEMSTREAM) {
5487 OMX_ERROR4(pComponentPrivate->dbg, "Insufficient space in buffer pbuffer %p - nOffset %lx\n",
5503 OMX_PRBUFFER1(pComponentPrivate->dbg, "pTempBuffer %p - pBuffHead->pBuffer %p - pBuffHead->nOffset %lx\n",
5508 OMX_PRBUFFER1(pComponentPrivate->dbg, "incorrect path %lu\n",pBuffHead->nOffset);
5511 if (pComponentPrivate->bFirstHeader == OMX_FALSE) {
5512 pComponentPrivate->bFirstHeader = OMX_TRUE;
5513 eError = VIDDEC_ParseHeader(pComponentPrivate, pBuffHead);
5515 OMX_PRBUFFER1(pComponentPrivate->dbg, "Returning First Input Buffer to test application\n");
5516 pComponentPrivate->bFirstHeader = OMX_TRUE;
5519 OMX_PRBUFFER1(pComponentPrivate->dbg, "eBufferOwner 0x%x\n", pBufferPrivate->eBufferOwner);
5521 PERF_SendingFrame(pComponentPrivate->pPERFcomp,
5527 OMX_PRBUFFER1(pComponentPrivate->dbg, "restoring buffer pointer 0x%p >> pBuffer 0x%p\n",
5533 VIDDEC_EmptyBufferDone(pComponentPrivate, pBuffHead);
5545 if((((pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC) ||
5546 pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4 ||
5547 pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG2 ||
5548 pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingH263) ||
5549 (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingWMV &&
5550 pComponentPrivate->ProcessMode == 1)) &&
5551 pComponentPrivate->bParserEnabled &&
5552 pComponentPrivate->bFirstHeader == OMX_FALSE) {
5553 pComponentPrivate->bFirstHeader = OMX_TRUE;
5559 eError = VIDDEC_ParseHeader( pComponentPrivate, pBuffHead);
5568 ((pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4 ||
5569 pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingH263) &&
5570 pComponentPrivate->ProcessMode == 0)) {
5574 OMX_PRINT1(pComponentPrivate->dbg,"save 1st ccd buffer - pBuffhead->nFilledLen = %d\n", pBuffHead->nFilledLen);
5575 eError = VIDDEC_SaveBuffer(pComponentPrivate, pBuffHead);
5580 if (pComponentPrivate->ProcessMode == 0 && pComponentPrivate->H264BitStreamFormat > 0) {
5581 pComponentPrivate->aCCDsize[pComponentPrivate->nCCDcnt++] = pBuffHead->nFilledLen;
5587 OMX_PRBUFFER1(pComponentPrivate->dbg, "eBufferOwner 0x%x\n", pBufferPrivate->eBufferOwner);
5589 PERF_SendingFrame(pComponentPrivate->pPERFcomp,
5595 VIDDEC_EmptyBufferDone(pComponentPrivate, pBuffHead);
5602 if(pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC &&
5603 pComponentPrivate->bConfigBufferCompleteAVC == FALSE){
5605 pComponentPrivate->bFirstHeader = OMX_FALSE;
5606 OMX_PRINT1(pComponentPrivate->dbg, "AVC: bConfigBufferCompleateAVC == FALSE!");
5615 if (pComponentPrivate->nInCmdMarkBufIndex != pComponentPrivate->nOutCmdMarkBufIndex) {
5616 pComponentPrivate->arrMarkBufIndex[pComponentPrivate->nInMarkBufIndex].hMarkTargetComponent = pComponentPrivate->arrCmdMarkBufIndex[pComponentPrivate->nOutCmdMarkBufIndex].hMarkTargetComponent;
5617 pComponentPrivate->arrMarkBufIndex[pComponentPrivate->nInMarkBufIndex].pMarkData = pComponentPrivate->arrCmdMarkBufIndex[pComponentPrivate->nOutCmdMarkBufIndex].pMarkData;
5618 pComponentPrivate->nOutCmdMarkBufIndex++;
5619 pComponentPrivate->nOutCmdMarkBufIndex %= VIDDEC_MAX_QUEUE_SIZE;
5620 pComponentPrivate->nInMarkBufIndex++;
5621 pComponentPrivate->nInMarkBufIndex %= VIDDEC_MAX_QUEUE_SIZE;
5624 pComponentPrivate->arrMarkBufIndex[pComponentPrivate->nInMarkBufIndex].hMarkTargetComponent = pBuffHead->hMarkTargetComponent;
5625 pComponentPrivate->arrMarkBufIndex[pComponentPrivate->nInMarkBufIndex].pMarkData = pBuffHead->pMarkData;
5626 pComponentPrivate->nInMarkBufIndex++;
5627 pComponentPrivate->nInMarkBufIndex %= VIDDEC_MAX_QUEUE_SIZE;
5630 OMX_PRBUFFER1(pComponentPrivate->dbg, "pBuffHead 0x%p eExecuteToIdle 0x%x\n", pBuffHead,pComponentPrivate->eExecuteToIdle);
5631 OMX_PRBUFFER1(pComponentPrivate->dbg, "nFilledLen 0x%lx nFlags 0x%lx\n", pBuffHead->nFilledLen,pBuffHead->nFlags);
5635 OMX_PRBUFFER2(pComponentPrivate->dbg, "End of Input EOS, nFlags=0x%x nFilledLen 0x%lx\n", pBuffHead->nFlags, pBuffHead->nFilledLen);
5637 if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC) {
5640 ((H264VDEC_UALGInputParam *)pUalgInpParams)->lBuffCount = ++pComponentPrivate->frameCounter;
5646 if (pComponentPrivate->H264BitStreamFormat) {
5658 while (pBuffHead->nFilledLen > length_pos+pComponentPrivate->H264BitStreamFormat) {
5659 if (pComponentPrivate->H264BitStreamFormat == 1)
5660 if (pComponentPrivate->bIsNALBigEndian) {
5666 else if (pComponentPrivate->H264BitStreamFormat == 2)
5667 if (pComponentPrivate->bIsNALBigEndian) {
5673 else if (pComponentPrivate->H264BitStreamFormat == 4){
5674 if (pComponentPrivate->bIsNALBigEndian) {
5685 length_pos += pComponentPrivate->H264BitStreamFormat;
5704 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingWMV) {
5707 ((WMV9DEC_UALGInputParam*)pUalgInpParams)->lBuffCount = ++pComponentPrivate->frameCounter;
5711 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4 ||
5712 pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingH263) {
5715 ((MP4VD_GPP_SN_UALGInputParams*)pUalgInpParams)->nBuffCount = ++pComponentPrivate->frameCounter;
5721 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG2) {
5724 ((MP2VDEC_UALGInputParam*)pUalgInpParams)->lBuffCount = ++pComponentPrivate->frameCounter;
5732 ((SPARKVD_GPP_SN_UALGInputParams*)pUalgInpParams)->lBuffCount = ++pComponentPrivate->frameCounter;
5740 OMX_PRBUFFER4(pComponentPrivate->dbg, "VIDDEC_HandleDataBuf_FromApp 0x%x\n", eError);
5744 if (pComponentPrivate->ProcessMode == 0) {
5747 ucIndex = VIDDEC_CircBuf_GetHead(pComponentPrivate,
5750 pComponentPrivate->aBufferFlags[ucIndex].nTimeStamp = pBuffHead->nTimeStamp;
5751 pComponentPrivate->aBufferFlags[ucIndex].nTickCount = pBuffHead->nTickCount;
5753 pComponentPrivate->aBufferFlags[ucIndex].nFlags = pBuffHead->nFlags;
5754 pBufferFlags = &pComponentPrivate->aBufferFlags[ucIndex];
5755 VIDDEC_CircBuf_Add(pComponentPrivate,
5761 pComponentPrivate->arrBufIndex[pComponentPrivate->nInBufIndex] = pBuffHead->nTimeStamp;
5762 pComponentPrivate->nInBufIndex++;
5763 pComponentPrivate->nInBufIndex %= VIDDEC_MAX_QUEUE_SIZE;
5765 OMX_PRBUFFER1(pComponentPrivate->dbg, "pBuffHead->nTimeStamp %lld\n", pBuffHead->nTimeStamp);
5768 PERF_SendingFrame(pComponentPrivate->pPERFcomp,
5774 if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload &&
5775 pComponentPrivate->eLCMLState != VidDec_LCML_State_Destroy &&
5776 pComponentPrivate->pLCML != NULL){
5781 PERF_SendingFrame(pComponentPrivate->pPERFcomp,
5787 if(pComponentPrivate->bDynamicConfigurationInProgress){
5790 OMX_PRBUFFER1(pComponentPrivate->dbg, "eBufferOwner 0x%x\n", pBufferPrivate->eBufferOwner);
5792 OMX_PRBUFFER2(pComponentPrivate->dbg, "Sending buffer back to client pBuffer=%p\n", pBuffHead->pBuffer);
5793 VIDDEC_EmptyBufferDone(pComponentPrivate, pBuffHead);
5797 OMX_PRDSP1(pComponentPrivate->dbg, "Sending EOS Filled eBufferOwner 0x%x\n", pBufferPrivate->eBufferOwner);
5798 OMX_PRDSP2(pComponentPrivate->dbg, "LCML_QueueBuffer(INPUT)\n");
5801 ((pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingWMV) ? EMMCodecInputBufferMapBufLen : EMMCodecInputBuffer),
5809 OMX_PRDSP4(pComponentPrivate->dbg, "LCML_QueueBuffer(INPUT):OMX_BUFFERFLAG_EOS, Error 0x%x\n", eError);
5821 OMX_PRBUFFER1(pComponentPrivate->dbg, "eBufferOwner 0x%x\n", pBufferPrivate->eBufferOwner);
5822 eError = IncrementCount (&(pComponentPrivate->nCountInputBFromDsp), &(pComponentPrivate->mutexInputBFromDSP));
5826 ret = write(pComponentPrivate->free_inpBuf_Q[1], &pBuffHead, sizeof(pBuffHead));
5828 OMX_PRCOMM4(pComponentPrivate->dbg, "writing to the input pipe %x (%d)\n", OMX_ErrorInsufficientResources,ret);
5830 DecrementCount (&(pComponentPrivate->nCountInputBFromDsp), &(pComponentPrivate->mutexInputBFromDSP));
5831 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
5832 pComponentPrivate->pHandle->pApplicationPrivate,
5840 if(pComponentPrivate->iEndofInputSent == 0){
5841 //pComponentPrivate->iEndofInputSent = 1;
5842 OMX_PRBUFFER1(pComponentPrivate->dbg, "Sending EOS Empty eBufferOwner 0x%x\n", pBufferPrivate->eBufferOwner);
5843 if(pComponentPrivate->eFirstBuffer.bSaveFirstBuffer == OMX_FALSE){
5844 OMX_MEMFREE_STRUCT_DSPALIGN(pComponentPrivate->pUalgParams,OMX_PTR);
5847 if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC) {
5848 if(pComponentPrivate->pUalgParams == NULL){
5850 OMX_MALLOC_STRUCT_SIZED(pComponentPrivate->pUalgParams,
5853 pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel1]);
5854 pTemp = (OMX_U8*)(pComponentPrivate->pUalgParams);
5856 pComponentPrivate->pUalgParams = (OMX_PTR*)pTemp;
5859 ((H264VDEC_UALGInputParam *)pComponentPrivate->pUalgParams)->lBuffCount = -1;
5860 OMX_PRBUFFER1(pComponentPrivate->dbg, "lBuffCount 0x%lx\n",
5861 ((H264VDEC_UALGInputParam *)pComponentPrivate->pUalgParams)->lBuffCount);
5863 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingWMV) {
5864 if(pComponentPrivate->pUalgParams == NULL){
5866 OMX_MALLOC_STRUCT_SIZED(pComponentPrivate->pUalgParams,
5869 pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel1]);
5870 pTemp = (OMX_U8*)(pComponentPrivate->pUalgParams);
5872 pComponentPrivate->pUalgParams = (OMX_PTR*)pTemp;
5875 ((WMV9DEC_UALGInputParam*)pComponentPrivate->pUalgParams)->lBuffCount = -1;
5876 OMX_PRBUFFER1(pComponentPrivate->dbg, "lBuffCount 0x%lx\n",
5877 ((WMV9DEC_UALGInputParam*)pComponentPrivate->pUalgParams)->lBuffCount);
5879 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4 ||
5880 pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingH263) {
5881 if(pComponentPrivate->pUalgParams == NULL){
5883 OMX_MALLOC_STRUCT_SIZED(pComponentPrivate->pUalgParams,
5886 pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel1]);
5887 pTemp = (OMX_U8*)(pComponentPrivate->pUalgParams);
5889 pComponentPrivate->pUalgParams = (OMX_PTR*)pTemp;
5892 ((MP4VD_GPP_SN_UALGInputParams*)pComponentPrivate->pUalgParams)->nBuffCount = -1;
5893 ((MP4VD_GPP_SN_UALGInputParams*)pComponentPrivate->pUalgParams)->uRingIOBlocksize = 0;
5895 ((MP4VD_GPP_SN_UALGInputParams*)pComponentPrivate->pUalgParams)->nPerformMode = 0;
5896 OMX_PRBUFFER1(pComponentPrivate->dbg, "lBuffCount 0x%lx\n",
5897 ((MP4VD_GPP_SN_UALGInputParams*)pComponentPrivate->pUalgParams)->nBuffCount);
5899 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG2) {
5900 if(pComponentPrivate->pUalgParams == NULL){
5902 OMX_MALLOC_STRUCT_SIZED(pComponentPrivate->pUalgParams,
5905 pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel1]);
5906 pTemp = (OMX_U8*)(pComponentPrivate->pUalgParams);
5908 pComponentPrivate->pUalgParams = (OMX_PTR*)pTemp;
5911 ((MP2VDEC_UALGInputParam*)pComponentPrivate->pUalgParams)->lBuffCount = -1;
5912 OMX_PRBUFFER1(pComponentPrivate->dbg, "lBuffCount 0x%lx\n",
5913 ((MP2VDEC_UALGInputParam*)pComponentPrivate->pUalgParams)->lBuffCount);
5917 if(pComponentPrivate->pUalgParams == NULL){
5919 OMX_MALLOC_STRUCT_SIZED(pComponentPrivate->pUalgParams,
5922 pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel1]);
5923 pTemp = (OMX_U8*)(pComponentPrivate->pUalgParams);
5925 pComponentPrivate->pUalgParams = (OMX_PTR*)pTemp;
5928 ((SPARKVD_GPP_SN_UALGInputParams*)pComponentPrivate->pUalgParams)->lBuffCount = -1;
5929 ((SPARKVD_GPP_SN_UALGInputParams*)pComponentPrivate->pUalgParams)->nIsSparkInput = 1;
5930 OMX_PRBUFFER1(pComponentPrivate->dbg, "lBuffCount 0x%lx\n",
5931 ((SPARKVD_GPP_SN_UALGInputParams*)pComponentPrivate->pUalgParams)->lBuffCount);
5940 PERF_SendingFrame(pComponentPrivate->pPERFcomp,
5944 if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload &&
5945 pComponentPrivate->eLCMLState != VidDec_LCML_State_Destroy &&
5946 pComponentPrivate->pLCML != NULL){
5947 pComponentPrivate->pTempBuffHead.nFlags = 0;
5948 //pComponentPrivate->pTempBuffHead.nFlags |= OMX_BUFFERFLAG_EOS;
5949 pComponentPrivate->pTempBuffHead.nFilledLen = 0;
5950 pComponentPrivate->pTempBuffHead.pBuffer = NULL;
5953 PERF_SendingFrame(pComponentPrivate->pPERFcomp,
5959 if(pComponentPrivate->bDynamicConfigurationInProgress){
5962 OMX_PRBUFFER1(pComponentPrivate->dbg, "eBufferOwner 0x%x\n", pBufferPrivate->eBufferOwner);
5963 OMX_PRBUFFER2(pComponentPrivate->dbg, "Sending buffer back to client pBuffer=%p\n", pBuffHead->pBuffer);
5964 VIDDEC_EmptyBufferDone(pComponentPrivate, pBuffHead);
5968 OMX_PRDSP2(pComponentPrivate->dbg, "LCML_QueueBuffer(INPUT)\n");
5972 if(pComponentPrivate->eFirstBuffer.bSaveFirstBuffer){
5974 pComponentPrivate->firstBufferEos = OMX_TRUE;
5976 eError = VIDDEC_CopyBuffer(pComponentPrivate, pBuffHead);
5978 OMX_PRDSP4(pComponentPrivate->dbg, "VIDDEC_HandleDataBuf_FromApp: VIDDEC_CopyBuffer()= 0x%x\n", eError);
5986 ((pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingWMV) ? EMMCodecInputBufferMapBufLen : EMMCodecInputBuffer),
5990 (OMX_U8 *)pComponentPrivate->pUalgParams,
5994 OMX_PRDSP4(pComponentPrivate->dbg, "LCML_QueueBuffer EOS (0x%x)\n",eError);
6001 ((pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingWMV) ? EMMCodecInputBufferMapBufLen : EMMCodecInputBuffer),
6005 (OMX_U8 *)pComponentPrivate->pUalgParams,
6007 (OMX_PTR)&pComponentPrivate->pTempBuffHead);
6010 OMX_PRDSP4(pComponentPrivate->dbg, "LCML_QueueBuffer 1 (0x%x)\n",eError);
6022 pComponentPrivate->iEndofInputSent = 0;
6024 if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC) {
6027 ((H264VDEC_UALGInputParam *)pUalgInpParams)->lBuffCount = ++pComponentPrivate->frameCounter;
6028 if (pComponentPrivate->H264BitStreamFormat) {
6041 while (pBuffHead->nFilledLen > length_pos+pComponentPrivate->H264BitStreamFormat) {
6042 if (pComponentPrivate->H264BitStreamFormat == 1)
6043 if (pComponentPrivate->bIsNALBigEndian) {
6049 else if (pComponentPrivate->H264BitStreamFormat == 2)
6050 if (pComponentPrivate->bIsNALBigEndian) {
6056 else if (pComponentPrivate->H264BitStreamFormat == 4){
6057 if (pComponentPrivate->bIsNALBigEndian) {
6068 length_pos += pComponentPrivate->H264BitStreamFormat;
6088 OMX_PRINT1(pComponentPrivate->dbg,"nFlags = %x\n", pBuffHead->nFlags);
6089 OMX_PRINT1(pComponentPrivate->dbg,"copy previous codec config data to current ccd buffer\n");
6090 eError = VIDDEC_CopyBuffer(pComponentPrivate, pBuffHead);
6092 OMX_PRINT1(pComponentPrivate->dbg,"save current ccd buff - nFilledLen = %d\n", pBuffHead->nFilledLen);
6093 eError = VIDDEC_SaveBuffer(pComponentPrivate, pBuffHead);
6094 pComponentPrivate->aCCDsize[pComponentPrivate->nCCDcnt++] = pBuffHead->nFilledLen;
6096 OMX_PRINT1(pComponentPrivate->dbg,"send ccd buffer back to client\n");
6099 VIDDEC_EmptyBufferDone(pComponentPrivate, pBuffHead);
6143 OMX_PRINT1(pComponentPrivate->dbg,"nFlags = %x\n", pBuffHead->nFlags);
6144 OMX_PRINT1(pComponentPrivate->dbg,"off=%d,fl=%d,rem=%d,pad=%d,len=%d\n", off, fl, rem, pad, len);
6147 OMX_PRINT1(pComponentPrivate->dbg,"extradata marker -> 0x %x %x %x %x\n",
6161 OMX_PRINT1(pComponentPrivate->dbg,"numnalu -> 0x %x %x %x %x\n", ((OMX_U8*)(&numnalu))[3]
6167 OMX_PRINT1(pComponentPrivate->dbg,"nDataSize -> 0x %x %x %x %x\n", pBuffHead->pBuffer[len+19]
6172 OMX_PRINT1(pComponentPrivate->dbg,"first NALU len -> 0x %x %x %x %x\n", pBuffHead->pBuffer[len+23]
6182 OMX_PRINT1(pComponentPrivate->dbg,"numnalu = %d", numnalu);
6194 OMX_PRINT1(pComponentPrivate->dbg,"confirm ulNumOfNALU = %d\n", i);
6196 if (pComponentPrivate->bCopiedCCDBuffer == OMX_FALSE){
6197 pComponentPrivate->bCopiedCCDBuffer = OMX_TRUE;
6198 OMX_PRINT1(pComponentPrivate->dbg,"copy saved ccd buffer to data buffer\n");
6199 eError = VIDDEC_CopyBuffer(pComponentPrivate, pBuffHead);
6203 while (i < pComponentPrivate->nCCDcnt) {
6205 pParam->pNALUSizeArray[i] = pComponentPrivate->aCCDsize[i];
6208 pParam->pNALUSizeArray[i] = pComponentPrivate->aCCDsize[i] -
6209 pComponentPrivate->aCCDsize[i-1];
6212 OMX_PRINT1(pComponentPrivate->dbg,"aCCDsize[%d] = %d\n", i, pParam->pNALUSizeArray[i]);
6217 pBuffHead->nFilledLen = fl + pComponentPrivate->aCCDsize[i-1];
6219 OMX_PRINT1(pComponentPrivate->dbg,"new nFilledLen=%d; old fl=%d + aCCDsize=%d\n", pBuffHead->nFilledLen
6221 , pComponentPrivate->aCCDsize[i-1]);
6234 OMX_PRINT1(pComponentPrivate->dbg,"pParm->pNALUSizeArray[%d] = %d\n",j,pParam->pNALUSizeArray[j]);
6242 OMX_PRINT1(pComponentPrivate->dbg,"pParm->pNALUSizeArray[%d] = %d\n",j,pParam->pNALUSizeArray[j]);
6252 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingWMV) {
6255 ((WMV9DEC_UALGInputParam*)pUalgInpParams)->lBuffCount = ++pComponentPrivate->frameCounter;
6259 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4 ||
6260 pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingH263) {
6266 ((MP4VD_GPP_SN_UALGInputParams*)pUalgInpParams)->nBuffCount = ++pComponentPrivate->frameCounter;
6270 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG2) {
6273 ((MP2VDEC_UALGInputParam*)pUalgInpParams)->lBuffCount = ++pComponentPrivate->frameCounter;
6281 ((SPARKVD_GPP_SN_UALGInputParams*)pUalgInpParams)->lBuffCount = ++pComponentPrivate->frameCounter;
6289 OMX_PRBUFFER4(pComponentPrivate->dbg, "VIDDEC_HandleDataBuf_FromApp 0x%x\n", eError);
6293 if (pComponentPrivate->ProcessMode == 0) {
6297 ucIndex = VIDDEC_CircBuf_GetHead(pComponentPrivate,
6300 pComponentPrivate->aBufferFlags[ucIndex].nTimeStamp = pBuffHead->nTimeStamp;
6302 pComponentPrivate->aBufferFlags[ucIndex].nFlags = pBuffHead->nFlags;
6303 pComponentPrivate->aBufferFlags[ucIndex].nTickCount = pBuffHead->nTickCount;
6304 pBufferFlags = &pComponentPrivate->aBufferFlags[ucIndex];
6305 VIDDEC_CircBuf_Add(pComponentPrivate,
6312 pComponentPrivate->arrBufIndex[pComponentPrivate->nInBufIndex] = pBuffHead->nTimeStamp;
6313 pComponentPrivate->nInBufIndex++;
6314 pComponentPrivate->nInBufIndex %= VIDDEC_MAX_QUEUE_SIZE;
6316 OMX_PRBUFFER1(pComponentPrivate->dbg, "pBuffHead->nTimeStamp %lld\n", pBuffHead->nTimeStamp);
6317 OMX_PRBUFFER1(pComponentPrivate->dbg, "pBuffHead->nOffset %lu\n", pBuffHead->nOffset);
6319 PERF_SendingFrame(pComponentPrivate->pPERFcomp,
6324 if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload &&
6325 pComponentPrivate->eLCMLState != VidDec_LCML_State_Destroy &&
6326 pComponentPrivate->pLCML != NULL){
6328 OMX_PRBUFFER1(pComponentPrivate->dbg, "pBuffHead->nFilledLen %lu\n", pBuffHead->nFilledLen);
6329 OMX_PRBUFFER1(pComponentPrivate->dbg, "Sending Filled eBufferOwner 0x%x f%x\n", pBufferPrivate->eBufferOwner, pComponentPrivate->frameCounter);
6333 PERF_SendingFrame(pComponentPrivate->pPERFcomp,
6339 if(pComponentPrivate->bDynamicConfigurationInProgress){
6342 OMX_PRBUFFER1(pComponentPrivate->dbg, "eBufferOwner 0x%x\n", pBufferPrivate->eBufferOwner);
6344 OMX_PRBUFFER2(pComponentPrivate->dbg, "Sending buffer back to client pBuffer=%p\n", pBuffHead->pBuffer);
6345 VIDDEC_EmptyBufferDone(pComponentPrivate, pBuffHead);
6350 if(pComponentPrivate->eFirstBuffer.bSaveFirstBuffer == OMX_TRUE){
6351 if(pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingWMV &&
6352 pComponentPrivate->nWMVFileType == VIDDEC_WMV_RCVSTREAM){
6353 ((WMV9DEC_UALGInputParam*)pComponentPrivate->pUalgParams)->lBuffCount = ++pComponentPrivate->frameCounter;
6357 (OMX_U8*)&pComponentPrivate->pBufferRCV.pBuffer,
6362 (OMX_U8*)&pComponentPrivate->pBufferTemp);
6365 eError = VIDDEC_CopyBuffer(pComponentPrivate, pBuffHead);
6367 OMX_PRDSP4(pComponentPrivate->dbg, "VIDDEC_HandleDataBuf_FromApp: VIDDEC_CopyBuffer()= 0x%x\n", eError);
6376 OMX_PRDSP2(pComponentPrivate->dbg, "LCML_QueueBuffer(INPUT), nFilledLen=0x%x nFlags=0x%x", pBuffHead->nFilledLen, pBuffHead->nFlags);
6380 ((pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingWMV) ? EMMCodecInputBufferMapBufLen : EMMCodecInputBuffer), /*Only WMV need to send map buffers */
6388 OMX_PRDSP4(pComponentPrivate->dbg, "LCML_QueueBuffer 2 (0x%x)\n",eError);
6401 OMX_PRBUFFER1(pComponentPrivate->dbg, "eBufferOwner 0x%x\n", pBufferPrivate->eBufferOwner);
6402 eError = IncrementCount (&(pComponentPrivate->nCountInputBFromDsp), &(pComponentPrivate->mutexInputBFromDSP));
6406 ret = write(pComponentPrivate->free_inpBuf_Q[1], &pBuffHead, sizeof(pBuffHead));
6408 OMX_PRCOMM4(pComponentPrivate->dbg, "writing to the input pipe %x (%d)\n", OMX_ErrorInsufficientResources,ret);
6410 DecrementCount (&(pComponentPrivate->nCountInputBFromDsp), &(pComponentPrivate->mutexInputBFromDSP));
6411 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
6412 pComponentPrivate->pHandle->pApplicationPrivate,
6421 OMX_PRBUFFER1(pComponentPrivate->dbg, "---EXITING(0x%x)\n",eError);
6431 OMX_ERRORTYPE VIDDEC_HandleDataBuf_FromDsp(VIDDEC_COMPONENT_PRIVATE *pComponentPrivate)
6439 OMX_PRBUFFER1(pComponentPrivate->dbg, "+++ENTERING\n");
6440 OMX_PRBUFFER1(pComponentPrivate->dbg, "pComponentPrivate 0x%p\n", (int*)pComponentPrivate);
6441 ret = read(pComponentPrivate->filled_outBuf_Q[0], &pBuffHead, sizeof(pBuffHead));
6443 OMX_PRDSP4(pComponentPrivate->dbg, "Error while reading from dsp out pipe\n");
6447 eError = DecrementCount (&(pComponentPrivate->nCountOutputBFromDsp), &(pComponentPrivate->mutexOutputBFromDSP));
6451 OMX_PRBUFFER1(pComponentPrivate->dbg, "BufferSize fromDSP %lu \n",pBuffHead->nAllocLen);
6452 OMX_PRBUFFER1(pComponentPrivate->dbg, "AllocLen: 0x%x, FilledLen: 0x%x\n", pBuffHead->nAllocLen, pBuffHead->nFilledLen);
6453 OMX_PRSTATE1(pComponentPrivate->dbg, "pBuffHead 0x%p eExecuteToIdle 0x%x\n", pBuffHead,pComponentPrivate->eExecuteToIdle);
6454 if (pComponentPrivate->eState == OMX_StateLoaded || pComponentPrivate->eState == OMX_StateIdle) {
6458 OMX_PRBUFFER1(pComponentPrivate->dbg, "BufferSize fromDSP %lu \n",pBuffHead->nAllocLen);
6459 OMX_PRBUFFER1(pComponentPrivate->dbg, "AllocLen: 0x%x, FilledLen: 0x%x\n", pBuffHead->nAllocLen, pBuffHead->nFilledLen);
6460 OMX_PRSTATE1(pComponentPrivate->dbg, "pBuffHead 0x%p eExecuteToIdle 0x%x\n", pBuffHead,pComponentPrivate->eExecuteToIdle);
6470 if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC) {
6490 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingWMV) {
6509 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4 ||
6510 pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingH263) {
6529 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG2) {
6574 /*OMX_ERROR4(pComponentPrivate->dbg, "nErrorCode %x nFlags %x\n", (int *)nErrorCode, (int *)pBuffHead->nFlags);*/
6581 OMX_PRDSP4(pComponentPrivate->dbg, "Not Recoverable Error Detected in Buffer in buffer %p %lu(int# %lx/%lu) OMX_ErrorStreamCorrupt\n",
6586 OMX_PRDSP4(pComponentPrivate->dbg, "Applied Concealment in buffer %p %lu(int# %lx/%lu)\n",
6592 OMX_PRDSP4(pComponentPrivate->dbg, "Insufficient Data in buffer %p %lu(int# %lx/%lu)\n",
6598 OMX_PRDSP4(pComponentPrivate->dbg, "Corrupted Data in buffer %p %lu(int# %lx/%lu)\n",
6604 OMX_PRDSP4(pComponentPrivate->dbg, "Corrupted Header in buffer %p %lu(int# %lx/%lu)\n",
6610 OMX_PRDSP4(pComponentPrivate->dbg, "Unsupported Input in buffer %p %lu(int# %lx/%lu)\n",
6616 OMX_PRDSP4(pComponentPrivate->dbg, "Unsupported Parameter in buffer %p %lu(int# %lx/%lu)\n",
6621 if (pComponentPrivate->eMBErrorReport.bEnabled) {/* && pBuffHead->nFilledLen != 0*/
6626 if (pComponentPrivate->MPEG4Codec_IsTI &&
6627 (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4 ||
6628 pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingH263)) {
6633 nErrMapSize = pComponentPrivate->pOutPortDef->format.video.nFrameWidth *
6634 pComponentPrivate->pOutPortDef->format.video.nFrameHeight / 256;
6635 ErrMapTo = pComponentPrivate->eMBErrorMapType[pComponentPrivate->cMBErrorIndexIn].ErrMap;
6636 pComponentPrivate->eMBErrorMapType[pComponentPrivate->cMBErrorIndexIn].nErrMapSize = nErrMapSize;
6638 pComponentPrivate->cMBErrorIndexIn++;
6639 pComponentPrivate->cMBErrorIndexIn %= pComponentPrivate->pOutPortDef->nBufferCountActual;
6641 if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC) {
6646 nErrMapSize = pComponentPrivate->pOutPortDef->format.video.nFrameWidth *
6647 pComponentPrivate->pOutPortDef->format.video.nFrameHeight / 256;
6648 ErrMapTo = pComponentPrivate->eMBErrorMapType[pComponentPrivate->cMBErrorIndexIn].ErrMap;
6649 pComponentPrivate->eMBErrorMapType[pComponentPrivate->cMBErrorIndexIn].nErrMapSize = nErrMapSize;
6651 pComponentPrivate->cMBErrorIndexIn++;
6652 pComponentPrivate->cMBErrorIndexIn %= pComponentPrivate->pOutPortDef->nBufferCountActual;
6656 if (pComponentPrivate->pCompPort[1]->hTunnelComponent != NULL) {
6657 if(pComponentPrivate->bFirstBuffer) {
6658 OMX_PRBUFFER2(pComponentPrivate->dbg, "**** Setting OMX_BUFFERFLAG_STARTTIME\n");
6660 pComponentPrivate->bFirstBuffer = 0;
6668 OMX_PRBUFFER1(pComponentPrivate->dbg, "tunnel eBufferOwner 0x%x\n", pBufferPrivate->eBufferOwner);
6670 PERF_SendingFrame(pComponentPrivate->pPERFcomp,
6675 OMX_PRDSP2(pComponentPrivate->dbg, "VIDDEC_HandleDataBuf_FromDsp %x %x\n",(int)pBuffHead->nFlags,(int)pBuffHead->nFilledLen);
6676 VIDDEC_Propagate_Mark(pComponentPrivate, pBuffHead);
6677 eError = OMX_EmptyThisBuffer(pComponentPrivate->pCompPort[1]->hTunnelComponent, pBuffHead);
6680 ret = write(pComponentPrivate->free_outBuf_Q[1],&pBuffHead,sizeof(pBuffHead));
6682 OMX_PRDSP4(pComponentPrivate->dbg, "Error while writing to out pipe to client\n");
6686 eError = IncrementCount (&(pComponentPrivate->nCountOutputBFromApp), &(pComponentPrivate->mutexOutputBFromApp));
6695 if (pComponentPrivate->firstBufferEos){
6696 pComponentPrivate->firstBufferEos = OMX_FALSE;
6701 PERF_SendingFrame(pComponentPrivate->pPERFcomp,
6707 VIDDEC_Propagate_Mark(pComponentPrivate, pBuffHead);
6709 OMX_PRBUFFER1(pComponentPrivate->dbg, "standalone buffer eBufferOwner 0x%x -- %lx\n", pBufferPrivate->eBufferOwner,pBuffHead->nFlags);
6710 VIDDEC_FillBufferDone(pComponentPrivate, pBuffHead);
6719 OMX_PRBUFFER1(pComponentPrivate->dbg, "---EXITING(0x%x)\n",eError);
6729 OMX_ERRORTYPE VIDDEC_HandleFreeDataBuf( VIDDEC_COMPONENT_PRIVATE *pComponentPrivate )
6735 int inputbufsize = (int)pComponentPrivate->pInPortDef->nBufferSize;
6737 OMX_PRBUFFER1(pComponentPrivate->dbg, "+++ENTERING\n");
6738 OMX_PRBUFFER1(pComponentPrivate->dbg, "pComponentPrivate 0x%p\n", (int*)pComponentPrivate);
6739 ret = read(pComponentPrivate->free_inpBuf_Q[0], &pBuffHead, sizeof(pBuffHead));
6741 OMX_PRCOMM4(pComponentPrivate->dbg, "Error while reading from the free Q\n");
6745 eError = DecrementCount (&(pComponentPrivate->nCountInputBFromDsp), &(pComponentPrivate->mutexInputBFromDSP));
6749 OMX_PRSTATE1(pComponentPrivate->dbg, "pBuffHead 0x%p eExecuteToIdle 0x%x\n", pBuffHead,pComponentPrivate->eExecuteToIdle);
6750 if (pComponentPrivate->eState == OMX_StateLoaded || pComponentPrivate->eState == OMX_StateIdle) {
6754 OMX_PRSTATE1(pComponentPrivate->dbg, "pBuffHead 0x%p eExecuteToIdle 0x%x\n", pBuffHead,pComponentPrivate->eExecuteToIdle);
6759 OMX_PRBUFFER1(pComponentPrivate->dbg, "eBufferOwner 0x%x\n", pBufferPrivate->eBufferOwner);
6761 PERF_SendingFrame(pComponentPrivate->pPERFcomp,
6767 VIDDEC_EmptyBufferDone(pComponentPrivate, pBuffHead);
6769 OMX_PRBUFFER1(pComponentPrivate->dbg, "---EXITING(0x%x) \n",eError);
6784 OMX_ERRORTYPE VIDDEC_InitDSP_WMVDec(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate)
6796 OMX_PRDSP1(pComponentPrivate->dbg, "+++ENTERING\n");
6797 nInpBuff = pComponentPrivate->pInPortDef->nBufferCountActual;
6798 nOutBuff = pComponentPrivate->pOutPortDef->nBufferCountActual;
6801 nInpBuffSize = pComponentPrivate->pInPortDef->nBufferSize;
6802 nOutBuffSize = pComponentPrivate->pOutPortDef->nBufferSize;
6804 pLcmlHandle = (LCML_DSP_INTERFACE *)pComponentPrivate->pLCML;
6845 if(pComponentPrivate->ProcessMode == 0){
6846 if(pComponentPrivate->wmvProfile == VIDDEC_WMV_PROFILEMAX)
6848 if ((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth > 640) ||
6849 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight > 480)) {
6852 else if (((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth <= 640) &&
6853 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth > 352)) ||
6854 ((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight <= 480) &&
6855 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight > 288))) {
6858 else if (((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth <= 352) &&
6859 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth > 176)) ||
6860 ((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight <= 288) &&
6861 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight > 144))) {
6864 else if (((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth <= 176) &&
6865 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth >= 16)) ||
6866 ((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight <= 144) &&
6867 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight >= 16))) {
6877 switch(pComponentPrivate->wmvProfile)
6895 } else if(pComponentPrivate->ProcessMode == 1)
6897 switch(pComponentPrivate->wmvProfile)
6931 OMX_MALLOC_STRUCT(pCreatePhaseArgs, WMV9DEC_SNCreatePhArg,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel4]);
6943 pCreatePhaseArgs->ulMaxWidth = (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth);
6944 pCreatePhaseArgs->ulMaxHeight = (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight);
6946 if (pComponentPrivate->nWMVFileType != VIDDEC_WMV_ELEMSTREAM) {
6947 pComponentPrivate->pBufferRCV.sStructRCV.nVertSize = (OMX_U32)(pComponentPrivate->pInPortDef->format.video.nFrameHeight);
6948 pComponentPrivate->pBufferRCV.sStructRCV.nHorizSize = (OMX_U32)(pComponentPrivate->pInPortDef->format.video.nFrameWidth);
6951 if (pComponentPrivate->pOutPortDef->format.video.eColorFormat == VIDDEC_COLORFORMAT422) {
6954 else if (pComponentPrivate->pOutPortDef->format.video.eColorFormat == VIDDEC_COLORFORMAT420) {
6959 OMX_PRDSP4(pComponentPrivate->dbg, "Incorrect Color format %x\n",pComponentPrivate->pOutPortDef->format.video.eColorFormat);
6969 pCreatePhaseArgs->ulProcessMode = pComponentPrivate->ProcessMode;
6973 if (pComponentPrivate->nWMVFileType == VIDDEC_WMV_ELEMSTREAM) {
6985 if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload &&
6986 pComponentPrivate->pLCML != NULL){
6989 OMX_PRDSP4(pComponentPrivate->dbg, "LCML_InitMMCodec Failed!...%x\n",eError);
7003 OMX_PRDSP1(pComponentPrivate->dbg, "---EXITING(0x%x)\n",eError);
7020 OMX_ERRORTYPE VIDDEC_InitDSP_H264Dec(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate)
7034 OMX_PRDSP1(pComponentPrivate->dbg, "+++ENTERING\n");
7037 nInpBuff = pComponentPrivate->pInPortDef->nBufferCountActual;
7038 nOutBuff = pComponentPrivate->pOutPortDef->nBufferCountActual;
7041 nInpBuffSize = pComponentPrivate->pInPortDef->nBufferSize;
7042 nOutBuffSize = pComponentPrivate->pOutPortDef->nBufferSize;
7044 pLcmlHandle = (LCML_DSP_INTERFACE *)pComponentPrivate->pLCML;
7084 if(pComponentPrivate->ProcessMode == 0){
7085 if ((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth > 352) ||
7086 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight > 288)) {
7089 else if (((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth <= 352) &&
7090 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth > 176)) ||
7091 ((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight <= 288) &&
7092 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight > 144))) {
7095 else if (((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth <= 176) &&
7096 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth >= 16)) ||
7097 ((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight <= 144) &&
7098 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight >= 16))) {
7106 else if(pComponentPrivate->ProcessMode == 1) {
7108 switch(pComponentPrivate->pH264->eLevel) {
7135 OMX_PRDSP1(pComponentPrivate->dbg, "lcml_dsp->ProfileID = %lu\n", lcml_dsp->ProfileID);
7136 OMX_MALLOC_STRUCT(pCreatePhaseArgs, H264VDEC_SNCreatePhArg,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel4]);
7142 nFrameWidth = pComponentPrivate->pInPortDef->format.video.nFrameWidth;
7143 nFrameHeight = pComponentPrivate->pInPortDef->format.video.nFrameHeight;
7158 if (pComponentPrivate->pOutPortDef->format.video.eColorFormat == VIDDEC_COLORFORMAT422) {
7161 else if (pComponentPrivate->pOutPortDef->format.video.eColorFormat == VIDDEC_COLORFORMAT420) {
7166 OMX_PRDSP4(pComponentPrivate->dbg, "Incorrect Color format %x\n",pComponentPrivate->pOutPortDef->format.video.eColorFormat);
7176 pCreatePhaseArgs->ulProcessMode = pComponentPrivate->ProcessMode;
7178 pCreatePhaseArgs->ulBitStreamFormat = (pComponentPrivate->H264BitStreamFormat>0?1:0);
7183 memcpy (pComponentPrivate->arr, pCreatePhaseArgs, sizeof(H264VDEC_SNCreatePhArg));
7184 lcml_dsp->pCrPhArgs = pComponentPrivate->arr;
7187 if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload &&
7188 pComponentPrivate->pLCML != NULL){
7191 OMX_PRDSP4(pComponentPrivate->dbg, "LCML_InitMMCodec Failed!...%x\n",eError);
7205 OMX_PRDSP1(pComponentPrivate->dbg, "---EXITING(0x%x)\n",eError);
7220 OMX_ERRORTYPE VIDDEC_InitDSP_Mpeg4Dec(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate)
7232 OMX_PRDSP1(pComponentPrivate->dbg, "+++ENTERING\n");
7234 nInpBuff = pComponentPrivate->pInPortDef->nBufferCountActual;
7235 nOutBuff = pComponentPrivate->pOutPortDef->nBufferCountActual;
7238 nInpBuffSize = pComponentPrivate->pInPortDef->nBufferSize;
7239 nOutBuffSize = pComponentPrivate->pOutPortDef->nBufferSize;
7241 pLcmlHandle = (LCML_DSP_INTERFACE*)pComponentPrivate->pLCML;
7256 OMX_U32 nFrameWidth = pComponentPrivate->pOutPortDef->format.video.nFrameWidth;
7257 OMX_U32 nFrameHeight = pComponentPrivate->pOutPortDef->format.video.nFrameHeight;
7271 pComponentPrivate->eMBErrorReport.bEnabled = FALSE;
7272 pComponentPrivate->MPEG4Codec_IsTI = FALSE;
7283 pComponentPrivate->MPEG4Codec_IsTI = TRUE;
7320 OMX_MALLOC_STRUCT(pCreatePhaseArgs, MP4VD_GPP_SN_Obj_CreatePhase,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel4]);
7328 pCreatePhaseArgs->unlInputNumBufsPerStream = (OMX_U16)(pComponentPrivate->pInPortDef->nBufferCountActual);
7331 pCreatePhaseArgs->unOutputNumBufsPerStream = (OMX_U16)(pComponentPrivate->pOutPortDef->nBufferCountActual);
7334 nFrameWidth = pComponentPrivate->pInPortDef->format.video.nFrameWidth;
7335 nFrameHeight = pComponentPrivate->pInPortDef->format.video.nFrameHeight;
7342 if (pComponentPrivate->pOutPortDef->format.video.eColorFormat == VIDDEC_COLORFORMAT422) {
7345 else if (pComponentPrivate->pOutPortDef->format.video.eColorFormat == VIDDEC_COLORFORMAT420) {
7350 OMX_PRDSP4(pComponentPrivate->dbg, "Incorrect Color format %x\n",pComponentPrivate->pOutPortDef->format.video.eColorFormat);
7351 OMX_PRDSP1(pComponentPrivate->dbg, "lcml_dsp->ProfileID = %lu\n", lcml_dsp->ProfileID);
7356 OMX_PRBUFFER1(pComponentPrivate->dbg, "pCreatePhaseArgs->ulMaxWidth %lu pCreatePhaseArgs->ulMaxHeight %lu\n",
7362 if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4){
7369 pCreatePhaseArgs->ulProcessMode = pComponentPrivate->ProcessMode;
7374 memcpy(pComponentPrivate->arr, pCreatePhaseArgs, sizeof(MP4VD_GPP_SN_Obj_CreatePhase));
7375 lcml_dsp->pCrPhArgs = pComponentPrivate->arr;
7378 if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload &&
7379 pComponentPrivate->pLCML != NULL){
7380 pComponentPrivate->eLCMLState = VidDec_LCML_State_Init;
7384 OMX_PRDSP4(pComponentPrivate->dbg, "LCML_InitMMCodec Failed!...%x\n",eError);
7398 OMX_PRDSP1(pComponentPrivate->dbg, "---EXITING(0x%x)\n",eError);
7414 OMX_ERRORTYPE VIDDEC_InitDSP_Mpeg2Dec(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate)
7426 OMX_PRDSP1(pComponentPrivate->dbg, "+++ENTERING\n");
7428 nInpBuff = pComponentPrivate->pInPortDef->nBufferCountActual;
7429 nOutBuff = pComponentPrivate->pOutPortDef->nBufferCountActual;
7432 nInpBuffSize = pComponentPrivate->pInPortDef->nBufferSize;
7433 nOutBuffSize = pComponentPrivate->pOutPortDef->nBufferSize;
7435 pLcmlHandle = (LCML_DSP_INTERFACE*)pComponentPrivate->pLCML;
7471 if(pComponentPrivate->ProcessMode == 0){
7472 if ((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth > 352) ||
7473 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight > 288)) {
7476 else if (((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth <= 352) &&
7477 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth > 176)) ||
7478 ((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight <= 288) &&
7479 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight > 144))) {
7482 else if (((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth <= 176) &&
7483 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth >= 16)) ||
7484 ((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight <= 144) &&
7485 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight >= 16))) {
7493 else if(pComponentPrivate->ProcessMode == 1) {
7494 if ((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth > 352) ||
7495 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight > 288)) {
7498 else if (((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth <= 352) &&
7499 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth > 176)) ||
7500 ((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight <= 288) &&
7501 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight > 144))) {
7504 else if (((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth <= 176) &&
7505 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth >= 16)) ||
7506 ((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight <= 144) &&
7507 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight >= 16))) {
7516 OMX_MALLOC_STRUCT(pCreatePhaseArgs, MP2VDEC_SNCreatePhArg,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel4]);
7524 pCreatePhaseArgs->unInputNumBufsPerStream = (OMX_U16)(pComponentPrivate->pInPortDef->nBufferCountActual);
7527 pCreatePhaseArgs->unOutputNumBufsPerStream = (OMX_U16)(pComponentPrivate->pOutPortDef->nBufferCountActual);
7528 pCreatePhaseArgs->ulMaxWidth = (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth);
7529 pCreatePhaseArgs->ulMaxHeight = (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight);
7531 if (pComponentPrivate->pOutPortDef->format.video.eColorFormat == VIDDEC_COLORFORMAT422) {
7534 else if (pComponentPrivate->pOutPortDef->format.video.eColorFormat == VIDDEC_COLORFORMAT420) {
7539 OMX_PRDSP4(pComponentPrivate->dbg, "Incorrect Color format %x\n",pComponentPrivate->pOutPortDef->format.video.eColorFormat);
7549 pCreatePhaseArgs->ulProcessMode = pComponentPrivate->ProcessMode;
7555 memcpy(pComponentPrivate->arr, pCreatePhaseArgs, sizeof(MP2VDEC_SNCreatePhArg));
7556 lcml_dsp->pCrPhArgs = pComponentPrivate->arr;
7559 if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload &&
7560 pComponentPrivate->pLCML != NULL){
7563 OMX_PRDSP4(pComponentPrivate->dbg, "LCML_InitMMCodec Failed!...%x\n",eError);
7577 OMX_PRDSP1(pComponentPrivate->dbg, "---EXITING(0x%x)\n",eError);
7592 OMX_ERRORTYPE VIDDEC_InitDSP_SparkDec(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate)
7604 OMX_PRDSP1(pComponentPrivate->dbg, "+++ENTERING\n");
7606 nInpBuff = pComponentPrivate->pInPortDef->nBufferCountActual;
7607 nOutBuff = pComponentPrivate->pOutPortDef->nBufferCountActual;
7610 nInpBuffSize = pComponentPrivate->pInPortDef->nBufferSize;
7611 nOutBuffSize = pComponentPrivate->pOutPortDef->nBufferSize;
7613 pLcmlHandle = (LCML_DSP_INTERFACE*)pComponentPrivate->pLCML;
7654 if(pComponentPrivate->ProcessMode == 0){
7655 if ((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth > 640) ||
7656 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight > 480)) {
7659 else if (((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth <= 640) &&
7660 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth > 352)) ||
7661 ((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight <= 480) &&
7662 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight > 288))) {
7665 else if (((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth <= 352) &&
7666 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth > 176)) ||
7667 ((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight <= 288) &&
7668 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight > 144))) {
7671 else if (((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth <= 176) &&
7672 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth >= 16)) ||
7673 ((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight <= 144) &&
7674 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight >= 16))) {
7682 else if(pComponentPrivate->ProcessMode == 1) {
7683 if ((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth > 640) ||
7684 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight > 480)) {
7687 else if (((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth <= 640) &&
7688 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth > 352)) ||
7689 ((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight <= 480) &&
7690 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight > 288))) {
7693 else if (((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth <= 352) &&
7694 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth > 176)) ||
7695 ((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight <= 288) &&
7696 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight > 144))) {
7699 else if (((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth <= 176) &&
7700 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth >= 16)) ||
7701 ((OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight <= 144) &&
7702 (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight >= 16))) {
7711 OMX_MALLOC_STRUCT(pCreatePhaseArgs, SPARKVD_GPP_SN_Obj_CreatePhase,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel4]);
7719 pCreatePhaseArgs->unlInputNumBufsPerStream = (OMX_U16)(pComponentPrivate->pInPortDef->nBufferCountActual);
7722 pCreatePhaseArgs->unOutputNumBufsPerStream = (OMX_U16)(pComponentPrivate->pOutPortDef->nBufferCountActual);
7723 pCreatePhaseArgs->ulMaxWidth = (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameWidth);
7724 pCreatePhaseArgs->ulMaxHeight = (OMX_U16)(pComponentPrivate->pInPortDef->format.video.nFrameHeight);
7726 if (pComponentPrivate->pOutPortDef->format.video.eColorFormat == VIDDEC_COLORFORMAT422) {
7729 else if (pComponentPrivate->pOutPortDef->format.video.eColorFormat == VIDDEC_COLORFORMAT420) {
7734 OMX_PRDSP4(pComponentPrivate->dbg, "Incorrect Color format %x\n",pComponentPrivate->pOutPortDef->format.video.eColorFormat);
7744 pCreatePhaseArgs->ulProcessMode = pComponentPrivate->ProcessMode;
7748 memcpy(pComponentPrivate->arr, pCreatePhaseArgs, sizeof(SPARKVD_GPP_SN_Obj_CreatePhase));
7749 lcml_dsp->pCrPhArgs = pComponentPrivate->arr;
7752 if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload &&
7753 pComponentPrivate->pLCML != NULL){
7756 OMX_PRDSP4(pComponentPrivate->dbg, "LCML_InitMMCodec Failed!...%x\n",eError);
7770 OMX_PRDSP1(pComponentPrivate->dbg, "---EXITING(0x%x)\n",eError);
7778 * @param pComponentPrivate This is the pointer to the private structure
7784 OMX_ERRORTYPE VIDDEC_Handle_InvalidState (VIDDEC_COMPONENT_PRIVATE* pComponentPrivate)
7788 OMX_PRSTATE1(pComponentPrivate->dbg, "+++ENTERING\n");
7789 OMX_PRSTATE2(pComponentPrivate->dbg, "pComponentPrivate 0x%p\n", (int*)pComponentPrivate);
7791 if(pComponentPrivate->eState != OMX_StateInvalid) {
7792 pComponentPrivate->eState = OMX_StateInvalid;
7793 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
7794 pComponentPrivate->pHandle->pApplicationPrivate,
7804 OMX_PRSTATE1(pComponentPrivate->dbg, "---EXITING(0x%x)\n",eError);
7813 * @param pComponentPrivate This is the pointer to the private structure
7820 OMX_ERRORTYPE VIDDEC_Propagate_Mark(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate, OMX_BUFFERHEADERTYPE *pBuffHead)
7825 pBuffHead->hMarkTargetComponent = pComponentPrivate->arrMarkBufIndex[pComponentPrivate->nInMarkBufIndex].hMarkTargetComponent;
7826 pBuffHead->pMarkData = pComponentPrivate->arrMarkBufIndex[pComponentPrivate->nInMarkBufIndex].pMarkData;
7827 pComponentPrivate->nOutMarkBufIndex++;
7828 pComponentPrivate->nOutMarkBufIndex %= VIDDEC_MAX_QUEUE_SIZE;
7831 if(pBuffHead->hMarkTargetComponent == pComponentPrivate->pHandle)
7833 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
7834 pComponentPrivate->pHandle->pApplicationPrivate,
7859 VIDDEC_COMPONENT_PRIVATE* pComponentPrivate = NULL;
7864 pComponentPrivate = (VIDDEC_COMPONENT_PRIVATE*)((LCML_DSP_INTERFACE*)argsCb[6])->pComponentPrivate;
7869 OMX_PRDSP2(pComponentPrivate->dbg, "[LCML CALLBACK EVENT] EMMCodecDspError (int)argsCb [0] %x (int)argsCb [4] %x (int)argsCb [5] %x\n",(int)argsCb [0],(int)argsCb [4],(int)argsCb [5]);
7873 OMX_PRDSP2(pComponentPrivate->dbg, "[LCML CALLBACK EVENT] EMMCodecInternalError\n");
7877 OMX_PRDSP2(pComponentPrivate->dbg, "[LCML CALLBACK EVENT] EMMCodecInitError\n");
7881 OMX_PRDSP1(pComponentPrivate->dbg, "[LCML CALLBACK EVENT] EMMCodecDspMessageRecieved\n");
7884 OMX_PRDSP0(pComponentPrivate->dbg, "[LCML CALLBACK EVENT] EMMCodecBufferProcessed %x\n",(int)argsCb [0]);
7887 OMX_PRDSP1(pComponentPrivate->dbg, "[LCML CALLBACK EVENT] EMMCodecProcessingStarted\n");
7891 OMX_PRDSP1(pComponentPrivate->dbg, "[LCML CALLBACK EVENT] EMMCodecProcessingPaused\n");
7895 OMX_PRDSP1(pComponentPrivate->dbg, "[LCML CALLBACK EVENT] EMMCodecProcessingStoped\n");
7899 OMX_PRDSP1(pComponentPrivate->dbg, "[LCML CALLBACK EVENT] EMMCodecProcessingEof\n");
7902 OMX_PRDSP2(pComponentPrivate->dbg, "[LCML CALLBACK EVENT] EMMCodecBufferNotProcessed %x\n",(int)argsCb [0]);
7905 OMX_PRDSP1(pComponentPrivate->dbg, "[LCML CALLBACK EVENT] EMMCodecAlgCtrlAck\n");
7909 OMX_PRDSP1(pComponentPrivate->dbg, "[LCML CALLBACK EVENT] EMMCodecStrmCtrlAck\n");
7914 OMX_PRDSP0(pComponentPrivate->dbg, "+++ENTERING\n");
7915 OMX_PRDSP0(pComponentPrivate->dbg, "pComponentPrivate 0x%p 0x%x\n", (int*)pComponentPrivate,event);
7917 if(pComponentPrivate->pCompPort[0] == NULL){
7918 OMX_PRDSP4(pComponentPrivate->dbg, "*****************************error in lcmlcalback******************************\n");
7922 VIDDEC_PTHREAD_MUTEX_LOCK(pComponentPrivate->sMutex);
7923 VIDDEC_PTHREAD_MUTEX_SIGNAL(pComponentPrivate->sMutex);
7924 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->sMutex);
7925 pComponentPrivate->bTransPause = 1;
7928 VIDDEC_PTHREAD_MUTEX_LOCK(pComponentPrivate->sMutex);
7929 VIDDEC_PTHREAD_MUTEX_SIGNAL(pComponentPrivate->sMutex);
7930 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->sMutex);
7931 pComponentPrivate->bTransPause = 1;
7934 VIDDEC_PTHREAD_MUTEX_LOCK(pComponentPrivate->sMutex);
7935 VIDDEC_PTHREAD_MUTEX_SIGNAL(pComponentPrivate->sMutex);
7936 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->sMutex);
7937 pComponentPrivate->bTransPause = 1;
7938 pComponentPrivate->bIsPaused = 0;
7941 VIDDEC_PTHREAD_MUTEX_LOCK(pComponentPrivate->sMutex);
7942 VIDDEC_PTHREAD_MUTEX_SIGNAL(pComponentPrivate->sMutex);
7943 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->sMutex);
7944 pComponentPrivate->bTransPause = 1;
7945 pComponentPrivate->bIsPaused = 0;
7948 OMX_PRDSP2(pComponentPrivate->dbg, "EMMCodecBufferProcessed 0x%lx\n", (OMX_U32)argsCb [0]);
7950 OMX_PRBUFFER1(pComponentPrivate->dbg, "EMMCodecOuputBuffer\n");
7955 if (pComponentPrivate->eState != OMX_StateLoaded && pComponentPrivate->eState != OMX_StateIdle) {
7959 OMX_PRBUFFER1(pComponentPrivate->dbg, "pBuffHead Output 0x%p pBuffer 0x%p\n", pBuffHead, argsCb[1]);
7965 pComponentPrivate->lcml_nCntOpReceived++;
7966 if (pComponentPrivate->lcml_nCntOpReceived == 4) {
7967 PERF_Boundary(pComponentPrivate->pPERFcomp,
7973 if (pComponentPrivate->ProcessMode == 0) {
7975 VIDDEC_CircBuf_Remove(pComponentPrivate,
7993 pBuffHead->nTimeStamp = (OMX_TICKS)pComponentPrivate->arrBufIndex[pComponentPrivate->nOutBufIndex];
7994 pComponentPrivate->nOutBufIndex++;
7995 pComponentPrivate->nOutBufIndex %= VIDDEC_MAX_QUEUE_SIZE;
7998 OMX_PRBUFFER1(pComponentPrivate->dbg, "pBuffHead->nTimeStamp %lld\n", pBuffHead->nTimeStamp);
8000 /*if (pComponentPrivate->pCompPort[1]->hTunnelComponent != NULL) {
8006 OMX_PRBUFFER1(pComponentPrivate->dbg, "pBuffHead->nFilledLen %lu\n", pBuffHead->nFilledLen);
8007 eError = IncrementCount (&(pComponentPrivate->nCountOutputBFromDsp), &(pComponentPrivate->mutexOutputBFromDSP));
8013 OMX_PRBUFFER1(pComponentPrivate->dbg, "eBufferOwner 0x%x\n", pBufferPrivate->eBufferOwner);
8015 PERF_ReceivedFrame(pComponentPrivate->pPERFcomp,
8021 nRetVal = write(pComponentPrivate->filled_outBuf_Q[1],&pBuffHead,sizeof(pBuffHead));
8023 DecrementCount (&(pComponentPrivate->nCountOutputBFromDsp), &(pComponentPrivate->mutexOutputBFromDSP));
8025 OMX_PRCOMM4(pComponentPrivate->dbg, "writing to the input pipe %x (%ld)\n", OMX_ErrorInsufficientResources,nRetVal);
8026 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
8027 pComponentPrivate->pHandle->pApplicationPrivate,
8036 OMX_PRDSP1(pComponentPrivate->dbg, "buffer dropped lcml out process pBuffHead %p owner %d\n",pBuffHead,pBuffPriv->eBufferOwner);
8044 OMX_PRBUFFER1(pComponentPrivate->dbg, "EMMCodecInputBuffer\n");
8048 if (pComponentPrivate->eState != OMX_StateLoaded && pComponentPrivate->eState != OMX_StateIdle) {
8059 OMX_PRBUFFER1(pComponentPrivate->dbg, "pBuffHead Input 0x%p pBuffer 0x%p\n", pBuffHead, argsCb[1]);
8062 eError = IncrementCount (&(pComponentPrivate->nCountInputBFromDsp), &(pComponentPrivate->mutexInputBFromDSP));
8068 OMX_PRBUFFER1(pComponentPrivate->dbg, "eBufferOwner 0x%x\n", pBufferPrivate->eBufferOwner);
8070 PERF_ReceivedFrame(pComponentPrivate->pPERFcomp,
8076 if (pComponentPrivate->nWMVFileType == VIDDEC_WMV_ELEMSTREAM &&
8077 pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingWMV &&
8078 pComponentPrivate->ProcessMode == 0) {
8081 OMX_PRBUFFER1(pComponentPrivate->dbg, "restoring buffer pointer 0x%p >> pBuffer 0x%p\n",
8088 nRetVal = write(pComponentPrivate->free_inpBuf_Q[1], &pBuffHead, sizeof(pBuffHead));
8090 OMX_PRCOMM4(pComponentPrivate->dbg, "writing to the input pipe %x (%lu)\n", OMX_ErrorInsufficientResources,nRetVal);
8091 DecrementCount (&(pComponentPrivate->nCountInputBFromDsp), &(pComponentPrivate->mutexInputBFromDSP));
8093 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
8094 pComponentPrivate->pHandle->pApplicationPrivate,
8103 OMX_PRDSP1(pComponentPrivate->dbg, "buffer dropped lcml in notprocess pBuffHead %p owner %d\n",pBuffHead,pBuffPriv->eBufferOwner);
8112 OMX_PRDSP2(pComponentPrivate->dbg, "EMMCodecBufferNotProcessed\n");
8118 if (pComponentPrivate->eState != OMX_StateLoaded && pComponentPrivate->eState != OMX_StateIdle) {
8127 pComponentPrivate->lcml_nCntOpReceived++;
8128 if (pComponentPrivate->lcml_nCntOpReceived == 4) {
8129 PERF_Boundary(pComponentPrivate->pPERFcomp,
8135 if (pComponentPrivate->ProcessMode == 0) {
8137 VIDDEC_CircBuf_Remove(pComponentPrivate,
8155 pBuffHead->nTimeStamp = (OMX_TICKS)pComponentPrivate->arrBufIndex[pComponentPrivate->nOutBufIndex];
8156 pComponentPrivate->nOutBufIndex++;
8157 pComponentPrivate->nOutBufIndex %= VIDDEC_MAX_QUEUE_SIZE;
8160 OMX_PRBUFFER1(pComponentPrivate->dbg, "pBuffHead->nTimeStamp %lld\n", pBuffHead->nTimeStamp);
8162 /*if (pComponentPrivate->pCompPort[1]->hTunnelComponent != NULL) {
8168 OMX_PRBUFFER1(pComponentPrivate->dbg, "pBuffHead->nFilledLen %lu\n", pBuffHead->nFilledLen);
8169 eError = IncrementCount (&(pComponentPrivate->nCountOutputBFromDsp), &(pComponentPrivate->mutexOutputBFromDSP));
8175 OMX_PRBUFFER1(pComponentPrivate->dbg, "eBufferOwner 0x%x\n", pBufferPrivate->eBufferOwner);
8177 PERF_ReceivedFrame(pComponentPrivate->pPERFcomp,
8183 nRetVal = write(pComponentPrivate->filled_outBuf_Q[1],&pBuffHead,sizeof(pBuffHead));
8185 DecrementCount (&(pComponentPrivate->nCountOutputBFromDsp), &(pComponentPrivate->mutexOutputBFromDSP));
8187 OMX_PRCOMM4(pComponentPrivate->dbg, "writing to the input pipe %x (%lu)\n", OMX_ErrorInsufficientResources,nRetVal);
8188 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
8189 pComponentPrivate->pHandle->pApplicationPrivate,
8198 OMX_PRDSP1(pComponentPrivate->dbg, "buffer dropped lcml out process pBuffHead %p owner %d\n",pBuffHead,pBuffPriv->eBufferOwner);
8209 if (pComponentPrivate->eState != OMX_StateLoaded && pComponentPrivate->eState != OMX_StateIdle) {
8220 OMX_PRBUFFER1(pComponentPrivate->dbg, "pBuffHead Input 0x%p pBuffer 0x%p\n", pBuffHead, argsCb[1]);
8223 eError = IncrementCount (&(pComponentPrivate->nCountInputBFromDsp), &(pComponentPrivate->mutexInputBFromDSP));
8229 OMX_PRBUFFER1(pComponentPrivate->dbg, "eBufferOwner 0x%x\n", pBufferPrivate->eBufferOwner);
8231 PERF_ReceivedFrame(pComponentPrivate->pPERFcomp,
8237 if (pComponentPrivate->nWMVFileType == VIDDEC_WMV_ELEMSTREAM &&
8238 pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingWMV &&
8239 pComponentPrivate->ProcessMode == 0) {
8242 OMX_PRBUFFER1(pComponentPrivate->dbg, "restoring buffer pointer 0x%p >> pBuffer 0x%p\n",
8249 nRetVal = write(pComponentPrivate->free_inpBuf_Q[1], &pBuffHead, sizeof(pBuffHead));
8251 OMX_PRCOMM4(pComponentPrivate->dbg, "writing to the input pipe %x (%lu)\n", OMX_ErrorInsufficientResources,nRetVal);
8252 DecrementCount (&(pComponentPrivate->nCountInputBFromDsp), &(pComponentPrivate->mutexInputBFromDSP));
8254 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
8255 pComponentPrivate->pHandle->pApplicationPrivate,
8264 OMX_PRDSP1(pComponentPrivate->dbg, "buffer dropped lcml in notprocess pBuffHead %p owner %d\n",pBuffHead,pBuffPriv->eBufferOwner);
8273 OMX_PRDSP2(pComponentPrivate->dbg, "EMMCodecDspError\n");
8275 OMX_PRDSP4(pComponentPrivate->dbg, "DSP MMU_Fault\n");
8276 pComponentPrivate->bLCMLHalted = OMX_TRUE;
8277 pComponentPrivate->pHandle->SendCommand( pComponentPrivate->pHandle, OMX_CommandStateSet, -2, 0);
8281 OMX_PRDSP4(pComponentPrivate->dbg, "Algorithm error. Parameter not supported\n");
8282 OMX_PRDSP2(pComponentPrivate->dbg, "argsCb5 = %p\n",argsCb[5]);
8283 OMX_PRDSP2(pComponentPrivate->dbg, "LCML_Callback: IUALG_ERR_NOT_SUPPORTED\n");
8284 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
8285 pComponentPrivate->pHandle->pApplicationPrivate,
8295 OMX_PRDSP2(pComponentPrivate->dbg, "Received PLAYCOMPLETED\n");
8298 OMX_PRDSP4(pComponentPrivate->dbg, "Error from the DSP: argsCb[5]=%d.\n", (int)argsCb [5]);
8299 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
8300 pComponentPrivate->pHandle->pApplicationPrivate,
8308 OMX_PRDSP4(pComponentPrivate->dbg, "Error from the DSP: argsCb[4]=%d.\n", (int)argsCb [4]);
8309 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
8310 pComponentPrivate->pHandle->pApplicationPrivate,
8319 OMX_PRDSP4(pComponentPrivate->dbg, "LCML Halted: argsCb[0]=%d.\n", (int)argsCb [0]);
8320 pComponentPrivate->bLCMLHalted = OMX_TRUE;
8321 pComponentPrivate->pHandle->SendCommand( pComponentPrivate->pHandle, OMX_CommandStateSet, -2, 0);
8326 OMX_PRDSP4(pComponentPrivate->dbg, "EMMCodecInternalError || EMMCodecInitError\n");
8327 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
8328 pComponentPrivate->pHandle->pApplicationPrivate,
8336 OMX_PRDSP2(pComponentPrivate->dbg, "EMMCodecStrmCtrlAck\n");
8337 VIDDEC_PTHREAD_MUTEX_LOCK(pComponentPrivate->sMutex);
8338 VIDDEC_PTHREAD_MUTEX_SIGNAL(pComponentPrivate->sMutex);
8339 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->sMutex);
8341 OMX_PRDSP4(pComponentPrivate->dbg, "EMMCodecStrmCtrlAck: argsCb[0]=%d\n", (int)argsCb [0]);
8344 OMX_PRDSP4(pComponentPrivate->dbg, "Unknown event: %d\n", event);
8348 OMX_PRDSP0(pComponentPrivate->dbg, "---EXITING(0x%x)\n",eError);
8370 * pComponentPrivate Component private structure
8378 OMX_ERRORTYPE VIDDEC_SaveBuffer(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate,
8382 OMX_PRINT1(pComponentPrivate->dbg, "IN\n");
8383 pComponentPrivate->eFirstBuffer.bSaveFirstBuffer = OMX_TRUE;
8385 OMX_MALLOC_STRUCT_SIZED(pComponentPrivate->eFirstBuffer.pFirstBufferSaved, OMX_U8, pBuffHead->nFilledLen, NULL);
8386 memcpy(pComponentPrivate->eFirstBuffer.pFirstBufferSaved, pBuffHead->pBuffer, pBuffHead->nFilledLen);
8388 pComponentPrivate->eFirstBuffer.nFilledLen = pBuffHead->nFilledLen;
8391 OMX_PRINT1(pComponentPrivate->dbg, "OUT\n");
8403 * pComponentPrivate Component private structure
8412 OMX_ERRORTYPE VIDDEC_CopyBuffer(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate,
8415 OMX_PRINT1(pComponentPrivate->dbg, "IN\n");
8417 if (pComponentPrivate->eFirstBuffer.bSaveFirstBuffer == OMX_FALSE) {
8421 OMX_PRINT1(pComponentPrivate->dbg, "pBuffer=%p\n", pBuffHead->pBuffer);
8423 pComponentPrivate->eFirstBuffer.bSaveFirstBuffer = OMX_FALSE;
8427 ((pComponentPrivate->ProcessMode == 0 && pComponentPrivate->H264BitStreamFormat > 0)
8428 || (pBuffHead->nFilledLen > pComponentPrivate->eFirstBuffer.nFilledLen))
8429 && (pBuffHead->nAllocLen >= pComponentPrivate->eFirstBuffer.nFilledLen + pBuffHead->nFilledLen)
8433 memcpy(pBuffHead->pBuffer, pComponentPrivate->eFirstBuffer.pFirstBufferSaved, pComponentPrivate->eFirstBuffer.nFilledLen); /*copy first buffer to the beganing of pBuffer.*/
8434 memcpy((OMX_U8 *)pBuffHead->pBuffer+pComponentPrivate->eFirstBuffer.nFilledLen, pTemp, pBuffHead->nFilledLen); /* copy back actual buffer after first buffer*/
8435 pBuffHead->nFilledLen += pComponentPrivate->eFirstBuffer.nFilledLen; /*Add first buffer size*/
8438 free(pComponentPrivate->eFirstBuffer.pFirstBufferSaved);
8439 pComponentPrivate->eFirstBuffer.pFirstBufferSaved = NULL;
8443 else if (pBuffHead->nAllocLen >= pComponentPrivate->eFirstBuffer.nFilledLen){
8445 memcpy(pBuffHead->pBuffer, pComponentPrivate->eFirstBuffer.pFirstBufferSaved, pComponentPrivate->eFirstBuffer.nFilledLen); /*copy first buffer*/
8446 pBuffHead->nFilledLen = pComponentPrivate->eFirstBuffer.nFilledLen; /*Update buffer size*/
8447 free(pComponentPrivate->eFirstBuffer.pFirstBufferSaved);
8448 pComponentPrivate->eFirstBuffer.pFirstBufferSaved = NULL;
8453 OMX_PRINT1(pComponentPrivate->dbg, "OUT\n");
8464 * pComponentPrivate Component private structure
8472 OMX_ERRORTYPE VIDDEC_LoadCodec(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate)
8489 pComponentPrivate->pModLCML = dlopen("libLCML.so", RTLD_LAZY);
8490 if (!pComponentPrivate->pModLCML) {
8491 OMX_PRDSP4(pComponentPrivate->dbg, "OMX_ErrorBadParameter\n");
8496 fpGetHandle = dlsym(pComponentPrivate->pModLCML, "GetHandle");
8498 OMX_PRDSP4(pComponentPrivate->dbg, "OMX_ErrorBadParameter\n");
8500 dlclose(pComponentPrivate->pModLCML);
8501 pComponentPrivate->pModLCML = NULL;
8507 OMX_PRDSP4(pComponentPrivate->dbg, "OMX_ErrorBadParameter\n");
8508 dlclose(pComponentPrivate->pModLCML);
8509 pComponentPrivate->pModLCML = NULL;
8516 pComponentPrivate->eLCMLState = VidDec_LCML_State_Load;
8517 OMX_PRDSP2(pComponentPrivate->dbg, "LCML Handler 0x%p\n",hLCML);
8518 /*(LCML_DSP_INTERFACE*)pComponentPrivate->pLCML = (LCML_DSP_INTERFACE*)hLCML;*/
8519 pComponentPrivate->pLCML = (LCML_DSP_INTERFACE*)hLCML;
8520 pComponentPrivate->pLCML->pComponentPrivate = pComponentPrivate;
8524 pComponentPrivate->lcml_nCntOpReceived = 0;
8528 pComponentPrivate->bLCMLOut = OMX_TRUE;
8530 if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC) {
8531 eError = VIDDEC_InitDSP_H264Dec(pComponentPrivate);
8533 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4 ||
8534 pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingH263) {
8535 eError = VIDDEC_InitDSP_Mpeg4Dec(pComponentPrivate);
8537 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG2) {
8538 eError = VIDDEC_InitDSP_Mpeg2Dec(pComponentPrivate);
8540 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingWMV) {
8541 eError = VIDDEC_InitDSP_WMVDec(pComponentPrivate);
8545 eError = VIDDEC_InitDSP_SparkDec(pComponentPrivate);
8549 OMX_PRDSP4(pComponentPrivate->dbg, "OMX_ErrorUnsupportedSetting\n");
8551 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
8552 pComponentPrivate->pHandle->pApplicationPrivate,
8560 OMX_PRDSP4(pComponentPrivate->dbg, "LCML Error %x\n", pComponentPrivate->eState);
8561 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
8562 pComponentPrivate->pHandle->pApplicationPrivate,
8570 pComponentPrivate->bLCMLOut = OMX_FALSE;
8572 pComponentPrivate->bLCMLHalted = OMX_FALSE;
8573 pLcmlHandle = (LCML_DSP_INTERFACE*)pComponentPrivate->pLCML;
8574 pComponentPrivate->eLCMLState = VidDec_LCML_State_Init;
8576 OMX_PRDSP2(pComponentPrivate->dbg, "OUTPUT width=%lu height=%lu\n", pComponentPrivate->pOutPortDef->format.video.nFrameWidth, pComponentPrivate->pOutPortDef->format.video.nFrameHeight);
8577 OMX_PRDSP2(pComponentPrivate->dbg, "INPUT width=%lu height=%lu\n", pComponentPrivate->pInPortDef->format.video.nFrameWidth, pComponentPrivate->pInPortDef->format.video.nFrameHeight);
8580 if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload &&
8581 pComponentPrivate->eLCMLState != VidDec_LCML_State_Destroy &&
8582 pComponentPrivate->pLCML != NULL &&
8583 pComponentPrivate->bLCMLHalted != OMX_TRUE){
8584 OMX_PRDSP2(pComponentPrivate->dbg, "LCML_ControlCodec called EMMCodecControlUsnEos 0x%p\n",pLcmlHandle);
8587 OMX_PRDSP4(pComponentPrivate->dbg, "error in EMMCodecControlUsnEos %x\n",eError);
8589 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
8590 pComponentPrivate->pHandle->pApplicationPrivate,
8595 OMX_PRDSP4(pComponentPrivate->dbg, "OMX_ErrorHardware 0x%x\n",eError);
8600 if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat != OMX_VIDEO_CodingWMV) {
8601 if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC) {
8610 VIDDEC_PTHREAD_MUTEX_LOCK(pComponentPrivate->sMutex);
8611 OMX_PRDSP2(pComponentPrivate->dbg, "LCML_ControlCodec called EMMCodecControlSendDspMessage 0x%p\n",pLcmlHandle);
8614 OMX_PRDSP4(pComponentPrivate->dbg, "error in EMMCodecControlSendDspMessage %x\n",eError);
8616 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
8617 pComponentPrivate->pHandle->pApplicationPrivate,
8622 OMX_PRDSP4(pComponentPrivate->dbg, "OMX_ErrorHardware 0x%x\n",eError);
8623 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->sMutex);
8626 VIDDEC_PTHREAD_MUTEX_WAIT(pComponentPrivate->sMutex);
8627 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->sMutex);
8630 pLcmlHandle = (LCML_DSP_INTERFACE*)pComponentPrivate->pLCML;
8631 pComponentPrivate->bIsPaused = 0;
8632 pComponentPrivate->bFirstBuffer = 1;
8634 OMX_PRDSP2(pComponentPrivate->dbg, "LCML_ControlCodec called EMMCodecControlStart 0x%p\n",pLcmlHandle);
8638 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
8639 pComponentPrivate->pHandle->pApplicationPrivate,
8645 OMX_PRDSP4(pComponentPrivate->dbg, "Occurred in Codec Start... 0x%x\n",eError);
8647 pComponentPrivate->eLCMLState = VidDec_LCML_State_Start;
8649 if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC &&
8650 pComponentPrivate->eState == OMX_StateIdle) {
8655 OMX_PRDSP2(pComponentPrivate->dbg, "Initializing DSP for h264 eCompressionFormat 0x%x\n",
8656 pComponentPrivate->pInPortDef->format.video.eCompressionFormat);
8657 OMX_MALLOC_STRUCT_SIZED(pDynParams, H264_Iualg_Cmd_SetStatus, sizeof(H264_Iualg_Cmd_SetStatus) + VIDDEC_PADDING_FULL,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel4]);
8659 OMX_TRACE4(pComponentPrivate->dbg, "Error: Malloc failed\n");
8680 if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload &&
8681 pComponentPrivate->eLCMLState != VidDec_LCML_State_Destroy &&
8682 pComponentPrivate->pLCML != NULL &&
8683 pComponentPrivate->bLCMLHalted != OMX_TRUE){
8684 VIDDEC_PTHREAD_MUTEX_LOCK(pComponentPrivate->sMutex);
8690 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->sMutex);
8694 VIDDEC_PTHREAD_MUTEX_WAIT(pComponentPrivate->sMutex);
8695 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->sMutex);
8700 OMX_PRDSP4(pComponentPrivate->dbg, "Codec AlgCtrl 0x%x\n",eError);
8704 else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG2 &&
8705 pComponentPrivate->eState == OMX_StateIdle) {
8710 OMX_PRDSP2(pComponentPrivate->dbg, "Initializing DSP for wmv9 eCompressionFormat 0x%x\n",
8711 pComponentPrivate->pInPortDef->format.video.eCompressionFormat);
8712 OMX_MALLOC_STRUCT_SIZED(pDynParams, MP2VDEC_UALGDynamicParams, sizeof(MP2VDEC_UALGDynamicParams) + VIDDEC_PADDING_FULL,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel4]);
8721 if (pComponentPrivate->nDisplayWidth > 0) {
8722 if (pComponentPrivate->pInPortDef->format.video.nFrameWidth > pComponentPrivate->nDisplayWidth) {
8723 pComponentPrivate->nDisplayWidth = pComponentPrivate->pInPortDef->format.video.nFrameWidth;
8725 pDynParams->ulDisplayWidth = (((pComponentPrivate->nDisplayWidth + 15) >> 4) << 4);
8726 if (pComponentPrivate->nDisplayWidth != pDynParams->ulDisplayWidth ) {
8727 pComponentPrivate->nDisplayWidth = pDynParams->ulDisplayWidth;
8728 OMX_PRDSP2(pComponentPrivate->dbg, "warning Display Width adjusted to %lu\n",pDynParams->ulDisplayWidth);
8731 else if (pComponentPrivate->pCompPort[1]->hTunnelComponent != NULL){
8732 if (pComponentPrivate->pInPortDef->format.video.nFrameWidth > pComponentPrivate->nDisplayWidth) {
8733 pComponentPrivate->nDisplayWidth = pComponentPrivate->pInPortDef->format.video.nFrameWidth;
8735 pDynParams->ulDisplayWidth = (((pComponentPrivate->nDisplayWidth + 15) >> 4) << 4);
8736 if (pComponentPrivate->nDisplayWidth != pDynParams->ulDisplayWidth ) {
8737 pComponentPrivate->nDisplayWidth = pDynParams->ulDisplayWidth;
8738 OMX_PRDSP2(pComponentPrivate->dbg, "warning Display Width adjusted to %lu\n",pDynParams->ulDisplayWidth);
8748 if (pComponentPrivate->pOutPortDef->format.video.eColorFormat == VIDDEC_COLORFORMAT422) {
8759 pComponentPrivate->bTransPause = 0;
8761 if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload &&
8762 pComponentPrivate->eLCMLState != VidDec_LCML_State_Destroy &&
8763 pComponentPrivate->pLCML != NULL &&
8764 pComponentPrivate->bLCMLHalted != OMX_TRUE){
8770 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
8771 pComponentPrivate->pHandle->pApplicationPrivate,
8780 if(pComponentPrivate->bTransPause != 0) {
8781 pComponentPrivate->bTransPause = 0;
8791 OMX_PRDSP4(pComponentPrivate->dbg, "Codec AlgCtrl 0x%x\n",eError);
8797 if(pComponentPrivate->eState == OMX_StateIdle) {
8802 OMX_PRDSP2(pComponentPrivate->dbg, "Initializing DSP for mpeg4 and h263 eCompressionFormat 0x%x\n",
8803 pComponentPrivate->pInPortDef->format.video.eCompressionFormat);
8804 OMX_MALLOC_STRUCT_SIZED(pDynParams, SPARKVDEC_UALGDynamicParams, sizeof(SPARKVDEC_UALGDynamicParams) + VIDDEC_PADDING_FULL,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel4]);
8806 OMX_TRACE4(pComponentPrivate->dbg, "Error: Malloc failed\n");
8826 /*pComponentPrivate->bTransPause = 0;*//*flag to wait for the generated event*/
8827 VIDDEC_PTHREAD_MUTEX_LOCK(pComponentPrivate->sMutex);
8829 if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload &&
8830 pComponentPrivate->eLCMLState != VidDec_LCML_State_Destroy &&
8831 pComponentPrivate->pLCML != NULL &&
8832 pComponentPrivate->bLCMLHalted != OMX_TRUE){
8837 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->sMutex);
8842 VIDDEC_PTHREAD_MUTEX_WAIT(pComponentPrivate->sMutex);
8843 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->sMutex);
8849 OMX_PRDSP4(pComponentPrivate->dbg, "Codec AlgCtrl 0x%x\n",eError);
8856 eError = VIDDEC_SetMpeg4_Parameters(pComponentPrivate);
8875 * pComponentPrivate Component private structure
8883 OMX_ERRORTYPE VIDDEC_UnloadCodec(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate)
8887 OMX_PRDSP1(pComponentPrivate->dbg, "+++ENTERING\n");
8888 if (!(pComponentPrivate->eState == OMX_StateLoaded) &&
8889 !(pComponentPrivate->eState == OMX_StateWaitForResources)) {
8890 pLcmlHandle = (LCML_DSP_INTERFACE*)pComponentPrivate->pLCML;
8891 if (pComponentPrivate->eState == OMX_StateExecuting) {
8892 if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload &&
8893 pComponentPrivate->eLCMLState != VidDec_LCML_State_Destroy &&
8894 pComponentPrivate->pLCML != NULL &&
8895 pComponentPrivate->bLCMLHalted != OMX_TRUE) {
8896 VIDDEC_PTHREAD_MUTEX_LOCK(pComponentPrivate->sMutex);
8897 OMX_PRDSP1(pComponentPrivate->dbg, "LCML_ControlCodec called MMCodecControlStop 0x%x\n",eError);
8900 OMX_PRDSP4(pComponentPrivate->dbg, "Occurred in Codec Stop...\n");
8902 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
8903 pComponentPrivate->pHandle->pApplicationPrivate,
8908 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->sMutex);
8912 VIDDEC_PTHREAD_MUTEX_WAIT(pComponentPrivate->sMutex);
8913 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->sMutex);
8915 pComponentPrivate->eLCMLState = VidDec_LCML_State_Stop;
8917 if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload &&
8918 pComponentPrivate->pLCML != NULL){
8921 OMX_PRDSP2(pComponentPrivate->dbg, "LCML_ControlCodec called EMMCodecControlDestroy 0x%p\n",pLcmlHandle);
8923 OMX_PRDSP4(pComponentPrivate->dbg, "Occurred in Codec Destroy...\n");
8925 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
8926 pComponentPrivate->pHandle->pApplicationPrivate,
8931 OMX_ERROR4(pComponentPrivate->dbg, "Incorrect State Transition 0x%x\n", eError);
8935 pComponentPrivate->eLCMLState = VidDec_LCML_State_Destroy;
8936 OMX_PRDSP1(pComponentPrivate->dbg, "LCML_ControlCodec called EMMCodecControlDestroy 0x%p\n",pLcmlHandle);
8939 if(pComponentPrivate->pModLCML != NULL){
8940 dlclose(pComponentPrivate->pModLCML);
8941 pComponentPrivate->pModLCML = NULL;
8942 pComponentPrivate->pLCML = NULL;
8943 pComponentPrivate->eLCMLState = VidDec_LCML_State_Unload;
8946 if(pComponentPrivate->pModLCML != NULL){
8947 FreeLibrary(pComponentPrivate->pModLCML);
8948 pComponentPrivate->pModLCML = NULL;
8949 pComponentPrivate->pLCML = NULL;
8950 pComponentPrivate->eLCMLState = VidDec_LCML_State_Unload;
8954 pComponentPrivate->bLCMLHalted = OMX_TRUE;
8968 * pComponentPrivate Component private structure
8976 OMX_ERRORTYPE VIDDEC_Set_SN_StreamType(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate)
8986 OMX_PRDSP1(pComponentPrivate->dbg, "Initializing DSP for wmv9 eCompressionFormat 0x%x\n",
8987 pComponentPrivate->pInPortDef->format.video.eCompressionFormat);
8989 pLcmlHandle = (LCML_DSP_INTERFACE*)pComponentPrivate->pLCML;
8990 OMX_MALLOC_STRUCT_SIZED(pDynParams, WMV9DEC_UALGDynamicParams, sizeof(WMV9DEC_UALGDynamicParams) + VIDDEC_PADDING_FULL,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel4]);
8992 OMX_TRACE4(pComponentPrivate->dbg, "Error: Malloc failed\n");
9007 if (pComponentPrivate->nWMVFileType == VIDDEC_WMV_ELEMSTREAM) {
9019 if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload &&
9020 pComponentPrivate->eLCMLState != VidDec_LCML_State_Destroy &&
9021 pComponentPrivate->pLCML != NULL &&
9022 pComponentPrivate->bLCMLHalted != OMX_TRUE){
9023 VIDDEC_PTHREAD_MUTEX_LOCK(pComponentPrivate->sMutex);
9024 OMX_PRDSP1(pComponentPrivate->dbg, "Sending Control coded command EMMCodecControlAlgCtrl\n");
9030 pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
9031 pComponentPrivate->pHandle->pApplicationPrivate,
9036 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->sMutex);
9040 VIDDEC_PTHREAD_MUTEX_WAIT(pComponentPrivate->sMutex);
9041 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->sMutex);
9044 pComponentPrivate->bTransPause = OMX_FALSE;
9049 OMX_PRDSP4(pComponentPrivate->dbg, "Codec AlgCtrl 0x%x\n",eError);
9063 * pComponentPrivate Component private structure
9071 OMX_ERRORTYPE VIDDEC_SetMpeg4_Parameters(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate)
9087 OMX_PRDSP2(pComponentPrivate->dbg,"Initializing DSP for mpeg4 and h263 eCompressionFormat 0x%x\n",
9088 pComponentPrivate->pInPortDef->format.video.eCompressionFormat);
9089 pLcmlHandle = (LCML_DSP_INTERFACE*)pComponentPrivate->pLCML;
9090 OMX_MALLOC_STRUCT_SIZED(pDynParams, MP4VDEC_UALGDynamicParams, sizeof(MP4VDEC_UALGDynamicParams) + VIDDEC_PADDING_FULL,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel4]);
9092 OMX_TRACE4(pComponentPrivate->dbg, "Error: Malloc failed\n");
9111 if(pComponentPrivate->pOutPortDef->format.video.nFrameWidth > 480 ||
9112 pComponentPrivate->pOutPortDef->format.video.nFrameHeight > 480){
9118 if(pComponentPrivate->pDeblockingParamType->bDeblocking && bDisDeblocking == OMX_FALSE){
9130 if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload &&
9131 pComponentPrivate->eLCMLState != VidDec_LCML_State_Destroy &&
9132 pComponentPrivate->pLCML != NULL &&
9133 pComponentPrivate->bLCMLHalted != OMX_TRUE){
9135 VIDDEC_PTHREAD_MUTEX_LOCK(pComponentPrivate->sMutex);
9141 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->sMutex);
9145 VIDDEC_PTHREAD_MUTEX_WAIT(pComponentPrivate->sMutex);
9146 VIDDEC_PTHREAD_MUTEX_UNLOCK(pComponentPrivate->sMutex);
9149 pComponentPrivate->bTransPause = OMX_FALSE;
9155 OMX_PRDSP4(pComponentPrivate->dbg, "Codec AlgCtrl 0x%x\n",eError);
9163 OMX_ERRORTYPE AddStateTransition(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate) {
9167 if(pthread_mutex_lock(&pComponentPrivate->mutexStateChangeRequest)) {
9172 pComponentPrivate->nPendingStateChangeRequests++;
9174 if(pthread_mutex_unlock(&pComponentPrivate->mutexStateChangeRequest)) {
9181 OMX_ERRORTYPE RemoveStateTransition(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate, OMX_BOOL bEnableSignal) {
9185 if(pthread_mutex_lock(&pComponentPrivate->mutexStateChangeRequest)) {
9189 pComponentPrivate->nPendingStateChangeRequests--;
9192 if(!pComponentPrivate->nPendingStateChangeRequests && bEnableSignal) {
9193 pthread_cond_signal(&(pComponentPrivate->StateChangeCondition));
9196 if(pthread_mutex_unlock(&pComponentPrivate->mutexStateChangeRequest)) {