diff --git a/core/src/com/riiablo/video/BIK.java b/core/src/com/riiablo/video/BIK.java index f812b301..dc497dec 100644 --- a/core/src/com/riiablo/video/BIK.java +++ b/core/src/com/riiablo/video/BIK.java @@ -35,6 +35,7 @@ public class BIK { final int width; final int height; final float fps; + final float delta; final int flags; final int numTracks; final BinkAudio[] tracks; @@ -96,7 +97,8 @@ public class BIK { } fps = (float) fpsDividend / fpsDivisor; - log.trace("fps: {} fps", fps); + delta = 1 / fps; + log.trace("fps: {} fps ({}s)", fps, delta); flags = in.read32(); if (log.traceEnabled()) log.tracef("flags: 0x%08x (%s)", flags, getFlagsString()); diff --git a/core/src/com/riiablo/video/VideoPlayer.java b/core/src/com/riiablo/video/VideoPlayer.java index 7c996856..c78b213a 100644 --- a/core/src/com/riiablo/video/VideoPlayer.java +++ b/core/src/com/riiablo/video/VideoPlayer.java @@ -9,6 +9,8 @@ public class VideoPlayer implements Disposable { private BIK bik; private AudioDevice[] audio; private float[][][] out; + private int frame; + private float time, nextFrame; public VideoPlayer() { @@ -35,9 +37,12 @@ public class VideoPlayer implements Disposable { } - int f = 0; public void update(float delta) { - bik.decode(f++, audio, out[0]); + time += delta; + if (time > nextFrame) { + nextFrame += bik.delta; + bik.decode(frame++, audio, out[0]); + } } public void draw(Batch batch) { diff --git a/tools/src/com/riiablo/video/VideoTool.java b/tools/src/com/riiablo/video/VideoTool.java index f519ab68..d4b1684d 100644 --- a/tools/src/com/riiablo/video/VideoTool.java +++ b/tools/src/com/riiablo/video/VideoTool.java @@ -10,6 +10,9 @@ import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration; import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.graphics.GL20; +import com.riiablo.logger.Level; +import com.riiablo.logger.LogManager; + public class VideoTool extends ApplicationAdapter { private static final String TAG = "VideoTool"; @@ -30,6 +33,8 @@ public class VideoTool extends ApplicationAdapter { @Override public void create() { + LogManager.setLevel("com.riiablo.video", Level.TRACE); + Gdx.gl.glClearColor(0.3f, 0.3f, 0.3f, 1.0f); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);