libgphoto2 is the core library designed to allow access to digital camera by external programs.
It makes abstraction of communication ports and camera protocol, to allow a complete modularity.To support a new communication physical layer (like IEEE1394), just add a new port to libgphoto2_port. To support a new kind a digital camera, just provide a new camlib with the required callbacks. All of this will be transparent to client (programs that call libgphoto2
For a deeper view of the inner working of libgphoto2, please read the apropriate chapter in the gPhoto2 manual.
libgphoto2 itself is not a GUI application, opposed to gphoto. There are GUI frontends for the gphoto2 library, however, such as gtkam for example.
libgphoto2 can only talk to cameras the language of those it understands. That is, if you own a camera that speaks a language that isn't published anywhere and nobody has been able to figure out the meaning of the sentences, libgphoto2 cannot communicate with those cameras.
Then, there are cameras supporting the so-called USB Mass Storage protocol. This is a protocol that has been published and lets you access any storage device, be it a camera or a disk connected via USB to your computer. As there are already drivers for this protocol out there, you don't need an additional library like libgphoto2. The list of camera that use USB Mass Storage is getting longer everyday, so we won't publish it.
- Fixed 32-bit architectures