// Path: robotic-chameleon/src/fi/gekkio/roboticchameleon/RoboticChameleon.java
// public final class RoboticChameleon {
// 
//     private RoboticChameleon() {
//     }
// 
//     public static ABGR fromABGR() {
//         return ABGR.INSTANCE;
//     }
// 
//     public static ARGB fromARGB() {
//         return ARGB.INSTANCE;
//     }
// 
//     public static ARGB1555 fromARGB1555() {
//         return ARGB1555.INSTANCE;
//     }
// 
//     public static ARGB4444 fromARGB4444() {
//         return ARGB4444.INSTANCE;
//     }
// 
//     public static BGRA fromBGRA() {
//         return BGRA.INSTANCE;
//     }
// 
//     public static I400 fromI400() {
//         return I400.INSTANCE;
//     }
// 
//     public static I411 fromI411() {
//         return I411.INSTANCE;
//     }
// 
//     public static I420 fromI420() {
//         return I420.INSTANCE;
//     }
// 
//     public static I422 fromI422() {
//         return I422.INSTANCE;
//     }
// 
//     public static I444 fromI444() {
//         return I444.INSTANCE;
//     }
// 
//     public static M420 fromM420() {
//         return M420.INSTANCE;
//     }
// 
//     public static NV12 fromNV12() {
//         return NV12.INSTANCE;
//     }
// 
//     public static NV21 fromNV21() {
//         return NV21.INSTANCE;
//     }
// 
//     public static Q420 fromQ420() {
//         return Q420.INSTANCE;
//     }
// 
//     public static RAW fromRAW() {
//         return RAW.INSTANCE;
//     }
// 
//     public static RGB24 fromRGB24() {
//         return RGB24.INSTANCE;
//     }
// 
//     public static RGB565 fromRGB565() {
//         return RGB565.INSTANCE;
//     }
// 
//     public static RGBA fromRGBA() {
//         return RGBA.INSTANCE;
//     }
// 
//     public static UYVY fromUYVY() {
//         return UYVY.INSTANCE;
//     }
// 
//     public static YUY2 fromYUY2() {
//         return YUY2.INSTANCE;
//     }
// 
//     public static YV12 fromYV12() {
//         return YV12.INSTANCE;
//     }
// 
// }


import java.nio.ByteBuffer;
import fi.gekkio.roboticchameleon.RoboticChameleon;
package fi.gekkio.roboticchameleon.tests;



public class RGB24Test extends TestBase {

    public RGB24Test() {
        super("frames/RGB24.rgb");
    }

    static final Conversion RGB24ToARGB = new Conversion() {
        @Override
        public void convert(ByteBuffer src, ByteBuffer dst) {
            int srcStrideRGB24 = WIDTH * 3;

            int dstStrideARGB = WIDTH * 4;

            RoboticChameleon.fromRGB24().toARGB(
                src, srcStrideRGB24,
                dst, dstStrideARGB,
                WIDTH, HEIGHT);
        }

        @Override
        public int getDstCapacity() {
            return WIDTH * HEIGHT * 4;
        }
    };

    static final Conversion RGB24ToI420Slice = new Conversion() {
        @Override
        public void convert(ByteBuffer src, ByteBuffer dst) {
            int srcStrideRGB24 = WIDTH * 3;

            int dstStrideY = WIDTH;
            int dstStrideU = WIDTH / 2;
            int dstStrideV = WIDTH / 2;
            ByteBuffer[] dsts = ByteBuffers.slice(dst, dstStrideY * HEIGHT, dstStrideU * HEIGHT / 2, dstStrideV * HEIGHT / 2);

// Path: robotic-chameleon/src/fi/gekkio/roboticchameleon/RoboticChameleon.java
// public final class RoboticChameleon {
// 
//     private RoboticChameleon() {
//     }
// 
//     public static ABGR fromABGR() {
//         return ABGR.INSTANCE;
//     }
// 
//     public static ARGB fromARGB() {
//         return ARGB.INSTANCE;
//     }
// 
//     public static ARGB1555 fromARGB1555() {
//         return ARGB1555.INSTANCE;
//     }
// 
//     public static ARGB4444 fromARGB4444() {
//         return ARGB4444.INSTANCE;
//     }
// 
//     public static BGRA fromBGRA() {
//         return BGRA.INSTANCE;
//     }
// 
//     public static I400 fromI400() {
//         return I400.INSTANCE;
//     }
// 
//     public static I411 fromI411() {
//         return I411.INSTANCE;
//     }
// 
//     public static I420 fromI420() {
//         return I420.INSTANCE;
//     }
// 
//     public static I422 fromI422() {
//         return I422.INSTANCE;
//     }
// 
//     public static I444 fromI444() {
//         return I444.INSTANCE;
//     }
// 
//     public static M420 fromM420() {
//         return M420.INSTANCE;
//     }
// 
//     public static NV12 fromNV12() {
//         return NV12.INSTANCE;
//     }
// 
//     public static NV21 fromNV21() {
//         return NV21.INSTANCE;
//     }
// 
//     public static Q420 fromQ420() {
//         return Q420.INSTANCE;
//     }
// 
//     public static RAW fromRAW() {
//         return RAW.INSTANCE;
//     }
// 
//     public static RGB24 fromRGB24() {
//         return RGB24.INSTANCE;
//     }
// 
//     public static RGB565 fromRGB565() {
//         return RGB565.INSTANCE;
//     }
// 
//     public static RGBA fromRGBA() {
//         return RGBA.INSTANCE;
//     }
// 
//     public static UYVY fromUYVY() {
//         return UYVY.INSTANCE;
//     }
// 
//     public static YUY2 fromYUY2() {
//         return YUY2.INSTANCE;
//     }
// 
//     public static YV12 fromYV12() {
//         return YV12.INSTANCE;
//     }
// 
// }


// Path: robotic-chameleon-tests/src/fi/gekkio/roboticchameleon/tests/RGB24Test.java
import java.nio.ByteBuffer;
import fi.gekkio.roboticchameleon.RoboticChameleon;

package fi.gekkio.roboticchameleon.tests;



public class RGB24Test extends TestBase {

    public RGB24Test() {
        super("frames/RGB24.rgb");
    }

    static final Conversion RGB24ToARGB = new Conversion() {
        @Override
        public void convert(ByteBuffer src, ByteBuffer dst) {
            int srcStrideRGB24 = WIDTH * 3;

            int dstStrideARGB = WIDTH * 4;

            RoboticChameleon.fromRGB24().toARGB(
                src, srcStrideRGB24,
                dst, dstStrideARGB,
                WIDTH, HEIGHT);
        }

        @Override
        public int getDstCapacity() {
            return WIDTH * HEIGHT * 4;
        }
    };

    static final Conversion RGB24ToI420Slice = new Conversion() {
        @Override
        public void convert(ByteBuffer src, ByteBuffer dst) {
            int srcStrideRGB24 = WIDTH * 3;

            int dstStrideY = WIDTH;
            int dstStrideU = WIDTH / 2;
            int dstStrideV = WIDTH / 2;
            ByteBuffer[] dsts = ByteBuffers.slice(dst, dstStrideY * HEIGHT, dstStrideU * HEIGHT / 2, dstStrideV * HEIGHT / 2);

            RoboticChameleon.fromRGB24().toI420(