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;
}