Exemple #1
0
int ALG_vidEncDelete(void *hndl)
{
  ALG_VidEncObj *pObj=(ALG_VidEncObj *)hndl;

  if(pObj==NULL)
    return OSA_EFAIL;

  if(pObj->createPrm.codec==ALG_VID_CODEC_MJPEG)
  {
    ALG_jpgEncDelete(pObj->hJpgEncode);

  }
  else {

    if(pObj->hEncode)
    {
    	if( pObj->MV_Size != 0 )
    	{
				OSA_cmemFree(pObj->MV_Addr);
    	}

      VIDENC1_delete(pObj->hEncode);
    }
  }

  OSA_memFree(pObj);

  return OSA_SOK;
}
Exemple #2
0
/* ========================================================================== */
int OSA_EventDelete(OSA_PTR pEvents)
{
    int bReturnStatus = OSA_SOK;
    OSA_THREAD_EVENT *plEvent = (OSA_THREAD_EVENT *)pEvents;

	if(0 == plEvent){
		bReturnStatus = OSA_EFAIL;
		goto EXIT;
	}

	if(0 != pthread_mutex_lock(&(plEvent->mutex))) {
		/*OSAL_ERROR("Event Delete: Mutex Lock failed !");*/
		bReturnStatus = OSA_EFAIL;
	}
    if(0 != pthread_cond_destroy(&(plEvent->condition))){
		/*OSAL_ERROR("Event Delete: Conditional Variable Destroy failed !");*/
		bReturnStatus = OSA_EFAIL;
	}

	if(0 != pthread_mutex_unlock(&(plEvent->mutex))) {
		/*OSAL_ERROR("Event Delete: Mutex Unlock failed !");*/
		bReturnStatus = OSA_EFAIL;
	}

	if(0 != pthread_mutex_destroy(&(plEvent->mutex))) {
		/*OSAL_ERROR("Event Delete: Mutex Destory failed !");*/
		bReturnStatus = OSA_EFAIL;
	}

    OSA_memFree(plEvent);
EXIT:
	return bReturnStatus;
}
Exemple #3
0
/* ========================================================================== */
int OSA_EventCreate(OSA_PTR *pEvents)
{
    int bReturnStatus = OSA_EFAIL;
    OSA_THREAD_EVENT *plEvent = NULL;

    plEvent = (OSA_THREAD_EVENT *)OSA_memAlloc(sizeof(OSA_THREAD_EVENT));

	if(0 == plEvent) {
		bReturnStatus = OSA_EFAIL;
		goto EXIT;
	}
    plEvent->bSignaled = 0;
	plEvent->eFlags = 0;

	if(0 != pthread_mutex_init(&(plEvent->mutex), NULL)){
		/*OSA_ERROR("Event Create:Mutex Init failed !");*/
		goto EXIT;  /*bReturnStatus = TIMM_OSAL_ERR_UNKNOWN*/
	}

	if(0 != pthread_cond_init(&(plEvent->condition), NULL)){
		/*TIMM_OSAL_Error("Event Create:Conditional Variable  Init failed !");*/
		pthread_mutex_destroy(&(plEvent->mutex));
		/*TIMM_OSAL_Free(plEvent);*/
	}
	else {
    	*pEvents = (OSA_PTR)plEvent;
 		bReturnStatus = OSA_SOK;
	}
EXIT:
    if ((OSA_SOK != bReturnStatus) && (0 != plEvent)) {
        OSA_memFree(plEvent);
	}
	return bReturnStatus;
}
Exemple #4
0
int OSA_queDelete(OSA_QueHndl *hndl)
{
  if(hndl->queue!=NULL)
    OSA_memFree(hndl->queue);
    
  pthread_cond_destroy(&hndl->condRd);
  pthread_cond_destroy(&hndl->condWr);
  pthread_mutex_destroy(&hndl->lock);  
  
  return OSA_SOK;
}
Exemple #5
0
int OSA_mbxFreeMsg(OSA_MsgHndl *pMsg)
{
  if(pMsg->flags & OSA_MBX_FREE_PRM) {
    if(pMsg->pPrm!=NULL) {
      OSA_memFree(pMsg->pPrm);
    }
  }

  OSA_assertSuccess( OSA_msgqFreeMsgHndl(pMsg) );

  return OSA_SOK;
}
Exemple #6
0
int ALG_jpgDecDelete(void *hndl)
{
  ALG_JpgDecObj *pObj=(ALG_JpgDecObj *)hndl;

  if(pObj==NULL)
    return OSA_EFAIL;

  if(pObj->hDecode)
    IMGDEC1_delete(pObj->hDecode);

  OSA_memFree(pObj);

  return OSA_SOK;
}
Exemple #7
0
void *ALG_jpgEncCreate(ALG_JpgEncCreate *create)
{
  ALG_JpgEncObj *pObj;
  XDAS_Int32 status;

  if(gALG_hEngine==NULL)
    return NULL;

  pObj = OSA_memAlloc(sizeof(ALG_JpgEncObj));
  if(pObj==NULL)
    return NULL;

  memset(pObj, 0, sizeof(*pObj));

  strcpy(pObj->algName, ALG_VID_CODEC_JPEG_ENC_NAME);

  memcpy(&pObj->createPrm, create, sizeof(pObj->createPrm));

  pObj->params.size = sizeof(IMGENC1_Params);
  pObj->params.maxHeight = create->height;
  pObj->params.maxWidth  = pObj->createPrm.offsetH>create->width?pObj->createPrm.offsetH:create->width;
  pObj->params.maxScans  = 1;
  pObj->params.dataEndianness = XDM_BYTE;

  if(create->encDataFormat==ALG_VID_DATA_FORMAT_YUV422)
    pObj->params.forceChromaFormat = XDM_YUV_422P;
  else
    pObj->params.forceChromaFormat = XDM_YUV_420P;

  pObj->hEncode = IMGENC1_create(gALG_hEngine, pObj->algName, &pObj->params);

  if (pObj->hEncode == NULL) {
    OSA_ERROR("Failed to open video encode algorithm: %s (0x%x)\n", pObj->algName, Engine_getLastError(gALG_hEngine));
    OSA_memFree(pObj);
    return NULL;
  }

  status = ALG_jpgEncSetQvalue(pObj, create->qValue);
  if(status!=OSA_SOK) {
    ALG_jpgEncDelete(pObj);
    return NULL;
  }

  return pObj;
}
Exemple #8
0
status_t     thread_delete(thread_t *pthd)
{
    status_t            status = OSA_SOK;
    struct __thread_t * thd    = (struct __thread_t *)(*pthd);

    DBG(DBG_DETAILED, GT_NAME, "thread_delete: Enter (pthd=0x%x).\n", thd);

    thread_check_arguments2(pthd, thd);

    unsigned short cancel = (thd->thd_status == 0);

    if (((thread_t)thd) != thread_self()) {
        if (cancel) {
            int r;

            r = pthread_cancel(thd->thd_id);
            r = pthread_join(thd->thd_id, NULL);
        }
    }

    /*
     *  Modified by: xiong-kaifang.
     *
     *  Date       : Aug 22, 2015.
     *
     *  Description:
     *
     *      Destroy thread attributes object.
     *
     */
    pthread_attr_destroy(&thd->pattrs);

    status |= OSA_memFree(sizeof(struct __thread_t), thd);

    (*pthd) = INVALID_HANDLE;

    DBG(DBG_DETAILED, GT_NAME, "thread_delete: Exit.\n");

    return status;
}
Exemple #9
0
void *ALG_jpgDecCreate(ALG_JpgDecCreate *create)
{
  ALG_JpgDecObj *pObj;

  if(gALG_hEngine==NULL)
    return NULL;

  pObj = OSA_memAlloc(sizeof(ALG_JpgDecObj));
  if(pObj==NULL)
    return NULL;

  memset(pObj, 0, sizeof(*pObj));

  strcpy(pObj->algName, ALG_VID_CODEC_JPEG_DEC_NAME);

  memcpy(&pObj->createPrm, create, sizeof(pObj->createPrm));

  pObj->params.size = sizeof(pObj->params);
  pObj->params.maxHeight = create->maxHeight;
  pObj->params.maxWidth  = create->maxWidth;
  pObj->params.maxScans  = 1;
  pObj->params.dataEndianness = XDM_BYTE;

  if(create->dataFormat==ALG_VID_DATA_FORMAT_YUV422)
    pObj->params.forceChromaFormat = XDM_YUV_422ILE;
  else
    pObj->params.forceChromaFormat = XDM_YUV_420SP;

  pObj->hDecode = IMGDEC1_create(gALG_hEngine, pObj->algName, &pObj->params);

  if (pObj->hDecode == NULL) {
    OSA_ERROR("Failed to open image decode algorithm: %s (0x%x)\n", pObj->algName, Engine_getLastError(gALG_hEngine));
    OSA_memFree(pObj);
    return NULL;
  }

  return pObj;
}
Exemple #10
0
void *ALG_vidEncCreate(ALG_VidEncCreate *create)
{
  XDAS_Int32              status;
  ALG_VidEncObj           *pObj;

  if(gALG_hEngine==NULL)
    return NULL;

  pObj = OSA_memAlloc(sizeof(ALG_VidEncObj));
  if(pObj==NULL)
    return NULL;

  memset(pObj, 0, sizeof(ALG_VidEncObj));

  switch(create->codec) {
    case ALG_VID_CODEC_H264:
      strcpy(pObj->algName, ALG_VID_CODEC_H264_ENC_NAME);
      break;
    case ALG_VID_CODEC_MPEG4:
      strcpy(pObj->algName, ALG_VID_CODEC_MPEG4_ENC_NAME);
      break;
    case ALG_VID_CODEC_MJPEG:
      strcpy(pObj->algName, ALG_VID_CODEC_JPEG_ENC_NAME);
      break;
    default:
      OSA_memFree(pObj);
      return NULL;
  }

  memcpy(&pObj->createPrm, create, sizeof(pObj->createPrm));

  if(create->codec==ALG_VID_CODEC_MJPEG)
  {
    ALG_JpgEncCreate jpgCreate;

    jpgCreate.dataFormat = create->dataFormat;
    jpgCreate.width      = create->width;
    jpgCreate.height     = create->height;
    jpgCreate.offsetH    = create->offsetH;
    jpgCreate.offsetV    = create->offsetV;
    jpgCreate.encDataFormat = ALG_VID_DATA_FORMAT_YUV420;
    jpgCreate.qValue     = create->qValue;

    pObj->hJpgEncode = ALG_jpgEncCreate(&jpgCreate);

    if(pObj->hJpgEncode==NULL) {
      OSA_memFree(pObj);
      return NULL;
    }

    return pObj;
  }

  pObj->params.maxHeight             = create->height;
  pObj->params.maxWidth              = create->width;
  pObj->params.maxFrameRate          = ALD_VID_ENC_MAX_FRAMERATE;
  pObj->params.maxBitRate            = ALD_VID_ENC_MAX_BITRATE;
  pObj->params.inputChromaFormat     = XDM_YUV_420SP;
  pObj->params.dataEndianness        = XDM_BYTE;
  pObj->params.maxInterFrameInterval = 1;
  pObj->params.inputContentType      = IVIDEO_PROGRESSIVE;
  pObj->params.reconChromaFormat     = XDM_YUV_420SP;

  if(create->codec==ALG_VID_CODEC_MPEG4)
  {
 		pObj->params.size       					= sizeof(IMP4VENC_Params);
      	pObj->params.encodingPreset					= XDM_USER_DEFINED;
		pObj->params.maxHeight  					= create->height;
  		pObj->params.maxWidth   					= (create->offsetH>create->width)?create->offsetH:create->width;
  		pObj->params_mpeg4.subWindowHeight 			= create->height;
  		pObj->params_mpeg4.subWindowWidth 			= create->width;
  		pObj->params_mpeg4.rotation					= 0;
  		pObj->params_mpeg4.vbvSize 					= 0;
  		pObj->params_mpeg4.svhMode 					= 0;
  		pObj->params_mpeg4.IFrameBitRateBiasFactor 	= 256;
  		pObj->params_mpeg4.PFrameBitRateBiasFactor 	= 256;
  		pObj->params_mpeg4.peakBufWindow 			= 2;
  		pObj->params_mpeg4.minBitRate				= 64000;	//set to 64kbps
		switch(create->rateControlType) {
			case ALG_VID_ENC_RATE_CONTROL_RCOFF:
			  pObj->params.rateControlPreset     = IVIDEO_NONE;
			  break;
			default:
			case ALG_VID_ENC_RATE_CONTROL_VBR:
			  pObj->params.rateControlPreset     = IVIDEO_STORAGE;
			  break;
			case ALG_VID_ENC_RATE_CONTROL_CBR:
			  pObj->params.rateControlPreset     = IVIDEO_LOW_DELAY;
			  break;
		}
  }
  else if(create->codec==ALG_VID_CODEC_H264)
  {
	  if(77 == create->profileIdc)
	  {
		  pObj->params_h264.profileIdc 					= 77;
		  pObj->params_h264.transform8x8FlagIntraFrame 	= 0;
		  pObj->params_h264.transform8x8FlagInterFrame 	= 0;
		  pObj->params_h264.seqScalingFlag 				= 0;
		  pObj->params_h264.entropyMode 				= 1;
		  printf("[alg_vidEnc]zeng Main profile --------------create->profileIdc=%d\n" , create->profileIdc);
		  
	  }
	  else if(66 == create->profileIdc)
	  {
		  pObj->params_h264.profileIdc 					= 66;
		  pObj->params_h264.transform8x8FlagIntraFrame 	= 0;
		  pObj->params_h264.transform8x8FlagInterFrame 	= 0;
		  pObj->params_h264.seqScalingFlag 				= 0;
		  pObj->params_h264.entropyMode 				= 0;
		  printf("[alg_vidEnc]zeng baseline profile--------------create->profileIdc=%d\n" , create->profileIdc);

	  }
	  else
	  {

		  pObj->params_h264.profileIdc 					= 100;
		  pObj->params_h264.transform8x8FlagIntraFrame 	= 0;
		  pObj->params_h264.transform8x8FlagInterFrame 	= (create->width>2048)?0:1;
		  pObj->params_h264.seqScalingFlag 				= 1;
		  pObj->params_h264.entropyMode 				= 1;	 	 	  	
	 	  printf("[alg_vidEnc]zeng hight profile--------------create->profileIdc=%d\n" , create->profileIdc);
		  
	  }

	  pObj->params.size      						= sizeof(IH264VENC_Params);
	  pObj->params.rateControlPreset				= IVIDEO_USER_DEFINED;
	  pObj->params_h264.levelIdc 					= IH264VENC_LEVEL_40;
	  pObj->params_h264.Log2MaxFrameNumMinus4		= 0;
	  pObj->params_h264.ConstraintSetFlag			= 0;
	  pObj->params_h264.enableVUIparams 			= 7;
	  pObj->params_h264.meAlgo 						= 0;
	  pObj->params_h264.enableARM926Tcm 			= 0;
	  pObj->params_h264.enableDDRbuff 				= (create->ddrEnable) ? 1 : 0;
	  pObj->params_h264.sliceMode 					= 3;
	  pObj->params_h264.EnableLongTermFrame			= 0;
	  pObj->params_h264.outputDataMode 				= IH264VENC_TI_ENTIREFRAME;
	  pObj->params_h264.sliceFormat					= IH264VENC_TI_BYTESTREAM; 
	  printf("[alg_vidEnc]zeng afdfafdasfdasf--------create->profileIdc=%d\n" , create->profileIdc);
	
	  if((create->encodePreset&ALG_VID_ENC_PRESET_MASK) == ALG_VID_ENC_PRESET_AUTO)
	  {
		  if((create->width<320)||(create->height<128))
		  {
			pObj->params.encodingPreset		= XDM_USER_DEFINED;
			pObj->params_h264.encQuality 	= 0;
		  }
		  else {
			if(create->mode == ALG_VID_ENC_MODE_STANDARD) {
				pObj->params.encodingPreset		= XDM_HIGH_QUALITY;
				pObj->params_h264.encQuality 	= 2;
			}
			else {
				pObj->params.encodingPreset		= XDM_HIGH_SPEED;
				pObj->params_h264.encQuality 	= 3;
			}
		  }
  	  }
  	  else {
			pObj->params.encodingPreset		= XDM_USER_DEFINED;
			pObj->params_h264.encQuality 	= 0;
	  }
	  if((create->encodePreset&ALG_VID_ENC_SVC_MASK) == ALG_VID_ENC_PRESET_SVC)
	  {
		  pObj->params_h264.numTemporalLayers			= 3;
		  pObj->params_h264.svcSyntaxEnable				= XDAS_FALSE;
		  /*
		  To disable svcSyntaxEnable as most player cant play this SVC syntax,
		  if player is comptatible, please change the value to XDAS_TRUE;
		  */
	  }
	  else	{
		  pObj->params_h264.numTemporalLayers			= 0;
		  pObj->params_h264.svcSyntaxEnable				= XDAS_FALSE;
	  }
  }

  /*enable mv when initialize for get memory information*/
  pObj->createPrm.mbMvOutEnable		 = 1;
  pObj->createPrm.forceKeyFrame 	 = FALSE;

  /* Create video encoder instance */
  pObj->hEncode = VIDENC1_create(gALG_hEngine, pObj->algName, &pObj->params);

  if (pObj->hEncode == NULL) {
    OSA_ERROR("Failed to open video encode algorithm: %s (0x%x)\n", pObj->algName, Engine_getLastError(gALG_hEngine));
    OSA_memFree(pObj);
    return NULL;
  }

  status = ALG_vidEncSetDynamicParams(pObj);
  if(status!=OSA_SOK) {
    ALG_vidEncDelete(pObj);
    return NULL;
  }

  return pObj;
}
Exemple #11
0
int IMAGE_TUNE_LoadParams(int paramSetId)
{
  int retVal = OSA_EFAIL;
  Uint32 readSize = 0, pID = 0;

#ifdef IMAGE_TUNE_MULTI_PARAM
  IMAGE_TUNE_ParamSetList *pPrmList;

#if 0
  if(gImageTunePrmList != NULL) {
    pPrmList = gImageTunePrmList;
    retVal = OSA_fileReadFile(IMAGE_TUNE_PARAMSET_DIR, (Uint8*)pPrmList, sizeof(IMAGE_TUNE_ParamSetList), &readSize);

    if(retVal != OSA_SOK || readSize!=sizeof(IMAGE_TUNE_ParamSetList)) {
        OSA_printf(" IMAGE TUNE:PId %d; ParamSet Size: %d, Size %d;  Set default paramset !!!\n", paramSetId, sizeof(IMAGE_TUNE_ParamSetList), readSize);
        retVal = OSA_EFAIL;
        return retVal;
    }
  	}
#endif

  if(gImageTunePrmList != NULL) {

    pPrmList = gImageTunePrmList;
    //pID = pPrmList->curParamset;  /* Getting Parameter set ID from NAND */
    //OSA_printf(" IMAGE TUNE: param set ID: %d read from NAND!\n", pID);
    pID = paramSetId;

    if( pID <= IMAGE_TUNE_DEFAULT_PARAMSET || pID >= IMAGE_TUNE_MAX_PARAMSET || pPrmList->paramFlag[pID]!= pID){
       OSA_printf(" IMAGE TUNE: Param set ID: %d, ParamFlag: %d ; default(0) / wrong param set!!!\n", pID, pPrmList->paramFlag[pID]);
	   //if( pID <= IMAGE_TUNE_DEFAULT_PARAMSET || pID >= IMAGE_TUNE_MAX_PARAMSET ){
		  //OSA_printf(" IMAGE TUNE: Param set ID: %d ; default(0) / pPrmList->paramFlag[pID] %d wrong param set!!!\n", pID,0);
	   //gCurPrmSet = IMAGE_TUNE_DEFAULT_PARAMSET;
       retVal = OSA_EFAIL;
       return retVal;
    }

    memcpy(&gIMAGE_TUNE_ctrl.curPrm.ccdcPrm, &pPrmList->paramSet[pID].ccdcPrm, sizeof(IMAGE_TUNE_CcdcParams_m));
    memcpy(&gIMAGE_TUNE_ctrl.curPrm.ccdcPrm.lscGainTable, &pPrmList->ccdcTable.lscGainTable, sizeof(pPrmList->ccdcTable.lscGainTable));
    memcpy(&gIMAGE_TUNE_ctrl.curPrm.ccdcPrm.lscOffsetTable, &pPrmList->ccdcTable.lscOffsetTable, sizeof(pPrmList->ccdcTable.lscOffsetTable));
    memcpy(&gIMAGE_TUNE_ctrl.curPrm.ipipeifPrm, &pPrmList->paramSet[pID].ipipeifPrm, sizeof(IMAGE_TUNE_IpipeifParams));
    memcpy(&gIMAGE_TUNE_ctrl.curPrm.ipipePrm, &pPrmList->paramSet[pID].ipipePrm, sizeof(IMAGE_TUNE_IpipeParams));
    memcpy(&gIMAGE_TUNE_ctrl.curPrm.ldcPrm, &pPrmList->paramSet[pID].ldcPrm, sizeof(IMAGE_TUNE_LdcParams));
    memcpy(&gIMAGE_TUNE_ctrl.curPrm.vnfPrm, &pPrmList->paramSet[pID].vnfPrm, sizeof(ALG_vnfParams));
    memcpy(&gIMAGE_TUNE_ctrl.curPrm.awbPrm, &pPrmList->paramSet[pID].awbPrm, sizeof(awb_calc_data_t));

    OSA_printf(" IMAGE TUNE: param set ID:%d updated!!!\n", pID);
#if 0  //debug
    OSA_printf(" gIMAGE_TUNE_ctrl.curPrm.ccdcPrm %d, %p \n", sizeof(gIMAGE_TUNE_ctrl.curPrm.ccdcPrm), &gIMAGE_TUNE_ctrl.curPrm.ccdcPrm);
	OSA_printf(" gIMAGE_TUNE_ctrl.curPrm.ccdcPrm %d, %p \n", sizeof(gIMAGE_TUNE_ctrl.curPrm.ccdcPrm.lscGainTable), &gIMAGE_TUNE_ctrl.curPrm.ccdcPrm.lscGainTable);
	OSA_printf(" gIMAGE_TUNE_ctrl.curPrm.ccdcPrm %d, %p \n", sizeof(gIMAGE_TUNE_ctrl.curPrm.ccdcPrm.lscOffsetTable), &gIMAGE_TUNE_ctrl.curPrm.ccdcPrm.lscOffsetTable);
	OSA_printf(" gIMAGE_TUNE_ctrl.curPrm.ipipeifPrm %d, %p \n", sizeof(gIMAGE_TUNE_ctrl.curPrm.ipipeifPrm), &gIMAGE_TUNE_ctrl.curPrm.ipipeifPrm);
	OSA_printf(" gIMAGE_TUNE_ctrl.curPrm.ipipePrm %d, %p \n", sizeof(gIMAGE_TUNE_ctrl.curPrm.ipipePrm), &gIMAGE_TUNE_ctrl.curPrm.ipipePrm);
	OSA_printf(" gIMAGE_TUNE_ctrl.curPrm.ldcPrm %d, %p \n", sizeof(gIMAGE_TUNE_ctrl.curPrm.ldcPrm), &gIMAGE_TUNE_ctrl.curPrm.ldcPrm);
	OSA_printf(" gIMAGE_TUNE_ctrl.curPrm.vnfPrm %d, %p \n", sizeof(gIMAGE_TUNE_ctrl.curPrm.vnfPrm), &gIMAGE_TUNE_ctrl.curPrm.vnfPrm);
	OSA_printf(" gIMAGE_TUNE_ctrl.curPrm.awbPrm %d, %p \n", sizeof(gIMAGE_TUNE_ctrl.curPrm.awbPrm), &gIMAGE_TUNE_ctrl.curPrm.awbPrm);
	OSA_printf(" \r\n gIMAGE_TUNE_ctrl.curPrm.ipipePrm %d, %d, %d ", gIMAGE_TUNE_ctrl.curPrm.ipipePrm.rgb2yuv.matrix[0][0],gIMAGE_TUNE_ctrl.curPrm.ipipePrm.rgb2yuv.matrix[1][1], gIMAGE_TUNE_ctrl.curPrm.ipipePrm.rgb2yuv.offset[0]);

#endif
      retVal = OSA_SOK;
  }

 #else

  char filename[64];
  IMAGE_TUNE_ParamSet *pTmpPrmSet;
  int checkSum = 0 ;

  if(paramSetId>99) {
    return OSA_SOK;
  }

  pTmpPrmSet = (IMAGE_TUNE_ParamSet *)OSA_memAlloc(sizeof(IMAGE_TUNE_ParamSet));

  sprintf(filename, "%s/IMGPRM%02d.BIN", IMAGE_TUNE_PARAM_STORAGE_FILE_PATH, paramSetId);

  retVal = OSA_fileReadFile(filename, (Uint8*)pTmpPrmSet, sizeof(IMAGE_TUNE_ParamSet),0, &readSize);
  if(retVal!=OSA_SOK) {
    goto error_exit;
  }

  if(readSize!=sizeof(IMAGE_TUNE_ParamSet)) {
    OSA_ERROR("Invalid Param Set : Incorrect Size !!!\n");
    retVal = OSA_EFAIL;
    goto error_exit;
  }

  if(pTmpPrmSet->headerMagicNum!= IMAGE_TUNE_HEADER_MAGIC_NUM){
    OSA_ERROR("Invalid Param Set : Header Magic Num Invalid !!!\n");
    retVal = OSA_EFAIL;
    goto error_exit;
  }

  checkSum = IMAGE_TUNE_CalcParamSetChecksum(pTmpPrmSet);

  if(checkSum!=pTmpPrmSet->checkSum) {
    OSA_ERROR("Invalid Param Set : Check Sum Failed !!!\n");
    retVal = OSA_EFAIL;
    goto error_exit;
  }

  memcpy(&gIMAGE_TUNE_ctrl.curPrm, pTmpPrmSet, sizeof(IMAGE_TUNE_ParamSet));

error_exit:
  if(pTmpPrmSet != NULL)
  OSA_memFree((void*)pTmpPrmSet);

#endif

  return retVal;
}
Exemple #12
0
int OSA_msgqFreeMsgHndl(OSA_MsgHndl *msg)
{
  OSA_memFree(msg);
  return OSA_SOK;
}
Exemple #13
0
int OSA_mbxBroadcastMsg(OSA_MbxHndl *pMbxToList[], OSA_MbxHndl *pMbxFrom, Uint16 cmd, void *pPrm, Uint16 flags)
{
  OSA_MsgHndl *pSentMsgList[OSA_MBX_BROADCAST_MAX];
  Bool  ackList[OSA_MBX_BROADCAST_MAX];
  OSA_MsgHndl *pRcvMsg;
  Bool waitAck, unknownAck;
  Uint32 i, numMsg;
  int retVal=OSA_SOK, ackRetVal = OSA_SOK;
  OSA_MsgqHndl *ackMbx;

  OSA_assert(pMbxToList!=NULL);

  if(pMbxFrom==NULL) {
    if(flags & OSA_MBX_WAIT_ACK) {
      // if from mail box is NULL, then cannot wait for ACK
      OSA_assert(0);
    }
    ackMbx = NULL;
  } else {
    ackMbx = &pMbxFrom->ackMbx;
  }

   // count number of mailboxes to boadcast to
   numMsg=0;
   while(pMbxToList[numMsg]!=NULL) {
     numMsg++;
     if(numMsg>=OSA_MBX_BROADCAST_MAX) {
        // cannot broadcast to more than OSA_MBX_BROADCAST_MAX mailboxes
        OSA_assert(0);
     }
   }

   if(numMsg == 0) {
     // no mailboxes in 'to' mailbox list
     return OSA_SOK;
   }

   // Cannot broadcast with malloc'ed prm and not wait for ACK
   if(flags & OSA_MBX_FREE_PRM) {
     if( !(flags & OSA_MBX_WAIT_ACK) && numMsg > 1) {
       OSA_assert(0);
     }
   }

   // reset sent MSG list and ACK list
   for(i=0; i<OSA_MBX_BROADCAST_MAX; i++) {
     ackList[i]  = FALSE;
     pSentMsgList[i] = NULL;
   }

   // send MSG to all mailboxes
   for(i=0; i<numMsg; i++) {
      retVal = OSA_msgqSendMsg(&pMbxToList[i]->rcvMbx, ackMbx, cmd, pPrm, flags, &pSentMsgList[i]);
      OSA_assertSuccess(retVal);
   }

   if((flags & OSA_MBX_WAIT_ACK) && ackMbx!=NULL ) {
      // wait for ACKs
      do {
        // wait ACK
        retVal = OSA_msgqRecvMsg(ackMbx, &pRcvMsg, OSA_TIMEOUT_FOREVER);
        OSA_assertSuccess(retVal);

        unknownAck=TRUE;

        // mark ACK as received for sent MSG
        for(i=0; i<numMsg; i++) {
          if(pRcvMsg == pSentMsgList[i] ) {
            ackList[i]=TRUE;
            unknownAck=FALSE;
            if(ackRetVal==OSA_SOK) {
              ackRetVal  = OSA_msgGetAckStatus(pRcvMsg);
            }
            break;
          }
        }

        // check if all ACKs received
        waitAck = FALSE;
        for(i=0; i<numMsg; i++) {
          if(ackList[i]==FALSE ) {
            waitAck = TRUE;
            break;
          }
        }

        if(unknownAck) {
          // ACK received is for some old message, hence free MSG and prm
          OSA_mbxFreeMsg(pRcvMsg);
        } else {
          // only free MSG now, free prm after all ACKs are received
          OSA_assertSuccess( OSA_msgqFreeMsgHndl(pRcvMsg) );
        }

      } while(waitAck);

      if(flags & OSA_MBX_FREE_PRM) {
        if(pPrm!=NULL) {
          OSA_memFree(pPrm);
        }
      }

      retVal = ackRetVal;
   }

   return retVal;
}
Exemple #14
0
int AVSERVER_bufFree()
{
  int i, k, status=OSA_SOK;
  VIDEO_EncodeStream *pEncodeStream;
  VIDEO_CaptureStream *pCaptureStream;

  for(i=0; i<gAVSERVER_config.numCaptureStream; i++) {

    pCaptureStream = &gVIDEO_ctrl.captureStream[i];

    if(   gAVSERVER_config.captureRawInMode==AVSERVER_CAPTURE_RAW_IN_MODE_ISIF_IN
      &&  pCaptureStream->captureNextTsk == VIDEO_TSK_LDC
      ) {

    } else {
      for(k=0; k<pCaptureStream->bufLdcInCreatePrm.numBuf; k++)
        OSA_cmemFree(pCaptureStream->bufLdcInCreatePrm.bufVirtAddr[k]);
    }

    if(   gAVSERVER_config.captureRawInMode==AVSERVER_CAPTURE_RAW_IN_MODE_ISIF_IN
      &&  pCaptureStream->captureNextTsk == VIDEO_TSK_VNF
      ) {

    } else {
      for(k=0; k<pCaptureStream->bufVnfInCreatePrm.numBuf; k++)
        OSA_cmemFree(pCaptureStream->bufVnfInCreatePrm.bufVirtAddr[k]);
    }

    if(   gAVSERVER_config.captureRawInMode==AVSERVER_CAPTURE_RAW_IN_MODE_ISIF_IN
      &&  pCaptureStream->captureNextTsk == VIDEO_TSK_ENCODE
      ) {

    } else {
      for(k=0; k<pCaptureStream->bufEncodeInCreatePrm.numBuf; k++)
        OSA_cmemFree(pCaptureStream->bufEncodeInCreatePrm.bufVirtAddr[k]);
    }

    if(pCaptureStream->bufLdcInCreatePrm.numBuf)
      OSA_bufDelete(&pCaptureStream->bufLdcIn);

    if(pCaptureStream->bufVnfInCreatePrm.numBuf)
      OSA_bufDelete(&pCaptureStream->bufVnfIn);

    if(pCaptureStream->bufResizeInCreatePrm.numBuf)
      OSA_bufDelete(&pCaptureStream->bufResizeIn);

    if(pCaptureStream->bufEncodeInCreatePrm.numBuf)
      OSA_bufDelete(&pCaptureStream->bufEncodeIn);
  }

  for(k=0; k<gVIDEO_ctrl.faceDetectStream.bufFdInCreatePrm.numBuf; k++)
    OSA_cmemFree(gVIDEO_ctrl.faceDetectStream.bufFdInCreatePrm.bufVirtAddr[k]);

  if(gVIDEO_ctrl.faceDetectStream.bufFdInCreatePrm.numBuf)
    OSA_bufDelete(&gVIDEO_ctrl.faceDetectStream.bufFdIn);

  if(gVIDEO_ctrl.displayStream.bufDisplayInCreatePrm.numBuf)
    OSA_bufDelete(&gVIDEO_ctrl.displayStream.bufDisplayIn);

  for(i=0; i<gAVSERVER_config.numEncodeStream; i++) {
    pEncodeStream = &gVIDEO_ctrl.encodeStream[i];

    for(k=0; k<pEncodeStream->bufEncryptInCreatePrm.numBuf; k++)
      OSA_cmemFree(pEncodeStream->bufEncryptInCreatePrm.bufVirtAddr[k]);

    for(k=0; k<pEncodeStream->bufStreamInCreatePrm.numBuf; k++)
      OSA_cmemFree(pEncodeStream->bufStreamInCreatePrm.bufVirtAddr[k]);

    if(pEncodeStream->bufEncryptInCreatePrm.numBuf)
      OSA_bufDelete(&pEncodeStream->bufEncryptIn);

    if(pEncodeStream->bufStreamInCreatePrm.numBuf)
      OSA_bufDelete(&pEncodeStream->bufStreamIn);
  }

	for(k=0; k<gVIDEO_ctrl.motionStream.bufMotionInCreatePrm.numBuf; k++)
	{
	  if( gVIDEO_ctrl.motionStream.bufMotionInCreatePrm.bufVirtAddr[k])
	  {
			OSA_memFree(gVIDEO_ctrl.motionStream.bufMotionInCreatePrm.bufVirtAddr[k]);
	  }
	}

	if( gVIDEO_ctrl.motionStream.bufMotionInCreatePrm.numBuf )
		OSA_bufDelete(&(gVIDEO_ctrl.motionStream.bufMotionIn));

  return status;
}