MCPcopy Create free account
hub / github.com/android/ndk-samples / stats_endFrame

Function stats_endFrame

bitmap-plasma/app/src/main/cpp/plasma.cpp:273–328  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

271static void stats_startFrame(Stats* s) { s->frameTime = now_ms(); }
272
273static void stats_endFrame(Stats* s) {
274 double now = now_ms();
275 double renderTime = now - s->frameTime;
276 double frameTime = now - s->lastTime;
277 int nn;
278
279 if (now - s->firstTime >= MAX_PERIOD_MS) {
280 if (s->numFrames > 0) {
281 double minRender, maxRender, avgRender;
282 double minFrame, maxFrame, avgFrame;
283 int count;
284
285 nn = s->firstFrame;
286 minRender = maxRender = avgRender = s->frames[nn].renderTime;
287 minFrame = maxFrame = avgFrame = s->frames[nn].frameTime;
288 for (count = s->numFrames; count > 0; count--) {
289 nn += 1;
290 if (nn >= MAX_FRAME_STATS) nn -= MAX_FRAME_STATS;
291 double render = s->frames[nn].renderTime;
292 if (render < minRender) minRender = render;
293 if (render > maxRender) maxRender = render;
294 double frame = s->frames[nn].frameTime;
295 if (frame < minFrame) minFrame = frame;
296 if (frame > maxFrame) maxFrame = frame;
297 avgRender += render;
298 avgFrame += frame;
299 }
300 avgRender /= s->numFrames;
301 avgFrame /= s->numFrames;
302
303 LOGI(
304 "frame/s (avg,min,max) = (%.1f,%.1f,%.1f) "
305 "render time ms (avg,min,max) = (%.1f,%.1f,%.1f)\n",
306 1000. / avgFrame, 1000. / maxFrame, 1000. / minFrame, avgRender,
307 minRender, maxRender);
308 }
309 s->numFrames = 0;
310 s->firstFrame = 0;
311 s->firstTime = now;
312 }
313
314 nn = s->firstFrame + s->numFrames;
315 if (nn >= MAX_FRAME_STATS) nn -= MAX_FRAME_STATS;
316
317 s->frames[nn].renderTime = renderTime;
318 s->frames[nn].frameTime = frameTime;
319
320 if (s->numFrames < MAX_FRAME_STATS) {
321 s->numFrames += 1;
322 } else {
323 s->firstFrame += 1;
324 if (s->firstFrame >= MAX_FRAME_STATS) s->firstFrame -= MAX_FRAME_STATS;
325 }
326
327 s->lastTime = now;
328}
329
330void RenderPlasma(JNIEnv* env, jclass, jobject bitmap, jlong time_ms) {

Callers 1

RenderPlasmaFunction · 0.85

Calls 1

now_msFunction · 0.85

Tested by

no test coverage detected