Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion.

Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules.


Go Back   Doom9's Forum > Video Encoding > High Efficiency Video Coding (HEVC)

Thread Tools Search this Thread Display Modes
Old 21st March 2016, 15:02   #1  |  Link
Registered User
Join Date: Apr 2015
Posts: 7
Rate control for I-frames in HM 16.7


I'm trying to understand the rate control algorithm in the HM 16.7 reference software. I have the paper "lambda domain rate control algorithm for High Efficiency Video Coding" by B. Li et al which explains how the Lagrange multiplier lambda for the RDO is found based on a model with 2 parameters (alpha and beta).
I can see how this is applied to P and B frames in HM:
estLambda = alpha * pow( bpp, beta );
However, the lambda calculation for I-frames is different. It is calculated in TEncRCPic::calculateLambdaIntra as:
(alpha/256.0) * pow( MADPerPixel/bitsPerPixel, beta )
First question: Where does this formula come from? Can anyone explain or give a reference where I could look it up?

Then, as you can see from the code above, the calculation is based on the "MADPerPixel", where I assume MAD stands for Mean Absolute Difference. However, when calculateLambdaIntra is called in TEncRCPic::estimatePicLambda, MADPerPixel is given as:
pow(m_totalCostIntra/(Double)m_numberOfPixel, 1.2517)
If I look where m_totalCostIntra comes from, I see it is calculated in TEncSlice::calCostSliceI as a sum of Hadamard transforms of 8x8 blocks of the frame.

Second question: Why is a sum of Hadamard calculated here? What is the link to the calculation of lambda?

Any explanation or link to some explaining references would be greatly appreciated!
damjeux is offline   Reply With Quote
Old 22nd March 2016, 09:14   #2  |  Link
ангел смерти
foxyshadis's Avatar
Join Date: Nov 2004
Location: Lost
Posts: 9,555
You should direct this query to the JCT-VC mailing list. I watched the development of what became HM (TMuC) but I don't recall ever seeing that or the rationale; it's a pretty obscure thing.

Note that this isn't actually part of HEVC at all, that's just an encoder-side formula that any encoder can modify, and most do.
foxyshadis is offline   Reply With Quote

hm encoder, rate control

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

All times are GMT +1. The time now is 11:20.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2023, vBulletin Solutions Inc.