| # 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") |