RDK Documentation (Open Sourced RDK Components)
AampProfiler.h
Go to the documentation of this file.
1 /*
2  * If not stated otherwise in this file or this component's license file the
3  * following copyright and licenses apply:
4  *
5  * Copyright 2020 RDK Management
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18 */
19 
20 /**
21  * @file AampProfiler.h
22  * @brief ProfileEventAAMP header file
23  */
24 
25 #ifndef __AAMP_PROFILER_H__
26 #define __AAMP_PROFILER_H__
27 
28 #include <mutex>
29 #include <list>
30 #include <sstream>
31 #include <string>
32 #include "AampLogManager.h"
33 
34 /**
35  * @addtogroup AAMP_COMMON_TYPES
36  * @{
37  */
38 
39 /**
40  * @enum ProfilerBucketType
41  * @brief Bucket types of AAMP profiler
42  */
43 typedef enum
44 {
45  PROFILE_BUCKET_MANIFEST, /**< Manifest download bucket*/
46 
47  PROFILE_BUCKET_PLAYLIST_VIDEO, /**< Video playlist download bucket*/
48  PROFILE_BUCKET_PLAYLIST_AUDIO, /**< Audio playlist download bucket*/
49  PROFILE_BUCKET_PLAYLIST_SUBTITLE, /**< Subtitle playlist download bucket*/
50  PROFILE_BUCKET_PLAYLIST_AUXILIARY, /**< Auxiliary playlist download bucket*/
51 
52  PROFILE_BUCKET_INIT_VIDEO, /**< Video init fragment download bucket*/
53  PROFILE_BUCKET_INIT_AUDIO, /**< Audio init fragment download bucket*/
54  PROFILE_BUCKET_INIT_SUBTITLE, /**< Subtitle fragment download bucket*/
55  PROFILE_BUCKET_INIT_AUXILIARY, /**< Auxiliary fragment download bucket*/
56 
57  PROFILE_BUCKET_FRAGMENT_VIDEO, /**< Video fragment download bucket*/
58  PROFILE_BUCKET_FRAGMENT_AUDIO, /**< Audio fragment download bucket*/
59  PROFILE_BUCKET_FRAGMENT_SUBTITLE, /**< Subtitle fragment download bucket*/
60  PROFILE_BUCKET_FRAGMENT_AUXILIARY, /**< Auxiliary fragment download bucket*/
61 
62  PROFILE_BUCKET_DECRYPT_VIDEO, /**< Video decryption bucket*/
63  PROFILE_BUCKET_DECRYPT_AUDIO, /**< Audio decryption bucket*/
64  PROFILE_BUCKET_DECRYPT_SUBTITLE, /**< Subtitle decryption bucket*/
65  PROFILE_BUCKET_DECRYPT_AUXILIARY, /**< Auxiliary decryption bucket*/
66 
67  PROFILE_BUCKET_LA_TOTAL, /**< License acquisition total bucket*/
68  PROFILE_BUCKET_LA_PREPROC, /**< License acquisition pre-processing bucket*/
69  PROFILE_BUCKET_LA_NETWORK, /**< License acquisition network operation bucket*/
70  PROFILE_BUCKET_LA_POSTPROC, /**< License acquisition post-processing bucket*/
71 
72  PROFILE_BUCKET_FIRST_BUFFER, /**< First buffer to gstreamer bucket*/
73  PROFILE_BUCKET_FIRST_FRAME, /**< First frame displayed bucket*/
74  PROFILE_BUCKET_PLAYER_PRE_BUFFERED, /**< Prebuffer bucket ( BG to FG )*/
75  PROFILE_BUCKET_TYPE_COUNT /**< Bucket count*/
77 
78 /**
79  * @enum ClassicProfilerBucketType
80  * @brief Bucket types of classic profiler
81  */
82 typedef enum
83 {
84  TuneTimeBaseTime, /**< Tune time base*/
85  TuneTimeBeginLoad, /**< Player load time*/
86  TuneTimePrepareToPlay, /**< Manifest ready time*/
87  TuneTimePlay, /**< Profiles ready time*/
88  TuneTimeDrmReady, /**< DRM ready time*/
89  TuneTimeStartStream, /**< First buffer insert time*/
90  TuneTimeStreaming, /**< First frame display time*/
91  TuneTimeBackToXre, /**< Tune status back to XRE time*/
92  TuneTimeMax /**< Max bucket type*/
94 
95 /**
96  * @enum ContentType
97  * @brief Asset's content types
98  */
100 {
101  ContentType_UNKNOWN, /**< 0 - Unknown type */
102  ContentType_CDVR, /**< 1 - CDVR */
103  ContentType_VOD, /**< 2 - VOD */
104  ContentType_LINEAR, /**< 3 - Linear */
105  ContentType_IVOD, /**< 4 - IVOD */
106  ContentType_EAS, /**< 5 - EAS */
107  ContentType_CAMERA, /**< 6 - Camera */
108  ContentType_DVR, /**< 7 - DVR */
109  ContentType_MDVR, /**< 8 - MDVR */
110  ContentType_IPDVR, /**< 9 - IPDVR */
111  ContentType_PPV, /**< 10 - PPV */
112  ContentType_OTT, /**< 11 - OTT */
113  ContentType_OTA, /**< 12 - OTA*/
114  ContentType_HDMIIN, /**< 13 - HDMI Input */
115  ContentType_COMPOSITEIN, /**< 14 - COMPOSITE Input*/
116  ContentType_SLE, /**< 15 - SLE - Single Live Event (kind of iVOD)*/
117  ContentType_MAX /**< 16 - Type Count*/
118 };
119 
120 /**
121  * @struct TuneEndMetrics
122  * @brief TuneEndMetrics structure to store tunemetrics data
123  */
124 typedef struct
125 {
126  int success; /**< Flag indicate whether the tune is success or not */
127  int streamType; /**< Media stream Type */
128  int mTimedMetadata; /**< Total no.of TimedMetaData(Ads) processed in the manifest*/
129  long long mTimedMetadataStartTime; /**< Time at which timedmetadata event starts sending */
130  int mTimedMetadataDuration; /**< Time Taken to send TiedMetaData event*/
131  int mTuneAttempts; /**< No of tune attepts taken */
132  bool mFirstTune; /**< To identify the first tune after load.*/
133  bool mTSBEnabled; /**< Flag to indicate TSB is enabled or not */
134  int mTotalTime;
135  ContentType contentType;
137 /**
138  * @}
139  */
140 
141 /**
142  * @class ProfileEventAAMP
143  * @brief Class for AAMP event Profiling
144  */
146 {
147 private:
148  // TODO: include settop type (to distinguish settop performance)
149  // TODO: include flag to indicate whether FOG used (to isolate FOG overhead)
150 
151  /**
152  * @brief Class corresponding to tune time events.
153  */
154  class TuneEvent
155  {
156  public:
157  ProfilerBucketType id; /**< Event identifier */
158  unsigned int start; /**< Event start time */
159  unsigned int duration; /**< Event duration */
160  int result; /**< Event result */
161 
162  /**
163  * @brief TuneEvent Constructor
164  * @param[in] i - Event id
165  * @param[in] s - Event start time
166  * @param[in] d - Event duration
167  * @param[in] r - Event result
168  */
169  TuneEvent(ProfilerBucketType i, unsigned int s, unsigned int d, int r):
170  id(i), start(s), duration(d), result(r)
171  {
172  }
173  };
174 
175  /**
176  * @brief Data structure corresponding to profiler bucket
177  */
179  {
180  unsigned int tStart; /**< Relative start time of operation, based on tuneStartMonotonicBase */
181  unsigned int tFinish; /**< Relative end time of operation, based on tuneStartMonotonicBase */
182  int errorCount; /**< non-zero if errors/retries occured during this operation */
183  bool complete; /**< true if this step already accounted for, and further profiling should be ignored */
184  bool profileStarted; /**< Flag that indicates,whether the profiler is started or not */
185  } buckets[PROFILE_BUCKET_TYPE_COUNT];
186 
187  /**
188  * @brief Calculating effecting duration of overlapping buckets, id1 & id2
189  */
190 #define bucketsOverlap(id1,id2) \
191  buckets[id1].complete && buckets[id2].complete && \
192  (buckets[id1].tStart <= buckets[id2].tFinish) && (buckets[id2].tStart <= buckets[id1].tFinish)
193 
194  /**
195  * @brief Calculating total duration a bucket id
196  */
197 #define bucketDuration(id) \
198  (buckets[id].complete?(buckets[id].tFinish - buckets[id].tStart):0)
199 
200  long long tuneStartMonotonicBase; /**< Base time from Monotonic clock for interval calculation */
201 
202  long long tuneStartBaseUTCMS; /**< common UTC base for start of tune */
203  long long xreTimeBuckets[TuneTimeMax]; /**< Start time of each buckets for classic metrics conversion */
204  long bandwidthBitsPerSecondVideo; /**< Video bandwidth in bps */
205  long bandwidthBitsPerSecondAudio; /**< Audio bandwidth in bps */
206  int drmErrorCode; /**< DRM error code */
207  bool enabled; /**< Profiler started or not */
208  std::list<TuneEvent> tuneEventList; /**< List of events happened during tuning */
209  std::mutex tuneEventListMtx; /**< Mutex protecting tuneEventList */
210 
211  ProfilerBucketType mTuneFailBucketType; /**< ProfilerBucketType in case of error */
212  int mTuneFailErrorCode; /**< tune Fail Error Code */
213  AampLogManager *mLogObj;
214 
215  /**
216  * @brief Calculating effective time of two overlapping buckets.
217  *
218  * @param[in] id1 - Bucket type 1
219  * @param[in] id2 - Bucket type 2
220  * @return void
221  */
223  {
224 #if 0
225  if(bucketsOverlap(id1, id2))
226  return MAX(buckets[id1].tFinish, buckets[id2].tFinish) - fmin(buckets[id1].tStart, buckets[id2].tStart);
227 #endif
228  return bucketDuration(id1) + bucketDuration(id2);
229  }
230 public:
231 
232  /**
233  * @fn ProfileEventAAMP
234  */
236 
237  /**
238  * @brief ProfileEventAAMP Destructor
239  */
241  /**
242  * @brief Copy constructor disabled
243  *
244  */
245  ProfileEventAAMP(const ProfileEventAAMP&) = delete;
246  /**
247  * @brief assignment operator disabled
248  *
249  */
250  ProfileEventAAMP& operator=(const ProfileEventAAMP&) = delete;
251 
252  /**
253  * @brief Setting video bandwidth in bps
254  *
255  * @param[in] bw - Bandwidth in bps
256  * @return void
257  */
259  {
261  }
262 
263  /**
264  * @brief Setting audio bandwidth in bps
265  *
266  * @param[in] bw - Bandwidth in bps
267  * @return void
268  */
270  {
272  }
273 
274  /**
275  * @brief Setting DRM error code
276  *
277  * @param[in] errCode - Error code
278  * @return void
279  */
280  void SetDrmErrorCode(int errCode)
281  {
282  drmErrorCode = errCode;
283  }
284 
285 
286  /**
287  * @fn getTuneEventsJSON
288  *
289  * @param[out] outSS - Output JSON string
290  * @param[in] streamType - Stream type
291  * @param[in] url - Tune URL
292  * @param[in] success - Tune success/failure
293  * @return void
294  */
295  void getTuneEventsJSON(std::string &outSS, const std::string &streamType, const char *url, bool success);
296 
297  /**
298  * @fn TuneBegin
299  *
300  * @return void
301  */
302  void TuneBegin(void);
303 
304  /**
305  * @fn TuneEnd
306  * @param[in] mTuneendmetrics - Tune End metrics values
307  * @param[in] appName - Application Name
308  * @param[in] playerActiveMode - Aamp Player mode
309  * @param[in] playerId - Aamp Player id
310  * @param[in] playerPreBuffered - True/false Player has pre bufferred content
311  * @param[in] durationSeconds - Asset duration in seconds
312  * @param[in] interfaceWifi - Active connection is Wifi or Ethernet
313  * @param[in] failureReason - Aamp player failure reason
314  * @return void
315  */
316  void TuneEnd(TuneEndMetrics &mTuneendmetrics, std::string appName, std::string playerActiveMode, int playerId, bool playerPreBuffered, unsigned int durationSeconds, bool interfaceWifi, std::string failureReason);
317  /**
318  * @fn GetClassicTuneTimeInfo
319  *
320  * @param[in] success - Tune status
321  * @param[in] tuneRetries - Number of tune attempts
322  * @param[in] playerLoadTime - Time at which the first tune request reached the AAMP player
323  * @param[in] streamType - Type of stream. eg: HLS, DASH, etc
324  * @param[in] isLive - Live channel or not
325  * @param[in] durationinSec - Asset duration in seconds
326  * @param[out] TuneTimeInfoStr - Formatted output string
327  * @return void
328  */
329  void GetClassicTuneTimeInfo(bool success, int tuneRetries, int firstTuneType, long long playerLoadTime, int streamType, bool isLive,unsigned int durationinSec, char *TuneTimeInfoStr);
330 
331  /**
332  * @fn ProfileBegin
333  *
334  * @param[in] type - Bucket type
335  * @return void
336  */
337  void ProfileBegin(ProfilerBucketType type);
338 
339  /**
340  * @fn ProfileError
341  *
342  * @param[in] type - Bucket type
343  * @param[in] result - Error code
344  * @return void
345  */
346  void ProfileError(ProfilerBucketType type, int result = -1);
347 
348  /**
349  * @fn ProfileEnd
350  *
351  * @param[in] type - Bucket type
352  * @return void
353  */
354  void ProfileEnd(ProfilerBucketType type);
355 
356  /**
357  * @fn ProfilePerformed
358  *
359  * @param[in] type - Bucket type
360  * @return void
361  */
363 
364  /**
365  * @fn SetTuneFailCode
366  *
367  * @param[in] tuneFailCode - tune Fail Code
368  * @param[in] failBucketType - Profiler Bucket type
369  * @return void
370  */
371  void SetTuneFailCode(int tuneFailCode, ProfilerBucketType failBucketType);
372 
373  void SetLogger(AampLogManager *logObj) { mLogObj = logObj;}
374 };
375 
376 #endif /* __AAMP_PROFILER_H__ */
377 
AampLogManager.h
Log managed for Aamp.
TuneEndMetrics::mTimedMetadata
int mTimedMetadata
Definition: AampProfiler.h:128
TuneEndMetrics
TuneEndMetrics structure to store tunemetrics data.
Definition: AampProfiler.h:124
ContentType_IVOD
@ ContentType_IVOD
Definition: AampProfiler.h:105
PROFILE_BUCKET_DECRYPT_AUDIO
@ PROFILE_BUCKET_DECRYPT_AUDIO
Definition: AampProfiler.h:63
ProfileEventAAMP::TuneEvent
Class corresponding to tune time events.
Definition: AampProfiler.h:154
ContentType_IPDVR
@ ContentType_IPDVR
Definition: AampProfiler.h:110
PROFILE_BUCKET_FRAGMENT_VIDEO
@ PROFILE_BUCKET_FRAGMENT_VIDEO
Definition: AampProfiler.h:57
ProfileEventAAMP::tuneStartBaseUTCMS
long long tuneStartBaseUTCMS
Definition: AampProfiler.h:202
PROFILE_BUCKET_FRAGMENT_AUDIO
@ PROFILE_BUCKET_FRAGMENT_AUDIO
Definition: AampProfiler.h:58
TuneTimeBackToXre
@ TuneTimeBackToXre
Definition: AampProfiler.h:91
ProfileEventAAMP::ProfilerBucket::profileStarted
bool profileStarted
Definition: AampProfiler.h:184
ProfileEventAAMP::GetClassicTuneTimeInfo
void GetClassicTuneTimeInfo(bool success, int tuneRetries, int firstTuneType, long long playerLoadTime, int streamType, bool isLive, unsigned int durationinSec, char *TuneTimeInfoStr)
Method converting the AAMP style tune performance data to IP_EX_TUNETIME style data.
Definition: AampProfiler.cpp:242
ProfileEventAAMP::ProfilerBucket::tStart
unsigned int tStart
Definition: AampProfiler.h:180
ProfileEventAAMP::SetBandwidthBitsPerSecondVideo
void SetBandwidthBitsPerSecondVideo(long bw)
Setting video bandwidth in bps.
Definition: AampProfiler.h:258
ContentType_UNKNOWN
@ ContentType_UNKNOWN
Definition: AampProfiler.h:101
PROFILE_BUCKET_DECRYPT_SUBTITLE
@ PROFILE_BUCKET_DECRYPT_SUBTITLE
Definition: AampProfiler.h:64
ContentType_EAS
@ ContentType_EAS
Definition: AampProfiler.h:106
PROFILE_BUCKET_INIT_VIDEO
@ PROFILE_BUCKET_INIT_VIDEO
Definition: AampProfiler.h:52
PROFILE_BUCKET_MANIFEST
@ PROFILE_BUCKET_MANIFEST
Definition: AampProfiler.h:45
TuneTimeBaseTime
@ TuneTimeBaseTime
Definition: AampProfiler.h:84
ContentType_VOD
@ ContentType_VOD
Definition: AampProfiler.h:103
PROFILE_BUCKET_DECRYPT_VIDEO
@ PROFILE_BUCKET_DECRYPT_VIDEO
Definition: AampProfiler.h:62
PROFILE_BUCKET_LA_POSTPROC
@ PROFILE_BUCKET_LA_POSTPROC
Definition: AampProfiler.h:70
TuneEndMetrics::mFirstTune
bool mFirstTune
Definition: AampProfiler.h:132
ContentType_LINEAR
@ ContentType_LINEAR
Definition: AampProfiler.h:104
ProfileEventAAMP::TuneEvent::duration
unsigned int duration
Definition: AampProfiler.h:159
ContentType_SLE
@ ContentType_SLE
Definition: AampProfiler.h:116
ProfileEventAAMP::mTuneFailErrorCode
int mTuneFailErrorCode
Definition: AampProfiler.h:212
ProfileEventAAMP::~ProfileEventAAMP
~ProfileEventAAMP()
ProfileEventAAMP Destructor.
Definition: AampProfiler.h:240
TuneEndMetrics::mTuneAttempts
int mTuneAttempts
Definition: AampProfiler.h:131
AampLogManager
AampLogManager Class.
Definition: AampLogManager.h:150
PROFILE_BUCKET_PLAYLIST_AUDIO
@ PROFILE_BUCKET_PLAYLIST_AUDIO
Definition: AampProfiler.h:48
ProfileEventAAMP::enabled
bool enabled
Definition: AampProfiler.h:207
TuneTimeDrmReady
@ TuneTimeDrmReady
Definition: AampProfiler.h:88
ProfileEventAAMP::effectiveBucketTime
unsigned int effectiveBucketTime(ProfilerBucketType id1, ProfilerBucketType id2)
Calculating effective time of two overlapping buckets.
Definition: AampProfiler.h:222
ProfileEventAAMP::ProfilePerformed
void ProfilePerformed(ProfilerBucketType type)
Method to mark the end of a bucket, for which beginning is not marked.
Definition: AampProfiler.cpp:354
PROFILE_BUCKET_PLAYLIST_VIDEO
@ PROFILE_BUCKET_PLAYLIST_VIDEO
Definition: AampProfiler.h:47
ProfileEventAAMP::ProfilerBucket
Data structure corresponding to profiler bucket.
Definition: AampProfiler.h:178
ProfileEventAAMP::tuneEventListMtx
std::mutex tuneEventListMtx
Definition: AampProfiler.h:209
ProfileEventAAMP::SetBandwidthBitsPerSecondAudio
void SetBandwidthBitsPerSecondAudio(long bw)
Setting audio bandwidth in bps.
Definition: AampProfiler.h:269
ContentType_MAX
@ ContentType_MAX
Definition: AampProfiler.h:117
ProfileEventAAMP
Class for AAMP event Profiling.
Definition: AampProfiler.h:145
ProfileEventAAMP::xreTimeBuckets
long long xreTimeBuckets[TuneTimeMax]
Definition: AampProfiler.h:203
ProfileEventAAMP::ProfileError
void ProfileError(ProfilerBucketType type, int result=-1)
Marking error while executing a bucket.
Definition: AampProfiler.cpp:311
ContentType_OTA
@ ContentType_OTA
Definition: AampProfiler.h:113
ContentType_CAMERA
@ ContentType_CAMERA
Definition: AampProfiler.h:107
TuneEndMetrics::mTSBEnabled
bool mTSBEnabled
Definition: AampProfiler.h:133
TuneTimeStartStream
@ TuneTimeStartStream
Definition: AampProfiler.h:89
ProfileEventAAMP::ProfilerBucket::errorCount
int errorCount
Definition: AampProfiler.h:182
PROFILE_BUCKET_LA_PREPROC
@ PROFILE_BUCKET_LA_PREPROC
Definition: AampProfiler.h:68
ContentType_CDVR
@ ContentType_CDVR
Definition: AampProfiler.h:102
ProfileEventAAMP::TuneEvent::id
ProfilerBucketType id
Definition: AampProfiler.h:157
ProfileEventAAMP::ProfilerBucket::tFinish
unsigned int tFinish
Definition: AampProfiler.h:181
bucketDuration
#define bucketDuration(id)
Calculating total duration a bucket id.
Definition: AampProfiler.h:197
PROFILE_BUCKET_INIT_SUBTITLE
@ PROFILE_BUCKET_INIT_SUBTITLE
Definition: AampProfiler.h:54
PROFILE_BUCKET_INIT_AUXILIARY
@ PROFILE_BUCKET_INIT_AUXILIARY
Definition: AampProfiler.h:55
TuneTimePrepareToPlay
@ TuneTimePrepareToPlay
Definition: AampProfiler.h:86
ProfileEventAAMP::SetTuneFailCode
void SetTuneFailCode(int tuneFailCode, ProfilerBucketType failBucketType)
Method to set Failure code and Bucket Type used for microevents.
Definition: AampProfiler.cpp:363
PROFILE_BUCKET_FRAGMENT_SUBTITLE
@ PROFILE_BUCKET_FRAGMENT_SUBTITLE
Definition: AampProfiler.h:59
ProfileEventAAMP::bandwidthBitsPerSecondAudio
long bandwidthBitsPerSecondAudio
Definition: AampProfiler.h:205
ContentType_DVR
@ ContentType_DVR
Definition: AampProfiler.h:108
PROFILE_BUCKET_FIRST_FRAME
@ PROFILE_BUCKET_FIRST_FRAME
Definition: AampProfiler.h:73
PROFILE_BUCKET_LA_NETWORK
@ PROFILE_BUCKET_LA_NETWORK
Definition: AampProfiler.h:69
PROFILE_BUCKET_INIT_AUDIO
@ PROFILE_BUCKET_INIT_AUDIO
Definition: AampProfiler.h:53
ProfileEventAAMP::TuneEvent::start
unsigned int start
Definition: AampProfiler.h:158
ProfileEventAAMP::ProfileBegin
void ProfileBegin(ProfilerBucketType type)
Marking the beginning of a bucket.
Definition: AampProfiler.cpp:297
ProfileEventAAMP::drmErrorCode
int drmErrorCode
Definition: AampProfiler.h:206
TuneEndMetrics::mTimedMetadataStartTime
long long mTimedMetadataStartTime
Definition: AampProfiler.h:129
ProfileEventAAMP::TuneEvent::result
int result
Definition: AampProfiler.h:160
ProfileEventAAMP::TuneEvent::TuneEvent
TuneEvent(ProfilerBucketType i, unsigned int s, unsigned int d, int r)
TuneEvent Constructor.
Definition: AampProfiler.h:169
ProfileEventAAMP::SetDrmErrorCode
void SetDrmErrorCode(int errCode)
Setting DRM error code.
Definition: AampProfiler.h:280
TuneTimeStreaming
@ TuneTimeStreaming
Definition: AampProfiler.h:90
PROFILE_BUCKET_PLAYLIST_AUXILIARY
@ PROFILE_BUCKET_PLAYLIST_AUXILIARY
Definition: AampProfiler.h:50
ProfileEventAAMP::TuneBegin
void TuneBegin(void)
Profiler method to perform tune begin related operations.
Definition: AampProfiler.cpp:94
ContentType_MDVR
@ ContentType_MDVR
Definition: AampProfiler.h:109
TuneTimeBeginLoad
@ TuneTimeBeginLoad
Definition: AampProfiler.h:85
ProfileEventAAMP::ProfilerBucket::complete
bool complete
Definition: AampProfiler.h:183
ProfilerBucketType
ProfilerBucketType
Bucket types of AAMP profiler.
Definition: AampProfiler.h:43
bucketsOverlap
#define bucketsOverlap(id1, id2)
Calculating effecting duration of overlapping buckets, id1 & id2.
Definition: AampProfiler.h:190
ProfileEventAAMP::operator=
ProfileEventAAMP & operator=(const ProfileEventAAMP &)=delete
assignment operator disabled
ClassicProfilerBucketType
ClassicProfilerBucketType
Bucket types of classic profiler.
Definition: AampProfiler.h:82
PROFILE_BUCKET_DECRYPT_AUXILIARY
@ PROFILE_BUCKET_DECRYPT_AUXILIARY
Definition: AampProfiler.h:65
ContentType_COMPOSITEIN
@ ContentType_COMPOSITEIN
Definition: AampProfiler.h:115
TuneEndMetrics::success
int success
Definition: AampProfiler.h:126
ProfileEventAAMP::ProfileEnd
void ProfileEnd(ProfilerBucketType type)
Marking the end of a bucket.
Definition: AampProfiler.cpp:325
ProfileEventAAMP::bandwidthBitsPerSecondVideo
long bandwidthBitsPerSecondVideo
Definition: AampProfiler.h:204
ContentType
ContentType
Asset's content types.
Definition: AampProfiler.h:99
TuneEndMetrics::mTimedMetadataDuration
int mTimedMetadataDuration
Definition: AampProfiler.h:130
ProfileEventAAMP::tuneEventList
std::list< TuneEvent > tuneEventList
Definition: AampProfiler.h:208
TuneEndMetrics::streamType
int streamType
Definition: AampProfiler.h:127
ProfileEventAAMP::getTuneEventsJSON
void getTuneEventsJSON(std::string &outSS, const std::string &streamType, const char *url, bool success)
Get tune time events in JSON format.
Definition: AampProfiler.cpp:48
ProfileEventAAMP::TuneEnd
void TuneEnd(TuneEndMetrics &mTuneendmetrics, std::string appName, std::string playerActiveMode, int playerId, bool playerPreBuffered, unsigned int durationSeconds, bool interfaceWifi, std::string failureReason)
Logging performance metrics after successful tune completion. Metrics starts with IP_AAMP_TUNETIME.
Definition: AampProfiler.cpp:157
TuneTimeMax
@ TuneTimeMax
Definition: AampProfiler.h:92
ContentType_HDMIIN
@ ContentType_HDMIIN
Definition: AampProfiler.h:114
PROFILE_BUCKET_PLAYLIST_SUBTITLE
@ PROFILE_BUCKET_PLAYLIST_SUBTITLE
Definition: AampProfiler.h:49
ContentType_OTT
@ ContentType_OTT
Definition: AampProfiler.h:112
PROFILE_BUCKET_LA_TOTAL
@ PROFILE_BUCKET_LA_TOTAL
Definition: AampProfiler.h:67
PROFILE_BUCKET_FIRST_BUFFER
@ PROFILE_BUCKET_FIRST_BUFFER
Definition: AampProfiler.h:72
ProfileEventAAMP::mTuneFailBucketType
ProfilerBucketType mTuneFailBucketType
Definition: AampProfiler.h:211
ContentType_PPV
@ ContentType_PPV
Definition: AampProfiler.h:111
PROFILE_BUCKET_TYPE_COUNT
@ PROFILE_BUCKET_TYPE_COUNT
Definition: AampProfiler.h:75
PROFILE_BUCKET_PLAYER_PRE_BUFFERED
@ PROFILE_BUCKET_PLAYER_PRE_BUFFERED
Definition: AampProfiler.h:74
TuneTimePlay
@ TuneTimePlay
Definition: AampProfiler.h:87
ProfileEventAAMP::tuneStartMonotonicBase
long long tuneStartMonotonicBase
Definition: AampProfiler.h:200
ProfileEventAAMP::ProfileEventAAMP
ProfileEventAAMP()
ProfileEventAAMP Constructor.
Definition: AampProfiler.cpp:37
PROFILE_BUCKET_FRAGMENT_AUXILIARY
@ PROFILE_BUCKET_FRAGMENT_AUXILIARY
Definition: AampProfiler.h:60