Log in

View Full Version : HM configuration limitation


rudyb
15th April 2015, 20:18
For a simple test, I am just intending to simplify the encoder as much as I can. I was trying to make the CTU size to be 32x32. Also I was trying to avoid any Z-scanning and avoiding further CU depth breakdown. So, I set such that my CU size be also 32x32.

According to the spec, the TU size can be anywhere from 32x32 all the way down to 4x4. But I don't have to go all the way down, so I also tried to set the TU size to be only 32x32. But HM complains and it exits.

Here is my settings:

#======== Unit definition ================
MaxCUWidth : 32 # Maximum coding unit width in pixel
MaxCUHeight : 32 # Maximum coding unit height in pixel
MaxPartitionDepth : 1 # Maximum coding unit depth
QuadtreeTULog2MaxSize : 5 # Log2 of maximum transform size for quadtree-based TU coding (2...6)
QuadtreeTULog2MinSize : 5 # Log2 of minimum transform size for quadtree-based TU coding (2...6)
QuadtreeTUMaxDepthInter : 1
QuadtreeTUMaxDepthIntra : 1



And the reason it exits is because it says:
Error: QuadtreeTULog2MinSize must not be greater than or equal to minimum CU size
Error: QuadtreeTULog2MinSize must not be greater than or equal to minimum CU size

And once I set:
QuadtreeTULog2MinSize :4
QuadtreeTULog2MinSize :4

It works fine.

So, it wants to have TU sizes of 32x32 and 16x16

But is there anyway this can be worked around?
I think the reason it wants to use it is because it uses NxN partition modes, but there is no setting for me to disable NxN partition mode!

I think if I can set it such that it only uses 2Nx2N partition, then it will be fine (I also turned off the AMVP).

Is this a limitation of HM? Because to me, according to spec, you can have only TU sizes of 32x32 for the encoder, if you wish to?

pieter3d
17th April 2015, 23:53
Prediction mode may be NxN, meaning four 16x16s in your CUs. For intra, that means you have to use 16x16 transform, so you must allow TU splits.
However you could force HM to never code NxN partition mode, thus allowing 32x32 only. You'll need to change the code to accomplish this.

Keep in mind that chroma will still be 16x16.