普通文本  |  53行  |  2.04 KB

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