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