davinci resolve — installs successfully on linux mint but fails to run

tl;dr — DaVinci Resolve v18.5 beta won’t run on a UM250 PC running Linux Mint 21.2.

In the prior post I had someone ask, in part, the following:

… why are there no video editing programs for Linux that actually work?

to which I answered, again in part:

… I’ve used DaVinci Resolve in the past for Windows and OSX. The work I produced with it is best forgotten, but I do remember it’s powerful set of features. I should probably download the free version and give it a whirl.

And that’s what I did here. I downloaded and installed the free version of DaVinci Resolve 18.5 beta for Linux. There was no problem in downloading the DaVinci Resolve archive bundle from the Black Magic Design website. Once unzipped, the bundle resolves itself as a self-installer shell file of around 3GB plus a PDF installation guide. My first attempt to install DaVinci Resolve resulted in an error message telling me I had to install a list of supporting libraries. So I ran the following based on the popup.

sudo apt install libapr1 libaprutil1 libxcb-composite0 libxcb-cursor0 libxcb-damage0

Once the supporting libraries were installed I re-ran the installer, and it successfully started. This is an example of the first installation dialog.

DaVinci Resolve appears to be using an old version of Gnome toolkit (GTK, https://www.gtk.org ). While this isn’t a big deal per se, this indicates to me that Linux might not be a first class platform for DaVinci Resolve.

In any event, I went through several more installation dialogs. When finished all the DaVinci Resolve tools were placed into their own sub menu within the main menu.

So all the DaVinci Resolve tools installed. Now let’s see what happens when we start up the main application, DaVinci Resolve.

And that’s as far as we’re going to get on my little computer. I expected as much. The CPU on  my small machine is an AMD Ryzen 5 PRO 2500U w/ Radeon Vega Mobile Gfx. In other words it’s a mobile processor in a desktop environment. For everything else I do this setup is more than adequate. I knew, however, I was courting failure trying to get DaVinci Resolve for Linux to run on my platform. I am not disappointed.

I did, however, install the same beta for the Mac on my 13″ M1 (8 CPU, 8 GPU) MacBook Pro 17,1. It installed and then started up just fine. It knew all about the M1’s GPUs and accepted them without any issues.

Would I recommend DaVinci Resolve for Linux? Technically, perhaps. Artistically and for video production, I have no idea how good it would be. If you are intent on doing video production under Linux, and if you want to use DaVinci Resolve, then make sure the hardware platform is recognized by the software.

a bit of esp32-s3 c++ code

I recently purchased an inexpensive ESP32-S3-DevKitC-1-N32R8 development board. That’s an ESP32-S3 board with an ESP32-S3-WROOM-2, 32MB of FLASH and 8MB of SPIRAM. In one particular experiment I wanted to work with the ESP-IDF libraries for accessing the FLASH and SPIRAM. So far those attempts have failed in spite of trying to follow the demo code provided in the ESP-IDF. I’m currently using version 4.4.2 of ESP-IDF.

What I have done is create a project that allows me to get something running, then add features to a working project. This is the baseline project I’ve created, yet another RGB LED flasher. This one is written in C++ and uses C++ tuples to create a collection (vector) of colors to display on the RGB LED. I wanted something similar to what I do in MicroPython, where I create a Python collection and simply iterate over the collection of colors (see line 44). In the past when trying something similar in standard C I always had to know the size of my array/vector. With C++14, I can simply define my vector of colors, and then use the C++’s for-each construct to iterate over the vector of color tuples.

Finally, I should note that the RGB LED is on GPIO38. I used idf.py menuconfig to set the GPIO pen.

#include <vector>#include <tuple>#include "freertos/FreeRTOS.h"#include "freertos/task.h"#include "driver/gpio.h"#include "esp_log.h"#include "led_strip.h"#include "sdkconfig.h"static const char *TAG = "ESP32-S3-N32R8 Work Example";static const uint8_t BLINK_GPIO = CONFIG_BLINK_GPIO;static led_strip_t *pStrip_a;typedef std::tuple<int, int, int, int> led_color;static const std::vector <led_color> colors {{0,32,0,0},  // red{0,0,32,0},  // green{0,0,0,32},  // blue{0,0,32,32}, // cyan{0,32,0,32}, // magenta{0,32,16,0}, // yellow{0,0,0,0}// black};static void cycle_rgb_led_colors(void) {for(auto c : colors) {pStrip_a->set_pixel(pStrip_a,std::get<0>(c), std::get<1>(c), std::get<2>(c), std::get<3>(c));pStrip_a->refresh(pStrip_a, 100);vTaskDelay(900 / portTICK_PERIOD_MS);// Turn RGB LED off by clearing all its individual LEDs.//pStrip_a->clear(pStrip_a, 50);vTaskDelay(100 / portTICK_PERIOD_MS);}}static void configure_rgb_led(void) {// LED strip initialization with the GPIO and pixels number.pStrip_a = led_strip_init(CONFIG_BLINK_LED_RMT_CHANNEL, BLINK_GPIO, 1);// Clear all LEDs in RGB LED to turn it off.pStrip_a->clear(pStrip_a, 50);}extern "C" void app_main(void) {configure_rgb_led();ESP_LOGI(TAG, "Cycle RGB LED Colours.");while (true) {cycle_rgb_led_colors();}}