filters and generator should accept and produce sequences of images. Each sequence has the following format: width unsigned 4 bytes big-endian height unsigned 4 bytes big-endian followed by one or more arrays of pixels: pixels array of 4 byte big-endian ARGB pixels, width * height in length pixel_index(x, y) = x + y * width if a filter does not use alpha in any way it's best practice to copy the input alpha to the output.