April 2024 - This site, and Kamaelia are being updated. There is significant work needed, and PRs are welcome.

Kamaelia.Codec.RawYUVFramer

Raw YUV video data framer

This component takes a raw stream of YUV video data and breaks it into invidual frames. It sends them out one at a time, tagged with relevant data such as the frame size.

Many components that expect uncompressed video require it to be structured into frames in this way, rather than as a raw stream of continuous data. This component fulfills that requirement.

Example Usage

Reading and encoding raw video:

imagesize = (352, 288)        # "CIF" size video

Pipeline(ReadFileAdapter("raw352x288video.yuv", ...other args...),
         RawYUVFramer(imagesize),
         DiracEncoder(preset="CIF"),
        ).activate()

More Detail

Receives raw yuv video data, as strings on its "inbox" inbox.

Sends out individual frames packaged in a dictionary:

{
  "yuv" : (y_data, u_data, v_data),  # a tuple of strings
  "size" : (width, height),          # in pixels
  "pixformat" : "YUV420_planar",     # raw video data format
}

The component will terminate if it receives a shutdownMicroprocess or producerFinished message on its "control" inbox. The message is passed on out of the "signal" outbox.


Kamaelia.Codec.RawYUVFramer.RawYUVFramer

class RawYUVFramer(Axon.Component.component)

RawYUVFramer(size,pixformat) -> raw yuv video data framing component

Creates a component that frames a raw stream of YUV video data into frames.

Keyword arguments:

  • size -- (width,height) size of a video frame in pixels
  • pixformat -- raw video data format (default="YUV420_Planar")

Inboxes

Outboxes

Methods defined here

Warning!

You should be using the inbox/outbox interface, not these methods (except construction). This documentation is designed as a roadmap as to their functionalilty for maintainers and new component developers.

__init__(self, size[, pixformat])

x.__init__(...) initializes x; see x.__class__.__doc__ for signature

flushFrame(self)

Send out a frame, flushing buffers

main(self)

Main loop

packAndSend(self, raw)

packAndSend(raw) -> None

Pack incoming raw data into y,u,v planes, and triggers a flush when all planes are full.

Feedback

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, 05 Jun 2009 at 03:01:38 UTC/GMT