void Libdc1394SequenceGrabber::processCameraImageData( unsigned char* cameraImageData )
{
	unsigned char* dest = getImage()->data();
	unsigned int w = getImage()->s();
	unsigned int h = getImage()->t();
	unsigned int bpp = getImage()->getPixelSizeInBits() / 8;
	unsigned int size = w * h * bpp;
	
	if( _sourceFormat == DC1394_COLOR_CODING_RAW8 || _sourceFormat == DC1394_COLOR_CODING_MONO8 ) 
	{
		if (_grey)
			memcpy(dest, cameraImageData, size);
		else 
			dc1394_bayer_decoding_8bit( cameraImageData, dest, w, h,  _bayerPattern, _bayerMethod );
	}
	else if(_sourceFormat == DC1394_COLOR_CODING_MONO16 || _sourceFormat == DC1394_COLOR_CODING_RAW16 )
	{
	    // These are not implemented yet....
		if(!_grey)
		{
		    dc1394_convert_to_RGB8(cameraImageData, dest, w, h, 0, _sourceFormat, 16);
		}
		else {
			dc1394_convert_to_MONO8(cameraImageData, dest, w, h, 0, _sourceFormat, 16);
		}
	}
	else if(_sourceFormat == DC1394_COLOR_CODING_YUV411 || 
		_sourceFormat == DC1394_COLOR_CODING_YUV422 ||
		_sourceFormat == DC1394_COLOR_CODING_YUV444 )
	{
		if(!_grey )
		{
		    dc1394_convert_to_RGB8( cameraImageData, dest, w, h, DC1394_BYTE_ORDER_UYVY, _sourceFormat, 16);
		}
		else
		{
			msg(osg::WARN) << "could not handle sourceformat " << _sourceFormat << std::endl; 
		}

	}
	else if(  _sourceFormat == DC1394_COLOR_CODING_RGB8 )
	{
		if( !_grey )
		{
            memcpy(dest, cameraImageData, size);
		}
		else
		{
            msg(osg::WARN) << "could not handle sourceformat " << _sourceFormat << std::endl;
		}
	}
	else
	{
		msg(osg::WARN) << "could not handle sourceformat " << _sourceFormat << std::endl;
	}
}
Exemple #2
0
static void s_copy_frame(dc1394video_frame_t *vframe, capture_frame_t *frame)
{
  dc1394error_t err;

  switch (frame->format) {
  case CAPTURE_FRAME_FORMAT_GRAY:
    err = dc1394_convert_to_MONO8(vframe->image, (uint8_t *)frame->raw_data, vframe->size[0], vframe->size[1], vframe->yuv_byte_order, vframe->color_coding, vframe->data_depth);
    DC1394_ERR(err, "conversion failed");
    break;

  case CAPTURE_FRAME_FORMAT_RGB:
    err = dc1394_convert_to_RGB8(vframe->image, (uint8_t *)frame->raw_data, vframe->size[0], vframe->size[1], vframe->yuv_byte_order, vframe->color_coding, vframe->data_depth);
    DC1394_ERR(err, "conversion failed");

  default:
    ;
  }

  frame->timestamp = vframe->timestamp;
}