MythTV master
decoderbase.h
Go to the documentation of this file.
1#ifndef DECODERBASE_H_
2#define DECODERBASE_H_
3
4#include <array>
5#include <cstdint>
6#include <vector>
7
16
17class TeletextViewer;
18class MythPlayer;
19class AudioPlayer;
21
22const int kDecoderProbeBufferSize = 256 * 1024;
23using TestBufferVec = std::vector<char>;
24
26enum TrackType : std::uint8_t
27{
39 // The following are intentionally excluded from kTrackTypeCount which
40 // is used when auto-selecting the correct tracks to decode according to
41 // language, bitrate etc
43};
44QString toString(TrackType type);
45int to_track_type(const QString &str);
46
47enum DecodeType : std::uint8_t
48{
49 kDecodeNothing = 0x00, // Demux and preprocess only.
52 kDecodeAV = 0x03,
53};
54
55enum AudioTrackType : std::uint8_t
56{
58 kAudioTypeAudioDescription, // Audio Description for the visually impaired
59 kAudioTypeCleanEffects, // No dialog, soundtrack or effects only e.g. Karaoke
60 kAudioTypeHearingImpaired, // Greater contrast between dialog and background audio
61 kAudioTypeSpokenSubs, // Spoken subtitles for the visually impaired
62 kAudioTypeCommentary // Director/actor/etc Commentary
63};
65
66// Eof States
67enum EofState : std::uint8_t
68{
69 kEofStateNone, // no eof
70 kEofStateDelayed, // decoder eof, but let player drain buffered frames
71 kEofStateImmediate // true eof
72};
73
75{
76 public:
77 StreamInfo() = default;
78 /*
79 Video and Attachment use only the first two parameters; the rest are used
80 for Subtitle, CC, Teletext, and RawText.
81 */
82 StreamInfo(int av_stream_index, int stream_id, int language = 0, uint language_index = 0,
83 bool forced = false) :
84 m_av_stream_index(av_stream_index),
85 m_stream_id(stream_id),
86 m_language(language),
87 m_language_index(language_index),
88 m_forced(forced)
89 {}
90 /*
91 For Audio
92 */
93 StreamInfo(int av_stream_index, int stream_id, int language, uint language_index,
94 AudioTrackType audio_type) :
95 m_av_stream_index(av_stream_index),
96 m_stream_id(stream_id),
97 m_language(language),
98 m_language_index(language_index),
99 m_audio_type(audio_type)
100 {}
101
102 public:
104 int m_stream_id {-1};
106 int m_language {-2};
108 bool m_forced {false};
112
113 bool operator<(const StreamInfo& b) const
114 {
115 return (this->m_stream_id < b.m_stream_id);
116 }
117};
118using sinfo_vec_t = std::vector<StreamInfo>;
119
121{
122 public:
123 DecoderBase(MythPlayer *parent, const ProgramInfo &pginfo);
124 virtual ~DecoderBase();
125
126 void SetRenderFormats(const VideoFrameTypes* RenderFormats);
127 virtual void Reset(bool reset_video_data, bool seek_reset, bool reset_file);
128 virtual int OpenFile(MythMediaBuffer *Buffer, bool novideo,
129 TestBufferVec & testbuf) = 0;
130
131 virtual void SetEofState(EofState eof) { m_atEof = eof; }
132 virtual void SetEof(bool eof) {
134 }
135 EofState GetEof(void) { return m_atEof; }
136
137 void SetSeekSnap(uint64_t snap) { m_seekSnap = snap; }
138 uint64_t GetSeekSnap(void) const { return m_seekSnap; }
139 void SetLiveTVMode(bool live) { m_livetv = live; }
140
141 // Must be done while player is paused.
142 void SetProgramInfo(const ProgramInfo &pginfo);
143
145 virtual void SetDisablePassThrough(bool disable) { (void)disable; }
146 // Reconfigure audio as necessary, following configuration change
147 virtual void ForceSetupAudioStream(void) { }
148
149 virtual void SetWatchingRecording(bool mode);
151 virtual bool GetFrame(DecodeType Type, bool &Retry) = 0;
153
154 virtual int GetNumChapters(void) { return 0; }
155 virtual int GetCurrentChapter(long long /*framesPlayed*/) { return 0; }
156 virtual void GetChapterTimes(QList<std::chrono::seconds> &/*times*/) { }
157 virtual long long GetChapter(int /*chapter*/) { return m_framesPlayed; }
158 virtual bool DoRewind(long long desiredFrame, bool discardFrames = true);
159 virtual bool DoFastForward(long long desiredFrame, bool discardFrames = true);
160 virtual void SetIdrOnlyKeyframes(bool /*value*/) { }
161
162 static uint64_t
164 uint64_t absPosition,
165 const frm_pos_map_t &map = frm_pos_map_t(),
166 float fallback_ratio = 1.0);
167 static uint64_t
169 uint64_t relPosition,
170 const frm_pos_map_t &map = frm_pos_map_t(),
171 float fallback_ratio = 1.0);
172 static uint64_t TranslatePosition(const frm_pos_map_t &map,
173 long long key,
174 float fallback_ratio);
175 std::chrono::milliseconds TranslatePositionFrameToMs(long long position,
176 float fallback_framerate,
177 const frm_dir_map_t &cutlist);
178 uint64_t TranslatePositionMsToFrame(std::chrono::milliseconds dur_ms,
179 float fallback_framerate,
180 const frm_dir_map_t &cutlist);
181
182 float GetVideoAspect(void) const { return m_currentAspect; }
183
184 virtual std::chrono::milliseconds NormalizeVideoTimecode(std::chrono::milliseconds timecode)
185 { return timecode; }
186
187 virtual bool IsLastFrameKey(void) const = 0;
188
189 virtual double GetFPS(void) const { return m_fps; }
191 uint GetRawBitrate(void) const { return m_bitrate; }
192
193 virtual void UpdateFramesPlayed(void);
194 long long GetFramesRead(void) const { return m_framesRead; }
195 long long GetFramesPlayed(void) const { return m_framesPlayed; }
196 void SetFramesPlayed(long long newValue) {m_framesPlayed = newValue;}
197
198 virtual QString GetCodecDecoderName(void) const = 0;
199 virtual QString GetRawEncodingType(void) { return {}; }
200 virtual MythCodecID GetVideoCodecID(void) const = 0;
201
202 virtual void ResetPosMap(void);
203 virtual bool SyncPositionMap(void);
204 virtual bool PosMapFromDb(void);
205 virtual bool PosMapFromEnc(void);
206
207 virtual bool FindPosition(long long desired_value, bool search_adjusted,
208 int &lower_bound, int &upper_bound);
209
210 uint64_t SavePositionMapDelta(long long first_frame, long long last_frame);
211 virtual void SeekReset(long long newkey, uint skipFrames,
212 bool doFlush, bool discardFrames);
213
214 void SetTranscoding(bool value) { m_transcoding = value; }
215
216 bool IsErrored() const { return m_errored; }
217
218 bool HasPositionMap(void) const { return GetPositionMapSize() != 0U; }
219
220 void SetWaitForChange(void);
221 bool GetWaitForChange(void) const;
222 void SetReadAdjust(long long adjust);
223
224 // Audio/Subtitle/EIA-608/EIA-708 stream selection
225 void SetDecodeAllSubtitles(bool DecodeAll);
226 virtual QStringList GetTracks(uint Type);
227 virtual uint GetTrackCount(uint Type);
228
229 virtual int GetTrackLanguageIndex(uint Type, uint TrackNo);
230 virtual QString GetTrackDesc(uint Type, uint TrackNo);
231 virtual int SetTrack(uint Type, int TrackNo);
232 int GetTrack(uint Type);
233 StreamInfo GetTrackInfo(uint Type, uint TrackNo);
234 int ChangeTrack(uint Type, int Dir);
235 int NextTrack(uint Type);
236
237 virtual int GetTeletextDecoderType(void) const { return -1; }
238
239 virtual QString GetXDS(const QString &/*key*/) const { return {}; }
240 virtual QByteArray GetSubHeader(uint /*trackNo*/) { return {}; }
241 virtual void GetAttachmentData(uint /*trackNo*/, QByteArray &/*filename*/,
242 QByteArray &/*data*/) {}
243
244 // MHEG/MHI stuff
245 virtual bool SetAudioByComponentTag(int /*tag*/) { return false; }
246 virtual bool SetVideoByComponentTag(int /*tag*/) { return false; }
247
248 void SaveTotalDuration(void);
250 void SaveTotalFrames(void);
251 void TrackTotalDuration(bool track) { m_trackTotalDuration = track; }
252 int GetfpsMultiplier(void) const { return m_fpsMultiplier; }
254 static AVPixelFormat GetBestVideoFormat(AVPixelFormat* Formats, const VideoFrameTypes* RenderFormats);
255
256 protected:
257 int BestTrack(uint Type, bool forcedPreferred, int preferredLanguage = 0);
258 virtual int AutoSelectTrack(uint Type);
259 void AutoSelectTracks(void);
260 void ResetTracks(void);
261 void FileChanged(void);
262 virtual bool DoRewindSeek(long long desiredFrame);
263 virtual void DoFastForwardSeek(long long desiredFrame, bool &needflush);
264
265 long long ConditionallyUpdatePosMap(long long desiredFrame);
266 long long GetLastFrameInPosMap(void) const;
267 unsigned long GetPositionMapSize(void) const;
268
270 {
271 long long index; // frame or keyframe number
272 long long adjFrame; // keyFrameAdjustTable adjusted frame number
273 long long pos; // position in stream
274 };
275 long long GetKey(const PosMapEntry &entry) const;
276
281
282 double m_fps {29.97};
284 int m_fpsSkip {0};
286 int m_currentWidth {640};
288 float m_currentAspect {1.33333F};
289
290 long long m_framesPlayed {0};
291 long long m_framesRead {0};
292 uint64_t m_frameCounter {0};
295 long long m_lastKey {0};
296 long long m_indexOffset {0};
299
301
302 // The totalDuration field is only valid when the video is played
303 // from start to finish without any jumping. trackTotalDuration
304 // indicates whether this is the case.
306
307 bool m_exitAfterDecoded {false};
308 bool m_transcoding {false};
309
312 bool m_posmapStarted {false};
314
315 mutable QRecursiveMutex m_positionMapLock;
316 std::vector<PosMapEntry> m_positionMap;
317 frm_pos_map_t m_frameToDurMap; // guarded by m_positionMapLock
318 frm_pos_map_t m_durToFrameMap; // guarded by m_positionMapLock
319 mutable QDateTime m_lastPositionMapUpdate; // guarded by m_positionMapLock
320
321 uint64_t m_seekSnap {UINT64_MAX};
323 bool m_livetv {false};
325
327
328 bool m_errored {false};
329
330 bool m_waitingForChange {false};
331 bool m_justAfterChange {false};
332 long long m_readAdjust {0};
335
336 // Audio/Subtitle/EIA-608/EIA-708 stream selection
337 QRecursiveMutex m_trackLock;
338 bool m_decodeAllSubtitles { false };
339 std::array<int, kTrackTypeCount> m_currentTrack {};
340 std::array<sinfo_vec_t,kTrackTypeCount> m_tracks;
341 std::array<StreamInfo, kTrackTypeCount> m_wantedTrack;
342 std::array<StreamInfo, kTrackTypeCount> m_selectedTrack;
343 std::array<StreamInfo, kTrackTypeCount> m_selectedForcedTrack;
344
346 std::vector<int> m_languagePreference;
350
351 private:
352 Q_DISABLE_COPY(DecoderBase)
353};
354#endif
MythAVRational m_totalDuration
Definition: decoderbase.h:293
bool m_posmapStarted
Definition: decoderbase.h:312
virtual QString GetRawEncodingType(void)
Definition: decoderbase.h:199
QRecursiveMutex m_positionMapLock
Definition: decoderbase.h:315
uint64_t m_frameCounter
Definition: decoderbase.h:292
virtual uint GetTrackCount(uint Type)
float GetVideoAspect(void) const
Definition: decoderbase.h:182
MarkTypes m_positionMapType
Definition: decoderbase.h:313
MythAVCopy m_copyFrame
Definition: decoderbase.h:297
frm_pos_map_t m_frameToDurMap
Definition: decoderbase.h:317
virtual void SetIdrOnlyKeyframes(bool)
Definition: decoderbase.h:160
virtual void SetWatchingRecording(bool mode)
Definition: decoderbase.cpp:81
virtual void DoFastForwardSeek(long long desiredFrame, bool &needflush)
Seeks to the keyframe just before the desiredFrame if exact seeks is enabled, or the frame just after...
int ChangeTrack(uint Type, int Dir)
long long GetFramesPlayed(void) const
Definition: decoderbase.h:195
void SetProgramInfo(const ProgramInfo &pginfo)
Definition: decoderbase.cpp:41
bool m_watchingRecording
Definition: decoderbase.h:324
virtual QString GetCodecDecoderName(void) const =0
long long GetKey(const PosMapEntry &entry) const
virtual bool GetFrame(DecodeType Type, bool &Retry)=0
Demux, preprocess and possibly decode a frame of video/audio.
virtual void SetEof(bool eof)
Definition: decoderbase.h:132
bool m_dontSyncPositionMap
Definition: decoderbase.h:322
virtual QString GetTrackDesc(uint Type, uint TrackNo)
virtual void SetDisablePassThrough(bool disable)
Disables AC3/DTS pass through.
Definition: decoderbase.h:145
virtual int GetTeletextDecoderType(void) const
Definition: decoderbase.h:237
double m_fps
Definition: decoderbase.h:282
long long m_framesRead
Definition: decoderbase.h:291
virtual QString GetXDS(const QString &) const
Definition: decoderbase.h:239
virtual int SetTrack(uint Type, int TrackNo)
virtual std::chrono::milliseconds NormalizeVideoTimecode(std::chrono::milliseconds timecode)
Definition: decoderbase.h:184
void SetFramesPlayed(long long newValue)
Definition: decoderbase.h:196
virtual long long GetChapter(int)
Definition: decoderbase.h:157
virtual void GetAttachmentData(uint, QByteArray &, QByteArray &)
Definition: decoderbase.h:241
uint64_t GetSeekSnap(void) const
Definition: decoderbase.h:138
uint m_stereo3D
Definition: decoderbase.h:334
virtual void UpdateFramesPlayed(void)
void SetTranscoding(bool value)
Definition: decoderbase.h:214
virtual ~DecoderBase()
Definition: decoderbase.cpp:30
void SetReadAdjust(long long adjust)
MythMediaBuffer * m_ringBuffer
Definition: decoderbase.h:280
QRecursiveMutex m_trackLock
Definition: decoderbase.h:337
bool m_nextDecodedFrameIsKeyFrame
Definition: decoderbase.h:298
bool m_transcoding
Definition: decoderbase.h:308
void SetRenderFormats(const VideoFrameTypes *RenderFormats)
Definition: decoderbase.cpp:35
bool m_decodeAllSubtitles
Definition: decoderbase.h:338
void FileChanged(void)
virtual bool PosMapFromEnc(void)
Queries encoder for position map data that has not been committed to the DB yet.
virtual void GetChapterTimes(QList< std::chrono::seconds > &)
Definition: decoderbase.h:156
void AutoSelectTracks(void)
bool m_errored
Definition: decoderbase.h:328
bool m_exitAfterDecoded
Definition: decoderbase.h:307
std::vector< int > m_languagePreference
language preferences for auto-selection of streams
Definition: decoderbase.h:346
void SaveTotalDuration(void)
virtual void Reset(bool reset_video_data, bool seek_reset, bool reset_file)
Definition: decoderbase.cpp:47
virtual void ResetPosMap(void)
virtual void SetEofState(EofState eof)
Definition: decoderbase.h:131
long long GetLastFrameInPosMap(void) const
long long m_readAdjust
Definition: decoderbase.h:332
bool HasPositionMap(void) const
Definition: decoderbase.h:218
uint GetRawBitrate(void) const
Returns the estimated bitrate if the video were played at normal speed.
Definition: decoderbase.h:191
void SetLiveTVMode(bool live)
Definition: decoderbase.h:139
void ResetTracks(void)
int GetTrack(uint Type)
virtual bool SetAudioByComponentTag(int)
Definition: decoderbase.h:245
long long GetFramesRead(void) const
Definition: decoderbase.h:194
static uint64_t TranslatePosition(const frm_pos_map_t &map, long long key, float fallback_ratio)
virtual void ForceSetupAudioStream(void)
Definition: decoderbase.h:147
MythPlayer * GetPlayer()
Definition: decoderbase.h:152
std::array< StreamInfo, kTrackTypeCount > m_wantedTrack
Definition: decoderbase.h:341
MythPlayer * m_parent
Definition: decoderbase.h:277
float m_currentAspect
Definition: decoderbase.h:288
bool m_hasFullPositionMap
Definition: decoderbase.h:310
virtual int GetCurrentChapter(long long)
Definition: decoderbase.h:155
MythVideoProfile m_videoDisplayProfile
Definition: decoderbase.h:348
bool m_trackTotalDuration
Definition: decoderbase.h:305
void TrackTotalDuration(bool track)
Definition: decoderbase.h:251
frm_pos_map_t m_durToFrameMap
Definition: decoderbase.h:318
static uint64_t TranslatePositionAbsToRel(const frm_dir_map_t &deleteMap, uint64_t absPosition, const frm_pos_map_t &map=frm_pos_map_t(), float fallback_ratio=1.0)
void SetWaitForChange(void)
uint64_t SavePositionMapDelta(long long first_frame, long long last_frame)
long long m_indexOffset
Definition: decoderbase.h:296
int m_keyframeDist
Definition: decoderbase.h:294
virtual bool SetVideoByComponentTag(int)
Definition: decoderbase.h:246
bool GetWaitForChange(void) const
DecoderBase(MythPlayer *parent, const ProgramInfo &pginfo)
Definition: decoderbase.cpp:17
virtual bool FindPosition(long long desired_value, bool search_adjusted, int &lower_bound, int &upper_bound)
const VideoFrameTypes * m_renderFormats
Definition: decoderbase.h:349
bool m_waitingForChange
Definition: decoderbase.h:330
int GetfpsMultiplier(void) const
Definition: decoderbase.h:252
virtual bool IsLastFrameKey(void) const =0
virtual bool PosMapFromDb(void)
Definition: decoderbase.cpp:94
int m_fpsMultiplier
Definition: decoderbase.h:283
virtual bool DoFastForward(long long desiredFrame, bool discardFrames=true)
Skips ahead or rewinds to desiredFrame.
uint64_t TranslatePositionMsToFrame(std::chrono::milliseconds dur_ms, float fallback_framerate, const frm_dir_map_t &cutlist)
void SaveTotalFrames(void)
long long ConditionallyUpdatePosMap(long long desiredFrame)
bool m_justAfterChange
Definition: decoderbase.h:331
static AVPixelFormat GetBestVideoFormat(AVPixelFormat *Formats, const VideoFrameTypes *RenderFormats)
Find a suitable frame format that is mutually acceptable to the decoder and render device.
bool m_hasKeyFrameAdjustTable
Definition: decoderbase.h:326
virtual MythCodecID GetVideoCodecID(void) const =0
void ResetTotalDuration(void)
Definition: decoderbase.h:249
virtual void SeekReset(long long newkey, uint skipFrames, bool doFlush, bool discardFrames)
Definition: decoderbase.cpp:74
std::array< sinfo_vec_t, kTrackTypeCount > m_tracks
Definition: decoderbase.h:340
virtual int GetNumChapters(void)
Definition: decoderbase.h:154
virtual bool SyncPositionMap(void)
Updates the position map used for skipping frames.
virtual int AutoSelectTrack(uint Type)
Select best track.
int m_currentHeight
Definition: decoderbase.h:287
long long m_lastKey
Definition: decoderbase.h:295
MythCodecContext * m_mythCodecCtx
Definition: decoderbase.h:347
virtual QStringList GetTracks(uint Type)
EofState m_atEof
Definition: decoderbase.h:300
int NextTrack(uint Type)
QDateTime m_lastPositionMapUpdate
Definition: decoderbase.h:319
StreamInfo GetTrackInfo(uint Type, uint TrackNo)
virtual int GetTrackLanguageIndex(uint Type, uint TrackNo)
unsigned long GetPositionMapSize(void) const
AudioPlayer * m_audio
Definition: decoderbase.h:279
static uint64_t TranslatePositionRelToAbs(const frm_dir_map_t &deleteMap, uint64_t relPosition, const frm_pos_map_t &map=frm_pos_map_t(), float fallback_ratio=1.0)
int m_videoRotation
Definition: decoderbase.h:333
std::array< StreamInfo, kTrackTypeCount > m_selectedForcedTrack
Definition: decoderbase.h:343
int m_currentWidth
Definition: decoderbase.h:286
long long m_framesPlayed
Definition: decoderbase.h:290
EofState GetEof(void)
Definition: decoderbase.h:135
virtual QByteArray GetSubHeader(uint)
Definition: decoderbase.h:240
std::vector< PosMapEntry > m_positionMap
Definition: decoderbase.h:316
std::array< int, kTrackTypeCount > m_currentTrack
Definition: decoderbase.h:339
void SetSeekSnap(uint64_t snap)
Definition: decoderbase.h:137
virtual bool DoRewindSeek(long long desiredFrame)
void SetDecodeAllSubtitles(bool DecodeAll)
bool m_recordingHasPositionMap
Definition: decoderbase.h:311
uint64_t m_seekSnap
Definition: decoderbase.h:321
virtual bool DoRewind(long long desiredFrame, bool discardFrames=true)
uint m_bitrate
Definition: decoderbase.h:285
int BestTrack(uint Type, bool forcedPreferred, int preferredLanguage=0)
Determine the best track according to weights.
ProgramInfo * m_playbackInfo
Definition: decoderbase.h:278
virtual int OpenFile(MythMediaBuffer *Buffer, bool novideo, TestBufferVec &testbuf)=0
std::chrono::milliseconds TranslatePositionFrameToMs(long long position, float fallback_framerate, const frm_dir_map_t &cutlist)
virtual double GetFPS(void) const
Definition: decoderbase.h:189
bool IsErrored() const
Definition: decoderbase.h:216
MythCodecContext * GetMythCodecContext(void)
Definition: decoderbase.h:253
std::array< StreamInfo, kTrackTypeCount > m_selectedTrack
Definition: decoderbase.h:342
C++ wrapper for FFmpeg libavutil AVRational.
static const VideoFrameTypes kDefaultRenderFormats
Definition: mythframe.h:90
Holds information on recordings and videos.
Definition: programinfo.h:68
uint m_language_index
Audio, Subtitle, Teletext.
Definition: decoderbase.h:107
int m_av_stream_index
Definition: decoderbase.h:103
bool operator<(const StreamInfo &b) const
Definition: decoderbase.h:113
AudioTrackType m_audio_type
Definition: decoderbase.h:109
StreamInfo(int av_stream_index, int stream_id, int language=0, uint language_index=0, bool forced=false)
Definition: decoderbase.h:82
StreamInfo()=default
int m_language
ISO639 canonical language key; Audio, Subtitle, CC, Teletext, RawText.
Definition: decoderbase.h:106
int m_av_substream_index
Audio only; -1 for no substream, 0 for first dual audio stream, 1 for second dual.
Definition: decoderbase.h:111
bool m_forced
Subtitle and RawText.
Definition: decoderbase.h:108
int m_stream_id
Definition: decoderbase.h:104
StreamInfo(int av_stream_index, int stream_id, int language, uint language_index, AudioTrackType audio_type)
Definition: decoderbase.h:93
AudioTrackType
Definition: decoderbase.h:56
@ kAudioTypeCommentary
Definition: decoderbase.h:62
@ kAudioTypeAudioDescription
Definition: decoderbase.h:58
@ kAudioTypeSpokenSubs
Definition: decoderbase.h:61
@ kAudioTypeHearingImpaired
Definition: decoderbase.h:60
@ kAudioTypeNormal
Definition: decoderbase.h:57
@ kAudioTypeCleanEffects
Definition: decoderbase.h:59
int to_track_type(const QString &str)
EofState
Definition: decoderbase.h:68
@ kEofStateDelayed
Definition: decoderbase.h:70
@ kEofStateNone
Definition: decoderbase.h:69
@ kEofStateImmediate
Definition: decoderbase.h:71
std::vector< char > TestBufferVec
Definition: decoderbase.h:23
std::vector< StreamInfo > sinfo_vec_t
Definition: decoderbase.h:118
const int kDecoderProbeBufferSize
Definition: decoderbase.h:22
TrackType
Track types.
Definition: decoderbase.h:27
@ kTrackTypeCC608
Definition: decoderbase.h:32
@ kTrackTypeRawText
Definition: decoderbase.h:36
@ kTrackTypeSubtitle
Definition: decoderbase.h:31
@ kTrackTypeTextSubtitle
Definition: decoderbase.h:42
@ kTrackTypeCount
Definition: decoderbase.h:38
@ kTrackTypeTeletextMenu
Definition: decoderbase.h:35
@ kTrackTypeCC708
Definition: decoderbase.h:33
@ kTrackTypeTeletextCaptions
Definition: decoderbase.h:34
@ kTrackTypeAudio
Definition: decoderbase.h:29
@ kTrackTypeUnknown
Definition: decoderbase.h:28
@ kTrackTypeVideo
Definition: decoderbase.h:30
@ kTrackTypeAttachment
Definition: decoderbase.h:37
DecodeType
Definition: decoderbase.h:48
@ kDecodeNothing
Definition: decoderbase.h:49
@ kDecodeVideo
Definition: decoderbase.h:50
@ kDecodeAV
Definition: decoderbase.h:52
@ kDecodeAudio
Definition: decoderbase.h:51
QString toString(TrackType type)
unsigned int uint
Definition: freesurround.h:24
MythCodecID
Definition: mythcodecid.h:14
std::vector< VideoFrameType > VideoFrameTypes
Definition: mythframe.h:82
static float snap(float value, float snapto, float diff)
MarkTypes
Definition: programtypes.h:46
@ MARK_UNSET
Definition: programtypes.h:49
QMap< uint64_t, MarkTypes > frm_dir_map_t
Frame # -> Mark map.
Definition: programtypes.h:117
QMap< long long, long long > frm_pos_map_t
Frame # -> File offset map.
Definition: programtypes.h:44