diff options
author | Matthias Vogelgesang <matthias.vogelgesang@gmail.com> | 2012-08-31 16:47:21 +0200 |
---|---|---|
committer | Matthias Vogelgesang <matthias.vogelgesang@gmail.com> | 2012-08-31 16:47:21 +0200 |
commit | bf641d06c522b86213b28640e85dc6e483a70cbd (patch) | |
tree | 53663f1d00d0e489d7121a2adf7eb2614b8732af /docs | |
parent | 2723b1d644d72c535381a1da346e929d22e90369 (diff) | |
download | libuca-bf641d06c522b86213b28640e85dc6e483a70cbd.tar.gz libuca-bf641d06c522b86213b28640e85dc6e483a70cbd.tar.bz2 libuca-bf641d06c522b86213b28640e85dc6e483a70cbd.tar.xz libuca-bf641d06c522b86213b28640e85dc6e483a70cbd.zip |
Extend section on new camera integration
Diffstat (limited to 'docs')
-rw-r--r-- | docs/manual.md | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/docs/manual.md b/docs/manual.md index 69abae8..0373010 100644 --- a/docs/manual.md +++ b/docs/manual.md @@ -381,6 +381,31 @@ virtual methods. The simplest way is to take the `mock` camera and rename all occurences. Note, that if you class is going to be called `FooBar`, the upper case variant is `FOO_BAR` and the lower case variant is `foo_bar`. +In order to fully implement a camera, you need to override at least the +following virtual methods: + +* `start_recording`: Take suitable actions so that a subsequent call to + `grab` delivers an image or blocks until one is exposed. +* `stop_recording`: Stop recording so that subsequent calls to `grab` + fail. +* `grab`: Return an image from the camera or block until one is ready. + +## Asynchronous operation + +When the camera supports asynchronous acquisition and announces it with a true +boolean value for `"transfer-asynchronously"`, a mechanism must be setup up +during `start_recording` so that for each new frame the grab func callback is +called. + +## Cameras with internal memory + +Cameras such as the pco.dimax record into their own on-board memory rather than +streaming directly to the host PC. In this case, both `start_recording` and +`stop_recording` initiate and end acquisition to the on-board memory. To +initiate a data transfer, the host calls `start_readout` which must be suitably +implemented. The actual data transfer happens either with `grab` or +asynchronously. + [sub-classing]: http://developer.gnome.org/gobject/stable/howto-gobject.html |