RDK Documentation (Open Sourced RDK Components)
StreamAbstractionAAMP_PROGRESSIVE Class Reference

Streamer for progressive mp3/mp4 playback. More...

#include <fragmentcollector_progressive.h>

Inheritance diagram for StreamAbstractionAAMP_PROGRESSIVE:
Inheritance graph
Collaboration diagram for StreamAbstractionAAMP_PROGRESSIVE:
Collaboration graph

Public Member Functions

 StreamAbstractionAAMP_PROGRESSIVE (AampLogManager *logObj, class PrivateInstanceAAMP *aamp, double seekpos, float rate)
 StreamAbstractionAAMP_PROGRESSIVE Constructor.
 
 ~StreamAbstractionAAMP_PROGRESSIVE ()
 StreamAbstractionAAMP_PROGRESSIVE Destructor.
 
 StreamAbstractionAAMP_PROGRESSIVE (const StreamAbstractionAAMP_PROGRESSIVE &)=delete
 Copy constructor disabled. More...
 
StreamAbstractionAAMP_PROGRESSIVEoperator= (const StreamAbstractionAAMP_PROGRESSIVE &)=delete
 assignment operator disabled More...
 
void DumpProfiles (void) override
 Stub implementation.
 
void Start () override
 Starts streaming. More...
 
void Stop (bool clearChannelData) override
 Stops streaming. More...
 
AAMPStatusType Init (TuneType tuneType) override
 Initialize a newly created object. More...
 
void GetStreamFormat (StreamOutputFormat &primaryOutputFormat, StreamOutputFormat &audioOutputFormat, StreamOutputFormat &auxOutputFormat, StreamOutputFormat &subtitleOutputFormat) override
 Get output format of stream. More...
 
double GetStreamPosition () override
 Get current stream position. More...
 
MediaTrackGetMediaTrack (TrackType type) override
 Return MediaTrack of requested type. More...
 
double GetFirstPTS () override
 Get PTS of first sample. More...
 
double GetStartTimeOfFirstPTS () override
 Get Start time PTS of first sample. More...
 
double GetBufferedDuration () override
 Get the Buffered duration.
 
bool IsInitialCachingSupported () override
 check whether initial caching data supported More...
 
int GetBWIndex (long bitrate) override
 Get index of profile corresponds to bandwidth. More...
 
std::vector< long > GetVideoBitrates (void) override
 To get the available video bitrates. More...
 
std::vector< long > GetAudioBitrates (void) override
 To get the available audio bitrates. More...
 
long GetMaxBitrate (void) override
 Gets Max Bitrate avialable for current playback. More...
 
void StopInjection (void) override
 Stops injecting fragments to StreamSink.
 
void StartInjection (void) override
 Start injecting fragments to StreamSink.
 
void SeekPosUpdate (double)
 Update seek position when player is initialized. More...
 
void FetcherLoop ()
 harvest chunks from large mp3/mp4 More...
 
std::vector< StreamInfo * > GetAvailableVideoTracks (void) override
 To get the available video tracks. More...
 
std::vector< StreamInfo * > GetAvailableThumbnailTracks (void) override
 To get the available thumbnail tracks. More...
 
bool SetThumbnailTrack (int) override
 Function to set thumbnail track for processing. More...
 
std::vector< ThumbnailDataGetThumbnailRangeData (double, double, std::string *, int *, int *, int *, int *) override
 
bool Is4KStream (int &height, long &bandwidth) override
 check if current stream have 4K content More...
 
- Public Member Functions inherited from StreamAbstractionAAMP
 StreamAbstractionAAMP (AampLogManager *logObj, PrivateInstanceAAMP *aamp)
 StreamAbstractionAAMP constructor.
 
virtual ~StreamAbstractionAAMP ()
 StreamAbstractionAAMP destructor.
 
 StreamAbstractionAAMP (const StreamAbstractionAAMP &)=delete
 StreamAbstractionAAMP Copy Constructor.
 
StreamAbstractionAAMPoperator= (const StreamAbstractionAAMP &)=delete
 StreamAbstractionAAMP assignment operator overloading.
 
void WaitForVideoTrackCatchup ()
 Waits audio track injection until caught up with video track. Used internally by injection logic. More...
 
void ReassessAndResumeAudioTrack (bool abort)
 Unblock track if caught up with video or downloads are stopped. More...
 
void SetTsbBandwidth (long tsbBandwidth)
 When TSB is involved, use this to set bandwidth to be reported. More...
 
long GetTsbBandwidth ()
 When TSB is involved, use this to get bandwidth to be reported. More...
 
void SetESChangeStatus (void)
 Set elementary stream type change status for reconfigure the pipeline. More...
 
void ResetESChangeStatus (void)
 Reset elementary stream type change status once the pipeline reconfigured. More...
 
bool GetESChangeStatus (void)
 Get elementary stream type change status for reconfigure the pipeline.. More...
 
bool RampDownProfile (long http_error)
 Rampdown profile. More...
 
void GetDesiredProfileOnBuffer (int currProfileIndex, int &newProfileIndex)
 Get Desired Profile based on Buffer availability. More...
 
void GetDesiredProfileOnSteadyState (int currProfileIndex, int &newProfileIndex, long nwBandwidth)
 Get Desired Profile on steady state. More...
 
void ConfigureTimeoutOnBuffer ()
 Configure download timeouts based on buffer. More...
 
bool IsLowestProfile (int currentProfileIndex)
 Check whether the current profile is lowest. More...
 
long getOriginalCurlError (long http_error)
 Convert custom curl errors to original. More...
 
bool CheckForRampDownProfile (long http_error)
 Check for ramdown profile. More...
 
void CheckForProfileChange (void)
 Checks and update profile based on bandwidth. More...
 
int GetIframeTrack ()
 Get iframe track index. This shall be called only after UpdateIframeTracks() is done. More...
 
void UpdateIframeTracks ()
 Update iframe tracks. Subclasses shall invoke this after StreamInfo is populated . More...
 
double LastVideoFragParsedTimeMS (void)
 Get the last video fragment parsed time. More...
 
int GetDesiredProfile (bool getMidProfile)
 Get the desired profile to start fetching. More...
 
void UpdateRampdownProfileReason (void)
 Update rampdown profile on network failure. More...
 
void NotifyBitRateUpdate (int profileIndex, const StreamInfo &cacheFragStreamInfo, double position)
 Notify bitrate updates to application. Used internally by injection logic. More...
 
bool IsStreamerAtLivePoint ()
 Whether we are playing at live point or not. More...
 
virtual bool GetPreferredLiveOffsetFromConfig ()
 Set the offset value Live object. More...
 
virtual void NotifyPlaybackPaused (bool paused)
 Function called when playback is paused to update related flags. More...
 
bool CheckIfPlayerRunningDry (void)
 Check if player caches are running dry. More...
 
void CheckForPlaybackStall (bool fragmentParsed)
 Check if playback has stalled and update related flags. More...
 
void NotifyFirstFragmentInjected (void)
 MediaTracks shall call this to notify first fragment is injected. More...
 
double GetElapsedTime ()
 Get elapsed time of play-back. More...
 
virtual double GetFirstPeriodStartTime ()
 
virtual double GetFirstPeriodDynamicStartTime ()
 
virtual uint32_t GetCurrPeriodTimeScale ()
 
bool CheckForRampDownLimitReached ()
 Check for ramp down limit reached by player. More...
 
int GetMaxBWProfile ()
 Get profile index of highest bandwidth. More...
 
ABRManager & GetABRManager ()
 Get the ABRManager reference. More...
 
virtual int GetProfileCount ()
 Get number of profiles/ representations from subclass. More...
 
virtual int GetProfileIndexForBandwidth (long mTsbBandwidth)
 Get profile index for TsbBandwidth. More...
 
long GetCurProfIdxBW ()
 
long GetVideoBitrate (void)
 Get the bitrate of current video profile selected. More...
 
long GetAudioBitrate (void)
 Get the bitrate of current audio profile selected. More...
 
void SetVideoBitrate (long bitrate)
 Set a preferred bitrate for video. More...
 
bool IsStreamerStalled (void)
 Check if playback stalled in fragment collector side. More...
 
bool IsMuxedStream ()
 Check if current stream is muxed. More...
 
virtual void NotifyFirstVideoPTS (unsigned long long pts, unsigned long timeScale)
 Receives first video PTS for the current playback. More...
 
virtual void StartSubtitleParser ()
 Kicks off subtitle display - sent at start of video presentation. More...
 
virtual void PauseSubtitleParser (bool pause)
 Pause/unpause subtitles. More...
 
void WaitForAudioTrackCatchup (void)
 Waits subtitle track injection until caught up with muxed/audio track. Used internally by injection logic. More...
 
void AbortWaitForAudioTrackCatchup (bool force)
 Unblock subtitle track injector if downloads are stopped. More...
 
virtual void SetCDAIObject (CDAIObject *cdaiObj)
 Set Client Side DAI object instance. More...
 
virtual bool IsEOSReached ()
 Checks if streamer reached end of stream. More...
 
virtual std::vector< AudioTrackInfo > & GetAvailableAudioTracks (bool allTrack=false)
 Get available audio tracks. More...
 
virtual std::vector< TextTrackInfo > & GetAvailableTextTracks (bool allTrack=false)
 Get available text tracks. More...
 
double GetLastInjectedFragmentPosition ()
 Function to returns last injected fragment position. More...
 
bool ProcessDiscontinuity (TrackType type)
 Function to process discontinuity. More...
 
void AbortWaitForDiscontinuity ()
 Function to abort any wait for discontinuity by injector theads. More...
 
void CheckForMediaTrackInjectionStall (TrackType type)
 Function to check if any media tracks are stalled on discontinuity. More...
 
double GetBufferedVideoDurationSec ()
 Get buffered video duration in seconds. More...
 
void UpdateStreamInfoBitrateData (int profileIndex, StreamInfo &cacheFragStreamInfo)
 Function to update stream info of current fetched fragment. More...
 
virtual int GetAudioTrack ()
 Get current audio track. More...
 
virtual bool GetCurrentAudioTrack (AudioTrackInfo &audioTrack)
 Get current audio track information. More...
 
virtual bool GetCurrentTextTrack (TextTrackInfo &textTrack)
 Get current text track. More...
 
int GetTextTrack ()
 Get current text track. More...
 
void RefreshSubtitles ()
 Refresh subtitle track. More...
 
virtual void SetVideoRectangle (int x, int y, int w, int h)
 setVideoRectangle sets the position coordinates (x,y) & size (w,h) for OTA streams only More...
 
virtual void SetAudioTrack (int index)
 SetAudioTrack set the audio track using index value. [currently for OTA]. More...
 
virtual void SetAudioTrackByLanguage (const char *lang)
 SetAudioTrackByLanguage set the audio language. [currently for OTA]. More...
 
virtual void SetPreferredAudioLanguages ()
 SetPreferredAudioLanguages set the preferred audio languages and rendition. [currently for OTA]. More...
 
void MuteSubtitles (bool mute)
 Send a MUTE/UNMUTE packet to the subtitle renderer. More...
 
void WaitForVideoTrackCatchupForAux ()
 
virtual void ApplyContentRestrictions (std::vector< std::string > restrictions)
 Set Content Restrictions. More...
 
virtual void DisableContentRestrictions (long grace, long time, bool eventChange)
 Disable Content Restrictions - unlock. More...
 
virtual void EnableContentRestrictions ()
 Enable Content Restrictions - lock. More...
 
bool GetAudioFwdToAuxStatus ()
 Get audio forward to aux pipeline status. More...
 
void SetAudioFwdToAuxStatus (bool status)
 Set audio forward to aux pipeline status. More...
 
virtual void SetAudioTrackInfoFromMuxedStream (std::vector< AudioTrackInfo > &vector)
 Set AudioTrack info from Muxed stream. More...
 
void SetCurrentAudioTrackIndex (std::string &index)
 Set current audio track index. More...
 
virtual void ChangeMuxedAudioTrackIndex (std::string &index)
 Change muxed audio track index. More...
 
virtual void InitSubtitleParser (char *data)
 Initilaize subtitle parser for sidecar support. More...
 
virtual void ResetSubtitle ()
 reset subtitle parser created for sidecar support More...
 
virtual void MuteSubtitleOnPause ()
 mute subtitles on pause More...
 
virtual void ResumeSubtitleOnPlay (bool mute, char *data)
 resume subtitles on play More...
 
virtual void MuteSidecarSubtitles (bool mute)
 mute/unmute sidecar subtitles More...
 
virtual void ResumeSubtitleAfterSeek (bool mute, char *data)
 resume subtitles after trickplay More...
 
virtual bool SetTextStyle (const std::string &options)
 Set the text style of the subtitle to the options passed. More...
 

Data Fields

double seekPosition
 
- Data Fields inherited from StreamAbstractionAAMP
PrivateInstanceAAMPaamp
 
AampLogManagermLogObj
 
bool trickplayMode
 
int currentProfileIndex
 
int currentAudioProfileIndex
 
int currentTextTrackProfileIndex
 
int profileIdxForBandwidthNotification
 
bool hasDrm
 
bool mIsAtLivePoint
 
bool mIsPlaybackStalled
 
bool mNetworkDownDetected
 
bool mCheckForRampdown
 
TuneType mTuneType
 
int mRampDownCount
 
double mProgramStartTime
 
int mTsbMaxBitrateProfileIndex
 

Protected Member Functions

StreamInfoGetStreamInfo (int idx) override
 Get stream information of a profile from subclass. More...
 

Private Member Functions

void StreamFile (const char *uri, long *http_error)
 

Private Attributes

bool fragmentCollectorThreadStarted
 
pthread_t fragmentCollectorThreadID
 

Additional Inherited Members

- Protected Attributes inherited from StreamAbstractionAAMP
std::vector< AudioTrackInfomAudioTracks
 
std::vector< AudioTrackInfomAudioTracksAll
 
std::vector< TextTrackInfomTextTracksAll
 
std::vector< TextTrackInfomTextTracks
 
MediaTrackDiscontinuityState mTrackState
 
std::string mAudioTrackIndex
 
std::string mTextTrackIndex
 
bool mFwdAudioToAux
 

yes

Streamer for progressive mp3/mp4 playback.

Definition at line 37 of file fragmentcollector_progressive.h.

Constructor & Destructor Documentation

◆ StreamAbstractionAAMP_PROGRESSIVE()

StreamAbstractionAAMP_PROGRESSIVE::StreamAbstractionAAMP_PROGRESSIVE ( const StreamAbstractionAAMP_PROGRESSIVE )
delete

Copy constructor disabled.

Member Function Documentation

◆ operator=()

StreamAbstractionAAMP_PROGRESSIVE& StreamAbstractionAAMP_PROGRESSIVE::operator= ( const StreamAbstractionAAMP_PROGRESSIVE )
delete

assignment operator disabled

◆ Start()

void StreamAbstractionAAMP_PROGRESSIVE::Start ( )
overridevirtual

Starts streaming.

Returns
void

Implements StreamAbstractionAAMP.

Definition at line 243 of file fragmentcollector_progressive.cpp.

◆ Stop()

void StreamAbstractionAAMP_PROGRESSIVE::Stop ( bool  clearChannelData)
overridevirtual

Stops streaming.

Returns
void

Implements StreamAbstractionAAMP.

Definition at line 252 of file fragmentcollector_progressive.cpp.

◆ Init()

AAMPStatusType StreamAbstractionAAMP_PROGRESSIVE::Init ( TuneType  tuneType)
overridevirtual

Initialize a newly created object.

Note
To be implemented by sub classes
Parameters
tuneTypeto set type of object.
Return values
trueon success
falseon failure

Implements StreamAbstractionAAMP.

Definition at line 198 of file fragmentcollector_progressive.cpp.

◆ GetStreamFormat()

void StreamAbstractionAAMP_PROGRESSIVE::GetStreamFormat ( StreamOutputFormat primaryOutputFormat,
StreamOutputFormat audioOutputFormat,
StreamOutputFormat auxOutputFormat,
StreamOutputFormat subtitleOutputFormat 
)
overridevirtual

Get output format of stream.

Parameters
[out]primaryOutputFormat- format of primary track
[out]audioOutputFormat- format of audio track
[out]auxOutputFormat- format of aux audio track
[out]subtitleOutputFormat- format of sutbtile track

Implements StreamAbstractionAAMP.

Definition at line 279 of file fragmentcollector_progressive.cpp.

◆ GetStreamPosition()

double StreamAbstractionAAMP_PROGRESSIVE::GetStreamPosition ( )
overridevirtual

Get current stream position.

Return values
currentposition of stream.

Implements StreamAbstractionAAMP.

Definition at line 298 of file fragmentcollector_progressive.cpp.

◆ GetMediaTrack()

MediaTrack * StreamAbstractionAAMP_PROGRESSIVE::GetMediaTrack ( TrackType  type)
overridevirtual

Return MediaTrack of requested type.

Parameters
[in]type- track type
Return values
MediaTrackpointer.

Implements StreamAbstractionAAMP.

Definition at line 290 of file fragmentcollector_progressive.cpp.

◆ GetFirstPTS()

double StreamAbstractionAAMP_PROGRESSIVE::GetFirstPTS ( )
overridevirtual

Get PTS of first sample.

Return values
PTSof first sample

Implements StreamAbstractionAAMP.

Definition at line 314 of file fragmentcollector_progressive.cpp.

◆ GetStartTimeOfFirstPTS()

double StreamAbstractionAAMP_PROGRESSIVE::GetStartTimeOfFirstPTS ( )
overridevirtual

Get Start time PTS of first sample.

Return values
starttime of first sample

Implements StreamAbstractionAAMP.

Definition at line 322 of file fragmentcollector_progressive.cpp.

◆ IsInitialCachingSupported()

bool StreamAbstractionAAMP_PROGRESSIVE::IsInitialCachingSupported ( )
overridevirtual

check whether initial caching data supported

Reimplemented from StreamAbstractionAAMP.

Definition at line 339 of file fragmentcollector_progressive.cpp.

◆ GetBWIndex()

int StreamAbstractionAAMP_PROGRESSIVE::GetBWIndex ( long  bitrate)
overridevirtual

Get index of profile corresponds to bandwidth.

Parameters
[in]bitrateBitrate to lookup profile
Return values
profileindex

Implements StreamAbstractionAAMP.

Definition at line 347 of file fragmentcollector_progressive.cpp.

◆ GetVideoBitrates()

std::vector< long > StreamAbstractionAAMP_PROGRESSIVE::GetVideoBitrates ( void  )
overridevirtual

To get the available video bitrates.

Returns
available video bitrates

Implements StreamAbstractionAAMP.

Definition at line 355 of file fragmentcollector_progressive.cpp.

◆ GetAudioBitrates()

std::vector< long > StreamAbstractionAAMP_PROGRESSIVE::GetAudioBitrates ( void  )
overridevirtual

To get the available audio bitrates.

Returns
available audio bitrates

Implements StreamAbstractionAAMP.

Definition at line 371 of file fragmentcollector_progressive.cpp.

◆ GetMaxBitrate()

long StreamAbstractionAAMP_PROGRESSIVE::GetMaxBitrate ( void  )
overridevirtual

Gets Max Bitrate avialable for current playback.

Returns
long MAX video bitrates

Reimplemented from StreamAbstractionAAMP.

Definition at line 363 of file fragmentcollector_progressive.cpp.

◆ SeekPosUpdate()

void StreamAbstractionAAMP_PROGRESSIVE::SeekPosUpdate ( double  secondsRelativeToTuneTime)
inlinevirtual

Update seek position when player is initialized.

Parameters
[in]secondsRelativeToTuneTimeseekposition time.

Implements StreamAbstractionAAMP.

Definition at line 152 of file fragmentcollector_progressive.h.

◆ FetcherLoop()

StreamAbstractionAAMP_PROGRESSIVE::FetcherLoop ( )

harvest chunks from large mp3/mp4

Returns
void

Definition at line 156 of file fragmentcollector_progressive.cpp.

◆ GetAvailableVideoTracks()

std::vector< StreamInfo * > StreamAbstractionAAMP_PROGRESSIVE::GetAvailableVideoTracks ( void  )
overridevirtual

To get the available video tracks.

Returns
available video tracks.

Implements StreamAbstractionAAMP.

Definition at line 379 of file fragmentcollector_progressive.cpp.

◆ GetAvailableThumbnailTracks()

std::vector< StreamInfo * > StreamAbstractionAAMP_PROGRESSIVE::GetAvailableThumbnailTracks ( void  )
overridevirtual

To get the available thumbnail tracks.

Returns
available thumbnail tracks.

Implements StreamAbstractionAAMP.

Definition at line 387 of file fragmentcollector_progressive.cpp.

◆ SetThumbnailTrack()

bool StreamAbstractionAAMP_PROGRESSIVE::SetThumbnailTrack ( int  thumbnailIndex)
overridevirtual

Function to set thumbnail track for processing.

Parameters
thumbnailIndexthumbnail index value indicating the track to select
Returns
bool true on success.

Implements StreamAbstractionAAMP.

Definition at line 395 of file fragmentcollector_progressive.cpp.

◆ GetThumbnailRangeData()

std::vector< ThumbnailData > StreamAbstractionAAMP_PROGRESSIVE::GetThumbnailRangeData ( double  start,
double  end,
std::string *  baseurl,
int *  raw_w,
int *  raw_h,
int *  width,
int *  height 
)
overridevirtual
Returns
Updated vector of available thumbnail data.

Implements StreamAbstractionAAMP.

Definition at line 402 of file fragmentcollector_progressive.cpp.

◆ Is4KStream()

StreamAbstractionAAMP_PROGRESSIVE::Is4KStream ( int &  height,
long &  bandwidth 
)
inlineoverridevirtual

check if current stream have 4K content

Parameters
height- resolution of 4K stream if found
bandwidth- bandwidth of 4K stream if foudd
Returns
true on success

Implements StreamAbstractionAAMP.

Definition at line 188 of file fragmentcollector_progressive.h.

◆ GetStreamInfo()

StreamInfo * StreamAbstractionAAMP_PROGRESSIVE::GetStreamInfo ( int  idx)
overrideprotectedvirtual

Get stream information of a profile from subclass.

Parameters
[in]idx- profile index.
Return values
streaminformation corresponding to index.

Implements StreamAbstractionAAMP.

Definition at line 306 of file fragmentcollector_progressive.cpp.


The documentation for this class was generated from the following files: