| # Copyright 2017 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. |
| |
| import logging |
| import os |
| import subprocess |
| |
| |
| from autotest_lib.client.bin import test |
| from autotest_lib.client.common_lib import error |
| from autotest_lib.client.cros.video import device_capability |
| |
| class video_VideoCapability(test.test): |
| """ |
| This tests the video static capabilities settings |
| with label detector: "avtest_label_detect." |
| """ |
| version = 1 |
| avtest_label_to_capability = { |
| 'hw_video_acc_h264' : 'hw_dec_h264_1080_30', |
| 'hw_video_acc_vp8' : 'hw_dec_vp8_1080_30', |
| 'hw_video_acc_vp9' : 'hw_dec_vp9_1080_30', |
| 'hw_video_acc_vp9_2' : 'hw_dec_vp9-2_1080_30', |
| 'hw_jpeg_acc_dec' : 'hw_dec_jpeg', |
| 'hw_jpeg_acc_enc' : 'hw_enc_jpeg', |
| 'hw_video_acc_enc_h264' : 'hw_enc_h264_1080_30', |
| 'hw_video_acc_enc_vp8' : 'hw_enc_vp8_1080_30', |
| 'hw_video_acc_enc_vp9' : 'hw_enc_vp9_1080_30', |
| 'builtin_usb_camera' : 'builtin_usb_camera', |
| 'builtin_mipi_camera' : 'builtin_mipi_camera', |
| 'vivid_camera' : 'vivid_camera', |
| 'builtin_camera' : 'builtin_camera', |
| 'builtin_or_vivid_camera': 'builtin_or_vivid_camera', |
| } |
| |
| |
| def compare_avtest_label_detect(self, dc_results): |
| avtest_label = subprocess.check_output(['avtest_label_detect']).strip() |
| logging.debug("avtest_label_detect result\n%s", avtest_label) |
| mismatch_list = [] |
| avtest_detected_labels = set() |
| for line in avtest_label.splitlines(): |
| label = line.split(':')[1].strip() |
| if label in video_VideoCapability.avtest_label_to_capability: |
| cap = video_VideoCapability.avtest_label_to_capability[label] |
| avtest_detected_labels.add(cap) |
| |
| for cap in video_VideoCapability.avtest_label_to_capability.values(): |
| if dc_results[cap] == 'yes' and cap not in avtest_detected_labels: |
| logging.error('Static capability claims %s is available. ' |
| "But avtest_label_detect doesn't detect", cap) |
| mismatch_list.append(cap) |
| |
| if dc_results[cap] == 'no' and cap in avtest_detected_labels: |
| logging.error("Static capability claims %s isn't available. " |
| 'But avtest_label_detect detects', cap) |
| mismatch_list.append(cap) |
| |
| if mismatch_list: |
| raise error.TestFail("Dynamic capability detection results did not " |
| "match static capability configuration. " |
| "mismatch_list=%r" % mismatch_list) |
| |
| |
| def run_once(self): |
| logging.debug('Starting video_VideoCapability') |
| dc = device_capability.DeviceCapability() |
| dc_results = {} |
| for cap in dc.get_managed_caps(): |
| ret = dc.get_capability(cap) |
| dc_results[cap] = ret |
| |
| self.compare_avtest_label_detect(dc_results) |