#include <cams/v4l2.h>
Inheritance diagram for firevision::V4L2Camera:
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::Time * | capture_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 |
Classes | |
struct | ControlParameterInt |
struct | FrameBuffer |
Standards queries (VIDIOC_ENUMSTD)
v4l2_pix_format.field
Definition at line 46 of file v4l2.h.
firevision::V4L2Camera::V4L2Camera | ( | const char * | device_name = "/dev/video0" |
) |
Constructor.
device_name | device file name (e.g. /dev/video0) |
Definition at line 89 of file v4l2.cpp.
References _device_name.
firevision::V4L2Camera::V4L2Camera | ( | const CameraArgumentParser * | cap | ) |
Constructor.
Initialize camera with parameters from camera argument parser. Supported arguments: *Required:
cap | camera argument parser |
Definition at line 139 of file v4l2.cpp.
References _device_name, firevision::CameraArgumentParser::get(), firevision::CameraArgumentParser::has(), and firevision::CameraControlImage::size().
firevision::V4L2Camera::~V4L2Camera | ( | ) | [virtual] |
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.
device_name | device file name (e.g. /dev/video0) | |
dev | file descriptor of the opened device |
Definition at line 390 of file v4l2.cpp.
References _device_name, and close().
bool firevision::V4L2Camera::auto_exposure | ( | ) | [virtual] |
Return whether auto exposure is enabled.
Implements firevision::CameraControlColor.
Reimplemented in firevision::NaoCamera.
bool firevision::V4L2Camera::auto_gain | ( | ) | [virtual] |
Return whether auto gain is enabled.
Implements firevision::CameraControlColor.
Definition at line 1305 of file v4l2.cpp.
References get_one_control().
bool firevision::V4L2Camera::auto_white_balance | ( | ) | [virtual] |
Return whether auto white balance is enabled.
Implements firevision::CameraControlColor.
Definition at line 1318 of file v4l2.cpp.
References get_one_control().
int firevision::V4L2Camera::blue_balance | ( | ) | [virtual] |
Get current blue balance.
Implements firevision::CameraControlColor.
Definition at line 1356 of file v4l2.cpp.
References get_one_control().
unsigned int firevision::V4L2Camera::brightness | ( | ) | [virtual] |
Get current brightness.
Implements firevision::CameraControlColor.
Definition at line 1393 of file v4l2.cpp.
References get_one_control().
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.
Implements firevision::Camera.
Definition at line 1206 of file v4l2.cpp.
Referenced by capture(), close(), dispose_buffer(), and start().
unsigned int firevision::V4L2Camera::buffer_size | ( | ) | [virtual] |
Size of buffer.
Gets the size in bytes of the buffer returned by buffer().
Implements firevision::Camera.
Definition at line 1214 of file v4l2.cpp.
References firevision::CameraControlImage::size().
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.
References buffer(), close(), fawkes::Time::set_time(), firevision::CameraControlImage::size(), and fawkes::Time::stamp().
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.
NotImplementedException | thrown if Camera does not support time stamping |
Reimplemented from firevision::Camera.
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.
References buffer(), firevision::CameraControlImage::size(), and stop().
Referenced by capture(), dispose_buffer(), get_one_control(), open(), set_one_control(), start(), stop(), V4L2Camera(), and ~V4L2Camera().
colorspace_t firevision::V4L2Camera::colorspace | ( | ) | [virtual] |
Colorspace of returned image.
Implements firevision::Camera.
Definition at line 1277 of file v4l2.cpp.
References firevision::CS_UNKNOWN.
unsigned int firevision::V4L2Camera::contrast | ( | ) | [virtual] |
Get current contrast.
Implements firevision::CameraControlColor.
Definition at line 1406 of file v4l2.cpp.
References get_one_control().
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.
unsigned int firevision::V4L2Camera::exposure | ( | ) | [virtual] |
Get current exposure.
Implements firevision::CameraControlColor.
Definition at line 1445 of file v4l2.cpp.
References get_one_control().
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.
const char * firevision::V4L2Camera::format | ( | ) | [virtual] |
Get the image format the camera currently uses.
Check implementation documentation for details on the format.
NotImplementedException | Not implemented by this control |
Reimplemented from firevision::CameraControlImage.
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.
Reimplemented from firevision::CameraControlImage.
unsigned int firevision::V4L2Camera::gain | ( | ) | [virtual] |
Get current gain.
Implements firevision::CameraControlColor.
Definition at line 1458 of file v4l2.cpp.
References get_one_control().
int firevision::V4L2Camera::get_one_control | ( | const char * | ctrl, | |
unsigned int | id | |||
) | [protected, virtual] |
Get one Camera control value.
ctrl | name of the value | |
id | ID of the value |
Definition at line 860 of file v4l2.cpp.
References close().
Referenced by firevision::NaoCamera::auto_exposure(), auto_gain(), auto_white_balance(), blue_balance(), brightness(), contrast(), exposure(), gain(), horiz_mirror(), hue(), lens_x_corr(), lens_y_corr(), red_balance(), saturation(), and vert_mirror().
unsigned int firevision::V4L2Camera::height | ( | ) | [virtual] |
Get the current height of the image.
Implements firevision::CameraControlImage.
Definition at line 1492 of file v4l2.cpp.
References pixel_height().
bool firevision::V4L2Camera::horiz_mirror | ( | ) | [virtual] |
Return whether the camera image is horizontally mirrored.
NotImplementedException | Not implemented by this control |
Reimplemented from firevision::CameraControlImage.
Definition at line 1507 of file v4l2.cpp.
References get_one_control().
int firevision::V4L2Camera::hue | ( | ) | [virtual] |
Get current hue.
Implements firevision::CameraControlColor.
Definition at line 1432 of file v4l2.cpp.
References get_one_control().
unsigned int firevision::V4L2Camera::lens_x_corr | ( | ) | [virtual] |
Get current lens x correction.
NotImplementedException | Not implemented by this control |
Reimplemented from firevision::CameraControlImage.
Definition at line 1550 of file v4l2.cpp.
References get_one_control().
unsigned int firevision::V4L2Camera::lens_y_corr | ( | ) | [virtual] |
Get current lens y correction.
NotImplementedException | Not implemented by this control |
Reimplemented from firevision::CameraControlImage.
Definition at line 1556 of file v4l2.cpp.
References get_one_control().
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.
References _device_name, close(), and stop().
unsigned int firevision::V4L2Camera::pixel_height | ( | ) | [virtual] |
Height of image in pixels.
Implements firevision::Camera.
Definition at line 1269 of file v4l2.cpp.
Referenced by height().
unsigned int firevision::V4L2Camera::pixel_width | ( | ) | [virtual] |
Width of image in pixels.
Implements firevision::Camera.
Definition at line 1261 of file v4l2.cpp.
Referenced by width().
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.
References _device_name.
bool firevision::V4L2Camera::ready | ( | ) | [virtual] |
Camera is ready for taking pictures.
The camera has been opened and started correctly and may now provide images.
Implements firevision::Camera.
int firevision::V4L2Camera::red_balance | ( | ) | [virtual] |
Get current red balance.
Implements firevision::CameraControlColor.
Definition at line 1343 of file v4l2.cpp.
References get_one_control().
unsigned int firevision::V4L2Camera::saturation | ( | ) | [virtual] |
Get current saturation.
Implements firevision::CameraControlColor.
Definition at line 1419 of file v4l2.cpp.
References get_one_control().
void firevision::V4L2Camera::set_auto_exposure | ( | bool | enabled | ) | [virtual] |
Enable/disable auto exposure.
enabled | whether auto exposure should be enabled |
Implements firevision::CameraControlColor.
Reimplemented in firevision::NaoCamera.
void firevision::V4L2Camera::set_auto_gain | ( | bool | enabled | ) | [virtual] |
Enable/disable auto gain.
enabled | whether auto gain should be enabled |
Implements firevision::CameraControlColor.
Definition at line 1311 of file v4l2.cpp.
References set_one_control().
void firevision::V4L2Camera::set_auto_white_balance | ( | bool | enabled | ) | [virtual] |
Enable/disable auto white balance.
enabled | whether auto white balance should be enabled |
Implements firevision::CameraControlColor.
Definition at line 1324 of file v4l2.cpp.
References set_one_control().
void firevision::V4L2Camera::set_blue_balance | ( | int | blue_balance | ) | [virtual] |
Set blue balance.
blue_balance | new blue balance |
Implements firevision::CameraControlColor.
Definition at line 1362 of file v4l2.cpp.
References set_one_control().
void firevision::V4L2Camera::set_brightness | ( | unsigned int | brightness | ) | [virtual] |
Set new brightness.
brightness | new brightness |
Implements firevision::CameraControlColor.
Definition at line 1399 of file v4l2.cpp.
References set_one_control().
void firevision::V4L2Camera::set_contrast | ( | unsigned int | contrast | ) | [virtual] |
Set new contrast.
contrast | new contrast |
Implements firevision::CameraControlColor.
Definition at line 1412 of file v4l2.cpp.
References set_one_control().
void firevision::V4L2Camera::set_exposure | ( | unsigned int | exposure | ) | [virtual] |
Set new exposure.
exposure | new exposure |
Implements firevision::CameraControlColor.
Definition at line 1451 of file v4l2.cpp.
References set_one_control().
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.
format | the new image format |
NotImplementedException | Not implemented by this control |
Reimplemented from firevision::CameraControlImage.
void firevision::V4L2Camera::set_fps | ( | unsigned int | fps | ) | [virtual] |
Set the number of frames per second the camera tries to deliver.
fps | the new fps |
NotImplementedException | Not implemented by this control |
Reimplemented from firevision::CameraControlImage.
Definition at line 1543 of file v4l2.cpp.
References set_fps().
Referenced by set_fps().
void firevision::V4L2Camera::set_gain | ( | unsigned int | gain | ) | [virtual] |
Set new gain.
gain | new gain |
Implements firevision::CameraControlColor.
Definition at line 1464 of file v4l2.cpp.
References set_one_control().
void firevision::V4L2Camera::set_horiz_mirror | ( | bool | enabled | ) | [virtual] |
Set whether the camera should mirror images horizontally.
enabled | if true, images should be mirrored horizontally |
NotImplementedException | Not implemented by this control |
Reimplemented from firevision::CameraControlImage.
Definition at line 1519 of file v4l2.cpp.
References set_one_control().
void firevision::V4L2Camera::set_hue | ( | int | hue | ) | [virtual] |
Set new hue.
hue | new hue |
Implements firevision::CameraControlColor.
Definition at line 1438 of file v4l2.cpp.
References set_one_control().
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().
n | image number to set |
Implements firevision::Camera.
void firevision::V4L2Camera::set_lens_x_corr | ( | unsigned int | x_corr | ) | [virtual] |
Set lens x correction.
x_corr | new lens x correction |
NotImplementedException | Not implemented by this control |
Reimplemented from firevision::CameraControlImage.
Definition at line 1562 of file v4l2.cpp.
References set_one_control().
void firevision::V4L2Camera::set_lens_y_corr | ( | unsigned int | y_corr | ) | [virtual] |
Set lens y correction.
y_corr | new lens y correction |
NotImplementedException | Not implemented by this control |
Reimplemented from firevision::CameraControlImage.
Definition at line 1569 of file v4l2.cpp.
References set_one_control().
void firevision::V4L2Camera::set_one_control | ( | const char * | ctrl, | |
unsigned int | id, | |||
int | value | |||
) | [protected, virtual] |
Set one Camera control value.
ctrl | name of the value | |
id | ID of the value | |
value | value to set |
Definition at line 817 of file v4l2.cpp.
References close().
Referenced by firevision::NaoCamera::set_auto_exposure(), set_auto_gain(), set_auto_white_balance(), set_blue_balance(), set_brightness(), set_contrast(), set_exposure(), set_gain(), set_horiz_mirror(), set_hue(), set_lens_x_corr(), set_lens_y_corr(), set_red_balance(), set_saturation(), and set_vert_mirror().
void firevision::V4L2Camera::set_red_balance | ( | int | red_balance | ) | [virtual] |
Set red balance.
red_balance | new red balance |
Implements firevision::CameraControlColor.
Definition at line 1349 of file v4l2.cpp.
References set_one_control().
void firevision::V4L2Camera::set_saturation | ( | unsigned int | saturation | ) | [virtual] |
Set new saturation.
saturation | new saturation |
Implements firevision::CameraControlColor.
Definition at line 1425 of file v4l2.cpp.
References set_one_control().
void firevision::V4L2Camera::set_size | ( | unsigned int | width, | |
unsigned int | height | |||
) | [virtual] |
Set the image size the camera should use.
width | new width of the image | |
height | new height of the image |
Exception | thrown for instance if size setting at run-time is not supported |
Implements firevision::CameraControlImage.
void firevision::V4L2Camera::set_u_balance | ( | int | u_balance | ) | [virtual] |
void firevision::V4L2Camera::set_v_balance | ( | int | v_balance | ) | [virtual] |
void firevision::V4L2Camera::set_vert_mirror | ( | bool | enabled | ) | [virtual] |
Set whether the camera should mirror images vertically.
enabled | if true, images should be mirrored vertically |
NotImplementedException | Not implemented by this control |
Reimplemented from firevision::CameraControlImage.
Definition at line 1526 of file v4l2.cpp.
References set_one_control().
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.
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.
References close().
Referenced by close(), open(), start(), and ~V4L2Camera().
int firevision::V4L2Camera::u_balance | ( | ) | [virtual] |
int firevision::V4L2Camera::v_balance | ( | ) | [virtual] |
bool firevision::V4L2Camera::vert_mirror | ( | ) | [virtual] |
Return whether the camera image is vertically mirrored.
NotImplementedException | Not implemented by this control |
Reimplemented from firevision::CameraControlImage.
Definition at line 1513 of file v4l2.cpp.
References get_one_control().
unsigned int firevision::V4L2Camera::width | ( | ) | [virtual] |
Get the current width of the image.
Implements firevision::CameraControlImage.
Definition at line 1486 of file v4l2.cpp.
References pixel_width().
char* firevision::V4L2Camera::_device_name [protected] |
Device name.
Definition at line 138 of file v4l2.h.
Referenced by firevision::NaoCamera::NaoCamera(), open(), print_info(), firevision::NaoCamera::set_source(), V4L2Camera(), and ~V4L2Camera().