53 lines
2.0 KiB
Python
53 lines
2.0 KiB
Python
# 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")
|