Too many lines of codes. The source camera data is YUV420p format in memory.
For example:
/* Fill up parameters for encoding */
encop.bitstreamFormat = STD_AVC;
encop.mapType = 0; //where 0 = Linear frame map; 1 = Frame tiled map; 2 = Field tiled map
encop.linear2TiledEnable = 0;
encop.frameRateInfo = 20;
encop.bitRate = 0;
encop.gopSize = 1; // where 0 = only first picture is I, 1 = all I pictures, 2 = IPIP, 3 = IPPIPP, and so on.
encop.slicemode.sliceMode = 0; /* 0: 1 slice per picture; 1: Multiple slices per picture */
encop.slicemode.sliceSizeMode = 0; /* 0: silceSize defined by bits; 1: sliceSize defined by MB number*/
encop.slicemode.sliceSize = 4000; /
encop.IntraCostWeight = 0;
encop.MEUseZeroPmv = 0;
/* (3: 16x16, 2:32x16, 1:64x32, 0:128x64, H.263(Short Header : always 3) */
encop.MESearchRange = 3;
encop.userGamma = (Uint32)(0.75*32768); /* (0*32768 <= gamma <= 1*32768) */
encop.RcIntervalMode= 1; /* 0:normal, 1:frame_level, 2:slice_level, 3: user defined Mb_level */
//encop.RcIntervalMode= 0;
encop.MbInterval = 0;
encop.avcIntra16x16OnlyModeEnable = 0;
encop.ringBufferEnable = enc->ringBufferEnable;
encop.dynamicAllocEnable = 0;
encop.chromaInterleave = 0; // CbCr interleaved , default is interleave(1)