Home | History | Annotate | Download | only in video
      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 
     37         self.player.seek_to(timestamp)
     38         self.player.wait_for_video_to_seek()
     39 
     40         return self.screnshot_capturer.capture(filename)
     41 
     42 
     43     @method_logger.log
     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
     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         """
     65         self.ensure_player_is_ready()
     66 
     67         with self.screnshot_capturer:
     68             return [self.collect_screenshot(t) for t in timestamps]