summaryrefslogtreecommitdiffstats
path: root/NEWS
blob: 445c232abf75b2f02adec5a7ad63da6741116b3c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
Changelog
=========

Changes in libuca 2.3.0
-----------------------

Released on April 20th 2018.

Enhancements:

- Besides CMake we now also support meson
- mock: provide setter/getter for test-enum
- mock: add a custom enum type for test purposes
- mock: receive SIGUSR1 to simulate external trigger
- grab: measure time per frame grab
- grab: allow filename to be a format specifier
- grab: show progress during acquisition
- gui: use glib-resources to bake in UI

Fixes:

- Parse enum properties properly
- Stop construction and exit early on error

Breaks and changes:

- Raise minimum GLib version to 2.38
- Abort construction if props cannot be parsed
- grab: drop --write-tiff and guess from file suffix
- grab: drop support for --duration
- grab: do not write at all if --output is not given


Changes in libuca 2.2.1
-----------------------

Released on May 10th 2017.

Enhancements:

- Replace our homegrown install path system with CMake's GNUInstallDirs
- Use better system to parse command line argument properties for the command
  line tools.

Fixes:

- Fix #80: trigger must not block on the access_lock
- Emulate correct software trigger behaviour for the mock camera.


Changes in libuca 2.2.0
-----------------------

Released on December 16th 2016.

Enhancements:

- Improve Windows support
- Add uca-info tool to print current prop values
- Add debug output of plugin module location
- Add stress test script for TANGO
- Increase maximum dimension of TANGO image attribute
- cli: pass -p/--property assignment to constructor
- Improve benchmark output and count the number of dropped frames

Fixes:

- Fix #69, #71, #72, #74
- Fix segfaults with changing ROI or bitdepth
- Fix zoom problems and statistics in the GUI
- Fix reading of 32 bit TIFFs in file plugin
- Allow setting max bin value of histogram

Breaks and changes:

- Raise GLib dependency to 2.28
- Do not stop camera when closing the object
- Move sensor binnings array out to plugin and remove it from mock
- mock: replace create-random with fill-data policy


Changes in libuca 2.1.1
-----------------------

Released on July 21st 2015

This is bugfix release:

- pco: use Fg_stopAcquire in stop_readout
- Fix #72: avoid race condition in GUI
- Fix ufo-kit/concert#373: use same unit for ROI and ROI multiplier


Changes in libuca 2.1.0
-----------------------

Released on June 10th 2015

This is a combined bug fix and feature release. Most notably there is a new
uca_camera_readout() API to grab arbitrary frames from cameras with in-camera
memory, e.g. the pco.dimax.

- pco: fix deadlock with streamed acquisition
- pco: allocate memory also when just reading out
- pco: do not reset storage mode
- file: signal change of ROI and bitdepth and read complete filename path
- ufo: update trigger policy
- dexela: Correct the ROI dimensions respecting the binning mode
- dexela: only allow symmetricall binnings
- pylon and dexela: update to the new trigger API
- Add FindClserSis to find the frame grabber SDK
- sensor-width, sensor-height and sensor-bitdepth are not construct-only anymore


Changes in libuca 2.0.0
-----------------------

Released on April 24th 2015

This release changes the trigger properties from a single "trigger-type"
property to separate "trigger-source" and "trigger-type" properties. Apart from
that numerous bug fixes and the following updates have been done since 1.6.2:

- uca-benchmark measures more mode combinations.
- A basic Python-based TANGO server has been added.
- pco: Check for SiliconSoftware run-time version 5.2.2.
- Add uca_camera_write to "write" arbitrary data to the camera. The semantics
  are camera-specific.
- Added uca_plugin_manager_get_camerah to pass property values via a GHashTable.
- The plugin directory can be queried via pkg-config.
- The Python GIL is released on potentially long-running code paths.


Changes in libuca 1.6.2
-----------------------

Released on November 14th 2014

This bugfix release solves a regression introduced with libuca 1.6.0 and
documented at https://github.com/ufo-kit/libuca/issues/61.


Changes in libuca 1.6.1
-----------------------

Released on October 29th 2014

This is a bugfix release smoothing out daily operation. In particular, we

- release the Python GIL to avoid blocking on grabs
- added missing property specification for exposure-auto in the pylon plugin
- improved robustness of ROI setting in the pylon plugin
- added global shutter support for pco.edge cameras


Changes in libuca 1.6
---------------------

Released on September 19th 2014

This is mainly a cleanup and bugfix release with the following major updates:

- Updated and fixed the Dexela plugin (v1.3.2).
- Fixed a race condition for buffered acquisition.
- Added `version` property to pco cameras.
- Reset all property units and warn on override

### API changes

- Removed "sensor-max-frame-rate" property.
- Remove unused virtual `record_` functions.
- Added `uca_camera_set_writable` and `uca_camera_is_writable_during_acquisition`.


Changes in libuca 1.5
---------------------

Released on July 22nd 2014.

### API additions

The base camera class has a new "buffered" property. If it is set to TRUE, a
thread acquires data into an internal ring buffer. The readout API via
uca_camera_grab has not changed. You can customize the number of pre-allocated
buffers with the "num-buffers" property.

A new uca_camera_is_recording call reflecting the "is-recording" property has
been added.

### Minor changes

- The GUI is more streamlined now and features region-of-interest selection and
  simpler zooming.
- A new file "camera" can read a directory of TIFFs. This is an experimental
  implementation that only supports 8 or 16 bit TIFFs.
- The xkit plugin does not depend on any third-party code any more but
  uses direct UDP communication.
- The Dexela and Pylon plugins have been updated.


Changes in libuca 1.4
---------------------

### X-KIT detector plugin

This release adds experimental support for X-KIT, a Medipix2 and timepix
detector system developed at IPE/KIT. Note, that this requires a pre-built
shared library and header files by the chip vendor.

### API changes

- `uca_camera_grab` does not set an error when the stream finished in
  readout mode. Now, only `FALSE` is returned.

### Minor changes

- A Travis instance was setup and Clang compilation has been turned on.
- Performance of `uca-camera-control` has been increased and the GUI received
  color mapping of grey values.
- Many fixes for pco.dimax, .edge and .4000.
- Fix frame order in the GUI.


Changes in libuca 1.3
---------------------

Released on July 24th 2013.

### Correct ABI versioning

Until now, the ABI version was not set correctly and all versions prior 1.3 bear
the same ABI version 1. This version has ABI version 2 and all subsequent
versions will increase it if the ABI breaks.

### More control and sleeker design for the control GUI

The look of the GUI was changed and includes now controls for acquisition as
well as status information about the frames pixel values. Moreover, the frames
can now also be scaled *up* to 200 and 400 per cent. Acquired frames can now
also be stored as a raw binary dump.

### Minor changes

- Added `sensor-pixel-width` and `sensor-pixel-height` to describe the cameras
  pixel size in meters.
- Added `-c/--camera` flag to uca-camera-control to specify a camera name from
  the command-line and by-pass the choice window.
- Added `-n/--num-frames` and `-r/--num-runs` to uca-camera-benchmark.
- The mock camera produces Gaussian distributed, random data now.
- Sane defaults have been set for binning and ROI and don't need to be repeated
  by cameras that don't support them.
- Fix exposure time calculation for UFO camera.


Changes in libuca 1.2
---------------------

Released on April 16th 2013.

### API break

The interface of uca_camera_grab() has changed. The buffer must be provided as a
void pointer (or gpointer in GLib speak), _not_ the address of a void pointer.
Furthermore, uca_camera_grab() returns TRUE if grabbing an image was successful
and FALSE if not.

The plugin manager does not call the plugins "constructor" function directly but
instantiates it via the GInitable initialization function. Therefore, all
plugins must implement initialization code in the objects init function and flag
errors in the init method from the GInitable interface.

### Restructuring of tools

All binary sources are now found in bin/, with the GUI application now
split off from the command line tools. Also, all tools are now installed with
a common "uca-" prefix, e.g. `uca-camera-control` and `uca-grab`.

### Minor changes

- Improved plugin packaging: Plugins can now specify a version number
  independent of libuca which is reflected when building RPM packages.
- `uca-grab` is a lot more useful now and gained `--num-frames` and `--duration`
  parameters as well as the possibility to write frames as a single multi-page
  TIFF file.
- Bug fixes for Dexela, pco and UFO cameras.


Changes in libuca 1.1
---------------------

Released on October 26th 2012.

### Plugin System

A new plugin manager is used to instantiate camera objects from a shared
library. Instead of calling `uca_camera_new`, a plugin manager is created that
looks in pre- and user-defined directories for DSOs that match
`libuca[A-Za-z].so` and used to instantiate:

    UcaPluginManager *manager;
    UcaCamera *camera;

    manager = uca_plugin_manager_new ();
    camera = uca_plugin_manager_get_camera (manager, "foo", &error);

The plugin manager adds a dependency on GModule (pkg-config package
`gmodule-2.0`) that is part of GLib.

### Minor changes

- It is now possible to generate GObject introspection meta data to bind libuca
  to all languages that support GObject introspection. A first experiment of
  UcaDevice using this was successful and the camera showed up in Jive.
- Added virtual function uca_camera_stop_readout() to cleanup after using
  uca_camera_start_readout().
- There is now a mechanism to register and query physical units of camera
  properties. Camera plugins must call uca_camera_register_unit() for each
  property that they want to have a physical unit (e.g. UCA_UNIT_SECOND)
  attached to. Client programs can get this information with
  uca_camera_get_unit().
- The control GUI learned some new tricks: live histogram, zooming and recording
  into an internal ring buffer.


Changes in libuca 1.0 aka 0.6
-----------------------------

Released on September 19th 2012.

### GObject Type System

Instead of using a home-grown type and class system, we switched to the GObject
system as part of GLib. This effort has the advantage of much more typesafe
properties and better signal and closure handling.

Most of the ideas and approaches of libuca 0.5 have been transfered. However,
instead of trying to initialize each camera first and having the user decide
what to use, the user must now determine the used camera at compile time or use
the factory pattern to delegate this to run-time.

### Tango Wrapper

The old Tango wrapper has been superseded by a generic one that proxies
GObject's to the Tango bus. This makes things a lot easier, for example reacting
on remote property setting and more robust type safety.

The wrapper is developed as an external project at ISS by Volker Kaiser.


Changes in libuca 0.5.0
-----------------------

- Put work under LGPL 2.1
- Adapt cameras/ipe.c to support the current driver API
- Adapt cameras/pco.c to support libpco 0.3
- API changes
    - new enum type uca_buffer_status
    - uca_cam_grab_callback()s have to return uca_buffer_status
    - typedef all types
- New symbols:
    - uca_cam_release_buffer()