package multimonster.converter.plugin; import java.lang.reflect.Field; import multimonster.common.Codec; import multimonster.common.Structure; /** * @author Holger Velke */ public class TranscodeMagic { //FILE TYPES - see transcode sources: "./import/magic.h" public static final long TC_MAGIC_ERROR = 0xFFFFFFFF; public static final long TC_MAGIC_UNKNOWN = 0x00000000; public static final long TC_MAGIC_PIPE = 0x0000FFFF; public static final long TC_MAGIC_DIR = 0x000000FF; public static final long TC_MAGIC_RAW = 0x00000001; public static final long TC_MAGIC_WAV = 0x00000016; public static final long TC_MAGIC_AVI = 0x00000017; public static final long TC_MAGIC_ASF = 0x00000018; public static final long TC_MAGIC_MOV = 0x00000019; public static final long TC_MAGIC_CDXA = 0x00000020; public static final long TC_MAGIC_VDR = 0x00000021; public static final long TC_MAGIC_XML = 0x00000022; public static final long TC_MAGIC_LAV = 0x00000023; public static final long TC_MAGIC_OGG = 0x00000024; public static final long TC_MAGIC_AF6 = 0x00000025; public static final long TC_MAGIC_VNC = 0x00000026; public static final long TC_MAGIC_MXF = 0x00000027; public static final long TC_MAGIC_VOB = 0x000001ba; public static final long TC_MAGIC_SOCKET = 0xFF00FF00; public static final long TC_MAGIC_DVD = 0xF0F0F0F0; public static final long TC_MAGIC_DVD_PAL = 0xF0F0F0F1; public static final long TC_MAGIC_DVD_NTSC = 0xF0F0F0F2; public static final long TC_MAGIC_V4L_VIDEO = 0xF0F0F0F3; public static final long TC_MAGIC_V4L_AUDIO = 0xF0F0F0F4; public static final long TC_MAGIC_V4L2_VIDEO = 0xF0F0F0F5; public static final long TC_MAGIC_V4L2_AUDIO = 0xF0F0F0F6; //raw streams concatenated frames: - see transcode sources: "./import/magic.h" public static final long TC_MAGIC_M2V = 0x000001b3; public static final long TC_MAGIC_PICEXT = 0x000001b5; public static final long TC_MAGIC_MPEG = 0x000001e0; public static final long TC_MAGIC_TS = 0x00000047; public static final long TC_MAGIC_YUV4MPEG = 0x00000300; public static final long TC_MAGIC_DV_PAL = 0x1f0700bf; public static final long TC_MAGIC_DV_NTSC = 0x1f07003f; public static final long TC_MAGIC_AC3 = 0x00000b77; public static final long TC_MAGIC_LPCM = 0x00000180; public static final long TC_MAGIC_MP3 = 0x0000FFFB; public static final long TC_MAGIC_MP2_FC = 0x0000FFFC; public static final long TC_MAGIC_MP2 = 0x0000FFFD; public static final long TC_MAGIC_MP3_2_5 = 0x0000FFE3; public static final long TC_MAGIC_MP3_2 = 0x0000FFF3; public static final long TC_MAGIC_NUV = 0x4e757070; public static final long TC_MAGIC_TIFF1 = 0x00004D4D; public static final long TC_MAGIC_TIFF2 = 0x00004949; public static final long TC_MAGIC_JPEG = 0xFFD8FFE0; public static final long TC_MAGIC_BMP = 0x0000424D; public static final long TC_MAGIC_SGI = 0x000001DA; public static final long TC_MAGIC_PNG = 0x89504e47; public static final long TC_MAGIC_GIF = 0x00474946; public static final long TC_MAGIC_PPM = 0x00005036; public static final long TC_MAGIC_PGM = 0x00005035; public static final long TC_MAGIC_ID3 = 0x49443303; //movie types: - see transcode sources: "./import/magic.h" public static final long TC_MAGIC_PAL = 0x000000F1; public static final long TC_MAGIC_NTSC = 0x000000F2; public static final long TC_MAGIC_MPG = 0x000000F3; public static final long TC_MAGIC_RMF = 0x000000F4; // CODECS - see transcode sources: "./import/magic.h" public static final long TC_CODEC_ERROR = 0xFFFFFFFF; public static final long TC_CODEC_UNKNOWN = 0x00000000; public static final long TC_CODEC_RAW = 0xFEFEFEFE; public static final long TC_CODEC_PCM = 0x00000001; public static final long TC_CODEC_RGB = 0x00000024; public static final long TC_CODEC_AC3 = 0x00002000; public static final long TC_CODEC_A52 = 0x00002001; public static final long TC_CODEC_YV12 = 0x32315659; public static final long TC_CODEC_UYVY = 0x59565955; public static final long TC_CODEC_YUV2 = 0x32565559; public static final long TC_CODEC_YUY2 = 0x32595559; public static final long TC_CODEC_M2V = 0x000001b3; public static final long TC_CODEC_MPEG = 0x01000000; public static final long TC_CODEC_MPEG1 = 0x00100000; public static final long TC_CODEC_MPEG2 = 0x00010000; public static final long TC_CODEC_DV = 0x00001000; public static final long TC_CODEC_MP3 = 0x00000055; public static final long TC_CODEC_NUV = 0x4e757070; public static final long TC_CODEC_PS1 = 0x00007001; public static final long TC_CODEC_PS2 = 0x00007002; public static final long TC_CODEC_DIVX3 = 0x000031B3; public static final long TC_CODEC_MP42 = 0x000031B4; public static final long TC_CODEC_MP43 = 0x000031B5; public static final long TC_CODEC_DIVX4 = 0x000041B6; public static final long TC_CODEC_DIVX5 = 0x000051B6; public static final long TC_CODEC_XVID = 0x58766944; public static final long TC_CODEC_MJPG = 0xA0000010; public static final long TC_CODEC_MPG1 = 0xA0000012; public static final long TC_CODEC_SUB = 0xA0000011; public static final long TC_CODEC_LAV = 0xFFFF0023; public static final long TC_CODEC_THEORA = 0x00001234; public static final long TC_CODEC_VORBIS = 0x0000FFFE; public static final long TC_CODEC_LZO1 = 0x0001FFFE; public static final long TC_CODEC_RV10 = 0x0002FFFE; public static final long TC_CODEC_SVQ1 = 0x0003FFFE; public static final long TC_CODEC_SVQ3 = 0x0004FFFE; public static final long TC_CODEC_VP3 = 0x0005FFFE; public static final long TC_CODEC_4XM = 0x0006FFFE; public static final long TC_CODEC_WMV1 = 0x0007FFFE; public static final long TC_CODEC_WMV2 = 0x0008FFFE; public static final long TC_CODEC_HFYU = 0x0009FFFE; public static final long TC_CODEC_INDEO3 = 0x000AFFFE; public static final long TC_CODEC_H263P = 0x000BFFFE; public static final long TC_CODEC_H263I = 0x000CFFFE; public static final long TC_CODEC_LZO2 = 0x000DFFFE; public static final long TC_CODEC_FRAPS = 0x000EFFFE; public static final long TC_CODEC_FFV1 = 0x000FFFFE; public static final long TC_CODEC_ASV1 = 0x0010FFFE; public static final long TC_CODEC_ASV2 = 0x0011FFFE; private static String getCodecName(long codec) { String name = "UNKOWN"; Field[] fields = null; fields = TranscodeMagic.class.getFields(); try { for (int i = 0; i < fields.length; i++) { if (codec == fields[i].getLong(TranscodeMagic.class)) { name = fields[i].getName(); if (name.startsWith("TC_CODEC_")) { name = name.substring(9); //remove 'TC_CODEC_' break; } } } } catch (Exception e) { } return name; } public static Structure getStructure(long codec) { String name = Structure.UNKNOWN; Field[] fields = null; fields = TranscodeMagic.class.getFields(); try { for (int i = 0; i < fields.length; i++) { if (codec == fields[i].getLong(TranscodeMagic.class)) { name = fields[i].getName(); if (name.startsWith("TC_MAGIC_")) { name = name.substring(9); //remove 'TC_MAGIC_' break; } } } } catch (Exception e) { } return new Structure(name); } /* * see transcode sources: "./src/probe.c - char *codec2str(int f)" */ /** * Makes the mapping between Transcode codec-number and * MultiMonster-Codec * * @param codecNum * @return the Codec spezified by codecNum */ public static Codec getCodec(long codecNum) { switch ((int) codecNum) { case (int) TC_CODEC_MPEG2 : return new Codec(Codec.MPEG2); case (int) TC_CODEC_MJPG : return new Codec(Codec.MJPG); case (int) TC_CODEC_MPG1 : return new Codec(Codec.MPEG1); case (int) TC_CODEC_LZO1 : return new Codec(Codec.LZO1); case (int) TC_CODEC_RV10 : return new Codec(Codec.RV10); case (int) TC_CODEC_DIVX3 : return new Codec(Codec.DIVX3); case (int) TC_CODEC_MP42 : return new Codec(Codec.MP42); case (int) TC_CODEC_MP43 : return new Codec(Codec.MP43); case (int) TC_CODEC_DIVX4 : return new Codec(Codec.DIVX4); case (int) TC_CODEC_DIVX5 : return new Codec(Codec.DIVX5); case (int) TC_CODEC_XVID : return new Codec(Codec.XVID); case (int) TC_CODEC_MPEG1 : return new Codec(Codec.MPEG1); case (int) TC_CODEC_MPEG : return new Codec(Codec.MPEG); case (int) TC_CODEC_DV : return new Codec(Codec.DV); case (int) TC_CODEC_YV12 : return new Codec(Codec.YV12); case (int) TC_CODEC_YUV2 : return new Codec(Codec.YUV2); case (int) TC_CODEC_NUV : return new Codec(Codec.NUV); case (int) TC_CODEC_RGB : return new Codec(Codec.RGB); case (int) TC_CODEC_LAV : return new Codec(Codec.LAV); case (int) TC_CODEC_PCM : return new Codec(Codec.PCM); case (int) TC_CODEC_4XM : return new Codec(Codec._4XM); default : return new Codec(getCodecName(codecNum)); } } }