MythTV
master
|
#include <libmythtv/io/mythstreamingbuffer.h>
Public Member Functions | |
MythStreamingBuffer (const QString &Filename) | |
~MythStreamingBuffer () override | |
bool | IsOpen (void) const override |
long long | GetReadPosition (void) const override |
bool | OpenFile (const QString &Filename, std::chrono::milliseconds Retry=kDefaultOpenTimeout) override |
bool | IsStreamed (void) override |
bool | IsSeekingAllowed (void) override |
bool | IsBookmarkAllowed (void) override |
![]() | |
~MythMediaBuffer () override=0 | |
Deletes. More... | |
MythBufferType | GetType () const |
void | SetOldFile (bool Old) |
Tell RingBuffer if this is an old file or not. More... | |
void | UpdateRawBitrate (uint RawBitrate) |
Set the raw bit rate, to allow RingBuffer adjust effective bitrate. More... | |
void | UpdatePlaySpeed (float PlaySpeed) |
Set the play speed, to allow RingBuffer adjust effective bitrate. More... | |
void | EnableBitrateMonitor (bool Enable) |
void | SetBufferSizeFactors (bool EstBitrate, bool Matroska) |
Tells RingBuffer that the raw bitrate may be inaccurate and the underlying container is matroska, both of which may require a larger buffer size. More... | |
void | SetWaitForWrite (void) |
QString | GetSafeFilename (void) |
QString | GetFilename (void) const |
QString | GetSubtitleFilename (void) const |
QString | GetLastError (void) const |
bool | GetCommsError (void) const |
void | ResetCommsError (void) |
bool | GetStopReads (void) const |
QString | GetDecoderRate (void) |
QString | GetStorageRate (void) |
QString | GetAvailableBuffer (void) |
uint | GetBufferSize (void) const |
bool | IsNearEnd (double Framerate, uint Frames) const |
long long | GetWritePosition (void) const |
Returns how far into a ThreadedFileWriter file we have written. More... | |
long long | GetRealFileSize (void) const |
bool | IsDisc (void) const |
bool | IsDVD (void) const |
bool | IsBD (void) const |
const MythDVDBuffer * | DVD (void) const |
MythDVDBuffer * | DVD (void) |
const MythBDBuffer * | BD (void) const |
MythBDBuffer * | BD (void) |
int | Read (void *Buffer, int Count) |
This is the public method for reading from a file, it calls the appropriate read method if the file is remote or buffered, or a BD/DVD. More... | |
int | Peek (void *Buffer, int Count) |
int | Peek (std::vector< char > &Buffer) |
void | Reset (bool Full=false, bool ToAdjust=false, bool ResetInternal=false) |
Resets the read-ahead thread and our position in the file. More... | |
void | Pause (void) |
Pauses the read-ahead thread. Calls StopReads(void). More... | |
void | Unpause (void) |
Unpauses the read-ahead thread. Calls StartReads(void). More... | |
void | WaitForPause (void) |
Waits for Pause(void) to take effect. More... | |
void | Start (void) |
Starts the read-ahead thread. More... | |
void | StopReads (void) |
void | StartReads (void) |
long long | Seek (long long Position, int Whence, bool HasLock=false) |
long long | SetAdjustFilesize (void) |
int | GetReadBufAvail (void) const |
Returns number of bytes available for reading from buffer. More... | |
bool | SetReadInternalMode (bool Mode) |
bool | IsReadInternalMode (void) const |
bool | LiveMode (void) const |
Returns true if this RingBuffer has been assigned a LiveTVChain. More... | |
void | SetLiveMode (LiveTVChain *Chain) |
Assigns a LiveTVChain to this RingBuffer. More... | |
void | IgnoreLiveEOF (bool Ignore) |
Tells RingBuffer whether to ignore the end-of-file. More... | |
int | Write (const void *Buffer, uint Count) |
Writes buffer to ThreadedFileWriter::Write(const void*,uint) More... | |
bool | IsIOBound (void) const |
void | WriterFlush (void) |
Calls ThreadedFileWriter::Flush(void) More... | |
void | Sync (void) |
Calls ThreadedFileWriter::Sync(void) More... | |
long long | WriterSeek (long long Position, int Whence, bool HasLock=false) |
Calls ThreadedFileWriter::Seek(long long,int). More... | |
bool | WriterSetBlocking (bool Lock=true) |
Calls ThreadedFileWriter::SetBlocking(bool) More... | |
virtual int | BestBufferSize (void) |
virtual bool | StartFromBeginning (void) |
virtual void | IgnoreWaitStates (bool) |
virtual bool | IsInMenu (void) const |
virtual bool | IsInStillFrame (void) const |
virtual bool | IsInDiscMenuOrStillFrame (void) const |
virtual bool | HandleAction (const QStringList &, mpeg::chrono::pts) |
virtual bool | ReOpen (const QString &="") |
Protected Member Functions | |
int | SafeRead (void *Buffer, uint Size) override |
long long | GetRealFileSizeInternal (void) const override |
long long | SeekInternal (long long Position, int Whence) override |
![]() | |
MythMediaBuffer (MythBufferType Type) | |
void | run (void) override |
Runs the Qt event loop unless we have a QRunnable, in which case we run the runnable run instead. More... | |
void | CreateReadAheadBuffer (void) |
void | CalcReadAheadThresh (void) |
Calculates m_fillMin, m_fillThreshold, and m_readBlockSize from the estimated effective bitrate of the stream. More... | |
bool | PauseAndWait (void) |
int | ReadPriv (void *Buffer, int Count, bool Peek) |
When possible reads from the read-ahead buffer, otherwise reads directly from the device. More... | |
int | ReadDirect (void *Buffer, int Count, bool Peek) |
bool | WaitForReadsAllowed (void) |
int | WaitForAvail (int Count, std::chrono::milliseconds Timeout) |
int | ReadBufFree (void) const |
Returns number of bytes available for reading into buffer. More... | |
int | ReadBufAvail (void) const |
Returns number of bytes available for reading from buffer. More... | |
void | ResetReadAhead (long long NewInternal) |
Restart the read-ahead thread at the 'newinternal' position. More... | |
void | KillReadAheadThread (void) |
Stops the read-ahead thread, and waits for it to stop. More... | |
uint64_t | UpdateDecoderRate (uint64_t Latest=0) |
uint64_t | UpdateStorageRate (uint64_t Latest=0) |
![]() | |
int | exec (void) |
Enters the qt event loop. call exit or quit to exit thread. More... | |
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 | |
MThread & | operator= (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... | |
Private Attributes | |
struct AVIOContext * | m_context { nullptr } |
bool | m_streamed { true } |
bool | m_allowSeeks { false } |
Additional Inherited Members | |
![]() | |
static MythMediaBuffer * | Create (const QString &Filename, bool Write, bool UseReadAhead=true, std::chrono::milliseconds Timeout=kDefaultOpenTimeout, bool StreamOnly=false) |
Creates a RingBuffer instance. More... | |
static QString | BitrateToString (uint64_t Rate, bool Hz=false) |
static void | AVFormatInitNetwork (void) |
![]() | |
static constexpr std::chrono::milliseconds | kDefaultOpenTimeout { 2s } |
static constexpr std::chrono::milliseconds | kLiveTVOpenTimeout { 10s } |
![]() | |
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) |
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) |
![]() | |
MythBufferType | m_type |
QReadWriteLock | m_posLock |
long long | m_readPos { 0 } |
long long | m_writePos { 0 } |
long long | m_internalReadPos { 0 } |
long long | m_ignoreReadPos { -1 } |
QReadWriteLock | m_rbrLock |
int | m_rbrPos { 0 } |
QReadWriteLock | m_rbwLock |
int | m_rbwPos { 0 } |
volatile bool | m_stopReads {false} |
QString | m_safeFilename |
QReadWriteLock | m_rwLock |
QString | m_filename |
QString | m_subtitleFilename |
QString | m_lastError |
ThreadedFileWriter * | m_tfw { nullptr } |
int | m_fd2 { -1 } |
bool | m_writeMode { false } |
RemoteFile * | m_remotefile { nullptr } |
uint | m_bufferSize { BUFFER_SIZE_MINIMUM } |
bool | m_lowBuffers { false } |
bool | m_fileIsMatroska { false } |
bool | m_unknownBitrate { false } |
bool | m_startReadAhead { false } |
char * | m_readAheadBuffer { nullptr } |
bool | m_readAheadRunning { false } |
bool | m_reallyRunning { false } |
bool | m_requestPause { false } |
bool | m_paused { false } |
bool | m_ateof { false } |
bool | m_waitForWrite { false } |
bool | m_beingWritten { false } |
bool | m_readsAllowed { false } |
bool | m_readsDesired { false } |
volatile bool | m_recentSeek { true } |
bool | m_setSwitchToNext { false } |
uint | m_rawBitrate { 8000 } |
float | m_playSpeed { 1.0F } |
int | m_fillThreshold { 65536 } |
int | m_fillMin { -1 } |
int | m_readBlockSize { DEFAULT_CHUNK_SIZE} |
int | m_wantToRead { 0 } |
int | m_numFailures { 0 } |
bool | m_commsError { false } |
bool | m_oldfile { false } |
LiveTVChain * | m_liveTVChain { nullptr } |
bool | m_ignoreLiveEOF { false } |
long long | m_readAdjust { 0 } |
int | m_readOffset { 0 } |
bool | m_readInternalMode { false } |
bool | m_bitrateMonitorEnabled { false } |
QMutex | m_decoderReadLock |
QMap< std::chrono::milliseconds, uint64_t > | m_decoderReads |
QMutex | m_storageReadLock |
QMap< std::chrono::milliseconds, uint64_t > | m_storageReads |
QWaitCondition | m_generalWait |
Condition to signal that the read ahead thread is running. More... | |
![]() | |
MThreadInternal * | m_thread {nullptr} |
QRunnable * | m_runnable {nullptr} |
bool | m_prologExecuted {true} |
bool | m_epilogExecuted {true} |
Definition at line 7 of file mythstreamingbuffer.h.
|
explicit |
Definition at line 16 of file mythstreamingbuffer.cpp.
|
override |
Definition at line 23 of file mythstreamingbuffer.cpp.
|
overridevirtual |
Implements MythMediaBuffer.
Definition at line 33 of file mythstreamingbuffer.cpp.
|
overridevirtual |
Implements MythMediaBuffer.
Definition at line 41 of file mythstreamingbuffer.cpp.
|
overridevirtual |
Implements MythMediaBuffer.
Definition at line 54 of file mythstreamingbuffer.cpp.
Referenced by MythStreamingBuffer().
|
inlineoverridevirtual |
Reimplemented from MythMediaBuffer.
Definition at line 16 of file mythstreamingbuffer.h.
|
inlineoverridevirtual |
Reimplemented from MythMediaBuffer.
Definition at line 17 of file mythstreamingbuffer.h.
|
inlineoverridevirtual |
Reimplemented from MythMediaBuffer.
Definition at line 18 of file mythstreamingbuffer.h.
|
overrideprotectedvirtual |
Implements MythMediaBuffer.
Definition at line 106 of file mythstreamingbuffer.cpp.
|
overrideprotectedvirtual |
Reimplemented from MythMediaBuffer.
Definition at line 131 of file mythstreamingbuffer.cpp.
|
overrideprotectedvirtual |
Implements MythMediaBuffer.
Definition at line 89 of file mythstreamingbuffer.cpp.
|
private |
Definition at line 26 of file mythstreamingbuffer.h.
Referenced by GetRealFileSizeInternal(), IsOpen(), OpenFile(), SafeRead(), SeekInternal(), and ~MythStreamingBuffer().
Definition at line 27 of file mythstreamingbuffer.h.
Referenced by IsStreamed(), and OpenFile().
Definition at line 28 of file mythstreamingbuffer.h.
Referenced by IsSeekingAllowed(), and OpenFile().