This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Why the PSNR value improved so much encoding with CABAC versus CAVLC in h264 HP encoder

Hi,

      I do PSNR testing with TI's h264 HP encoder in two enropy coding type using the encoding

configuration(3Mbps, 4 slice fps=30 no intra_refresh, test sequence:mobcal http://media.xiph.org/video/derf/).

The test result is below: CABAC: PSNR = 35.323db, CAVLC = 34.653. So there is about 0.67db

improvement with CABAC versus CAVLC. I do the same testing on x.264 encoder and find the difference

 is only 0.2db. So I wonder what is the reason causing the improvement.

 Thanks!

 B.R.

 Sunzhao

  • Hi Sunzhao,

    Since CABAC uses context based encoding, it is possible that the mode decision used by TIs h264 HP encoder is favoring CABAC for coding less overhead bits (header bits).

    Meanwhile, can you please share the  CABAC &  CAVLC PSNR numbers for x264 so that the understanding is better ?

  • Hi  suyash,

     

    The test result of x.264 encoder is list below:

     CAVLC:37.416   CABAC:37.621

     

    B.R.

    Sunzhao

  • Hi Sunzhao,

    Since there are 4-slices in the configuration. The rate control decisions made by TI H264HP Encoder for a frame is based on complexity of each of slice in a frame.
    Bits allocated for a frame are distributed among the slices of a frame, based on the slice complexity. So each slice will get a different share of the frame bits.
    The complexity(bits) estimation process for slices in TI H.264HP encoder is more accurate with CABAC as entropy coding mode than with CAVLC.
    Hence we are observing a better gain by TI h264HP when compared to the gain showed up by x264.