Re: [libdc] Using AVT camera look up tables (LUT) on Windows
Capture and control API for IIDC compliant cameras
Brought to you by:
ddouxchamps,
gordp
From: Brian E. <br...@mb...> - 2012-12-04 15:53:38
|
Hi Everyone, I have found a work-around after a communication with someone from AVT. The LUT is loaded onto an AVT camera through a general purpose data buffer (GPData), a set of 512 32-bit registers (2048 bytes). There are vendor-specific functions in libdc for doing this, which eventually invoke dc1394_set_registers() in register.c for sending blocks of data to the camera. This dispatches a platform-specific write to the camera, which on Windows writes the block of data in 32-bit quadlets to serial register locations. On Mac OS, this writes the whole block of data through a firewire framework call. But, it seems there is something wrong with the way the Windows side of libdc1394 writes multiple quadlets to AVT cameras. The work-around: write the LUT one quadlet at a time, always to the base address of the GPData buffer. What is additionally puzzling: writing the LUT one quadlet at a time using the second register address in GPData works, but writing the LUT one quadlet at a time alternating between the first two registers of GPData corrupts the LUT. Has anyone else seen this? Is there a better solution? What is the root of the problem: my approach, libdc1394, CMU 1394 camera driver, or AVT cameras? Thanks, Brian |