112e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasana# Copyright (c) 2014 The Chromium OS Authors. All rights reserved. 212e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasana# Use of this source code is governed by a BSD-style license that can be 312e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasana# found in the LICENSE file. 412e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasana 512e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasanafrom contextlib import closing 612e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasanaimport logging 712e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasanaimport os 812e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasana 9422993abd78797cd1c9caa3b52d5eae22fecc83cMussafrom autotest_lib.client.bin import test 10172ecb7f5a6bbda741799444237a9be4ee21518bEd Bakerfrom autotest_lib.client.common_lib import file_utils 1112e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasanafrom autotest_lib.client.common_lib.cros import chrome 12031bb43c64c1d3ff0c2088b0b950f25015b4d83bMussafrom autotest_lib.client.cros.video import histogram_verifier 1312e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasana 1412e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasana 1512e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasana# Chrome flags to use fake camera and skip camera permission. 1612e041142e00094ce078a227da3b2c2f8b8ee616Rohit MakasanaEXTRA_BROWSER_ARGS = ['--use-fake-device-for-media-stream', 1712e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasana '--use-fake-ui-for-media-stream'] 1812e041142e00094ce078a227da3b2c2f8b8ee616Rohit MakasanaFAKE_FILE_ARG = '--use-file-for-fake-video-capture="%s"' 1912e041142e00094ce078a227da3b2c2f8b8ee616Rohit MakasanaDOWNLOAD_BASE = 'http://commondatastorage.googleapis.com/chromiumos-test-assets-public/crowd/' 2012e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasana 2112e041142e00094ce078a227da3b2c2f8b8ee616Rohit MakasanaHISTOGRAMS_URL = 'chrome://histograms/' 2212e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasana 23422993abd78797cd1c9caa3b52d5eae22fecc83cMussa 2412e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasanaclass video_ChromeRTCHWDecodeUsed(test.test): 2512e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasana """The test verifies HW Encoding for WebRTC video.""" 2612e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasana version = 1 2712e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasana 2812e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasana 2912e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasana def start_loopback(self, cr): 3012e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasana """ 3112e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasana Opens WebRTC loopback page. 3212e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasana 3312e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasana @param cr: Autotest Chrome instance. 3412e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasana """ 3512e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasana tab = cr.browser.tabs[0] 3655e4a38297449fcf3dbd693e2e6afe72fa84b519Ahmed Fakhry tab.Navigate(cr.browser.platform.http_server.UrlOf( 37422993abd78797cd1c9caa3b52d5eae22fecc83cMussa os.path.join(self.bindir, 'loopback.html'))) 3812e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasana tab.WaitForDocumentReadyStateToBeComplete() 3912e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasana 4012e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasana 41031bb43c64c1d3ff0c2088b0b950f25015b4d83bMussa def run_once(self, video_name, histogram_name, histogram_bucket_val): 4212e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasana # Download test video. 43031bb43c64c1d3ff0c2088b0b950f25015b4d83bMussa url = DOWNLOAD_BASE + video_name 44031bb43c64c1d3ff0c2088b0b950f25015b4d83bMussa local_path = os.path.join(self.bindir, video_name) 45172ecb7f5a6bbda741799444237a9be4ee21518bEd Baker file_utils.download_file(url, local_path) 4612e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasana 4712e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasana # Start chrome with test flags. 4812e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasana EXTRA_BROWSER_ARGS.append(FAKE_FILE_ARG % local_path) 4912e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasana with chrome.Chrome(extra_browser_args=EXTRA_BROWSER_ARGS) as cr: 5012e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasana # Open WebRTC loopback page. 5155e4a38297449fcf3dbd693e2e6afe72fa84b519Ahmed Fakhry cr.browser.platform.SetHTTPServerDirectories(self.bindir) 5212e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasana self.start_loopback(cr) 5312e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasana 5412e041142e00094ce078a227da3b2c2f8b8ee616Rohit Makasana # Make sure decode is hardware accelerated. 55031bb43c64c1d3ff0c2088b0b950f25015b4d83bMussa histogram_verifier.verify(cr, histogram_name, histogram_bucket_val) 56