mussa | 5cad69c | 2014-05-06 14:00:26 -0700 | [diff] [blame] | 1 | # Copyright (c) 2014 The Chromium OS Authors. All rights reserved. |
| 2 | # Use of this source code is governed by a BSD-style license that can be |
| 3 | # found in the LICENSE file. |
| 4 | |
| 5 | from autotest_lib.client.cros.video import method_logger |
| 6 | |
| 7 | |
| 8 | class VideoScreenShotCollector(object): |
| 9 | """ |
| 10 | Captures and collects screenshots of a video at specified time points. |
| 11 | |
| 12 | """ |
| 13 | |
| 14 | |
| 15 | @method_logger.log |
| 16 | def __init__(self, player, screenshot_namer, screenshot_capturer): |
| 17 | self.player = player |
| 18 | self.screnshot_namer = screenshot_namer |
| 19 | self.screnshot_capturer = screenshot_capturer |
| 20 | |
| 21 | |
| 22 | @method_logger.log |
| 23 | def collect_screenshot(self, timestamp): |
| 24 | """ |
| 25 | Get a screenshot of video at a particular time. |
| 26 | |
| 27 | Navigates player to a given time value, captures and saves a |
| 28 | screenshot at that time value. |
| 29 | |
| 30 | @param timestamp: time_delta, the time value to capture screenshot for. |
| 31 | |
| 32 | @returns a complete path to the screenshot captured. |
| 33 | |
| 34 | """ |
| 35 | filename = self.screnshot_namer.get_filename(timestamp) |
| 36 | |
Mussa | 32a15dd | 2015-03-24 11:49:23 -0700 | [diff] [blame] | 37 | self.player.seek_to(timestamp) |
mussa | 5cad69c | 2014-05-06 14:00:26 -0700 | [diff] [blame] | 38 | self.player.wait_for_video_to_seek() |
| 39 | |
| 40 | return self.screnshot_capturer.capture(filename) |
| 41 | |
| 42 | |
| 43 | @method_logger.log |
mussa | 5fec82c | 2014-05-27 14:35:41 -0700 | [diff] [blame] | 44 | def ensure_player_is_ready(self): |
| 45 | """ |
| 46 | Loads video and waits for player to be ready. |
| 47 | |
| 48 | @raises whatever load_video() raises. |
| 49 | |
| 50 | """ |
| 51 | self.player.load_video() |
| 52 | |
| 53 | |
| 54 | @method_logger.log |
mussa | 5cad69c | 2014-05-06 14:00:26 -0700 | [diff] [blame] | 55 | def collect_multiple_screenshots(self, timestamps): |
| 56 | """ |
| 57 | Collects screenshots for each timevalue in a list. |
| 58 | |
| 59 | @param timestamps: time_delta list, time values to collect |
| 60 | screenshots for. |
| 61 | |
| 62 | @returns a list of complete paths for screenshot captured. |
| 63 | |
| 64 | """ |
Mussa | c952776 | 2014-09-26 12:49:18 -0700 | [diff] [blame] | 65 | self.ensure_player_is_ready() |
| 66 | |
| 67 | with self.screnshot_capturer: |
| 68 | return [self.collect_screenshot(t) for t in timestamps] |