RawCamBehavior Class Reference#include <RawCamBehavior.h>
Inheritance diagram for RawCamBehavior:
[legend]List of all members.
Detailed Description
Forwards images from camera over wireless.
The format used for serialization is basically defined by the subclass of FilterBankGenerator being used. I suggest looking at that classes's documentation to determine the format used.
However, RawCamBehavior will add a few fields at the beginning of each packet to assist in processing the image stream.
I emphasize: beginning of each Vision packet, before the FilterBankGenerator header.
- <
string:"TekkotsuImage"> - <
Config::vision_config::encoding_t : rawcam_encoding> (expect single or multiple channels, 0 means color (3 channels), 1 means intensity (1 channel)) - <
Config::vision_config::compression_t : rawcam_compression> (0==none, 1==jpeg, 2==rle) - <
unsigned int: width> (this is the width of the largest channel - note different channels can be sent at different resolutions! Provides cheap "compression" of chromaticity channels) - <
unsigned int: height> (similarly, height of largest channel) - <
unsigned int: timestamp> (time image was taken, milliseconds since boot) - <
unsigned int: framenumber> (incremented for each frame, so we can tell if/when we drop one)
This is exactly the same protocol that is followed by the SegCamBehavior as well - the same code can parse either stream.
Definition at line 31 of file RawCamBehavior.h.
|
Public Member Functions |
| RawCamBehavior () |
| constructor
|
virtual void | DoStart () |
| By default, merely adds to the reference counter (through AddReference()); Note you should still call this from your overriding methods.
|
virtual void | DoStop () |
| By default, subtracts from the reference counter (RemoveReference()), and thus may deletex if zero; Don't forget to still call this when you override this; Warning: call this at the end of your DoStop(), not beginning (it might delete this ).
|
virtual void | processEvent (const EventBase &e) |
| By defining here, allows you to get away with not supplying a processEvent() function for the EventListener interface. By default, does nothing.
|
virtual std::string | getDescription () const |
| Gives a short description of what this particular instantiation does (in case a more specific description is needed on an individual basis).
|
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 | TCP_WIRELESS_BUFFER_SIZE = 200000 |
| 200000 bytes for use up to 416x320 + 2*208x160 (double res Y, full res UV on ERS-7)
|
const unsigned int | UDP_WIRELESS_BUFFER_SIZE = 64*1024 |
| 64KB is the max udp packet size
|
Protected Member Functions |
bool | openPacket (FilterBankGenerator &fbkgen, unsigned int time, unsigned int layer) |
| opens a new packet, writes header info; returns true if open, false if otherwise open (check cur==NULL for error)
|
bool | writeColor (const FilterBankEvent &fbke) |
| writes a color image
|
bool | writeSingleChannel (const FilterBankEvent &fbke) |
| writes a single channel
|
void | closePacket () |
| closes and sends a packet, does nothing if no packet open
|
Protected Attributes |
Socket * | visRaw |
| socket for sending the image stream
|
char * | packet |
| point to the current buffer being prepared to be sent
|
char * | cur |
| current location within that buffer
|
unsigned int | avail |
| the number of bytes remaining in the buffer
|
unsigned int | max_buf |
| the buffer size requested from Wireless when the socket was allocated
|
Private Member Functions |
| RawCamBehavior (const RawCamBehavior &) |
| don't call
|
RawCamBehavior & | operator= (const RawCamBehavior &) |
| don't call
|
Constructor & Destructor Documentation
RawCamBehavior::RawCamBehavior |
( |
|
) |
|
|
Member Function Documentation
void RawCamBehavior::closePacket |
( |
|
) |
[protected] |
|
void RawCamBehavior::DoStart |
( |
|
) |
[virtual] |
|
void RawCamBehavior::DoStop |
( |
|
) |
[virtual] |
|
|
By default, subtracts from the reference counter (RemoveReference()), and thus may deletex if zero; Don't forget to still call this when you override this; Warning: call this at the end of your DoStop(), not beginning (it might delete this ).
Reimplemented from BehaviorBase.
Definition at line 46 of file RawCamBehavior.cc. |
std::string RawCamBehavior::getClassDescription |
( |
|
) |
[inline, static] |
|
virtual std::string RawCamBehavior::getDescription |
( |
|
) |
const [inline, virtual] |
|
|
Gives a short description of what this particular instantiation does (in case a more specific description is needed on an individual basis).
By default simply returns getName(), because any calls from a BehaviorBase function to getClassDescription() are going to call BehaviorBase::getClassDescription(), not ~YourSubClass~::getClassDescription(), because static functions can't be virtual in C++ (doh!)
This means that getDescription called on a pointer to a BehaviorBase of unknown subtype would always return an empty string, which is pretty useless. So instead we return the name in this situation. If you want getDescription to return getClassDescription, you'll have to override it in your subclass to do so.
Reimplemented from BehaviorBase.
Definition at line 50 of file RawCamBehavior.h. |
bool RawCamBehavior::openPacket |
( |
FilterBankGenerator & |
fbkgen, |
|
|
unsigned int |
time, |
|
|
unsigned int |
layer |
|
) |
[protected] |
|
|
opens a new packet, writes header info; returns true if open, false if otherwise open (check cur==NULL for error)
see the class documentation for RawCamBehavior for the protocol documentation
Definition at line 78 of file RawCamBehavior.cc.
Referenced by writeColor(), and writeSingleChannel(). |
void RawCamBehavior::processEvent |
( |
const EventBase & |
e |
) |
[virtual] |
|
bool RawCamBehavior::writeColor |
( |
const FilterBankEvent & |
fbke |
) |
[protected] |
|
bool RawCamBehavior::writeSingleChannel |
( |
const FilterBankEvent & |
fbke |
) |
[protected] |
|
Member Data Documentation
|
200000 bytes for use up to 416x320 + 2*208x160 (double res Y, full res UV on ERS-7)
Definition at line 36 of file RawCamBehavior.h. |
The documentation for this class was generated from the following files:
|