Image Component Library (ICL)
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | List of all members

Grabber implementation for handling DC-Devices using libdc1394 (Version >= 2.0.rc9) . More...

#include <DCGrabber.h>

Inheritance diagram for icl::io::DCGrabber:
icl::io::Grabber icl::utils::Uncopyable icl::utils::Configurable

Public Member Functions

ICLIO_API DCGrabber (const DCDevice &dev=DCDevice::null, int isoMBits=0)
 Constructor creates a new DCGrabber instance from a given DCDevice. More...
 
ICLIO_API ~DCGrabber ()
 Destructor. More...
 
virtual ICLIO_API const core::ImgBaseacquireImage ()
 grab function grabs an image (destination image is adapted on demand) More...
 
virtual ICLIO_API std::vector< std::string > get_io_property_list ()
 filters out the size property, as it is set by the core::format property More...
 
- Public Member Functions inherited from icl::io::Grabber
 Grabber ()
 
virtual ~Grabber ()
 Destructor. More...
 
const core::ImgBasegrab (core::ImgBase **dst=0)
 grab function calls the Grabber-specific acquireImage-method and applies distortion if necessary More...
 
template<class T >
bool desiredUsed () const
 returns whether the desired parameter for the given type is used More...
 
template<class T >
void useDesired (const T &t)
 sets desired parameters (only available for core::depth,utils::Size and core::format) More...
 
void useDesired (core::depth d, const utils::Size &size, core::format fmt)
 sets up the grabber to use all given desired parameters More...
 
template<class T >
void ignoreDesired ()
 set the grabber to ignore the desired param of type T More...
 
void ignoreDesired ()
 sets up the grabber to ignore all desired parameters More...
 
template<class T >
getDesired () const
 returns the desired value for the given type T More...
 
virtual void registerCallback (callback cb)
 registers a callback that is called each time, a new image is available More...
 
virtual void removeAllCallbacks ()
 removes all registered image callbacks More...
 
virtual void notifyNewImageAvailable (const core::ImgBase *image)
 this function can be implemented by subclasses in order to notify, that a new image is available More...
 
void enableUndistortion (const std::string &filename)
 enables the undistorion More...
 
void enableUndistortion (const ImageUndistortion &udist)
 enables the undistortion plugin for the grabber using radial and tangential distortion parameters More...
 
void enableUndistortion (const utils::ProgArg &pa)
 enables undistortion from given programm argument. More...
 
void enableUndistortion (const core::Img32f &warpMap)
 enables undistortion for given warp map More...
 
void setUndistortionInterpolationMode (core::scalemode mode)
 sets how undistortion is interpolated (supported modes are interpolateNN and interpolateLIN) More...
 
void disableUndistortion ()
 disables distortion More...
 
bool isUndistortionEnabled () const
 returns whether distortion is currently enabled More...
 
const core::Img32fgetUndistortionWarpMap () const
 returns the internal warp map or NULL if undistortion is not enabled More...
 
- Public Member Functions inherited from icl::utils::Configurable
virtual ~Configurable ()
 virtual destructor More...
 
 Configurable (const Configurable &other)
 Copy constructor. More...
 
Configurableoperator= (const Configurable &other)
 Assignment operator. More...
 
void setConfigurableID (const std::string &ID)
 sets the ID of this configurable More...
 
const std::string & getConfigurableID () const
 returns the configurables static ID More...
 
bool isOrderedFlagSet () const
 returns whether the ordered flag is set More...
 
void deactivateProperty (const std::string &pattern)
 adds an additional deativation pattern More...
 
void deleteDeactivationPattern (const std::string &pattern)
 removed a formerly added deactivation pattern More...
 
std::vector< std::string > getPropertyListWithoutDeactivated () const
 this returns a filtered list of properties (using all filters added by deactivateProperty) More...
 
virtual void adaptProperty (const std::string &name, const std::string &newType, const std::string &newInfo, const std::string &newToolTip)
 this function can be used to adapt a specific property afterwards More...
 
void registerCallback (const Callback &cb)
 add a callback for changed properties More...
 
void removedCallback (const Callback &cb)
 removes a callback that was registered before More...
 
void syncChangesTo (Configurable *others, int num=1)
 this can be used to let this instance also apply property changes to others More...
 
virtual void setPropertyValue (const std::string &propertyName, const Any &value)
 sets a property value More...
 
virtual std::vector< std::string > getPropertyList () const
 returns a list of All properties, that can be set using setProperty More...
 
virtual bool supportsProperty (const std::string &propertyName) const
 base implementation for property check (seaches in the property list) More...
 
virtual void saveProperties (const std::string &filename, const std::vector< std::string > &propertiesToSkip=EMPTY_VEC) const
 writes all available properties into a file More...
 
virtual void loadProperties (const std::string &filename, const std::vector< std::string > &propertiesToSkip=EMPTY_VEC)
 reads a camera config file from disc More...
 
virtual std::string getPropertyType (const std::string &propertyName) const
 get type of property More...
 
virtual std::string getPropertyInfo (const std::string &propertyName) const
 get information of a properties valid values More...
 
virtual Any getPropertyValue (const std::string &propertyName) const
 returns the current value of a property or a parameter More...
 
virtual std::string getPropertyToolTip (const std::string &propertyName) const
 returns the tooltip description for a given property More...
 
virtual int getPropertyVolatileness (const std::string &propertyName) const
 Returns whether this property may be changed internally. More...
 

Static Public Member Functions

static ICLIO_API std::vector< DCDevicegetDCDeviceList (bool resetBusFirst=false)
 Returns a list of all connected DCDevices. More...
 
static void dc1394_reset_bus (bool verbose=false)
 calls dc1394_reset_bus functions (see DCDevice) More...
 
- Static Public Member Functions inherited from icl::io::Grabber
static std::string translateSteppingRange (const utils::SteppingRange< double > &range)
 translates a SteppingRange into a string representation More...
 
static utils::SteppingRange< double > translateSteppingRange (const std::string &rangeStr)
 creates a SteppingRange out of a string representation More...
 
static std::string translateDoubleVec (const std::vector< double > &doubleVec)
 translates a vector of doubles into a string representation More...
 
static std::vector< double > translateDoubleVec (const std::string &doubleVecStr)
 creates a vector of doubles out of a string representation More...
 
static std::string translateStringVec (const std::vector< std::string > &stringVec)
 translates a vector of strings into a single string representation More...
 
static std::vector< std::string > translateStringVec (const std::string &stringVecStr)
 creates a vector of strins out of a single string representation More...
 
- Static Public Member Functions inherited from icl::utils::Configurable
static std::string create_default_ID (const std::string &prefix)
 this function can be used in subclasses to create a default ID More...
 
static Configurableget (const std::string &id)
 returns configurable by given ID More...
 
static void register_configurable_type (const std::string &classname, Function< Configurable * > creator)
 registers a configurable type More...
 
static std::vector< std::string > get_registered_configurables ()
 returns a list of all registered configurable classnames More...
 
static Configurablecreate_configurable (const std::string &classname)
 creates a configurable by given name More...
 

Private Member Functions

void restartGrabberThread ()
 internally used function to restart the DCGrabberThread More...
 
void addProperties ()
 adds DCGrabbers properties to Configurable. More...
 
void processPropertyChange (const utils::Configurable::Property &p)
 callback function for property changes. More...
 

Private Attributes

DCDevice m_oDev
 Wrapped DCDevice struct. More...
 
DCDeviceFeatures m_oDeviceFeatures
 Features corrsponding to m_oDev. More...
 
dc::DCGrabberThreadm_poGT
 Wrapped DCGrabberThread struct. More...
 
utils::Mutex m_GrabberThreadMutex
 Mutex for clean restarting of GrabberThread. More...
 
core::ImgBasem_poImage
 Internally used buffer images. More...
 
core::ImgBasem_poImageTmp
 
core::Converter m_oConverter
 Internally used image converter. More...
 
DCDeviceOptions m_oOptions
 Internal DCDeviceOptions struct. More...
 
std::string m_sUserDefinedBayerPattern
 only for unknown device types More...
 

Additional Inherited Members

- Public Types inherited from icl::io::Grabber
typedef utils::Function< void, const core::ImgBase * > callback
 new image callback type More...
 
- Public Types inherited from icl::utils::Configurable
typedef Function< void, const Property & > Callback
 Function type for changed properties. More...
 
- Static Public Attributes inherited from icl::utils::Configurable
static const std::vector< std::string > EMPTY_VEC
 used as shortcut – just an empty vector of std::strings More...
 
- Protected Member Functions inherited from icl::io::Grabber
virtual void setDesiredFormatInternal (core::format fmt)
 internally set a desired format More...
 
virtual void setDesiredSizeInternal (const utils::Size &size)
 internally set a desired format More...
 
virtual void setDesiredDepthInternal (core::depth d)
 internally set a desired format More...
 
virtual core::format getDesiredFormatInternal () const
 returns the desired format More...
 
virtual core::depth getDesiredDepthInternal () const
 returns the desired format More...
 
virtual utils::Size getDesiredSizeInternal () const
 returns the desired format More...
 
const core::ImgBaseadaptGrabResult (const core::ImgBase *src, core::ImgBase **dst)
 Utility function that allows for much easier implementation of grabUD. More...
 
- Protected Member Functions inherited from icl::utils::Uncopyable
 Uncopyable ()
 Empty base constructor. More...
 
- Protected Member Functions inherited from icl::utils::Configurable
void addProperty (const std::string &name, const std::string &type, const std::string &info, const Any &value=Any(), const int volatileness=0, const std::string &tooltip=std::string())
 This can be used by derived classes to store supported properties in the internal list. More...
 
void addChildConfigurable (Configurable *configurable, const std::string &childPrefix="")
 This adds another configurable as child. More...
 
void removeChildConfigurable (Configurable *configurable)
 removes the given child configurable More...
 
Propertyprop (const std::string &propertyName)
 this CAN be used e.g. to store a property value in internal property-list More...
 
const Propertyprop (const std::string &propertyName) const
 this CAN be used e.g. to store a property value in internal property-list More...
 
 Configurable (const std::string &ID="", bool ordered=true)
 create this configurable with given ID More...
 
void call_callbacks (const std::string &propertyName, const Configurable *caller) const
 calls all registered callbacks More...
 
- Protected Attributes inherited from icl::utils::Configurable
std::vector< Callbackcallbacks
 internally managed list of callbacks More...
 

Detailed Description

Grabber implementation for handling DC-Devices using libdc1394 (Version >= 2.0.rc9) .

The DCGrabber class implements the ICL's Grabber interface for providing libdc1395.so.2 based camera device access. Internally it wraps some additional classes with name prefix "DC".
The first time the "grab(..)"-function of the DCGrabber is invoked, it internally creates a so called DCGrabberThread. This thread then will create a so called DCFrameQueue internally. This queue is used to handle dma-image-frames, owned by the libdc which have been temporarily de-queued from the dma ring buffer queue into the user space. Here, the user has read-only access to these frames. The DCGrabberThread runs as fast as the current camera-settings allow and de-queues dma-frames from the system space into the user space DCFrameQueue and it en-queues old user space frames from this DCFrameQueue back into the dma ring buffer. At each time, the newest frame is available at the back of the DCFrameQueue whereas the oldest frame is located at the front of this queue. When the DCGrabbers grab-function is called, it will internally lock the current DCFrameQueue and convert the current frame into another buffer before the DCFrameQueue is unlocked again.
Internally the DCGrabber wraps an instance of type DCDeviceOptions, which is a container for all currently implemented options. The wrapped classes DCGrabberThread and DCFrameQueue get a pointer to this option-struct at construction time, so these objects are able to work with the options currently set inside the parent DCGrabber instance.
In addition, another class called DCDevice is used internally as a high-level wrapper for the libdc1394's camera struct. This DCDevice class provides some additional information to the low level information of the dc1394camera_t struct, e.g. some very camera-model specific information about the bayer-filter layout and so on. Note: New cameras, which should be supported must be included here!.
As in other Grabber implementations, a static function "getDeviceList()" can be used to detect currently supported cameras.

See also
DCDevice, DCDeviceOptions, DCGrabberThread, DCFrameQueue

Constructor & Destructor Documentation

◆ DCGrabber()

ICLIO_API icl::io::DCGrabber::DCGrabber ( const DCDevice dev = DCDevice::null,
int  isoMBits = 0 
)

Constructor creates a new DCGrabber instance from a given DCDevice.

Parameters
devDCDevice to use (this device can only be created by the static function getDeviceList()
isoMBitsgive the initializer a hint to set instantiated grabber to a specific iso mode by default allowed values are
  • 400 -> IEEE-1394-A (400MBit)
  • 800 -> IEEE-1394-B (800MBit)
  • 0 (default) value is not chaged!

(please note, that this parameter can also be set by the property iso-speed)

◆ ~DCGrabber()

ICLIO_API icl::io::DCGrabber::~DCGrabber ( )

Destructor.

Member Function Documentation

◆ acquireImage()

virtual ICLIO_API const core::ImgBase* icl::io::DCGrabber::acquireImage ( )
virtual

grab function grabs an image (destination image is adapted on demand)

grab function calls the Grabber-specific acquireImage-method and applies distortion if necessary If dst is not NULL, it is exploited and filled with image data

Reimplemented from icl::io::Grabber.

◆ addProperties()

void icl::io::DCGrabber::addProperties ( )
private

adds DCGrabbers properties to Configurable.

◆ dc1394_reset_bus()

static void icl::io::DCGrabber::dc1394_reset_bus ( bool  verbose = false)
inlinestatic

calls dc1394_reset_bus functions (see DCDevice)

◆ get_io_property_list()

virtual ICLIO_API std::vector<std::string> icl::io::DCGrabber::get_io_property_list ( )
virtual

filters out the size property, as it is set by the core::format property

◆ getDCDeviceList()

static ICLIO_API std::vector<DCDevice> icl::io::DCGrabber::getDCDeviceList ( bool  resetBusFirst = false)
static

Returns a list of all connected DCDevices.

◆ processPropertyChange()

void icl::io::DCGrabber::processPropertyChange ( const utils::Configurable::Property p)
private

callback function for property changes.

◆ restartGrabberThread()

void icl::io::DCGrabber::restartGrabberThread ( )
private

internally used function to restart the DCGrabberThread

useful if the grabber thread must have been deleted to update some internal properties

Member Data Documentation

◆ m_GrabberThreadMutex

utils::Mutex icl::io::DCGrabber::m_GrabberThreadMutex
private

Mutex for clean restarting of GrabberThread.

◆ m_oConverter

core::Converter icl::io::DCGrabber::m_oConverter
private

Internally used image converter.

This converter is used, if the wrapped DCGrabberThread was not able to satisfy all desired parameter claims.

◆ m_oDev

DCDevice icl::io::DCGrabber::m_oDev
private

Wrapped DCDevice struct.

◆ m_oDeviceFeatures

DCDeviceFeatures icl::io::DCGrabber::m_oDeviceFeatures
private

Features corrsponding to m_oDev.

◆ m_oOptions

DCDeviceOptions icl::io::DCGrabber::m_oOptions
private

Internal DCDeviceOptions struct.

◆ m_poGT

dc::DCGrabberThread* icl::io::DCGrabber::m_poGT
private

Wrapped DCGrabberThread struct.

◆ m_poImage

core::ImgBase* icl::io::DCGrabber::m_poImage
private

Internally used buffer images.

◆ m_poImageTmp

core::ImgBase * icl::io::DCGrabber::m_poImageTmp
private

◆ m_sUserDefinedBayerPattern

std::string icl::io::DCGrabber::m_sUserDefinedBayerPattern
private

only for unknown device types


The documentation for this class was generated from the following file: