09-08-2005 03:05 PM
Afterbriefly reviewingIPP implementation ofH.264 code I have the following questions:
a) does the latest 5.0 beta sample code support all 7 allowed by standard MacroBlock sizesduring motion estimation/interframe coding? If not what sizes (it seems like square MBs only?) are actually supported and if, so how that should be specified in the encoder configuration file?
b) could you describe howMacroBlock interframe/intraframe encoding type isbeing decided in reference to a differentMB sizes available (or at leastprovide a reference to corresponding source code)?
c) could youconfirmthatsome sort ofrate control is supported by that version of the code beyond fixed quantization as bitrate datais specified in encoder configuration file as below?
PS. More specifically,do you havea more detailed description of the two following lines from configuration file. For example, does "subblock split" mean partitioning 16x16 to 8x8 and eventually further to 4x4??? Thanks a lot!
0 10 26 26 300000 /* method(0 - quant_codes, 1 - CBR, quant_codes (I P B) & bitrate !!!ALL must be specified */
0 4 4 0 /* subblock split, search x,search_y, implicit weighted biprediction (NIY)*/
09-13-2005 04:18 PM
there are comments from our expert:
a) Actually, there is only one MacroBlock size 16x16 which can be divided into one or several macroblock parts (MbPart) and the parts can be further divided into sub_mb_parts. These parts can have various sized 8x16, 16x8, 8x8, 8x4, 4x8, 4x4. See 6.4.2 Inverse macroblock partition and sub-macroblock partition scanning process in the H.264 standard specifications.
b) There is a method H264VideoEncoder::Compress_Slice()which has a loop over all MBs in a slice it analyzes various ways of MB coding and picks up the best according to sum of absolute difference between the block data and intra or inter prediction being considered. The method's implementation is in file umc_h264_core_enc.cpp.
c)Yes, a quite sophisticated rate control method is supported.