# Copyright (c) 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_VideoEncodeAccelerator.h264"
PURPOSE = "Verify Chromium hardware Video Encode Acceleration works."
CRITERIA = """
This test will fail if any of the tests in video_encode_accelerator_unittest
fails. Running video_encode_accelerator_unittest is skipped on machines that are
known not to support video encode.
"""
ATTRIBUTES = "suite:video"
TIME = "MEDIUM"
TEST_CATEGORY = "Functional"
TEST_CLASS = "video"
TEST_TYPE = "client"

DOC = """
This is a wrapper test for Chrome video_encode_accelerator_unittest.
"""

# Format of each stream:
#   (path, width, height, requested_bit_rate, requested_frame_rate,
#    requested_subsequent_bit_rate, requested_subsequent_frame_rate,
#    pixel_format)
# requested_frame_rate, requested_subsequent_bit_rate and
# requested_subsequent_frame_rate may be None, which means to set the default
# value.
#
# Bitrates setting come from http://www.webmproject.org/hardware/rtc-coding-requirements/
# The bitrate setting of 1080p comes from
# third_party/libjingle/source/talk/media/webrtc/simulcast.cc.
# Please do not change bitrates.
streams = [
    ('crowd/crowd1080-96f60dd6ff87ba8b129301a0f36efc58.yuv',
     1920, 1080, 4000000, None, None, None, 1),
    ('tulip2/tulip2-1280x720-1b95123232922fe0067869c74e19cd09.yuv',
     1280, 720, 1200000, None, None, None, 1),
    ('tulip2/tulip2-640x360-094bd827de18ca196a83cc6442b7b02f.yuv',
     640, 360, 500000, None, None, None, 1),
    ('tulip2/tulip2-320x180-55be7124b3aec1b72bfb57f433297193.yuv',
     320, 180, 100000, None, None, None, 1),

    # Change bit rate at the middle.
    ('tulip2/tulip2-1280x720-1b95123232922fe0067869c74e19cd09.yuv',
     1280, 720, 1200000, None, 300000, None, 1),
    ('tulip2/tulip2-1280x720-1b95123232922fe0067869c74e19cd09.yuv',
     1280, 720, 300000, None, 600000, None, 1),
    ('tulip2/tulip2-1280x720-1b95123232922fe0067869c74e19cd09.yuv',
     1280, 720, 600000, None, 1200000, None, 1),
]
# Disable the 240x136 video for http://crbug.com/548109.
# TODO: Enable the test after PSNR(with block) verification is merged:
#    ('tulip2/tulip2-240x136-ed58afc99d08e5d21013c1a5056e43bf.yuv',
#     240, 136, 100000, None, None, None, 1)]

job.run_test('video_VideoEncodeAccelerator', in_cloud=True, streams=streams,
        profile=1, tag='h264', capability='hw_enc_h264_1080_30')
