I used h264 encoder ( version 2.0) in the newest DVSDK to run my application at 1080p, but I found it did not reach 30fps , only at 20 - 21fps. It's really exhausted me . My h264 encode configurations are below:
params.size = sizeof(IH264VENC_Params);
params.rateControlPreset = IVIDEO_STORAGE;
params.encodingPreset = XDM_USER_DEFINED; //XDM_HIGH_SPEED;
params.maxWidth = 1920;
params.maxHeight = 1072;
params.maxFrameRate = 30000;
params.maxBitRate = 10*1000*1000;
params.reconChromaFormat = XDM_YUV_420SP;
params.inputChromaFormat = XDM_YUV_420SP;
params.dataEndianness = XDM_BYTE;
params.inputContentType = IVIDEO_PROGRESSIVE;
params.maxInterFrameInterval = 1;
extH264Params.levelIdc = 31;
extH264Params.profileIdc = 100;
extH264Params.entropyMode = 1;
extH264Params.transform8x8FlagIntraFrame = 1;
extH264Params.seqScalingFlag = 1;
extH264Params.transform8x8FlagInterFrame = 0;
extH264Params.aspectRatioX = 1;
extH264Params.aspectRatioY = 1;
extH264Params.pixelRange = 1;
extH264Params.timeScale = 60;
extH264Params.numUnitsInTicks = 1;
extH264Params.enableVUIparams = 1;
//extH264Params.resetHDVICPeveryFrame = 1;
extH264Params.disableHDVICPeveryFrame = 0;
extH264Params.meAlgo = 0;
extH264Params.unrestrictedMV = 0;
extH264Params.encQuality = 0 //2: for LITE
extH264Params.enableARM926Tcm = 0;
extH264Params.enableDDRbuff = 0;
extH264Params.sliceMode = 0; //0: for LITE
extH264Params.outputDataMode = 1;
extH264Params.sliceFormat = 1;
dynamicParams.size = sizeof(IH264VENC_DynamicParams);
dynamicParams.inputHeight = 1072;
dynamicParams.inputWidth = 1920;
dynamicParams.targetBitRate = 4*1000*1000;
dynamicParams.intraFrameInterval = 30;
dynamicParams.generateHeader = XDM_ENCODE_AU;
dynamicParams.captureWidth = 1920
dynamicParams.forceFrame = IVIDEO_NA_FRAME;
dynamicParams.interFrameInterval = XDM_DEFAULT;
dynamicParams.mbDataFlag = XDM_DEFAULT;
dynamicParams.targetFrameRate = 30000;
dynamicParams.refFrameRate = 30000;
extH264DynParams.intraFrameQP = 28;
extH264DynParams.interPFrameQP = 28;
extH264DynParams.initQ = 28;
extH264DynParams.rcQMax = 45;
extH264DynParams.rcQMin = 0;
extH264DynParams.rcQMaxI = 42;
extH264DynParams.rcQMinI = 0;
extH264DynParams.airRate = 0; //0: for LITE
extH264DynParams.lfDisableIdc = 0;
extH264DynParams.maxDelay = 2000;// 1000;
extH264DynParams.meMultiPart = 0;
extH264DynParams.perceptualRC = 0; //0: for LITE
extH264DynParams.idrFrameInterval = 30;
extH264DynParams.mvSADoutFlag = 0;
extH264DynParams.enableROI = 0;
extH264DynParams.intraSliceNum = 0;
extH264DynParams.enableBufSEI = 1;
extH264DynParams.enablePicTimSEI = 1;
extH264DynParams.rcAlgo = 1;
extH264DynParams.metaDataGenerateConsume = 0;
extH264DynParams.resetHDVICPeveryFrame = 1;
extH264DynParams.sliceSize = 0;
extH264DynParams.intraThrQF = 5;
Can anybody tell me what's wrong with my application ????
By the way, I found the user guide of the newest h264enc introduce a LITE mode. can the encode reach 1080@30fps only by setting LITE mode?
However, when I open the LITE mode by setting
params.encodingPreset = XDM_HIGH_SPEED; extH264Params.encQuality = 2;
the H264 encoder creating will fail, so I can not run my application in LITE mode. Is there something wrong in my setting?
Your kindly help is greatly appreciated. Thank u very much!