MythTV master
subtitlereader.h
Go to the documentation of this file.
1#ifndef SUBTITLEREADER_H
2#define SUBTITLEREADER_H
3
4#include <QMutex>
5
6extern "C" {
7#include "libavcodec/avcodec.h"
8}
9
13#include "textsubtitleparser.h"
14
15#define DEBUG_SUBTITLES 1
16#ifdef DEBUG_SUBTITLES
17QString toString(const AVSubtitle& sub);
18#endif
19
21{
22 public:
23 AVSubtitles() = default;
25 QMutex m_lock;
26 bool m_fixPosition {false};
27 bool m_needSync {false};
28};
29
31{
32 public:
33 RawTextSubs(void) = default;
34
35 QStringList m_buffers;
36 std::chrono::milliseconds m_duration {0ms};
37 QMutex m_lock;
38};
39
40class SubtitleReader : public QObject
41{
42 Q_OBJECT
43
44 signals:
46
47 public:
49 ~SubtitleReader() override;
50
51 void EnableAVSubtitles(bool enable);
52 void EnableTextSubtitles(bool enable);
53 void EnableRawTextSubtitles(bool enable);
54
56 bool AddAVSubtitle(AVSubtitle& subtitle, bool fix_position,
57 bool is_selected_forced_track, bool allow_forced,
58 bool isExternal);
59 void ClearAVSubtitles(void);
60 static void FreeAVSubtitle(AVSubtitle &sub);
61
63 bool HasTextSubtitles(void);
64 void LoadExternalSubtitles(const QString &subtitleFileName, bool isInProgress);
65 int ReadNextSubtitle(void);
66 void SeekFrame(int64_t ts, int flags);
67
68 QStringList GetRawTextSubtitles(std::chrono::milliseconds &duration);
69 void AddRawTextSubtitle(const QStringList& list, std::chrono::milliseconds duration);
70 void ClearRawTextSubtitles(void);
71
72 private:
79
81};
82
83#endif // SUBTITLEREADER_H
MythDeque< AVSubtitle > m_buffers
AVSubtitles()=default
bool m_fixPosition
std::chrono::milliseconds m_duration
RawTextSubs(void)=default
QStringList m_buffers
AVSubtitles m_avSubtitles
void ClearRawTextSubtitles(void)
TextSubtitleParser * GetParser(void)
RawTextSubs m_rawTextSubtitles
static void FreeAVSubtitle(AVSubtitle &sub)
bool m_rawTextSubtitlesEnabled
~SubtitleReader() override
QStringList GetRawTextSubtitles(std::chrono::milliseconds &duration)
void EnableRawTextSubtitles(bool enable)
TextSubtitles m_textSubtitles
bool AddAVSubtitle(AVSubtitle &subtitle, bool fix_position, bool is_selected_forced_track, bool allow_forced, bool isExternal)
void TextSubtitlesUpdated()
bool m_textSubtitlesEnabled
void ClearAVSubtitles(void)
void AddRawTextSubtitle(const QStringList &list, std::chrono::milliseconds duration)
AVSubtitles * GetAVSubtitles(void)
TextSubtitleParser * m_externalParser
void LoadExternalSubtitles(const QString &subtitleFileName, bool isInProgress)
void EnableAVSubtitles(bool enable)
bool m_avSubtitlesEnabled
void EnableTextSubtitles(bool enable)
void SeekFrame(int64_t ts, int flags)
bool HasTextSubtitles(void)
int ReadNextSubtitle(void)
QString toString(const AVSubtitle &sub)