Displays uncompressed RGB video data on a pygame surface using the Pygame Display service.
Read raw YUV data from a file, convert it to interleaved RGB and display it using VideoSurface:
imagesize = (352, 288) # "CIF" size video fps = 15 # framerate of video Pipeline(ReadFileAdapter("raw352x288video.yuv", ...other args...), RawYUVFramer(imagesize), MessageRateLimit(messages_per_second=fps, buffer=fps*2), ToRGB_interleaved(), VideoSurface(), ).activate()
RawYUVFramer is needed to frame raw YUV data into individual video frames. ToRGB_interleaved is needed to convert the 3 planes of Y, U and V data to a single plane containing RGB data interleaved (R, G, B, R, G, B, R, G, B, ...)
The component waits to receive uncompressed video frames from its "inbox" inbox.
The frames must be encoded as dictionary objects in the format described below.
When the first frame is received, the component notes the size and pixel format of the video data and requests an appropriate surface from the Pygame Display service component, to which video can be rendered.
NOTE: Currently the only supported pixelformat is "RGB_interleaved".
When subsequent frames of video are received the rgb data is rendered to the surface and the Pygame Display service is notified that the surface needs redrawing.
At present, VideoSurface cannot cope with a change of pixel format or video size mid sequence.
Uncompresed video frames must be encoded as dictionaries. VideoSurface requires the following entries:
{ "rgb" : rgbdata # a string containing RGB video data "size" : (width, height) # in pixels "pixformat" : "RGB_interleaved" # format of raw video data }
VideoSurface([position]) -> new VideoSurface component
Displays a pygame surface using the Pygame Display service component, for displaying RGB video frames sent to its "inbox" inbox.
The surface is sized and configured by the first frame of (uncompressed) video data is receives.
Keyword arguments:
x.__init__(...) initializes x; see x.__class__.__doc__ for signature
Returns True if frame size or pixel format is new/different for this frame.
Main loop.
Generator. yield's 1 until data is ready on the named inbox.
Got a problem with the documentation? Something unclear that could be clearer? Want to help improve it? Constructive criticism is very welcome - especially if you can suggest a better rewording!
Please leave you feedback here in reply to the documentation thread in the Kamaelia blog.
-- Automatic documentation generator, 19 Oct 2008 at 14:29:09 UTC/GMT