# Copyright (c) 2015 The Chromium OS Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. from native_Benchmarks_common import * from webm import webm class vp8(object): """Build webm codec (vpxenc/vpxdec) and run them on client""" def __init__(self, scratch_srv, scratch_cli, client, args): # Instantiating webm builds the codec. self.webm = webm(scratch_srv, scratch_cli, client, args) self.client = client self.scratch_cli = scratch_cli # download src = '%s/vp8.webm' % SERVER_TEST_ROOT dst = '%s/vp8.webm' % scratch_cli rcp_check(client, src, dst, 'Error occurred while sending vp8.webm to client.\n') def run(self): """Returns perf_value tuples""" # run decoder cmd = ('%s --summary %s/vp8.webm -o %s/vp8.yuv 2>&1' % (self.webm.vpxdec, self.scratch_cli, self.scratch_cli)) declog = run_check(self.client, cmd, "Error occurred while running vp8") # run encoder cmd = (('%s %s/vp8.yuv -o /dev/null --codec=vp8 --i420 -w 1280' + ' -h 720 --good --cpu-used=0 --target-bitrate=2000 2>&1') % (self.webm.vpxenc, self.scratch_cli)) enclog = run_check(self.client, cmd, "Error occurred while running vp8enc") return self.parse(declog, enclog) def parse(self, dec, enc): """Translate logs into perf_values tuples. @param dec: logs from decoder @param enc: logs from encoder """ return [{'description': 'VP8', 'graph': 'decode', 'value': dec.split()[-2][1:], 'units': 'fps'}, {'description': 'VP8', 'graph': 'encode', 'value': enc.split()[-2][1:], 'units': 'fps'}] def __del__(self): run_check(self.client, 'rm -f %s/vp8.yuv' % self.scratch_cli, "Error occurred while cleaning up")