package org.jcodec.codecs.vp8; import static org.jcodec.codecs.vp8.VP8EncoderTest.LinearAlgebraUtil.substractVector; import org.jcodec.codecs.vp8.VP8EncoderTest.LinearAlgebraUtil; import org.jcodec.codecs.vpx.VP8DCT; import org.junit.Test; import java.lang.System; public class DCTTest { @Test public void testDCT() { int[] input = new int[]{ -36, -37, -39, -42, -37, -38, -40, -42, -39, -39, -39, -40, -39, -41, -40, -35}; int[] out = VP8DCT.encodeDCT(input); System.out.println("dct encoded: "); System.out.println(formatAsSquare(out)); out = LinearAlgebraUtil.divideByScalar(out, 4); System.out.println("quantized: "); System.out.println(formatAsSquare(out)); out = LinearAlgebraUtil.multiplyByScalar(out, 4); System.out.println("dequantized: "); System.out.println(formatAsSquare(out)); int[] restored = VP8DCT.decodeDCT(out); System.out.println("restored: "); System.out.println(formatAsSquare(restored)); System.out.println("error: "); System.out.println(formatAsSquare(substractVector(input, restored))); } @Test public void testWHT(){ int[] input = new int[]{ -312, -333, -269, -242, -289, -287, -322, -239, -330, -334, -332, -329, -347, -339, -273, -312 }; int[] out = VP8DCT.encodeWHT(input); System.out.println("wht encoded: "); System.out.println(formatAsSquare(out)); out = LinearAlgebraUtil.divideByScalar(out, 4); System.out.println("quantized: "); System.out.println(formatAsSquare(out)); out = LinearAlgebraUtil.multiplyByScalar(out, 4); System.out.println("dequantized: "); System.out.println(formatAsSquare(out)); int[] restored = VP8DCT.decodeWHT(out); System.out.println("restored: "); System.out.println(formatAsSquare(restored)); System.out.println("error: "); System.out.println(formatAsSquare(substractVector(input, restored))); } public static String formatAsSquare(int[] a){ int size = (a.length == 4) ? 2 : (a.length == 16) ? 4 : (a.length==64) ? 8 : 0; String str = ""; for(int i=0;i<a.length;i++){ str += String.valueOf(a[i]); str += (((i+1)%size)==0) ? "\n" : "\t"; } return str; } }