Fawkes API  Fawkes Development Version
firevision::V4L2Camera Class Reference

Video4Linux 2 camera access implementation. More...

#include <>>

Inheritance diagram for firevision::V4L2Camera:

List of all members.

Classes

struct  ControlParameterInt
struct  FrameBuffer

Public Member Functions

 V4L2Camera (const char *device_name="/dev/video0")
 Constructor.
 V4L2Camera (const CameraArgumentParser *cap)
 Constructor.
virtual ~V4L2Camera ()
 Destructor.
virtual void open ()
 Open the camera.
virtual void start ()
 Start image transfer from the camera.
virtual void stop ()
 Stop image transfer from the camera.
virtual void close ()
 Close camera.
virtual void flush ()
 Flush image queue.
virtual void capture ()
 Capture an image.
virtual void print_info ()
 Print out camera information.
virtual bool ready ()
 Camera is ready for taking pictures.
virtual unsigned char * buffer ()
 Get access to current image buffer.
virtual unsigned int buffer_size ()
 Size of buffer.
virtual void dispose_buffer ()
 Dispose current buffer.
virtual unsigned int pixel_width ()
 Width of image in pixels.
virtual unsigned int pixel_height ()
 Height of image in pixels.
virtual colorspace_t colorspace ()
 Colorspace of returned image.
virtual fawkes::Timecapture_time ()
 Get the Time of the last successfully captured image.
virtual void set_image_number (unsigned int n)
 Set image number to retrieve.
virtual bool auto_gain ()
 Return whether auto gain is enabled.
virtual void set_auto_gain (bool enabled)
 Enable/disable auto gain.
virtual bool auto_white_balance ()
 Return whether auto white balance is enabled.
virtual void set_auto_white_balance (bool enabled)
 Enable/disable auto white balance.
virtual bool auto_exposure ()
 Return whether auto exposure is enabled.
virtual void set_auto_exposure (bool enabled)
 Enable/disable auto exposure.
virtual int red_balance ()
 Get current red balance.
virtual void set_red_balance (int red_balance)
 Set red balance.
virtual int blue_balance ()
 Get current blue balance.
virtual void set_blue_balance (int blue_balance)
 Set blue balance.
virtual int u_balance ()
 Get current u balance.
virtual void set_u_balance (int u_balance)
 Set u balance.
virtual int v_balance ()
 Get current v balance.
virtual void set_v_balance (int v_balance)
 Set v balance.
virtual unsigned int brightness ()
 Get current brightness.
virtual void set_brightness (unsigned int brightness)
 Set new brightness.
virtual unsigned int contrast ()
 Get current contrast.
virtual void set_contrast (unsigned int contrast)
 Set new contrast.
virtual unsigned int saturation ()
 Get current saturation.
virtual void set_saturation (unsigned int saturation)
 Set new saturation.
virtual int hue ()
 Get current hue.
virtual void set_hue (int hue)
 Set new hue.
virtual unsigned int exposure ()
 Get current exposure.
virtual void set_exposure (unsigned int exposure)
 Set new exposure.
virtual unsigned int gain ()
 Get current gain.
virtual void set_gain (unsigned int gain)
 Set new gain.
virtual const char * format ()
 Get the image format the camera currently uses.
virtual void set_format (const char *format)
 Set the image format the camera should use.
virtual unsigned int width ()
 Get the current width of the image.
virtual unsigned int height ()
 Get the current height of the image.
virtual void set_size (unsigned int width, unsigned int height)
 Set the image size the camera should use.
virtual bool horiz_mirror ()
 Return whether the camera image is horizontally mirrored.
virtual bool vert_mirror ()
 Return whether the camera image is vertically mirrored.
virtual void set_horiz_mirror (bool enabled)
 Set whether the camera should mirror images horizontally.
virtual void set_vert_mirror (bool enabled)
 Set whether the camera should mirror images vertically.
virtual unsigned int fps ()
 Get the number of frames per second that have been requested from the camera.
virtual void set_fps (unsigned int fps)
 Set the number of frames per second the camera tries to deliver.
virtual unsigned int lens_x_corr ()
 Get current lens x correction.
virtual unsigned int lens_y_corr ()
 Get current lens y correction.
virtual void set_lens_x_corr (unsigned int x_corr)
 Set lens x correction.
virtual void set_lens_y_corr (unsigned int y_corr)
 Set lens y correction.

Protected Member Functions

 V4L2Camera (const char *device_name, int dev)
 Protected Constructor.
virtual void set_one_control (const char *ctrl, unsigned int id, int value)
 Set one Camera control value.
virtual int get_one_control (const char *ctrl, unsigned int id)
 Get one Camera control value.

Protected Attributes

char * _device_name
 Device name.

Friends

class V4LCamera

Detailed Description

Video4Linux 2 camera access implementation.

Todo:

UPTR method

Standards queries (VIDIOC_ENUMSTD)

v4l2_pix_format.field

Author:
Tobias Kellner

Constructor & Destructor Documentation

firevision::V4L2Camera::V4L2Camera ( const char *  device_name = "/dev/video0")

Constructor.

Parameters:
device_namedevice file name (e.g. /dev/video0)

Definition at line 89 of file v4l2.cpp.

firevision::V4L2Camera::V4L2Camera ( const CameraArgumentParser cap)

Constructor.

Initialize camera with parameters from camera argument parser. Supported arguments: *Required:

  • device=DEV, device file, for example /dev/video0 (required) *Optional:
  • read_method=METHOD, preferred read method READ: read() MMAP: memory mapping UPTR: user pointer
  • format=FOURCC, preferred format
  • size=WIDTHxHEIGHT, preferred image size
  • switch_u_v=true/false, switch U and V channels
  • fps=FPS, frames per second
  • aec=true/false, Auto Exposition enabled [warning: only valid on nao]
  • awb=true/false, Auto White Balance enabled
  • agc=true/false, Auto Gain enabled
  • h_flip=true/false, Horizontal mirror
  • v_flip=true/false, Vertical mirror
  • brightness=BRIGHT, Brightness [0-255] (def. 128)
  • contrast=CONTR, Contrast [0-127] (def. 64)
  • saturation=SAT, Saturation [0-256] (def. 128)
  • hue=HUE, Hue [-180-180] (def. 0)
  • red_balance=RB, Red Balance [0-255] (def. 128)
  • blue_balance=BB, Blue Balance [0-255] (def. 128)
  • exposure=EXP, Exposure [0-65535] (def. 60)
  • gain=GAIN, Gain [0-255] (def. 0)
  • lens_x=CORR, Lens Correction X [0-255] (def. 0)
  • lens_y=CORR, Lens Correction Y [0-255] (def. 0)
    Parameters:
    capcamera argument parser

Definition at line 139 of file v4l2.cpp.

References firevision::CameraArgumentParser::has(), and firevision::CameraArgumentParser::get().

firevision::V4L2Camera::~V4L2Camera ( ) [virtual]

Destructor.

Definition at line 421 of file v4l2.cpp.

firevision::V4L2Camera::V4L2Camera ( const char *  device_name,
int  dev 
) [protected]

Protected Constructor.

Gets called from V4LCamera, when the device has already been opened and determined to be a V4L2 device.

Parameters:
device_namedevice file name (e.g. /dev/video0)
devfile descriptor of the opened device

Definition at line 390 of file v4l2.cpp.


Member Function Documentation

bool firevision::V4L2Camera::auto_exposure ( ) [virtual]

Return whether auto exposure is enabled.

Returns:
true if auto exposure is enabled

Implements firevision::CameraControlColor.

Reimplemented in firevision::NaoCamera.

Definition at line 1331 of file v4l2.cpp.

bool firevision::V4L2Camera::auto_gain ( ) [virtual]

Return whether auto gain is enabled.

Returns:
true if auto gain is enabled

Implements firevision::CameraControlColor.

Definition at line 1305 of file v4l2.cpp.

bool firevision::V4L2Camera::auto_white_balance ( ) [virtual]

Return whether auto white balance is enabled.

Returns:
true if auto white balance is enabled

Implements firevision::CameraControlColor.

Definition at line 1318 of file v4l2.cpp.

int firevision::V4L2Camera::blue_balance ( ) [virtual]

Get current blue balance.

Returns:
current blue balance value

Implements firevision::CameraControlColor.

Definition at line 1356 of file v4l2.cpp.

unsigned int firevision::V4L2Camera::brightness ( ) [virtual]

Get current brightness.

Returns:
current brightness value

Implements firevision::CameraControlColor.

Definition at line 1393 of file v4l2.cpp.

unsigned char * firevision::V4L2Camera::buffer ( ) [virtual]

Get access to current image buffer.

This will return a pointer to the current buffer. The buffer contains an image of the given colorspace, width and height.

Returns:
pointer to image buffer

Implements firevision::Camera.

Definition at line 1206 of file v4l2.cpp.

unsigned int firevision::V4L2Camera::buffer_size ( ) [virtual]

Size of buffer.

Gets the size in bytes of the buffer returned by buffer().

Returns:
size of buffer in bytes

Implements firevision::Camera.

Definition at line 1214 of file v4l2.cpp.

void firevision::V4L2Camera::capture ( ) [virtual]

Capture an image.

Although cameras shall operate with a continuous image flow where possible sometimes capturing an image means copying a buffer or advancing a buffer list pointer. This shall be done in this method. For a camera-using application it is mandatory to call capture() just before accessing the image buffer.

Implements firevision::Camera.

Definition at line 1139 of file v4l2.cpp.

fawkes::Time * firevision::V4L2Camera::capture_time ( ) [virtual]

Get the Time of the last successfully captured image.

Returns a Time representing the time when the last image was captured successfully. Note that calling this function is only valid after capture() and before dispose_buffer() has been called -- it is only valid when an image is currently available.

Returns:
Time of the currently processed image. The pointer shall be valid at least until the next call to dispose_buffer().
Exceptions:
NotImplementedExceptionthrown if Camera does not support time stamping

Reimplemented from firevision::Camera.

Definition at line 1288 of file v4l2.cpp.

void firevision::V4L2Camera::close ( ) [virtual]

Close camera.

This closes the camera device. The camera must have been stopped before calling close().

Implements firevision::Camera.

Definition at line 992 of file v4l2.cpp.

colorspace_t firevision::V4L2Camera::colorspace ( ) [virtual]

Colorspace of returned image.

Returns:
colorspace of image returned by buffer()

Implements firevision::Camera.

Definition at line 1277 of file v4l2.cpp.

unsigned int firevision::V4L2Camera::contrast ( ) [virtual]

Get current contrast.

Returns:
current contrast value

Implements firevision::CameraControlColor.

Definition at line 1406 of file v4l2.cpp.

void firevision::V4L2Camera::dispose_buffer ( ) [virtual]

Dispose current buffer.

Some cameras need disposal of the current buffer (for example to free space in a queue to retrieve the next image). This is done with this method. It has to be called after all work has been done on the image as desired. After dispose_buffer() has been called no further access may happen to the image buffer or undesired behavior may happen.

Implements firevision::Camera.

Definition at line 1222 of file v4l2.cpp.

unsigned int firevision::V4L2Camera::exposure ( ) [virtual]

Get current exposure.

Returns:
current exposure value

Implements firevision::CameraControlColor.

Definition at line 1445 of file v4l2.cpp.

void firevision::V4L2Camera::flush ( ) [virtual]

Flush image queue.

Some cameras may have an image buffer queue. With this it can happen that if the processing of an image took longer than desired it is needed to flush this buffer queue.

Implements firevision::Camera.

Definition at line 1132 of file v4l2.cpp.

const char * firevision::V4L2Camera::format ( ) [virtual]

Get the image format the camera currently uses.

Check implementation documentation for details on the format.

Returns:
a string describing the image format
Exceptions:
NotImplementedExceptionNot implemented by this control

Reimplemented from firevision::CameraControlImage.

Definition at line 1472 of file v4l2.cpp.

unsigned int firevision::V4L2Camera::fps ( ) [virtual]

Get the number of frames per second that have been requested from the camera.

A return value of 0 means that fps haven't been set yet through the camera.

Returns:
the currently requested fps or 0 if not set yet

Reimplemented from firevision::CameraControlImage.

Definition at line 1537 of file v4l2.cpp.

unsigned int firevision::V4L2Camera::gain ( ) [virtual]

Get current gain.

Returns:
current gain value

Implements firevision::CameraControlColor.

Definition at line 1458 of file v4l2.cpp.

int firevision::V4L2Camera::get_one_control ( const char *  ctrl,
unsigned int  id 
) [protected, virtual]

Get one Camera control value.

Parameters:
ctrlname of the value
idID of the value
Returns:
current value

Definition at line 860 of file v4l2.cpp.

Referenced by firevision::NaoCamera::auto_exposure().

unsigned int firevision::V4L2Camera::height ( ) [virtual]

Get the current height of the image.

Returns:
height in pixels

Implements firevision::CameraControlImage.

Definition at line 1492 of file v4l2.cpp.

bool firevision::V4L2Camera::horiz_mirror ( ) [virtual]

Return whether the camera image is horizontally mirrored.

Returns:
true if the image is horizontally mirrored
Exceptions:
NotImplementedExceptionNot implemented by this control

Reimplemented from firevision::CameraControlImage.

Definition at line 1507 of file v4l2.cpp.

int firevision::V4L2Camera::hue ( ) [virtual]

Get current hue.

Returns:
current hue value

Implements firevision::CameraControlColor.

Definition at line 1432 of file v4l2.cpp.

unsigned int firevision::V4L2Camera::lens_x_corr ( ) [virtual]

Get current lens x correction.

Returns:
current lens x correction
Exceptions:
NotImplementedExceptionNot implemented by this control

Reimplemented from firevision::CameraControlImage.

Definition at line 1550 of file v4l2.cpp.

unsigned int firevision::V4L2Camera::lens_y_corr ( ) [virtual]

Get current lens y correction.

Returns:
current lens y correction
Exceptions:
NotImplementedExceptionNot implemented by this control

Reimplemented from firevision::CameraControlImage.

Definition at line 1556 of file v4l2.cpp.

void firevision::V4L2Camera::open ( ) [virtual]

Open the camera.

The camera is opened, but image transfer not yet started. This can be used to detect general problems with the camera while delaying the real transfer startup until it is needed.

Implements firevision::Camera.

Definition at line 431 of file v4l2.cpp.

unsigned int firevision::V4L2Camera::pixel_height ( ) [virtual]

Height of image in pixels.

Returns:
height of image in pixels

Implements firevision::Camera.

Definition at line 1269 of file v4l2.cpp.

unsigned int firevision::V4L2Camera::pixel_width ( ) [virtual]

Width of image in pixels.

Returns:
width of image in pixels

Implements firevision::Camera.

Definition at line 1261 of file v4l2.cpp.

void firevision::V4L2Camera::print_info ( ) [virtual]

Print out camera information.

Shall print out camera information and current setup information on stdout.

Implements firevision::Camera.

Definition at line 1577 of file v4l2.cpp.

bool firevision::V4L2Camera::ready ( ) [virtual]

Camera is ready for taking pictures.

The camera has been opened and started correctly and may now provide images.

Returns:
true, if the camera is ready, false otherwise

Implements firevision::Camera.

Definition at line 1124 of file v4l2.cpp.

int firevision::V4L2Camera::red_balance ( ) [virtual]

Get current red balance.

Returns:
current red balance value

Implements firevision::CameraControlColor.

Definition at line 1343 of file v4l2.cpp.

unsigned int firevision::V4L2Camera::saturation ( ) [virtual]

Get current saturation.

Returns:
current saturation value

Implements firevision::CameraControlColor.

Definition at line 1419 of file v4l2.cpp.

void firevision::V4L2Camera::set_auto_exposure ( bool  enabled) [virtual]

Enable/disable auto exposure.

Parameters:
enabledwhether auto exposure should be enabled

Implements firevision::CameraControlColor.

Reimplemented in firevision::NaoCamera.

Definition at line 1337 of file v4l2.cpp.

void firevision::V4L2Camera::set_auto_gain ( bool  enabled) [virtual]

Enable/disable auto gain.

Parameters:
enabledwhether auto gain should be enabled

Implements firevision::CameraControlColor.

Definition at line 1311 of file v4l2.cpp.

void firevision::V4L2Camera::set_auto_white_balance ( bool  enabled) [virtual]

Enable/disable auto white balance.

Parameters:
enabledwhether auto white balance should be enabled

Implements firevision::CameraControlColor.

Definition at line 1324 of file v4l2.cpp.

void firevision::V4L2Camera::set_blue_balance ( int  blue_balance) [virtual]

Set blue balance.

Parameters:
blue_balancenew blue balance

Implements firevision::CameraControlColor.

Definition at line 1362 of file v4l2.cpp.

void firevision::V4L2Camera::set_brightness ( unsigned int  brightness) [virtual]

Set new brightness.

Parameters:
brightnessnew brightness

Implements firevision::CameraControlColor.

Definition at line 1399 of file v4l2.cpp.

void firevision::V4L2Camera::set_contrast ( unsigned int  contrast) [virtual]

Set new contrast.

Parameters:
contrastnew contrast

Implements firevision::CameraControlColor.

Definition at line 1412 of file v4l2.cpp.

void firevision::V4L2Camera::set_exposure ( unsigned int  exposure) [virtual]

Set new exposure.

Parameters:
exposurenew exposure

Implements firevision::CameraControlColor.

Definition at line 1451 of file v4l2.cpp.

void firevision::V4L2Camera::set_format ( const char *  format) [virtual]

Set the image format the camera should use.

Check implementation documentation for details on the format.

Parameters:
formatthe new image format
Exceptions:
NotImplementedExceptionNot implemented by this control

Reimplemented from firevision::CameraControlImage.

Definition at line 1478 of file v4l2.cpp.

void firevision::V4L2Camera::set_fps ( unsigned int  fps) [virtual]

Set the number of frames per second the camera tries to deliver.

Parameters:
fpsthe new fps
Exceptions:
NotImplementedExceptionNot implemented by this control

Reimplemented from firevision::CameraControlImage.

Definition at line 1543 of file v4l2.cpp.

void firevision::V4L2Camera::set_gain ( unsigned int  gain) [virtual]

Set new gain.

Parameters:
gainnew gain

Implements firevision::CameraControlColor.

Definition at line 1464 of file v4l2.cpp.

void firevision::V4L2Camera::set_horiz_mirror ( bool  enabled) [virtual]

Set whether the camera should mirror images horizontally.

Parameters:
enabledif true, images should be mirrored horizontally
Exceptions:
NotImplementedExceptionNot implemented by this control

Reimplemented from firevision::CameraControlImage.

Definition at line 1519 of file v4l2.cpp.

void firevision::V4L2Camera::set_hue ( int  hue) [virtual]

Set new hue.

Parameters:
huenew hue

Implements firevision::CameraControlColor.

Definition at line 1438 of file v4l2.cpp.

void firevision::V4L2Camera::set_image_number ( unsigned int  n) [virtual]

Set image number to retrieve.

If a camera is able to retrieve several images this method can be used to select the image to be retrieved with the next call to capture().

Parameters:
nimage number to set

Implements firevision::Camera.

Definition at line 1294 of file v4l2.cpp.

void firevision::V4L2Camera::set_lens_x_corr ( unsigned int  x_corr) [virtual]

Set lens x correction.

Parameters:
x_corrnew lens x correction
Exceptions:
NotImplementedExceptionNot implemented by this control

Reimplemented from firevision::CameraControlImage.

Definition at line 1562 of file v4l2.cpp.

void firevision::V4L2Camera::set_lens_y_corr ( unsigned int  y_corr) [virtual]

Set lens y correction.

Parameters:
y_corrnew lens y correction
Exceptions:
NotImplementedExceptionNot implemented by this control

Reimplemented from firevision::CameraControlImage.

Definition at line 1569 of file v4l2.cpp.

void firevision::V4L2Camera::set_one_control ( const char *  ctrl,
unsigned int  id,
int  value 
) [protected, virtual]

Set one Camera control value.

Parameters:
ctrlname of the value
idID of the value
valuevalue to set

Definition at line 817 of file v4l2.cpp.

Referenced by firevision::NaoCamera::set_auto_exposure().

void firevision::V4L2Camera::set_red_balance ( int  red_balance) [virtual]

Set red balance.

Parameters:
red_balancenew red balance

Implements firevision::CameraControlColor.

Definition at line 1349 of file v4l2.cpp.

void firevision::V4L2Camera::set_saturation ( unsigned int  saturation) [virtual]

Set new saturation.

Parameters:
saturationnew saturation

Implements firevision::CameraControlColor.

Definition at line 1425 of file v4l2.cpp.

void firevision::V4L2Camera::set_size ( unsigned int  width,
unsigned int  height 
) [virtual]

Set the image size the camera should use.

Parameters:
widthnew width of the image
heightnew height of the image
Exceptions:
Exceptionthrown for instance if size setting at run-time is not supported

Implements firevision::CameraControlImage.

Definition at line 1498 of file v4l2.cpp.

void firevision::V4L2Camera::set_u_balance ( int  u_balance) [virtual]

Set u balance.

Parameters:
u_balancenew u balance

Implements firevision::CameraControlColor.

Definition at line 1375 of file v4l2.cpp.

void firevision::V4L2Camera::set_v_balance ( int  v_balance) [virtual]

Set v balance.

Parameters:
v_balancenew v balance

Implements firevision::CameraControlColor.

Definition at line 1387 of file v4l2.cpp.

void firevision::V4L2Camera::set_vert_mirror ( bool  enabled) [virtual]

Set whether the camera should mirror images vertically.

Parameters:
enabledif true, images should be mirrored vertically
Exceptions:
NotImplementedExceptionNot implemented by this control

Reimplemented from firevision::CameraControlImage.

Definition at line 1526 of file v4l2.cpp.

void firevision::V4L2Camera::start ( ) [virtual]

Start image transfer from the camera.

For many cameras opening the camera and starting transmission of images are two tasks. This method will simply initiate the transfer after the camera as been opened. And exception shall be thrown if the camera has not been opened.

Implements firevision::Camera.

Definition at line 1041 of file v4l2.cpp.

void firevision::V4L2Camera::stop ( ) [virtual]

Stop image transfer from the camera.

This will stop the image transfer initiated with start(). This can be used to start and stop the image transfer at will without opening and closing operations inbetween.

Implements firevision::Camera.

Definition at line 1093 of file v4l2.cpp.

int firevision::V4L2Camera::u_balance ( ) [virtual]

Get current u balance.

Returns:
current u balance value

Implements firevision::CameraControlColor.

Definition at line 1369 of file v4l2.cpp.

int firevision::V4L2Camera::v_balance ( ) [virtual]

Get current v balance.

Returns:
current v balance value

Implements firevision::CameraControlColor.

Definition at line 1381 of file v4l2.cpp.

bool firevision::V4L2Camera::vert_mirror ( ) [virtual]

Return whether the camera image is vertically mirrored.

Returns:
true if the image is vertically mirrored
Exceptions:
NotImplementedExceptionNot implemented by this control

Reimplemented from firevision::CameraControlImage.

Definition at line 1513 of file v4l2.cpp.

unsigned int firevision::V4L2Camera::width ( ) [virtual]

Get the current width of the image.

Returns:
width in pixels

Implements firevision::CameraControlImage.

Definition at line 1486 of file v4l2.cpp.


Member Data Documentation

Device name.

Definition at line 138 of file v4l2.h.

Referenced by firevision::NaoCamera::NaoCamera(), and firevision::NaoCamera::set_source().


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