public static void RLGRDecode(Triplet <byte[]> input, EntropyAlgorithm mode, bool useReduceExtrapolate, out Triplet <short[]> output)
        {
            var outlist = new List <short[]>();

            foreach (var component in input)
            {
                short[] decodedComponent;
                RFXDecoderWrapper.RLGRDecode(component, mode, out decodedComponent);
                ComputeOriginalLL3FromDeltas(decodedComponent, useReduceExtrapolate);
                outlist.Add(decodedComponent);
            }
            output = new Triplet <short[]>(outlist[0], outlist[1], outlist[2]);
        }
 public static void InverseDWT(Triplet <short[, ]> input, bool useReduceExtrapolate, out Triplet <short[, ]> output)
 {
     output   = new Triplet <short[, ]>();
     output.X = (short[, ])input.X.Clone();
     output.Y = (short[, ])input.Y.Clone();
     output.Z = (short[, ])input.Z.Clone();
     if (useReduceExtrapolate)
     {
         InverseDWT_Component(output.X);
         InverseDWT_Component(output.Y);
         InverseDWT_Component(output.Z);
     }
     else
     {
         short[,] x, y, z;
         RFXDecoderWrapper.InverseDWT(output.X, out x);
         RFXDecoderWrapper.InverseDWT(output.Y, out y);
         RFXDecoderWrapper.InverseDWT(output.Z, out z);
         output = new Triplet <short[, ]>(x, y, z);
     }
 }
 public static void YUVToRGB(Triplet <short[, ]> input, out Triplet <byte[, ]> output)
 {
     byte[,] x, y, z;
     RFXDecoderWrapper.YUVToRGB(input.X, input.Y, input.Z, out x, out y, out z);
     output = new Triplet <byte[, ]>(x, y, z);
 }