void CMUCamera::enablePtGreyBayer() { int err; unsigned long advOffset = m_pCamera->GetAdvancedFeatureOffset(); unsigned long imageDataFormat; err = m_pCamera->ReadQuadlet(advOffset+0x48, &imageDataFormat); AVG_ASSERT(err == CAM_SUCCESS); if (imageDataFormat & 0x80000000) { err = m_pCamera->WriteQuadlet(advOffset+0x48, 0x80000081); AVG_ASSERT(err == CAM_SUCCESS); unsigned long bayerFormat; err = m_pCamera->ReadQuadlet(advOffset+0x40, &bayerFormat); AVG_ASSERT(err == CAM_SUCCESS); PixelFormat exactPF = fwBayerStringToPF(bayerFormat); setCamPF(exactPF); } else { AVG_TRACE(Logger::ERROR, "imageDataFormat not supported."); } }
void FWCamera::enablePtGreyBayer() { #ifdef AVG_ENABLE_1394_2 dc1394error_t err; uint32_t imageDataFormat; err = dc1394_get_adv_control_register(m_pCamera, 0x48, &imageDataFormat); AVG_ASSERT(err == DC1394_SUCCESS); if (imageDataFormat & 0x80000000) { err = dc1394_set_adv_control_register(m_pCamera, 0x48, 0x80000081); AVG_ASSERT(err == DC1394_SUCCESS); uint32_t bayerFormat; err = dc1394_get_adv_control_register(m_pCamera, 0x40, &bayerFormat); AVG_ASSERT(err == DC1394_SUCCESS); PixelFormat exactPF = fwBayerStringToPF(bayerFormat); if (exactPF == I8) { throw(Exception(AVG_ERR_CAMERA_NONFATAL, "Greyscale camera doesn't support bayer pattern.")); } setCamPF(exactPF); } #endif }