August'24: Kamaelia is in maintenance mode and will recieve periodic updates, about twice a year, primarily targeted around Python 3 and ecosystem compatibility. PRs are always welcome. Latest Release: 1.14.32 (2024/3/24)
RangeFilter passes through items received on its "inbox" inbox where item[0] 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.
Keyword arguments:
- ranges -- list of (low,high) pairs representing ranges of value. Ranges are inclusive.
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.
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.
Main loop
Checks for any shutdown messages arriving at the "control" inbox, and returns true if the component should terminate immediately.
Generator.
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