Version 0.5.0
Happy new year!
I'm excited to announce the availability of v0.5.0 of MMALSharp. After 6 months in development, this release has undergone lots of stability work and improvements to the API which makes it much easier to understand and provides a good framework for future improvements.
To summarise the tickets closed for this release:
#32 - Encode/Decode video from file
#34 - Allow video colour space change
#59 - Strip Bayer filter data from frame
#60 - JPEG thumbnails
#68 - Investigate async context usage
#69 - Allow annotation justify and offset
#75 - Rapid image capture
#77 - Image processing part 1
#78 - Standalone functionality without camera
I'd like to focus on a few of these items to provide some context on their importance.
Encode/Decode video from file
This particular ticket has had a status of "In Progress" for months now and it has taken conversations with @6by9 over at the Raspberry Pi forums to find out what the issue was. It was eventually released that I was wrongly saving the MMAL_EVENT_FORMAT_CHANGED event data to the decoded file which then caused issues when re-encoding. This is an advanced piece of functionality, and I'm not sure how many people will find it useful, but I felt it was a positive and rewarding feature to include for this release.
Image processing part 1
Since starting the project, I've been on a journey myself learning more about image processing, and it's clear there's still a long way to go. For this release I have introduced some basic image post-processing functionality which is mainly based around matrix convolutions. The API is quite stable and it's a cool part of MMALSharp to play around with, get stuck in and please post back any feedback!
Rapid image capture
Earlier in 2018 when I made an announcement about MMALSharp on the Raspberry Pi forums, I received a reply about sending image frame data to the Accord Framework (check it out if you've not heard of it). It was disappointing that the user was only getting around 1-2fps and that was with low resolution frames. It was clear that the time taken to capture images off the camera's still port was bottlenecking what was being processed by Accord. A cool feature of MMAL is that you can use the camera's video port to rapidly capture image frames at a lesser quality and this functionality is now available in v0.5.0!
Investigate async context usage
Until recently, MMALSharp was relying on a library called Nito.AsyncEx to provide an asynchronous countdown event so I could close down ports once processing had finished. Unfortunately this library was causing some intermittent issues with the native callbacks and would lock up MMALSharp. This library has since been removed and I've added a workaround - so far so good. If anyone notices any lockups, please let me know!
Other notes
Please read the ticket #70 which documents some breaking changes for this release. I will be updating the wiki over the next few days.
Finally I'd like to thank the contributors for helping out with this release: