public class FilterImpl implements Filter {

    Compute app;
    FilterBuffer inBuf;
    FilterBuffer[] outBufs;

    public FilterImpl(Compute compute, FilterBuffer in, FilterBuffer out) {
        app = compute;
        inBuf = in;
        outBufs = new FilterBuffer[1];
        outBufs[0] = out;
    }

    public FilterBuffer getInputBuffer() {
        return inBuf;
    }

    public FilterBuffer[] getOutputBuffers() {
        return outBufs;
    }

    public void addOutputBuffer(FilterBuffer newBuf) {
        FilterBuffer[] newOutBufs = new FilterBuffer[outBufs.length + 1];
        for (int i = 0; i < outBufs.length; i++)
            newOutBufs[i] = outBufs[i];
        newOutBufs[outBufs.length] = newBuf;
        outBufs = newOutBufs;
    }

    public void startFilter() {
        Thread appThread = new Thread(app);
        appThread.start();
    }

}
