Source:
<code>public void dumpStatistics(String operation, String inputReference, long durationUs) { if (mOutputTimer.size() == 0) { Log.e(TAG, "No output produced"); return; } long totalTimeTakenNs = getTotalTime(); long timeTakenPerSec = (totalTimeTakenNs * 1000000) / durationUs; long timeToFirstFrameNs = mOutputTimer.get(0) - mStartTimeNs; long size = getTotalSize(); long intervalNs; long minTimeTakenNs = Long.MAX_VALUE; long maxTimeTakenNs = 0; long prevIntervalNs = mStartTimeNs; for (int idx = 0; idx < mOutputTimer.size() - 1; idx++) { intervalNs = mOutputTimer.get(idx) - prevIntervalNs; prevIntervalNs = mOutputTimer.get(idx); if (minTimeTakenNs > intervalNs) minTimeTakenNs = intervalNs; else if (maxTimeTakenNs < intervalNs) maxTimeTakenNs = intervalNs; } Log.i(TAG, "Input Reference : " + inputReference); Log.i(TAG, "Setup Time in nano sec : " + mInitTimeNs); Log.i(TAG, "Average Time in nano sec : " + totalTimeTakenNs / mOutputTimer.size()); Log.i(TAG, "Time to first frame in nano sec : " + timeToFirstFrameNs); Log.i(TAG, "Time taken (in nano sec) to " + operation + " 1 sec of content : " + timeTakenPerSec); <START> Log.i(TAG, "Total bytes " + operation + "ed : " + size); <END> Log.i(TAG, "Minimum Time in nano sec : " + minTimeTakenNs); Log.i(TAG, "Maximum Time in nano sec : " + maxTimeTakenNs); Log.i(TAG, "Destroy Time in nano sec : " + mDeInitTimeNs); }</code><technical_language>add a "bytes/second" metric indicating fast work file. idea of slower raw "read a file" speed offered underlying filesystem at. of 'wall time' of CPU do processing. interested in that, do measure this point, especially extractors codecs a bunch of work in a separate process. Put list of later</technical_language>

Target:
public void dumpStatistics(String operation, String inputReference, long durationUs) { if (mOutputTimer.size() == 0) { Log.e(TAG, "No output produced"); return; } long totalTimeTakenNs = getTotalTime(); long timeTakenPerSec = (totalTimeTakenNs * 1000000) / durationUs; long timeToFirstFrameNs = mOutputTimer.get(0) - mStartTimeNs; long size = getTotalSize(); long intervalNs; long minTimeTakenNs = Long.MAX_VALUE; long maxTimeTakenNs = 0; long prevIntervalNs = mStartTimeNs; for (int idx = 0; idx < mOutputTimer.size() - 1; idx++) { intervalNs = mOutputTimer.get(idx) - prevIntervalNs; prevIntervalNs = mOutputTimer.get(idx); if (minTimeTakenNs > intervalNs) { minTimeTakenNs = intervalNs; } else if (maxTimeTakenNs < intervalNs) { maxTimeTakenNs = intervalNs; } } Log.i(TAG, "Input Reference : " + inputReference); Log.i(TAG, "Setup Time in nano sec : " + mInitTimeNs); Log.i(TAG, "Average Time in nano sec : " + totalTimeTakenNs / mOutputTimer.size()); Log.i(TAG, "Time to first frame in nano sec : " + timeToFirstFrameNs); Log.i(TAG, "Time taken (in nano sec) to " + operation + " 1 sec of content : " + timeTakenPerSec); Log.i(TAG, "Total bytes " + operation + "ed : " + size); Log.i(TAG, "Number of bytes " + operation + "ed per second : " + (size * 1000000000) / totalTimeTakenNs); Log.i(TAG, "Minimum Time in nano sec : " + minTimeTakenNs); Log.i(TAG, "Maximum Time in nano sec : " + maxTimeTakenNs); Log.i(TAG, "Destroy Time in nano sec : " + mDeInitTimeNs); }