56 if (omx_base_component_Private->
name) {
57 free(omx_base_component_Private->
name);
59 if (omx_base_component_Private->
bStateSem) {
61 free(omx_base_component_Private->
bStateSem);
63 if (omx_base_component_Private->
bMgmtSem) {
65 free(omx_base_component_Private->
bMgmtSem);
75 if (omx_base_component_Private) {
76 free(omx_base_component_Private);
106 if (!omx_base_component_Private) {
126 if (!omx_base_component_Private->
messageSem) {
136 if(!omx_base_component_Private->
bMgmtSem) {
138 if (!omx_base_component_Private->
bMgmtSem) {
149 if(!omx_base_component_Private->
bStateSem) {
151 if (!omx_base_component_Private->
bStateSem) {
191 if (!omx_base_component_Private->
name) {
195 strcpy(omx_base_component_Private->
name,cComponentName);
198 omx_base_component_Private->
callbacks = NULL;
201 omx_base_component_Private->
nGroupID = 0;
222 pthread_mutex_init(&omx_base_component_Private->
flush_mutex, NULL);
276 omx_base_component_Private->
callbacks=NULL;
296 if(omx_base_component_Private->
bMgmtSem){
298 free(omx_base_component_Private->
bMgmtSem);
299 omx_base_component_Private->
bMgmtSem=NULL;
309 if(omx_base_component_Private->
bStateSem){
311 free(omx_base_component_Private->
bStateSem);
312 omx_base_component_Private->
bStateSem=NULL;
315 if(omx_base_component_Private->
name){
316 free(omx_base_component_Private->
name);
317 omx_base_component_Private->
name=NULL;
320 pthread_mutex_destroy(&omx_base_component_Private->
flush_mutex);
352 omx_base_component_Private->
destructor(openmaxStandComp);
391 switch(omx_base_component_Private->
state){
407 i < omx_base_component_Private->sPortTypesParam[j].nStartPortNumber +
410 pPort = omx_base_component_Private->
ports[i];
412 while(pPort->pBufferQueue->nelem > 0) {
414 __func__,(
int)pPort->pBufferQueue->nelem,(
int)i,omx_base_component_Private->
name);
418 err = pPort->Port_FreeTunnelBuffer(pPort,i);
424 DEBUG(
DEB_LEV_FULL_SEQ,
"In %s nPortIndex=%d pAllocSem Semval=%x\n", __func__,(
int)i,(
int)pPort->pAllocSem->semval);
431 pPort->sPortParam.bPopulated =
OMX_FALSE;
433 if(pPort->pInternalBufferStorage != NULL) {
434 free(pPort->pInternalBufferStorage);
435 pPort->pInternalBufferStorage=NULL;
438 if(pPort->bBufferStateAllocated != NULL) {
439 free(pPort->bBufferStateAllocated);
440 pPort->bBufferStateAllocated=NULL;
467 switch(omx_base_component_Private->
state){
488 switch(omx_base_component_Private->
state){
499 i < omx_base_component_Private->sPortTypesParam[j].nStartPortNumber +
501 pPort = omx_base_component_Private->
ports[i];
505 err= pPort->Port_AllocateTunnelBuffer(pPort, i);
514 __func__, pPort->sPortParam.bEnabled,pPort->sPortParam.bPopulated);
515 if (pPort->sPortParam.nBufferCountActual > 0) {
517 pthread_mutex_lock(&pPort->exitMutex);
518 if (pPort->bIsDestroying) {
520 pthread_mutex_unlock(&pPort->exitMutex);
523 pthread_mutex_unlock(&pPort->exitMutex);
525 pPort->sPortParam.bPopulated =
OMX_TRUE;
556 i < omx_base_component_Private->sPortTypesParam[j].nStartPortNumber +
559 pPort = omx_base_component_Private->
ports[i];
572 i < omx_base_component_Private->sPortTypesParam[j].nStartPortNumber +
575 pPort = omx_base_component_Private->
ports[i];
595 switch(omx_base_component_Private->
state) {
617 switch(omx_base_component_Private->
state) {
628 i < omx_base_component_Private->sPortTypesParam[j].nStartPortNumber +
630 pPort = omx_base_component_Private->
ports[i];
632 for(k=0;k<pPort->nNumTunnelBuffer;k++) {
650 i < omx_base_component_Private->sPortTypesParam[j].nStartPortNumber +
653 pPort=omx_base_component_Private->
ports[i];
654 DEBUG(
DEB_LEV_PARAMS,
"In %s: state transition Paused 2 Executing, nelem=%d,semval=%d,Buf Count Actual=%d\n", __func__,
655 pPort->pBufferQueue->nelem,pPort->pBufferSem->semval,(
int)pPort->sPortParam.nBufferCountActual);
658 (pPort->pBufferQueue->nelem == (pPort->pBufferSem->semval + pPort->sPortParam.nBufferCountActual))) {
659 for(k=0; k < pPort->sPortParam.nBufferCountActual;k++) {
682 switch(omx_base_component_Private->
state) {
722 if (header == NULL) {
727 if(*((
OMX_U32*)header) != size) {
728 DEBUG(
DEB_LEV_ERR,
"In %s the header has a wrong size %i should be %i\n",__func__,(
int)*((
OMX_U32*)header),(
int)size);
774 if (nPortIndex >= nNumPorts) {
775 DEBUG(
DEB_LEV_ERR,
"Bad Port index %i when the component has %i ports\n", (
int)nPortIndex, (
int)nNumPorts);
779 pPort = omx_base_component_Private->
ports[nPortIndex];
783 DEBUG(
DEB_LEV_ERR,
"In %s Incorrect State=%x lineno=%d\n",__func__,omx_base_component_Private->
state,__LINE__);
814 strcpy(pComponentName, omx_base_component_Private->
name);
827 uuid[0] = (
OMX_U32)omx_component;
830 memcpy(*pComponentUUID, uuid,
sizeof(uuid));
848 strcat((
char*)cRole,
"\0");
868 omx_base_component_Private->
callbacks = pCallbacks;
874 i < omx_base_component_Private->sPortTypesParam[j].nStartPortNumber +
876 pPort = omx_base_component_Private->
ports[i];
899 OMX_PTR ComponentParameterStructure) {
914 if (ComponentParameterStructure == NULL) {
917 switch(nParamIndex) {
926 pPortDomains->nPorts = 0;
927 pPortDomains->nStartPortNumber = 0;
948 pPrioMgmt->nGroupPriority = omx_base_component_Private->
nGroupPriority;
949 pPrioMgmt->nGroupID = omx_base_component_Private->
nGroupID;
963 pPort = omx_base_component_Private->
ports[pBufferSupplier->nPortIndex];
1002 DEBUG(
DEB_LEV_ERR,
"In %s OMX_IndexVendorCompPropTunnelFlags nPortIndex=%d Line=%d \n",
1003 __func__,(
int)pPropTunnelSetup->nPortIndex,__LINE__);
1008 pPort = omx_base_component_Private->
ports[pPropTunnelSetup->nPortIndex];
1010 pPropTunnelSetup->nTunnelSetup.
nTunnelFlags = pPort->nTunnelFlags;
1011 pPropTunnelSetup->nTunnelSetup.eSupplier = pPort->eBufferSupplier;
1033 OMX_PTR ComponentParameterStructure) {
1045 if (ComponentParameterStructure == NULL) {
1050 switch(nParamIndex) {
1074 OMX_U32 j,old_nBufferCountActual=0;
1112 DEBUG(
DEB_LEV_ERR,
"In %s wrong port domain. Out of OpenMAX scope\n",__func__);
1124 if(pPort->pInternalBufferStorage) {
1128 if(pPort->bBufferStateAllocated) {
1129 pPort->bBufferStateAllocated = realloc(pPort->bBufferStateAllocated,pPort->sPortParam.nBufferCountActual*
sizeof(
BUFFER_STATUS_FLAG));
1130 for(j=0; j < pPort->sPortParam.nBufferCountActual; j++) {
1152 DEBUG(
DEB_LEV_PARAMS,
"In %s Buf Sup Port index=%d\n", __func__,(
int)pBufferSupplier->nPortIndex);
1154 if(pBufferSupplier == NULL) {
1182 pPort = omx_base_component_Private->
ports[pBufferSupplier->nPortIndex];
1191 pBufferSupplier->nPortIndex = pPort->nTunneledPort;
1197 pBufferSupplier->nPortIndex = pPort->nTunneledPort;
1215 DEBUG(
DEB_LEV_PARAMS,
"In %s port %d Tunnel flag=%x \n", __func__,(
int)pBufferSupplier->nPortIndex, (
int)pPort->nTunnelFlags);
1235 OMX_PTR pComponentConfigStructure) {
1249 OMX_PTR pComponentConfigStructure) {
1264 if(strcmp(cParameterName,
"OMX.st.index.param.BellagioThreadsID") == 0) {
1283 *pState = omx_base_component_Private->
state;
1309 messageQueue = omx_base_component_Private->
messageQueue;
1310 messageSem = omx_base_component_Private->
messageSem;
1317 message->messageParam = nParam;
1318 message->pCmdData=pCmdData;
1328 i < omx_base_component_Private->sPortTypesParam[j].nStartPortNumber +
1331 pPort = omx_base_component_Private->
ports[i];
1333 if(pPort->pInternalBufferStorage == NULL) {
1337 if(pPort->bBufferStateAllocated == NULL) {
1338 pPort->bBufferStateAllocated = calloc(pPort->sPortParam.nBufferCountActual,
sizeof(
BUFFER_STATUS_FLAG));
1341 for(k=0; k < pPort->sPortParam.nBufferCountActual; k++) {
1373 if(message->messageParam ==
OMX_ALL) {
1377 i < omx_base_component_Private->sPortTypesParam[j].nStartPortNumber +
1394 if(message->messageParam ==
OMX_ALL) {
1398 i < omx_base_component_Private->sPortTypesParam[j].nStartPortNumber +
1422 errQue =
queue(messageQueue, message);
1453 if (omx_base_component_Private == NULL) {
1465 if(message == NULL){
1470 omx_base_component_Private->
messageHandler(openmaxStandComp, message);
1519 if (omx_base_component_Private->
callbacks) {
1538 i < omx_base_component_Private->sPortTypesParam[j].nStartPortNumber +
1546 i < omx_base_component_Private->sPortTypesParam[j].nStartPortNumber +
1548 pPort=omx_base_component_Private->
ports[i];
1570 i < omx_base_component_Private->sPortTypesParam[j].nStartPortNumber +
1580 pPort=omx_base_component_Private->
ports[i];
1620 i < omx_base_component_Private->sPortTypesParam[j].nStartPortNumber +
1622 pPort=omx_base_component_Private->
ports[i];
1630 i < omx_base_component_Private->sPortTypesParam[j].nStartPortNumber +
1632 pPort=omx_base_component_Private->
ports[i];
1659 i < omx_base_component_Private->sPortTypesParam[j].nStartPortNumber +
1688 i < omx_base_component_Private->sPortTypesParam[j].nStartPortNumber +
1690 pPort=omx_base_component_Private->
ports[i];
1730 i < omx_base_component_Private->sPortTypesParam[j].nStartPortNumber +
1746 i < omx_base_component_Private->sPortTypesParam[j].nStartPortNumber +
1748 pPort=omx_base_component_Private->
ports[i];
1794 pPort = omx_base_component_Private->
ports[nPortIndex];
1797 DEBUG(
DEB_LEV_ERR,
"Out of %s for component %p with err %i\n", __func__, hComponent, (
int)
err);
1823 pPort = omx_base_component_Private->
ports[nPortIndex];
1824 err = pPort->
Port_UseBuffer(pPort, ppBufferHdr, nPortIndex, pAppPrivate, nSizeBytes, pBuffer);
1826 DEBUG(
DEB_LEV_ERR,
"Out of %s for component %p with err %i\n", __func__, hComponent, (
int)
err);
1859 pPort = omx_base_component_Private->
ports[nPortIndex];
1862 DEBUG(
DEB_LEV_ERR,
"Out of %s for component %p with err %i\n", __func__, hComponent, (
int)
err);
1887 DEBUG(
DEB_LEV_ERR,
"In %s: wrong port direction in Component %s\n", __func__,omx_base_component_Private->
name);
1917 DEBUG(
DEB_LEV_ERR,
"In %s: wrong port(%d) direction(%x) pBuffer=%p in Component %s\n", __func__,
1949 pPort = omx_base_component_Private->
ports[nPort];
1952 DEBUG(
DEB_LEV_ERR,
"Out of %s for component %p with err %i\n", __func__, hComponent, (
int)
err);
1972 if ((nQualityLevel > 0) && (nQualityLevel <= omx_base_component_Private->nqualitylevels)) {