Overview#

The GroundSDK Tools are currently composed mainly of PDrAW.

PDrAW (pronounced like the name “Pedro”) is a video player for medias created by Parrot drones such as Anafi or Anafi Ai. The player supports both streamed (RTP/RTSP) and recorded (MP4) videos.

PDrAW is the main video pipeline implementation of GroundSDK. We are using it in our FreeFlight6 and FreeFlight7 applications, both on iOS and Android. It is also usable on desktop platforms.

Supported platforms#

  • Linux PC

  • macOS

  • Android (5.0 minimum) (note: for sample code, see GroundSDK Android)

  • iOS (8.0 minimum) (note: for sample code, see GroundSDK iOS)

Features#

Demuxing:

  • Record demuxer

    • Playback of local replays

    • MP4 file format (ISO/IEC 14496-12, ISO Base Media File Format / ISO/IEC 14496-14, MP4 File Format)

    • Multi-track support on the video with user selection

  • Stream demuxer

    • Live video and streamed replays playback

    • RTP/AVP/UDP streams (RFC 3550, RFC 3551)

    • RTP/AVP/MUX streams with SkyController remotes (using Parrot libmux)

    • Unicast only

    • RTSP 1.0 protocol (RFC 2326)

    • Multi-track support on the video in RTSP with user selection

  • Playback control

    • Play/pause

    • Seeking (except for live streams)

    • Playback speed control (except for live streams)

    • Negative speeds for playing backward (except for live streams)

    • Frame-by-frame forward and backward on local replays (MP4 records)

  • Support of Parrot session and frame metadata (see libvideo-metadata)

Decoding:

  • H.264 video decoding (ITU-T H.264 / ISO/IEC 14496-10), baseline, main and high profiles

  • H.265 video decoding (ITU-T H.265 / ISO/IEC 23008-2), main and main 10 profiles

  • Frame output API for application-side processing on the video (either H.264/H.265 frames before decoding or YUV frames after decoding)

Rendering:

  • OpenGL ES 2.0 video rendering

  • Imaging features

    • Overexposure zebras

    • RGB and luminance histograms computation

  • User rendering callback functions

    • Custom texture loading with provided video metadata

    • Video overlay with provided video metadata

  • HMD distortion correction

    • Support for Parrot Cockpitglasses 1 & 2

    • Device settings for screen pixel density and mechanical margins

    • User settings for video scale, placement and IPD

Here is a graph of PDrAW’s video pipeline:

_images/pipeline.png

PDrAW architecture#

PDrAW comes as both a library (libpdraw), a wrapper library (libpdraw-backend), and a standalone executable (pdraw).

  • libpdraw is the low level interface to the video pipeline, and requires the calling application to provide a running pomp_loop (see libpomp). This is the library used by GroundSDK Android and GroundSDK iOS.

  • libpdraw-backend is a wrapper library around libpdraw, which handles the loop creation internally. It is much easier to integrate in a third-party software, and thus is the preferred interface to use for your application.

  • The pdraw executable demonstrates most of the library features. It can be seen as both a complete player for Anafi and Anafi Ai videos (live & replay), and a sample code for libpdraw-backend usage in a SDL2 environment.

Both libraries provide C & C++ headers.

Other tools#

The GroundSDK tools also pack some other very useful tools:

  • The vmeta-extract executable can read MP4 files produced by Anafi or Anafi Ai drones, and extract the video metadata into a JSON file.

  • The libpdraw-vsink library provides an easy way to get decoded (YUV) frames, with associated metadata, from an Anafi or Anafi Ai stream or record. A sample code is provided in <SDK>/packages/pdraw/libpdraw-vsink/tests/