I have a third party framework that shows video on a SurfaceView. I would like to measure the framerate of the video to check if the phone is capable of showing the video fast e
If the code is not clear just ask.
LinkedList times = new LinkedList(){{
add(System.nanoTime());
}};
@Override
protected void onDraw(Canvas canvas) {
double fps = fps();
// ...
super.onDraw(canvas);
}
private final int MAX_SIZE = 100;
private final double NANOS = 1000000000.0;
/** Calculates and returns frames per second */
private double fps() {
long lastTime = System.nanoTime();
double difference = (lastTime - times.getFirst()) / NANOS;
times.addLast(lastTime);
int size = times.size();
if (size > MAX_SIZE) {
times.removeFirst();
}
return difference > 0 ? times.size() / difference : 0.0;
}