Exemple #1
0
/*
 *  ======== dumpTrace ========
 */
static void dumpTrace(Server_Handle server)
{
    Int count;

    count = Server_fwriteTrace((Server_Handle)server, "", stdout);

    if (count == -1) {
        fprintf(stderr, "Error retrieving trace: 0x%x!\n",
            Engine_getLastError(engine));
    }
}
Exemple #2
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 #3
0
DvevmStRetCode
dvtb_ceMem(DvevmStEngineInfo *ce)
{
	DVTBASSERT(ce != NULL);
	DVTBASSERT(ce->hdl != NULL);

	ce->mem = Engine_getUsedMem(ce->hdl);
	if (0 == ce->mem)
	{
		ce->err = Engine_getLastError(ce->hdl);
		SYS_ERROR("Unable (%d) to get used memory for Engine <%s>\n", ce->err, ce->name);
		return DVEVM_ST_FAIL;
	}
	else
	{
		SYS_OUT("Engine <%s> => Used Memory : %d MAUs\n", ce->name, ce->mem);
		return DVEVM_ST_SUCCESS;
	}
}
Exemple #4
0
DvevmStRetCode
dvtb_ceCpu(DvevmStEngineInfo *ce)
{
	DVTBASSERT(ce != NULL);
	DVTBASSERT(ce->hdl != NULL);

	ce->cpu = Engine_getCpuLoad(ce->hdl);
	if (ce->cpu < 0)
	{
		ce->err = Engine_getLastError(ce->hdl);
		SYS_ERROR("Unable (%d) to get CPU load for Engine <%s>\n", ce->err, ce->name);
		return DVEVM_ST_FAIL;
	}
	else
	{
		SYS_OUT("Engine <%s> => CPU Load : %d MAUs\n", ce->name, ce->cpu);
		return DVEVM_ST_SUCCESS;
	}

}
Exemple #5
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 #6
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;
}