blob: 981b9c2a3f38b74f0c7a9dc431a68c6b3cc07b12 [file] [log] [blame]
mussa5cad69c2014-05-06 14:00:26 -07001# 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
5from autotest_lib.client.cros.video import method_logger
6
7
8class 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
Mussa32a15dd2015-03-24 11:49:23 -070037 self.player.seek_to(timestamp)
mussa5cad69c2014-05-06 14:00:26 -070038 self.player.wait_for_video_to_seek()
39
40 return self.screnshot_capturer.capture(filename)
41
42
43 @method_logger.log
mussa5fec82c2014-05-27 14:35:41 -070044 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
mussa5cad69c2014-05-06 14:00:26 -070055 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 """
Mussac9527762014-09-26 12:49:18 -070065 self.ensure_player_is_ready()
66
67 with self.screnshot_capturer:
68 return [self.collect_screenshot(t) for t in timestamps]