MythTV  master
Public Member Functions | Protected Member Functions | Private Attributes | List of all members
StreamWorker Class Reference
Inheritance diagram for StreamWorker:
Inheritance graph
[legend]
Collaboration diagram for StreamWorker:
Collaboration graph
[legend]

Public Member Functions

 StreamWorker (HLSRingBuffer *parent, int startup, int buffer)
 
void Cancel (void)
 
int CurrentStream (void)
 
int Segment (void)
 
void Seek (int val)
 
bool IsAtEnd (bool lock=false)
 
bool GotBufferedSegments (int from, int count) const
 check that we have at least [count] segments buffered from position [from] More...
 
int CurrentPlaybackBuffer (bool lock=true)
 
int CurrentLiveBuffer (void)
 
void SetBuffer (int val)
 
void AddSegmentToStream (int segnum, int stream)
 
void RemoveSegmentFromStream (int segnum)
 
int StreamForSegment (int segmentid, bool lock=true) const
 return the stream used to download a particular segment or -1 if it was never downloaded More...
 
void Wakeup (void)
 
void WaitForSignal (std::chrono::milliseconds time=std::chrono::milliseconds::max())
 
void Lock (void)
 
void Unlock (void)
 
int64_t Bandwidth (void) const
 
double AverageNewBandwidth (int64_t bandwidth)
 
- Public Member Functions inherited from MThread
 MThread (const QString &objectName)
 Standard constructor. More...
 
 MThread (const QString &objectName, QRunnable *runnable)
 Use this constructor if you want the default run() method to run the QRunnable's run() method instead of entering the Qt event loop. More...
 
virtual ~MThread ()
 
 MThread (const MThread &)=delete
 
MThreadoperator= (const MThread &)=delete
 
void RunProlog (void)
 Sets up a thread, call this if you reimplement run(). More...
 
void RunEpilog (void)
 Cleans up a thread's resources, call this if you reimplement run(). More...
 
QThread * qthread (void)
 Returns the thread, this will always return the same pointer no matter how often you restart the thread. More...
 
void setObjectName (const QString &name)
 
QString objectName (void) const
 
void setPriority (QThread::Priority priority)
 
QThread::Priority priority (void) const
 
bool isFinished (void) const
 
bool isRunning (void) const
 
void setStackSize (uint stackSize)
 
uint stackSize (void) const
 
void exit (int retcode=0)
 Use this to exit from the thread if you are using a Qt event loop. More...
 
void start (QThread::Priority p=QThread::InheritPriority)
 Tell MThread to start running the thread in the near future. More...
 
void terminate (void)
 Kill a thread unsafely. More...
 
void quit (void)
 calls exit(0) More...
 
bool wait (std::chrono::milliseconds time=std::chrono::milliseconds::max())
 Wait for the MThread to exit, with a maximum timeout. More...
 

Protected Member Functions

void run (void) override
 Runs the Qt event loop unless we have a QRunnable, in which case we run the runnable run instead. More...
 
int BandwidthAdaptation (int progid, uint64_t &bandwidth) const
 
- Protected Member Functions inherited from MThread
int exec (void)
 Enters the qt event loop. call exit or quit to exit thread. More...
 

Private Attributes

HLSRingBufferm_parent {nullptr}
 
bool m_interrupted {false}
 
int64_t m_bandwidth {0}
 
int m_stream {0}
 
int m_segment
 
int m_buffer
 
QMap< int, int > m_segmap
 
QMutex m_lock
 
QWaitCondition m_waitcond
 
double m_sumbandwidth {0.0}
 
int m_countbandwidth {0}
 

Additional Inherited Members

- Static Public Member Functions inherited from MThread
static void ThreadSetup (const QString &name)
 This is to be called on startup in those few threads that haven't been ported to MThread. More...
 
static void ThreadCleanup (void)
 This is to be called on exit in those few threads that haven't been ported to MThread. More...
 
static void Cleanup (void)
 This will print out all the running threads, call exit(1) on each and then wait up to 5 seconds total for all the threads to exit. More...
 
static void GetAllThreadNames (QStringList &list)
 
static void GetAllRunningThreadNames (QStringList &list)
 
- Static Protected Member Functions inherited from MThread
static void setTerminationEnabled (bool enabled=true)
 
static void usleep (std::chrono::microseconds time)
 
template<typename R , typename P >
static std::enable_if_t< std::chrono::treat_as_floating_point< R >::value, void > usleep (std::chrono::duration< R, P > time)
 
- Protected Attributes inherited from MThread
MThreadInternalm_thread {nullptr}
 
QRunnable * m_runnable {nullptr}
 
bool m_prologExecuted {true}
 
bool m_epilogExecuted {true}
 

Detailed Description

Definition at line 924 of file httplivestreambuffer.cpp.

Constructor & Destructor Documentation

◆ StreamWorker()

StreamWorker::StreamWorker ( HLSRingBuffer parent,
int  startup,
int  buffer 
)
inline

Definition at line 927 of file httplivestreambuffer.cpp.

Member Function Documentation

◆ Cancel()

void StreamWorker::Cancel ( void  )
inline

Definition at line 931 of file httplivestreambuffer.cpp.

Referenced by HLSRingBuffer::~HLSRingBuffer().

◆ CurrentStream()

int StreamWorker::CurrentStream ( void  )
inline

Definition at line 949 of file httplivestreambuffer.cpp.

Referenced by HLSRingBuffer::GetCurrentStream().

◆ Segment()

int StreamWorker::Segment ( void  )
inline

Definition at line 954 of file httplivestreambuffer.cpp.

◆ Seek()

void StreamWorker::Seek ( int  val)
inline

◆ IsAtEnd()

bool StreamWorker::IsAtEnd ( bool  lock = false)
inline

◆ GotBufferedSegments()

bool StreamWorker::GotBufferedSegments ( int  from,
int  count 
) const
inline

check that we have at least [count] segments buffered from position [from]

Definition at line 984 of file httplivestreambuffer.cpp.

Referenced by HLSRingBuffer::SeekInternal(), and HLSRingBuffer::WaitUntilBuffered().

◆ CurrentPlaybackBuffer()

int StreamWorker::CurrentPlaybackBuffer ( bool  lock = true)
inline

◆ CurrentLiveBuffer()

int StreamWorker::CurrentLiveBuffer ( void  )
inline

Definition at line 1012 of file httplivestreambuffer.cpp.

Referenced by run().

◆ SetBuffer()

void StreamWorker::SetBuffer ( int  val)
inline

Definition at line 1016 of file httplivestreambuffer.cpp.

◆ AddSegmentToStream()

void StreamWorker::AddSegmentToStream ( int  segnum,
int  stream 
)
inline

Definition at line 1021 of file httplivestreambuffer.cpp.

Referenced by run().

◆ RemoveSegmentFromStream()

void StreamWorker::RemoveSegmentFromStream ( int  segnum)
inline

Definition at line 1028 of file httplivestreambuffer.cpp.

Referenced by HLSRingBuffer::SafeRead().

◆ StreamForSegment()

int StreamWorker::StreamForSegment ( int  segmentid,
bool  lock = true 
) const
inline

return the stream used to download a particular segment or -1 if it was never downloaded

Definition at line 1038 of file httplivestreambuffer.cpp.

Referenced by HLSRingBuffer::DurationForBytes(), HLSRingBuffer::GetSegment(), HLSRingBuffer::GetStreamForSegment(), GotBufferedSegments(), run(), HLSRingBuffer::SafeRead(), and HLSRingBuffer::SeekInternal().

◆ Wakeup()

void StreamWorker::Wakeup ( void  )
inline

◆ WaitForSignal()

void StreamWorker::WaitForSignal ( std::chrono::milliseconds  time = std::chrono::milliseconds::max())
inline

◆ Lock()

void StreamWorker::Lock ( void  )
inline

◆ Unlock()

void StreamWorker::Unlock ( void  )
inline

◆ Bandwidth()

int64_t StreamWorker::Bandwidth ( void  ) const
inline

Definition at line 1078 of file httplivestreambuffer.cpp.

Referenced by HLSRingBuffer::SeekInternal().

◆ AverageNewBandwidth()

double StreamWorker::AverageNewBandwidth ( int64_t  bandwidth)
inline

Definition at line 1082 of file httplivestreambuffer.cpp.

Referenced by run().

◆ run()

void StreamWorker::run ( void  )
inlineoverrideprotectedvirtual

Runs the Qt event loop unless we have a QRunnable, in which case we run the runnable run instead.

Note
If you override this method you must call RunProlog before you do any work and RunEpilog before you exit the run method.

Reimplemented from MThread.

Definition at line 1091 of file httplivestreambuffer.cpp.

◆ BandwidthAdaptation()

int StreamWorker::BandwidthAdaptation ( int  progid,
uint64_t &  bandwidth 
) const
inlineprotected

Definition at line 1200 of file httplivestreambuffer.cpp.

Referenced by run().

Member Data Documentation

◆ m_parent

HLSRingBuffer* StreamWorker::m_parent {nullptr}
private

◆ m_interrupted

bool StreamWorker::m_interrupted {false}
private

Definition at line 1234 of file httplivestreambuffer.cpp.

Referenced by AddSegmentToStream(), Cancel(), and run().

◆ m_bandwidth

int64_t StreamWorker::m_bandwidth {0}
private

Definition at line 1236 of file httplivestreambuffer.cpp.

Referenced by AverageNewBandwidth(), Bandwidth(), and run().

◆ m_stream

int StreamWorker::m_stream {0}
private

Definition at line 1237 of file httplivestreambuffer.cpp.

Referenced by CurrentStream(), and run().

◆ m_segment

int StreamWorker::m_segment
private

◆ m_buffer

int StreamWorker::m_buffer
private

Definition at line 1239 of file httplivestreambuffer.cpp.

Referenced by run(), and SetBuffer().

◆ m_segmap

QMap<int,int> StreamWorker::m_segmap
private

◆ m_lock

QMutex StreamWorker::m_lock
mutableprivate

◆ m_waitcond

QWaitCondition StreamWorker::m_waitcond
private

Definition at line 1242 of file httplivestreambuffer.cpp.

Referenced by WaitForSignal(), and Wakeup().

◆ m_sumbandwidth

double StreamWorker::m_sumbandwidth {0.0}
private

Definition at line 1243 of file httplivestreambuffer.cpp.

Referenced by AverageNewBandwidth().

◆ m_countbandwidth

int StreamWorker::m_countbandwidth {0}
private

Definition at line 1244 of file httplivestreambuffer.cpp.

Referenced by AverageNewBandwidth().


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