+// Note: This file does not have its own unit test; it is tested mainly
+// through YCbCrInput's unit tests.
+
#include <Eigen/Core>
#include <Eigen/LU>
float compute_chroma_offset(float pos, unsigned subsampling_factor, unsigned resolution)
{
float local_chroma_pos = (0.5 + pos * (subsampling_factor - 1)) / subsampling_factor;
- return (0.5 - local_chroma_pos) / resolution;
+ if (fabs(local_chroma_pos - 0.5) < 1e-10) {
+ // x + (-0) can be optimized away freely, as opposed to x + 0.
+ return -0.0;
+ } else {
+ return (0.5 - local_chroma_pos) / resolution;
+ }
}
// Given <ycbcr_format>, compute the values needed to turn Y'CbCr into R'G'B';