Filter items out that are not in range
RangeFilter passes through items received on its "inbox" inbox where item lies within one or more of a specfied set of ranges of value. Items that don't match this are discarded.
Reading all video frames from a YUV4MPEG format video file, but only passing on video frames 25-49 and 100-199 inclusive further along the pipeline:
Pipeline( RateControlledFileReader("myvideo.yuv4mpeg",readmode="bytes"), YUV4MPEGToFrame(), TagWithSequenceNumber(), RangeFilter(ranges=[ (25,49), (100,199) ]), ... ).run()
At initialisation, specify a list of value ranges that RangeFilter should allow. The list should be of the form:
[ (low,high), (low,high), (low, high), ... ]
The ranges specified are inclusive.
Send an item to the "inbox" inbox of the form (value, ....). If the value matches one or more of the ranges specified, then the whole item (including the value) will immediately be sent on out of the "outbox" outbox.
RangeFilter can therefore be used to select slices through sequence numbered or timestamped data.
If the size limited inbox is full, this component will pause until it is able to send out the data,.
If a producerFinished message is received on the "control" inbox, this component will complete parsing any data pending in its inbox, and finish sending any resulting data to its outbox. It will then send the producerFinished message on out of its "signal" outbox and terminate.
If a shutdownMicroprocess message is received on the "control" inbox, this component will immediately send it on out of its "signal" outbox and immediately terminate. It will not complete processing, or sending on any pending data.
RangeFilter(ranges) -> new RangeFilter component.
Filters out items of the form (value, ...) not within at least one of a specified value set of range. Items within range are passed through.
- ranges -- list of (low,high) pairs representing ranges of value. Ranges are inclusive.
Methods defined here
x.__init__(...) initializes x; see x.__class__.__doc__ for signature
Checks for any shutdown messages arriving at the "control" inbox, and returns true if the component should terminate when it has finished processing any pending data.
Collects any new shutdown messages arriving at the "control" inbox, and ensures self.shutdownMsg contains the highest priority one encountered so far.
Returns one of the ranges that the specified index falls within, otherwise returns None.
Checks for any shutdown messages arriving at the "control" inbox, and returns true if the component should terminate immediately.
Sends data out of the "outbox" outbox. If the destination is full (noSpaceInBox exception) then it waits until there is space. It keeps retrying until it succeeds.
If the component is ordered to immediately terminate then "STOP" is raised as an exception.
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
This is an ongoing community based development site. As a result the contents of this page is the opinions of the contributors of the pages involved not the organisations involved. Specificially, this page may contain personal views which are not the views of the BBC. (the site is powered by a wiki engine)
(C) Copyright 2008 Kamaelia Contributors, including the British Broadcasting Corporation, All Rights Reserved.