chroma quantizer offseting based on quantizers and not qidx. #92
Replies: 3 comments
-
It seems like there is no chroma quantizer offset by default. |
Beta Was this translation helpful? Give feedback.
-
Hi, We have some stuff in place currently I think: uint8_t chroma_qindex_adjustment = chroma_qindex;
switch (scs->static_config.tune) {
case 2:
// Chroma boost function - ramp down for higher qindices
chroma_qindex_adjustment = MAX(0, chroma_qindex_adjustment - 48);
chroma_qindex -= CLIP3(0, 16, (int32_t)rint(pow(chroma_qindex_adjustment, 1.4) / 9.0));
break;
case 3:
chroma_qindex += (int32_t)-rint(chroma_qindex_adjustment / 8.0); // Chroma boost to fix saturation issues
break;
case 4:
// Constant chroma boost with gradual ramp-down for very high qindex levels
chroma_qindex -= CLIP3(0, 16, (chroma_qindex_adjustment / 2) - 14);
break;
default:
break;
} via beeae79 |
Beta Was this translation helpful? Give feedback.
-
Hey @KyleSiefring, you're correct in that SVT-AV1-PSY doesn't have a chroma based offset based on quantizers. What we currently have in place is a "good enough" static boost (on qindex) for 4:2:0 content (over no boost at all), but it can certainly be improved further. I've been intending to port rav1e's formula, but life got in the way and my priorities shifted. If you're interested into tackling porting this to SVT-AV1, we'll definitely welcome this change. |
Beta Was this translation helpful? Give feedback.
-
Trying to find how chroma quantizer is offset from luma. Any idea if svt-av1 does anything like the below?
xiph/rav1e@c039368#diff-9a5ef4cd6ac7a66abd842b474ee88447516ed3bd218748eb6f387a0895d14fcbL324
Beta Was this translation helpful? Give feedback.
All reactions