Advanced Video Coding (AVC) and High Efficiency Video Coding (HEVC) work on gamma corrected, non linear, colors.

When interpolating the value at subpixels, a multi tap algorithm processes the gamma corrected values of the original pixels directly, without converting into linear space and back, like a GPU does when doing texture mapping.

Isn't this wrong?

  • $\begingroup$ Could you please mark an answer? $\endgroup$ – Royi Feb 6 '20 at 8:57

When one does an operation Wrong / Right aren't strictly defined.
In most cases the questions are:

  • What's the model?
  • Is the model reasonable?

When you do sub pixel motion estimation on frames which are highly correlated you can assumes the change in values, even after non linear operation like Gamma Function, is small.

So basically the model assumes that even after Gamma Correction the spatial correlation between 2 frames is kept.

You can do a small test by generating image supposedly in Linear Color Space.
Generate another image as a result of a small movement of the previous image.
Have a look on the spatial correlation between the 2.
Now transform each using Gamma Function and measure the correlation as well.

If their model is reasonable, the correlation in both cases will be similar.


It is a matter of "getting away with it".

The multi-tap algorithm is not doing a perfect job either because it's not a brick-wall sinc filter, giving some error even for linear color space input. Also the original data may not be perfectly sampled, which can be considered a further source of error. Small error statistics are usually approximately additive. If the additional error from working with data with gamma applied is of the same or of lower magnitude than the sum of the other errors, it doesn't increase the total error much, relatively.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.