MythTV  master
mythplayer.h
Go to the documentation of this file.
1 #ifndef MYTHPLAYER_H
2 #define MYTHPLAYER_H
3 
4 // Qt
5 #include <QCoreApplication>
6 #include <QList>
7 #include <QMutex>
8 #if QT_VERSION >= QT_VERSION_CHECK(5,14,0)
9 #include <QRecursiveMutex>
10 #endif
11 #include <QTime>
12 #include <QString>
13 #include <QRect>
14 #include <QSize>
15 #include <QStringList>
16 #include <QWaitCondition>
17 
18 // MythTV
19 #include "playercontext.h"
20 #include "volumebase.h"
21 #include "osd.h"
22 #include "mythvideoout.h"
25 #include "captions/cc608reader.h"
26 #include "captions/cc708reader.h"
27 #include "decoders/decoderbase.h"
28 #include "deletemap.h"
29 #include "commbreakmap.h"
30 #include "audioplayer.h"
31 #include "mthread.h"
32 #include "mythavutil.h"
33 #include "mythtypes.h"
34 #include "programtypes.h"
35 #include "tv.h"
36 #include "videoouttypes.h"
37 #include "mythmiscutil.h"
38 #include "mythplayeravsync.h"
39 #include "mythtvexp.h"
40 
41 // Std
42 #include <cstdint>
43 #include <utility>
44 #include <thread>
45 
46 class ProgramInfo;
47 class InteractiveTV;
48 class QThread;
49 class MythMediaBuffer;
50 class MythDecoderThread;
51 
52 using StatusCallback = void (*)(int, void*);
53 
55 enum TCTypes
56 {
57  TC_VIDEO = 0,
61 };
62 #define TCTYPESMAX 4
63 using tctype_arr = std::array<std::chrono::milliseconds,TCTYPESMAX>;
64 
66 {
67  kNoFlags = 0x000000,
68  kDecodeLowRes = 0x000001,
70  kDecodeFewBlocks = 0x000004,
71  kDecodeNoLoopFilter = 0x000008,
72  kDecodeNoDecode = 0x000010,
73  kDecodeAllowGPU = 0x000020,
74  kVideoIsNull = 0x000040,
75  kAudioMuted = 0x010000,
76  kNoITV = 0x020000,
77  kMusicChoice = 0x040000,
78 };
79 
80 #define FlagIsSet(arg) (m_playerFlags & (arg))
81 
82 // Padding between class members reduced from 113 to 73 bytes, but its
83 // still higher than the default warning threshhold of 24 bytes.
84 //
85 // NOLINTNEXTLINE(clang-analyzer-optin.performance.Padding)
86 class MTV_PUBLIC MythPlayer : public QObject
87 {
88  Q_OBJECT
89 
90  // Do NOT add a decoder class to this list
91  friend class PlayerContext;
92  friend class CC708Reader;
93  friend class CC608Reader;
94  friend class MythDecoderThread;
95  friend class VideoPerformanceTest;
96  // TODO remove these
97  friend class TV;
98  friend class Transcode;
99 
100  signals:
101  void CheckCallbacks();
102  void SeekingSlow(int Count);
103  void SeekingComplete();
104  void PauseChanged(bool Paused);
105  void RequestResetCaptions();
106  void SignalTracksChanged(uint Type);
107 
108  public:
109  explicit MythPlayer(PlayerContext* Context, PlayerFlags Flags = kNoFlags);
110  ~MythPlayer() override;
111 
112  // Initialisation
113  virtual int OpenFile(int Retries = 4);
114  virtual bool InitVideo(void);
115  virtual void ReinitVideo(bool ForceUpdate);
116  virtual void InitFrameInterval();
117 
118  // Public Sets
119  void SetLength(std::chrono::seconds len) { m_totalLength = len; }
120  void SetFramesPlayed(uint64_t played);
121  void SetEof(EofState eof);
122  void SetWatchingRecording(bool mode);
123  void SetKeyframeDistance(int keyframedistance);
124  virtual void SetVideoParams(int w, int h, double fps, float aspect,
125  bool ForceUpdate, int ReferenceFrames,
126  FrameScanType /*scan*/ = kScan_Ignore,
127  const QString& codecName = QString());
128  void SetFileLength(std::chrono::seconds total, int frames);
129  void SetDuration(std::chrono::seconds duration);
130  void SetFrameRate(double fps);
131 
132  // Gets
133  QSize GetVideoBufferSize(void) const { return m_videoDim; }
134  QSize GetVideoSize(void) const { return m_videoDispDim; }
135  float GetVideoAspect(void) const { return m_videoAspect; }
136  float GetFrameRate(void) const { return m_videoFrameRate; }
137  bool IsAudioNeeded(void) { return ((FlagIsSet(kVideoIsNull)) == 0); }
138  int GetFreeVideoFrames(void) const;
139 
140  int GetFFRewSkip(void) const { return m_ffrewSkip; }
141  float GetPlaySpeed(void) const { return m_playSpeed; }
142  AudioPlayer* GetAudio(void) { return &m_audio; }
143  float GetNextPlaySpeed(void) const { return m_nextPlaySpeed; }
144  std::chrono::seconds GetLength(void) const { return m_totalLength; }
145  uint64_t GetTotalFrameCount(void) const { return m_totalFrames; }
146  uint64_t GetCurrentFrameCount(void) const;
147  uint64_t GetFramesPlayed(void) const { return m_framesPlayed; }
148  virtual uint64_t GetBookmark(void);
149  QString GetError(void) const;
150  QString GetEncodingType(void) const;
151  QString GetXDS(const QString &key) const;
152 
153  // Bool Gets
154  bool IsPaused(void) const { return m_allPaused; }
155  bool GetRawAudioState(void) const;
156  bool GetLimitKeyRepeat(void) const { return m_limitKeyRepeat; }
157  EofState GetEof(void) const;
158  bool IsErrored(void) const;
159  bool IsPlaying(std::chrono::milliseconds wait_in_msec = 0ms,
160  bool wait_for = true) const;
161  bool AtNormalSpeed(void) const { return m_nextNormalSpeed; }
162  bool IsReallyNearEnd(void) const;
163  bool IsNearEnd(void);
164  bool HasTVChainNext(void) const;
165  bool IsWatchingInprogress(void) const;
166 
167  virtual InteractiveTV *GetInteractiveTV() { return nullptr; }
168  MythVideoOutput *GetVideoOutput(void) { return m_videoOutput; }
169 
170  // Title stuff
171  virtual bool SwitchTitle(int /*title*/) { return false; }
172  virtual bool NextTitle(void) { return false; }
173  virtual bool PrevTitle(void) { return false; }
174 
175  // Angle stuff
176  virtual bool SwitchAngle(int /*title*/) { return false; }
177  virtual bool NextAngle(void) { return false; }
178  virtual bool PrevAngle(void) { return false; }
179 
180  // Decoder stuff..
181  MythVideoFrame *GetNextVideoFrame(void);
182  void DeLimboFrame(MythVideoFrame *frame);
183  virtual void ReleaseNextVideoFrame(MythVideoFrame *buffer, std::chrono::milliseconds timecode,
184  bool wrap = true);
185  void DiscardVideoFrame(MythVideoFrame *buffer);
186  void DiscardVideoFrames(bool KeyFrame, bool Flushed);
188  DecoderBase *GetDecoder(void) { return m_decoder; }
189  virtual bool HasReachedEof(void) const;
190  void SetDisablePassThrough(bool disabled);
191  void ForceSetupAudioStream(void);
192 
193  // Add data
194  virtual bool PrepareAudioSample(std::chrono::milliseconds &timecode);
195 
196  // Public Closed caption and teletext stuff
197  virtual CC708Reader *GetCC708Reader(uint /*id*/=0) { return &m_cc708; }
198  virtual CC608Reader *GetCC608Reader(uint /*id*/=0) { return &m_cc608; }
199  virtual SubtitleReader *GetSubReader(uint /*id*/=0) { return &m_subReader; }
200  virtual TeletextReader *GetTeletextReader(uint /*id*/=0) { return &m_ttxReader; }
201 
202  // Public Audio/Subtitle/EIA-608/EIA-708 stream selection - thread safe
203  void EnableForcedSubtitles(bool enable);
204  bool ForcedSubtitlesFavored(void) const {
205  return m_allowForcedSubtitles && !m_captionsEnabledbyDefault;
206  }
207  // How to handle forced Subtitles (i.e. when in a movie someone speaks
208  // in a different language than the rest of the movie, subtitles are
209  // forced on even if the user doesn't have them turned on.)
210  // These two functions are not thread-safe (UI thread use only).
211  bool GetAllowForcedSubtitles(void) const { return m_allowForcedSubtitles; }
212 
213  // LiveTV public stuff
214  void CheckTVChain();
215  void FileChangedCallback();
216 
217  // Chapter public stuff
218  virtual int GetNumChapters(void);
219  virtual int GetCurrentChapter(void);
220  virtual void GetChapterTimes(QList<std::chrono::seconds> &times);
221 
222  // Title public stuff
223  virtual int GetNumTitles(void) const { return 0; }
224  virtual int GetCurrentTitle(void) const { return 0; }
225  virtual std::chrono::seconds GetTitleDuration(int /*title*/) const { return 0s; }
226  virtual QString GetTitleName(int /*title*/) const { return QString(); }
227 
228  // Angle public stuff
229  virtual int GetNumAngles(void) const { return 0; }
230  virtual int GetCurrentAngle(void) const { return 0; }
231  virtual QString GetAngleName(int /*title*/) const { return QString(); }
232 
233  // DVD public stuff
234  virtual bool IsInStillFrame() const { return false; }
235 
236  // Position Map Stuff
237  bool PosMapFromEnc(uint64_t start, frm_pos_map_t &posMap, frm_pos_map_t &durMap);
238 
239  void SaveTotalDuration(void);
240  void ResetTotalDuration(void);
241 
244  static const double kInaccuracyNone;
245  static const double kInaccuracyDefault;
246  static const double kInaccuracyEditor;
247  static const double kInaccuracyFull;
248 
249  void SaveTotalFrames(void);
250  void SetErrored(const QString &reason);
251 
252  protected:
253  // Initialization
254  void OpenDummy(void);
255 
256  // Complicated gets
257  virtual long long CalcMaxFFTime(long long ff, bool setjump = true) const;
258  long long CalcRWTime(long long rw) const;
259  std::chrono::milliseconds TranslatePositionFrameToMs(uint64_t position,
260  bool use_cutlist) const;
261  uint64_t TranslatePositionMsToFrame(std::chrono::milliseconds position,
262  bool use_cutlist) const {
263  return m_deleteMap.TranslatePositionMsToFrame(position,
264  GetFrameRate(),
265  use_cutlist);
266  }
267  // TranslatePositionAbsToRel and TranslatePositionRelToAbs are
268  // used for frame calculations when seeking relative to a number
269  // of frames rather than by time.
270  uint64_t TranslatePositionAbsToRel(uint64_t position) const {
271  return m_deleteMap.TranslatePositionAbsToRel(position);
272  }
273  uint64_t TranslatePositionRelToAbs(uint64_t position) const {
274  return m_deleteMap.TranslatePositionRelToAbs(position);
275  }
276  float ComputeSecs(uint64_t position, bool use_cutlist) const {
277  return TranslatePositionFrameToMs(position, use_cutlist).count() / 1000.0;
278  }
279  uint64_t FindFrame(float offset, bool use_cutlist) const;
280 
281  // Commercial stuff
283  { m_commBreakMap.SetAutoCommercialSkip(autoskip, m_framesPlayed); }
284  void SkipCommercials(int direction)
285  { m_commBreakMap.SkipCommercials(direction); }
286  void SetCommBreakMap(const frm_dir_map_t& NewMap);
288  { return m_commBreakMap.GetAutoCommercialSkip(); }
289 
290  // Start/Reset/Stop playing
291  virtual void ResetPlaying(bool resetframes = true);
292  virtual void StopPlaying(void);
293 
294  // Pause stuff
295  bool PauseDecoder(void);
296  void UnpauseDecoder(void);
297  bool Pause(void);
298  bool Play(float speed = 1.0, bool normal = true, bool unpauseaudio = true);
299 
300  // Seek stuff
301  virtual bool FastForward(float seconds);
302  virtual bool Rewind(float seconds);
303  virtual bool JumpToFrame(uint64_t frame);
304 
305  // Chapter stuff
306  void JumpChapter(int chapter);
307 
308  // Playback
309  virtual bool PrebufferEnoughFrames(int min_buffers = 0);
310  void SetBuffering(bool new_buffering);
311  virtual void VideoEnd(void);
312  virtual void DecoderStart(bool start_paused);
313  virtual void DecoderLoop(bool pause);
314  virtual void DecoderEnd(void);
315  virtual void DecoderPauseCheck(void);
316  virtual void AudioEnd(void);
317 
318  // Edit mode stuff
319  bool GetEditMode(void) const { return m_deleteMap.IsEditing(); }
320  bool IsInDelete(uint64_t frame);
321 
322  protected:
323  // Private Sets
324  void SetPlayingInfo(const ProgramInfo &pginfo);
325  void SetPlaying(bool is_playing);
326  void ResetErrored(void);
327 
328  // Private pausing stuff
329  void PauseVideo(void);
330  void UnpauseVideo(void);
331  void PauseBuffer(void);
332  void UnpauseBuffer(void);
333 
334  // Private decoder stuff
335  virtual void CreateDecoder(TestBufferVec & TestBuffer);
336  void SetDecoder(DecoderBase *dec);
338  const DecoderBase *GetDecoder(void) const { return m_decoder; }
339  virtual bool DecoderGetFrameFFREW(void);
340  virtual bool DecoderGetFrameREW(void);
341  bool DecoderGetFrame(DecodeType decodetype, bool unsafe = false);
342  bool DoGetFrame(DecodeType DecodeType);
343 
344  // These actually execute commands requested by public members
345  bool UpdateFFRewSkip(void);
346  virtual void ChangeSpeed(void);
347  // The "inaccuracy" argument is generally one of the kInaccuracy* values.
348  bool DoFastForward(uint64_t frames, double inaccuracy);
349  bool DoRewind(uint64_t frames, double inaccuracy);
350  void DoJumpToFrame(uint64_t frame, double inaccuracy);
351 
352  // Private seeking stuff
353  void WaitForSeek(uint64_t frame, uint64_t seeksnap_wanted);
354  void ClearAfterSeek(bool clearvideobuffers = true);
355  void ClearBeforeSeek(uint64_t Frames);
356 
357  // Private chapter stuff
358  virtual bool DoJumpChapter(int chapter);
359  virtual int64_t GetChapter(int chapter);
360 
361  // Private A/V Sync Stuff
362  void WrapTimecode(std::chrono::milliseconds &timecode, TCTypes tc_type);
363  void SetFrameInterval(FrameScanType scan, double frame_period);
364 
365  protected:
366  DecoderBase *m_decoder {nullptr};
367 #if QT_VERSION < QT_VERSION_CHECK(5,14,0)
368  mutable QMutex m_decoderChangeLock {QMutex::Recursive};
369 #else
370  mutable QRecursiveMutex m_decoderChangeLock;
371 #endif
372  MythVideoOutput *m_videoOutput {nullptr};
374  PlayerContext *m_playerCtx {nullptr};
375  MythDecoderThread* m_decoderThread {nullptr};
376  QThread *m_playerThread {nullptr};
377 #ifdef Q_OS_ANDROID
378  int m_playerThreadId {0};
379 #endif
381 
382  // State
383  QWaitCondition m_decoderThreadPause;
384  QWaitCondition m_decoderThreadUnpause;
385  mutable QMutex m_decoderPauseLock;
386  mutable QMutex m_decoderSeekLock;
387  mutable QMutex m_bufferPauseLock;
388  mutable QMutex m_videoPauseLock;
389  mutable QMutex m_pauseLock;
390  int64_t m_decoderSeek {-1};
391  bool m_totalDecoderPause {false};
392  bool m_decoderPaused {false};
393  bool m_inJumpToProgramPause {false};
394  bool m_pauseDecoder {false};
395  bool m_unpauseDecoder {false};
396  bool volatile m_killDecoder {false};
397  bool m_decodeOneFrame {false};
398  bool m_needNewPauseFrame {false};
399  bool m_bufferPaused {false};
400  bool m_videoPaused {false};
401  bool m_allPaused {false};
402  bool m_playing {false};
403 
404  mutable QWaitCondition m_playingWaitCond;
405  mutable QMutex m_vidExitLock;
406  mutable QMutex m_playingLock;
407  mutable QMutex m_errorLock;
408  QString m_errorMsg;
409  int m_errorType {kError_None};
410  bool m_liveTV {false};
411  bool m_watchingRecording {false};
412  bool m_transcoding {false};
413  bool m_hasFullPositionMap {false};
414  mutable bool m_limitKeyRepeat {false};
415 
416  // Chapter stuff
417  int m_jumpChapter {0};
418 
419  // Bookmark stuff
420  uint64_t m_bookmarkSeek {0};
421  int m_clearSavedPosition {1};
423 
424  // Seek
427  long long m_ffTime {0};
428 
429  // Playback misc.
431  int m_videobufRetries {0};
432  uint64_t m_framesPlayed {0};
433  uint64_t m_totalFrames {0};
434  std::chrono::seconds m_totalLength {0s};
435  std::chrono::seconds m_totalDuration {0s};
436  long long m_rewindTime {0};
437  std::chrono::milliseconds m_latestVideoTimecode {-1ms};
439 
440  // -- end state stuff --
441 
442  // Input Video Attributes
443  double m_videoFrameRate {29.97};
444  QString m_codecName;
446  QSize m_videoDispDim {0,0};
447  QSize m_videoDim {0,0};
448  int m_maxReferenceFrames {0};
449  float m_videoAspect {4.0F / 3.0F};
450  float m_forcedVideoAspect {-1};
451 
454 
455  // Buffering
456  bool m_buffering {false};
459 
460  // Support for analog captions and teletext
461  // (i.e. Vertical Blanking Interval (VBI) encoded data.)
462  uint m_vbiMode {VBIMode::None};
463  int m_ttPageNum {0x888};
464 
465  // Support for captions, teletext, etc. decoded by libav
470  bool m_captionsEnabledbyDefault {false};
471  bool m_enableForcedSubtitles {false};
472  bool m_disableForcedSubtitles {false};
473  bool m_allowForcedSubtitles {true};
474 
475  // CC608/708
478 
479  // Audio stuff
481 
482  // Commercial filtering
484  bool m_forcePositionMapSync {false};
485  // Manual editing
487 
488  // Playback (output) speed control
490 #if QT_VERSION < QT_VERSION_CHECK(5,14,0)
491  QMutex m_decoderLock {QMutex::Recursive};
492 #else
493  QRecursiveMutex m_decoderLock;
494 #endif
495  float m_nextPlaySpeed {1.0F};
496  float m_playSpeed {1.0F};
497  std::chrono::microseconds m_frameInterval
498  {microsecondsFromFloat(1000000.0F / 30)};
499  int m_fpsMultiplier {1};
500  int m_ffrewSkip {1};
501  int m_ffrewAdjust {0};
502  bool m_fileChanged {false};
503  bool m_nextNormalSpeed {true};
504  bool m_normalSpeed {true};
505 
506  // Time Code stuff
507  tctype_arr m_tcWrap {};
508  std::chrono::milliseconds m_savedAudioTimecodeOffset {0ms};
509 
510  // LiveTV
511  bool m_isDummy {false};
512 
513  // Counter for buffering messages
514  int m_bufferingCounter {0};
515 
516  private:
517  Q_DISABLE_COPY(MythPlayer)
518  void syncWithAudioStretch();
519  bool m_disablePassthrough {false};
520 };
521 
522 #endif
MythPlayer::GetTeletextReader
virtual TeletextReader * GetTeletextReader(uint=0)
Definition: mythplayer.h:200
MythPlayer::SetLength
void SetLength(std::chrono::seconds len)
Definition: mythplayer.h:119
CommSkipMode
CommSkipMode
Definition: tv.h:130
StatusCallback
void(*)(int, void *) StatusCallback
Definition: mythplayer.h:52
MythPlayer::PrevTitle
virtual bool PrevTitle(void)
Definition: mythplayer.h:173
tv.h
MythPlayer::m_errorLock
QMutex m_errorLock
Definition: mythplayer.h:407
MythPlayer::AtNormalSpeed
bool AtNormalSpeed(void) const
Definition: mythplayer.h:161
MythPlayer::m_decoderChangeLock
QRecursiveMutex m_decoderChangeLock
Definition: mythplayer.h:370
MythPlayer::TranslatePositionAbsToRel
uint64_t TranslatePositionAbsToRel(uint64_t position) const
Definition: mythplayer.h:270
MythPlayer::GetVideoOutput
MythVideoOutput * GetVideoOutput(void)
Definition: mythplayer.h:168
commbreakmap.h
MythPlayer::GetTotalFrameCount
uint64_t GetTotalFrameCount(void) const
Definition: mythplayer.h:145
MythVideoOutput
Definition: mythvideoout.h:35
deletemap.h
mythvideoout.h
MythPlayerAVSync
Definition: mythplayeravsync.h:13
MythPlayer::m_commBreakMap
CommBreakMap m_commBreakMap
Definition: mythplayer.h:483
MythPlayer::m_subReader
SubtitleReader m_subReader
Definition: mythplayer.h:466
AudioPlayer
Definition: audioplayer.h:28
MythPlayer::m_cc608
CC608Reader m_cc608
Definition: mythplayer.h:476
MythPlayer::kNightModeContrastAdjustment
static const int kNightModeContrastAdjustment
Definition: mythplayer.h:243
MythPlayer::m_decoderThreadUnpause
QWaitCondition m_decoderThreadUnpause
Definition: mythplayer.h:384
MythPlayer::m_avSync
MythPlayerAVSync m_avSync
Definition: mythplayer.h:438
MythPlayer::GetNumAngles
virtual int GetNumAngles(void) const
Definition: mythplayer.h:229
kMusicChoice
@ kMusicChoice
Definition: mythplayer.h:77
MythPlayer::PrevAngle
virtual bool PrevAngle(void)
Definition: mythplayer.h:178
kError_None
@ kError_None
Definition: videoouttypes.h:184
MythPlayer::GetInteractiveTV
virtual InteractiveTV * GetInteractiveTV()
Definition: mythplayer.h:167
Transcode::m_keyframeDist
int m_keyframeDist
Definition: transcode.h:52
mythtvexp.h
MythPlayer::IsPaused
bool IsPaused(void) const
Definition: mythplayer.h:154
MythPlayer::m_decoderSeekLock
QMutex m_decoderSeekLock
Definition: mythplayer.h:386
MythPlayer::GetNumTitles
virtual int GetNumTitles(void) const
Definition: mythplayer.h:223
TC_VIDEO
@ TC_VIDEO
Definition: mythplayer.h:57
microsecondsFromFloat
std::enable_if_t< std::is_floating_point_v< T >, std::chrono::microseconds > microsecondsFromFloat(T value)
Helper function for convert a floating point number to a duration.
Definition: mythchrono.h:102
MythPlayer::GetAngleName
virtual QString GetAngleName(int) const
Definition: mythplayer.h:231
frm_dir_map_t
QMap< uint64_t, MarkTypes > frm_dir_map_t
Frame # -> Mark map.
Definition: programtypes.h:82
FrameScanType
FrameScanType
Definition: videoouttypes.h:94
MythPlayer::m_errorMsg
QString m_errorMsg
Reason why NVP exited with a error.
Definition: mythplayer.h:408
MythPlayer::m_bufferPauseLock
QMutex m_bufferPauseLock
Definition: mythplayer.h:387
osd.h
SubtitleReader
Definition: subtitlereader.h:33
MythPlayer::m_cc708
CC708Reader m_cc708
Definition: mythplayer.h:477
MythMediaBuffer
Definition: mythmediabuffer.h:50
MythPlayer::GetNextPlaySpeed
float GetNextPlaySpeed(void) const
Definition: mythplayer.h:143
MythPlayer::GetFrameRate
float GetFrameRate(void) const
Definition: mythplayer.h:136
cc608reader.h
teletextreader.h
VBIMode::None
@ None
Definition: tv.h:11
MythPlayer::m_pauseLock
QMutex m_pauseLock
Definition: mythplayer.h:389
MythPlayer::GetCC708Reader
virtual CC708Reader * GetCC708Reader(uint=0)
Definition: mythplayer.h:197
PlayerFlags
PlayerFlags
Definition: mythplayer.h:65
subtitlereader.h
MythPlayer
Definition: mythplayer.h:86
MythPlayer::ForcedSubtitlesFavored
bool ForcedSubtitlesFavored(void) const
Definition: mythplayer.h:204
kDecodeLowRes
@ kDecodeLowRes
Definition: mythplayer.h:68
MythPlayer::SkipCommercials
void SkipCommercials(int direction)
Definition: mythplayer.h:284
MythPlayer::m_bufferingLastMsg
QTime m_bufferingLastMsg
Definition: mythplayer.h:458
MythPlayer::GetLimitKeyRepeat
bool GetLimitKeyRepeat(void) const
Definition: mythplayer.h:156
hardwareprofile.scan.scan
def scan(profile, smoonURL, gate)
Definition: scan.py:57
MythPlayer::m_videoPauseLock
QMutex m_videoPauseLock
Definition: mythplayer.h:388
MythPlayer::kInaccuracyNone
static const double kInaccuracyNone
Definition: mythplayer.h:244
programtypes.h
MythPlayer::SetAutoCommercialSkip
void SetAutoCommercialSkip(CommSkipMode autoskip)
Definition: mythplayer.h:282
MythPlayer::SwitchTitle
virtual bool SwitchTitle(int)
Definition: mythplayer.h:171
MythPlayer::GetPlaySpeed
float GetPlaySpeed(void) const
Definition: mythplayer.h:141
EofState
EofState
Definition: decoderbase.h:67
MythPlayer::m_audio
AudioPlayer m_audio
Definition: mythplayer.h:480
TeletextReader
Definition: teletextreader.h:75
MythPlayer::GetFramesPlayed
uint64_t GetFramesPlayed(void) const
Definition: mythplayer.h:147
MythPlayer::ComputeSecs
float ComputeSecs(uint64_t position, bool use_cutlist) const
Definition: mythplayer.h:276
MythDecoderThread
Definition: mythdecoderthread.h:9
MythPlayer::kNightModeBrightenssAdjustment
static const int kNightModeBrightenssAdjustment
Definition: mythplayer.h:242
MythPlayer::GetVideoBufferSize
QSize GetVideoBufferSize(void) const
Definition: mythplayer.h:133
videoouttypes.h
MythPlayer::m_decoderLock
QRecursiveMutex m_decoderLock
Lock for next_play_speed and next_normal_speed.
Definition: mythplayer.h:493
MythPlayer::GetAutoCommercialSkip
CommSkipMode GetAutoCommercialSkip(void)
Definition: mythplayer.h:287
MythPlayer::GetTitleDuration
virtual std::chrono::seconds GetTitleDuration(int) const
Definition: mythplayer.h:225
VideoFrameTypes
std::vector< VideoFrameType > VideoFrameTypes
Definition: mythframe.h:83
MythPlayer::m_decoderPauseLock
QMutex m_decoderPauseLock
Definition: mythplayer.h:385
DecodeType
DecodeType
Definition: decoderbase.h:47
MythPlayer::GetCC608Reader
virtual CC608Reader * GetCC608Reader(uint=0)
Definition: mythplayer.h:198
MythPlayer::IsAudioNeeded
bool IsAudioNeeded(void)
Definition: mythplayer.h:137
mythtypes.h
kDecodeAllowGPU
@ kDecodeAllowGPU
Definition: mythplayer.h:73
MythPlayer::m_bufferingStart
QTime m_bufferingStart
Definition: mythplayer.h:457
MythPlayer::NextTitle
virtual bool NextTitle(void)
Definition: mythplayer.h:172
TCTypes
TCTypes
Timecode types.
Definition: mythplayer.h:55
TestBufferVec
std::vector< char > TestBufferVec
Definition: decoderbase.h:23
MythPlayer::SwitchAngle
virtual bool SwitchAngle(int)
Definition: mythplayer.h:176
kNoITV
@ kNoITV
Definition: mythplayer.h:76
MythPlayer::GetEditMode
bool GetEditMode(void) const
Definition: mythplayer.h:319
uint
unsigned int uint
Definition: compat.h:140
kDecodeNoDecode
@ kDecodeNoDecode
Definition: mythplayer.h:72
MythPlayer::m_endExitPrompt
int m_endExitPrompt
Definition: mythplayer.h:422
MythPlayer::GetCurrentAngle
virtual int GetCurrentAngle(void) const
Definition: mythplayer.h:230
MythPlayer::m_playerFlags
PlayerFlags m_playerFlags
Definition: mythplayer.h:380
MythPlayer::GetAllowForcedSubtitles
bool GetAllowForcedSubtitles(void) const
Definition: mythplayer.h:211
MythPlayer::m_playingLock
QMutex m_playingLock
Definition: mythplayer.h:406
MythPlayer::m_deleteMap
DeleteMap m_deleteMap
Definition: mythplayer.h:486
MythPlayer::GetDecoder
DecoderBase * GetDecoder(void)
Returns the stream decoder currently in use.
Definition: mythplayer.h:188
MythPlayer::m_ttxReader
TeletextReader m_ttxReader
Definition: mythplayer.h:467
MythPlayer::GetSubReader
virtual SubtitleReader * GetSubReader(uint=0)
Definition: mythplayer.h:199
tctype_arr
std::array< std::chrono::milliseconds, TCTYPESMAX > tctype_arr
Definition: mythplayer.h:63
frm_pos_map_t
QMap< long long, long long > frm_pos_map_t
Frame # -> File offset map.
Definition: programtypes.h:46
TC_CC
@ TC_CC
Definition: mythplayer.h:60
kDecodeSingleThreaded
@ kDecodeSingleThreaded
Definition: mythplayer.h:69
volumebase.h
MythPlayer::GetCurrentTitle
virtual int GetCurrentTitle(void) const
Definition: mythplayer.h:224
MTV_PUBLIC
#define MTV_PUBLIC
Definition: mythtvexp.h:15
MythPlayer::GetLength
std::chrono::seconds GetLength(void) const
Definition: mythplayer.h:144
MythPlayer::GetAudio
AudioPlayer * GetAudio(void)
Definition: mythplayer.h:142
CommBreakMap
Definition: commbreakmap.h:21
kVideoIsNull
@ kVideoIsNull
Definition: mythplayer.h:74
kNoFlags
@ kNoFlags
Definition: mythplayer.h:67
ProgramInfo
Holds information on recordings and videos.
Definition: programinfo.h:67
cc708reader.h
mythmiscutil.h
MythPlayer::m_decoderThreadPause
QWaitCondition m_decoderThreadPause
Definition: mythplayer.h:383
MythVideoFrame::kDefaultRenderFormats
static const VideoFrameTypes kDefaultRenderFormats
Definition: mythframe.h:91
playercontext.h
TC_AUDIO
@ TC_AUDIO
Definition: mythplayer.h:58
MythPlayer::GetTitleName
virtual QString GetTitleName(int) const
Definition: mythplayer.h:226
MythPlayer::GetVideoSize
QSize GetVideoSize(void) const
Definition: mythplayer.h:134
MythPlayer::kInaccuracyEditor
static const double kInaccuracyEditor
Definition: mythplayer.h:246
MythPlayer::TranslatePositionMsToFrame
uint64_t TranslatePositionMsToFrame(std::chrono::milliseconds position, bool use_cutlist) const
Definition: mythplayer.h:261
mythavutil.h
MythPlayer::GetVideoAspect
float GetVideoAspect(void) const
Definition: mythplayer.h:135
kDecodeNoLoopFilter
@ kDecodeNoLoopFilter
Definition: mythplayer.h:71
decoderbase.h
mthread.h
kAudioMuted
@ kAudioMuted
Definition: mythplayer.h:75
PlayerContext
Definition: playercontext.h:52
TC_SUB
@ TC_SUB
Definition: mythplayer.h:59
MythPlayer::m_vidExitLock
QMutex m_vidExitLock
Definition: mythplayer.h:405
audioplayer.h
VideoPerformanceTest
Definition: mythtv/programs/mythavtest/main.cpp:32
MythPlayer::kInaccuracyFull
static const double kInaccuracyFull
Definition: mythplayer.h:247
MythPlayer::IsInStillFrame
virtual bool IsInStillFrame() const
Definition: mythplayer.h:234
MythVideoFrame
Definition: mythframe.h:88
MythPlayer::GetDecoder
const DecoderBase * GetDecoder(void) const
Returns the stream decoder currently in use.
Definition: mythplayer.h:338
InteractiveTV
This is the interface between an MHEG engine and a MythTV TV object.
Definition: interactivetv.h:15
CC708Reader
Definition: cc708reader.h:16
CC608Reader
Definition: cc608reader.h:79
FlagIsSet
#define FlagIsSet(arg)
Definition: mythplayer.h:80
MythPlayer::kInaccuracyDefault
static const double kInaccuracyDefault
Definition: mythplayer.h:245
MythPlayer::GetFFRewSkip
int GetFFRewSkip(void) const
Definition: mythplayer.h:140
MythPlayer::m_playingWaitCond
QWaitCondition m_playingWaitCond
Definition: mythplayer.h:404
mythplayeravsync.h
DecoderBase
Definition: decoderbase.h:120
kScan_Ignore
@ kScan_Ignore
Definition: videoouttypes.h:96
kDecodeFewBlocks
@ kDecodeFewBlocks
Definition: mythplayer.h:70
MythPlayer::NextAngle
virtual bool NextAngle(void)
Definition: mythplayer.h:177
Transcode
Definition: transcode.h:14
MythPlayer::TranslatePositionRelToAbs
uint64_t TranslatePositionRelToAbs(uint64_t position) const
Definition: mythplayer.h:273
TV
Control TV playback.
Definition: tv_play.h:154
DeleteMap
Definition: deletemap.h:25