00001 #ifndef SUBTITLEREADER_H 00002 #define SUBTITLEREADER_H 00003 00004 #include <QMutex> 00005 00006 extern "C" { 00007 #include "libavcodec/avcodec.h" 00008 } 00009 00010 #include "mythdeque.h" 00011 #include "textsubtitleparser.h" 00012 00013 class AVSubtitles 00014 { 00015 public: 00016 AVSubtitles() : fixPosition(false) { } 00017 MythDeque<AVSubtitle> buffers; 00018 QMutex lock; 00019 bool fixPosition; 00020 }; 00021 00022 class RawTextSubs 00023 { 00024 public: 00025 QStringList buffers; 00026 uint64_t duration; 00027 QMutex lock; 00028 }; 00029 00030 class SubtitleReader 00031 { 00032 public: 00033 SubtitleReader(); 00034 ~SubtitleReader(); 00035 00036 void EnableAVSubtitles(bool enable); 00037 void EnableTextSubtitles(bool enable); 00038 void EnableRawTextSubtitles(bool enable); 00039 00040 AVSubtitles* GetAVSubtitles(void) { return &m_AVSubtitles; } 00041 bool AddAVSubtitle(const AVSubtitle& subtitle, bool fix_position, 00042 bool allow_forced); 00043 void ClearAVSubtitles(void); 00044 void FreeAVSubtitle(const AVSubtitle &sub); 00045 00046 TextSubtitles* GetTextSubtitles(void) { return &m_TextSubtitles; } 00047 bool HasTextSubtitles(void); 00048 bool LoadExternalSubtitles(const QString &videoFile); 00049 00050 QStringList GetRawTextSubtitles(uint64_t &duration); 00051 void AddRawTextSubtitle(QStringList list, uint64_t duration); 00052 void ClearRawTextSubtitles(void); 00053 00054 private: 00055 AVSubtitles m_AVSubtitles; 00056 bool m_AVSubtitlesEnabled; 00057 TextSubtitles m_TextSubtitles; 00058 bool m_TextSubtitlesEnabled; 00059 RawTextSubs m_RawTextSubtitles; 00060 bool m_RawTextSubtitlesEnabled; 00061 }; 00062 00063 #endif // SUBTITLEREADER_H
1.6.3