# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

AUTHOR = 'Chrome OS Team, chromeos-video@google.com'
NAME = 'video_HangoutHardwarePerf.vp8'
PURPOSE = """
Monitor the performance of running VDA and VEA concurrently in a Hangout
like scenario.
"""
CRITERIA = """
The test fails if the vda_unittest or the vea_unittest fails or crashes.
"""
ATTRIBUTES = "suite:bvt-perbuild"
TIME = 'SHORT'
TEST_CATEGORY = 'Performance'
TEST_CLASS = 'video'
TEST_TYPE = 'client'
# Reboot in the lab after the test ends.
DEPENDENCIES = 'cleanup-reboot, hw_video_acc_vp8, hw_video_acc_enc_vp8'
BUG_TEMPLATE = {
    'labels': ['OS-Chrome', 'VideoTestFailure'],
}

DOC = """
This test utilizes the vda_unittest and vea_unittest to measure the
performance of using the hardware Video Decode/Encode Accelerator
concurrently.
"""

# Used resources. They will be downloaded in the beginning of the test.
resources = [
    'crowd/crowd720-41e9a3e6a6b1644ebdb3f5723fce96e5.vp8',
    'crowd/crowd180-bde69ca71393033d9187a2833720c9f8.vp8',
    'crowd/crowd720-3cfe7b096f765742b4aa79e55fe7c994.yuv',
    'crowd/crowd360-e84aac15c05b9b19250f3fc97722e0f6.yuv',
    'crowd/crowd180-6d71fa96da062037482619df31830a97.yuv']

# The videos to be decoded. Each entry consists of the following parts:
#   [vidoe_name, width, height, frame_num, fragment_num, profile]
decode_videos  = [['crowd720.vp8', 1280, 720, 500, 502, 11]]
decode_videos += [['crowd180.vp8', 320, 180, 500, 502, 11]] * 4

# The videos to be encoded.
#   [video_name, width, height, profile, bit_rate]
encode_videos = [
    ['crowd720.yuv', 1280, 720, 11, 1200000],
    ['crowd360.yuv', 640, 360, 11, 500000],
    ['crowd180.yuv', 320, 180, 11, 100000]]

job.run_test('video_HangoutHardwarePerf',
    resources=resources,
    decode_videos=decode_videos,
    encode_videos=encode_videos,
    measurement='cpu')
