AURobotServers  4
Public Member Functions | Public Attributes | Private Member Functions | Static Private Member Functions | Private Attributes | Friends | List of all members
CCamera Class Reference

#include <camera.h>

Public Member Functions

bool BeginReadFrame (int level, const void *&out_buffer, int &out_buffer_size)
 
MMAL_BUFFER_HEADER_T * BeginReadFrame (int level)
 
void EndReadFrame (int level)
 
int ReadFrame (int level, void *buffer, int buffer_size)
 

Public Attributes

MMAL_COMPONENT_T * CameraComponent
 

Private Member Functions

 CCamera ()
 
MMAL_COMPONENT_T * CreateCameraComponentAndSetupPorts ()
 
MMAL_COMPONENT_T * CreateSplitterComponentAndSetupPorts (MMAL_PORT_T *video_ouput_port)
 
bool Init (int width, int height, int framerate, int num_levels, bool do_argb_conversion, USemaphore *postOnNewImage)
 
void OnCameraControlCallback (MMAL_PORT_T *port, MMAL_BUFFER_HEADER_T *buffer)
 
void Release ()
 
 ~CCamera ()
 

Static Private Member Functions

static void CameraControlCallback (MMAL_PORT_T *port, MMAL_BUFFER_HEADER_T *buffer)
 

Private Attributes

RASPICAM_CAMERA_PARAMETERS CameraParameters
 
int FrameRate
 
int Height
 
CCameraOutputOutputs [4]
 
MMAL_COMPONENT_T * SplitterComponent
 
MMAL_CONNECTION_T * VidToSplitConn
 
int Width
 

Friends

CCameraStartCamera (int width, int height, int framerate, int num_levels, bool do_argb_conversion, USemaphore *postOnNewImg)
 
void StopCamera ()
 

Constructor & Destructor Documentation

CCamera::CCamera ( )
private
CCamera::~CCamera ( )
private

Member Function Documentation

bool CCamera::BeginReadFrame ( int  level,
const void *&  out_buffer,
int &  out_buffer_size 
)

gets buffer pointer and size of a locked queue element

References CCameraOutput::BeginReadFrame(), and Outputs.

Referenced by main(), CCameraOutput::ReadFrame(), and UFuncPiCam::run().

MMAL_BUFFER_HEADER_T * CCamera::BeginReadFrame ( int  level)

get a buffer entry with the desired pyramid level. the buffer is locked on return.

Parameters
levelis level 0..N where 0 has highest resolution.
Returns
the locked buffer or NULL if none available

References CCameraOutput::BeginReadFrame(), and Outputs.

void CCamera::CameraControlCallback ( MMAL_PORT_T *  port,
MMAL_BUFFER_HEADER_T *  buffer 
)
staticprivate
MMAL_COMPONENT_T * CCamera::CreateCameraComponentAndSetupPorts ( )
private
MMAL_COMPONENT_T * CCamera::CreateSplitterComponentAndSetupPorts ( MMAL_PORT_T *  video_ouput_port)
private

Referenced by Init().

void CCamera::EndReadFrame ( int  level)

Unlocks buffer

References CCameraOutput::EndReadFrame(), and Outputs.

Referenced by main(), CCameraOutput::ReadFrame(), and UFuncPiCam::run().

bool CCamera::Init ( int  width,
int  height,
int  framerate,
int  num_levels,
bool  do_argb_conversion,
USemaphore postOnNewImage 
)
private
void CCamera::OnCameraControlCallback ( MMAL_PORT_T *  port,
MMAL_BUFFER_HEADER_T *  buffer 
)
private

Referenced by CameraControlCallback().

int CCamera::ReadFrame ( int  level,
void *  buffer,
int  buffer_size 
)

gets image data for requested level - all in one call

References Outputs, and CCameraOutput::ReadFrame().

void CCamera::Release ( )
private

Friends And Related Function Documentation

CCamera* StartCamera ( int  width,
int  height,
int  framerate,
int  num_levels,
bool  do_argb_conversion,
USemaphore postOnNewImg 
)
friend

start camera (only one camera can be created)

Parameters
widthis width of image
height
framerate- typically 30
num_levels- assume scaled down versions (>> 1..num_levels)
do_argb_conversion- convert to ARGB (from ?)
Returns
pointer to camera class instance
void StopCamera ( )
friend

Member Data Documentation

MMAL_COMPONENT_T* CCamera::CameraComponent

camera component used to set control parameters

Referenced by CCamera(), Init(), Release(), and UFuncPiCam::runAlive().

RASPICAM_CAMERA_PARAMETERS CCamera::CameraParameters
private
int CCamera::FrameRate
private
int CCamera::Height
private
CCameraOutput* CCamera::Outputs[4]
private
MMAL_COMPONENT_T* CCamera::SplitterComponent
private

Referenced by CCamera(), Init(), and Release().

MMAL_CONNECTION_T* CCamera::VidToSplitConn
private

Referenced by CCamera(), Init(), and Release().

int CCamera::Width
private

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