PDrAW (pronounced like the name “Pedro”) is a video viewer for medias created by Parrot drones, like Anafi. The viewer 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 application, both on iOS and Android.
- Linux PC
- Android (4.2 minimum) (note: for sample code, see GroundSDK Android)
- iOS (8.0 minimum) (note: for sample code, see GroundSDK iOS)
- 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
- Playback control
- 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)
- H.264 video decoding (ITU-T H.264 / ISO/IEC 14496-10), baseline, main and high profiles
- Frame output API for application-side processing on the video (either H.264 frames before decoding or YUV frames after decoding)
- 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:
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 videos (live & replay), and a sample code for libpdraw-backend usage in a SDL2 environment.
Both libraries provide C & C++ headers.
The GroundSDK video tools also pack some other very useful tools:
- The vmeta-extract executable can read MP4 files made by an Anafi, and extract the video metadata into a CSV or JSON file.
- The libpdraw-vsink library provides an easy way to get decoded (YUV)
frames, with associated metadata, from an Anafi stream or record.
A sample code is provided in