IPTV Triage Guidelines
This document is intended to support QA & Field triage teams to do initial analysis for the failures.
Logging of Interest
Logging String | Description |
systemId is Widevine | Widevine content protection identified from PSSH |
systemId is PLAYREADY | Playready content protection identified from PSSH |
initAampDRMSystem :: enter | Init/create open cdm system |
generateAampDRMSession :: enter | Open cdm session creation called |
Setting Widevine as preferred drm | Preferred DRM Set to Widevine |
MDS server spcific conent metadata found in initdata | Valid content metadata found in PSSH |
acquireLicense SUCCESS | License acquisition success |
processKey: Key Usable | Acquired key was processed in open cdm and the key is ready to be used. |
Found drm session READY with same keyID | Using the already created session since the keyID is not changed for the current tune. |
AAMP Overview
Topics
Crash & Hang Issue Analysis
DASH Playback Analysis
HLS Playback Analysis
Trick Play Flow and Analysis
Failures from outside of RDK
Useful Links
- AAMP Playback Flow : AAMP Playback Code Flow
- Producing stack traces from google breakpad minidump manually : Google Breakpad
General Tune Failures
Unrecoverable Failures – ( the playback may fail on this case )
S.No | AAMP Error Map Code | Media Error Code | Error Description | Failure on Tune Start | Failure on Mid Tune | Reason for failures | HLS | DASH |
1 | AAMP_TUNE_INIT_FAILED | 10 | AAMP: init failed | X | 1. Manifest request failure. 2. Invalid or insufficient data in manifest playlist (content length if “0”). 3. If av track duration is “0”. 4. If seek target is out of range. | X | X | |
2 | AAMP_TUNE_INIT_FRAGMENT_DOWNLOAD_FAILURE | 10 | AAMP: init fragment download failed String that will be logged (*) AAMP: init fragment download failed : Http Error Code (*) AAMP: init fragment download failed : Curl Error Code | X | X | Failed to download the initialization fragment, results in tune failure. (*) Failure with VOD/cDVR playback, the HTTP error code reflects actual CDN response interms of Curl or HTTP error values. (*) Failure with Linear playback via FOG, the HTTP error code reflects FOG reported failure, which does not necessarily imply a CDN download failure. | X | X |
3 | AAMP_TUNE_INVALID_MANIFEST_FAILURE | 10 | AAMP: Invalid Manifest, parse failed | X | If the format of Manifest is invalid, then it will result in tune falure. | X | X | |
4 | AAMP_TUNE_AUTHORISATION_FAILURE | 40 | AAMP: Authorization failure (or) AAMP: Authorization failure majorError | X | User is not entitled for the requested stream/content. In HLS : majorError = 3329 and minorError in (12012, 12013) In DASH : Depends on sec-client error codes | X | X | |
5 | AAMP_TUNE_UNTRACKED_DRM_ERROR | 50 | If 3321: AAMP: Individualization server down majorerror (or) AAMP: DRM Failure majorError (or) If AES(HLS): AAMP: DRM Failure | X | This can come in the case of unknown DRM errors, we can check the logs for understanding the DRM major and minor errorcodes to map the failure. This can be seen with AVE and AES DRMs. | X | ||
6 | AAMP_TUNE_DRM_INIT_FAILED | 50 | AAMP: DRM Initialization Failed | X | Widevine/PlayReady DRM session initialization failed. A platform or implementation issue can cause this error. | X | ||
7 | AAMP_TUNE_DRM_DATA_BIND_FAILED | 50 | AAMP: InitData-DRM Binding Failed | X | Failed to bind init data with DRM, could be due to invalid or incomplete initdata | X | ||
8 | AAMP_TUNE_DRM_CHALLENGE_FAILED | 50 | AAMP: DRM License Challenge Generation Failed | X | X | Failed to generate DRM license request. Might be due to outdated data in /opt/drm | X | |
9 | AAMP_TUNE_INVALID_DRM_KEY | 50 | AAMP: Invalid Key Error, from DRM | X | X | Failed to extact license key from license response. It could be because of wrong response data or invalid key. HLS with AES DRM. DASH with WV and PR. | X | X |
10 | AAMP_TUNE_DRM_KEY_UPDATE_FAILED | 50 | AAMP: Failed to process DRM key | X | X | Failed to process DRM key. Error code returned from the update API provides more details. | X | |
11 | AAMP_TUNE_UNSUPPORTED_STREAM_TYPE | 50 | AAMP: Unsupported Stream Type | X | X | DRM sessions can be created for audio or video only. Unsupported media type received for session creation. | X | |
12 | AAMP_TUNE_UNSUPPORTED_AUDIO_TYPE | 50 | AAMP: No supported Audio Types in Manifest | X | If the audio type in manifest is unknown by the player, then the playback will be failed. | X | ||
13 | AAMP_TUNE_DEVICE_NOT_PROVISIONED | 52 | AAMP: Device not provisioned | X | Device is not provisioned, see se-client error SEC_CLIENT_RESULT_MAC_AUTH_NOT_PROVISIONED | X | ||
14 | AAMP_TUNE_FAILED_PTS_ERROR | 80 | AAMP: Playback failed due to PTS error | X | X | If the injected fragment is discarded by the decoder due to PTS and other errors, then the playback will be failed with this error. | X | X |
15 | AAMP_TUNE_FAILURE_UNKNOWN | 100 | AAMP: Unknown Failure | X | X | Otherthan the above described faiures will be logged with unknown failures. | X | X |
Recoverable – ( on retry handling these case can be recoverable and the playback can play )
S.No | AAMP Error Map Code | Media Error Code | Error Description | Failure on Tune Start | Failure on Mid Tune | Reason for failures | HLS | DASH |
1 | AAMP_TUNE_MANIFEST_REQ_FAILED | 10 | AAMP: Manifest Download failed String that will be logged (*) AAMP: Manifest Download failed : Http Error Code (*) AAMP: Manifest Download failed : Curl Error Code | X | X | If manifest download failed and retry count exceedes MAX_MANIFEST_DOWNLOAD_RETRY(3) | X | X |
2 | AAMP_TUNE_FRAGMENT_DOWNLOAD_FAILURE | 10 | AAMP: fragment download failures String that will be logged (*) AAMP: fragment download failures : Http Error Code (*) AAMP: fragment download failures : Curl Error Code | X | X | If fragment download failed and retry count exceedes MAX_SEG_DOWNLOAD_FAIL_COUNT(10) (*) Failure with VOD/cDVR playback, the HTTP error code reflects actual CDN response interms of Curl or HTTP error values. (*) Failure with Linear playback via FOG, the HTTP error code reflects FOG reported failure, which does not necessarily imply a CDN download failure. | X | X |
3 | AAMP_TUNE_CONTENT_NOT_FOUND | 20 | AAMP: Resource was not found at the URL(HTTP 404) | X | X | If the manifest / fragment download failed with HTTP 404 error, then this error will be logged. May be the requested manifest / fragment might not be availble in the server. | X | X |
4 | AAMP_TUNE_LICENCE_TIMEOUT | 50 | AAMP: DRM License Request Timed out | X | X | License requset to server got timed out. | X | |
5 | AAMP_TUNE_LICENCE_REQUEST_FAILED | 50 | AAMP: DRM License Request Failed | X | X | License request failed with server returned error code. HLS with AES DRM. DASH with WV and PR. | X | X |
6 | AAMP_TUNE_FAILED_TO_GET_KEYID | 50 | AAMP: Failed to parse key id from PSSH | X | X | Failed to parse key id from init data. | X | |
7 | AAMP_TUNE_FAILED_TO_GET_ACCESS_TOKEN | 50 | AAMP: Failed to get access token from Auth Service | X | Failed to get access token from Auth Service; Access token is required to get license for Comcast streams from MDS servers. | X | ||
8 | AAMP_TUNE_CORRUPT_DRM_METADATA | 50 | AAMP: DRM Metadata error majorError | X | Multiple times same Metadata is set to AVE-DRM session or a bad Metadata for a stream set. DRM Major errorcode : 3314 | X | ||
9 | AAMP_TUNE_DRM_DECRYPT_FAILED | 50 | AAMP: DRM Decryption Failed for Fragments | X | X | If fragment decryption and retry count exceedes MAX_SEG_DRM_DECRYPT_FAIL_COUNT(10) or more fragments. | X | |
10 | AAMP_TUNE_CORRUPT_DRM_DATA | 51 | AAMP: DRM failure due to Corrupt DRM files (or) If 3322, 3328 : AAMP: DRM Failure possibly due to corrupt drm data; majorError If 3307 : AAMP: DRM Failure possibly due to corrupt CertStore majorError | X | Class of AVE DRM library errors that suggest cached DRM files are corrupted. (/opt/persistent/adobe – might be corrupted) DRM Major errorcode : 3322, 3328, 3307 This should trigger automatic “self healing” for next tune. | X | ||
11 | AAMP_TUNE_GST_PIPELINE_ERROR | 80 | GstPipeline Error:Decrypt Error GstPipeline Error:Your GStreamer installation is missing a plug-in GstPipeline Error:video decode error GstPipeline Error:HDCP Authentication Failure | X | X | Triggered by GST_MESSAGE_ERROR, with human readable description extracted using gst_message_parse_error. Check the logs for better understanding. | X | X |
12 | AAMP_TUNE_PLAYBACK_STALLED | 7600 | AAMP: Playback was stalled due to lack of new fragments | X | X | AAMP playback stalled because of the non-availability of sufficient fragments. | X | X |