halide-runtime 0.5.1

Bindings to the Halide runtime
Documentation
#include <stdio.h>

#include <Halide.h>

using namespace Halide;

template <typename T>
void interleave_input(T &input, Expr n, Var x, Var y, Var c) {
  input.dim(0).set_stride(n).dim(2).set_stride(1);
  input.dim(2).set_bounds(0, n);
}

template <typename T>
void interleave_output(T &output, Expr n, Var x, Var y, Var c) {
  output.dim(0).set_stride(n).dim(2).set_stride(1);
  output.dim(2).set_bounds(0, n);
  output.reorder(c, x, y).unroll(c);
}

class Brighter : public Generator<Brighter> {
public:
  Input<Buffer<uint8_t>> input{"input", 3};
  Output<Buffer<uint8_t>> brighter{"brighter", 3};

  Var x, y, c;

  void generate() {
    brighter(x, y, c) = input(x, y, c) + 10;
    interleave_input(input, 3, x, y, c);
    interleave_output(brighter, 3, x, y, c);
  }
};

HALIDE_REGISTER_GENERATOR(Brighter, brighter);