2017-09-14 20:18:45 +00:00
|
|
|
#!/usr/bin/env python
|
|
|
|
|
|
|
|
# Copyright 2017 Google Inc.
|
|
|
|
#
|
|
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
|
|
# found in the LICENSE file.
|
|
|
|
|
2021-03-25 13:04:43 +00:00
|
|
|
|
|
|
|
from __future__ import print_function
|
2017-09-14 20:18:45 +00:00
|
|
|
import optparse
|
|
|
|
import re
|
|
|
|
import subprocess
|
|
|
|
import time
|
|
|
|
|
|
|
|
|
|
|
|
def query_surfaceflinger_frame_count():
|
|
|
|
parcel = subprocess.Popen("adb shell service call SurfaceFlinger 1013",
|
|
|
|
stdout=subprocess.PIPE, stderr=subprocess.PIPE,
|
|
|
|
shell=True).communicate()[0]
|
|
|
|
if not parcel:
|
|
|
|
raise Exception("FAILED: adb shell service call SurfaceFlinger 1013")
|
|
|
|
|
|
|
|
framecount = re.search("Result: Parcel\(([a-f0-9]+) ", parcel)
|
|
|
|
if not framecount:
|
|
|
|
raise Exception("Unexpected result from SurfaceFlinger: " + parcel)
|
|
|
|
|
|
|
|
return int(framecount.group(1), 16)
|
|
|
|
|
|
|
|
|
|
|
|
def main(interval):
|
|
|
|
startframe = query_surfaceflinger_frame_count()
|
|
|
|
starttime = time.time()
|
|
|
|
|
|
|
|
while True:
|
|
|
|
time.sleep(interval)
|
|
|
|
|
|
|
|
endframe = query_surfaceflinger_frame_count()
|
|
|
|
endtime = time.time()
|
|
|
|
fps = (endframe - startframe) / (endtime - starttime)
|
2021-03-25 13:04:43 +00:00
|
|
|
print("%.2f" % fps)
|
2017-09-14 20:18:45 +00:00
|
|
|
|
|
|
|
startframe = endframe
|
|
|
|
starttime = endtime
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
parser = optparse.OptionParser()
|
|
|
|
parser.add_option("-i", "--interval", type="int", default="2",
|
|
|
|
help="Number of seconds to count frames.")
|
|
|
|
options, args = parser.parse_args()
|
|
|
|
main(options.interval)
|
|
|
|
|