# Copyright 2015 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_VEAPerf.h264"
PURPOSE = "Monitor the performance of the Chromium VEA."
CRITERIA = """
The test fails if the video_encode_accelerator_unittest fails or crashes.
"""
ATTRIBUTES = "suite:crosbolt_perf_nightly"
TIME = "MEDIUM"
TEST_CATEGORY = "Performance"
TEST_CLASS = "video"
TEST_TYPE = "client"
BUG_TEMPLATE = {
    'labels': ['OS-Chrome', 'VideoTestFailure'],
    'cc': ['chromeos-video-test-failures@google.com'],
}

DOC = """
This test utilizes the video_encode_accelerator_unittest to measure the
performance of the Chromium Video Encode Accelerator.
"""

# A list of test cases. Each entry consists of the following parts:
#   (path, on_cloud, width, height, requested_bit_rate, profile, requested_frame_rate)
#
# Bitrate settings come from http://www.webmproject.org/hardware/rtc-coding-requirements/
# Please do not change bitrates.
#
# Requested_frame_rate settings control input frame rates when measuring CPU
# usage.
# (VEA_unittest reuses per-stream requested-frame-rate as input frame rate when
# --run_at_fps option is enabled.)
test_cases = [
    ('crowd/crowd1080-96f60dd6ff87ba8b129301a0f36efc58.yuv', True, 1920, 1080, 4000000, 1, 30),
    ('tulip2/tulip2-1280x720-1b95123232922fe0067869c74e19cd09.yuv', True, 1280, 720, 1200000, 1, 30),
    ('tulip2/tulip2-640x360-094bd827de18ca196a83cc6442b7b02f.yuv', True, 640, 360, 500000, 1, 30),
    ('vidyo1/vidyo1-1280x720-b8601dd181bb2921fffce3fbb896351e.yuv', True, 1280, 720, 1200000, 1, 30),
]

job.run_test('video_VEAPerf', test_cases=test_cases,
             required_cap='hw_enc_h264_1080_30', tag='h264')
