import hyperion, time

# Get the parameters
imageData = hyperion.args.get('url') if hyperion.args.get('imageSource', "") == "url" else hyperion.args.get('file')
framesPerSecond = float(hyperion.args.get('fps', 25))
reverse = bool(hyperion.args.get('reverse', False))
cropLeft = int(hyperion.args.get('cropLeft', 0))
cropTop = int(hyperion.args.get('cropTop', 0))
cropRight = int(hyperion.args.get('cropRight', 0))
cropBottom = int(hyperion.args.get('cropBottom', 0))
grayscale = bool(hyperion.args.get('grayscale', False))

sleepTime = 1./framesPerSecond
imageFrameList = []

if imageData:
	if reverse:
		imageFrameList = reversed(hyperion.getImage(imageData, cropLeft, cropTop, cropRight, cropBottom, grayscale))
	else:
		imageFrameList = hyperion.getImage(imageData, cropLeft, cropTop, cropRight, cropBottom, grayscale)

# Start the write data loop
while not hyperion.abort() and imageFrameList:
	for image in imageFrameList:
		if not hyperion.abort():
			hyperion.setImage(image["imageWidth"], image["imageHeight"], image["imageData"])
			time.sleep(sleepTime)