Over the last couple of weeks a lot of spare time went into improving the code that controls the image capturing. The main bug to address was that the image capturing would ‘hang’ after a certain amount of time when capturing say round 10 seconds or more of 720p 12 bit images.
We revisited the code and the multi-threaded buffering algorithm. Putting the buffer and the code that empties the buffer on a separate thread, away from the main user interfacing window thread dramatically improved the performance. The ‘hanging’ capturing was solved except for the fact that at some times the output of Ximea API messages can still interfere with the code, which is at the capturing stage pushing all boundaries of the raspberry pi 3. When run with an open terminal window the problem is solved but we will ‘silence’ the API output further in order to completely solve the issue.
The only other point to note is that when capturing 720p resolution (the highest option) and at 12 bit, the image capture buffer fills up quite rapidly as the large RAW images take time to be written to microSD card. When ~300 images are in the buffer the raspberry pi sort of gives up and starts ‘sputtering’. Waiting long enough for the buffer to empty solves the situation but you will lose images.
Best options in this ‘best mode’ are to capture shorter shots. Also scaling back to 8 bit RAW dramatically slows down filling up of the buffer. Another option is to move to 540p at 12 bit.
A final ‘disturbing’ issue is that the Ximea camera every now and then ‘disconnects’ and throws an error. The ConnectCam button needs to be pressed to reset the connection and filming can resume. Whether this is a bad USB cable issue or something else will be investigated.
One of the things still missing was the option to easily copy all the captured images (large sized RAW files) off of the Digital Super 8 Cartridge’s microSD card onto a USB drive. This is now possible. Also we are adding functionality to copy such images to the USB drive as jpg, tiff or png. So that these can easily be used for post production purposes. This also enables users to save single frames that they like as pictures.
The main purpose of copying the RAW files to a USB drive is to enable users to ‘reset’ offload Gigabytes of RAW files and keep shooting new material. The RAW files on the USB drive can be used for ‘developing’ the rolls into digital super 8 film files (uncompressed large files or compressed smaller MPG files). This development step, which includes all necessary post processing and offers colorgrading options can be done easily with the Digital Super 8 Cartridge software package.
We took the wearable control unit and the Digital Super 8 cartridge outside for some portable testing.
At dusk we shot the grapes growing in the garden. First part is dark at 200 ASA but we also tested the autogain function that increases the CMOS sensor gain as necessary, leading to better brightness. At the cost of noise in the images of course.
We decided to not color correct the images, just take the 12 bit RAW images (as always) and do the gamma correction. But leaving brightness, saturation, contrast, red, blue and green in their default state. Pretty pleasing results, filmed with the Nizo 481 macro lense at dusk.
During our last coding session we developed the ‘ConnectCam’ button. This button allows users to functionally re-connect the digital super 8 cartridge to the raspberry pi control unit.
This comes in handy in case the USB cable between control unit and cartridge gets accidentally disconnected or wasn’t connected before the control application was started. This will help users solve small issues that may lead to a ‘DS8 Cartridge not connected’ error messages in the application.
The code we develop for the Digital Super 8 cartridge has 2 major functions. One is to start up and control the cartridge and start and stop image capturing mode. In capture mode the cartridge will record RAW images as the user shoots with the Super 8 camera.
The other function is to post-process the captured images (color grading, brightness and contract corrections and gamma correction) and to ‘develop’ the captured digital super 8 images into a video file (either uncompressed or MPEG compressed).
One key change currently being worked on is to split the application into 2 separate ones. One for controlling the cartridge, tweak settings and start/stop image capture mode. The other for post-processing, so after filming is done this application is a small but fully standalone image processor and video rendering app.
Another major step is to develop a ‘re-connect’ function to give the application better performance for cases where due to whatever reason the usb cable (between cartridge and external module) is disconnected.