InterleavedYUVGenerator Class Reference#include <InterleavedYUVGenerator.h>
Inheritance diagram for InterleavedYUVGenerator:
[legend]List of all members.
Detailed Description
Generates FilterBankEvents containing raw camera images with interleaved pixels (YVUYVUYVU... instead of YYY...UUU...VVV...).
- Note:
- That's not a typo - the byte ordering is YVU, not YUV
Sorry about the misleading name... This takes filter banks containing YUV information, however, the main reason for this class is to interleave the image in order to pass it to the jpeg compression routines. JPEG expect YCbCr, which corresponds to YVU order.
Also, I should point out that mathematically, V!=Cb, and U!=Cr, but they do carry the same information. It's just a matter of scaling and offset. These comments use the "Y", "U", and "V" labels loosely.
There's only one channel, which holds the interleaved data. The increment is set to 3, but if you want to access each component in order, just use 1 instead (as you would expect hopefully, since that's the whole point of this class)
The generated events use 0 for their event source IDs. The row skip is always 0, and the row stride is always width*3. But it would be better to use the proper accessor functions to be more general.
should receive FilterBankEvents from any standard format FilterBankGenerator (like RawCameraGenerator)
- See also:
- FilterBankGenerator for information on serialization format
Definition at line 35 of file InterleavedYUVGenerator.h.
|
Public Member Functions |
| InterleavedYUVGenerator (EventBase::EventGeneratorID_t gid, unsigned int sid, unsigned int mysid) |
| constructor
|
| InterleavedYUVGenerator (EventBase::EventGeneratorID_t gid, unsigned int sid, unsigned int mysid, unsigned int syc, unsigned int suc, unsigned int svc) |
| constructor, you can pass which channels to interleave
|
virtual | ~InterleavedYUVGenerator () |
| destructor
|
virtual void | processEvent (const EventBase &event) |
| should receive FilterBankEvents from any standard format FilterBankGenerator (like RawCameraGenerator)
|
virtual unsigned int | getBinSize () const |
| calculates space needed to save - if you can't precisely add up the size, overestimate and things will still work.
|
virtual unsigned int | LoadBuffer (const char buf[], unsigned int len) |
virtual unsigned int | SaveBuffer (char buf[], unsigned int len) const |
| Save to a given buffer.
|
Static Public Member Functions |
std::string | getClassDescription () |
| Gives a short description of what this class of behaviors does... you should override this (but don't have to).
|
Static Public Attributes |
const unsigned int | CHAN_YUV = 0 |
| so you can refer to the YUV channel symbolically.
|
Protected Member Functions |
virtual void | setNumImages (unsigned int nLayers, unsigned int nChannels) |
| resizes the filter bank information storage area, you should override this to do your setup and call it from your constructor
|
virtual void | setDimensions () |
| resets stride parameter (to correspond to width*3 from FilterBankGenerator::setDimensions())
|
virtual unsigned char * | createImageCache (unsigned int layer, unsigned int chan) const |
| create new image data storage area for the cache - this called by getImage() only when the corresponding entry in images is NULL
|
virtual void | calcImage (unsigned int layer, unsigned int chan) const |
| should calculate new image data, called by getImage() only when imageValids indicates the image being requested is dirty (and only after getImage() has already called createImageCache())
|
Protected Attributes |
unsigned int | srcYChan |
| the channel of the source's Y channel
|
unsigned int | srcUChan |
| the channel of the source's U channel
|
unsigned int | srcVChan |
| the channel of the source's V channel
|
Private Member Functions |
| InterleavedYUVGenerator (const InterleavedYUVGenerator &fbk) |
| don't call
|
const InterleavedYUVGenerator & | operator= (const InterleavedYUVGenerator &fbk) |
| don't call
|
Constructor & Destructor Documentation
InterleavedYUVGenerator::InterleavedYUVGenerator |
( |
EventBase::EventGeneratorID_t |
gid, |
|
|
unsigned int |
sid, |
|
|
unsigned int |
mysid, |
|
|
unsigned int |
syc, |
|
|
unsigned int |
suc, |
|
|
unsigned int |
svc |
|
) |
|
|
Member Function Documentation
void InterleavedYUVGenerator::calcImage |
( |
unsigned int |
layer, |
|
|
unsigned int |
chan |
|
) |
const [protected, virtual] |
|
unsigned char * InterleavedYUVGenerator::createImageCache |
( |
unsigned int |
layer, |
|
|
unsigned int |
chan |
|
) |
const [protected, virtual] |
|
|
create new image data storage area for the cache - this called by getImage() only when the corresponding entry in images is NULL
You should return the pointer you want stored in images to be returned by any calls to getFirstRow. Interpretation of the data it points to is dependant on the the generator which creates it
Implements FilterBankGenerator.
Definition at line 96 of file InterleavedYUVGenerator.cc.
Referenced by LoadBuffer(). |
unsigned int InterleavedYUVGenerator::getBinSize |
( |
|
) |
const [virtual] |
|
|
calculates space needed to save - if you can't precisely add up the size, overestimate and things will still work.
- Returns:
- number of bytes read/written, 0 if error (or empty)
Reimplemented from FilterBankGenerator.
Definition at line 24 of file InterleavedYUVGenerator.cc. |
std::string InterleavedYUVGenerator::getClassDescription |
( |
|
) |
[inline, static] |
|
|
Gives a short description of what this class of behaviors does... you should override this (but don't have to).
Reimplemented from BehaviorBase.
Definition at line 50 of file InterleavedYUVGenerator.h. |
unsigned int InterleavedYUVGenerator::LoadBuffer |
( |
const char |
buf[], |
|
|
unsigned int |
len |
|
) |
[virtual] |
|
void InterleavedYUVGenerator::processEvent |
( |
const EventBase & |
event |
) |
[virtual] |
|
unsigned int InterleavedYUVGenerator::SaveBuffer |
( |
char |
buf[], |
|
|
unsigned int |
len |
|
) |
const [virtual] |
|
|
Save to a given buffer.
- Parameters:
-
| buf | pointer to the memory where you should begin writing |
| len | length of buf available. (this isn't all yours, constrain yourself to what you returned in getBinSize() ) |
- Returns:
- the number of bytes actually used
Reimplemented from FilterBankGenerator.
Definition at line 60 of file InterleavedYUVGenerator.cc. |
void InterleavedYUVGenerator::setDimensions |
( |
|
) |
[protected, virtual] |
|
void InterleavedYUVGenerator::setNumImages |
( |
unsigned int |
nLayers, |
|
|
unsigned int |
nChannels |
|
) |
[protected, virtual] |
|
|
resizes the filter bank information storage area, you should override this to do your setup and call it from your constructor
In general, it isn't expected that FilterBankGenerator's should necessarily be dynamically resizeable (although it would be nice), which is why this isn't public. If yours is, just add some pubic accessor functions which call this. In general, the included subclasses should be able to handle being resized, but there's no reason to do so since the system won't be changing its available resolutions at run time.
The default implementation is a no-op if(numLayers==nLayers && numChannels==nChannels)
Reimplemented from FilterBankGenerator.
Definition at line 87 of file InterleavedYUVGenerator.cc. |
Member Data Documentation
The documentation for this class was generated from the following files:
|