MythTV  master
mythbdplayer.cpp
Go to the documentation of this file.
1 // MythTV
2 #include "Bluray/mythbdbuffer.h"
3 #include "Bluray/mythbddecoder.h"
4 #include "Bluray/mythbdplayer.h"
5 
6 // Std
7 #include <unistd.h>
8 
9 #define LOC QString("BDPlayer: ")
10 
12  : MythPlayer(Flags)
13 {
14 }
15 
17 {
18  EofState eof = GetEof();
19  // DeleteMap and EditMode from the parent MythPlayer should not be
20  // relevant here.
21  return eof != kEofStateNone && !m_allPaused;
22 }
23 
25 {
26  DisplayMenu();
27 }
28 
29 bool MythBDPlayer::GoToMenu(const QString& Menu)
30 {
31  if (!(m_playerCtx->m_buffer->BD() && m_videoOutput))
32  return false;
33 
34  int64_t pts = 0;
36  if (frame)
37  pts = static_cast<int64_t>(frame->timecode * 90);
38  return m_playerCtx->m_buffer->BD()->GoToMenu(Menu, pts);
39 }
40 
42 {
43  if (!m_playerCtx->m_buffer->IsBD())
44  return;
45 
46  m_osdLock.lock();
47  MythBDOverlay *overlay = nullptr;
48  while (m_osd && (nullptr != (overlay = m_playerCtx->m_buffer->BD()->GetOverlay())))
49  m_osd->DisplayBDOverlay(overlay);
50  m_osdLock.unlock();
51 }
52 
54 {
57  DisplayMenu();
59 }
60 
62 {
63  if (!m_initialBDState.isEmpty())
65 
67 }
68 
70 {
71  if (!m_playerCtx->m_buffer->IsBD())
72  {
73  SetErrored("RingBuffer is not a Blu-Ray disc.");
74  return !IsErrored();
75  }
76 
77  int nbframes = m_videoOutput ? m_videoOutput->ValidVideoFrames() : 0;
78 
79  // completely drain the video buffers for certain situations
80  if (m_playerCtx->m_buffer->BD()->BDWaitingForPlayer() && (nbframes > 0))
81  {
82  if (nbframes < 2 && m_videoOutput)
84 
85  // if we go below the pre-buffering limit, the player will pause
86  // so do this 'manually'
87  DisplayNormalFrame(false);
88  return !IsErrored();
89  }
90 
91  // clear the mythtv imposed wait state
93  {
94  LOG(VB_PLAYBACK, LOG_INFO, LOC + "Clearing Mythtv BD wait state");
96  return !IsErrored();
97  }
98 
100  {
101  if (nbframes > 1 && !m_stillFrameShowing)
102  {
104  DisplayNormalFrame(false);
105  return !IsErrored();
106  }
107 
108  if (!m_stillFrameShowing)
109  m_needNewPauseFrame = true;
110 
111  // we are in a still frame so pause video output
112  if (!m_videoPaused)
113  {
114  PauseVideo();
115  return !IsErrored();
116  }
117 
118  // flag if we have no frame
119  if (nbframes == 0)
120  {
121  LOG(VB_PLAYBACK, LOG_WARNING, LOC + "Warning: In BD Still but no video frames in queue");
122  usleep(10000);
123  return !IsErrored();
124  }
125 
126  if (!m_stillFrameShowing)
127  LOG(VB_PLAYBACK, LOG_INFO, LOC + "Entering still frame.");
128  m_stillFrameShowing = true;
129  }
130  else
131  {
133  {
134  UnpauseVideo();
135  LOG(VB_PLAYBACK, LOG_INFO, LOC + "Exiting still frame.");
136  }
137  m_stillFrameShowing = false;
138  }
139 
140  return MythPlayer::VideoLoop();
141 }
142 
144 {
145  if (Frame == ~0x0ULL)
146  return false;
148 }
149 
151 {
152  m_playerCtx->LockPlayingInfo(__FILE__, __LINE__);
154  {
155  QString name;
156  QString serialid;
157  if (m_playerCtx->m_playingInfo->GetTitle().isEmpty() &&
158  m_playerCtx->m_buffer->BD()->GetNameAndSerialNum(name, serialid))
159  {
161  }
162  }
163  m_playerCtx->UnlockPlayingInfo(__FILE__, __LINE__);
164 
166 }
167 
169 {
170  if (m_playerCtx->m_buffer->BD() && m_playerCtx->m_buffer->BD()->IsOpen())
171  return static_cast<int>(m_playerCtx->m_buffer->BD()->GetNumChapters());
172  return -1;
173 }
174 
176 {
177  if (m_playerCtx->m_buffer->BD() && m_playerCtx->m_buffer->BD()->IsOpen())
178  return static_cast<int>(m_playerCtx->m_buffer->BD()->GetCurrentChapter() + 1);
179  return -1;
180 }
181 
182 int64_t MythBDPlayer::GetChapter(int Chapter)
183 {
184  if (GetNumChapters() < 1)
185  return -1;
186  auto chapter = static_cast<uint32_t>(Chapter - 1);
187  return static_cast<int64_t>(m_playerCtx->m_buffer->BD()->GetChapterStartFrame(chapter));
188 }
189 
190 void MythBDPlayer::GetChapterTimes(QList<long long> &ChapterTimes)
191 {
192  uint total = static_cast<uint>(GetNumChapters());
193  for (uint i = 0; i < total; i++)
194  ChapterTimes.push_back(static_cast<long long>(m_playerCtx->m_buffer->BD()->GetChapterStartTime(i)));
195 }
196 
198 {
200  return 0;
201 
202  if (m_playerCtx->m_buffer->BD() && m_playerCtx->m_buffer->BD()->IsOpen())
203  return static_cast<int>(m_playerCtx->m_buffer->BD()->GetNumTitles());
204  return 0;
205 }
206 
208 {
209  if (m_playerCtx->m_buffer->BD() && m_playerCtx->m_buffer->BD()->IsOpen())
210  return static_cast<int>(m_playerCtx->m_buffer->BD()->GetNumAngles());
211  return 0;
212 }
213 
215 {
216  if (m_playerCtx->m_buffer->BD() && m_playerCtx->m_buffer->BD()->IsOpen())
217  return m_playerCtx->m_buffer->BD()->GetCurrentTitle();
218  return -1;
219 }
220 
222 {
223  if (m_playerCtx->m_buffer->BD() && m_playerCtx->m_buffer->BD()->IsOpen())
224  return static_cast<int>(m_playerCtx->m_buffer->BD()->GetCurrentAngle());
225  return -1;
226 }
227 
228 int MythBDPlayer::GetTitleDuration(int Title) const
229 {
230  if (m_playerCtx->m_buffer->BD() && m_playerCtx->m_buffer->BD()->IsOpen() &&
231  Title >= 0 && Title < GetNumTitles())
232  {
233  return m_playerCtx->m_buffer->BD()->GetTitleDuration(Title);
234  }
235  return 0;
236 }
237 
238 QString MythBDPlayer::GetTitleName(int Title) const
239 {
240  if (Title >= 0 && Title < GetNumTitles())
241  {
242  // BD doesn't provide title names, so show title number and duration
243  QString timestr = MythFormatTime(GetTitleDuration(Title), "HH:mm:ss");
244  QString name = QString("%1 (%2)").arg(Title+1).arg(timestr);
245  return name;
246  }
247  return QString();
248 }
249 
250 QString MythBDPlayer::GetAngleName(int Angle) const
251 {
252  if (Angle >= 1 && Angle <= GetNumAngles())
253  return tr("Angle %1").arg(Angle);
254  return QString();
255 }
256 
258 {
260  return false;
261 
262  int total = GetNumTitles();
263  if ((total < 1) || Title == GetCurrentTitle() || (Title >= total))
264  return false;
265 
266  Pause();
267 
268  bool ok = false;
269  if (m_playerCtx->m_buffer->BD()->SwitchTitle(static_cast<uint32_t>(Title)))
270  {
271  ResetCaptions();
272  if (OpenFile() != 0)
273  {
274  SetErrored(tr("Failed to switch title."));
275  }
276  else
277  {
278  ok = true;
279  m_forcePositionMapSync = true;
280  }
281  }
282 
283  Play();
284  return ok;
285 }
286 
288 {
290  return false;
291 
292  int total = GetNumTitles();
293  int next = GetCurrentTitle() + 1;
294  if ((total < 1) || (next >= total))
295  return false;
296 
297  return SwitchTitle(next);
298 }
299 
301 {
303  return false;
304 
305  uint total = static_cast<uint>(GetNumTitles());
306  int prev = GetCurrentTitle() - 1;
307  if (!total || prev < 0)
308  return false;
309 
310  return SwitchTitle(prev);
311 }
312 
314 {
315  int total = GetNumAngles();
316  if (!total || Angle == GetCurrentAngle())
317  return false;
318 
319  if (Angle >= total)
320  Angle = 0;
321 
322  return m_playerCtx->m_buffer->BD()->SwitchAngle(static_cast<uint>(Angle));
323 }
324 
326 {
327  int total = GetNumAngles();
328  int next = GetCurrentAngle() + 1;
329  if (total < 1)
330  return false;
331  if (next >= total)
332  next = 0;
333  return SwitchAngle(next);
334 }
335 
337 {
338  int total = GetNumAngles();
339  int prev = GetCurrentAngle() - 1;
340  if ((total < 1) || total == 1)
341  return false;
342  if (prev < 0)
343  prev = total;
344  return SwitchAngle(prev);
345 }
346 
348 {
350  {
351  QString name;
352  QString serialid;
353  if (!m_playerCtx->m_buffer->BD()->GetNameAndSerialNum(name, serialid))
354  {
355  LOG(VB_GENERAL, LOG_ERR, LOC + "BD has no name and serial number. Cannot set bookmark.");
356  return;
357  }
358 
359  QString bdstate;
360  if (!Clear && !m_playerCtx->m_buffer->BD()->GetBDStateSnapshot(bdstate))
361  {
362  LOG(VB_GENERAL, LOG_ERR, LOC + "Unable to retrieve BD state. Cannot set bookmark.");
363  return;
364  }
365 
366  LOG(VB_GENERAL, LOG_INFO, LOC + QString("BDState:%1").arg(bdstate));
367 
368  m_playerCtx->LockPlayingInfo(__FILE__, __LINE__);
370  {
371  QStringList fields;
372  fields += serialid;
373  fields += name;
374 
375  if (!Clear)
376  {
377  LOG(VB_PLAYBACK, LOG_INFO, LOC + "Set bookmark");
378  fields += bdstate;
379  }
380  else
381  {
382  LOG(VB_PLAYBACK, LOG_INFO, LOC + "Clear bookmark");
383  }
384 
386  }
387  m_playerCtx->UnlockPlayingInfo(__FILE__, __LINE__);
388  }
389 }
390 
392 {
393  uint64_t frames = 0;
395  return frames;
396 
397  m_playerCtx->LockPlayingInfo(__FILE__, __LINE__);
398 
400  {
401  QString name;
402  QString serialid;
403  if (!m_playerCtx->m_buffer->BD()->GetNameAndSerialNum(name, serialid))
404  {
405  m_playerCtx->UnlockPlayingInfo(__FILE__, __LINE__);
406  return frames;
407  }
408 
409  QStringList bdbookmark = m_playerCtx->m_playingInfo->QueryBDBookmark(serialid);
410 
411  if (!bdbookmark.empty())
412  {
413  m_initialBDState = bdbookmark[0];
414  frames = ~0x0ULL;
415  LOG(VB_PLAYBACK, LOG_INFO, LOC + "Get Bookmark: bookmark found");
416  }
417  }
418 
419  m_playerCtx->UnlockPlayingInfo(__FILE__, __LINE__);
420  return frames;;
421 }
422 
423 void MythBDPlayer::CreateDecoder(char *TestBuffer, int TestReadSize)
424 {
425  if (MythBDDecoder::CanHandle(TestBuffer, m_playerCtx->m_buffer->GetFilename(), TestReadSize))
427 }
MythMediaBuffer::BD
const MythBDBuffer * BD(void) const
Definition: mythmediabuffer.cpp:1854
MythBDPlayer::GetChapter
int64_t GetChapter(int Chapter) override
Definition: mythbdplayer.cpp:182
MythBDPlayer::GetChapterTimes
void GetChapterTimes(QList< long long > &ChapterTimes) override
Definition: mythbdplayer.cpp:190
MythBDPlayer::EventStart
void EventStart(void) override
Definition: mythbdplayer.cpp:150
mythbddecoder.h
AvFormatDecoder::CanHandle
static bool CanHandle(char testbuf[kDecoderProbeBufferSize], const QString &filename, int testbufsize=kDecoderProbeBufferSize)
Perform an av_probe_input_format on the passed data to see if we can decode it with this class.
Definition: avformatdecoder.cpp:856
MythPlayer::m_videoPaused
bool m_videoPaused
Definition: mythplayer.h:704
MythBDPlayer::CreateDecoder
void CreateDecoder(char *TestBuffer, int TestReadSize) override
Definition: mythbdplayer.cpp:423
PlayerContext::UnlockPlayingInfo
void UnlockPlayingInfo(const char *file, int line) const
Definition: playercontext.cpp:557
mythbdplayer.h
MythBDBuffer::IsHDMVNavigation
bool IsHDMVNavigation(void) const
Definition: mythbdbuffer.cpp:1216
kEofStateNone
@ kEofStateNone
Definition: decoderbase.h:68
MythBDPlayer::PrevAngle
bool PrevAngle(void) override
Definition: mythbdplayer.cpp:336
MythBDBuffer::GetChapterStartTime
uint64_t GetChapterStartTime(uint32_t Chapter)
Definition: mythbdbuffer.cpp:572
MythBDPlayer::SetBookmark
void SetBookmark(bool Clear) override
Definition: mythbdplayer.cpp:347
MythBDPlayer::GetNumTitles
int GetNumTitles(void) const override
Definition: mythbdplayer.cpp:197
MythBDBuffer::GetOverlay
MythBDOverlay * GetOverlay(void)
Definition: mythbdbuffer.cpp:1351
MythPlayer::OpenFile
virtual int OpenFile(int Retries=4)
Definition: mythplayer.cpp:782
MythPlayer::EventStart
virtual void EventStart(void)
Definition: mythplayer.cpp:2794
Frame
Definition: zmdefines.h:93
VideoFrame::timecode
long long timecode
Definition: mythframe.h:150
MythPlayer::m_forcePositionMapSync
bool m_forcePositionMapSync
Definition: mythplayer.h:829
MythBDBuffer::IsInStillFrame
bool IsInStillFrame(void) const override
Definition: mythbdbuffer.cpp:1164
MythBDPlayer::DisplayPauseFrame
void DisplayPauseFrame(void) override
Definition: mythbdplayer.cpp:53
MythCoreContext::IsDatabaseIgnored
bool IsDatabaseIgnored(void) const
/brief Returns true if database is being ignored.
Definition: mythcorecontext.cpp:894
arg
arg(title).arg(filename).arg(doDelete))
MythBDBuffer::GetNumAngles
uint64_t GetNumAngles(void) const
Definition: mythbdbuffer.cpp:793
MythBDPlayer::m_stillFrameShowing
bool m_stillFrameShowing
Definition: mythbdplayer.h:61
MythBDOverlay
Definition: mythbdoverlay.h:18
MythBDBuffer::GoToMenu
bool GoToMenu(const QString &Menu, int64_t Pts)
jump to a Blu-ray root or popup menu
Definition: mythbdbuffer.cpp:950
MythPlayer::DisplayNormalFrame
virtual void DisplayNormalFrame(bool check_prebuffer=true)
Definition: mythplayer.cpp:2110
MythPlayer::IsErrored
bool IsErrored(void) const
Definition: mythplayer.cpp:5424
LOG
#define LOG(_MASK_, _LEVEL_, _QSTRING_)
Definition: mythlogging.h:23
MythBDPlayer::GetCurrentAngle
int GetCurrentAngle(void) const override
Definition: mythbdplayer.cpp:221
MythBDBuffer::GetNumTitles
uint32_t GetNumTitles(void) const
Definition: mythbdbuffer.cpp:588
MythBDPlayer::NextTitle
bool NextTitle(void) override
Definition: mythbdplayer.cpp:287
PlayerFlags
PlayerFlags
Definition: mythplayer.h:87
MythPlayer::GetEof
EofState GetEof(void) const
Definition: mythplayer.cpp:3222
MythPlayer::Pause
bool Pause(void)
Definition: mythplayer.cpp:248
MythPlayer
Definition: mythplayer.h:164
MythMediaBuffer::IsBD
bool IsBD(void) const
Definition: mythmediabuffer.cpp:1844
VideoFrame
Definition: mythframe.h:137
MythMediaBuffer::IsInMenu
virtual bool IsInMenu(void) const
Definition: mythmediabuffer.h:129
MythVideoOutput::UpdatePauseFrame
virtual void UpdatePauseFrame(int64_t &DisplayTimecode, FrameScanType Scan=kScan_Progressive)=0
MythBDBuffer::GetNameAndSerialNum
bool GetNameAndSerialNum(QString &Name, QString &SerialNum) override
Definition: mythbdbuffer.cpp:1253
MythPlayer::DisplayPauseFrame
virtual void DisplayPauseFrame(void)
Definition: mythplayer.cpp:1933
MythPlayer::SetErrored
void SetErrored(const QString &reason)
Definition: mythplayer.cpp:5400
MythPlayer::m_needNewPauseFrame
bool m_needNewPauseFrame
Definition: mythplayer.h:702
MythBDPlayer::DisplayMenu
void DisplayMenu(void)
Definition: mythbdplayer.cpp:41
MythPlayer::SetDecoder
void SetDecoder(DecoderBase *dec)
Sets the stream decoder, deleting any existing recorder.
Definition: mythplayer.cpp:5360
MythPlayer::m_osdLock
QMutex m_osdLock
Definition: mythplayer.h:815
MythBDBuffer::IsOpen
bool IsOpen(void) const override
Definition: mythbdbuffer.cpp:544
EofState
EofState
Definition: decoderbase.h:66
MythPlayer::SetScanType
void SetScanType(FrameScanType Scan)
Definition: mythplayer.cpp:638
MythBDPlayer::NextAngle
bool NextAngle(void) override
Definition: mythbdplayer.cpp:325
MythMediaBuffer::GetFilename
QString GetFilename(void) const
Definition: mythmediabuffer.cpp:1748
MythPlayer::UnpauseVideo
void UnpauseVideo(void)
Definition: mythplayer.cpp:318
LOC
#define LOC
Definition: mythbdplayer.cpp:9
ProgramInfo::QueryBDBookmark
QStringList QueryBDBookmark(const QString &serialid) const
Queries "bdbookmark" table for bookmarking BD serial number.
Definition: programinfo.cpp:2788
MythPlayer::ResetCaptions
void ResetCaptions(void)
Definition: mythplayer.cpp:1162
MythBDBuffer::GetChapterStartFrame
uint64_t GetChapterStartFrame(uint32_t Chapter)
Definition: mythbdbuffer.cpp:580
kScan_Progressive
@ kScan_Progressive
Definition: videoouttypes.h:84
PlayerContext::m_playingInfo
ProgramInfo * m_playingInfo
Currently playing info.
Definition: playercontext.h:156
PlayerContext::LockPlayingInfo
void LockPlayingInfo(const char *file, int line) const
Definition: playercontext.cpp:545
MythBDPlayer::VideoStart
void VideoStart(void) override
Definition: mythbdplayer.cpp:61
ProgramInfo::GetTitle
QString GetTitle(void) const
Definition: programinfo.h:356
MythPlayer::m_videoOutput
MythVideoOutput * m_videoOutput
Definition: mythplayer.h:671
PlayerContext::m_buffer
MythMediaBuffer * m_buffer
Definition: playercontext.h:155
OSD::DisplayBDOverlay
void DisplayBDOverlay(MythBDOverlay *Overlay)
Definition: osd.cpp:1224
MythBDPlayer::PrevTitle
bool PrevTitle(void) override
Definition: mythbdplayer.cpp:300
MythPlayer::PauseVideo
void PauseVideo(void)
Definition: mythplayer.cpp:310
MythBDPlayer::m_initialBDState
QString m_initialBDState
Definition: mythbdplayer.h:62
MythBDPlayer::GetNumAngles
int GetNumAngles(void) const override
Definition: mythbdplayer.cpp:207
MythBDPlayer::GetTitleDuration
int GetTitleDuration(int Title) const override
Definition: mythbdplayer.cpp:228
MythPlayer::VideoLoop
virtual bool VideoLoop(void)
Definition: mythplayer.cpp:2303
MythVideoOutput::ValidVideoFrames
virtual int ValidVideoFrames(void) const
Returns number of frames that are fully decoded.
Definition: mythvideoout.cpp:653
MythFormatTime
QString MythFormatTime(int secs, QString fmt)
Format a seconds time value.
Definition: mythmiscutil.cpp:1237
MythBDPlayer::GoToMenu
bool GoToMenu(const QString &Menu) override
Definition: mythbdplayer.cpp:29
MythPlayer::m_osd
OSD * m_osd
Definition: mythplayer.h:813
ProgramInfo::SetTitle
void SetTitle(const QString &t, const QString &st=nullptr)
Definition: programinfo.cpp:1145
MythPlayer::m_playerCtx
PlayerContext * m_playerCtx
Definition: mythplayer.h:672
MythBDBuffer::GetTitleDuration
int GetTitleDuration(int Title)
Definition: mythbdbuffer.cpp:604
MythBDPlayer::SwitchAngle
bool SwitchAngle(int Angle) override
Definition: mythbdplayer.cpp:313
MythBDBuffer::SwitchAngle
bool SwitchAngle(uint Angle)
Definition: mythbdbuffer.cpp:782
MythVideoOutput::GetLastShownFrame
virtual VideoFrame * GetLastShownFrame(void)
Returns frame from the head of the ready to be displayed queue, if StartDisplayingFrame has been call...
Definition: mythvideoout.cpp:713
uint
unsigned int uint
Definition: compat.h:140
gCoreContext
MythCoreContext * gCoreContext
This global variable contains the MythCoreContext instance for the app.
Definition: mythcorecontext.cpp:57
MythBDBuffer::BDWaitingForPlayer
bool BDWaitingForPlayer(void) const
Definition: mythbdbuffer.cpp:249
MythPlayer::m_playerFlags
PlayerFlags m_playerFlags
Definition: mythplayer.h:678
MythBDBuffer::GetNumChapters
uint32_t GetNumChapters(void)
Definition: mythbdbuffer.cpp:549
MythBDBuffer::SkipBDWaitingForPlayer
void SkipBDWaitingForPlayer(void)
Definition: mythbdbuffer.cpp:254
MythBDPlayer::SwitchTitle
bool SwitchTitle(int Title) override
Definition: mythbdplayer.cpp:257
MythBDPlayer::VideoLoop
bool VideoLoop(void) override
Definition: mythbdplayer.cpp:69
mythbdbuffer.h
MythMediaBuffer::IsBookmarkAllowed
virtual bool IsBookmarkAllowed(void)
Definition: mythmediabuffer.h:125
next
PictureAttribute next(PictureAttributeSupported Supported, PictureAttribute Attribute)
Definition: videoouttypes.h:350
ProgramInfo::SaveBDBookmark
static void SaveBDBookmark(const QStringList &fields)
Definition: programinfo.cpp:2806
MythBDPlayer::GetAngleName
QString GetAngleName(int Angle) const override
Definition: mythbdplayer.cpp:250
MythPlayer::m_dispTimecode
int64_t m_dispTimecode
Definition: mythplayer.h:853
MythBDBuffer::GetCurrentChapter
uint32_t GetCurrentChapter(void)
Definition: mythbdbuffer.cpp:557
Clear
#define Clear(a)
Definition: audiooutputopensles.cpp:49
MythBDPlayer::GetCurrentChapter
int GetCurrentChapter(void) override
Definition: mythbdplayer.cpp:175
MythBDPlayer::HasReachedEof
bool HasReachedEof(void) const override
Definition: mythbdplayer.cpp:16
MythBDPlayer::MythBDPlayer
MythBDPlayer(PlayerFlags Flags=kNoFlags)
Definition: mythbdplayer.cpp:11
MythBDPlayer::PreProcessNormalFrame
void PreProcessNormalFrame(void) override
Definition: mythbdplayer.cpp:24
MythBDBuffer::GetCurrentAngle
uint64_t GetCurrentAngle(void) const
Definition: mythbdbuffer.cpp:599
MythBDPlayer::GetCurrentTitle
int GetCurrentTitle(void) const override
Definition: mythbdplayer.cpp:214
MythBDPlayer::GetBookmark
uint64_t GetBookmark(void) override
Definition: mythbdplayer.cpp:391
MythPlayer::JumpToFrame
virtual bool JumpToFrame(uint64_t frame)
Definition: mythplayer.cpp:2393
MythPlayer::m_allPaused
bool m_allPaused
Definition: mythplayer.h:705
MythBDBuffer::SwitchTitle
bool SwitchTitle(uint32_t Index)
Definition: mythbdbuffer.cpp:633
MythBDBuffer::GetCurrentTitle
int GetCurrentTitle(void)
Definition: mythbdbuffer.cpp:593
MythBDBuffer::GetBDStateSnapshot
bool GetBDStateSnapshot(QString &State)
Get a snapshot of the current BD state.
Definition: mythbdbuffer.cpp:1264
MythBDPlayer::GetTitleName
QString GetTitleName(int Title) const override
Definition: mythbdplayer.cpp:238
MythBDBuffer::RestoreBDStateSnapshot
bool RestoreBDStateSnapshot(const QString &State)
Restore a BD snapshot.
Definition: mythbdbuffer.cpp:1278
MythBDPlayer::JumpToFrame
bool JumpToFrame(uint64_t Frame) override
Definition: mythbdplayer.cpp:143
MythPlayer::VideoStart
virtual void VideoStart(void)
Definition: mythplayer.cpp:2221
MythPlayer::Play
bool Play(float speed=1.0, bool normal=true, bool unpauseaudio=true)
Definition: mythplayer.cpp:280
MythBDDecoder
Definition: mythbddecoder.h:7
MythBDPlayer::GetNumChapters
int GetNumChapters(void) override
Definition: mythbdplayer.cpp:168