10. Change log

10.1. Release 1.7 (2014-08-08)

1.7 consists once more of new features, and more bug fixes:

  • Text overlay on preview, image, and video output is now possible (#16)
  • Support for more than one camera on the compute module has been added, but hasn’t been tested yet (#84)
  • The exposure_mode 'off' has been added to allow locking down the exposure time, along with some new recipes demonstrating this capability (#116)
  • The valid values for various attributes including awb_mode, meter_mode, and exposure_mode are now automatically included in the documentation (#130)
  • Support for unencoded formats (YUV, RGB, etc.) has been added to the start_recording() method (#132)
  • A couple of analysis classes have been added to picamera.array to support the new unencoded recording formats (#139)
  • Several issues in the PiBayerArray class were fixed; this should now work correctly with Python 3, and the demosaic() method should operate correctly (#133, #134)
  • A major issue with multi-resolution recordings which caused all recordings to stop prematurely was fixed (#136)
  • Finally, an issue with the example in the documentation for custom encoders was fixed (#128)

Once again, many thanks to the community for another round of excellent bug reports - and many thanks to 6by9 and jamesh for their excellent work on the firmware and official utilities!

10.2. Release 1.6 (2014-07-21)

1.6 is half bug fixes, half new features:

  • The awb_gains attribute is no longer write-only; you can now read it to determine the red/blue balance that the camera is using (#98)
  • The new read-only exposure_speed attribute will tell you the shutter speed the camera’s auto-exposure has determined, or the shutter speed you’ve forced with a non-zero value of shutter_speed (#98)
  • The new read-only analog_gain and digital_gain attributes can be used to determine the amount of gain the camera is applying at a couple of crucial points of the image processing pipeline (#98)
  • The new drc_strength attribute can be used to query and set the amount of dynamic range compression the camera will apply to its output (#110)
  • The intra_period parameter for start_recording() can now be set to 0 (which means “produce one initial I-frame, then just P-frames”) (#117)
  • The burst parameter was added to the various capture() methods; users are strongly advised to read the cautions in the docs before relying on this parameter (#115)
  • One of the advanced recipes in the manual (“splitting to/from a circular stream”) failed under 1.5 due to a lack of splitter-port support in the circular I/O stream class. This has now been rectified by adding a splitter_port parameter to the constructor of PiCameraCircularIO (#109)
  • Similarly, the array extensions introduced in 1.5 failed to work when resizers were present in the pipeline. This has been fixed by adding a size parameter to the constructor of all the custom output classes defined in that module (#121)
  • A bug that caused picamera to fail when the display was disabled has been squashed (#120)

As always, many thanks to the community for another great set of bug reports!

10.3. Release 1.5 (2014-06-11)

1.5 fixed several bugs and introduced a couple of major new pieces of functionality:

  • The new picamera.array module provides a series of custom output classes which can be used to easily obtain numpy arrays from a variety of sources (#107)
  • The motion_output parameter was added to start_recording() to enable output of motion vector data generated by the H.264 encoder. A couple of new recipes were added to the documentation to demonstrate this (#94)
  • The ability to construct custom encoders was added, including some examples in the documentation. Many thanks to user Oleksandr Sviridenko (d2rk) for helping with the design of this feature! (#97)
  • An example recipe was added to the documentation covering loading and conversion of raw Bayer data (#95)
  • Speed of unencoded RGB and BGR captures was substantially improved in both Python 2 and 3 with a little optimization work. The warning about using alpha-inclusive modes like RGBA has been removed as a result (#103)
  • An issue with out-of-order calls to stop_recording() when multiple recordings were active was resolved (#105)
  • Finally, picamera caught up with raspistill and raspivid by offering a friendly error message when used with a disabled camera - thanks to Andrew Scheller (lurch) for the suggestion! (#89)

10.4. Release 1.4 (2014-05-06)

1.4 mostly involved bug fixes with a couple of new bits of functionality:

  • The sei parameter was added to start_recording() to permit inclusion of “Supplemental Enhancement Information” in the output stream (#77)
  • The awb_gains attribute was added to permit manual control of the auto-white-balance red/blue gains (#74)
  • A bug which cause split_recording() to fail when low framerates were configured was fixed (#87)
  • A bug which caused picamera to fail when used in UNIX-style daemons, unless the module was imported after the double-fork to background was fixed (#85)
  • A bug which caused the frame attribute to fail when queried in Python 3 was fixed (#80)
  • A bug which caused raw captures with “odd” resolutions (like 100x100) to fail was fixed (#83)

Known issues:

  • Added a workaround for full-resolution YUV captures failing. This isn’t a complete fix, and attempting to capture a JPEG before attempting to capture full-resolution YUV data will still fail, unless the GPU memory split is set to something huge like 256Mb (#73)

Many thanks to the community for yet more excellent quality bug reports!

10.5. Release 1.3 (2014-03-22)

1.3 was partly new functionality:

  • The bayer parameter was added to the 'jpeg' format in the capture methods to permit output of the camera’s raw sensor data (#52)
  • The record_sequence() method was added to provide a cleaner interface for recording multiple consecutive video clips (#53)
  • The splitter_port parameter was added to all capture methods and start_recording() to permit recording multiple simultaneous video streams (presumably with different options, primarily resize) (#56)
  • The limits on the framerate attribute were increased after firmware #656 introduced numerous new camera modes including 90fps recording (at lower resolutions) (#65)

And partly bug fixes:

10.6. Release 1.2 (2014-02-02)

1.2 was mostly a bug fix release:

  • A bug introduced in 1.1 caused split_recording() to fail if it was preceded by a video-port-based image capture (#49)
  • The documentation was enhanced to try and full explain the discrepancy between preview and capture resolution, and to provide some insight into the underlying workings of the camera (#23)
  • A new property was introduced for configuring the preview’s layer at runtime although this probably won’t find use until OpenGL overlays are explored (#48)

10.7. Release 1.1 (2014-01-25)

1.1 was mostly a bug fix release:

  • A nasty race condition was discovered which led to crashes with long-running processes (#40)
  • An assertion error raised when performing raw captures with an active resize parameter was fixed (#46)
  • A couple of documentation enhancements made it in (#41 and #47)

10.8. Release 1.0 (2014-01-11)

In 1.0 the major features added were:

  • Debian packaging! (#12)
  • The new frame attribute permits querying information about the frame last written to the output stream (number, timestamp, size, keyframe, etc.) (#34, #36)
  • All capture methods (capture() et al), and the start_recording() method now accept a resize parameter which invokes a resizer prior to the encoding step (#21)
  • A new PiCameraCircularIO stream class is provided to permit holding the last n seconds of video in memory, ready for writing out to disk (or whatever you like) (#39)
  • There’s a new way to specify raw captures - simply use the format you require with the capture method of your choice. As a result of this, the raw_format attribute is now deprecated (#32)

Some bugs were also fixed:

  • GPIO.cleanup is no longer called on close() (#35), and GPIO set up is only done on first use of the led attribute which should resolve issues that users have been having with using picamera in conjunction with GPIO
  • Raw RGB video-port based image captures are now working again too (#32)

As this is a new major-version, all deprecated elements were removed:

10.9. Release 0.8 (2013-12-09)

In 0.8 the major features added were:

  • Capture of images whilst recording without frame-drop. Previously, images could be captured whilst recording but only from the still port which resulted in dropped frames in the recorded video due to the mode switch. In 0.8, use_video_port=True can be specified on capture methods whilst recording video to avoid this.
  • Splitting of video recordings into multiple files. This is done via the new split_recording() method, and requires that the start_recording() method was called with inline_headers set to True. The latter has now been made the default (technically this is a backwards incompatible change, but it’s relatively trivial and I don’t anticipate anyone’s code breaking because of this change).

In addition a few bugs were fixed:

  • Documentation updates that were missing from 0.7 (specifically the new video recording parameters)
  • The ability to perform raw captures through the video port
  • Missing exception imports in the encoders module (which caused very confusing errors in the case that an exception was raised within an encoder thread)

10.10. Release 0.7 (2013-11-14)

0.7 is mostly a bug fix release, with a few new video recording features:

  • Added quantisation and inline_headers options to start_recording() method
  • Fixed bugs in the crop property
  • The issue of captures fading to black over time when the preview is not running has been resolved. This solution was to permanently activate the preview, but pipe it to a null-sink when not required. Note that this means rapid capture gets even slower when not using the video port
  • LED support is via RPi.GPIO only; the RPIO library simply doesn’t support it at this time
  • Numerous documentation fixes

10.11. Release 0.6 (2013-10-30)

In 0.6, the major features added were:

  • New 'raw' format added to all capture methods (capture(), capture_continuous(), and capture_sequence()) to permit capturing of raw sensor data
  • New raw_format attribute to permit control of raw format (defaults to 'yuv', only other setting currently is 'rgb')
  • New shutter_speed attribute to permit manual control of shutter speed (defaults to 0 for automatic shutter speed, and requires latest firmware to operate - use sudo rpi-update to upgrade)
  • New “Recipes” chapter in the documentation which demonstrates a wide variety of capture techniques ranging from trivial to complex

10.12. Release 0.5 (2013-10-21)

In 0.5, the major features added were:

In addition a few bugs were fixed:

  • Byte strings not being accepted by continuous()
  • Erroneous docs for ISO

Many thanks to the community for the bug reports!

10.13. Release 0.4 (2013-10-11)

In 0.4, several new attributes were introduced for configuration of the preview window:

Also, a new method for rapid continual capture of still images was introduced: continuous().

10.14. Release 0.3 (2013-10-04)

The major change in 0.3 was the introduction of custom Exif tagging for captured images, and fixing a silly bug which prevented more than one image being captured during the lifetime of a PiCamera instance.

10.15. Release 0.2

The major change in 0.2 was support for video recording, along with the new resolution property which replaced the separate preview_resolution and stills_resolution properties.