package org.jcodec.containers.mkv;
import static org.jcodec.common.io.IOUtils.closeQuietly;
import static org.jcodec.common.io.IOUtils.readFileToByteArray;
import org.jcodec.common.io.FileChannelWrapper;
import org.jcodec.common.model.Packet;
import org.jcodec.containers.mkv.boxes.EbmlMaster;
import org.jcodec.containers.mkv.demuxer.MKVDemuxer;
import org.jcodec.containers.mkv.demuxer.MKVDemuxer.VideoTrack;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.List;
public class MKVDemuxerTest {
MKVDemuxer dem = null;
private FileInputStream demInputStream;
@Before
public void setUp() throws IOException{
demInputStream = new FileInputStream("./src/test/resources/mkv/10frames.webm");
dem = new MKVDemuxer(new FileChannelWrapper(demInputStream.getChannel()));
}
@After
public void tearDown(){
closeQuietly(demInputStream);
}
@Test
public void testGetFrame() throws IOException {
Assert.assertNotNull(dem);
Assert.assertNotNull(dem.getVideoTracks().get(0));
VideoTrack video = (VideoTrack) dem.getVideoTracks().get(0);
Packet frame = video.nextFrame();
Assert.assertNotNull(video);
byte[] vp8Frame = readFileToByteArray(new File("./src/test/resources/mkv/10frames01.vp8"));
Assert.assertArrayEquals(vp8Frame, MKVMuxerTest.bufferToArray(frame.getData()));
}
@Test
public void testPosition() throws IOException {
Assert.assertNotNull(dem);
Assert.assertNotNull(dem.getVideoTracks().get(0));
VideoTrack video = (VideoTrack) dem.getVideoTracks().get(0);
video.gotoFrame(1);
Packet frame = video.nextFrame();
Assert.assertNotNull(video);
byte[] vp8Frame = readFileToByteArray(new File("./src/test/resources/mkv/10frames02.vp8"));
Assert.assertArrayEquals(vp8Frame, MKVMuxerTest.bufferToArray(frame.getData()));
}
}