This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

H.264 encoder VIDENC1_process() hangs in DM365 with DVSDK

dm365 encode h264 ,  run ok  about  ten minutes, then  thread hang up in VIDENC1_process().

any advise is appreciate!

CE_DEBUG=3

@40,107,405us: [+0 T:0x44469490 S:0x4446890c] ti.sdo.ce.video1.VIDENC1 - VIDENC1_process> Enter (handle=0x63e698, inBufs=0x444689a4, outBufs=0x44468b84, inArgs=0x44468a74, outArgs=0x44468b0c)
@40,107,701us: [+5 T:0x44469490 S:0x444688ec] CV - VISA_enter(visa=0x63e698): algHandle = 0x63e6d0
@40,107,888us: [+0 T:0x44469490 S:0x444688dc] ti.sdo.ce.alg.Algorithm - Algorithm_activate> Enter(alg=0x63e6d0)
@40,108,891us: [+0 T:0x44469490 S:0x444688a4] ti.sdo.ce.osal.SemMP - Entered SemMP_pend> sem[0x585230] timeout[0xffffffff]
@40,109,126us: [+0 T:0x44469490 S:0x444688a4] ti.sdo.ce.osal.SemMP - Leaving SemMP_pend> sem[0x585230] status[0]
@40,109,329us: [+0 T:0x44469490 S:0x444688ec] ti.sdo.ce.alg.Algorithm - Algorithm_activate> Exit
@40,124,913us: [+5 T:0x44469490 S:0x444688f4] CV - VISA_exit(visa=0x63e698): algHandle = 0x63e6d0
@40,125,180us: [+0 T:0x44469490 S:0x444688e4] ti.sdo.ce.alg.Algorithm - Algorithm_deactivate> Enter(alg=0x63e6d0)
@40,125,393us: [+0 T:0x44469490 S:0x444688c4] ti.sdo.ce.osal.SemMP - Entered SemMP_post> sem[0x585230]
@40,125,595us: [+0 T:0x44469490 S:0x444688c4] ti.sdo.ce.osal.SemMP - Leaving SemMP_post> sem[0x585230]
@40,125,773us: [+0 T:0x44469490 S:0x444688f4] ti.sdo.ce.alg.Algorithm - Algorithm_deactivate> Exit
@40,125,940us: [+0 T:0x44469490 S:0x4446890c] ti.sdo.ce.video1.VIDENC1 - VIDENC1_process> Exit (handle=0x63e698, retVal=0x0)
@40,140,737us: [+0 T:0x44469490 S:0x4446890c] ti.sdo.ce.video1.VIDENC1 - VIDENC1_process> Enter (handle=0x63e698, inBufs=0x444689a4, outBufs=0x44468b84, inArgs=0x44468a74, outArgs=0x44468b0c)
@40,141,033us: [+5 T:0x44469490 S:0x444688ec] CV - VISA_enter(visa=0x63e698): algHandle = 0x63e6d0
@40,141,226us: [+0 T:0x44469490 S:0x444688dc] ti.sdo.ce.alg.Algorithm - Algorithm_activate> Enter(alg=0x63e6d0)
@40,141,400us: [+0 T:0x44469490 S:0x444688a4] ti.sdo.ce.osal.SemMP - Entered SemMP_pend> sem[0x585230] timeout[0xffffffff]
@40,141,600us: [+0 T:0x44469490 S:0x444688a4] ti.sdo.ce.osal.SemMP - Leaving SemMP_pend> sem[0x585230] status[0]
@40,141,793us: [+0 T:0x44469490 S:0x444688ec] ti.sdo.ce.alg.Algorithm - Algorithm_activate> Exit

 I  try  set parameters ,    i failed  .

static void codec_h264_init_dynamic(IH264VENC_DynamicParams *h264_dyn, struct fix_struct *fix)
{
 VIDENC1_DynamicParams *com = (VIDENC1_DynamicParams *)h264_dyn;
 
 memset(h264_dyn, 0, sizeof(*h264_dyn));
 com->size = sizeof(*h264_dyn);
 com->inputHeight = fix->h;
 com->inputWidth = fix->w;
 com->captureWidth = fix->w;
 com->refFrameRate = 25000; //CODEC_FRAMERATE_MAX;
 com->targetFrameRate = 25000; //CODEC_FRAMERATE_MAX;
 com->targetBitRate = 4096000;// CODEC_BITRATE_MAX;
 com->interFrameInterval = 0;  //no B frame
 com->intraFrameInterval = 0;
 com->generateHeader = XDM_ENCODE_AU;
 com->forceFrame = IVIDEO_NA_FRAME;
 com->mbDataFlag = XDAS_FALSE;
 
 h264_dyn->sliceSize = 0;
 h264_dyn->airRate = 0;
 h264_dyn->intraFrameQP = 28;
 h264_dyn->interPFrameQP = 28;
 h264_dyn->initQ = 30;
 h264_dyn->rcQMax = 51;
 h264_dyn->rcQMin = 0;
 h264_dyn->rcQMaxI = 51;
 h264_dyn->rcQMinI = 0;
 h264_dyn->rcAlgo = 0; // 1;
 h264_dyn->maxDelay = 2000;
 h264_dyn->aspectRatioX = 1; //0;
 h264_dyn->aspectRatioY = 1; // 0;
 h264_dyn->lfDisableIdc = 0;
 
 h264_dyn->enableBufSEI = 0;
 h264_dyn->enablePicTimSEI= 0;
 h264_dyn->perceptualRC = 0;
 h264_dyn->mvSADoutFlag = 0;
 h264_dyn->idrFrameInterval = 50;
 h264_dyn->resetHDVICPeveryFrame = 0; //fix->reset_hdvicp;
 h264_dyn->enableROI = 0;
 h264_dyn->metaDataGenerateConsume = 0;
 h264_dyn->maxBitrateCVBR = CODEC_BITRATE_MAX;
 h264_dyn->interlaceRefMode = 0;
 h264_dyn->enableGDR = 0;
 h264_dyn->GDRduration = 5;
 h264_dyn->GDRinterval = 30;
  /* 
 switch(fix->ratetype)
 {
 case CODEC_RATE_TYPE_CBR:
  h264_dyn->rcAlgo = 5;
  break;
 case CODEC_RATE_TYPE_RCOFF:
  h264_dyn->rcAlgo = 2;
  break;
 default:
  h264_dyn->rcAlgo = 1;
  break;
 }
 
  */
       h264_dyn->sliceSize = fix->h >> 4;  //fix->w >> 4;
 
 h264_dyn->VUI_Buffer = &H264VENC_TI_VUIPARAMBUFFER;
 h264_dyn->CustomScaleMatrix_Buffer = &H264VENC_TI_CUSTOMSCALINGMATRIX;
}

void* codec_h264_init(struct fix_struct *fix)
{
 struct h264_struct *h264;
 IH264VENC_Params h264_param;
 VIDENC1_Params *param;
 VIDENC1_Status status;
 
 h264 = malloc(sizeof(*h264));
 if(NULL == h264){
  return NULL;
 }
 
 memset(h264, 0, sizeof(*h264));
 
 memcpy(&h264_param, &IH264VENC_PARAMS, sizeof(h264_param));
 param = (VIDENC1_Params*)&h264_param;
 param->size = sizeof(h264_param);
 param->encodingPreset = XDM_USER_DEFINED; // HIGH_QUALITY; // SPEED; //QUALITY; //XDM_USER_DEFINED;
 param->rateControlPreset = IVIDEO_USER_DEFINED;
 param->maxHeight = fix->h;  //2048; //fix->h;
 param->maxWidth = fix->w; //2048;  //fix->w;
 param->maxFrameRate = 30000; // 120000; //CODEC_FRAMERATE_MAX;
 param->maxBitRate = 8000000; // 20000000; //CODEC_BITRATE_MAX;
 param->dataEndianness = XDM_BYTE;
 param->maxInterFrameInterval = 1;
 param->inputChromaFormat = XDM_YUV_420SP;
 param->inputContentType = IVIDEO_PROGRESSIVE;
 param->reconChromaFormat = XDM_YUV_420SP;
 
 h264_param.profileIdc = 100;
 h264_param.levelIdc = 41; //40; //IH264VENC_LEVEL_40;
 h264_param.Log2MaxFrameNumMinus4 = 0;
 h264_param.ConstraintSetFlag = 0;
 h264_param.entropyMode = 1;   // 0;  //cabac
 h264_param.transform8x8FlagInterFrame = 0; // 1;
 h264_param.transform8x8FlagIntraFrame = 1;  //intra 1;
 h264_param.enableVUIparams = 0;
 h264_param.meAlgo = 0;
 h264_param.seqScalingFlag = 0; //1 sps lenth 144  0;
 h264_param.encQuality = 0; //must set 0;   high speed 3; //chenlm  2;
 h264_param.enableARM926Tcm = 0;
 h264_param.enableDDRbuff = 0;
 h264_param.sliceMode = 0 ;  //3 high quality, 0;
 h264_param.numTemporalLayers = 0;
 //chenlm modify h264_param.encQuality = 0;
 h264_param.svcSyntaxEnable = 0;
 h264_param.EnableLongTermFrame = 0;
 h264_param.outputDataMode = IH264VENC_TI_ENTIREFRAME;
 h264_param.sliceFormat = IH264VENC_TI_BYTESTREAM;
 
 h264->hEncode = VIDENC1_create(gALG_hEngine, H264_NAME, param);
 if(NULL == h264->hEncode){
  free(h264);
  return NULL;
 }
 
 codec_h264_init_dynamic(&h264->dynamic, fix);
 h264->ops = &h264_ops;
 h264->magic = H264_MAGIC;
 h264->w = fix->w;
 h264->h = fix->h;
 h264->pic_size = fix->w * fix->h;
 
 return h264;
}