mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2024-12-29 05:41:02 +00:00
39 lines
1,011 B
Java
39 lines
1,011 B
Java
package org.srb2.nativecode;
|
|
|
|
import java.nio.ByteBuffer;
|
|
|
|
import android.graphics.Bitmap;
|
|
import android.graphics.Canvas;
|
|
import android.view.SurfaceHolder;
|
|
|
|
public class Video {
|
|
public static int width = 340;
|
|
public static int height = 240;
|
|
private SurfaceHolder sh;
|
|
public ByteBuffer fb;
|
|
public Bitmap bmp;
|
|
|
|
public Video(SRB2 srb2, SurfaceHolder sh) {
|
|
this.sh = sh;
|
|
fb = ByteBuffer.allocateDirect(fbSize());
|
|
bmp = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
|
|
}
|
|
|
|
private int fbSize() {
|
|
// naively assuming RGBA8888 now, even though that is entirely wrong.
|
|
// ... well, at least, that's what the Canvas/Bitmap will expect.
|
|
return width * height * 4;
|
|
}
|
|
|
|
public void gotFrame() {
|
|
|
|
Canvas canvas = sh.lockCanvas();
|
|
canvas.drawARGB(0xff, 0, 0, 0);
|
|
// ugh, an extra copy. the only way to avoid this, I suppose,
|
|
// is to use the surface in native code directly.
|
|
bmp.copyPixelsFromBuffer(fb);
|
|
canvas.drawBitmap(bmp, 0, 0, null);
|
|
sh.unlockCanvasAndPost(canvas);
|
|
|
|
}
|
|
}
|