/** The destructor
 */
OMX_ERRORTYPE omx_amr_audiodec_component_Destructor(OMX_COMPONENTTYPE *openmaxStandComp)
{
    omx_amr_audiodec_component_PrivateType* omx_amr_audiodec_component_Private = openmaxStandComp->pComponentPrivate;
    OMX_U32 i;

    if(omx_amr_audiodec_component_Private->extradata) {
        free(omx_amr_audiodec_component_Private->extradata);
    }

    /*Free Codec Context*/
    av_free (omx_amr_audiodec_component_Private->avCodecContext);

    /* frees port/s */
    if (omx_amr_audiodec_component_Private->ports) {
        for (i=0; i < omx_amr_audiodec_component_Private->sPortTypesParam[OMX_PortDomainAudio].nPorts; i++) {
            if(omx_amr_audiodec_component_Private->ports[i])
                omx_amr_audiodec_component_Private->ports[i]->PortDestructor(omx_amr_audiodec_component_Private->ports[i]);
        }
        free(omx_amr_audiodec_component_Private->ports);
        omx_amr_audiodec_component_Private->ports=NULL;
    }

    DEBUG(DEB_LEV_FUNCTION_NAME, "Destructor of amr_audiodecoder component is called\n");

    omx_base_filter_Destructor(openmaxStandComp);

    noAudioDecInstance--;

    return OMX_ErrorNone;
}
Exemplo n.º 2
0
/** The destructor of the video decoder component
  */
OMX_ERRORTYPE omx_shvpudec_component_Destructor(OMX_COMPONENTTYPE *openmaxStandComp) {
  omx_shvpudec_component_PrivateType* omx_shvpudec_component_Private = openmaxStandComp->pComponentPrivate;
  OMX_U32 i;
  
#if 0
  if(omx_shvpudec_component_Private->extradata) {
    free(omx_shvpudec_component_Private->extradata);
    omx_shvpudec_component_Private->extradata=NULL;
  }
#endif

  if(omx_shvpudec_component_Private->avCodecSyncSem) {
    tsem_deinit(omx_shvpudec_component_Private->avCodecSyncSem); 
    free(omx_shvpudec_component_Private->avCodecSyncSem);
    omx_shvpudec_component_Private->avCodecSyncSem = NULL;
  }

  /* frees port/s */   
  if (omx_shvpudec_component_Private->ports) {   
    for (i=0; i < omx_shvpudec_component_Private->sPortTypesParam[OMX_PortDomainVideo].nPorts; i++) {   
      if(omx_shvpudec_component_Private->ports[i])   
        omx_shvpudec_component_Private->ports[i]->PortDestructor(omx_shvpudec_component_Private->ports[i]);   
    }   
    free(omx_shvpudec_component_Private->ports);   
    omx_shvpudec_component_Private->ports=NULL;   
  } 


  DEBUG(DEB_LEV_FUNCTION_NAME, "Destructor of video decoder component is called\n");

  omx_base_filter_Destructor(openmaxStandComp);
  noVideoDecInstance--;

  return OMX_ErrorNone;
}
/** The destructor */
OMX_ERRORTYPE omx_jpegdec_component_Destructor(OMX_COMPONENTTYPE *openmaxStandComp) {

  omx_jpegdec_component_PrivateType* omx_jpegdec_component_Private = openmaxStandComp->pComponentPrivate;
  OMX_U32 i;
  if(omx_jpegdec_component_Private->jpegdecSyncSem) {
    tsem_deinit(omx_jpegdec_component_Private->jpegdecSyncSem);
    free(omx_jpegdec_component_Private->jpegdecSyncSem);
    omx_jpegdec_component_Private->jpegdecSyncSem = NULL;
  }
  
  if(omx_jpegdec_component_Private->jpegdecSyncSem1) {
    tsem_deinit(omx_jpegdec_component_Private->jpegdecSyncSem1);
    free(omx_jpegdec_component_Private->jpegdecSyncSem1);
    omx_jpegdec_component_Private->jpegdecSyncSem1 = NULL;
  }

  /* frees port/s */
  if (omx_jpegdec_component_Private->ports) {
    for (i=0; i < omx_jpegdec_component_Private->sPortTypesParam[OMX_PortDomainImage].nPorts; i++) {
      if(omx_jpegdec_component_Private->ports[i]) {
        omx_jpegdec_component_Private->ports[i]->PortDestructor(omx_jpegdec_component_Private->ports[i]);
      }
    }
    free(omx_jpegdec_component_Private->ports);
    omx_jpegdec_component_Private->ports=NULL;
  }

  DEBUG(DEB_LEV_FUNCTION_NAME, "Destructor of mad decoder component is called\n");
  omx_base_filter_Destructor(openmaxStandComp);
//  nojpegdecInstance--;

  return OMX_ErrorNone;

}
/** The destructor
 */
OMX_ERRORTYPE omx_video_scheduler_component_Destructor(OMX_COMPONENTTYPE *openmaxStandComp) {
  omx_video_scheduler_component_PrivateType*   omx_video_scheduler_component_Private = openmaxStandComp->pComponentPrivate;
  OMX_U32                                      i;

  DEBUG(DEB_LEV_FUNCTION_NAME, "Destructor of video scheduler component is called\n");

  /* frees port/s */
  if (omx_video_scheduler_component_Private->ports) {
  for(i=0; i < (omx_video_scheduler_component_Private->sPortTypesParam[OMX_PortDomainVideo].nPorts +
                   omx_video_scheduler_component_Private->sPortTypesParam[OMX_PortDomainOther].nPorts); i++) {
    if(omx_video_scheduler_component_Private->ports[i])
       omx_video_scheduler_component_Private->ports[i]->PortDestructor(omx_video_scheduler_component_Private->ports[i]);
    }
    free(omx_video_scheduler_component_Private->ports);
    omx_video_scheduler_component_Private->ports=NULL;
  }

  omx_base_filter_Destructor(openmaxStandComp);

  return OMX_ErrorNone;
}
/***************************************************************************
* Function : omx_ImageDecoderJpeg_Destructor											   
*
* Description : Destruct the Jpeg Decoder Component.This function free the input and 
*			 output ports then destruct the compenent.
*
* Params	:
*																			   
*	Name		             Type						In/Out		Description 						   
*  	openmaxStandComp    OMX_COMPONENTTYPE*		In/Out	   	Openmax Standard Component structure
*
* Return:
*
* Note:
*
* Revision:
*
*     Author     		Date     		Version   	 Description
*     yuyiwei       	2008.10.9 	    1.0.0       
*									   
***************************************************************************/
OMX_ERRORTYPE omx_ImageDecoderJpeg_Destructor(OMX_COMPONENTTYPE *openmaxStandComp)
{

    omx_jpegdec_component_PrivateType *omx_jpegdec_component_Private = openmaxStandComp->pComponentPrivate;
    omx_jpegdec_component_PortType *pPort;
    OMX_U32 i;

    /* frees port/s */
    if (omx_jpegdec_component_Private->sPortTypesParam.nPorts && omx_jpegdec_component_Private->ports)
    {
        for (i = 0; i < omx_jpegdec_component_Private->sPortTypesParam.nPorts; i++)
        {
            pPort = (omx_jpegdec_component_PortType*)omx_jpegdec_component_Private->ports[i];
            if (pPort->sPortParam.format.image.cMIMEType != NULL)
            {
                omx_free(pPort->sPortParam.format.image.cMIMEType);
                pPort->sPortParam.format.image.cMIMEType = NULL;
            }
        }
    }
	/** deinitialise the semaphore used for jpeg encoder access synchronization */
    if (omx_jpegdec_component_Private->JpegSyncSem)
    {
        omx_sem_deinit(omx_jpegdec_component_Private->JpegSyncSem);
        omx_free(omx_jpegdec_component_Private->JpegSyncSem);
        omx_jpegdec_component_Private->JpegSyncSem = NULL;
    }

    DEBUG(DEB_LEV_FUNCTION_NAME, "Destructor of jpeg decoder component is called\n");

	/** component destruct */
    omx_base_filter_Destructor(openmaxStandComp);

    nojpegdecInstance--;

    return OMX_ErrorNone;

}
/** The destructor
  */
OMX_ERRORTYPE omx_audio_decoder_component_Destructor(
  OMX_COMPONENTTYPE *pComponent)
{
  omx_audio_decoder_component_PrivateType* pPrivate = pComponent->pComponentPrivate;
  OMX_U32 i;

  DEBUG(DEB_LEV_FUNCTION_NAME, "Destructor of audiodecoder component is called\n");

  /* frees port/s */
  if (pPrivate->ports) {
    for (i=0; i < pPrivate->sPortTypesParam[OMX_PortDomainAudio].nPorts; i++) {
      if(pPrivate->ports[i])
        pPrivate->ports[i]->PortDestructor(pPrivate->ports[i]);
    }
    free(pPrivate->ports);
    pPrivate->ports=NULL;
  }

  omx_base_filter_Destructor(pComponent);

  noAudioSplitterCompInstance--;

  return OMX_ErrorNone;
}