AAMP VCR-Style Trickplay using i-frame Track

Created on June 21, 2022


I-frame trick play support

  • AAMP supports fast forward/ rewind at multiple rates if asset has an I-frame track. Target frame rate is determined by configuration variables vodTrickplayFPS (VOD – defaults to 4fps) and linearTrickplayFPS ( linear IPTV channels – defaults to 8fps).
  • Video decoder decodes and presents the I-frames at normal speed. Desired rate is achieved by PTS re-stamping of elementary stream buffers before sending to the decoder, skipping more iframes at higher speeds.
  • If multiple iframe tracks are available, AAMP will only use one. This is configurable. By default, AAMP picks 2nd lowest iframe track as compromise between maintaining desired framerate while doing ff/rew and providing “good enough” quality.

HLS (MPEG-TS fragments)

  • MPEG-TS fragments are demuxed by AAMP before injected into the gstreamer pipeline. So PTS re-stamping of elementary stream is done in AAMP itself.

DASH (ISO-BMFF fragments)

  • For DASH streams, AAMP downloads and injects fragments to gstreamer pipeline. Demuxing is done by opensource qtdemux gstreamer plugin. To achieve PTS re-stamping to achieve desired rate, AAMP has added custom patches to qtdemux gstreamer plugin. These patches support custom events from AAMP. After receiving aamp_override event, qtdemux re-stamps PTS of ES packets based on the rate received from the event and using first buffer’s PTS as base PTS. In case of a period transition, aamp-tm-disc event is sent by AAMP. On receiving this event, qtdemux re-calculate the PTS to be re-stamped based on last PTS used and FPS value received from the event to ensure smooth playback of period boundaries.

Go To Top