Very low bit rate video encoded by i.MX6 VPU when frameRate=gopSize=1

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Very low bit rate video encoded by i.MX6 VPU when frameRate=gopSize=1

590 Views
torus1000
Contributor V

Hi,

I found very low bit rate video encoded by i.MX6 VPU when frameRate=gopSize=1.
Other combinations looks OK.

      CBR bitRate=10240,frameRateInfo=1,gopSize=1 => I--I--I-- => 200kbps       <-- Too Small
      CBR bitRate=10240,frameRateInfo=2,gopSize=2 => IP-IP-IP- => 2Mbps
      CBR bitRate=10240,frameRateInfo=3,gopSize=3 => IPPIPPIPP => 2Mbps
      ...

What was wrong with my parameters? (Please see below.)

Is this combination( frameRate=gopSize=1 ) inhibited?

Can anyone help me?
Thanks

encOpenParam.picWidth = 1920 /* Width */
encOpenParam.picHeight = 1080 /* Hight */
encOpenParam.bitstreamBuffer = encInfo->phyAddr; /* mem adr */
encOpenParam.bitstreamBufferSize = 0x200000 /* fixed */
encOpenParam.bitstreamFormat = 0; /* H.264 */
encOpenParam.mapType = LINEAR_FRAME_MAP /* =0; */
encOpenParam.frameRateInfo = 1 /* 1fps */
encOpenParam.bitRate = 10240 /* 10Mbps */
encOpenParam.gopSize = 1
encOpenParam.slicemode.sliceMode = 0; /* 0: 1 slice per picture; 1: Multiple slices per picture */
encOpenParam.slicemode.sliceSizeMode = 0; /* 0: silceSize defined by bits; 1: sliceSize defined by MB number*/
encOpenParam.slicemode.sliceSize = 4000; /* Size of a slice in bits or MB numbers */
encOpenParam.initialDelay = 0;
encOpenParam.vbvBufferSize = 0; /* 0: ignore 8 */
encOpenParam.intraRefresh = 0;
encOpenParam.sliceReport = 0;
encOpenParam.mbReport = 0;
encOpenParam.mbQpReport = 0;
encOpenParam.rcIntraQp = -1;
encOpenParam.userQpMax = 0;
encOpenParam.userQpMin = 0;
encOpenParam.userQpMinEnable = 0;
encOpenParam.userQpMaxEnable = 0;
encOpenParam.IntraCostWeight = 0;
encOpenParam.MEUseZeroPmv = 0;
encOpenParam.MESearchRange = 3; /* 3: 16x16, 2:32x16, 1:64x32, 0:128x64, H.263(Short Header : always 3) */
encOpenParam.userGamma = (UINT)(0.75*32768); /* (0*32768 <= gamma <= 1*32768) */
encOpenParam.RcIntervalMode = 1; /* 0:normal, 1:frame_level, 2:slice_level, 3: user defined Mb_level */
encOpenParam.MbInterval = 0;
encOpenParam.avcIntra16x16OnlyModeEnable = 0;
encOpenParam.ringBufferEnable = 0;
encOpenParam.dynamicAllocEnable = 0;
encOpenParam.chromaInterleave = 1;
encOpenParam.linear2TiledEnable = 0;
encOpenParam.EncStdParam.avcParam.avc_constrainedIntraPredFlag = 0;
encOpenParam.EncStdParam.avcParam.avc_disableDeblk = 0;
encOpenParam.EncStdParam.avcParam.avc_deblkFilterOffsetAlpha = 6;
encOpenParam.EncStdParam.avcParam.avc_deblkFilterOffsetBeta = 0;
encOpenParam.EncStdParam.avcParam.avc_chromaQpOffset = 10;
encOpenParam.EncStdParam.avcParam.avc_audEnable = 0;
encOpenParam.EncStdParam.avcParam.avc_vui_present_flag = 0;
encOpenParam.EncStdParam.avcParam.avc_vui_param.video_signal_type_pres_flag = 1;
encOpenParam.EncStdParam.avcParam.avc_vui_param.video_format = 0;
encOpenParam.EncStdParam.avcParam.avc_vui_param.video_full_range_flag = 1;
encOpenParam.EncStdParam.avcParam.avc_vui_param.colour_descrip_pres_flag = 1;
encOpenParam.EncStdParam.avcParam.avc_vui_param.colour_primaries = 1;
encOpenParam.EncStdParam.avcParam.avc_vui_param.transfer_characteristics = 1;
encOpenParam.EncStdParam.avcParam.avc_vui_param.matrix_coeff = 0;
encOpenParam.EncStdParam.avcParam.avc_level = 0;
encOpenParam.EncStdParam.avcParam.interview_en = 0;
encOpenParam.EncStdParam.avcParam.paraset_refresh_en = 0;
encOpenParam.EncStdParam.avcParam.prefix_nal_en = 0;
encOpenParam.EncStdParam.avcParam.mvc_extension = 0;
encOpenParam.EncStdParam.avcParam.avc_frameCroppingFlag = 0;
encOpenParam.EncStdParam.avcParam.avc_frameCropLeft = 0;
encOpenParam.EncStdParam.avcParam.avc_frameCropRight = 0;
encOpenParam.EncStdParam.avcParam.avc_frameCropTop = 0;
encOpenParam.EncStdParam.avcParam.avc_frameCropBottom = 0;

Labels (2)
Tags (2)
0 Kudos
1 Reply

388 Views
joanxie
NXP TechSupport
NXP TechSupport

what command and bsp version do you use? did you try to use unit test?

0 Kudos