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