MythTV  master
Public Member Functions | Protected Types | Protected Attributes | List of all members
MythOpticalBuffer Class Referenceabstract

#include <mythopticalbuffer.h>

Inheritance diagram for MythOpticalBuffer:
Inheritance graph
Collaboration diagram for MythOpticalBuffer:
Collaboration graph

Public Member Functions

 MythOpticalBuffer (MythBufferType Type)
bool IsInMenu (void) const override
bool IsStreamed (void) override
virtual bool GetNameAndSerialNum (QString &Name, QString &SerialNumber)=0
- Public Member Functions inherited from MythMediaBuffer
 ~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 MythDVDBufferDVD (void) const
MythDVDBufferDVD (void)
const MythBDBufferBD (void) const
MythBDBufferBD (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 long long GetReadPosition (void) const =0
virtual bool IsOpen (void) const =0
virtual bool IsSeekingAllowed (void)
virtual bool IsBookmarkAllowed (void)
virtual int BestBufferSize (void)
virtual bool StartFromBeginning (void)
virtual void IgnoreWaitStates (bool)
virtual bool IsInStillFrame (void) const
virtual bool IsInDiscMenuOrStillFrame (void) const
virtual bool HandleAction (const QStringList &, mpeg::chrono::pts)
virtual bool OpenFile (const QString &Filename, std::chrono::milliseconds Retry=kDefaultOpenTimeout)=0
virtual bool ReOpen (const QString &="")

Protected Types


Protected Attributes

MythOpticalState m_processState { PROCESS_NORMAL }
int m_currentAngle { 0 }
bool m_inMenu { false }
QString m_discName
QString m_discSerialNumber
- Protected Attributes inherited from MythMediaBuffer
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
ThreadedFileWriterm_tfw { nullptr }
int m_fd2 { -1 }
bool m_writeMode { false }
RemoteFilem_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 }
LiveTVChainm_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...
- Protected Attributes inherited from MThread
MThreadInternalm_thread {nullptr}
QRunnable * m_runnable {nullptr}
bool m_prologExecuted {true}
bool m_epilogExecuted {true}

Additional Inherited Members

- Static Public Member Functions inherited from MythMediaBuffer
static MythMediaBufferCreate (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 Public Attributes inherited from MythMediaBuffer
static constexpr std::chrono::milliseconds kDefaultOpenTimeout { 2s }
static constexpr std::chrono::milliseconds kLiveTVOpenTimeout { 10s }
- Protected Member Functions inherited from MythMediaBuffer
 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)
virtual int SafeRead (void *Buffer, uint Size)=0
virtual long long GetRealFileSizeInternal (void) const
virtual long long SeekInternal (long long Position, int Whence)=0
- Protected Member Functions inherited from MThread
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
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...
- 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)
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)

Detailed Description

Definition at line 7 of file mythopticalbuffer.h.

Member Enumeration Documentation

◆ MythOpticalState


Definition at line 17 of file mythopticalbuffer.h.

Constructor & Destructor Documentation

◆ MythOpticalBuffer()

MythOpticalBuffer::MythOpticalBuffer ( MythBufferType  Type)

Definition at line 4 of file mythopticalbuffer.cpp.

Member Function Documentation

◆ IsInMenu()

bool MythOpticalBuffer::IsInMenu ( void  ) const

◆ IsStreamed()

bool MythOpticalBuffer::IsStreamed ( void  )

Reimplemented from MythMediaBuffer.

Definition at line 13 of file mythopticalbuffer.h.

◆ GetNameAndSerialNum()

virtual bool MythOpticalBuffer::GetNameAndSerialNum ( QString &  Name,
QString &  SerialNumber 
pure virtual

Implemented in MythDVDBuffer, and MythBDBuffer.

Member Data Documentation

◆ m_processState

MythOpticalState MythOpticalBuffer::m_processState { PROCESS_NORMAL }

◆ m_currentAngle

int MythOpticalBuffer::m_currentAngle { 0 }

◆ m_inMenu

bool MythOpticalBuffer::m_inMenu { false }

◆ m_discName

QString MythOpticalBuffer::m_discName

◆ m_discSerialNumber

QString MythOpticalBuffer::m_discSerialNumber

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