Code improvements

Earlier in 2021 we finally solved some major software stability issues. The C++ code that runs on the Nanopi Neo Air inside the cartridge was crashing relatively often during shooting. Causing loss of captured images.

After long research we found out that this was caused by an imagefile write (the captured image) and an image file read (an image file to monitor the captured result in real time).

By changing the setup of the system, making the Nanopi run its code from fixed eMMC memory (on board the Nanopi) and writing the RAW files to its separate microSD card we achieve that the monitor files are read off of the eMMC memory while the RAW files are written to the MicroSD. Thus avoiding memory acces issues and subsequent code crashes due to a segmentation fault.

we now feel confident to continue developing the Digital Super8 Cartridge with software that is reliable enough for the user.

Note: the Digital S8 Cartridge runs on C++ code, while it also has its own WiFi accesspoint and webserver on board. This allows users to run our HTML5 app on their iPhone or smartphone to have full cartridge control and monitoring functionality.

Smartphone App for Digital Super8

So we’re working hard on the Digital Super8 app for smartphones. To fully control the Digital Super8 cartridge and all settings. To provide monitoring while filming as well as when doing trial shots without actual recording. And to allow viewing the footage you shot.

The Digital Super8 cartridge sets up its own WiFi access point for your smartphone to connect to and then through the app you fully take control, while you’ve got the cartridge slid into your Super8 camera.

At this time we’re ironing out some minor challenges to increase the performance of the monitoring and viewing of captured shots. Using multi-threading to ensure that the RAW images get displayed in full color and smoothly.

Stay tuned.

NanoPi Neo Air in Digital Super 8 Cartridge

We managed to port our Digital Super 8 code to the NanoPi Neo Air. Using Qt and Qt Creator for platform independent development this wasn’t such a big task, fortunately. Also we managed to get the NanoPi Neo Air to boot up, set up a Wifi access point (SSID: DigitalSuper8 :-)), and to start VNCserver which allows a user to view the desktop of the NanoPi in a smartphone or IPhone. Also the Digital Super 8 control and monitor application is started and can then be viewed via WiFi on the smartphone.
That’s actually quite cool!
Having the NanoPi Neo Air act as a WiFi accesspoint, while running the Armbian OS on it was the most complex task and we had to re-write some scripts to nail it.
Now we are waiting for the new 3D printed cartridge to arrive. It is designed and printed by Dutch 3D print company http://www.partsondemand.eu. The new cart will allow build in of NanoPi, sensor and trigger synch circuit board, LiPo battery (1200 mAh), and charger/booster circuit. The device will have status LED, microUSB charger port, USB port for copying captured images to USB stick, microSD port for option to exchange microSD with updated image.
The device boots from and runs on 32GB eMMC, which enables the fastest RAW image writing and performance.

Parts list of the digital super-8 cartridge

To provide more information about our Digital Super-8 Cartridge solution we publish the ‘bill of materials’. This is for the version with external module. Development is underway for a new prototype with no external module, it will have all electronics inside the cartridge.

Bill of materials:

The Cartridge: 3D printed Super8 cartridge, Ximea MU9-MBRD subminiature camera (with Aptina MT9P031 sensor), our own designed shutter sync circuit PCB with photodetector for film claw detection, microUSB breakout board with image capture indication LED, IR Filter, connector cable from PCB to microUSB board, high quality USB cable to connect cart to external module.

External module: Raspberry Pi3, 32GB SanDisk microSD card, Raspberry Pi touch screen with plastic casing, 6600 mAh power bank with microUSB cable to power the module.

Code: C++ application designed built on Qt Creator to control the capturing, settings, and to develop raw images into video, colorgrading.

Digital Super8 Cartridge footage in HD

We shot some new footage to test the quality of the Digital Super8 Cartridge. Our software app takes the RAW Bayer images of the cartridge and performs S-Log encoding before we do any further processing. Using the Digital Super8 application we added contrast with S-curve and then applied individual S-Curves on the RGB channels to add warmth. Because Digital Super8 consists of individually captured 12 bit RAW images (global shutter) there’s a lot of flexibility in how to process afterwards. One could do B&W, natural color, warm, cool or whatever else. Also the software provided allows for export of TIFF image format.

The Nizo 801 Macro we used has some motor instability, leading to a bit of flicker.

Code update 4 – improving buffering

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.