RDK Documentation (Open Sourced RDK Components)
priv_aamp.h File Reference

Private functions and types used internally by AAMP. More...

#include "AampMemoryUtils.h"
#include "AampProfiler.h"
#include "AampDrmHelper.h"
#include "AampDrmMediaFormat.h"
#include "AampDrmCallbacks.h"
#include "main_aamp.h"
#include <IPVideoStat.h>
#include <pthread.h>
#include <signal.h>
#include <semaphore.h>
#include <curl/curl.h>
#include <string.h>
#include <vector>
#include <unordered_map>
#include <map>
#include <set>
#include <list>
#include <sstream>
#include <mutex>
#include <queue>
#include <algorithm>
#include <glib.h>
#include <cjson/cJSON.h>
#include "AampConfig.h"
#include <atomic>
#include <memory>
#include <inttypes.h>
#include <type_traits>
#include "AampRfc.h"
#include "AampEventManager.h"
#include <HybridABRManager.h>
Include dependency graph for priv_aamp.h:

Go to the source code of this file.

Data Structures

struct  HLSXStart
 Structure of X-Start HLS Tag. More...
 
struct  AsyncEventDescriptor
 Used in asynchronous event notification logic. More...
 
struct  PeriodInfo
 Stores details about available periods in mpd. More...
 
struct  EventBreakInfo
 Stores the detail about the Event break info. More...
 
struct  DynamicDrmInfo
 
class  ContentGapInfo
 Class for Content gap information. More...
 
struct  httpRespHeaderData
 To store Set Cookie: headers and X-Reason headers in HTTP Response. More...
 
struct  ThumbnailData
 Holds the Thumbnail information. More...
 
struct  SpeedCache
 Stroes the information for cache speed. More...
 
struct  AampLLDashServiceData
 To store Low Latency Service configurtions. More...
 
struct  videoRect
 To store video rectangle properties. More...
 
class  AudioTrackTuple
 Class to hold audio information like lang, codec, bitrate,etc. More...
 
struct  eCurlHostMap
 To have hostname mapped curl handles. More...
 
struct  AampUrlInfo
 Struct to store parsed url hostname & its type. More...
 
class  PrivateInstanceAAMP
 Class representing the AAMP player's private instance, which is not exposed to outside world. More...
 
class  PrivateInstanceAAMP::PositionInfo< TPOSITION >
 A readonly, validatable position value. More...
 
class  PrivateInstanceAAMP::PositionCache< TPOSITIONCACHE >
 A standard way of storing positions with associated data for validation purposes. More...
 
class  Id3CallbackData
 Holds id3 metadata callback specific variables. More...
 

Macros

#define aamp_pthread_setname(tid, name)   pthread_setname_np(tid,name)
 
#define AAMP_TRACK_COUNT   4
 
#define DEFAULT_CURL_INSTANCE_COUNT   (AAMP_TRACK_COUNT + 1)
 
#define AAMP_DRM_CURL_COUNT   4
 
#define DEFAULT_PLAYLIST_DL_TIMEOUT   10L
 
#define DEFAULT_CURL_TIMEOUT   5L
 
#define DEFAULT_CURL_CONNECTTIMEOUT   3L
 
#define EAS_CURL_TIMEOUT   3L
 
#define EAS_CURL_CONNECTTIMEOUT   2L
 
#define DEFAULT_INTERVAL_BETWEEN_PLAYLIST_UPDATES_MS   (6*1000)
 
#define AAMP_SEEK_TO_LIVE_POSITION   (-1)
 
#define MAX_SESSION_ID_LENGTH   128
 
#define MANIFEST_TEMP_DATA_LENGTH   100
 
#define AAMP_LOW_BUFFER_BEFORE_RAMPDOWN   10
 
#define AAMP_HIGH_BUFFER_BEFORE_RAMPUP   15
 
#define AAMP_USER_AGENT_MAX_CONFIG_LEN   512
 
#define SERVER_UTCTIME_DIRECT   "urn:mpeg:dash:utc:direct:2014"
 
#define SERVER_UTCTIME_HTTP   "urn:mpeg:dash:utc:http-xsdate:2014"
 
#define VSS_MARKER   "?sz="
 
#define VSS_MARKER_LEN   4
 
#define VSS_MARKER_FOG   "%3Fsz%3D"
 
#define VSS_VIRTUAL_STREAM_ID_KEY_STR   "content:xcal:virtualStreamId"
 
#define VSS_VIRTUAL_STREAM_ID_PREFIX   "urn:merlin:linear:stream:"
 
#define VSS_SERVICE_ZONE_KEY_STR   "device:xcal:serviceZone"
 
#define LL_DASH_SERVICE_PROFILE   "http://www.dashif.org/guidelines/low-latency-live-v5"
 
#define URN_UTC_HTTP_XSDATE   "urn:mpeg:dash:utc:http-xsdate:2014"
 
#define URN_UTC_HTTP_ISO   "urn:mpeg:dash:utc:http-iso:2014"
 
#define URN_UTC_HTTP_NTP   "urn:mpeg:dash:utc:http-ntp:2014"
 
#define URN_UTC_HTTP_HEAD   "urn:mpeg:dash:utc:http-head:2014"
 
#define MAX_LOW_LATENCY_DASH_CORRECTION_ALLOWED   100
 
#define MAX_LOW_LATENCY_DASH_RETUNE_ALLOWED   2
 
#define MAX_LOW_LATENCY_DASH_ABR_SPEEDSTORE_SIZE   10
 
#define MAX_DEBUG_LOG_BUFF_SIZE   1024
 Max debug log buffer size.
 
#define MAX_URL_LOG_SIZE   960
 Max URL log size. More...
 
#define CONVERT_SEC_TO_MS(_x_)   (_x_ * 1000)
 
#define DEFAULT_PREBUFFER_COUNT   (2)
 
#define DEFAULT_PRECACHE_WINDOW   (10)
 
#define DEFAULT_DOWNLOAD_RETRY_COUNT   (1)
 
#define PARTIAL_FILE_CONNECTIVITY_AAMP   (130)
 
#define PARTIAL_FILE_DOWNLOAD_TIME_EXPIRED_AAMP   (131)
 
#define OPERATION_TIMEOUT_CONNECTIVITY_AAMP   (132)
 
#define PARTIAL_FILE_START_STALL_TIMEOUT_AAMP   (133)
 
#define AAMP_MINIMUM_AUDIO_LEVEL   (0)
 
#define AAMP_MAXIMUM_AUDIO_LEVEL   (100)
 
#define STRBGPLAYER   "BACKGROUND"
 
#define STRFGPLAYER   "FOREGROUND"
 
#define MUTE_SUBTITLES_TRACKID   (-1)
 
#define AAMP2ReceiverMsgHdrSz   (sizeof(AAMP2ReceiverMsg)-1)
 

Typedefs

typedef int(* IdleTask) (void *arg)
 Function pointer for the idle task. More...
 
typedef void(* DestroyTask) (void *arg)
 Function pointer for the destroy task. More...
 
typedef struct eCurlHostMap eCurlHostMapStruct
 To have hostname mapped curl handles.
 
typedef struct AampUrlInfo AampURLInfoStruct
 Struct to store parsed url hostname & its type.
 

Enumerations

enum  AampCurlInstance
 Enumeration for Curl Instances. More...
 
enum  PlaybackErrorType
 
enum  TuneType
 Tune Typea. More...
 
enum  AAMPStatusType
 AAMP Function return values. More...
 
enum  HttpHeaderType
 Http Header Type. More...
 
enum  CurlAbortReason
 Http Header Type.
 
enum  BitrateChangeReason
 Different reasons for bitrate change.
 
enum  AudioType
 Type of audio ES for MPD.
 
enum  CurlRequest
 
enum  UtcTiming
 

yes

Private functions and types used internally by AAMP.

Definition in file priv_aamp.h.


Data Structure Documentation

◆ HLSXStart

struct HLSXStart

Structure of X-Start HLS Tag.

Definition at line 142 of file priv_aamp.h.

Collaboration diagram for HLSXStart:
Collaboration graph
Data Fields
double offset

Time offset from XStart

bool precise

Precise input

Macro Definition Documentation

◆ AAMP_TRACK_COUNT

#define AAMP_TRACK_COUNT   4

internal use - audio+video+sub+aux track

Definition at line 67 of file priv_aamp.h.

◆ DEFAULT_CURL_INSTANCE_COUNT

#define DEFAULT_CURL_INSTANCE_COUNT   (AAMP_TRACK_COUNT + 1)

One for Manifest/Playlist + Number of tracks

Definition at line 68 of file priv_aamp.h.

◆ AAMP_DRM_CURL_COUNT

#define AAMP_DRM_CURL_COUNT   4

audio+video+sub+aux track DRMs

Definition at line 69 of file priv_aamp.h.

◆ DEFAULT_PLAYLIST_DL_TIMEOUT

#define DEFAULT_PLAYLIST_DL_TIMEOUT   10L

Curl timeout for playlist download

Definition at line 71 of file priv_aamp.h.

◆ DEFAULT_CURL_TIMEOUT

#define DEFAULT_CURL_TIMEOUT   5L

Default timeout for Curl downloads

Definition at line 72 of file priv_aamp.h.

◆ DEFAULT_CURL_CONNECTTIMEOUT

#define DEFAULT_CURL_CONNECTTIMEOUT   3L

Curl socket connection timeout

Definition at line 73 of file priv_aamp.h.

◆ EAS_CURL_TIMEOUT

#define EAS_CURL_TIMEOUT   3L

Curl timeout for EAS manifest downloads

Definition at line 74 of file priv_aamp.h.

◆ EAS_CURL_CONNECTTIMEOUT

#define EAS_CURL_CONNECTTIMEOUT   2L

Curl timeout for EAS connection

Definition at line 75 of file priv_aamp.h.

◆ DEFAULT_INTERVAL_BETWEEN_PLAYLIST_UPDATES_MS

#define DEFAULT_INTERVAL_BETWEEN_PLAYLIST_UPDATES_MS   (6*1000)

Interval between playlist refreshes

Definition at line 76 of file priv_aamp.h.

◆ MAX_SESSION_ID_LENGTH

#define MAX_SESSION_ID_LENGTH   128

session id string length

Definition at line 80 of file priv_aamp.h.

◆ MANIFEST_TEMP_DATA_LENGTH

#define MANIFEST_TEMP_DATA_LENGTH   100

Manifest temp data length

Definition at line 81 of file priv_aamp.h.

◆ AAMP_LOW_BUFFER_BEFORE_RAMPDOWN

#define AAMP_LOW_BUFFER_BEFORE_RAMPDOWN   10

10sec buffer before rampdown

Definition at line 82 of file priv_aamp.h.

◆ AAMP_HIGH_BUFFER_BEFORE_RAMPUP

#define AAMP_HIGH_BUFFER_BEFORE_RAMPUP   15

15sec buffer before rampup

Definition at line 83 of file priv_aamp.h.

◆ AAMP_USER_AGENT_MAX_CONFIG_LEN

#define AAMP_USER_AGENT_MAX_CONFIG_LEN   512

Max Chars allowed in aamp.cfg for user-agent

Definition at line 86 of file priv_aamp.h.

◆ VSS_MARKER_FOG

#define VSS_MARKER_FOG   "%3Fsz%3D"

URI-encoded ?sz=

Definition at line 92 of file priv_aamp.h.

◆ MAX_URL_LOG_SIZE

#define MAX_URL_LOG_SIZE   960

Max URL log size.

Considering "aamp_tune" and [AAMP-PLAYER] pretext

Definition at line 119 of file priv_aamp.h.

◆ CONVERT_SEC_TO_MS

#define CONVERT_SEC_TO_MS (   _x_)    (_x_ * 1000)

Convert value to sec to ms

Definition at line 121 of file priv_aamp.h.

◆ DEFAULT_PRECACHE_WINDOW

#define DEFAULT_PRECACHE_WINDOW   (10)

10 mins for full precaching

Definition at line 123 of file priv_aamp.h.

◆ DEFAULT_DOWNLOAD_RETRY_COUNT

#define DEFAULT_DOWNLOAD_RETRY_COUNT   (1)

max download failure retry attempt count

Definition at line 124 of file priv_aamp.h.

◆ AAMP_MINIMUM_AUDIO_LEVEL

#define AAMP_MINIMUM_AUDIO_LEVEL   (0)

minimum value for audio level supported

Definition at line 130 of file priv_aamp.h.

◆ AAMP_MAXIMUM_AUDIO_LEVEL

#define AAMP_MAXIMUM_AUDIO_LEVEL   (100)

maximum value for audio level supported

Definition at line 131 of file priv_aamp.h.