MythTV  master
decoderbase.h
Go to the documentation of this file.
1 #ifndef DECODERBASE_H_
2 #define DECODERBASE_H_
3 
4 #include <cstdint>
5 #include <vector>
6 using namespace std;
7 
8 #include "io/mythmediabuffer.h"
9 #include "remoteencoder.h"
10 #include "mythcontext.h"
11 #include "mythdbcon.h"
12 #include "programinfo.h"
13 #include "mythcodecid.h"
14 #include "mythavutil.h"
15 #include "videodisplayprofile.h"
16 
17 class TeletextViewer;
18 class MythPlayer;
19 class AudioPlayer;
20 class MythCodecContext;
21 
22 const int kDecoderProbeBufferSize = 256 * 1024;
23 
26 {
38  // The following are intentionally excluded from kTrackTypeCount which
39  // is used when auto-selecting the correct tracks to decode according to
40  // language, bitrate etc
42 };
43 QString toString(TrackType type);
44 int to_track_type(const QString &str);
45 
47 {
48  kDecodeNothing = 0x00, // Demux and preprocess only.
49  kDecodeVideo = 0x01,
50  kDecodeAudio = 0x02,
51  kDecodeAV = 0x03,
52 };
53 
55 {
57  kAudioTypeAudioDescription, // Audio Description for the visually impaired
58  kAudioTypeCleanEffects, // No dialog, soundtrack or effects only e.g. Karaoke
59  kAudioTypeHearingImpaired, // Greater contrast between dialog and background audio
60  kAudioTypeSpokenSubs, // Spoken subtitles for the visually impaired
61  kAudioTypeCommentary // Director/actor/etc Commentary
62 };
64 
65 // Eof States
67 {
68  kEofStateNone, // no eof
69  kEofStateDelayed, // decoder eof, but let player drain buffered frames
70  kEofStateImmediate // true eof
71 };
72 
74 {
75  public:
76  StreamInfo() = default;
77  StreamInfo(int a, int b, uint c, int d, int e, bool f = false,
78  bool g = false, bool h = false,
80  m_av_stream_index(a),
81  m_language(b), m_language_index(c), m_stream_id(d),
82  m_easy_reader(f), m_wide_aspect_ratio(g), m_orig_num_channels(e), m_forced(h),
83  m_audio_type(i) {}
84  StreamInfo(int a, int b, uint c, int d, int e, int f,
85  bool g = false, bool h = false, bool i = false,
87  m_av_stream_index(a), m_av_substream_index(e),
88  m_language(b), m_language_index(c), m_stream_id(d),
89  m_easy_reader(g), m_wide_aspect_ratio(h), m_orig_num_channels(f), m_forced(i),
90  m_audio_type(j) {}
91 
92  public:
93  int m_av_stream_index {-1};
95  int m_av_substream_index {-1};
96  int m_language {-2};
97  uint m_language_index {0};
98  int m_stream_id {-1};
99  bool m_easy_reader {false};
100  bool m_wide_aspect_ratio {false};
101  int m_orig_num_channels {2};
102  bool m_forced {false};
104 
105  bool operator<(const StreamInfo& b) const
106  {
107  return (this->m_stream_id < b.m_stream_id);
108  }
109 };
110 using sinfo_vec_t = vector<StreamInfo>;
111 
112 inline AVRational AVRationalInit(int num, int den = 1) {
113  AVRational result;
114  result.num = num;
115  result.den = den;
116  return result;
117 }
118 
120 {
121  public:
122  DecoderBase(MythPlayer *parent, const ProgramInfo &pginfo);
123  DecoderBase(const DecoderBase& rhs);
124  virtual ~DecoderBase();
125 
126  virtual void Reset(bool reset_video_data, bool seek_reset, bool reset_file);
127 
128  virtual int OpenFile(MythMediaBuffer *Buffer, bool novideo,
129  char testbuf[kDecoderProbeBufferSize],
130  int testbufsize = kDecoderProbeBufferSize) = 0;
131 
132  virtual void SetEofState(EofState eof) { m_atEof = eof; }
133  virtual void SetEof(bool eof) {
134  m_atEof = eof ? kEofStateDelayed : kEofStateNone;
135  }
136  EofState GetEof(void) { return m_atEof; }
137 
138  void SetSeekSnap(uint64_t snap) { m_seekSnap = snap; }
139  uint64_t GetSeekSnap(void) const { return m_seekSnap; }
140  void SetLiveTVMode(bool live) { m_livetv = live; }
141 
142  // Must be done while player is paused.
143  void SetProgramInfo(const ProgramInfo &pginfo);
144 
146  virtual void SetDisablePassThrough(bool disable) { (void)disable; }
147  // Reconfigure audio as necessary, following configuration change
148  virtual void ForceSetupAudioStream(void) { }
149 
150  virtual void SetWatchingRecording(bool mode);
152  virtual bool GetFrame(DecodeType Type, bool &Retry) = 0;
153  MythPlayer *GetPlayer() { return m_parent; }
154 
155  virtual int GetNumChapters(void) { return 0; }
156  virtual int GetCurrentChapter(long long /*framesPlayed*/) { return 0; }
157  virtual void GetChapterTimes(QList<long long> &/*times*/) { }
158  virtual long long GetChapter(int /*chapter*/) { return m_framesPlayed; }
159  virtual bool DoRewind(long long desiredFrame, bool discardFrames = true);
160  virtual bool DoFastForward(long long desiredFrame, bool discardFrames = true);
161  virtual void SetIdrOnlyKeyframes(bool /*value*/) { }
162 
163  static uint64_t
164  TranslatePositionAbsToRel(const frm_dir_map_t &deleteMap,
165  uint64_t absPosition,
166  const frm_pos_map_t &map = frm_pos_map_t(),
167  float fallback_ratio = 1.0);
168  static uint64_t
169  TranslatePositionRelToAbs(const frm_dir_map_t &deleteMap,
170  uint64_t relPosition,
171  const frm_pos_map_t &map = frm_pos_map_t(),
172  float fallback_ratio = 1.0);
173  static uint64_t TranslatePosition(const frm_pos_map_t &map,
174  long long key,
175  float fallback_ratio);
176  uint64_t TranslatePositionFrameToMs(long long position,
177  float fallback_framerate,
178  const frm_dir_map_t &cutlist);
179  uint64_t TranslatePositionMsToFrame(uint64_t dur_ms,
180  float fallback_framerate,
181  const frm_dir_map_t &cutlist);
182 
183  float GetVideoAspect(void) const { return m_currentAspect; }
184 
185  virtual int64_t NormalizeVideoTimecode(int64_t timecode) { return timecode; }
186 
187  virtual bool IsLastFrameKey(void) const = 0;
188  virtual void WriteStoredData(MythMediaBuffer *Buffer, bool storevid,
189  long timecodeOffset) = 0;
190  virtual void ClearStoredData(void) { }
191  virtual void SetRawAudioState(bool state) { m_getRawFrames = state; }
192  virtual bool GetRawAudioState(void) const { return m_getRawFrames; }
193  virtual void SetRawVideoState(bool state) { m_getRawVideo = state; }
194  virtual bool GetRawVideoState(void) const { return m_getRawVideo; }
195 
196  virtual long UpdateStoredFrameNum(long frame) = 0;
197 
198  virtual double GetFPS(void) const { return m_fps; }
200  uint GetRawBitrate(void) const { return m_bitrate; }
201 
202  virtual void UpdateFramesPlayed(void);
203  long long GetFramesRead(void) const { return m_framesRead; }
204  long long GetFramesPlayed(void) const { return m_framesPlayed; }
205  void SetFramesPlayed(long long newValue) {m_framesPlayed = newValue;}
206 
207  virtual QString GetCodecDecoderName(void) const = 0;
208  virtual QString GetRawEncodingType(void) { return QString(); }
209  virtual MythCodecID GetVideoCodecID(void) const = 0;
210 
211  virtual void ResetPosMap(void);
212  virtual bool SyncPositionMap(void);
213  virtual bool PosMapFromDb(void);
214  virtual bool PosMapFromEnc(void);
215 
216  virtual bool FindPosition(long long desired_value, bool search_adjusted,
217  int &lower_bound, int &upper_bound);
218 
219  uint64_t SavePositionMapDelta(long long first_frame, long long last_frame);
220  virtual void SeekReset(long long newkey, uint skipFrames,
221  bool doFlush, bool discardFrames);
222 
223  void SetTranscoding(bool value) { m_transcoding = value; }
224 
225  bool IsErrored() const { return m_errored; }
226 
227  bool HasPositionMap(void) const { return GetPositionMapSize() != 0U; }
228 
229  void SetWaitForChange(void);
230  bool GetWaitForChange(void) const;
231  void SetReadAdjust(long long adjust);
232 
233  // Audio/Subtitle/EIA-608/EIA-708 stream selection
234  void SetDecodeAllSubtitles(bool DecodeAll);
235  virtual QStringList GetTracks(uint Type);
236  virtual uint GetTrackCount(uint Type);
237 
238  virtual int GetTrackLanguageIndex(uint Type, uint TrackNo);
239  virtual QString GetTrackDesc(uint Type, uint TrackNo);
240  virtual int SetTrack(uint Type, int TrackNo);
241  int GetTrack(uint Type);
242  StreamInfo GetTrackInfo(uint Type, uint TrackNo);
243  int ChangeTrack(uint Type, int Dir);
244  virtual bool InsertTrack(uint Type, const StreamInfo &Info);
245  int NextTrack(uint Type);
246 
247  virtual int GetTeletextDecoderType(void) const { return -1; }
248 
249  virtual QString GetXDS(const QString &/*key*/) const { return QString(); }
250  virtual QByteArray GetSubHeader(uint /*trackNo*/) { return QByteArray(); }
251  virtual void GetAttachmentData(uint /*trackNo*/, QByteArray &/*filename*/,
252  QByteArray &/*data*/) {}
253 
254  // MHEG/MHI stuff
255  virtual bool SetAudioByComponentTag(int /*tag*/) { return false; }
256  virtual bool SetVideoByComponentTag(int /*tag*/) { return false; }
257 
258  void SaveTotalDuration(void);
259  void ResetTotalDuration(void) { m_totalDuration = AVRationalInit(0); }
260  void SaveTotalFrames(void);
261  void TrackTotalDuration(bool track) { m_trackTotalDuration = track; }
262  int GetfpsMultiplier(void) const { return m_fpsMultiplier; }
263  MythCodecContext *GetMythCodecContext(void) { return m_mythCodecCtx; }
264  VideoDisplayProfile * GetVideoDisplayProfile(void) { return &m_videoDisplayProfile; }
265  AVPixelFormat GetBestVideoFormat(AVPixelFormat* Formats);
266 
267  protected:
268  virtual int AutoSelectTrack(uint Type);
269  void AutoSelectTracks(void);
270  void ResetTracks(void);
271  void FileChanged(void);
272  virtual bool DoRewindSeek(long long desiredFrame);
273  virtual void DoFastForwardSeek(long long desiredFrame, bool &needflush);
274 
275  long long ConditionallyUpdatePosMap(long long desiredFrame);
276  long long GetLastFrameInPosMap(void) const;
277  unsigned long GetPositionMapSize(void) const;
278 
279  struct PosMapEntry
280  {
281  long long index; // frame or keyframe number
282  long long adjFrame; // keyFrameAdjustTable adjusted frame number
283  long long pos; // position in stream
284  };
285  long long GetKey(const PosMapEntry &entry) const;
286 
287  MythPlayer *m_parent {nullptr};
288  ProgramInfo *m_playbackInfo {nullptr};
289  AudioPlayer *m_audio {nullptr};
290  MythMediaBuffer *m_ringBuffer {nullptr};
291 
292  double m_fps {29.97};
293  int m_fpsMultiplier {1};
294  int m_fpsSkip {0};
295  uint m_bitrate {4000};
296  int m_currentWidth {640};
297  int m_currentHeight {480};
298  float m_currentAspect {1.33333F};
299 
300  long long m_framesPlayed {0};
301  long long m_framesRead {0};
302  unsigned long long m_frameCounter {0};
303  AVRational m_totalDuration;
304  int m_keyframeDist {-1};
305  long long m_lastKey {0};
306  long long m_indexOffset {0};
308  bool m_nextDecodedFrameIsKeyFrame { false };
309 
311 
312  // The totalDuration field is only valid when the video is played
313  // from start to finish without any jumping. trackTotalDuration
314  // indicates whether this is the case.
315  bool m_trackTotalDuration {false};
316 
317  bool m_exitAfterDecoded {false};
318  bool m_transcoding {false};
319 
320  bool m_hasFullPositionMap {false};
321  bool m_recordingHasPositionMap {false};
322  bool m_posmapStarted {false};
323  MarkTypes m_positionMapType {MARK_UNSET};
324 
325  mutable QMutex m_positionMapLock {QMutex::Recursive};
326  vector<PosMapEntry> m_positionMap;
327  frm_pos_map_t m_frameToDurMap; // guarded by m_positionMapLock
328  frm_pos_map_t m_durToFrameMap; // guarded by m_positionMapLock
329  mutable QDateTime m_lastPositionMapUpdate; // guarded by m_positionMapLock
330 
331  uint64_t m_seekSnap {UINT64_MAX};
332  bool m_dontSyncPositionMap {false};
333  bool m_livetv {false};
334  bool m_watchingRecording {false};
335 
336  bool m_hasKeyFrameAdjustTable {false};
337 
338  bool m_getRawFrames {false};
339  bool m_getRawVideo {false};
340 
341  bool m_errored {false};
342 
343  bool m_waitingForChange {false};
344  bool m_justAfterChange {false};
345  long long m_readAdjust {0};
346  int m_videoRotation {0};
347 
348  // Audio/Subtitle/EIA-608/EIA-708 stream selection
349  QMutex m_trackLock { QMutex::Recursive };
350  bool m_decodeAllSubtitles { false };
351  int m_currentTrack[kTrackTypeCount] { -1 };
352  vector<StreamInfo> m_tracks[kTrackTypeCount];
353  StreamInfo m_wantedTrack[kTrackTypeCount];
354  StreamInfo m_selectedTrack[kTrackTypeCount];
355 
357  vector<int> m_languagePreference;
358  MythCodecContext *m_mythCodecCtx { nullptr };
360 };
361 #endif
kTrackTypeUnknown
@ kTrackTypeUnknown
Definition: decoderbase.h:27
AVRationalInit
AVRational AVRationalInit(int num, int den=1)
Definition: decoderbase.h:112
DecoderBase::GetCurrentChapter
virtual int GetCurrentChapter(long long)
Definition: decoderbase.h:156
kDecodeAV
@ kDecodeAV
Definition: decoderbase.h:51
kAudioTypeHearingImpaired
@ kAudioTypeHearingImpaired
Definition: decoderbase.h:59
e
QDomElement e
Definition: mythplugins/mytharchive/mytharchivehelper/main.cpp:1417
DecoderBase::SetVideoByComponentTag
virtual bool SetVideoByComponentTag(int)
Definition: decoderbase.h:256
kDecoderProbeBufferSize
const int kDecoderProbeBufferSize
Definition: decoderbase.h:22
DecoderBase::TrackTotalDuration
void TrackTotalDuration(bool track)
Definition: decoderbase.h:261
DecoderBase::PosMapEntry::adjFrame
long long adjFrame
Definition: decoderbase.h:282
DecoderBase::ClearStoredData
virtual void ClearStoredData(void)
Definition: decoderbase.h:190
DecoderBase::GetFramesPlayed
long long GetFramesPlayed(void) const
Definition: decoderbase.h:204
AudioTrackType
AudioTrackType
Definition: decoderbase.h:54
kTrackTypeTextSubtitle
@ kTrackTypeTextSubtitle
Definition: decoderbase.h:41
snap
static float snap(float value, float snapto, float diff)
Definition: videooutwindow.cpp:1059
to_track_type
int to_track_type(const QString &str)
Definition: decoderbase.cpp:1180
DecoderBase::PosMapEntry
Definition: decoderbase.h:279
DecoderBase::GetEof
EofState GetEof(void)
Definition: decoderbase.h:136
AudioPlayer
Definition: audioplayer.h:26
kEofStateNone
@ kEofStateNone
Definition: decoderbase.h:68
kTrackTypeCount
@ kTrackTypeCount
Definition: decoderbase.h:37
DecoderBase::m_lastPositionMapUpdate
QDateTime m_lastPositionMapUpdate
Definition: decoderbase.h:329
DecoderBase::NormalizeVideoTimecode
virtual int64_t NormalizeVideoTimecode(int64_t timecode)
Definition: decoderbase.h:185
StreamInfo::m_stream_id
int m_stream_id
Definition: decoderbase.h:98
d
static const uint16_t * d
Definition: iso6937tables.cpp:1025
kTrackTypeTeletextMenu
@ kTrackTypeTeletextMenu
Definition: decoderbase.h:34
kTrackTypeAttachment
@ kTrackTypeAttachment
Definition: decoderbase.h:36
DecoderBase::GetAttachmentData
virtual void GetAttachmentData(uint, QByteArray &, QByteArray &)
Definition: decoderbase.h:251
DecoderBase::GetSeekSnap
uint64_t GetSeekSnap(void) const
Definition: decoderbase.h:139
mythdbcon.h
frm_dir_map_t
QMap< uint64_t, MarkTypes > frm_dir_map_t
Frame # -> Mark map.
Definition: programtypes.h:82
DecoderBase::IsErrored
bool IsErrored() const
Definition: decoderbase.h:225
MythMediaBuffer
Definition: mythmediabuffer.h:49
DecoderBase::GetMythCodecContext
MythCodecContext * GetMythCodecContext(void)
Definition: decoderbase.h:263
TrackType
TrackType
Track types.
Definition: decoderbase.h:25
kAudioTypeCleanEffects
@ kAudioTypeCleanEffects
Definition: decoderbase.h:58
DecoderBase::SetAudioByComponentTag
virtual bool SetAudioByComponentTag(int)
Definition: decoderbase.h:255
MythPlayer
Definition: mythplayer.h:164
DecoderBase::GetRawBitrate
uint GetRawBitrate(void) const
Returns the estimated bitrate if the video were played at normal speed.
Definition: decoderbase.h:200
StreamInfo::StreamInfo
StreamInfo(int a, int b, uint c, int d, int e, int f, bool g=false, bool h=false, bool i=false, AudioTrackType j=kAudioTypeNormal)
Definition: decoderbase.h:84
DecoderBase::m_frameToDurMap
frm_pos_map_t m_frameToDurMap
Definition: decoderbase.h:327
DecoderBase::GetChapterTimes
virtual void GetChapterTimes(QList< long long > &)
Definition: decoderbase.h:157
DecoderBase::GetVideoDisplayProfile
VideoDisplayProfile * GetVideoDisplayProfile(void)
Definition: decoderbase.h:264
DecoderBase::GetChapter
virtual long long GetChapter(int)
Definition: decoderbase.h:158
kAudioTypeAudioDescription
@ kAudioTypeAudioDescription
Definition: decoderbase.h:57
EofState
EofState
Definition: decoderbase.h:66
kAudioTypeNormal
@ kAudioTypeNormal
Definition: decoderbase.h:56
MythCodecID
MythCodecID
Definition: mythcodecid.h:10
videodisplayprofile.h
DecoderBase::ForceSetupAudioStream
virtual void ForceSetupAudioStream(void)
Definition: decoderbase.h:148
programinfo.h
DecoderBase::GetRawVideoState
virtual bool GetRawVideoState(void) const
Definition: decoderbase.h:194
StreamInfo
Definition: decoderbase.h:73
DecoderBase::m_languagePreference
vector< int > m_languagePreference
language preferences for auto-selection of streams
Definition: decoderbase.h:357
DecoderBase::GetfpsMultiplier
int GetfpsMultiplier(void) const
Definition: decoderbase.h:262
DecodeType
DecodeType
Definition: decoderbase.h:46
kTrackTypeTeletextCaptions
@ kTrackTypeTeletextCaptions
Definition: decoderbase.h:33
DecoderBase::ResetTotalDuration
void ResetTotalDuration(void)
Definition: decoderbase.h:259
DecoderBase::SetEof
virtual void SetEof(bool eof)
Definition: decoderbase.h:133
mythcodecid.h
DecoderBase::GetRawEncodingType
virtual QString GetRawEncodingType(void)
Definition: decoderbase.h:208
DecoderBase::GetXDS
virtual QString GetXDS(const QString &) const
Definition: decoderbase.h:249
DecoderBase::m_durToFrameMap
frm_pos_map_t m_durToFrameMap
Definition: decoderbase.h:328
DecoderBase::GetFPS
virtual double GetFPS(void) const
Definition: decoderbase.h:198
sinfo_vec_t
vector< StreamInfo > sinfo_vec_t
Definition: decoderbase.h:110
f
QTextStream t & f
Definition: mythplugins/mytharchive/mytharchivehelper/main.cpp:600
DecoderBase::m_totalDuration
AVRational m_totalDuration
Definition: decoderbase.h:303
DecoderBase::PosMapEntry::index
long long index
Definition: decoderbase.h:281
kTrackTypeAudio
@ kTrackTypeAudio
Definition: decoderbase.h:28
DecoderBase::SetFramesPlayed
void SetFramesPlayed(long long newValue)
Definition: decoderbase.h:205
kTrackTypeCC708
@ kTrackTypeCC708
Definition: decoderbase.h:32
uint
unsigned int uint
Definition: compat.h:140
DecoderBase::GetRawAudioState
virtual bool GetRawAudioState(void) const
Definition: decoderbase.h:192
StreamInfo::StreamInfo
StreamInfo(int a, int b, uint c, int d, int e, bool f=false, bool g=false, bool h=false, AudioTrackType i=kAudioTypeNormal)
Definition: decoderbase.h:77
kTrackTypeSubtitle
@ kTrackTypeSubtitle
Definition: decoderbase.h:30
DecoderBase::GetSubHeader
virtual QByteArray GetSubHeader(uint)
Definition: decoderbase.h:250
mythmediabuffer.h
frm_pos_map_t
QMap< long long, long long > frm_pos_map_t
Frame # -> File offset map.
Definition: programtypes.h:46
DecoderBase::SetSeekSnap
void SetSeekSnap(uint64_t snap)
Definition: decoderbase.h:138
kDecodeNothing
@ kDecodeNothing
Definition: decoderbase.h:48
DecoderBase::GetVideoAspect
float GetVideoAspect(void) const
Definition: decoderbase.h:183
DecoderBase::GetNumChapters
virtual int GetNumChapters(void)
Definition: decoderbase.h:155
VideoDisplayProfile
Definition: videodisplayprofile.h:69
DecoderBase::SetTranscoding
void SetTranscoding(bool value)
Definition: decoderbase.h:223
kDecodeVideo
@ kDecodeVideo
Definition: decoderbase.h:49
kTrackTypeCC608
@ kTrackTypeCC608
Definition: decoderbase.h:31
Buffer
Definition: MythExternControl.h:36
ProgramInfo
Holds information on recordings and videos.
Definition: programinfo.h:67
kEofStateImmediate
@ kEofStateImmediate
Definition: decoderbase.h:70
kEofStateDelayed
@ kEofStateDelayed
Definition: decoderbase.h:69
DecoderBase::PosMapEntry::pos
long long pos
Definition: decoderbase.h:283
MarkTypes
MarkTypes
Definition: programtypes.h:48
mythavutil.h
mythcontext.h
StreamInfo::operator<
bool operator<(const StreamInfo &b) const
Definition: decoderbase.h:105
MythAVCopy
MythAVCopy Copy AVFrame<->frame, performing the required conversion if any.
Definition: mythavutil.h:107
remoteencoder.h
DecoderBase::GetTeletextDecoderType
virtual int GetTeletextDecoderType(void) const
Definition: decoderbase.h:247
DecoderBase::SetDisablePassThrough
virtual void SetDisablePassThrough(bool disable)
Disables AC3/DTS pass through.
Definition: decoderbase.h:146
DecoderBase::SetRawAudioState
virtual void SetRawAudioState(bool state)
Definition: decoderbase.h:191
kTrackTypeRawText
@ kTrackTypeRawText
Definition: decoderbase.h:35
MARK_UNSET
@ MARK_UNSET
Definition: programtypes.h:50
MythCodecContext
Definition: mythcodeccontext.h:50
kTrackTypeVideo
@ kTrackTypeVideo
Definition: decoderbase.h:29
toString
QString toString(TrackType type)
Definition: decoderbase.cpp:1155
DecoderBase::m_positionMap
vector< PosMapEntry > m_positionMap
Definition: decoderbase.h:326
DecoderBase::m_copyFrame
MythAVCopy m_copyFrame
Definition: decoderbase.h:307
DecoderBase::SetRawVideoState
virtual void SetRawVideoState(bool state)
Definition: decoderbase.h:193
kAudioTypeSpokenSubs
@ kAudioTypeSpokenSubs
Definition: decoderbase.h:60
DecoderBase::SetEofState
virtual void SetEofState(EofState eof)
Definition: decoderbase.h:132
DecoderBase::SetLiveTVMode
void SetLiveTVMode(bool live)
Definition: decoderbase.h:140
DecoderBase::GetFramesRead
long long GetFramesRead(void) const
Definition: decoderbase.h:203
kDecodeAudio
@ kDecodeAudio
Definition: decoderbase.h:50
DecoderBase::HasPositionMap
bool HasPositionMap(void) const
Definition: decoderbase.h:227
DecoderBase
Definition: decoderbase.h:119
DecoderBase::SetIdrOnlyKeyframes
virtual void SetIdrOnlyKeyframes(bool)
Definition: decoderbase.h:161
DecoderBase::GetPlayer
MythPlayer * GetPlayer()
Definition: decoderbase.h:153
kAudioTypeCommentary
@ kAudioTypeCommentary
Definition: decoderbase.h:61
DecoderBase::m_videoDisplayProfile
VideoDisplayProfile m_videoDisplayProfile
Definition: decoderbase.h:359