package org.jcodec.platform; import java.io.File; import java.io.InputStream; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.net.URL; import java.nio.charset.Charset; import java.util.Arrays; import org.jcodec.containers.mp4.boxes.Box; public class Platform { public static <T> T newInstance(Class<T> clazz, Object[] params) { Class[] classes = new Class[params.length]; for (int i = 0; i < params.length; i++) { classes[i] = params[i].getClass(); } try { return clazz.getConstructor(classes).newInstance(params); } catch (Exception e) { throw new RuntimeException(e); } } public static void invokeMethod(Object target, String methodName, Object[] params) throws NoSuchMethodException { Class[] parameterTypes = new Class[params.length]; for (int i = 0; i < params.length; i++) { parameterTypes[i] = params[i].getClass(); } try { target.getClass().getDeclaredMethod(methodName, parameterTypes).invoke(target, params); } catch (Exception e) { throw new RuntimeException(e); } } public static Method[] getDeclaredMethods(Class<?> claz) { return claz.getDeclaredMethods(); } public static Method[] getMethods(Class<?> class1) { return class1.getMethods(); } public static Field[] getDeclaredFields(Class<?> class1) { return class1.getDeclaredFields(); } public static Field[] getFields(Class<?> class1) { return class1.getFields(); } public static String stringFromCharset(byte[] data, Charset charset) { return new String(data, charset); } public static byte[] getBytesForCharset(String url, Charset utf8) { return url.getBytes(utf8); } public static InputStream getResourceAsStream(Class<?> class1, String string) { return class1.getClassLoader().getResourceAsStream(string); } public static String stringFromCharset4(byte[] data, int offset, int len, Charset charset) { return new String(data, offset, len, charset); } public static URL getResource(Class<?> class1, String string) { return class1.getResource(string); } public static boolean arrayEqualsInt(int[] a, int[] a2) { return Arrays.equals(a, a2); } public static boolean arrayEqualsByte(byte[] a, byte[] a2) { return Arrays.equals(a, a2); } public static boolean arrayEqualsObj(Object[] a, Object[] a2) { return Arrays.equals(a, a2); } public static <T> T[] copyOfRangeO(T[] original, int from, int to) { return Arrays.copyOfRange(original, from, to); } public static long[] copyOfRangeL(long[] original, int from, int to) { return Arrays.copyOfRange(original, from, to); } public static int[] copyOfRangeI(int[] original, int from, int to) { return Arrays.copyOfRange(original, from, to); } public static byte[] copyOfRangeB(byte[] original, int from, int to) { return Arrays.copyOfRange(original, from, to); } public static <T> T[] copyOfObj(T[] original, int newLength) { return Arrays.copyOf(original, newLength); } public static long[] copyOfLong(long[] original, int newLength) { return Arrays.copyOf(original, newLength); } public static int[] copyOfInt(int[] original, int newLength) { return Arrays.copyOf(original, newLength); } public static boolean[] copyOfBool(boolean[] original, int newLength) { return Arrays.copyOf(original, newLength); } public static byte[] copyOfByte(byte[] original, int newLength) { return Arrays.copyOf(original, newLength); } public static String arrayToString(Object[] a) { return Arrays.toString(a); } public static void deleteFile(File file) { file.delete(); } public static byte[] getBytes(String fourcc) { return fourcc.getBytes(); } public static String stringFromBytes(byte[] bytes) { return new String(bytes); } public static boolean isAssignableFrom(Class class1, Class class2) { return class1.isAssignableFrom(class2); } }