blob: cd77541b2b22233197315e7d44b8cfa230740e98 [file] [log] [blame]
# 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.
from telemetry.internal.image_processing import frame_generator
from telemetry.internal.util import external_modules
np = external_modules.ImportRequiredModule('numpy')
class FakeFrameGenerator(frame_generator.FrameGenerator):
""" Fakes a Frame Generator, for testing.
Attributes:
_frame_index: A frame read counter.
_timestamps: A generator of timestamps to return, or None.
_timestamp: The current timestamp.
_dimensions: The dimensions to return.
_channels: The number of color channels to return in the generated frames.
_frames: The number of frames to return before fake EOF."""
def __init__(self, frames=1e16, dimensions=(320, 240), channels=3,
timestamps=(x for x in iter(int, 1))):
""" Initializes the FakeFrameGenerator object.
Args:
frames: int, The number of frames to return before fake EOF.
dimensions: (int, int), The dimensions to return.
timestamps: generator, A generator of timestamps to return. The default
value is an infinite 0 generator.
channels: int, The number of color channels to return in the generated
frames, 1 for greyscale, 3 for RGB."""
self._dimensions = dimensions
self._timestamps = timestamps
self._timestamp = 0
self._frame_index = -1
self._channels = channels
self._frames = frames
super(FakeFrameGenerator, self).__init__()
# OVERRIDE
def _CreateGenerator(self):
while self._frame_index < self._frames - 1:
self._frame_index += 1
self._timestamp = next(self._timestamps)
yield np.zeros((self._dimensions[0], self._dimensions[1],
self._channels), np.uint8)
# OVERRIDE
@property
def CurrentTimestamp(self):
return self._timestamp
# OVERRIDE
@property
def CurrentFrameNumber(self):
return self._frame_index
# OVERRIDE
@property
def Dimensions(self):
return self._dimensions