Follow-up: CoT extraction from RTSP stream (libpdraw build issues)

Hi everyone,

I am opening this new topic to continue the discussion from our previous thread, which was automatically closed due to inactivity: [Link to original topic: COT extraction from RTSP stream]

Context: Our goal is to extract telemetry metadata (Protobuf/vmeta) from an RTSP stream (sourced from SkyController UKR) for integration with ATAK (CoT). As previously discussed with Remi, we are targeting a NanoPi environment. Remi suggested using pdraw_coded_video_sink to extract Protobuf metadata without the CPU overhead of full video decoding.

The Problem: We are currently unable to move forward because we cannot compile libpdraw within the Alchemy build system. When scanning our workspace, Alchemy automatically disables libpdraw due to missing dependencies.

During our build process, we receive the following error logs:

Disabling libpdraw: has unknown dependency eigen

Disabling libpdraw: has unknown dependency libaac

Disabling libpdraw: has unknown dependency libaudio-decode

/home/user/parrot-sdk/alchemy/classes/rules.mk:11: Unknown module libphoto-metadata-defs
/home/user/parrot-sdk/alchemy/classes/rules.mk:11: Unknown module protobuf-c`

It appears our Linux-native target environment is missing the core modules required by libpdraw (protobuf-c, eigen, etc.).

Our request:

  1. Could someone provide guidance on how to properly resolve these missing dependencies within the Parrot SDK/Alchemy environment?
  2. Are there specific configuration steps we are missing to ensure Alchemy recognizes these modules?
  3. Since we are using a NanoPi, is there a recommended way to build a “minimal” version of libpdraw that only focuses on the coded video sink extraction?

We have attempted to reach out via private messages to follow up on this, but unfortunately, we haven’t received a response. We would greatly appreciate any technical insight from the community or the Parrot team to help us resolve these dependency conflicts.

Thank you in advance for your time and assistance.

Best regards,
Jindrich

Hello,

  1. libpdraw needs those modules,
    You can find them here: Parrot-Developers repositories · GitHub
    Or follow the installation procedure here: Installation - 8.4.0
  2. If you follow the installation procedure, it is already configured
  3. You can apply this patch in packages/pdraw: raw_vsink_forum.patch (48.9 KB)
    And look at the pdraw-vsink-test (./build.sh -p groundsdk-linux -A pdraw-vsink-test -j)
    This tool extracts the battery level from the metadata of a stream or local video,
    the option --no-decode allows to do it without decoding the frames

Hi Remy,
Thank you for your guidance on using libpdraw and the pdraw_coded_video_sink approach for metadata extraction. I have been investigating this path, but I am facing significant hurdles regarding the build environment.
To provide some context, I am working on a setup using a NanoPi (ARM) and a development machine running Ubuntu (x86_64). While I understand that the Alchemy build system is the standard way to compile Parrot projects, setting up the full environment with all its dependencies has proven to be extremely complex for my current setup, leading to various path and configuration issues.
I would like to clarify my options moving forward:

Full build approach: I am currently exploring the possibility of using an official Docker build container to cross-compile for my target (ARM64/ARMv7) to avoid local dependency issues.

Simplified alternative: I wanted to ask if there is any possibility of obtaining a pre-compiled version of the libpdraw library (or a minimal static build), which would allow me to implement a simple C++ parser for the Protobuf metadata without needing to initialize the entire Alchemy workspace?

Given that I primarily need to extract the GPS metadata (Protobuf) from the RTSP stream, is there a recommended “lightweight” way to achieve this, or is libpdraw the only viable solution?
Thank you for your time and for the support you provide to the community.
Best regards
Jindrich

Dear Jindrich, Parrot and Remy,
Just to let you know that you are not alone with the desire to get UKR into ATAK environment. We are also most interested in a simple solution to get UKR data into ATAK using the CoT protocol.
Is translating MAVLINK into CoT an option without taking the SkyController out of the equation? Can the MAVLINK data/protocols be accessed from an active SkyController (we want to continue piloting with the controller…)
BR