| # Copyright (c) 2014 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| from autotest_lib.client.cros.video import method_logger |
| |
| |
| class VideoScreenShotCollector(object): |
| """ |
| Captures and collects screenshots of a video at specified time points. |
| |
| """ |
| |
| |
| @method_logger.log |
| def __init__(self, player, screenshot_namer, screenshot_capturer): |
| self.player = player |
| self.screnshot_namer = screenshot_namer |
| self.screnshot_capturer = screenshot_capturer |
| |
| |
| @method_logger.log |
| def collect_screenshot(self, timestamp): |
| """ |
| Get a screenshot of video at a particular time. |
| |
| Navigates player to a given time value, captures and saves a |
| screenshot at that time value. |
| |
| @param timestamp: time_delta, the time value to capture screenshot for. |
| |
| @returns a complete path to the screenshot captured. |
| |
| """ |
| filename = self.screnshot_namer.get_filename(timestamp) |
| |
| self.player.seek_to(timestamp) |
| self.player.wait_for_video_to_seek() |
| |
| return self.screnshot_capturer.capture(filename) |
| |
| |
| @method_logger.log |
| def ensure_player_is_ready(self): |
| """ |
| Loads video and waits for player to be ready. |
| |
| @raises whatever load_video() raises. |
| |
| """ |
| self.player.load_video() |
| |
| |
| @method_logger.log |
| def collect_multiple_screenshots(self, timestamps): |
| """ |
| Collects screenshots for each timevalue in a list. |
| |
| @param timestamps: time_delta list, time values to collect |
| screenshots for. |
| |
| @returns a list of complete paths for screenshot captured. |
| |
| """ |
| self.ensure_player_is_ready() |
| |
| with self.screnshot_capturer: |
| return [self.collect_screenshot(t) for t in timestamps] |