AAMP Configuration Options
- Configuration Options as currently supported, detailed in AAMP README.txt file .
- Configuration can be manually defined via presence of /opt/aamp.cfg (for VBN builds), or applied remotely (to any build, including PROD) via Remote Feature Control (RFC).
- /opt/aamp.cfg is optional file that supports changes to default logging/behavior and channel remappings to alternate content
General Configuration Options
name | default | usage | semantics |
---|---|---|---|
info | off | info | Enable info-class logging. This includes logging of all fragments downloaded. |
gst | off | get | Enable lower-level g-streamer logging including pipeline dumps. |
progress | off | progress | Enable periodic logging of play position while streaming. |
trace | off | trace | Enable noisy trace-level logging. This includes dumps of manifests. |
curl | off | curl | Enable verbose curl logging. |
debug | off | debug | Enable “debug” class logging – unused? |
abr | on | abr | Disable ABR (profile switching). This is useful for isolating problems with specific profiles. |
default-bitrate | 2500000 | default-bitrate=<#> | Specify initial bitrate while tuning, or target bitrate while abr disabled |
default-bitrate-4k | 13000000 | default-bitrate-4k=<#> | Specify initial bitrate while tuning 4K contents, or target bitrate while abr disabled for 4K contents |
throttle | 1 | throttle=0 | Software demuxer behavior (used with HLS ts). |
flush | 1 | flush=0 | Allows pipeline to be preserved during channel changes. |
demux-hls-audio-track | 1 | demux-hls-audio-track=0 | Set to zero to use hardware demuxer. |
demux-hls-video-track | 1 | demux-hls-video-track=0 | Set to zero to use hardware demuxer. |
demux-hls-video-track-tm | 1 | demux-hls-video-track-tm=0 | Set to zero to use hardware demuxer. |
live-tune-event | 0 | live-tune-event=<#> | 0: send streamplaying when playlist acquired (default) 1: send streamplaying when first fragment decrypted 2: send streamplaying when first frame visible |
vod-tune-event | 0 | vod-tune-event=<#> | 0: send streamplaying when playlist acquired (default) 1: send streamplaying when first fragment 2: send streamplaying when first frame visible |
appSrcForProgressivePlayback | off | appSrcForProgressivePlayback | Enables appsrc for playing progressive AV type |
decoderunavailablestrict | off | decoderunavailablestrict | Reports decoder unavailable GST Warning as aamp error |
demuxed-audio-before-video | 0 | demuxed-audio-before-video=1 | send audio es before video in case of s/w demux |
forceEC3 | 0 | forceEC3=1 | inserts “-eac3” before .m3u8 in main manifest url. Useful to test Dolby track. |
disableEC3 | 0 | disableEC3=1 | removes “-eac3” before .m3u8 in main manifest url. Useful to disable Dolby track makes AAC preferred over ATMOS and DD+ |
disableATMOS | 0 | disableATMOS=1 | playback makes DD+ or AAC preferred over ATMOS (EC+3) |
live-offset | 15 | live-offset=<#> | live offset time in seconds, aamp starts live playback this much time before the live point |
cdvrlive-offset | 30 | cdvrlive-offset=<#> | live offset time in seconds for cdvr, aamp starts live playback this much time before the live point |
disablePlaylistIndexEvent | 1 | disablePlaylistIndexEvent=0 | enable generation of playlist indexed event by AAMP on tune/trickplay/seek |
enableSubscribedTags | 1 | enableSubscribedTags=0 | specifies if subscribedTags[] and timeMetadata events are enabled during HLS parsing |
map-mpd | 0 | map-mpd=1 | <domain / host to map> Remap HLS playback url to DASH url for matching domain/host string (.m3u8 to .mpd) |
dash-ignore-base-url-if-slash | off | dash-ignore-base-url-if-slash | disables dash BaseUrl value if it is / . Sample – http://assets.player.xcal.tv/super8sapcc/index.mpd |
fog-dash | 1 | fog-dash=0 | Optional “de-fogging” for DASH locators |
min-vod-cache | 0 | min-vod-cache=<#> | VOD duration to be cached before playing in seconds |
networkTimeout | 10 | networkTimeout=<#> | Specify download time out in seconds |
manifestTimeout | 10 | manifestTimeout=<#> | Specify manifest download time out in seconds |
license-anonymous-request | off | license-anonymous-request | Makes PlayReady/WideVine license requests without access token |
abr-cache-life | 5 | abr-cache-life=<#> | lifetime value for abr cache for network bandwidth calculation |
abr-cache-length | 3 | abr-cache-length=<#> | length of abr cache for network bandwidth calculation |
abr-cache-outlier | 5mb | abr-cache-outlier=<#> | Outlier difference which will be ignored from network bandwidth calculation |
abr-nw-consistency | 2 | abr-nw-consistency=<#> | Number of checks before profile incr/decr by 1.This is to avoid frequenct profile switching with network change |
abr-skip-duration | 6s | abr-skip-duration=<#> | minimum duration of fragment to be downloaded before triggering abr |
buffer-health-monitor-delay | 10 | buffer-health-monitor-delay=<#> | Override for buffer health monitor start delay after tune/ seek |
buffer-health-monitor-interval | 5 | buffer-health-monitor-interval=<#> | Override for buffer health monitor interval |
hls-av-sync-use-start-time | off | hls-av-sync-use-start-time=1 | Use EXT-X-PROGRAM-DATE to synchronize audio and video playlists |
playlists-parallel-fetch | off | playlists-parallel-fetch=1 | Fetch audio and video playlists in parallel. Disabled in default configuration |
pre-fetch-iframe-playlist | off | pre-fetch-iframe-playlist=1 | Disable iframe playlist pre-fetch for VOD |
license-server-url | n/a | license-server-url=<serverUrl> | URL to be used for license requests for encrypted(PR/WV) assets |
ck-license-server-url | n/a | ck-license-server-url=<serverUrl> | URL to be used for Clear Key license requests |
license-retry-wait-time | 500 | license-retry-wait-time=<#> | Wait time (ms) before retrying again for DRM license, having value <=0 would disable retry |
vod-trickplay-fps | 4 | vod-trickplay-fps=<#> | Specify the framerate for VOD trickplay |
linear-trickplay-fps | 8 | linear-trickplay-fps=<#> | Specify the framerate for Linear trickplay |
http-proxy | off | http-proxy=<scheme> | <SCHEME>://<HTTP PROXY IP:HTTP PROXY PORT> Specify the HTTP Proxy with schemes such as http, sock, https <USERNAME:PASSWORD>@<HTTP PROXY IP:HTTP PROXY PORT> Specify the HTTP Proxy with Proxy Authentication Credentials. Make sure to encode special characters if present in username or password (URL Encoding) |
mpd-discontinuity-handling | 1 | mpd-discontinuity-handling=0 | Disable discontinuity handling during MPD period transition |
mpd-discontinuity-handling-cdvr | 1 | mpd-discontinuity-handling-cdvr=0 | Disable discontinuity handling during MPD period transition for cDvr |
force-http | 0 | force-http=1 | Allow forcing of HTTP protocol for HTTPS URLs |
internal-retune | 1 | internal-retune=0 | Disable internal reTune logic on underflows/ pts errors |
re-tune-on-buffering-timeout | 1 | re-tune-on-buffering-timeout=0 | Disable internal re-tune on buffering time-out |
gst-buffering-before-play | 1 | gst-buffering-before-play=0 | Disable pre buffering logic which ensures minimum buffering is done before pipeline play |
audioLatencyLogging | off | audioLatencyLogging | Enable Latency logging for Audio fragment downloads |
videoLatencyLogging | off | videoLatencyLogging | Enable Latency logging for Video fragment downloads |
iframeLatencyLogging | off | iframeLatencyLogging | Enable Latency logging for Video fragment downloads |
iframeLatencyLogging | off | iframeLatencyLogging | Enable Latency logging for Iframe fragment downloads |
pts-error-threshold | 4 | pts-error-threshold=<#> | aamp maximum number of back-to-back pts errors to be considered for triggering a retune |
fragment-cache-length | 3 | fragment-cache-length=<#> | aamp fragment cache length |
iframe-default-bitrate | 0 | iframe-default-bitrate=<#> | specify bitrate threshold for selection of iframe track in non-4K assets (less than or equal to X) |
iframe-default-bitrate-4k | 0 | iframe-default-bitrate-4k=<#> | specify bitrate threshold for selection of iframe track in 4K assets (less than or equal to X) |
curl-stall-timeout | 0 | curl-stall-timeout=<#> | specify the value in seconds for a CURL download to be deemed as stalled after download freezes, 0 to disable |
curl-download-start-timeout | 0 | curl-download-start-timeout=<#> | specify the value in seconds for after which a CURL download is aborted if no data is received after connect, 0 to disable |
playready-output-protection | 0 | playready-output-protection=1 | enable HDCP output protection for DASH-PlayReady playback |
max-playlist-cache | 3MB | max-playlist-cache=<#> | Max Size of Cache to store the VOD Manifest/playlist |
wait-time-before-retry-http-5xx-ms | 1s | wait-time-before-retry-http-5xx-ms=<#> | wait time before retry for 5xx http errors |
sslverifypeer | off | sslverifypeer=1 | Enable TLS certificate verification |
subtitle-language | en | subtitle-language=<#> | ISO 639-1 code of preferred subtitle language |
enable_videoend_event | 1 | enable_videoend_event=0 | Disable Video End event generation |
dash-max-drm-sessions | 2 | dash-max-drm-sessions=<#> | Max drm sessions that can be cached by AampDRMSessionManager. Expected value range is 2 to 30 |
enable_setvideorectangle | off | enable_setvideorectangle | Enable AAMP to set rectangle property to sink |
discontinuity-timeout | 3000 | discontinuity-timeout=<#> | Value in MS after which AAMP will try recovery for discontinuity stall after detecting empty buffer 0 disables feature |
aamp-abr-threshold-size | 25000 | aamp-abr-threshold-size=<#> | Specify min fragment size threshold for ABR estimation contribution |
harvestpath | off | harvestpath=<#> | Specify the path where fragments should be harvested,check folder permissions specifying the path |
descriptiveaudiotrack | off | descriptiveaudiotrack | if present, audio tracks will be advertised and selected using syntax <langcode>-<role> instead of just <langcode> |
langcodepref | 0 | langcodepref=<#> | 0: NO_LANGCODE_PREFERENCE (pass through language codes from manifest – default) 1: ISO639_PREFER_3_CHAR_BIBLIOGRAPHIC_LANGCODE language codes normalized to 3-character iso639-2 bibliographic encoding(i.e. “ger”) 2: ISO639_PREFER_3_CHAR_TERMINOLOGY_LANGCODE langguage codes normalized to 3-character iso639-2 terminology encoding (i.e. “deu”) 3: ISO639_PREFER_2_CHAR_LANGCODE language codes normalized to 2-character iso639-1 encoding (i.e. “de”) |
reportbufferevent | 1 | reportbufferevent=0 | Optionally disable reporting buffer event for buffer underflow |
enable-tune-profiling | 0 | enable-tune-profiling=1 | Enable “MicroEvent” tune profiling using – both in splunk (for receiver-integrated aamp) and via console logging. |
Channel Override Feature
- Example adding the following in aamp.cfg will make tune to the given url (Spring_4Ktest) on tuning to url with USAHD in it
- This can be done for n number of channels.
Remote Feature Control (RFC) List
Name | Description |
---|---|
TUNE_MICRO_EVENTS | Generate "MicroEvents" profiling for initiated tunes |
AAMP_WESTEROS_SINK | Enable use of Westerossink |
DISABLE_NONCOMPOSITED_WEBGL_FOR_IPVIDEO | Combine with AAMP_WESTEROS_SINK as workaround in RDK3.14 to allow easter-egg triggered diagnostics feature to again work. |
Tr181 Parameter List
Name | Description |
---|---|
tr181.Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.AAMP_CFG.DashPlaybackExclusions | For enabling dash using URL conversion by JSP : Value = VOD:LINEAR_TV:CDVR:IVOD |
tr181.Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.AAMP_CFG.b64Config | For bulk setting one or more aamp config parameters : Value = Base64 encoded aamp.cfg file content |
Westerossink Notes
- Currently, use of Westeros is default-disabled, and can be enabled via RFC as described above. Alternately, to apply, Developers can add below flag in SetEnv.sh under /opt, then restart the receiver process:
- export AAMP_ENABLE_WESTEROS_SINK=true
- Note: Above is now used as a common FLAG by AAMP and Receiver module to configure Westeros direct rendering instead of going through browser rendering. This allows for smoother video zoom animations
- However, note that with this optimization applied, the AAMP Diagnostics overlays cannot be made visible.
- As a temporary workaround, the following flag can be used by developers which will make diagnostic overlay again visible at expense of zoom smoothness:
- export DISABLE_NONCOMPOSITED_WEBGL_FOR_IPVIDEO=1