diff options
Diffstat (limited to 'catapult/telemetry/telemetry/internal/image_processing/frame_generator.py')
-rw-r--r-- | catapult/telemetry/telemetry/internal/image_processing/frame_generator.py | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/catapult/telemetry/telemetry/internal/image_processing/frame_generator.py b/catapult/telemetry/telemetry/internal/image_processing/frame_generator.py new file mode 100644 index 00000000..b701418e --- /dev/null +++ b/catapult/telemetry/telemetry/internal/image_processing/frame_generator.py @@ -0,0 +1,62 @@ +# Copyright 2014 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 abc + + +class FrameReadError(Exception): + pass + + +class FrameGenerator(object): + """ Defines an interface for reading input frames. + + Attributes: + _generator: A reference to the created generator. + """ + __metaclass__ = abc.ABCMeta + + def __init__(self): + """ Initializes the FrameGenerator object. """ + self._generator = self._CreateGenerator() + + @abc.abstractmethod + def _CreateGenerator(self): + """ Creates a new generator. + + Implemented in derived classes. + + Raises: + FrameReadError: A error occurred in reading the frame. + """ + raise NotImplementedError + + @property + def Generator(self): + """ Returns: + A reference to the created generator. + """ + return self._generator + + @abc.abstractproperty + def CurrentTimestamp(self): + """ Returns: + float, The timestamp of the current frame in milliseconds. + """ + raise NotImplementedError + + @abc.abstractproperty + def CurrentFrameNumber(self): + """ Returns: + int, The frame index of the current frame. + """ + raise NotImplementedError + + @abc.abstractproperty + def Dimensions(self): + """ Returns: + The dimensions of the frame sequence as a tuple int (width, height). + This value should be constant across frames. + """ + raise NotImplementedError |