vdr
1.7.27
|
Public Member Functions | |
cDvbPlayer (const char *FileName, bool PauseLive) | |
virtual | ~cDvbPlayer () |
bool | Active (void) |
void | Pause (void) |
void | Play (void) |
void | Forward (void) |
void | Backward (void) |
int | SkipFrames (int Frames) |
void | SkipSeconds (int Seconds) |
void | Goto (int Position, bool Still=false) |
virtual double | FramesPerSecond (void) |
virtual bool | GetIndex (int &Current, int &Total, bool SnapToIFrame=false) |
virtual bool | GetReplayMode (bool &Play, bool &Forward, int &Speed) |
Protected Member Functions | |
virtual void | Activate (bool On) |
virtual void | Action (void) |
Private Types | |
enum | ePlayModes { pmPlay, pmPause, pmSlow, pmFast, pmStill } |
enum | ePlayDirs { pdForward, pdBackward } |
Private Member Functions | |
void | TrickSpeed (int Increment) |
void | Empty (void) |
bool | NextFile (uint16_t FileNumber=0, off_t FileOffset=-1) |
int | Resume (void) |
bool | Save (void) |
Private Attributes | |
cNonBlockingFileReader * | nonBlockingFileReader |
cRingBufferFrame * | ringBuffer |
cPtsIndex | ptsIndex |
cMarks | marks |
cFileName * | fileName |
cIndexFile * | index |
cUnbufferedFile * | replayFile |
double | framesPerSecond |
bool | isPesRecording |
bool | pauseLive |
bool | eof |
bool | firstPacket |
ePlayModes | playMode |
ePlayDirs | playDir |
int | trickSpeed |
int | readIndex |
bool | readIndependent |
cFrame * | readFrame |
cFrame * | playFrame |
cFrame * | dropFrame |
Static Private Attributes | |
static int | Speeds [] = { 0, -2, -4, -8, 1, 2, 4, 12, 0 } |
Definition at line 199 of file dvbplayer.c.
enum cDvbPlayer::ePlayDirs [private] |
Definition at line 202 of file dvbplayer.c.
enum cDvbPlayer::ePlayModes [private] |
Definition at line 201 of file dvbplayer.c.
cDvbPlayer::cDvbPlayer | ( | const char * | FileName, |
bool | PauseLive | ||
) |
Definition at line 254 of file dvbplayer.c.
References dropFrame, eof, esyslog, fileName, firstPacket, cRecording::FramesPerSecond(), framesPerSecond, index, cRecording::IsPesRecording(), isPesRecording, isyslog, cMarks::Load(), marks, nonBlockingFileReader, NORMAL_SPEED, cIndexFile::Ok(), cFileName::Open(), pauseLive, pdForward, playDir, PLAYERBUFSIZE, playFrame, playMode, pmPlay, readFrame, readIndependent, readIndex, replayFile, ringBuffer, and trickSpeed.
cDvbPlayer::~cDvbPlayer | ( | ) | [virtual] |
Definition at line 293 of file dvbplayer.c.
References cPlayer::Detach(), fileName, index, readFrame, ringBuffer, and Save().
void cDvbPlayer::Action | ( | void | ) | [protected, virtual] |
A derived cThread class must implement the code it wants to execute as a separate thread in this function.
If this is a loop, it must check Running() repeatedly to see whether it's time to stop.
Implements cThread.
Definition at line 395 of file dvbplayer.c.
References cFrame::Count(), cFrame::Data(), cPlayer::DeviceGetSTC(), cPlayer::DeviceHasIBPTrickSpeed(), cPlayer::DeviceIsPlayingVideo(), cPlayer::DevicePlay(), cPlayer::DevicePoll(), cRingBufferFrame::Drop(), dropFrame, Empty(), eof, esyslog, FATALERRNO, cPtsIndex::FindIndex(), cList< T >::First(), firstPacket, framesPerSecond, ftUnknown, cRingBufferFrame::Get(), cMarks::Get(), cIndexFile::Get(), cIndexFile::GetNextIFrame(), Goto(), cFrame::Index(), index, cListObject::Index(), IndexToHMSF(), isPesRecording, cIndexFile::IsStillRecording(), isyslog, cIndexFile::Last(), LOCK_THREAD, LOG_ERROR, marks, MAXFRAMESIZE, MAXSTUCKATEOF, cList< T >::Next(), NextFile(), nonBlockingFileReader, cSetup::PauseLastMark, pauseLive, pdBackward, pdForward, PesGetPts(), playDir, playFrame, cSetup::PlayJump, playMode, cPlayer::PlayPes(), cPlayer::PlayTs(), pmFast, pmPause, pmPlay, pmSlow, pmStill, cMark::Position(), cFrame::Pts(), ptsIndex, cPtsIndex::Put(), cRingBufferFrame::Put(), readFrame, readIndependent, readIndex, cNonBlockingFileReader::Reading(), replayFile, cNonBlockingFileReader::Request(), cNonBlockingFileReader::Result(), Resume(), ringBuffer, cThread::Running(), cRemux::SetBrokenLink(), Setup, cCondWait::SleepMs(), TsGetPts(), TsSetTeiOnBrokenPackets(), cMarks::Update(), and cNonBlockingFileReader::WaitForDataMs().
void cDvbPlayer::Activate | ( | bool | On | ) | [protected, virtual] |
Reimplemented from cPlayer.
Definition at line 385 of file dvbplayer.c.
References cThread::Cancel(), replayFile, and cThread::Start().
bool cDvbPlayer::Active | ( | void | ) | [inline] |
Checks whether the thread is still alive.
Reimplemented from cThread.
Definition at line 235 of file dvbplayer.c.
References cThread::Running().
Referenced by cDvbPlayerControl::Active().
void cDvbPlayer::Backward | ( | void | ) |
Definition at line 762 of file dvbplayer.c.
References cPlayer::DeviceIsPlayingVideo(), cPlayer::DeviceMute(), Empty(), esyslog, index, LOCK_THREAD, MAX_SPEEDS, cSetup::MultiSpeedMode, NORMAL_SPEED, Pause(), pdBackward, Play(), playDir, playMode, pmFast, pmPause, pmPlay, pmSlow, pmStill, Setup, trickSpeed, and TrickSpeed().
Referenced by cDvbPlayerControl::Backward().
void cDvbPlayer::Empty | ( | void | ) | [private] |
Definition at line 323 of file dvbplayer.c.
References cPtsIndex::Clear(), cNonBlockingFileReader::Clear(), cRingBufferFrame::Clear(), cPlayer::DeviceClear(), cPlayer::DeviceGetSTC(), dropFrame, cPtsIndex::FindIndex(), firstPacket, LOCK_THREAD, nonBlockingFileReader, playFrame, ptsIndex, readFrame, readIndex, and ringBuffer.
Referenced by Action(), Backward(), Forward(), Goto(), Pause(), Play(), and SkipSeconds().
void cDvbPlayer::Forward | ( | void | ) |
Definition at line 712 of file dvbplayer.c.
References cPlayer::DeviceHasIBPTrickSpeed(), cPlayer::DeviceIsPlayingVideo(), cPlayer::DeviceMute(), Empty(), esyslog, index, LOCK_THREAD, MAX_SPEEDS, cSetup::MultiSpeedMode, NORMAL_SPEED, Pause(), pdForward, Play(), playDir, playMode, pmFast, pmPause, pmPlay, pmSlow, pmStill, Setup, trickSpeed, and TrickSpeed().
Referenced by cDvbPlayerControl::Forward().
virtual double cDvbPlayer::FramesPerSecond | ( | void | ) | [inline, virtual] |
bool cDvbPlayer::GetIndex | ( | int & | Current, |
int & | Total, | ||
bool | SnapToIFrame = false |
||
) | [virtual] |
Reimplemented from cPlayer.
Definition at line 872 of file dvbplayer.c.
References cPlayer::DeviceGetSTC(), cPtsIndex::FindIndex(), cIndexFile::GetNextIFrame(), index, cIndexFile::Last(), and ptsIndex.
Referenced by cDvbPlayerControl::GetIndex(), and SkipFrames().
bool cDvbPlayer::GetReplayMode | ( | bool & | Play, |
bool & | Forward, | ||
int & | Speed | ||
) | [virtual] |
Reimplemented from cPlayer.
Definition at line 888 of file dvbplayer.c.
References cSetup::MultiSpeedMode, NORMAL_SPEED, pdForward, playDir, playMode, pmFast, pmPlay, pmSlow, Setup, and trickSpeed.
Referenced by cDvbPlayerControl::GetReplayMode().
void cDvbPlayer::Goto | ( | int | Position, |
bool | Still = false |
||
) |
Definition at line 846 of file dvbplayer.c.
References cPlayer::DevicePlay(), cPlayer::DeviceStillPicture(), Empty(), cIndexFile::GetNextIFrame(), index, isPesRecording, LOCK_THREAD, MAXFRAMESIZE, NextFile(), PesGetPts(), playMode, pmPause, pmStill, ptsIndex, cPtsIndex::Put(), ReadFrame(), readIndex, replayFile, and TsGetPts().
Referenced by Action(), and cDvbPlayerControl::Goto().
bool cDvbPlayer::NextFile | ( | uint16_t | FileNumber = 0 , |
off_t | FileOffset = -1 |
||
) | [private] |
Definition at line 340 of file dvbplayer.c.
References eof, fileName, cFileName::NextFile(), replayFile, and cFileName::SetOffset().
void cDvbPlayer::Pause | ( | void | ) |
Definition at line 683 of file dvbplayer.c.
References cPlayer::DeviceFreeze(), cPlayer::DeviceHasIBPTrickSpeed(), Empty(), LOCK_THREAD, pdBackward, pdForward, Play(), playDir, playMode, pmFast, pmPause, pmSlow, and pmStill.
Referenced by Backward(), Forward(), cDvbPlayerControl::Pause(), and TrickSpeed().
void cDvbPlayer::Play | ( | void | ) |
Definition at line 698 of file dvbplayer.c.
References cPlayer::DeviceHasIBPTrickSpeed(), cPlayer::DevicePlay(), Empty(), LOCK_THREAD, pdBackward, pdForward, playDir, playMode, pmFast, pmPlay, pmSlow, and pmStill.
Referenced by Backward(), Forward(), Pause(), cDvbPlayerControl::Play(), SkipSeconds(), and TrickSpeed().
int cDvbPlayer::Resume | ( | void | ) | [private] |
Definition at line 350 of file dvbplayer.c.
References cIndexFile::Get(), cIndexFile::GetResume(), index, and NextFile().
Referenced by Action().
bool cDvbPlayer::Save | ( | void | ) | [private] |
Definition at line 364 of file dvbplayer.c.
References cPlayer::DeviceGetSTC(), cPtsIndex::FindIndex(), cList< T >::First(), framesPerSecond, cIndexFile::GetNextIFrame(), index, marks, cSetup::PlayJump, cMark::Position(), ptsIndex, RESUMEBACKUP, Setup, and cIndexFile::StoreResume().
Referenced by ~cDvbPlayer().
int cDvbPlayer::SkipFrames | ( | int | Frames | ) |
Definition at line 814 of file dvbplayer.c.
References GetIndex(), cIndexFile::GetNextIFrame(), and index.
Referenced by cDvbPlayerControl::SkipFrames().
void cDvbPlayer::SkipSeconds | ( | int | Seconds | ) |
Definition at line 829 of file dvbplayer.c.
References cPlayer::DeviceGetSTC(), Empty(), cPtsIndex::FindIndex(), framesPerSecond, cIndexFile::GetNextIFrame(), index, LOCK_THREAD, max(), Play(), ptsIndex, readIndex, and SecondsToFrames().
Referenced by cDvbPlayerControl::SkipSeconds().
void cDvbPlayer::TrickSpeed | ( | int | Increment | ) | [private] |
Definition at line 303 of file dvbplayer.c.
References cPlayer::DeviceTrickSpeed(), MAX_VIDEO_SLOWMOTION, Pause(), pdForward, Play(), playDir, playMode, pmFast, pmSlow, SPEED_MULT, Speeds, and trickSpeed.
Referenced by Backward(), and Forward().
cFrame* cDvbPlayer::dropFrame [private] |
Definition at line 223 of file dvbplayer.c.
Referenced by Action(), cDvbPlayer(), and Empty().
bool cDvbPlayer::eof [private] |
Definition at line 214 of file dvbplayer.c.
Referenced by Action(), cDvbPlayer(), and NextFile().
cFileName* cDvbPlayer::fileName [private] |
Definition at line 208 of file dvbplayer.c.
Referenced by cDvbPlayer(), NextFile(), and ~cDvbPlayer().
bool cDvbPlayer::firstPacket [private] |
Definition at line 215 of file dvbplayer.c.
Referenced by Action(), cDvbPlayer(), and Empty().
double cDvbPlayer::framesPerSecond [private] |
Definition at line 211 of file dvbplayer.c.
Referenced by Action(), cDvbPlayer(), FramesPerSecond(), Save(), and SkipSeconds().
cIndexFile* cDvbPlayer::index [private] |
Definition at line 209 of file dvbplayer.c.
Referenced by Action(), Backward(), cDvbPlayer(), Forward(), GetIndex(), Goto(), Resume(), Save(), SkipFrames(), SkipSeconds(), and ~cDvbPlayer().
bool cDvbPlayer::isPesRecording [private] |
Definition at line 212 of file dvbplayer.c.
Referenced by Action(), cDvbPlayer(), and Goto().
cMarks cDvbPlayer::marks [private] |
Definition at line 207 of file dvbplayer.c.
Referenced by Action(), cDvbPlayer(), and Save().
Definition at line 204 of file dvbplayer.c.
Referenced by Action(), cDvbPlayer(), and Empty().
bool cDvbPlayer::pauseLive [private] |
Definition at line 213 of file dvbplayer.c.
Referenced by Action(), and cDvbPlayer().
ePlayDirs cDvbPlayer::playDir [private] |
Definition at line 217 of file dvbplayer.c.
Referenced by Action(), Backward(), cDvbPlayer(), Forward(), GetReplayMode(), Pause(), Play(), and TrickSpeed().
cFrame* cDvbPlayer::playFrame [private] |
Definition at line 222 of file dvbplayer.c.
Referenced by Action(), cDvbPlayer(), and Empty().
ePlayModes cDvbPlayer::playMode [private] |
Reimplemented from cPlayer.
Definition at line 216 of file dvbplayer.c.
Referenced by Action(), Backward(), cDvbPlayer(), Forward(), GetReplayMode(), Goto(), Pause(), Play(), and TrickSpeed().
cPtsIndex cDvbPlayer::ptsIndex [private] |
Definition at line 206 of file dvbplayer.c.
Referenced by Action(), Empty(), GetIndex(), Goto(), Save(), and SkipSeconds().
cFrame* cDvbPlayer::readFrame [private] |
Definition at line 221 of file dvbplayer.c.
Referenced by Action(), cDvbPlayer(), Empty(), and ~cDvbPlayer().
bool cDvbPlayer::readIndependent [private] |
Definition at line 220 of file dvbplayer.c.
Referenced by Action(), and cDvbPlayer().
int cDvbPlayer::readIndex [private] |
Definition at line 219 of file dvbplayer.c.
Referenced by Action(), cDvbPlayer(), Empty(), Goto(), and SkipSeconds().
cUnbufferedFile* cDvbPlayer::replayFile [private] |
Definition at line 210 of file dvbplayer.c.
Referenced by Action(), Activate(), cDvbPlayer(), Goto(), and NextFile().
cRingBufferFrame* cDvbPlayer::ringBuffer [private] |
Definition at line 205 of file dvbplayer.c.
Referenced by Action(), cDvbPlayer(), Empty(), and ~cDvbPlayer().
int cDvbPlayer::Speeds = { 0, -2, -4, -8, 1, 2, 4, 12, 0 } [static, private] |
Definition at line 203 of file dvbplayer.c.
Referenced by TrickSpeed().
int cDvbPlayer::trickSpeed [private] |
Definition at line 218 of file dvbplayer.c.
Referenced by Backward(), cDvbPlayer(), Forward(), GetReplayMode(), and TrickSpeed().