Go to the documentation of this file.
12 #define LOC QString("BDPlayer: ")
41 pts = duration_cast<mpeg::chrono::pts>(frame->m_timecode);
75 SetErrored(
"RingBuffer is not a Blu-Ray disc.");
96 LOG(VB_PLAYBACK, LOG_INFO,
LOC +
"Clearing Mythtv BD wait state");
123 LOG(VB_PLAYBACK, LOG_WARNING,
LOC +
"Warning: In BD Still but no video frames in queue");
124 std::this_thread::sleep_for(10ms);
129 LOG(VB_PLAYBACK, LOG_INFO,
LOC +
"Entering still frame.");
137 LOG(VB_PLAYBACK, LOG_INFO,
LOC +
"Exiting still frame.");
147 if (
Frame == ~0x0ULL)
188 auto chapter =
static_cast<uint32_t
>(Chapter - 1);
195 for (
uint i = 0; i < total; i++)
246 QString name = QString(
"%1 (%2)").arg(Title+1).arg(timestr);
255 return tr(
"Angle %1").arg(Angle);
296 if ((total < 1) || (next >= total))
309 if (!total || prev < 0)
342 if ((total < 1) || total == 1)
357 LOG(VB_GENERAL, LOG_ERR,
LOC +
"BD has no name and serial number. Cannot set bookmark.");
364 LOG(VB_GENERAL, LOG_ERR,
LOC +
"Unable to retrieve BD state. Cannot set bookmark.");
368 LOG(VB_GENERAL, LOG_INFO,
LOC + QString(
"BDState:%1").arg(bdstate));
379 LOG(VB_PLAYBACK, LOG_INFO,
LOC +
"Set bookmark");
384 LOG(VB_PLAYBACK, LOG_INFO,
LOC +
"Clear bookmark");
413 if (!bdbookmark.empty())
417 LOG(VB_PLAYBACK, LOG_INFO,
LOC +
"Get Bookmark: bookmark found");
virtual void VideoStart()
int64_t GetChapter(int Chapter) override
void EventStart(void) override
void UnlockPlayingInfo(const char *file, int line) const
bool IsHDMVNavigation(void) const
virtual bool DisplayNormalFrame(bool CheckPrebuffer=true)
bool PrevAngle(void) override
MythPlayerAVSync m_avSync
std::chrono::microseconds m_frameInterval
always adjusted for play_speed
void SetBookmark(bool Clear) override
int GetNumTitles(void) const override
MythBDOverlay * GetOverlay(void)
virtual int OpenFile(int Retries=4)
virtual void EventStart()
void GoToMenu(const QString &Menu)
bool m_forcePositionMapSync
bool IsInStillFrame(void) const override
void DisplayPauseFrame(void) override
bool IsDatabaseIgnored(void) const
/brief Returns true if database is being ignored.
QString formatTime(std::chrono::milliseconds msecs, QString fmt)
Format a milliseconds time value.
uint64_t GetNumAngles(void) const
bool IsErrored(void) const
#define LOG(_MASK_, _LEVEL_, _QSTRING_)
int GetCurrentAngle(void) const override
uint32_t GetNumTitles(void) const
bool NextTitle(void) override
void DisplayBDOverlay(MythBDOverlay *Overlay)
EofState GetEof(void) const
bool GetNameAndSerialNum(QString &Name, QString &SerialNum) override
void SetErrored(const QString &reason)
void GoToMenu(const QString &Menu)
void SetDecoder(DecoderBase *dec)
Sets the stream decoder, deleting any existing recorder.
bool IsOpen(void) const override
bool NextAngle(void) override
void CreateDecoder(TestBufferVec &TestBuffer) override
QStringList QueryBDBookmark(const QString &serialid) const
Queries "bdbookmark" table for bookmarking BD serial number.
virtual int ValidVideoFrames() const
Returns number of frames that are fully decoded.
uint64_t GetChapterStartFrame(uint32_t Chapter)
ProgramInfo * m_playingInfo
Currently playing info.
void LockPlayingInfo(const char *file, int line) const
void VideoStart(void) override
QString GetTitle(void) const
MythVideoOutput * m_videoOutput
MythCaptionsOverlay m_captionsOverlay
MythMediaBuffer * m_buffer
bool PrevTitle(void) override
int GetNumAngles(void) const override
MythBDPlayer(MythMainWindow *MainWindow, TV *Tv, PlayerContext *Context, PlayerFlags Flags=kNoFlags)
void SetTitle(const QString &t, const QString &st=nullptr)
std::vector< char > TestBufferVec
PlayerContext * m_playerCtx
virtual void DisplayPauseFrame()
bool SwitchAngle(int Angle) override
bool SwitchAngle(uint Angle)
std::chrono::seconds GetTitleDuration(int Title)
MythCoreContext * gCoreContext
This global variable contains the MythCoreContext instance for the app.
bool BDWaitingForPlayer(void) const
PlayerFlags m_playerFlags
uint32_t GetNumChapters(void)
void SkipBDWaitingForPlayer(void)
std::chrono::seconds GetTitleDuration(int Title) const override
bool SwitchTitle(int Title) override
bool VideoLoop(void) override
std::chrono::seconds GetChapterStartTime(uint32_t Chapter)
std::chrono::milliseconds & DisplayTimecode()
static void SaveBDBookmark(const QStringList &fields)
QString GetAngleName(int Angle) const override
void SetScanType(FrameScanType Scan, MythVideoOutput *VideoOutput, std::chrono::microseconds FrameInterval)
uint32_t GetCurrentChapter(void)
int GetCurrentChapter(void) override
bool HasReachedEof(void) const override
bool GoToMenu(const QString &Menu, mpeg::chrono::pts Pts)
jump to a Blu-ray root or popup menu
void PreProcessNormalFrame(void) override
uint64_t GetCurrentAngle(void) const
int GetCurrentTitle(void) const override
std::chrono::duration< CHRONO_TYPE, std::ratio< 1, 90000 > > pts
uint64_t GetBookmark(void) override
virtual bool JumpToFrame(uint64_t frame)
void GetChapterTimes(QList< std::chrono::seconds > &ChapterTimes) override
bool SwitchTitle(uint32_t Index)
int GetCurrentTitle(void)
virtual MythVideoFrame * GetLastShownFrame()
Returns frame from the head of the ready to be displayed queue, if StartDisplayingFrame has been call...
bool GetBDStateSnapshot(QString &State)
Get a snapshot of the current BD state.
QString GetTitleName(int Title) const override
bool RestoreBDStateSnapshot(const QString &State)
Restore a BD snapshot.
bool JumpToFrame(uint64_t Frame) override
virtual void UpdatePauseFrame(std::chrono::milliseconds &, FrameScanType=kScan_Progressive)
bool Play(float speed=1.0, bool normal=true, bool unpauseaudio=true)
int GetNumChapters(void) override