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;
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!
Hi Katee,
I reviewed your encoder settings, it looks fine to me. You can achieve 1080p@30fps only in LITE mode.
So is your create failing for LITE mode?
Can you make the below changes and check:
params.encodingPreset = XDM_USER_DEFINED; extH264Params.encQuality = 2; Also, can you look into the release notes and confirm which version of codec you are using? Can you also inform which board you are using for profiling (DM365 or DM368)? rgds, mahant
params.encodingPreset = XDM_USER_DEFINED;
Also, can you look into the release notes and confirm which version of codec you are using? Can you also inform which board you are using for profiling (DM365 or DM368)?
rgds, mahant
Hi, Mahant , thank u so much for your help. I have already solved this problem . Like u said , 1080p@30fps only can be achieved in LITE mode , but i created fail at the beginning . Finally i found that i forgot to add the EDMA3 configurations to my encode cfg file , when i add it to the cfg file ,the frame rate reach the 30fps.
But now i have another problem, my output will displays the previous queued frame in place of current queued frame most of the time (frame-skipping) .
Can u help me to explain this problem or solve it? Thanks !
Katee,
Since it is encoder, is this preview dsiplay you are reffering to ? What is the resolution of preview ? Are you using DVSDK 3.1 for your experiments?
regards
Yashwant
Hi Yashwant ,
I am really sorry that i didn't describe the problem clearly .
I meant that when i run 1080p@30fps ,the output video will display the previous queued frame in place of current queued frame most of the time by setting continuous mode.
If i set the single-shot mode, this problem will not exist.
I think there is something wrong with the VPFE driver, but I am sure this problem is in my video capture thread , not in preview display.
Katee
Hi,
can you tell me how to add the EDMA3 configurations to the encode cfg file?
Hi,Katee.
I set dm368 as you said,however,the frame rate just reaches 21fps.It cannot be up to 30fps.I don't know how to add the EDMA3 configurations to the encode config file. Can ou give me a demo?
Best regards!
Hi , xiang xu :
I 'm sorry to reply u late .
You can modify .cfg of your project like below:
Hi,Katee:
Thanks for your reply and patience.
I forgot to tell you that my H264 encoder version is V01_10_00_08 which has no member such as
The H264 encoder creates failed When I set extH264Params.encQuality = 2 (params.encodingPreset = XDM_USER_DEFINED).
Where can I get the h264 encoder ( version 2.0) as he mentioned?
Your prompt reply will be greatly appreciated.
Hi ,xiang xu :
30fps needs the version 2.0 or above . U can ask for the TI supportor for help (so did I ) , he/she can give u the latest version .
Thanks.
thanks
Version 2.00.00 H.264 codec will be available on ti.com download site by 25th June.
Yashwant Dutt Hi, Version 2.00.00 H.264 codec will be available on ti.com download site by 25th June. regards Yashwant
Please note that this version 2.00.00 of H.264 codec gets rid of the LITE mode. DM368 ARM frequency has been increased from 405MHz to 432MHz, which enables TI to support full Platinum codec at 1080p30 resolution on the DM368.
~Jacob
Hi,Yashwant,
where can i get the Version 2.00.00 H.264 codec on the DM368?
billy
Hi Billy,
There is a delay of 1 week in releasing the codecs. It will be available in 1st week of July. I will update the post, the moment it is done.
Thanks a lot! It's very important for us.