package org.mp4parser.muxer.samples;
import org.junit.Assert;
import org.junit.Test;
import org.mp4parser.IsoFile;
import org.mp4parser.muxer.FileRandomAccessSourceImpl;
import org.mp4parser.tools.Hex;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.List;
public class DefaultMp4SampleListTest {
List<String> sampleChecksum = Arrays.asList(
"E8B264863D89C0AA9DA412F5A875E962",
"4E0EB2B74685E3C67FCD06C78592DE02",
"D8453125AD7FD1DA1A370A9F66FFEDA1",
"DF00B2722AD61D8E874F2CD0AC83735F",
"9F5E77FBA770ED794FC6F6C527D26C32",
"791AB6C887F3DDD06F48B066479F7255",
"A178B87694A0EF5208C03CFC2A6366CC",
"365D6806D19F50C2B8601E5AD807F903",
"B011EC24B6B692270C2A3E71B3FBB61A",
"9B267F05B31A1E9BB1F756A56240660D",
"B71553FCC0DAC77663C1D67E88379A61",
"6C4D358F1DA3BB330F753A681307B388",
"AE8CC6DAD1DB24CD5F5830B36A8F05F0",
"03AF9011F5388F8675DE045612DB66D4",
"F95EB3D8A23469B518E41D0DC1DCBC15",
"6CF0ACCFC6C43E5BFFF8FE09FBEA6288",
"6BE334D9EEA6C07D1141A0375335D684",
"468F8491B8C6381E4F78C7C8AB5E4477",
"CB114EDFF1054560ACD7F2656A379E63",
"4FF39B2886282A60B371460177D1B1A8",
"4DBC5A92CA0B36ADC7974897217A68D0",
"752A968767D8C1993093097051EC26CC",
"39E7EF190C00CDF5283A40A5C3DE4E24",
"C3D1730755B987FEFCBF7D9A71551834",
"C31948552D184EAA48380C855599CF75",
"0DC21BBB652F02FD737A7A374C001E49",
"97074E9DC88A0734D7879BB964E05948",
"C445135FCD23FD5D0EF02F9F75459C7D",
"925FE33B925640217E01456F3708DC2C",
"EBC76CAFED17927F016753AAEC833692",
"2BD88786CAE0E4C37B1346C3EA295E20",
"80D563BB11C41EC345ABAF580EB8A81B",
"980F26B9835608456127E72EF3A64665",
"1848490B874405E743BFFDAF9CB0BE71",
"6FA0FD07349098D6648C44B3A46A4977",
"F1FBDB880B9D7BDDA9369DA87F5A9DB4",
"40B64E9F0F4FF442E26F73AE5F5B0EAD",
"A7EACE4BB146370CE94B60486E69DE78",
"72E8FA11E30E256CE2047E7A3C92C9CE",
"FB365B5C305FD7FF5A65EF56120A4991",
"EBA8A19D06CD42845247BCE86188FD67",
"4F132874DD1C2852093DE51181FC0B68",
"63AE0891B84D3F168808D9B9001B4C26",
"07F3AF12740441B53B2B144FD4685839",
"797AA7BA8463C9A4F5F14659594EF2A6",
"C8775596F10E17A6E3B62C1EB05C971D",
"EF572014792A46B3AE88A13A2D6FD10A",
"0AAC25197A63AC25F094AB344B67B001",
"316E82A5C8F07DEEFF8DCC0ECAFC3AD7",
"ADDDDEBE3565C43554D42457C523250F",
"D40B8C664B8757E482A659FBAEE0859B",
"0A38A2F2C29AC9A0F9E21CE65F3F5487",
"E7B2F51154DD9265219EDD7B2FFED0D1",
"09A880BD335D04EBFBAEBC0447C867BB",
"7F2057FBF8A580ECC81197D3E987016F",
"0B6226702E4E3986BB600D0AA3E5897E",
"A8D46A169B439FA4C3A95F1DDCAF55AF",
"96432757D95AF8135836D81C4FE06EF5",
"B345E69C0435357EBFC5681A86C5854B",
"51FC0F6290219DA481D8D3665C0D54E7",
"40849235E71051F869EE3C36218A4D0F",
"55646D0419F9368F14689060D7D5001E",
"DE0237411074D2927DB3613546CA58E9",
"84AD3083FB23364F146349C43A10AAE1",
"F3F7A910689AB444373FF4DA593CFB11",
"3E13409901D35E1A05C546836A07A404",
"1E0B556D590BCD56872708BE817939C3",
"828BDB499EA9D884FB9E82635F4AA403",
"2FBC2B32D3B57D0D209D9CF5381ECDCB",
"C2428ED5C4239A3956254C6014092E3A",
"F8A664B4EBA87B76A1C9EECBD8D914BB",
"031A835DBF70086E618467ABFDB8FFFF",
"1E40FAE29059EC3095C782AB476494F5",
"D42B3A3122CA5A82A98B7C0A95DA89D4",
"AAB3C02A8DFD5FD51BA2BAB6C7F3E149",
"E86BE97661630198054A0F2BCA865A4C",
"DB0E45F01A1DE89820F4904374FB27D4",
"6EB5B9437E7BA0FC7C7AA6DDFFE8049A",
"AE156879D9CB9912D36DC85115565124",
"51B9E65378E58985DBBF13A0F06AEB0C",
"E13D0580781EB02996ED18285A4E0C7E",
"E2A22849E3CD7595353B100D44B9B996",
"B61303717325BB1650216765DA03DE99",
"5D0881F262F26E060864A1357690210D",
"B83746FD34ADFF95B3E02C406AE78155",
"509B25A4B5F15F27B32C4E2F99C38152",
"505B2E11AC8F7991B654FFFE0EA45F36",
"EC6C10F67400A84FDFFBB8675F5CAFB4",
"54DD594E1D9BDE133C3DFE43E9150ABB",
"567A528F1DEB5701A94E7087971830F7",
"5AB14E038D3E18C724D3B8F17F8831D6",
"656C9378EA5FDEE17A56AD523C2F49A8",
"B51552F3181FC1B852B5D0A5245D09E8",
"E9247AE0E6E1182781F338063E48602B",
"42B5B49FB44F5A6924BE746A97CCBB53",
"F7D7CA3A0731D57A0D6C6B6656A92E53",
"35809579C5B46A9000506DCFF2E6860E",
"9CCBA52107222124DAC41E603012C27C",
"90928A6B6B21B64D349CA1EA2D759FB8",
"1CC340B4D9EF2819E71CED464111A9E3",
"E2E70F465673829A925199BD8D64BC8A",
"45431C3EE160B064FBC8252EB1EF43A2",
"D1F180116F43076B515E108D48BAD0BC",
"51D6EDAACEEC4EB11AAD18B4F2C98FD3",
"B701BD9D7B9F557BC1B8E5A379AC3707",
"20D03D54F5A0017A44DE46F50E0E1E64",
"80AC926FB0B6E5BFAB9AC37D0001C033",
"3BF894FA75C539B4EE6E7991E10869D3",
"EF68A7A7E11E40457EE6C2C3C09686D6",
"89B586CB2EAF9641437ECEB33415A32C",
"545FBF4B90020F25059C28A2ED0149DC",
"DA50EF12CBDB0662F772F4BA7F19D201",
"5C583C2743EAE4DA219DD00B721CC8F3",
"E3D655A991385CF3BEA7B2C99D98DD93",
"A373C5E59911EDC9EE7EBCA12B8356FA",
"B2ACF2D419B63D472A77A00E7F65D83E",
"51CCE3A2E711BD30D9D4859A9885D476",
"B9EC9F35625E1CC98D3952F5B281882D",
"E43A9EC0619220980D1C237E10473B4A",
"D853503269AC5B8596824E4B4D662812",
"8DE7DEC744ECFCDFA55AE48B847648AF",
"34BB11DF1BD020095DF9CDC4113D1728",
"71D04F11B43AEF2315A55CEF4D2B6062",
"74BA285C63C5328071656DEF55E1E4C6",
"52FE252FE817A143E735C8B6EA429DA7",
"C952EB29CE2C85D6714E8664936FB4E3",
"BE2ECE5DF05F1E7BAC8CAF1693D4FF9B",
"50DE4DEAB1223E8173B4BB19D323D4FD",
"DA9BE9E5480C59C419D2388939383DE4"
);
@Test
public void checkSampleList() throws IOException, NoSuchAlgorithmException {
String filename = this.getClass().getProtectionDomain().getCodeSource().getLocation().getFile() +
"/com/mp4parser/muxer/samples/1365070268951.mp4";
IsoFile isoFile = new IsoFile(new FileInputStream(filename).getChannel());
SampleList sl = new SampleList(1, isoFile, new FileRandomAccessSourceImpl(new RandomAccessFile(filename, "r")));
MessageDigest md5 = MessageDigest.getInstance("MD5");
for (int i = 0; i < sl.size(); i++) {
//System.err.println("\"" + Hex.encodeHex(md5.digest(sl.get(i).asByteBuffer().array())) + "\",");
byte[] sampleBytes = new byte[(int) sl.get(i).getSize()];
sl.get(i).asByteBuffer().get(sampleBytes);
Assert.assertEquals(sampleChecksum.get(i), Hex.encodeHex(md5.digest(sampleBytes)));
}
}
}