MythTV  master
Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
LiveTVChain Class Reference

Keeps track of recordings in a current LiveTV instance. More...

#include <livetvchain.h>

Inheritance diagram for LiveTVChain:
Inheritance graph
[legend]
Collaboration diagram for LiveTVChain:
Collaboration graph
[legend]

Public Member Functions

 LiveTVChain ()
 
 ~LiveTVChain () override
 
QString InitializeNewChain (const QString &seed)
 
void LoadFromExistingChain (const QString &id)
 
void SetHostPrefix (const QString &prefix)
 
void SetInputType (const QString &type)
 
void DestroyChain (void)
 
void AppendNewProgram (ProgramInfo *pginfo, const QString &channum, const QString &inputname, bool discont)
 
void FinishedRecording (ProgramInfo *pginfo)
 
void DeleteProgram (ProgramInfo *pginfo)
 
void ReloadAll (const QStringList &data=QStringList())
 
QString GetID (void) const
 
int GetCurPos (void) const
 
int ProgramIsAt (uint chanid, const QDateTime &starttime) const
 
int ProgramIsAt (const ProgramInfo &pginfo) const
 
std::chrono::seconds GetLengthAtCurPos (void)
 
std::chrono::seconds GetLengthAtPos (int pos)
 
int TotalSize (void) const
 
bool HasNext (void) const
 
bool HasPrev (void) const
 
ProgramInfoGetProgramAt (int at) const
 Returns program at the desired location. More...
 
bool NeedsToSwitch (void) const
 Returns true iff a switch is required but no jump is required m_jumppos sets to INT_MAX means not set. More...
 
bool NeedsToJump (void) const
 Returns true iff a switch and jump are required. More...
 
QString GetChannelName (int pos=-1) const
 
QString GetInputName (int pos=-1) const
 
QString GetInputType (int pos=-1) const
 
void SetProgram (const ProgramInfo &pginfo)
 
void SwitchTo (int num)
 Sets the recording to switch to. More...
 
void SwitchToNext (bool up)
 Sets the recording to switch to. More...
 
void ClearSwitch (void)
 
ProgramInfoGetSwitchProgram (bool &discont, bool &newtype, int &newid)
 Returns the recording we should switch to. More...
 
void JumpTo (int num, std::chrono::seconds pos)
 
void JumpToNext (bool up, std::chrono::seconds pos)
 jump to the next (up == true) or previous (up == false) liveTV program If pos > 0: indicate the absolute position where to start the next program If pos < 0: indicate offset position; in which case the right liveTV program will be found accordingly. More...
 
std::chrono::seconds GetJumpPos (void)
 Returns the jump position in seconds and clears it. More...
 
void SetHostSocket (MythSocket *sock)
 
bool IsHostSocket (MythSocket *sock)
 
uint HostSocketCount (void) const
 
void DelHostSocket (MythSocket *sock)
 
QString toString () const
 
QStringList entriesToStringList () const
 
bool entriesFromStringList (const QStringList &items)
 
- Public Member Functions inherited from ReferenceCounter
 ReferenceCounter (const QString &debugName, bool logDebug=true)
 Creates reference counter with an initial value of 1. More...
 
virtual int IncrRef (void)
 Increments reference count. More...
 
virtual int DecrRef (void)
 Decrements reference count and deletes on 0. More...
 

Private Member Functions

void BroadcastUpdate ()
 
void GetEntryAt (int at, LiveTVChainEntry &entry) const
 
ProgramInfoDoGetNextProgram (bool up, int curpos, int &newid, bool &discont, bool &newtype)
 

Static Private Member Functions

static ProgramInfoEntryToProgram (const LiveTVChainEntry &entry)
 

Private Attributes

QString m_id
 
QList< LiveTVChainEntrym_chain
 
int m_maxPos {0}
 
QRecursiveMutex m_lock
 
QString m_hostPrefix
 
QString m_inputType
 
int m_curPos {0}
 
uint m_curChanId {0}
 
QDateTime m_curStartTs
 
int m_switchId {-1}
 
LiveTVChainEntry m_switchEntry
 
std::chrono::seconds m_jumpPos {std::chrono::seconds::max()}
 
QMutex m_sockLock
 
QList< MythSocket * > m_inUseSocks
 

Additional Inherited Members

- Static Public Member Functions inherited from ReferenceCounter
static void PrintDebug (void)
 Print out any leaks if that level of debugging is enabled. More...
 
- Protected Member Functions inherited from ReferenceCounter
virtual ~ReferenceCounter (void)
 Called on destruction, will warn if object deleted with references in place. More...
 
- Protected Attributes inherited from ReferenceCounter
bool m_logDebug
 This is used to suppress creating LoggingItem classes for LoggingItem reference count changes. More...
 
QAtomicInt m_referenceCount {1}
 

Detailed Description

Keeps track of recordings in a current LiveTV instance.

Definition at line 32 of file livetvchain.h.

Constructor & Destructor Documentation

◆ LiveTVChain()

LiveTVChain::LiveTVChain ( )

Definition at line 27 of file livetvchain.cpp.

◆ ~LiveTVChain()

LiveTVChain::~LiveTVChain ( )
override

Definition at line 33 of file livetvchain.cpp.

Member Function Documentation

◆ InitializeNewChain()

QString LiveTVChain::InitializeNewChain ( const QString &  seed)

Definition at line 38 of file livetvchain.cpp.

Referenced by PlayerContext::SetTVChain().

◆ LoadFromExistingChain()

void LiveTVChain::LoadFromExistingChain ( const QString &  id)

Definition at line 55 of file livetvchain.cpp.

Referenced by MainServer::HandleRecorderQuery().

◆ SetHostPrefix()

void LiveTVChain::SetHostPrefix ( const QString &  prefix)

Definition at line 45 of file livetvchain.cpp.

Referenced by TVRec::SpawnLiveTV().

◆ SetInputType()

void LiveTVChain::SetInputType ( const QString &  type)

Definition at line 50 of file livetvchain.cpp.

Referenced by TVRec::SpawnLiveTV(), and TVRec::TuningFrequency().

◆ DestroyChain()

void LiveTVChain::DestroyChain ( void  )

Definition at line 196 of file livetvchain.cpp.

Referenced by PlayerContext::SetTVChain().

◆ AppendNewProgram()

void LiveTVChain::AppendNewProgram ( ProgramInfo pginfo,
const QString &  channum,
const QString &  inputname,
bool  discont 
)

Definition at line 61 of file livetvchain.cpp.

Referenced by TVRec::CreateLiveTVRingBuffer(), and TVRec::SwitchLiveTVRingBuffer().

◆ FinishedRecording()

void LiveTVChain::FinishedRecording ( ProgramInfo pginfo)

Definition at line 111 of file livetvchain.cpp.

Referenced by TVRec::FinishedRecording().

◆ DeleteProgram()

void LiveTVChain::DeleteProgram ( ProgramInfo pginfo)

Definition at line 145 of file livetvchain.cpp.

Referenced by MainServer::DoDeleteThread().

◆ ReloadAll()

void LiveTVChain::ReloadAll ( const QStringList &  data = QStringList())

◆ GetID()

QString LiveTVChain::GetID ( void  ) const
inline

◆ GetCurPos()

int LiveTVChain::GetCurPos ( void  ) const
inline

Definition at line 55 of file livetvchain.h.

Referenced by MythPlayer::OpenFile().

◆ ProgramIsAt() [1/2]

int LiveTVChain::ProgramIsAt ( uint  chanid,
const QDateTime &  starttime 
) const
Returns
program location or -1 for not found.

Definition at line 332 of file livetvchain.cpp.

Referenced by ProgramIsAt(), ReloadAll(), and SetProgram().

◆ ProgramIsAt() [2/2]

int LiveTVChain::ProgramIsAt ( const ProgramInfo pginfo) const
Returns
program location or -1 for not found.

Definition at line 353 of file livetvchain.cpp.

◆ GetLengthAtCurPos()

std::chrono::seconds LiveTVChain::GetLengthAtCurPos ( void  )
Returns
length in seconds of recording at current position

Definition at line 361 of file livetvchain.cpp.

Referenced by MythPlayerUI::JumpToProgram(), and MythPlayerOverlayUI::UpdateSliderInfo().

◆ GetLengthAtPos()

std::chrono::seconds LiveTVChain::GetLengthAtPos ( int  pos)
Returns
length in seconds of recording at m_curPos

Definition at line 369 of file livetvchain.cpp.

Referenced by GetLengthAtCurPos(), and JumpToNext().

◆ TotalSize()

int LiveTVChain::TotalSize ( void  ) const

Definition at line 388 of file livetvchain.cpp.

Referenced by TVRec::CreateLiveTVRingBuffer().

◆ HasNext()

bool LiveTVChain::HasNext ( void  ) const

◆ HasPrev()

bool LiveTVChain::HasPrev ( void  ) const
inline

◆ GetProgramAt()

ProgramInfo * LiveTVChain::GetProgramAt ( int  at) const

Returns program at the desired location.

NOTE: The caller must delete the returned program.

Parameters
atProgramInfo to return [0..TotalSize()-1] or -1 for last program

Definition at line 321 of file livetvchain.cpp.

Referenced by PlayerContext::ReloadTVChain(), and TVRec::TuningRestartRecorder().

◆ NeedsToSwitch()

bool LiveTVChain::NeedsToSwitch ( void  ) const
inline

Returns true iff a switch is required but no jump is required m_jumppos sets to INT_MAX means not set.

Definition at line 66 of file livetvchain.h.

Referenced by MythPlayerUI::EventLoop().

◆ NeedsToJump()

bool LiveTVChain::NeedsToJump ( void  ) const
inline

Returns true iff a switch and jump are required.

Definition at line 69 of file livetvchain.h.

Referenced by MythPlayerUI::EventLoop().

◆ GetChannelName()

QString LiveTVChain::GetChannelName ( int  pos = -1) const

◆ GetInputName()

QString LiveTVChain::GetInputName ( int  pos = -1) const

Definition at line 688 of file livetvchain.cpp.

◆ GetInputType()

QString LiveTVChain::GetInputType ( int  pos = -1) const

◆ SetProgram()

void LiveTVChain::SetProgram ( const ProgramInfo pginfo)

◆ SwitchTo()

void LiveTVChain::SwitchTo ( int  num)

Sets the recording to switch to.

Parameters
numIndex of recording to switch to, -1 for last recording.

Definition at line 557 of file livetvchain.cpp.

Referenced by JumpTo(), and SwitchToNext().

◆ SwitchToNext()

void LiveTVChain::SwitchToNext ( bool  up)

Sets the recording to switch to.

Parameters
upSet to true to switch to the next recording, false to switch to the previous recording.

Definition at line 592 of file livetvchain.cpp.

Referenced by JumpToNext(), and MythMediaBuffer::run().

◆ ClearSwitch()

void LiveTVChain::ClearSwitch ( void  )

Definition at line 411 of file livetvchain.cpp.

Referenced by GetSwitchProgram().

◆ GetSwitchProgram()

ProgramInfo * LiveTVChain::GetSwitchProgram ( bool discont,
bool newtype,
int &  newid 
)

Returns the recording we should switch to.

This returns a ProgramInfo* and tells us if this is a discontiuous switch and whether the recording type is changing.

This also clears the NeedsToSwitch()/NeedsToJump() state.

NOTE: The caller is responsible for deleting the ProgramInfo

Definition at line 429 of file livetvchain.cpp.

Referenced by MythPlayerUI::JumpToProgram(), and MythPlayerUI::SwitchToProgram().

◆ JumpTo()

void LiveTVChain::JumpTo ( int  num,
std::chrono::seconds  pos 
)

Definition at line 603 of file livetvchain.cpp.

Referenced by TV::UnpauseLiveTV().

◆ JumpToNext()

void LiveTVChain::JumpToNext ( bool  up,
std::chrono::seconds  pos 
)

jump to the next (up == true) or previous (up == false) liveTV program If pos > 0: indicate the absolute position where to start the next program If pos < 0: indicate offset position; in which case the right liveTV program will be found accordingly.

Offset is in reference to the beginning of the current recordings when going down and in reference to the end of the current recording when going up

Definition at line 617 of file livetvchain.cpp.

Referenced by MythPlayer::CalcMaxFFTime(), MythPlayer::CalcRWTime(), MythPlayerUI::EventLoop(), and MythPlayerCaptionsUI::SetStream().

◆ GetJumpPos()

std::chrono::seconds LiveTVChain::GetJumpPos ( void  )

Returns the jump position in seconds and clears it.

Definition at line 673 of file livetvchain.cpp.

Referenced by MythPlayerUI::JumpToProgram().

◆ SetHostSocket()

void LiveTVChain::SetHostSocket ( MythSocket sock)

Definition at line 704 of file livetvchain.cpp.

Referenced by MainServer::HandleRecorderQuery().

◆ IsHostSocket()

bool LiveTVChain::IsHostSocket ( MythSocket sock)

Definition at line 712 of file livetvchain.cpp.

◆ HostSocketCount()

uint LiveTVChain::HostSocketCount ( void  ) const

◆ DelHostSocket()

void LiveTVChain::DelHostSocket ( MythSocket sock)

◆ toString()

QString LiveTVChain::toString ( ) const

◆ entriesToStringList()

QStringList LiveTVChain::entriesToStringList ( ) const

Definition at line 751 of file livetvchain.cpp.

Referenced by BroadcastUpdate().

◆ entriesFromStringList()

bool LiveTVChain::entriesFromStringList ( const QStringList &  items)

Definition at line 770 of file livetvchain.cpp.

Referenced by ReloadAll().

◆ BroadcastUpdate()

void LiveTVChain::BroadcastUpdate ( )
private

Definition at line 189 of file livetvchain.cpp.

Referenced by AppendNewProgram(), DeleteProgram(), and FinishedRecording().

◆ GetEntryAt()

void LiveTVChain::GetEntryAt ( int  at,
LiveTVChainEntry entry 
) const
private

◆ EntryToProgram()

ProgramInfo * LiveTVChain::EntryToProgram ( const LiveTVChainEntry entry)
staticprivate

Definition at line 297 of file livetvchain.cpp.

Referenced by DoGetNextProgram(), and GetProgramAt().

◆ DoGetNextProgram()

ProgramInfo * LiveTVChain::DoGetNextProgram ( bool  up,
int  curpos,
int &  newid,
bool discont,
bool newtype 
)
private

Definition at line 447 of file livetvchain.cpp.

Referenced by GetSwitchProgram(), and JumpToNext().

Member Data Documentation

◆ m_id

QString LiveTVChain::m_id
private

◆ m_chain

QList<LiveTVChainEntry> LiveTVChain::m_chain
private

◆ m_maxPos

int LiveTVChain::m_maxPos {0}
private

◆ m_lock

QRecursiveMutex LiveTVChain::m_lock
mutableprivate

◆ m_hostPrefix

QString LiveTVChain::m_hostPrefix
private

Definition at line 112 of file livetvchain.h.

Referenced by AppendNewProgram(), and SetHostPrefix().

◆ m_inputType

QString LiveTVChain::m_inputType
private

Definition at line 113 of file livetvchain.h.

Referenced by AppendNewProgram(), and SetInputType().

◆ m_curPos

int LiveTVChain::m_curPos {0}
private

◆ m_curChanId

uint LiveTVChain::m_curChanId {0}
private

Definition at line 116 of file livetvchain.h.

Referenced by ReloadAll(), and SetProgram().

◆ m_curStartTs

QDateTime LiveTVChain::m_curStartTs
private

Definition at line 117 of file livetvchain.h.

Referenced by ReloadAll(), and SetProgram().

◆ m_switchId

int LiveTVChain::m_switchId {-1}
private

◆ m_switchEntry

LiveTVChainEntry LiveTVChain::m_switchEntry
private

Definition at line 120 of file livetvchain.h.

Referenced by JumpToNext(), LiveTVChain(), ReloadAll(), and SwitchTo().

◆ m_jumpPos

std::chrono::seconds LiveTVChain::m_jumpPos {std::chrono::seconds::max()}
private

Definition at line 122 of file livetvchain.h.

Referenced by ClearSwitch(), GetJumpPos(), JumpTo(), and JumpToNext().

◆ m_sockLock

QMutex LiveTVChain::m_sockLock
mutableprivate

Definition at line 124 of file livetvchain.h.

Referenced by DelHostSocket(), HostSocketCount(), IsHostSocket(), and SetHostSocket().

◆ m_inUseSocks

QList<MythSocket*> LiveTVChain::m_inUseSocks
private

Definition at line 125 of file livetvchain.h.

Referenced by DelHostSocket(), HostSocketCount(), IsHostSocket(), and SetHostSocket().


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