projektAI/venv/Lib/site-packages/pygame/examples/overlay.py
2021-06-06 22:13:05 +02:00

69 lines
1.6 KiB
Python

#!/usr/bin/env python
""" pygame.examples.overlay
The overlay module is deprecated now.
It is an olden days way to draw video quickly.
"""
import sys
import pygame as pg
from pygame.compat import xrange_
SR = (800, 600)
ovl = None
########################################################################
# Simple video player
def vPlayer(fName):
global ovl
f = open(fName, "rb")
fmt = f.readline().strip().decode()
res = f.readline().strip().decode()
unused_col = f.readline().strip()
if fmt != "P5":
print("Unknown format( len %d ). Exiting..." % len(fmt))
return
w, h = [int(x) for x in res.split(" ")]
h = int((h * 2) / 3)
# Read into strings
y = f.read(w * h)
u = bytes()
v = bytes()
for _ in xrange_(0, int(h / 2)):
u += (f.read(int(w / 2)))
v += (f.read(int(w / 2)))
# Open overlay with the resolution specified
ovl = pg.Overlay(pg.YV12_OVERLAY, (w, h))
ovl.set_location(0, 0, w, h)
ovl.display((y, u, v))
while 1:
pg.time.wait(10)
for ev in pg.event.get():
if ev.type in (pg.KEYDOWN, pg.QUIT):
return
def main(fname):
"""play video file fname"""
pg.init()
try:
pg.display.set_mode(SR)
vPlayer(fname)
finally:
pg.quit()
# Test all modules
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Example usage: python overlay.py data/yuv_1.pgm")
else:
main(sys.argv[1])
# Uncomment the code below for a quick test
# ------------------------------------------
# if __name__ == "__main__":
# main('data/yuv_1.pgm')