Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


RFC Settings for AAMP player

RFC  can be done by two methods : 

a) Bulk Configuration setting - All the configs under AampConfig structure can be controlled using bulk Config settings . 

Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.AAMP_CFG.b64Config=<b64 string >
Example : Following configs to be set
info
defaultBitrate=300000
networkTimeout=8000

Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.AAMP_CFG.b64Config=aW5mbwpkZWZhdWx0Qml0cmF0ZT0zMDAwMDAKbmV0d29ya1RpbWVvdXQ9ODAwMAo=

b) Independent RFC Setting - Only Selected configurations can be controlled using independent RFC .


A Small set of configs added today . Need to add more into this independent configuration

For Configuration defaultBitrate , following RFC setting to be modified

Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.aamp.defaultBitrate=300000

Steps to add individual RFC configuration
b1. Set the config structure variable for RFC as true

 {"defaultBitrate",eAAMPConfig_DefaultBitrate,true,{.lMinValue=-1},{.lMaxValue=-1}},

b2. Add the configuration name to datamodel xml file in tr69 host interface . Example given below 
https://gerrit.teamccp.com/#/c/703860/

CONFIGURATION

Configuration options are passed to AAMP using the UVE initConfig method. This allows the application override default configuration used by AAMP player to give more control over player behavior. Parameter is a JSON Object with one or more attribute/value pairs as follows:

Two set of configuration table listed below . A small subset which is published in AAMP documentation . Second table list remaining huge set of configurations player support for development 

Configuration Published in AAMP-UVE-API.md

SlnoPropertyTypeDefault ValueIndependent RFC Supportaamp.cfg settingDescription
1asyncTuneBooleanTRUEYes
Optional field to enable asynchronous player API processing. Application / UI caller threads returned immediately without any processing delays.
2authTokenString-No
Optional field to set AuthService token for license acquisition(version 2.7)
3bulkTimedMetadataBooleanFALSENo
Send timed metadata using single stringified JSON array instead of individual events available starting with version 0.8
4defaultBitrateNumber2500000Yes
max initial bitrate (bps). 
5defaultBitrate4KNumber13000000Yes
max initial bitrate for 4k video playback (bps)
6descriptiveTrackNameBooleanFALSENo
Use descriptive audio track naming format which is a combination of - (version 2.6)
7disable4KBooleanFALSENo
Optional field to disable 4K profile playback and restrict only to non-4k video profiles
8disableAC3BooleanFALSEYes
Optional field to disable selection of AC3 audio track
9disableAC4BooleanFALSEYes
Optional field to disable selection of AC4 audio track
10disableATMOSBooleanFALSEYes
Optional field to disable selection of ATMOS audio track
11disableEC3BooleanFALSEYes
Optional field to disable selection of EC3/AC3 audio track
12downloadBufferNumber4No
max amount of time to download ahead of playhead (fragments). Example: With a downloadBuffer of 4 (default) there will be 4 fragments (typically 2s each) of video or audio harvested and buffered in advance, in additional to internal playback buffering
13downloadStallTimeoutNumber-No
Optional optimization - Allow fast-failure for class of curl-detectable mid-download stalls (in seconds)
14downloadStartTimeoutNumber-No
Optional optimization - Allow fast-failure for class of curl-detectable stall at start of download (in seconds)
15drmDecryptFailThresholdNumber10No
Maximum number of fragment decrypt failures before reporting playback error (version 1.0)
16enableSeekableRangeBooleanFALSENo
Optional field to enable reporting of seekable range for linear scrubbing
17fragmentDownloadFailThresholdNumber10No
Maximum number of fragment download failures before reporting playback error
18initFragmentRetryCountNumber1No
Maximum number of retries for MP4 header fragment download failures (version 2.4)
19initialBitrateNumber2500000No
max initial bitrate (bps). 
20initialBitrate4KNumber13000000No
max initial bitrate for 4k video playback (bps)
21initialBufferNumber-No
Optional pre-tune buffering (in seconds) before playback start (version 2.4)
22langCodePreferenceNumber0No
Set the preferred format for language codes in other events/APIs (version 2.6) NO_LANGCODE_PREFERENCE = 0, 3_CHAR_BIBLIOGRAPHIC_LANGCODE = 1, 3_CHAR_TERMINOLOGY_LANGCODE = 2, 2_CHAR_LANGCODE = 3
23licenseProxyString-No
Network proxy to use for license requests (Format same as network proxy)
24limitResolutionBooleanFALSENo
Optional field to set maximum video profile resolution based on TV display resolution setting . Default Off.
25liveOffsetNumber15Yes
Allows override the default/stream-defined distance from a live point for live stream playback (in seconds)
26liveOffset4KNumber15Yes
Allows override the default/stream-defined distance from a live point for 4K live stream playback (in seconds)
27livePauseBehaviorNumber0No
Optional field to configure player live pause behavior on linear streams when live window touches eldest position. Options: 0 – Autoplay immediate; 1 – Live immediate; 2 – Autoplay defer; 3 – Live defer; Default – Autoplay immediate
28manifestTimeoutNumber10Yes
Manifest download timeout; overrides networkTimeout if both present; available starting with version 0.8 . Applied to Main manifest in HLS and DASH manifest download. (in seconds)
29maxBitrateNumber-Yes
Optional profile clamping (in bps)
30maxInitFragCachePerTrackNumber5Yes
Number of init header file cached per player instance per track type. Use cached data instead of network re-download
31maxPlaylistCacheSizeNumber0No
Optional field to configure maximum cache size in Kbytes to store different profile HLS VOD playlist
32minBitrateNumber-Yes
Optional profile clamping (in bps)
33nativeCCRenderingBooleanFALSENo
Use native ClosedCaption support in AAMP (version 2.6)
34networkProxyString-No
Network proxy to use (Format ://)
35networkTimeoutNumber10Yes
network request timeout for fragment/playlist/manifest downloads (in seconds)
36offsetNumber0No
start position offset in seconds(same as seek() method)
37parallelPlaylistDownloadBooleanTRUENo
Optional optimization – download audio and video playlists in parallel for HLS; available starting with version 0.8
38parallelPlaylistRefreshBooleanTRUENo
Optionally disable audio video playlist parallel download for linear (only for HLS)
39persistBitrateOverSeekBooleanFALSEYes
To enable AAMP persisting video profile during Seek/Trickplay/Audio switching operation
40persistHighNetworkBandwidthBooleanFALSENo
Optional field to Enable/Disable persisting High Network Bandwidth to next tune . This will override initialBitrate settings 
41persistLowNetworkBandwidthBooleanTRUENo
Optional field to Enable/Disable persisting Low Network Bandwidth to next tune . This will override initialBitrate settings 
42playlistTimeoutNumber10Yes
HLS playlist download timeout; overrides networkTimeout if both present; available starting with version 1.0 (in seconds)
43preCachePlaylistTimeNumber-No
Optionally enable PreCaching of Playlist and TimeWindow for Cache(minutes) ( version 1.0)
44preferredAudioCodecString
No
Optional field to set preferred Audio Codec. Comma-delimited list of formats, where each format specifies a media sample type that is present in one or more Renditions specified by the Variant Stream. Example: mp4a.40.2, avc1.4d401e
45preferredAudioLanguageStringenNo
ISO-639 audio language preference; for more than one language, provide comma delimited list from highest to lowest priority: ‘,<...>,’
46preferredAudioRenditionString
No
Optional field to set preferred Audio rendition setting DASH : caption,subtitle, main; HLS : GROUP-ID
47preferredSubtitleLanguageStringenNo
ISO-639 language code used with VTT OOB captions
48progressReportingIntervalNumber1No
Optionally change Progress Report Interval (in seconds)
49propagateUriParametersBooleanTRUENo
Optional field to disable propagating URI parameters from Main manifest to segment downloads
50reportVideoPTSBooleanFALSENo
Optional field to enable Video PTS reporting along with progressReport (version 3.0)
51setLicenseCachingBooleanTRUENo
Optional field to disable License Caching in player . By default 3 DRM Sessions are Cached .
52sharedSSLBooleanTRUENo
Optional field to disable sharing SSL context for all download sessions, across manifest, playlist and segments .
53sslVerifyPeerBooleanTRUENo
Optional field to enable/disable SSL peer verification .Default enabled
54stereoOnlyBooleanFALSEYes
Optional forcing of playback to only select stereo audio track available starting with version 0.8
55supportTLSNumber6Yes
Default set to CURL_SSLVERSION_TLSv1_2 (value of 6 , uses CURLOPT_SSLVERSION values)
56timeShiftBufferLengthNumber-No
(not supported, for future)
57tsbInterruptHandlingBooleanFALSEYes
Optional field to enable support for Network interruption handling with TSB. Network failures will be ignored and TSB will continue building
58useAbsoluteTimelineBooleanFALSENo
Optional field to enable progress reporting based on Availability Start Time of the stream (DASH Only)
59useAverageBandwidthBooleanFALSENo
Optional Average bandwidth for ABR switching ( version 1.0)
60useMatchingBaseUrlBooleanFALSENo
use DASH main manifest hostname to select from multiple base URLs in DASH (when present). By default, will always choose first (version 2.4)
61useRetuneForGstInternalErrorBooleanTRUENo
Optional Gstreamer error retune config ( version 2.7)
62useRetuneForUnpairedDiscontinuityBooleanTRUENo
Optional unpaired discontinuity retune config ( version 1.0)
63useSecManagerBooleanTRUEYes
Optional field to enable /disable the usage of SecManager for Watermarking functionality

setDRMConfig( config )

DRM configuration options are passed to AAMP using the setDRMConfig method. Parameter is JSON object with pairs of protectionScheme: licenseServerUrl pairs, along with preferredKeySystem specifying a preferred protectionScheme.

PropertyTypeDescription
com.microsoft.playreadyStringLicense server endpoint to use with PlayReady DRM. Example: http://test.playready.microsoft.com/service/rightsmanager.asmx
com.widevine.alphaStringLicense server endpoint to use with Widevine DRM. Example: https://widevine-proxy.appspot.com/proxy
preferredKeysystemStringUsed to disambiguate which DRM type to use, when manifest advertises multiple supported DRM systems. Example: com.widevine.alpha
customLicenseDataStringOptional field to provide Custom data for license request

Configurations which are not published in UVE Documentation ( For Dev Purpose only)

SlNoPropertyTypeDefault ValueIndependent RFC Supportaamp.cfg settingDescription
1abrBooleanTRUENoabr=0Enable/Disable ABR in player
2abrChunkThresholdSize




3allowPageHeaders




4appSrcForProgressivePlaybackBooleanFALSENoappSrcForProgressivePlayback=1Enables appsrc for playing progressive AV type streams
5audioOnlyPlaybackBooleanFALSENoaudioOnlyPlayback=1Support Audio only Playback from the stream
6cdnAdsOnlyBooleanFALSENocdnAdsOnly=1Enable/Disable picking Ads from CDN directly instead from Fog . Used for dev testing.
7ceaFormat




8changeTrackWithoutRetune




9ckLicenseServerUrl




10client-daiBooleanFALSEYesclient-dai=1Enable/Disable Client-DAI
11configRuntimeDRM




12contentProtectionDataUpdateTimeout



13curlBooleanFALSENocurl=1Enable/Disable verbose mode in curl downloads 
14curlHeaderBooleanFALSENocurlHeader=1Enable/Disable curl header response logging on curl errors
15curlLicenseBooleanFALSENocurlLicense=1Enable/Disable Verbose logging of license fetch curl request done by player
16curlStore




17customHeaderLicense




18dashIgnoreBaseUrlIfSlashBooleanFALSENodashIgnoreBaseUrlIfSlash=1Ignore the base URI of DASH if only "/" present
19debugBooleanFALSENodebug=1Enable/Disable debug level logging in the player
20decoderUnavailableStrictBooleanFALSENodecoderUnavailableStrict=1Reports decoder unavailable GST Warning as player error
21demuxAudioBeforeVideoBooleanFALSENodemuxAudioBeforeVideo=1Enable Demuxing Audio before Audio track 
22demuxHlsAudioTrackBooleanTRUENodemuxHlsAudioTrack=0Demux Audio track from HLS transport stream
23demuxHlsVideoTrackBooleanTRUENodemuxHlsVideoTrack=0Demux Video track from HLS transport stream
24demuxHlsVideoTrackTrickModeBooleanTRUENodemuxHlsVideoTrackTrickMode=0Demux Video track from HLS transport stream during TrickMode
25disableLowLatencyABR




26disablePlaylistIndexEventBooleanTRUENodisablePlaylistIndexEvent=0Disables generation of playlist indexed event by AAMP on tune/trickplay/seek
27disableUnderflow




28downloadBufferChunks




29downloadDelay




30enableAccessAttributes




31enableCMCDBooleanTRUEYes

32enableDisconnectSignalsBoolean



33enableEOSInjectionDuringStopBoolean



34enableEosSmallFragment




35enableFogConfig




36enableLowLatencyCorrectionBooleanTRUEYes

37enableLowLatencyDash




38enableLowLatencyOffsetMin



39enablePublishingMuxedAudio



40enableSCTE35PresentationTimeBoolean



41enableSlowMotionBooleanTRUEYes

42enableSubscribedTagsBooleanTRUENoenableSubscribedTags=0Enable parsing and reporting event for Enable subscribed tags
43enableVideoEndEventBooleanTRUEYesenableVideoEndEvent=0Enable/Disable Video End event generation at the end of playback
44enableVideoRectangleBooleanTRUENoenableVideoRectangle=0Enable/Disable Setting of rectangle property for sink element. If westeros is enabled , this config will be turned off .
45failoverBooleanFALSENofailover=1Enable/Disable failover tag and manifest detail logging 
46fogBooleanTRUENofog=0Enable/Disable Fog support in player
47fogMaxConcurrentDownloads



48forceEC3BooleanFALSENoforceEC3=1Forcefully enable DDPlus ( replace ".m3u8" with "-eac3.m3u8" to access comcast eac3 stream)
49forceHttpBooleanFALSENoforceHttp=1Allow forcing of HTTP protocol instead of HTTPS URLs 
50fragmentRetryLimit




51gstBooleanFALSENogst=1Enable/Disable player gstreamer debug logging in the player
52gstAudioBufBytes




53gstBufferAndPlayBooleanTRUENogstBufferAndPlay=0Pre-buffering which ensures minimum buffering is done before pipeline play
54gstSubtecEnabled




55gstVideoBufBytes




56hlsAVTrackSyncUsingPDTBooleanFALSENohlsAVTrackSyncUsingPDT=1Use EXT-X-PROGRAM-DATE to synchronize audio and video playlists.
57id3BooleanFALSENoid3=1Enable/Disable ID3 debug logging
58ignoreAppLiveOffsetBooleanFALSENoignoreAppLiveOffset=1Config to ignore liveOffset setting from Application, to use live latency from LLD stream . Used for LLD demo
59infoBooleanFALSEYesinfo=1Enable/Disable info level logging in the player
60initRampdownLimit




61internalRetuneBooleanTRUENointernalRetune=0Internal reTune logic on underflows/ pts errors
62jsinfoBooleanFALSENojsinfo=1Enable JS media player interface logs . 
63keepLastFrameDaiBooleanFALSENokeepLastFrameDai=1Use keepLastFrame when swapping players for Ads, when multiPipelineDai is enabled
64latencyMonitorDelay




65latencyMonitorInterval




66licenseAnonymousRequestBooleanFALSENolicenseAnonymousRequest=1Acquire license without accessToken field  ( mainly with PlayReady DRM)
67licenseServerUrl




68log




69logMetadataBooleanFALSENologMetadata=1Enable/Disable timed metadata logging
70lowLatencyMaxValue




71lowLatencyMinValue




72lowLatencyTargetValue




73maxABRBufferRampup




74maxCurlStore




75maxTimeoutForSourceSetup



76multiPipelineDaiBooleanFALSENomultiPipelineDai=1Enable a gstreamer pipeline per player to remove brief black screens on switching
77playbackBuffer




78playreadyOutputProtectionBooleanFALSENoplayreadyOutputProtection=1Enable/Disable HDCP output protection for DASH-PlayReady playback
79preferredAudioLabel




80preferredAudioType




81preferredTextLabel




82preferredTextLanguage




83preferredTextRendition




84preferredTextType




85preFetchIframePlaylistBooleanFALSENopreFetchIframePlaylist=1Enable prefetching of I-Frame playlist
86preservePipelineBooleanFALSENopreservePipeline=1Flush pipeline instead of teardown
87prLicenseServerUrl




88progressBooleanFALSENoprogress=1Enable/Disable progress reporting from the player . Logs every 4th progress report event . 
89removeAVEDRMPersistent




90repairIframes




91reportBufferEventBooleanTRUENoreportBufferEvent=0Enables Buffer event reporting
92reportVideoPTSBooleanFALSENoreportVideoPTS=1Enable/Disable video pts reporting in progress events
93retuneOnBufferingTimeoutBooleanTRUENoretuneOnBufferingTimeout=0Enable/Disable internal re-tune on buffering timeout
94seekMidFragment




95segmentInjectFailThreshold




96seiTimeCode




97SkyStoreDE




98stallErrorCode




99stallTimeout




100streamBooleanFALSENostream=1Enable/Disable HLS playlist dump while doing playlist parsing . 
101subtecSubtitle




102suppressDecode




103syncAudioFragments




104thresholdSizeABR




105throttleBooleanFALSENothrottle=1Regulate output data flow,used with restamping
106traceBooleanFALSENotrace=1Enable/Disable trace level logging in the player
107warnBooleanTRUENowarn=0Enable/Disable warn level logging in the player
108webVttNative




109wifiCurlHeader




110wvLicenseServerUrl




111xreSupportedTune
  • 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

...

live-tune-event=<#>

...

0: send streamplaying when playlist acquired (default)

1: send streamplaying when first fragment decrypted

2: send streamplaying when first frame visible

...

0: send streamplaying when playlist acquired (default)

1: send streamplaying when first fragment 

2: send streamplaying when first frame visible

...

removes "-eac3" before .m3u8 in main manifest url. Useful to disable Dolby track

makes AAC preferred over ATMOS and DD+

...

<domain / host to map> Remap HLS playback url to DASH url for matching domain/host string (.m3u8 to .mpd)

...

10

...

500

...

<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)

...

specify the value in seconds for after which a CURL download is aborted if no data is received after connect, 0 to disable

...

Value in MS after which AAMP will try recovery for discontinuity stall after detecting empty buffer

0 disables feature

...

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")

...






Channel Override Feature

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