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

Cache handler for AAMP. More...

#include <iostream>
#include <memory>
#include <unordered_map>
#include "priv_aamp.h"
Include dependency graph for AampCacheHandler.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  playlistcacheddata
 PlayListCachedData structure to store playlist data. More...
 
struct  initfragtrackstruct
 initfragtrackstruct to store init fragment url per media track in FIFO Queue. More...
 
class  AampCacheHandler
 Handles Aamp Cahe operations. More...
 

Macros

#define PLAYLIST_CACHE_SIZE_UNLIMITED   -1
 

Typedefs

typedef struct playlistcacheddata PlayListCachedData
 PlayListCachedData structure to store playlist data.
 
typedef struct playlistcacheddata InitFragCacheStruct
 InitFragCacheStruct to store Init Fragment data Init fragment cache mechanism All types (VID/AUD/SUB/AUX) of Init Fragment maintained in a single Cache Table, and these fragment's url are stored in a Track Queue corrsponding to file type. This queue will be used to count fragments inserted, to remove entry in FIFO order upon exceeding limit with respect to file type. Eg: TrackQ[VID]={"http://sample_domain/vid_qual1.init"} umCacheTable={{"http://sample_domain/vid_qual1.init"}, VidUrlData1} {"http://sample_domain/vid_qual2.init"} {{"http://sample_domain/vid_qual1.init_redirect"}, VidUrlData1} {"http://sample_domain/vid_qual3.init"} {{"http://sample_domain/aud_qual1.init"}, AudUrlData1} TrackQ[AUD]={"http://sample_domain/aud_qual1.init"} {{"http://sample_domain/vid_qual2.init"}, VidUrlData2} {"http://sample_domain/aud_qual2.init"} {{"http://sample_domain/aud_qual1.init_redirect"}, AudUrlData1} {"http://sample_domain/aud_qual3.init"} {{"http://sample_domain/aud_qual3.init"}, AudUrlData3} {{"http://sample_domain/aud_qual2.init"}, AudUrlData2} {{"http://sample_domain/vid_qual2.init_redirect"}, VidUrlData2} {{"http://sample_domain/vid_qual3.init"}, VidUrlData3} {{"http://sample_domain/aud_qual2.init_redirect"}, AudUrlData2} Track queue will not maintain duplicate entry of cache table, so we can have maximum of different init fragments in cache table. As per above eg, TrackQ[VID] size is 3, but cache table has 5 including effective url entry. If we maintain effective url entry in cache queue, we will have only 3 init fragments in diff quality. If cache table reaches max no of cache per track, we remove both main entry and dup entry if present, in FIFO order. More...
 
typedef struct initfragtrackstruct InitFragTrackStruct
 initfragtrackstruct to store init fragment url per media track in FIFO Queue.
 

yes

Cache handler for AAMP.

Definition in file AampCacheHandler.h.

Typedef Documentation

◆ InitFragCacheStruct

InitFragCacheStruct to store Init Fragment data Init fragment cache mechanism All types (VID/AUD/SUB/AUX) of Init Fragment maintained in a single Cache Table, and these fragment's url are stored in a Track Queue corrsponding to file type. This queue will be used to count fragments inserted, to remove entry in FIFO order upon exceeding limit with respect to file type. Eg: TrackQ[VID]={"http://sample_domain/vid_qual1.init"} umCacheTable={{"http://sample_domain/vid_qual1.init"}, VidUrlData1} {"http://sample_domain/vid_qual2.init"} {{"http://sample_domain/vid_qual1.init_redirect"}, VidUrlData1} {"http://sample_domain/vid_qual3.init"} {{"http://sample_domain/aud_qual1.init"}, AudUrlData1} TrackQ[AUD]={"http://sample_domain/aud_qual1.init"} {{"http://sample_domain/vid_qual2.init"}, VidUrlData2} {"http://sample_domain/aud_qual2.init"} {{"http://sample_domain/aud_qual1.init_redirect"}, AudUrlData1} {"http://sample_domain/aud_qual3.init"} {{"http://sample_domain/aud_qual3.init"}, AudUrlData3} {{"http://sample_domain/aud_qual2.init"}, AudUrlData2} {{"http://sample_domain/vid_qual2.init_redirect"}, VidUrlData2} {{"http://sample_domain/vid_qual3.init"}, VidUrlData3} {{"http://sample_domain/aud_qual2.init_redirect"}, AudUrlData2} Track queue will not maintain duplicate entry of cache table, so we can have maximum of different init fragments in cache table. As per above eg, TrackQ[VID] size is 3, but cache table has 5 including effective url entry. If we maintain effective url entry in cache queue, we will have only 3 init fragments in diff quality. If cache table reaches max no of cache per track, we remove both main entry and dup entry if present, in FIFO order.

Fragment cache & track queue will be cleared upon exiting from aamp player or from async clear thread.

Definition at line 91 of file AampCacheHandler.h.