Advanced Adaptive Media Player

Published: September 09, 2019
Edited: December 31, 2019

What is AAMP?

AAMP (Advance Adaptive Media Player) is an application which uses gstreamer to present IP Video Streams. It supports the following features,

  • Player supporting HLS (Access) and DASH (PlayReady) streams. AAMP is a lightweight player for IP Video Playback,  
  • This player is built on top of GStreamer framework and is capable of playing Apple HLS & MPEG DASH contents over IP.
  • AAMP supports multiple DRMs such as Microsoft PlayReady, Google WideVine and HLS AES encryption.
  • AAMP supports HTML5 video tag based playback and JS bindings based playback for WPE.
  • It is capable of playing 4K Video and is supported by Soc.

AAMP Supported Platforms

AAMP Features

  • APPLE HLS and MPEG DASH streams
  • Live/VOD/cDVR streams
  • HTML5 Video tag based playback
  • Java Script Player based playback
  • Ad inserted streams 
  • HLS with Fragmented mp4 
  • HLS: Adobe Access and Vanilla AES
  • DASH: PlayReady and Widevine
Codec Support
  • 4K streaming with SVP on supported platforms
  • DD+ and ATMOS, on supported platforms
  • Variety of configuration options​ to control playback - Bitrate selection, Codec option etc.
  • Log and event support for tune/ anomaly metric

AAMP Architecture

AAMP as a Player

  • Java Script Player or application directly creates AAMP Player Instance
  • AAMP manages the GStreamer pipeline
  • Audio /Video buffers are pushed to playbin using appsrc

AAMP as a Plugin

  • Enables HTML5 based playback
  • WebKit manages the GStreamer pipeline
  • AAMPs GStreamer plugin ‘Gstaamp’ is loaded in the GStreamer pipeline
  • The ‘Gstaamp’ creates AAMP player instance
  • Audio /Video buffers are pushed to ‘Gstaamp’s srcpads

AAMP Workflow :HLS Playback

AAMP Workflow :DASH Playback

AAMP Video Application

Data flow diagram

Adaptive bitrate streaming

  1. Initial profile bandwidth configurable for 4k and non-4k content
  2. Steady state network bandwidth estimated from most recent 3 fragment downloads
  3. ABR manager supports jumping over profiles for big changes in available bandwidth
  4. For small changes in estimated bandwidth, change must hold over 3+ samples before triggering ramp up/down to avoid thrashing.

AV Synchronization (DASH)

QT demux is instantiated for audio and video fragment collectors in the pipeline. Player feeds pairs of temporally close fragments; they may or may not have the exact same start times, due to different duration cadence. QT demux takes care of time stamping for normal speed MPEG DASH playback, re-stamping PTS as it slices content into smaller segments.To support trickplay using iframe track, a patch in qt demux alters the timestamp base to achieve desired playout frame rate. GstStream Synchronizer is used to synchronize audio and video prior to passing on to audio and video sinks.  Broadcom plugins are also involved in maintaining AV sync.  In case any problems detected, they are reported back upstream through GStreamer. If PTS errors are detected in succession, player will reset/restart pipeline as a recovery mechanism.  If an audio or video fragment is missing (and not recoverable with retry/ramping down) player advances to the next fragment and user will experience brief disruption.

Debugging and Testing


  • Interactive standalone command-line application
  • Built along with AAMP
  • Used to test AAMP player
  • http urls can be entered directly to start playback


  • command-line application similar to aampcli
  • Invokes AAMP in plugin mode
  • aamp:// URLs is provided to start playback


API Documentation

 To know more about SoC/Application level APIs details use in RDK, refer the link  AAMP API Documentation

PHP Code Snippets Powered By :